On Mon, Dec 28, 2020 at 3:51 PM Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > On Tue, Nov 24, 2020 at 12:47:25AM +0100, Andrey Konovalov wrote: > > Currently there's a kcov remote coverage collection section in > > __usb_hcd_giveback_urb(). Initially that section was added based on the > > assumption that usb_hcd_giveback_urb() can only be called in interrupt > > context as indicated by a comment before it. This is what happens when > > syzkaller is fuzzing the USB stack via the dummy_hcd driver. > > > > As it turns out, it's actually valid to call usb_hcd_giveback_urb() in task > > context, provided that the caller turned off the interrupts; USB/IP does > > exactly that. This can lead to a nested KCOV remote coverage collection > > sections both trying to collect coverage in task context. This isn't > > supported by kcov, and leads to a WARNING. > > > > Change __usb_hcd_giveback_urb() to only call kcov_remote_*() callbacks > > when it's being executed in a softirq. To avoid calling > > in_serving_softirq() directly in the driver code, add a couple of new kcov > > wrappers. > > > > As the result of this change, the coverage from USB/IP related > > usb_hcd_giveback_urb() calls won't be collected, but the WARNING is fixed. > > > > A potential future improvement would be to support nested remote coverage > > collection sections, but this patch doesn't address that. > > > > Signed-off-by: Andrey Konovalov <andreyknvl@xxxxxxxxxx> > > Acked-by: Marco Elver <elver@xxxxxxxxxx> > > --- > > > > Changes in v5: > > - Don't call in_serving_softirq() in USB driver code directly, do that > > via kcov wrappers. > > Does not apply to 5.11-rc1 :( Hm, I see version 4 in 5.11-rc1. Let me send a fix up.