Messages in this thread | | | From | Andy Lutomirski <> | Subject | Re: [patch V4 part 4 02/24] x86/int3: Avoid atomic instrumentation | Date | Thu, 14 May 2020 07:55:02 -0700 |
| |
> On May 14, 2020, at 6:15 AM, Peter Zijlstra <peterz@infradead.org> wrote: > > On Thu, May 14, 2020 at 02:51:32PM +0200, Thomas Gleixner wrote: >> Peter Zijlstra <peterz@infradead.org> writes: >>> On Wed, May 13, 2020 at 09:57:52PM -0700, Andy Lutomirski wrote: >>>>> On Tue, May 5, 2020 at 7:15 AM Thomas Gleixner <tglx@linutronix.de> wrote: >>>>>> >>>>>> From: Peter Zijlstra <peterz@infradead.org> >>>>>> >>>>>> Use arch_atomic_*() and READ_ONCE_NOCHECK() to ensure nothing untoward >>>>>> creeps in and ruins things. >>>>>> >>>>>> That is; this is the INT3 text poke handler, strictly limit the code >>>>>> that runs in it, lest it inadvertenly hits yet another INT3. >>>>> >>>>> >>>>> Acked-by: Andy Lutomirski <luto@kernel.org> >>>>> >>>>> Does objtool catch this error? >>> >>> It does not. I'll put it on the (endless) todo list.. >> >> Well, at least it detects when that code calls out into something which >> is not in the non-instrumentable section. > > True, but the more specific problem is that noinstr code can use > jump_label/static_call just fine. > > So a more specific test is validating none of that happens in the INT3 > handler before poke_int3_handler(). Which is what I think Andy was > after.
Exactly. I admit that sleep-deprived Andy was actually thinking “tglx and/or PeterZ found this by inspection, and somewhere it escaped objtool’s notice,” which is sort of the same thing :)
| |