linux/Documentation/dev-tools
Jann Horn 1d9c949369 kcov: allow simultaneous KCOV_ENABLE/KCOV_REMOTE_ENABLE
Allow the same userspace thread to simultaneously collect normal coverage
in syscall context (KCOV_ENABLE) and remote coverage of asynchronous work
created by the thread (KCOV_REMOTE_ENABLE).  With this, remote KCOV
coverage becomes useful for generic fuzzing and not just fuzzing of
specific data injection interfaces.

This requires that the task_struct::kcov_* fields are separated into ones
that are used by the task that generates coverage, and ones that are used
by the task that requested remote coverage.  To split this up:

 - Split task_struct::kcov into kcov and kcov_remote. kcov_task_exit() now
   has to clean up both separately.
 - Only use task_struct::kcov_mode on the task that generates coverage.
 - Only reset task_struct::kcov_handle on the task that requested remote
   coverage.

After this change, fields used by the task that generates coverage are:

 - kcov_mode
 - kcov_size
 - kcov_area
 - kcov
 - kcov_sequence
 - kcov_softirq

Fields used by the task that requested remote coverage are:

 - kcov_remote
 - kcov_handle

[jannh@google.com: remove unused constant KCOV_MODE_REMOTE, per Dmitry]
  Link: https://lore.kernel.org/20260515-kcov-simultaneous-remote-v2-1-56fde1cfa509@google.com
[jannh@google.com: update documentation on remote coverage collection]
  Link: https://lore.kernel.org/20260519-kcov-docs-v1-1-5bb22f4cb20c@google.com
[jannh@google.com: move and reword sentence on simultaneous normal/remote collection
  Link: https://lore.kernel.org/20260520-kcov-docs-v2-1-819f78778763@google.com
Link: https://lore.kernel.org/20260505-kcov-simultaneous-remote-v1-1-a670ba7cefd2@google.com
Signed-off-by: Jann Horn <jannh@google.com>
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Marco Elver <elver@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
History 2026-05-28 21:24:51 -07:00
..
kunit kunit: Add documentation of --list_suites 2026-03-09 10:46:02 -06:00
lkmm docs: dev-tools/lkmm: Fix typo of missing file extension 2025-09-21 16:22:09 -06:00
autofdo.rst Documentation: dev-tools: Fix a typo in autofdo documentation 2025-09-03 15:44:14 -06:00
checkpatch.rst checkpatch: add option to not force /* */ for SPDX 2026-05-28 21:24:39 -07:00
checkuapi.rst docs: dev-tools: Add UAPI checker documentation 2023-12-29 22:25:21 +09:00
clang-format.rst docs: fix typo in clang-format documentation 2025-12-22 15:18:57 -07:00
coccinelle.rst coccinelle: update Coccinelle URL 2026-03-22 14:52:38 -06:00
container.rst Documentation: dev-tools: add container.rst page 2026-01-22 15:33:27 -07:00
context-analysis.rst compiler-context-analysis: Introduce scoped init guards 2026-01-28 20:45:24 +01:00
gcov.rst docs: gcov: fix link to LCOV website 2024-10-07 11:50:54 -06:00
gpio-sloppy-logic-analyzer.rst gpio: add sloppy logic analyzer using polling 2024-07-01 10:54:11 +02:00
index.rst Kbuild/Kconfig updates for 7.0 2026-02-11 13:40:35 -08:00
kasan.rst kasan: docs: SLUB is the only remaining slab implementation 2026-04-05 13:53:12 -07:00
kcov.rst kcov: allow simultaneous KCOV_ENABLE/KCOV_REMOTE_ENABLE 2026-05-28 21:24:51 -07:00
kcsan.rst Documentation: kcsan: fix "Plain Accesses and Data Races" URL in kcsan.rst 2025-03-12 16:34:55 -06:00
kfence.rst kfence: add kfence.fault parameter 2026-04-05 13:53:06 -07:00
kmemleak.rst kmemleak: iommu/iova: fix transient kmemleak false positive 2024-11-11 17:22:26 -08:00
kmsan.rst docs/dev-tools: fix a typo 2024-10-17 09:39:19 -06:00
kselftest.rst printf: convert self-test to KUnit 2025-03-13 10:26:33 -07:00
ktap.rst Documentation: ktap: Separate first bullet list items 2025-08-18 10:28:44 -06:00
propeller.rst kbuild: Add Propeller configuration for kernel build 2024-11-27 09:38:27 +09:00
sparse.rst compiler-context-analysis: Remove Sparse support 2026-01-05 16:43:33 +01:00
testing-devices.rst docs: dev-tools: Add documentation for the device focused kselftests 2024-10-14 16:15:13 -06:00
testing-overview.rst Documentation: dev-tools: Add link to RV docs 2024-03-29 08:27:21 -06:00
ubsan.rst ubsan: Remove CONFIG_UBSAN_SANITIZE_ALL 2024-02-06 02:21:38 -08:00