On Mon, Nov 16, 2020 at 10:43:40AM -0800, Jakub Kicinski wrote: > On Mon, 16 Nov 2020 10:37:49 -0800 Martin KaFai Lau wrote: > > On Mon, Nov 16, 2020 at 10:00:04AM -0800, Jakub Kicinski wrote: > > > Locks that can run in any context but preempt disabled or softirq > > > disabled? > > Not exactly. e.g. running from irq won't work. > > > > > Let me cut to the chase. Are you sure you didn't mean to check > > > if (irq_count()) ? > > so, no. > > > > From preempt.h: > > > > /* > > * ... > > * in_interrupt() - We're in NMI,IRQ,SoftIRQ context or have BH disabled > > * ... > > */ > > #define in_interrupt() (irq_count()) > > Right, as I said in my correction (in_irq() || in_nmi()). > > Just to spell it out AFAIU in_serving_softirq() will return true when > softirq is active and interrupted by a hard irq or an NMI. I see what you have been getting at now. Good point. will post a fix.