diff options
author | Andrey Konovalov <[email protected]> | 2024-05-27 19:35:38 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <[email protected]> | 2024-06-04 15:34:44 +0200 |
commit | f85d39dd7ed89ffdd622bc1de247ffba8d961504 (patch) | |
tree | 13964fb94a4c336f6ae0cbd24fcadfc16b798a85 /lib/test_fortify/write_overflow-memcpy.c | |
parent | e4228cfd092351c2d9b1a3048b2070287291ccbb (diff) |
kcov, usb: disable interrupts in kcov_remote_start_usb_softirq
After commit 8fea0c8fda30 ("usb: core: hcd: Convert from tasklet to BH
workqueue"), usb_giveback_urb_bh() runs in the BH workqueue with
interrupts enabled.
Thus, the remote coverage collection section in usb_giveback_urb_bh()->
__usb_hcd_giveback_urb() might be interrupted, and the interrupt handler
might invoke __usb_hcd_giveback_urb() again.
This breaks KCOV, as it does not support nested remote coverage collection
sections within the same context (neither in task nor in softirq).
Update kcov_remote_start/stop_usb_softirq() to disable interrupts for the
duration of the coverage collection section to avoid nested sections in
the softirq context (in addition to such in the task context, which are
already handled).
Reported-by: Tetsuo Handa <[email protected]>
Closes: https://lore.kernel.org/linux-usb/[email protected]/
Closes: https://syzkaller.appspot.com/bug?extid=0438378d6f157baae1a2
Suggested-by: Alan Stern <[email protected]>
Fixes: 8fea0c8fda30 ("usb: core: hcd: Convert from tasklet to BH workqueue")
Cc: [email protected]
Acked-by: Dmitry Vyukov <[email protected]>
Signed-off-by: Andrey Konovalov <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'lib/test_fortify/write_overflow-memcpy.c')
0 files changed, 0 insertions, 0 deletions