On Mon, Nov 16, 2020 at 10:00:04AM -0800, Jakub Kicinski wrote: > On Mon, 16 Nov 2020 09:37:34 -0800 Martin KaFai Lau wrote: > > On Sat, Nov 14, 2020 at 05:17:20PM -0800, Jakub Kicinski wrote: > > > On Thu, 12 Nov 2020 13:13:13 -0800 Martin KaFai Lau wrote: > > > > This patch adds bpf_sk_storage_get_tracing_proto and > > > > bpf_sk_storage_delete_tracing_proto. They will check > > > > in runtime that the helpers can only be called when serving > > > > softirq or running in a task context. That should enable > > > > most common tracing use cases on sk. > > > > > > > + if (!in_serving_softirq() && !in_task()) > > > > > > This is a curious combination of checks. Would you mind indulging me > > > with an explanation? > > The current lock usage in bpf_local_storage.c is only expected to > > run in either of these contexts. > > :) > > 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())