From nobody Fri Sep 25 10:37:46 2026 Received: from mail-wm2-f12.google.com (mail-wm2-f12.google.com [74.125.225.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 83E60370D54 for ; Mon, 14 Sep 2026 05:47:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.225.140 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789364880; cv=none; b=SKqCrOJRWDXvcESDizHyhI1iwUfmAyVB8FTQtmVX35DXpnke2sQExOYeCusMTWiZBsmtBmL3MAaztcBxhwCs7YmgECg/1CKBeSauNjZ1lnTKESDaYgKyBtrcLUO4Ss3pBNEjPuSFg+1wqijQ/W3f6u5uC4NQ9sw+GlqgdzltKWw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789364880; c=relaxed/simple; bh=kaH16PG0n5qXMp1A+1ketXJJnLdvjaHIZnQlZIlJjfE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GeE/UM6voyji5jVIYEXfS6tiUmL6DC3oOy7cPOHIO7AHKJ3i3TMixV6DeUGPSH5WW7HOCM5Ov7s99qrm4cJEh/NEXMlxXRSQauTxHtBjqkEubgrwWNZO3Q5vjBrIkUVvZa+SucEudDefJ+HwvRMRoY75v416dB0gauSBrrJxth4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=k/CX2daM; arc=none smtp.client-ip=74.125.225.140 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="k/CX2daM" Received: by mail-wm2-f12.google.com with SMTP id 5b1f17b1804b1-49b912e2406so6013445e9.1 for ; Sun, 13 Sep 2026 22:47:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789364878; x=1789969678; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=jrdUODYcC4o3InxGyBh8xP7Mso3oU5634kbBFJDiJnI=; b=k/CX2daM236x33hkCFbWj9dUhAq10n3knE4nYpCW5Q8R4qqb5j5jm/WInjSxWrZyeH oBmlwuAnYh3pXs75KqAD3FwUrwONuQtxaMjZ5Rp1QBoK1Lqnwgamnle4eW0qCgpDPk64 zqaLaxfAedqvIZxCx4IhA69URxGEjQURwtNpU+5uF6ZSom2PU8JOdZ7PHNPFo5YKb8el kz4YgXZsOvKITCISrN8DQY1MjSe7Oo4znnCQj9BsE7uCKRbvDsYUMz3YGwYuotM36qHK 8ZJ5Fv36FzhDqyWWqAfhJL6+oFUvP9y6TbTZeuyhAht7MMwPNtA3cqsVZy19WqJychKE nx5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789364878; x=1789969678; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=jrdUODYcC4o3InxGyBh8xP7Mso3oU5634kbBFJDiJnI=; b=YClnJTlqwCmrbsBGbutMyViUXd1lcP8JKDy/O4uVyWAa2K2pafAIljc7/MJSogSztc 24NfaHE5Y+2EiztzKe91TZCG2BRF3Ccav4Xu+32Gio64BnDWtKivPAUb+XZxNxSZX+hr 9pw+Z97iAO4f7fWeE3hsKqzeyV88B16if3SzQtFkN2HSzuSZmywgOc+dqwYu9UHSKK4r 2fsszH20ujCL4ouWEqoaawmlCscEpZsre7m548FoKZhYzI4qSuUhzp0JjYDRbBkI88Wb 9qslHH0Zv5eXbDfoufUhS2Q59q/wbO5T5JuvNYRRNXfTJxtppdadEgDrptKyEnzHSQj/ tyIw== X-Forwarded-Encrypted: i=1; AKwUvBwAHUqc5bhPehwZDX/tBzQtD7uj2WZkHebfNoybjRTq6Yia7rV3pcWmJZU5eKpMBy8IzcriC0Yxe7PobOs=@vger.kernel.org X-Gm-Message-State: AFuF++nkF5oHQH+VaRFxO2w5aAdXZaP3SZntbZlwk5JqaJXKOoP6xpKs SQ4ZJfSmYAaAa7JlQDeme+ad4PnQxoemlKm2LOFtn6420x5tzgiiQ+kM X-Gm-Gg: AYBFou3hQKviovE+rRwKN72mA+oAbodQai4FQ9I65tq+osGb2+dihcP6tZZAOSNdfA7 0uWOSN8capGWAZ9n7fvvoOs4Nht8hvkiXns9QB2DxJJeZ3+4g4AyJIuWKX+sB0ZgbZiiG+6Aab3 Acxyw/pDcPX3wjp9y1uIfBI1gU/PWcsTG3FPsYoWw/yzGDdF7tTiZiliqAwiz+CKUVwsNfi1k3G tV3psfU9tHwAXkANeMnz60Id2QMa9CIYrTpCRpNH5N1sHCfa0fluBzaWZrY3T8XxznFAHfzCHAX tGVBWVeS0VmxAhU+Jterpi/ZYqHwkBA3/EfChYv6oNPG5r1lr9mRBppeVUHtdC1DWN4dybaKuu9 Zikneda2YXk/izMu0VnVX5cTm3qbytaxbyWi7CpF4J5IuxvlCUvLl9xZF8J86CvPH8yBlr2qsyq M931z1Ri8kj1pVYuW04HJPCI4OT+gDyhUsmWK7Ud4MnaBwyfgP1IJ3ch+rKWNYDCjP9ih9YEYI0 EDfdFdAXgjsYSYHNZP2Ht/mV1njjgQ+y17amK0HzK+lM8xv42vkK/dJIKkxb3Mqiy8brxEleyZw HhGuPpqxep/6cFKBpXZcrCFNkxFAj8E= X-Received: by 2002:a05:600c:1910:b0:49c:e37e:4389 with SMTP id 5b1f17b1804b1-49e7a6573e4mr10643915e9.4.1789364877387; Sun, 13 Sep 2026 22:47:57 -0700 (PDT) Received: from localhost.localdomain (dynamic-077-007-122-014.77.7.pool.telefonica.de. [77.7.122.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49e6a06cfb8sm214537735e9.5.2026.09.13.22.47.55 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 13 Sep 2026 22:47:56 -0700 (PDT) From: Karl Mehltretter To: Andrew Morton Cc: Karl Mehltretter , Andrey Konovalov , Alexander Potapenko , Dmitry Vyukov , Marco Elver , Bradley Morgan , Anna-Maria Behnsen , Frederic Weisbecker , Thomas Gleixner , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Sebastian Andrzej Siewior , Clark Williams , linux-rt-devel@lists.linux.dev, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org Subject: [PATCH v3 1/6] kcov: Use unsigned int for kcov_start() mode parameter Date: Mon, 14 Sep 2026 07:46:27 +0200 Message-Id: <20260914054632.12877-2-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260914054632.12877-1-kmehltretter@gmail.com> References: <20260914054632.12877-1-kmehltretter@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" task_struct::kcov_mode usually holds an enum kcov_mode value, but it can also carry flag bits such as KCOV_IN_CTXSW, so the field is unsigned int. kcov_remote_softirq_stop() passes the saved raw value through kcov_start()'s enum kcov_mode parameter before kcov_start() stores it back into the unsigned int field. The parameter type therefore does not match the values it receives. Type the parameter unsigned int, like the field and the saved copy. No functional change. Assisted-by: LLM Signed-off-by: Karl Mehltretter Reviewed-by: Alexander Potapenko --- kernel/kcov.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/kcov.c b/kernel/kcov.c index 35420f0ac524..79dabbad5a38 100644 --- a/kernel/kcov.c +++ b/kernel/kcov.c @@ -350,7 +350,7 @@ EXPORT_SYMBOL(__sanitizer_cov_trace_switch); #endif /* ifdef CONFIG_KCOV_ENABLE_COMPARISONS */ =20 static void kcov_start(struct task_struct *t, struct kcov *kcov, - unsigned int size, void *area, enum kcov_mode mode, + unsigned int size, void *area, unsigned int mode, int sequence) { kcov_debug("t =3D %px, size =3D %u, area =3D %px\n", t, size, area); --=20 2.53.0 From nobody Fri Sep 25 10:37:46 2026 Received: from mail-wm2-f12.google.com (mail-wm2-f12.google.com [74.125.225.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0FE8537C93F for ; Mon, 14 Sep 2026 05:48:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.225.140 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789364882; cv=none; b=HWc3C4hr2Nf8UEhYNRRjba+qN8SHixFa1zwUvX7Uj5/vfAb1V/CeS0Tpz10LihBAXWZQHPzMU/2W6svpVOrL9DGqtKzWEvbfB9OagRplOOBFDr3afn16JS/JeOI6lGWA3du7IEDvwEQyy27Uw94nQh5jxmnvuaxFDYLCO9oh0i4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789364882; c=relaxed/simple; bh=VhuMZhQSgNUoK23zJ2zuGMxgfoJ6eICwbGGFCSMgtLk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lNpNCyuNXkqF0ziEHoYatfeItiayHtke1Mqe7eNQei0sbl3hyGCr9D6Yov2nW5KJNh29wErguuZvcm9xyqKrN+0UCFPlJMFzTWL82qhUfDcAP6tb3PVVn7w0Jdkp3vJtLuA/FmTYGj2E+jdHrlLRsI8o7hi+v9ehPuIbjag+7+A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=RDiaANrq; arc=none smtp.client-ip=74.125.225.140 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RDiaANrq" Received: by mail-wm2-f12.google.com with SMTP id 5b1f17b1804b1-49ce364488dso4535275e9.0 for ; Sun, 13 Sep 2026 22:48:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789364879; x=1789969679; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=8DwGhYZenzciYHL+gywc0ajJIiQoquXAsP6MMMAsMaU=; b=RDiaANrqbHEKKukEDx+yCiL2qUEbwS3x8DwNwne3Mc1+U7iSwms+qMj+T9aMlG4DAG WQpqC78UTdXvccyxgboQFwGx4RZU8wb4m3o/yvcuMdZY91PoT3ZzHOeBgSkxeQsiSgHd gX+rxAK9lLTO6Eh6DIU+irWDLTFv6bKdKorc06ssr55Mn/QkoGGzvQm28SDnxYavIKNm l16XpaNaltnSo0ZgpuAr20D65b3T9gKiNtC48njj+d+GhWE5CodXP7v15ilPox4pxceb C+rsalwDBP5KlIWQrfLUueDWQHpAElMphhXXk78jqYwRxAVIEyuhzFNNfUsfX+yyMcHA XBvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789364879; x=1789969679; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=8DwGhYZenzciYHL+gywc0ajJIiQoquXAsP6MMMAsMaU=; b=bHZU0pYwrEbRGNrNCGtlN311f8ziH3ubARPqywbEwvGaVG0VkQy4N4J+v212FUH7w9 91iX+QXHyHTwPyMCnq6By3VvBluAk4PUBlv304z1rCxL1J5DC50lGPwU02UXyH4ZuTuJ 7mEFQEQjXHq5BR2m8Iq9b7sdNrXpOXOxia+YeCqnsbkwrweHATYn/jayaDGYnQQOF5Ed EDwovqkLefZqDgG+28aP8xkuTD/0k+/ySiTZ+2wZ7iNYmrGVVdRknB7MQZBOSFI/LF1I gQ2dfPYsCz+Upy+X0eqaNJOYr3Y7vOaqagp31tlavnPxW4pIqZwcLXvzKEEVxxKwhzOv goOg== X-Forwarded-Encrypted: i=1; AKwUvBxayJAZgP0ERKm7jQ9B/yZ/ha+5EZqpxUamA5XgZTW5Sdpm/yzO7t7kAA3CG0tmqokaBns8QV6PaL86AP4=@vger.kernel.org X-Gm-Message-State: AFuF++lTlOKomj7Skm4Tse6M0rxrn5mYo7j2iZ5P7409y2XdjJKfq0hS ekoeezN0+9IB3se725x/xMYVj31ep5HDV6/J9PGiBQp1Zbab3m3eVgs9 X-Gm-Gg: AYBFou3D4ZXZoEn5LEwID+drJXM5kwXP+WKEu0l141V81DETw/3aJ/6Zr/kkxZ4gghy jq/1rsloaIjGv8hXY5R8DqAzA1CpZNerJBP+pMXkQwaKV+dF+XfassQlcxnZGLgIBNxjfcznS1m fARLeU+/8YS4+toXJyBboEqbNaY7+vBe7ixCcwlqGgfr+OWC51ro9bg1rnpvvi9dLsim6twmoqr K/VyFymkmIfSNSiCVCUhAs8uvhX0gwz8YcIgK/RU0eBJAalzE8L4JV3Kp0dXvf3dybmbiEK6mws Mbegvm7OfEz80NQ35XRBL1j8CWVuUNwKwBQsJViW+sjmJbYHU5wiWgS5sT3VF2X2VSg4jOyWZsk x9t7jfutXaleCP+sbK7al6eYVdQjEG42nPi6mPAoSzVTfIDjELSm2TolDpRAHd0O9fpuUOY3AhZ VbVs4xqHmjH4/JXN0UJakXNqfVeXRGAjMp7gXa8CMY0O1/Cz96+AhSiaoO3a+PLf9qLGiLpuzza dYUpOptNFqZ0LEmu78UcWMRgebPyPTHhWQZtVtb0uRAOZDwITnTo6aPX8W9fSuZEQyfw716N/1Q AiKUU/UJITq3kuXdjqYglpUd5lTYghk= X-Received: by 2002:a05:600c:6989:b0:49e:6581:7baf with SMTP id 5b1f17b1804b1-49e7a64ccc4mr8629955e9.2.1789364878978; Sun, 13 Sep 2026 22:47:58 -0700 (PDT) Received: from localhost.localdomain (dynamic-077-007-122-014.77.7.pool.telefonica.de. [77.7.122.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49e6a06cfb8sm214537735e9.5.2026.09.13.22.47.57 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 13 Sep 2026 22:47:58 -0700 (PDT) From: Karl Mehltretter To: Andrew Morton Cc: Karl Mehltretter , Andrey Konovalov , Alexander Potapenko , Dmitry Vyukov , Marco Elver , Bradley Morgan , Anna-Maria Behnsen , Frederic Weisbecker , Thomas Gleixner , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Sebastian Andrzej Siewior , Clark Williams , linux-rt-devel@lists.linux.dev, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org Subject: [PATCH v3 2/6] kcov: Add a kcov_pause guard Date: Mon, 14 Sep 2026 07:46:28 +0200 Message-Id: <20260914054632.12877-3-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260914054632.12877-1-kmehltretter@gmail.com> References: <20260914054632.12877-1-kmehltretter@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Interrupt-return work can run after HARDIRQ_OFFSET is dropped, when in_task() is true. KCOV then attributes instrumented callees to the interrupted task. Add a KCOV_PAUSED bit next to KCOV_IN_CTXSW and mask both in kcov_mode_enabled(). The coverage callbacks need no new check because check_kcov_mode()'s exact comparison rejects modes with KCOV_PAUSED set. The context switch suppression keeps its own bit: kcov_prepare_switch() runs on the previous task and kcov_finish_switch() on the one switched in, so its lifetime is not a pause section. The shared setter no longer sets KCOV_IN_CTXSW on a disabled task, since its mode already fails the coverage callbacks' exact comparison. Provide a kcov_pause guard backed by flag helpers shared with context switch suppression. The helpers access kcov_mode with READ_ONCE() and WRITE_ONCE() and use compiler barriers to keep instrumented calls inside the suppressed region. The guard saves the previous pause state and restores it at scope exit, so sections nest. When KCOV is enabled for current, remote softirq sections save and restore the complete mode, preserving the pause state. With CONFIG_KCOV=3Dy, restoring a previously clear flag still writes kcov_mode even when task coverage is disabled; nested guards also take that path in this case. The helpers are __always_inline. Guard users must be built without KCOV instrumentation because inlining does not remove the caller's own coverage callbacks. Assisted-by: LLM Suggested-by: Alexander Potapenko Signed-off-by: Karl Mehltretter --- include/linux/kcov.h | 80 +++++++++++++++++++++++++++++++++++++++----- kernel/kcov.c | 5 --- 2 files changed, 71 insertions(+), 14 deletions(-) diff --git a/include/linux/kcov.h b/include/linux/kcov.h index 895b761b2db1..41833b434c40 100644 --- a/include/linux/kcov.h +++ b/include/linux/kcov.h @@ -2,6 +2,8 @@ #ifndef _LINUX_KCOV_H #define _LINUX_KCOV_H =20 +#include +#include #include #include =20 @@ -23,20 +25,64 @@ enum kcov_mode { KCOV_MODE_TRACE_CMP =3D 3, }; =20 -#define KCOV_IN_CTXSW (1 << 30) +#define KCOV_IN_CTXSW BIT(30) +#define KCOV_PAUSED BIT(29) + +static __always_inline bool kcov_mode_enabled(unsigned int mode) +{ + return (mode & ~(KCOV_IN_CTXSW | KCOV_PAUSED)) !=3D KCOV_MODE_DISABLED; +} =20 void kcov_task_init(struct task_struct *t); void kcov_task_exit(struct task_struct *t); =20 -#define kcov_prepare_switch(t) \ -do { \ - (t)->kcov_mode |=3D KCOV_IN_CTXSW; \ -} while (0) +static __always_inline unsigned int +__kcov_set_flag(struct task_struct *t, unsigned int flag) +{ + unsigned int mode =3D READ_ONCE(t->kcov_mode); + unsigned int prev_flag =3D mode & flag; + + if (!prev_flag && kcov_mode_enabled(mode)) { + WRITE_ONCE(t->kcov_mode, mode | flag); + barrier(); + } + return prev_flag; +} =20 -#define kcov_finish_switch(t) \ -do { \ - (t)->kcov_mode &=3D ~KCOV_IN_CTXSW; \ -} while (0) +static __always_inline void +__kcov_restore_flag(struct task_struct *t, unsigned int flag, + unsigned int prev_flag) +{ + if (!prev_flag) { + barrier(); + WRITE_ONCE(t->kcov_mode, READ_ONCE(t->kcov_mode) & ~flag); + } +} + +static __always_inline void kcov_prepare_switch(struct task_struct *t) +{ + __kcov_set_flag(t, KCOV_IN_CTXSW); +} + +static __always_inline void kcov_finish_switch(struct task_struct *t) +{ + __kcov_restore_flag(t, KCOV_IN_CTXSW, 0); +} + +/* + * Pause coverage for current. Callers must be built without KCOV + * instrumentation. + * Pass the returned state to __kcov_resume(). + */ +static __always_inline unsigned int __kcov_pause(void) +{ + return __kcov_set_flag(current, KCOV_PAUSED); +} + +static __always_inline void __kcov_resume(unsigned int paused) +{ + __kcov_restore_flag(current, KCOV_PAUSED, paused); +} =20 /* See Documentation/dev-tools/kcov.rst for usage details. */ void kcov_remote_start(u64 handle); @@ -93,6 +139,8 @@ void __sanitizer_cov_trace_switch(kcov_u64 val, void *ca= ses); =20 static inline void kcov_task_init(struct task_struct *t) {} static inline void kcov_task_exit(struct task_struct *t) {} +static inline unsigned int __kcov_pause(void) { return 0; } +static inline void __kcov_resume(unsigned int paused) {} static inline void kcov_prepare_switch(struct task_struct *t) {} static inline void kcov_finish_switch(struct task_struct *t) {} static inline void kcov_remote_start(u64 handle) {} @@ -107,4 +155,18 @@ static inline void kcov_remote_start_usb_softirq(u64 i= d) {} static inline void kcov_remote_stop_softirq(void) {} =20 #endif /* CONFIG_KCOV */ + +/* + * Scope-based KCOV pause: + * + * guard(kcov_pause)(); + * + * pauses coverage for current until the end of the scope. Callers must be + * built without KCOV instrumentation. + */ +DEFINE_LOCK_GUARD_0(kcov_pause, + _T->paused =3D __kcov_pause(), + __kcov_resume(_T->paused), + unsigned int paused) + #endif /* _LINUX_KCOV_H */ diff --git a/kernel/kcov.c b/kernel/kcov.c index 79dabbad5a38..faccbd3bd2b8 100644 --- a/kernel/kcov.c +++ b/kernel/kcov.c @@ -830,11 +830,6 @@ static const struct file_operations kcov_fops =3D { * collecting coverage and copies all collected coverage into the kcov are= a. */ =20 -static inline bool kcov_mode_enabled(unsigned int mode) -{ - return (mode & ~KCOV_IN_CTXSW) !=3D KCOV_MODE_DISABLED; -} - static void kcov_remote_softirq_start(struct task_struct *t) __must_hold(&kcov_percpu_data.lock) { --=20 2.53.0 From nobody Fri Sep 25 10:37:46 2026 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8264037CD2F for ; Mon, 14 Sep 2026 05:48:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789364886; cv=none; b=Wzo6JryOsd16dmtjfqp4GG39UpfIYa4myMJ7wMILtWrU0j6k9MG4UwPr9EnRBEuyHuD5u2OtLj0dZPoBU5B+h5egSJaPo/IMY1SgKNsy1eCJ7RXPKoOdWRhOwpfWpYWJLLDovW9Cdq9zeOnokfGvcDdt002GSdJsKoyv1P07Jso= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789364886; c=relaxed/simple; bh=bmZDrzPv7j28nzorU00vwOfoyhr0L6EkTjbbMFjV388=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MticbTrE5RyWj65lInCKbYjS7O9CbZjDPTS7Z0kIj14xoFFnWX06NtqSuabHOvKB3imRQbyhxeet3yoN0qzIFsRUS2Jkh4mGz/EFHAoEhPiXh61oolIZNaV3K75e6FJfTFDMi0LNgioiiZEhCM8K8OXYF7guaXHIdIlH/kn8Hss= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=qV2fPNBY; arc=none smtp.client-ip=209.85.221.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="qV2fPNBY" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-482dd6ee390so2274409f8f.3 for ; Sun, 13 Sep 2026 22:48:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789364881; x=1789969681; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=gFAjPxzAC+7uvdp4ugVfLG9EnUXAfU3b+9d5yWrMSJU=; b=qV2fPNBYM4h924rRdlbCQS+HKt/uZcM4Ejf6u2mQWy7I3riljJD52ppfRIuuyLQtHR ew18jYpFjJ3j9U6HoAv80ux9pUjF4Iw1jmohoAp2M8B4QArHhD2O1sWRkXHTG+6xEykY FHnR2nkbre8wYYIbVi94lcdv9e0shQPUb3mw2v9CNv0afiaXZ78/4A7VLsive+1gPIkh 4QNdS99w7EDLDuota8mYQdoYNiUIC+i4OmfWPz+iH5GP5OcYkQZLmRiTT3Gt3KiXpabp vVxTf0yLBN4tjlGhBpQqm/n8+RG3pjXTNnZwyrNYGGuZoBqxG6d3wzL20rdmZK3cLz6G afUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789364881; x=1789969681; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=gFAjPxzAC+7uvdp4ugVfLG9EnUXAfU3b+9d5yWrMSJU=; b=A4Gdo34P1piZIIXCTZShUz0jKEBU2n/+3pXNkN3W3PPyCGBW20W0op2HTRf8XCR9NQ bQvqRsmCNuz/upycjZEK38RyVStGWgYuBwVEA/EmHilMyuiEB0qhjbh85K6aPlkQEr6C 19gArZ6+PETmJx3zwnldpaNjaVomE9eL1F509Gy3pVQ9ARcotc4hlGZp6KBkkOj5KK0+ VSE3WDTaBCdZCjJFo45/7RhXKUJ4dJfe0TLMUTREX824TT8/VYTBpekZNWulmwtM/ME/ JufLmkAUFivM09aEo3MQWBb39XlNrdXds0Sg4Zfa+EeJXVnUs4kom++qD01wNTbSYIlP HRfg== X-Forwarded-Encrypted: i=1; AKwUvBz1pjFMEIJx6GjpUP+Qi5xAgNZDypmJ3SZk+iKlziTe3vJ8slObE66Ppa0CLu5DroCLniH9YHIyngqcD2E=@vger.kernel.org X-Gm-Message-State: AFuF++mnNsea3x+LuhXpeKx2zEGSLa6Wg4ITYOH999wzLsiLkm0JYowr BK/DGjk4B3oh38JGEsABdapQ+NgitensWbMY/5xW1U/KFinaciQQWDjX X-Gm-Gg: AYBFou2TxtjZInTPwoUqEIpI+4LSsm/1ylhyEJhnHlASPtXpJ5UfRJcmRv8XdFU/vJu v9NJjqAA+R4Gd/aHp035DGJHSUbUPWkjHUe7mW6TJMgiakZPRinEtI6JXEqTwETZIRcd/RNK1TQ eZgAyQNWR6s/FwpHTk5ToXfPQlAFW2CNfsDRDZDOFCUXz2db44fksgVgEwXX7wykIA7AlLg466J TBN/m3WaOg3RRCe8nFNigk3NQftGu61aj29pOgGtPpPCg1RgH7hOvSnWcECnQBjOQp5MxGjIkVE 8k4+lKOKYZPyP10qWIJya43p9pJY1PLgYrG3cMhHeQKAUmrLisM/ISUTIiKKYp/LoD0OSgScMkj fGph42yqyzce8Yf/hGtIAw4aQToQ/FVJ3L5baAQ+kDmOYje0HwFsKXQ4LVafE0WF4CMaR2dtRN4 QuBUW8f4HyNQgE0VS29WszVQGsatSySt0vbWGv62tv20mvZhTrZM8dCMLvPESuLI35zjBVyMImq 9ZjC55Rux2ANfh8w41asZamq+b4Q2ojPrXsbI2JWl8fc6Cpmk6caiVjQDDgke/trBKf2VgE7Wj7 ZKSke1SqvCku+bpiq+NbW2HohbGnnbw= X-Received: by 2002:a05:600c:3586:b0:49c:ee01:8c53 with SMTP id 5b1f17b1804b1-49e7a65c7bamr12745825e9.2.1789364880534; Sun, 13 Sep 2026 22:48:00 -0700 (PDT) Received: from localhost.localdomain (dynamic-077-007-122-014.77.7.pool.telefonica.de. [77.7.122.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49e6a06cfb8sm214537735e9.5.2026.09.13.22.47.59 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 13 Sep 2026 22:48:00 -0700 (PDT) From: Karl Mehltretter To: Andrew Morton Cc: Karl Mehltretter , Andrey Konovalov , Alexander Potapenko , Dmitry Vyukov , Marco Elver , Bradley Morgan , Anna-Maria Behnsen , Frederic Weisbecker , Thomas Gleixner , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Sebastian Andrzej Siewior , Clark Williams , linux-rt-devel@lists.linux.dev, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org Subject: [PATCH v3 3/6] hrtimer: Pause KCOV during deferred rearm Date: Mon, 14 Sep 2026 07:46:29 +0200 Message-Id: <20260914054632.12877-4-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260914054632.12877-1-kmehltretter@gmail.com> References: <20260914054632.12877-1-kmehltretter@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Deferred hrtimer rearm can run after HARDIRQ_OFFSET is dropped. in_task() is then true, so KCOV attributes the instrumented timer-reprogramming subtree to current. With CONFIG_KCOV_SELFTEST added to x86_64 defconfig, the interrupt selftest fails under QEMU, detecting spurious coverage in __hrtimer_rearm_deferred(). The same happens on s390, RISC-V and LoongArch, which also enable HRTIMER_REARM_DEFERRED. Excluding the involved files instead would cost their coverage on real task-context paths, e.g. the hrtimer and timekeeping syscalls. Take the kcov_pause guard in an __always_inline wrapper around __hrtimer_rearm_deferred(). Use it at all call sites, including hrtick_schedule_exit(). Callers that may run with KCOV enabled for current are built without KCOV instrumentation or marked noinstr. HAVE_NOINSTR_HACK covers pre-GCC-12 x86. The other affected architectures restrict KCOV to GCC 12 or Clang through ARCH_WANTS_NO_INSTR. This avoids relying on __no_sanitize_coverage, which is empty before GCC 12. Tested with GCC 8.1 and 15 on x86_64. A later patch also pauses __schedule(); keeping hrtick_schedule_exit() guarded here makes the deferred-rearm fix independent of that scheduler change. Fixes: 15dd3a948855 ("hrtimer: Push reprogramming timers into the interrupt= return path") Assisted-by: LLM Signed-off-by: Karl Mehltretter --- This patch depends on patch 2, "kcov: Add a kcov_pause guard". include/linux/hrtimer_rearm.h | 18 ++++++++++++++++-- kernel/sched/core.c | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/include/linux/hrtimer_rearm.h b/include/linux/hrtimer_rearm.h index 17a81826bd9a..cd935bab3da3 100644 --- a/include/linux/hrtimer_rearm.h +++ b/include/linux/hrtimer_rearm.h @@ -6,12 +6,25 @@ =20 #ifdef CONFIG_HRTIMER_REARM_DEFERRED #include +#include #include #include #include =20 void __hrtimer_rearm_deferred(void); =20 +/* + * KCOV: Pause outside __hrtimer_rearm_deferred() to suppress entry covera= ge. + * Callers with KCOV enabled for current must be built without KCOV + * instrumentation. + */ +static __always_inline void hrtimer_rearm_deferred_kcov_paused(void) +{ + guard(kcov_pause)(); + + __hrtimer_rearm_deferred(); +} + /* * This is purely CPU local, so check the TIF bit first to avoid the overh= ead of * the atomic test_and_clear_bit() operation for the common case where the= bit @@ -43,7 +56,7 @@ hrtimer_rearm_deferred_user_irq(unsigned long *tif_work, = const unsigned long tif */ if (unlikely((*tif_work & TIF_REARM_MASK) =3D=3D _TIF_HRTIMER_REARM)) { clear_thread_flag(TIF_HRTIMER_REARM); - __hrtimer_rearm_deferred(); + hrtimer_rearm_deferred_kcov_paused(); /* Don't go into the loop if HRTIMER_REARM was the only flag */ *tif_work &=3D ~TIF_HRTIMER_REARM; return !*tif_work; @@ -55,7 +68,7 @@ hrtimer_rearm_deferred_user_irq(unsigned long *tif_work, = const unsigned long tif static __always_inline void hrtimer_rearm_deferred_tif(unsigned long tif_w= ork) { if (hrtimer_test_and_clear_rearm_deferred_tif(tif_work)) - __hrtimer_rearm_deferred(); + hrtimer_rearm_deferred_kcov_paused(); } =20 /* @@ -78,6 +91,7 @@ static __always_inline bool hrtimer_test_and_clear_rearm_= deferred(void) =20 #else /* CONFIG_HRTIMER_REARM_DEFERRED */ static __always_inline void __hrtimer_rearm_deferred(void) { } +static __always_inline void hrtimer_rearm_deferred_kcov_paused(void) { } static __always_inline void hrtimer_rearm_deferred(void) { } static __always_inline void hrtimer_rearm_deferred_tif(unsigned long tif_w= ork) { } static __always_inline bool diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 7885ff76e69f..ae97c63842a4 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1020,7 +1020,7 @@ static inline void hrtick_schedule_exit(struct rq *rq) } =20 if (rq->hrtick_sched & HRTICK_SCHED_REARM_HRTIMER) - __hrtimer_rearm_deferred(); + hrtimer_rearm_deferred_kcov_paused(); =20 rq->hrtick_sched =3D HRTICK_SCHED_NONE; } --=20 2.53.0 From nobody Fri Sep 25 10:37:46 2026 Received: from mail-wm2-f12.google.com (mail-wm2-f12.google.com [74.125.225.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 24BAE370D54 for ; Mon, 14 Sep 2026 05:48:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.225.140 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789364885; cv=none; b=D+86+f3TBPAP7zvTnPWJOxdchZkFOhh2D2LKb+nuo1P2F03RwiG0b0DJq6cX4zMLRXAwx03ZFdgNFqbVXlrOQJFLmLrOdIb28NXhLPsYsIwVf5Ckc/5Ll15kE3hPcDe84qkAJ1cXOlm9TpCS4Tw4inxcgka7sYmDOrJsAuT8kRs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789364885; c=relaxed/simple; bh=vs8iIby2nXHPAbbxM+YDs27DIBOnDI8WdDFG6sw1nDM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GaefLa1vI/y8pnut8KkoodUVg21uCl5cBvxjbMK+a1IduDnZvY3PvzqiyrvVY0oUilP6e68O6SoEi61XJ28n/pIlqLZOVj4wyD3YY/5m6f4FYzrA9ODO1B4pt7ZdVfjgA5iaaAWGNzDd38eWGb5VQeU9GoZFAzo1P8qCdD1BnYw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=L0WV3lCS; arc=none smtp.client-ip=74.125.225.140 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="L0WV3lCS" Received: by mail-wm2-f12.google.com with SMTP id 5b1f17b1804b1-49e66390995so7130985e9.2 for ; Sun, 13 Sep 2026 22:48:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789364882; x=1789969682; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=dMwj6bRyrsgMgTwnA+0w1Z6ygXdtryIk5Fb3zMeqsM4=; b=L0WV3lCSZnHfQjOcjCCHDJsn0gl7p6p4CDujA2LiKAOqWR/s2fYIntUnqEe4dTYVPS y196xts1gLfNi83+00WQs+GaPegM6cZrw3uqOWdmdkq3jvbFAOeoHOpyec48W3slhXcD sTZ/gMbi6hXa7O/ZViFUN89iGzYK5RUldMJuhfn0FcBngAMhQvea12ywHN5qOm5wZxZu 2aob8v4nwcPgjatv3bkKid2Kv54fOx7IWWcm5DkW/OuOd+Mc4QtkUgbgv6U9bvjSxZve ezfDSx+SRCUnB6MZo6GLWt/g+661Jf8o8S32Di735vk+bzaBRI/otDR0w7aGHeF9jmLR SMfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789364882; x=1789969682; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=dMwj6bRyrsgMgTwnA+0w1Z6ygXdtryIk5Fb3zMeqsM4=; b=dlWs5V8lbsN/LVRu3xj1a6RwSJ7ICMl6nwSMOHDGpssv/U8Ot8xH32Ypi5LOHSC7LU qiCvxvEFYnpkduJkhDi5VkJkTPsZ34Z27BBzqk0HQcqnkzlf8fj9gDLiVqtGGRbJRgAM Kcd+sjAI9epRXGm+Rbb67mc3nB/2cAt6og3xruI3IslwoorhAEjfOsIbroEB557NiAML A6Oop2GBIotHjEPL68VbG2qNjIkAp80VHVYQtbdpXv8a1nfZ0u1AVahySA9mWJcBqlxS IQCjkNwsk0f1dld47vaLN7Rz0R4pHEQY0UA+CL8IQY7GFhKrkzSVudtXXrEvuw9ZN4Os Leyg== X-Forwarded-Encrypted: i=1; AKwUvBy45PXc06SOgTVccC97JEOEP2/rSRuItUDppuIZPHIndAcAcs0Jdxee8WXZ8uS1OPIhioDfZVpaWBAWcAI=@vger.kernel.org X-Gm-Message-State: AFuF++lnpyRi+trENmZ7ZT/JD23xxg+8U+joPMEPQpBWxvVrjg1jEroW H6CWn0PlwbKYFmylDHEATIIq+3gBWklqX0jx/tVf/IlaDvHTRDEKBpjJ X-Gm-Gg: AYBFou2WBeWeoCWuZC2o2Jbio08fqmxgjft9STQ21y6Nl8saOQp8/MHPjxYEkV/rREH jKKspfSFTdRJNvLi4vdR/K99XGLgtIkiPN7O/jowkU3xPUw7DrQ1wBPrWN1iTqRo2pS6Q4DzzJf 09mjqGLJNx10xb0vufMz/3gQxnigmJwe/NQI6iPzGkceWSlKukO195qMyVbFsh+SfWyYJXro4jM PHXZanKhtGT8woN67wKfuRtfFuydYx7mb/Ig/B1ip2RxGImEmDTNgmgfb5uK+L9Os2Xgy3rzQzZ I6hWNJ/YHAXR4NFSVvjWz8ayP1Z9qQFAxuovDBGwh1zd8n3fO6tejH7vxtRIm+yCBd5AIjts1sv pIoVAUkc7akw0QsU7BPGC0D/VBkc8QLnCn28yP9bhBdaCU191wvXQeCYipTl2LcP6ZOngmWBx0Q 9A0RIioUfqlE0AiRFl4Tfcye4Mz28xVly9158pfbIiebmKQASFiT8P1dHdq7G/YddZ/0dDwQit7 mLeIALedho0tLCWQMj71LRBgu9RpZDFo6sUArYJbycx+MGHEjzKMJVvK8ViFqro+W2Fi7tcm8Zj noV/zQbos8DOHjVF2twyKNvc1eLs9d0= X-Received: by 2002:a05:600c:871b:b0:49e:69e3:884d with SMTP id 5b1f17b1804b1-49e7a63770cmr9516405e9.4.1789364882018; Sun, 13 Sep 2026 22:48:02 -0700 (PDT) Received: from localhost.localdomain (dynamic-077-007-122-014.77.7.pool.telefonica.de. [77.7.122.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49e6a06cfb8sm214537735e9.5.2026.09.13.22.48.00 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 13 Sep 2026 22:48:01 -0700 (PDT) From: Karl Mehltretter To: Andrew Morton Cc: Karl Mehltretter , Andrey Konovalov , Alexander Potapenko , Dmitry Vyukov , Marco Elver , Bradley Morgan , Anna-Maria Behnsen , Frederic Weisbecker , Thomas Gleixner , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Sebastian Andrzej Siewior , Clark Williams , linux-rt-devel@lists.linux.dev, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org Subject: [PATCH v3 4/6] sched/core: Pause KCOV in __schedule() Date: Mon, 14 Sep 2026 07:46:30 +0200 Message-Id: <20260914054632.12877-5-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260914054632.12877-1-kmehltretter@gmail.com> References: <20260914054632.12877-1-kmehltretter@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" kernel/sched/ is built without KCOV instrumentation, but callees such as sched_clock(), architecture CPU-capacity helpers and profile_hits() are. During preemption and schedule() calls, instrumented callees can add nondeterministic scheduler coverage to current. With CONFIG_KCOV_SELFTEST added to x86_64 defconfig, the interrupt selftest fails under QEMU, detecting spurious coverage in arch_scale_cpu_capacity(). Annotating each callee would spread exclusions across architectures. Pause across __schedule() instead, extending the scheduler exclusion to its callees. KCOV_PAUSED remains set while a task is switched out. The guard in its resumed __schedule() frame restores the prior state. Assisted-by: LLM Signed-off-by: Karl Mehltretter --- kernel/sched/core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index ae97c63842a4..54b5c5383fe6 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -7116,6 +7116,9 @@ static void __sched notrace __schedule(int sched_mode) struct rq *rq; int cpu; =20 + /* Instrumented callees would leak coverage into current. */ + guard(kcov_pause)(); + /* Trace preemptions consistently with task switches */ trace_sched_entry_tp(sched_mode =3D=3D SM_PREEMPT); =20 --=20 2.53.0 From nobody Fri Sep 25 10:37:46 2026 Received: from mail-wm2-f12.google.com (mail-wm2-f12.google.com [74.125.225.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4833035E1D5 for ; Mon, 14 Sep 2026 05:48:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.225.140 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789364887; cv=none; b=qj1YHwi8YbdDut0hFqLdGRIrYr7ASWsTfyTnlVa2OFElAj2PX9NQbwQJ5uLUrtKTSPLzQZ/ToLgt1tzkapgXl4Yp8hZEI23whjCP+9AC7+isgnoQ3vOGFBdmL8UGAjIxMP6zd2pidN6VKMOVnF9v5dnLNJ7A28I+Bl9uPqenjMk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789364887; c=relaxed/simple; bh=4/rEt6aIcLBVMLDQITGZHHjQoIY+CauyfASRMhD8tuk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HholtLNf1B1Pt0bzMOzdEVIVp94vBTDr8s3Qp3QXYoQCBPmXtHzOUjbCe/zHAe6l5RDwxLoPMvoJhlpvBbMLHtTIeXTDqlCKOWBKQZYcPbvIkb4IIXwSFac1ZEh4uqvAt0ozyOCIq3t/Cwb2aubYQ7RjTlDx9/q5aPetP2mUdsA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NjFqBAl3; arc=none smtp.client-ip=74.125.225.140 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NjFqBAl3" Received: by mail-wm2-f12.google.com with SMTP id 5b1f17b1804b1-49b912e2406so6013875e9.1 for ; Sun, 13 Sep 2026 22:48:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789364883; x=1789969683; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=gRxtvgP8q+4kgTU7CEIUrbrLAuy9hfqDj2Yu0xRVbQE=; b=NjFqBAl30sDz+PC29xrxhoS735qj64UxPD3xCckGXm4nNj7HWL8CvKWfFfU14AKapO hk2Syu1UXxzDux6dXq2yY/vzNCCGQpfcf2hnxXs1PhjZ9ma+11JQAIPj0ijBYJln8KCd E6GUoBuzDeySirzF8e6TvFQLPVG8PWKCjPdc6+a08cGL1D/HD5ClUcFIzgmU4EKWTqfe eWI8tJyrXZG8OuT+d39ahxrqUPqEABrTZU0Qsfvf8us2LvYii+TTQEw/EJkNaPGqi7hp AIcJ4rg3Ha3hmQI+yzHWFzBaf88beB+pBFI59CPFNh3VWs056m22bvMNmhSQITpSCkai imbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789364883; x=1789969683; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=gRxtvgP8q+4kgTU7CEIUrbrLAuy9hfqDj2Yu0xRVbQE=; b=ibpfpqEK9+eTsQAr4Q0wmomTbar2uzAkuGAMPWBnMTPRD9LAEr417rdjCG2swg1uAZ +DVYC04ZkK/JK3elWnmRGpYsVknBvidYtIgdE01ZRW03fuXX8Pqi8mArHJYUA01dhsrR GqnPDAPZKLEIq/W4+Qu/N5TxTCOGDCMmvjhZgbEf86AVkAqXZxOOe5867A55brIVKscS 4U2SqvSsq2EBR9RSjvbKWsklbcJM+1bWZlZgtY3MfecXRrsgB6svGTuZoDms0ZnDYcgN LBaUJT23hcFZePdkAmTNdMxRUjQGnZzRTHF0LwBzz48CkrKZJo97MYiVqOxZ4S9eNyKf NiAQ== X-Forwarded-Encrypted: i=1; AKwUvBx/8qrr0FQZw+u4FL0EL139Aukp+P4CFkm1e/qe5uCEqjmXhG2+hX/DPAEnraHBVSKDZmc2ss4umdYmt2c=@vger.kernel.org X-Gm-Message-State: AFuF++mfpnp1sgGZ97tON6JJw+YmVtYf5M7XX99Qgoc0SV/+vgpYEzzW H73fTOynsrOJVXaaC8P7aaKTWcRiApk6BhgR5h9dLfi+pZRAqWY8hinE X-Gm-Gg: AYBFou3qOlH+o37qRMSFZvsz5IDOadWzUujhCojz6b1bCel6DI2CABKB7vbki+sDlcK ZlrxaAmvG2di4QaCCB2LugOJCSdGkhMLzJG3p9cOublpMmV5pivBVDcSzBg2yBrXIlHKgB9EX9H EG4cHVqTiRcypOWhCyJJe7qa0mQkf5ckwmUde9daPa3r9Sx3/8rJLUm4L476lUYQRQ1FPcalJbF TbLQ/OAJwwMSplxogi+Xmkwa77D1HTCJB83M+coto5vL1BRgawb0Jemwf3WE44R/R0Mw1Z/js+Q 18n92GGeGyMl9DwnP9Tb5eHxbLkbZhjY0RiG/dnyuxgm3a+vQca0cjEZbwWL1lPg3eHjkop7Cro VIwH6eNXfz/ZsQyKKFzf+xspyzrpG3fTjeluTWLdkmsuRGqaJWThH8Lv7LXVt5F/5ztn/1JMLXx DwlqJ9XZVUd8Hq9774X+CE6I60+jHcT8k5u9UAWyAQGs9YOkQ4Gd61g/3Jam513JsjUBoTPyZBC dFLmgdZrkkHhuSUeQ90TdARXhukd/J7hyHN6DCLz45ryQTnveUvH/XK5FWBcPmRJDwHyfPbjHV1 G4iNjGRm/xZTzWE12vL9MabN0qoZm+y/ X-Received: by 2002:a05:600c:3484:b0:49c:f13e:e52 with SMTP id 5b1f17b1804b1-49e7a6865c1mr10069645e9.15.1789364883547; Sun, 13 Sep 2026 22:48:03 -0700 (PDT) Received: from localhost.localdomain (dynamic-077-007-122-014.77.7.pool.telefonica.de. [77.7.122.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49e6a06cfb8sm214537735e9.5.2026.09.13.22.48.02 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 13 Sep 2026 22:48:03 -0700 (PDT) From: Karl Mehltretter To: Andrew Morton Cc: Karl Mehltretter , Andrey Konovalov , Alexander Potapenko , Dmitry Vyukov , Marco Elver , Bradley Morgan , Anna-Maria Behnsen , Frederic Weisbecker , Thomas Gleixner , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Sebastian Andrzej Siewior , Clark Williams , linux-rt-devel@lists.linux.dev, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org Subject: [PATCH v3 5/6] sched/core: Pause KCOV in try_to_wake_up() Date: Mon, 14 Sep 2026 07:46:31 +0200 Message-Id: <20260914054632.12877-6-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260914054632.12877-1-kmehltretter@gmail.com> References: <20260914054632.12877-1-kmehltretter@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" try_to_wake_up() is built without KCOV instrumentation, but it calls instrumented helpers such as kthread_is_per_cpu(), CPU capacity helpers and SCHED_HRTICK arming. They can record into current while in_task() is true. CONFIG_KCOV_SELFTEST exposes this under PREEMPT_RT. The interrupt selftest fails on x86_64 in kthread_is_per_cpu(): RT runs the timer softirq in a thread, so the wakeup runs in task context during the selftest's spin. The same helpers leak into non-RT syscall wakeups such as a pipe write waking a reader. Pause the wakeup body with the kcov_pause guard. Take it before the preemption guard so preemption is re-enabled while KCOV remains paused. Wrapping only select_task_rq() would miss SCHED_HRTICK arming during enqueue. Assisted-by: LLM Signed-off-by: Karl Mehltretter --- kernel/sched/core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 54b5c5383fe6..e3b50bbdf3a9 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4266,6 +4266,8 @@ bool ttwu_state_match(struct task_struct *p, unsigned= int state, int *success) */ int try_to_wake_up(struct task_struct *p, unsigned int state, int wake_fla= gs) { + /* Instrumented callees would leak coverage into current. */ + guard(kcov_pause)(); guard(preempt)(); int cpu, success =3D 0; =20 --=20 2.53.0 From nobody Fri Sep 25 10:37:46 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DD68E351C0B for ; Mon, 14 Sep 2026 05:48:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789364888; cv=none; b=uNHf3Tj7rayJxtY3ep22lELrUszG83u3Pj1V+TJnYlpgqc0FF/VyP2BbKEPw0LUEbCHVpae0XsezJpCqud1U33tyzKjUrQCGV3XRrsmDEbG1LWGzCA4/B96fIv8iNbHZVtWfVNTxSx3uWsEH7GlcA0tllv6TCyHGkZfsLDiyHh8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789364888; c=relaxed/simple; bh=fR66qV3kQLyfv39LEIbTf/Q7lysxPTqD1gJeyle3EBY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rQq3RJ86AbrRP0MIflONKHThkhcv6BvAalc7I2KnZ3+WLYMdjkyzMC9Cr8PUS0MRNymtqP0VSNXOXsaD+MlaF37+4RK3QieWfNLrr/6DUdAJuY2CplERTQECYt4rHX9p7aWOZ/Hr3ucZj63ZuQuP0TryE4kjlBKcuXHE86eq4hU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=gpKI3Bjl; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gpKI3Bjl" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-49e6bad7b79so14261645e9.1 for ; Sun, 13 Sep 2026 22:48:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789364885; x=1789969685; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=sXNYXe0Z5RdbTRhZRnews+9t6bKbA3tmATeBlUSa9XA=; b=gpKI3BjlszO82xW9oWd5cFLF9K6ykHRTPU9w7uemhFlRFS7lEazRDUCbE2piYrwUjQ e5YETqoWcJtx/7pg4mE1ZTvy0ZQtK5aJO3B26F3caM0hL7tjWuGiOw0YgZNF+gsCxVWY iTB4H9NeGi8YC5ShndfMfHC6nFFvSyFdeH0KwzdOMMGjmTWWUX/XFb/EwtcuNn4/JzkH Yc19lchqHD116sipSsWEGbmiGCBxmHlOhF4q56XTz40U0pF8+6KXWa38fH/DP0NXgQUb QE1P4+KTRidYDbJ7NffNJqYpP0K962dAd6UDc8en/zs1r5KRbBkXZ/wO+cmkJw0I78Vk /KLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789364885; x=1789969685; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=sXNYXe0Z5RdbTRhZRnews+9t6bKbA3tmATeBlUSa9XA=; b=Unx1TqrO/4WHgrJd2SAlEDXpEqslYCPI+PAeEsbt7p9GJEHiQZG0Iwf16U6//thG0H AxzKHUzPurmJgT3HLAYJeSpZ9UDFuEcrUxz9YYaQLkjyGrDffDHvJdbbFBr5udFHPvTI SP44MkfpYclpMbGXMXLA4IwFRpFj3BUAujqg+ctxg1/lVeuVK5UbBftEp0LRRNjfi78S H5jp+x4Ag3XbYaHBm54EzoyjsrfwcNAaPx4YgfhIUetCCqxf+neN3xjcwUDDqWg7GjHk PBGVTv/8ds3U1S3pWFHExvMgzTFcR/tX7X80JG4oSauPc8ggekKc6W06BJeEnM8+Rynb g7xA== X-Forwarded-Encrypted: i=1; AKwUvBxwEepSZgP8SHNvR+jZsvrbYvLQNSk0HfMBGbNJqbvYWnNnmaOD6IN8I5u89wmiVllcxzu9rY0CGgjwXdc=@vger.kernel.org X-Gm-Message-State: AFuF++mo9ieZfoxOoMKzCzT2vBB5TxXy/C8eIJm/QTg8J2GOjtHFS3Fy dQAYPxUxQUEjU37VdWic0bMRrUsfzRuWmlH4INiJHu+smHep6DboKiNJ X-Gm-Gg: AYBFou1FBdx7H/qofFRTfSO20IGCBT/H8YiwUJCZtH4h79e2UwAEcX2BNsNdbPpyXQD 4np2EUC+SD+WWbZZSYqDGd7wwCn7ta7gqRl8JXUhvppFGae3B4AxTeoLDMyM+hBROZW1EkiPeEH 9b4INy6DnijADRuSYjyEn1AJ7Ug25CE6nih8avB+Q05NKZ+7s1IcqjkNruqSCynSYTir1lpD7ZJ PaJPJxYanE8edLSBPeJaZy6AQHfs4lQFaOMPt3I9lcYWKYHEMajnsyaEkJZjWu1JL9VIDzCXl0/ vqISOb3+InrWbyid7BFpS+51Pr36+GXR3lDeVf6Hk5+JI9gF7MuQFLmBjG7R0SMfLyiTnZuaSiG FfDS/vcbkMwEXPqLaeOSIOR1w0gNTWtvZnJjItijZ+qjbMg7XVjJXnphHUq1XVCk+q9kPBfVMYO ahNhxj8PZbaRE5EzCXU9MT1zwDA+zl+FLVt9B7aHJkNYHOJQrPZlC/RLhuNDlR37a/zOGNUkJfQ gVEPImqKVLC8ktmNSfmZHmrh4D/gTKAwOVXbnY/J3OIlqfpPKpLN2Xb00dNApl5h6K3Vi6NEaTy l/mjADh9Dbz/1lrTGFgaO6lk4DIE54M= X-Received: by 2002:a05:600c:3586:b0:49e:747e:c00e with SMTP id 5b1f17b1804b1-49e7a64e729mr11700895e9.9.1789364885075; Sun, 13 Sep 2026 22:48:05 -0700 (PDT) Received: from localhost.localdomain (dynamic-077-007-122-014.77.7.pool.telefonica.de. [77.7.122.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49e6a06cfb8sm214537735e9.5.2026.09.13.22.48.03 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 13 Sep 2026 22:48:04 -0700 (PDT) From: Karl Mehltretter To: Andrew Morton Cc: Karl Mehltretter , Andrey Konovalov , Alexander Potapenko , Dmitry Vyukov , Marco Elver , Bradley Morgan , Anna-Maria Behnsen , Frederic Weisbecker , Thomas Gleixner , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Sebastian Andrzej Siewior , Clark Williams , linux-rt-devel@lists.linux.dev, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org Subject: [PATCH v3 6/6] sched/core: Pause KCOV in wake_up_new_task() Date: Mon, 14 Sep 2026 07:46:32 +0200 Message-Id: <20260914054632.12877-7-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260914054632.12877-1-kmehltretter@gmail.com> References: <20260914054632.12877-1-kmehltretter@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" wake_up_new_task() is built without KCOV instrumentation, but CPU selection and enqueue call instrumented helpers. During a KCOV-enabled fork, they can record scheduler, hrtimer and clockevent coverage into the parent. The paths depend on runqueue and CPU state, so coverage varies between identical forks. Pause KCOV for the whole function, extending the scheduler exclusion to new-task wakeups. Assisted-by: LLM Signed-off-by: Karl Mehltretter --- kernel/sched/core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index e3b50bbdf3a9..a669f8d99653 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4962,6 +4962,9 @@ void wake_up_new_task(struct task_struct *p) struct rq *rq; int wake_flags =3D WF_FORK; =20 + /* Instrumented callees would leak coverage into current. */ + guard(kcov_pause)(); + raw_spin_lock_irqsave(&p->pi_lock, rf.flags); WRITE_ONCE(p->__state, TASK_RUNNING); /* --=20 2.53.0