Re: [PATCH v4 0/7] kcov: collect coverage from usb soft interrupts
From: Andrey Konovalov
Date: Thu Jun 04 2020 - 09:46:43 EST
On Thu, Mar 26, 2020 at 3:44 PM Andrey Konovalov <andreyknvl@xxxxxxxxxx> wrote:
>
> This patchset extends kcov to allow collecting coverage from soft
> interrupts and then uses the new functionality to collect coverage from
> USB code.
>
> Any subsystem that uses softirqs (e.g. timers) can make use of this in
> the future. Looking at the recent syzbot reports, an obvious candidate
> is the networking subsystem [1, 2, 3 and many more].
>
> [1] https://syzkaller.appspot.com/bug?extid=522ab502c69badc66ab7
> [2] https://syzkaller.appspot.com/bug?extid=57f89d05946c53dbbb31
> [3] https://syzkaller.appspot.com/bug?extid=df358e65d9c1b9d3f5f4
>
> This patchset has been pushed to the public Linux kernel Gerrit instance:
>
> https://linux-review.googlesource.com/c/linux/kernel/git/torvalds/linux/+/2225
>
> Changes v3 -> v4:
> - Turn current->kcov_softirq into unsigned int to fix objtool warning.
> - Fix commit author email address.
>
> Changes v2 -> v3:
> - New patch: "kcov: fix potential use-after-free in kcov_remote_start".
> - New patch: "kcov: move t->kcov assignments into kcov_start/stop".
> - New patch: "kcov: move t->kcov_sequence assignment".
> - New patch: "kcov: use t->kcov_mode as enabled indicator".
> - Dropped out-of-memory error message from kcov_init() as checkpatch
> complains.
> - Use a single local_irq_disable section when accessing per-task kcov
> variables in kcov_remote_start/stop().
>
> Changes v1 -> v2:
> - Add local_irq_save/restore() critical sections to simplify dealing with
> softirqs happening during kcov_remote_start/stop().
> - Set kcov_softirq after flag kcov_start() in kcov_remote_start().
>
> Changes RFC -> v1:
> - Don't support hardirq or nmi, only softirq, to avoid issues with nested
> interrupts.
> - Combined multiple per-cpu variables into one.
> - Used plain accesses and kcov_start/stop() instead of xchg()'s.
> - Simplified handling of per-cpu variables.
> - Avoid disabling interrupts for the whole kcov_remote_start/stop()
> region.
> - Avoid overwriting t->kcov_sequence when saving/restoring state.
> - Move kcov_remote_start/stop_usb() annotations into
> __usb_hcd_giveback_urb() to cover all urb complete() callbacks at once.
> - Drop unneeded Dummy HCD changes.
> - Split out a patch that removed debug messages.
>
> Signed-off-by: Andrey Konovalov <andreyknvl@xxxxxxxxxx>
>
> Andrey Konovalov (7):
> kcov: cleanup debug messages
> kcov: fix potential use-after-free in kcov_remote_start
> kcov: move t->kcov assignments into kcov_start/stop
> kcov: move t->kcov_sequence assignment
> kcov: use t->kcov_mode as enabled indicator
> kcov: collect coverage from interrupts
> usb: core: kcov: collect coverage from usb complete callback
>
> Documentation/dev-tools/kcov.rst | 17 +-
> drivers/usb/core/hcd.c | 3 +
> include/linux/sched.h | 3 +
> kernel/kcov.c | 266 ++++++++++++++++++++++---------
> lib/Kconfig.debug | 9 ++
> 5 files changed, 213 insertions(+), 85 deletions(-)
>
> --
> 2.26.0.rc2.310.g2932bb562d-goog
>
Hi Andrew,
This series is ready to be sent upstream.
Thanks for bearing with us!