Messages in this thread | | | Date | Mon, 6 May 2019 11:39:23 -0400 | From | Steven Rostedt <> | Subject | Re: [RFC PATCH v6 1/6] x86/uaccess: Allow access_ok() in irq context if pagefault_disabled |
| |
On Tue, 7 May 2019 00:22:03 +0900 Masami Hiramatsu <mhiramat@kernel.org> wrote:
> Hi Steve, > > It seems I missed this message...
No problem. The number of times I missed messages... ugh.
> > > > > I'm curious, what interrupt handler are kprobes executing in that needs > > random user space addresses? > > Sorry for confusion. Kprobes is using an exception (of course!). So the > title can mislead, it should be "in exception" instead of "in irq context", > However, current code checks it by "!in_task()", which includes both of > IRQ and exception. A better solution might change it to "in_irq()".
That makes sense.
> > However, I could not find a way to distinguish the "exception" and > "external IRQ" by the execution context (based on the preempt count) > because exception is treated as a kind of IRQ. > Thus, in this patch, I changed it as not only checking what the context > is, but also whether it is appropriately called. >
As exceptions typically disable interrupts, we treat them as their own context. Especially for looking at recursion detection algorithms, which allow for different contexts to recurse.
Normal-context -> softirq -> exception / IRQ -> NMI
Anyway, that WARN_ON_IN_IRQ() should come with a big comment about why we allow it if we have pagefault_disable() set.
This will need to go through the x86 maintainers. I'll go and review the tracing patches of this series and give an ack / reviewed-by if there's no issues.
-- Steve
| |