[PATCH RFC 0/2] kcov: collect coverage from usbhid interrupts

From: Andrey Konovalov
Date: Thu Dec 12 2019 - 12:15:49 EST


This patchset extends kcov to allow collecting coverage from interrupts
and then uses the new functionality to collect coverage from usbhid code.

What I'm not sure yet about this change is if we actually want to
selectively annotate some parts of the USB stack that are executed in
interrupt context, or maybe we can do this with some common approach.

For example patch #2 in this patchset annotates all functions that are
passed as completion callbacks to usb_fill_*() in drivers/hid/usbhid.
Maybe instead we could redefine usb_fill_*() in a way that would handle
all such cases without manual annotations.

Any suggestions are welcome.

This has allowed to find at least one new HID bug [1], which was recently
fixed by Alan [2].

[1] https://syzkaller.appspot.com/bug?extid=09ef48aa58261464b621
[2] https://patchwork.kernel.org/patch/11283319/

This patchset has been pushed to the public Linux kernel Gerrit instance:

https://linux-review.googlesource.com/c/linux/kernel/git/torvalds/linux/+/2225

Signed-off-by: Andrey Konovalov <andreyknvl@xxxxxxxxxx>

Andrey Konovalov (2):
kcov: collect coverage from interrupts
HID: usbhid: kcov: add annotations for coverage collection

Documentation/dev-tools/kcov.rst | 16 +--
drivers/hid/usbhid/hid-core.c | 25 +++-
drivers/hid/usbhid/usbkbd.c | 15 ++-
drivers/hid/usbhid/usbmouse.c | 7 +-
drivers/usb/gadget/udc/dummy_hcd.c | 1 +
include/linux/sched.h | 3 +
kernel/kcov.c | 196 +++++++++++++++++++----------
lib/Kconfig.debug | 9 ++
8 files changed, 192 insertions(+), 80 deletions(-)

--
2.24.1.735.g03f4e72817-goog