On Tue, 7 May 2019 00:22:03 +0900 Masami Hiramatsu <mhira...@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