Messages in this thread | | | From | Linus Torvalds <> | Date | Mon, 18 Jul 2022 16:52:09 -0700 | Subject | Re: [patch 00/38] x86/retbleed: Call depth tracking mitigation |
| |
On Mon, Jul 18, 2022 at 4:42 PM Linus Torvalds <torvalds@linux-foundation.org> wrote: > > You have the "real" marker before the function. > > But you also have the "false" marker that is part of the hash check > that is *inside* the function. > > The "real marker + 6" points to the function head itself, and so is ok > as a target (normal operation).
Of course, one fix for that is to make the hash be only 24 bits, and make the int3 byte part of the value you check, and not have the same pattern in the checking code at all.
Honestly, I think that would be a better model - yes, you lose 8 bits of hash, but considering that apparently the current KCFI code *guarantees* that the hash pattern will exist even outside the actual target pattern, I think it's still a better model.
I also happen to believe that the kCFI code should have entirely different targets for direct jumps and for indirect jumps, but that's a separate issue. Maybe it already does that?
Linus
| |