From nobody Tue Sep 29 06:49:54 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (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 E86483B6366 for ; Tue, 11 Aug 2026 15:41:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786462884; cv=none; b=T9ORSh5QNi6YuSopqdozCVfCivhY8g0st9OATpGkvrpXJi1LkDo4YoVY/6E5ieFEFpxxCAxifJ1qfmLMzO2M6vxskVNe10OACiGQ+79dVCRG5fqlQ4QPWITNd9ayDc/kJOHoW21X3pWJISM8gb6b4gWxzPVxxd70el40YA6iDrY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786462884; c=relaxed/simple; bh=BY65PnGHe+xwImPtdzo4MD/Fzu1+CVIUf4+17OVN5LM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=C5kqu/09RZV6Mnx6sDhCedC9qTroSPckpzBTBhLdCBgrOMtSmAJwD07ec7yazV7uLzJH+DEOJzT4kpJuh5qWqVhjU/VXTh9p2A7GbKQKsDqp7F28KG57boPx4+GtqaN4V/YVuB83eSPUN0N5yVBhI1inB9VcchT8BiIyPWkfZ3E= 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=PGdT0Dam; arc=none smtp.client-ip=209.85.128.53 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="PGdT0Dam" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-4954a9e8490so7514045e9.1 for ; Tue, 11 Aug 2026 08:41:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786462881; x=1787067681; 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=b/5d17gGChZeOWSRVnJ05Evry3YPUBU8qMwLcauaTRc=; b=PGdT0DamH2GyM/+1Dvu1cRqQfao1GNFMpd4pBnpxekp7FDGlubKWaTwEhAG3T3yvEs /WCm+cGRf6NrO/syZSI9fHUcTvslGTwifgQB1WZ2XXIMs/XSNBtV0REdRbhM5GWhqR6h sJmIFQTW3DUpRakAJ7ic/Vj9clEZSbBt8ZqylOza4I8QcHDj/76azZhL2HiRSl0mCm3+ LG0dVVWGSoe1OrAQuoO4nflYMqboVqybPm684aL3CPRVSyyH0GqK0AjdCN/5eSGOqYpo w/fFD2/T9EgfBkCtj4JAIaM6h+gIZcArCo5L6q8Fzzo1drtPem4H7bhZL9PCqoQ+FLfn X8hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786462881; x=1787067681; 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=b/5d17gGChZeOWSRVnJ05Evry3YPUBU8qMwLcauaTRc=; b=YFeRYcbn7/mtRf0lpgetV6FTElagCf7bymZXiQNAIyrM+lU1PPLtW/r7ruyzzYOxod geg86z/U5JaWlySfyQrI13zceMsK8akYaLAiqPzHyZfSHD4SUdpaHnr95lmDy5fGqWAW hhxq6ELKHDKk8oy4DcwMXN6RwUIhldZGUE3ICopeWb1gdNW9V2MWUB9qpKmPuB8ackku nl9icXIZmwLrND31l3AAtOlAoSb0sS+8SBP1TM9b0qqO9UmWhyDs3I1lKG6swj1nZKvW O8hC3XMh+Bqx9YpbU/y/EdZNEXwqqd/zZS0JWHgGhWwRSEBrjQzW0NTpf61xodlgdeXH vjkw== X-Forwarded-Encrypted: i=1; AHgh+Rpg9rEPC37ph3npb9s1Z9c4Sh87lQbtRDfvmu7AyBP1R6R/MliT1rBvhCf4xUTQq5YCzRKgBjPQJE0efWc=@vger.kernel.org X-Gm-Message-State: AOJu0YwYhburWs61Dm1GkZzDzwIH6dmb33Q2f9tkoxOZ3sDa6anyrhL0 Y2xMiTJ7GnpgF7GjeUVoBzKBTi/NJjKbYiZA+YwT7GWI6B8dQEKEk99p X-Gm-Gg: AR+sD12MFYUSrtot7PM7ZiUjeZ2gNccD6f2MshRUyPePHckxIRpTz9jnY8gqO1w1XW4 HT+l3a4s8zCEjPcdewVNsGiLvj8mWT0JLV3tF7glOYTx68gqmUvj0D56ZedtBQmXpkM2375fjMT WUEESi6PSbZjG0L3WfN6L7n72IIDy56JCojaMBAwi4GnldAeE+iRaW1Ifv2P28uAWBVUb4tnkEO v/RY1fSaY7IMphjU0epUakJAyXVlHIKAakSh6QllQ1Unozx2aBvxWtVoz1QI87tQltdBRTVbw+4 RuXhTPG+O0GXUSmh8m3xYM3RJ2lMbuyvtoQdEKiH7OhuGFJVYvyobg3ekskV3kCeqS9hKQzA2Bf mPnQdXjWjNy5JnL+9d5zSrIpFvn4MxZlgTKO+AmyP4O3uiMvBnezAhLWLApboHeAcKJcaC4clqn Ap+LYjD4RgM47dYWR9/7BrC7jFLfSSuln30fMtGmm43hfqNxrbOqBuUk7KEYxFXkK5yq/rrlZcF UJpTbFDMCckdubIV1+FJUv2gDAPcgKvG+atJyIte6suGIghud4KXEr/f51lELjl3NYnGWYD6+tW 5OWu1hQn+ba+WM+wqpMvN5d26xRVKNym9UW9DJXMc5BYLbtOucMj7lqWScOptk2jQYN2 X-Received: by 2002:a05:600c:a41:b0:495:5d6d:9cc1 with SMTP id 5b1f17b1804b1-4997a66e371mr16160195e9.0.1786462880721; Tue, 11 Aug 2026 08:41:20 -0700 (PDT) Received: from localhost.localdomain (dynamic-2a02-3100-a133-e401-bc8e-d36c-2d08-c5e0.310.pool.telefonica.de. [2a02:3100:a133:e401:bc8e:d36c:2d08:c5e0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997aaa7aabsm1670275e9.7.2026.08.11.08.41.19 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 11 Aug 2026 08:41:20 -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 v2 1/6] kcov: Use unsigned int for kcov_start() mode parameter Date: Tue, 11 Aug 2026 17:41:06 +0200 Message-Id: <20260811154111.64669-2-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260811154111.64669-1-kmehltretter@gmail.com> References: <20260811154111.64669-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: Claude:claude-fable-5 Signed-off-by: Karl Mehltretter Reviewed-by: Alexander Potapenko Reviewed-by: Bradley Morgan --- Notes: v2: new patch kernel/kcov.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/kcov.c b/kernel/kcov.c index 1df373fb562bc..b5340369e6fe3 100644 --- a/kernel/kcov.c +++ b/kernel/kcov.c @@ -354,7 +354,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 Tue Sep 29 06:49:54 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 527963B14B5 for ; Tue, 11 Aug 2026 15:41:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786462890; cv=none; b=GTFOMh0vhjle90QtXJQMBC04ETAQuV9SZDXj2bHPSCbC8ppyavFyGZ+cTgO29B1usRNjxP4xcxlSSrMoZvJrDlEIRXXt+186W8dFBK0O8qmOyTzS65J8+GBQb1OISeW26oA1WLXj2ETF9Gsh4VNNMwtwx2T+K0l6A458eq+3LKk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786462890; c=relaxed/simple; bh=U/CuYnW3nKlm0Ag5nbrLZwr7GqhHDz5KB3HhWHjv9Ds=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MdB/CK/E8ZrJRpcT68xQHP2AHAg6a+6HnRTnA/s0AOM7lW/kvUYzQaPKRu2NIQ8y+4k2Gc64FuJY2KjTXaoKeCvspZZ2OTd85s+bEfXFq9cdtkb2CclYBefDjFv6j2KZ1VTTcMMDvHTSpS0w3vzUm6ivjaFlWql54dFsCugn/cE= 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=Vm8NEm1C; arc=none smtp.client-ip=209.85.128.41 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="Vm8NEm1C" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4996f1ee4a4so18798685e9.2 for ; Tue, 11 Aug 2026 08:41:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786462884; x=1787067684; 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=TYbzUo5s72w0MgSb7UEpNxz2BTiCO8snbdn2LAQeGn8=; b=Vm8NEm1COG5PKNJg+XqqKm/jfq4oh2lEJmAcEJsO862ULQBxCoIQiJ0snHn9fl7aGu 1T1ns0jPwJsxk2Wyk2aqXJtYGZb7yNE8MuhSf3yWwB2HzCl241ovrSEh2SXSeNyuFEso 4TOXQnKSC5jDNo3Y1h0eDjVJuj/5veeJxHtYX0bIHVHBjV3eUoXFk2fL/VQWO2uUetKW yA4mNIyXjtEv+so41iZbvSGuFq5JXh7qy/tyGH/U7k1FpJo0Mc0UyfUc5WfCg2vJJBHj RfxQQu5NqdvFSWAlYYfAHdI2N8AOy9cbDihwNoCQdA/mFPMc+4pyReroxvhUVuabSuOD unhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786462884; x=1787067684; 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=TYbzUo5s72w0MgSb7UEpNxz2BTiCO8snbdn2LAQeGn8=; b=fbWs/5OoeIECilzxB1Q3Or1ZKvxpjd46HlRrKkcHRsOmes1mWkK5VRpSeSysJOR8gP YqKdVVwBG54jHeHw9k5rMpi0mKPM/NBXwwKi7e/Pns7Uc8XRouREV3TXuywUTJw3KV7L tFc5uh2zKVmxTJqLG8NnMrbWxkFaaxvnXZ5KfLDhPlnDPTpbc8JlgqWaZ9QguDXx02dz +f6kj4PdlTjB07Na+1CcZ01AxB/Ity4kXPLSmhKTFsfV+GOdgQ6wqwHi+sH/h7MsNapG 3IpJ7TqiS7Ani5+rZ2b7uDiRfaZtTYClKtJpSaii4aWSCjMwtEOUNt8KxUproPjSz9mt x2qA== X-Forwarded-Encrypted: i=1; AHgh+RrvhmF9tcNUy272VBdHUi8ybsrdHvGBAd3YQ61770U31tg+PftDLi0EEgM4tfiPhkGjCIifr86jT8hJ+I8=@vger.kernel.org X-Gm-Message-State: AOJu0YwiELwSu0e05AC9X7XoibQnFeLycDfXECPGXBNVxp5Emoh29743 TyHyssQZEpV7bRQLqyzAi06Q1rEHWn7FieUG3lPLI/LiRJiu+GNA+t0S X-Gm-Gg: AR+sD12zSIi0VM0YvdQA2NKTrWcOT1/4pznwHYlfYEJ/A2Z/mt9t3sEx/iw10OB+4Ae A/9XF/gev80L21PDasQoZmbnQ9dTT0lB3mKGqA/oluO5P/JqLTFvmDy/dwQMiMXD28AP+dm6ChN WZLPk/x5Ujl8jSn0TJajlpye9+zbSTmtHMoTtDOCoznKK9MFGgyqLxIzknCCUTHM7KBwatXeJ75 W6LUwe3C1Y22UaXyE0Q6GpcTY6E+JyIPEBL6V1tuLrpyLxN+qIKbKZ9eCsQDzvgrt6owplZgm0B 5ctwtbq6HT0Vaeh5x3B5cAHnuLFdYvIngnuIFzlhKsC6K7xVFBcp1bW061n00EeLKbdEIPqbnQW hFsrU9X6+CMn9lRFDYhEXTszRxgh5VHlPdt760Qszimt85ck4QChTwtPEPyn8bJatsKhV+clFQe WVZXDbNMl1hXo+buAyvUIxIAZgmbbmNcMO0dMCHkWCxG73V3JbH0am8TXXfjVex5p3zGxMYEAQh 2gPHv5efXLyP6eD3cU4uMalKo0d0hZ+163YQbl+dEaFUtz/2CdrC5O0SEKv6dClQDqTlYA272lo 8CVelglC1874tnOfZqyFMq8f4HAxAByhLA1FQNqjbR32+pjNPOWz3iifcTI7jYeBTIhv X-Received: by 2002:a05:600c:4fd5:b0:496:c18c:f9a3 with SMTP id 5b1f17b1804b1-4997840ab65mr67073835e9.5.1786462884404; Tue, 11 Aug 2026 08:41:24 -0700 (PDT) Received: from localhost.localdomain (dynamic-2a02-3100-a133-e401-bc8e-d36c-2d08-c5e0.310.pool.telefonica.de. [2a02:3100:a133:e401:bc8e:d36c:2d08:c5e0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997aaa7aabsm1670275e9.7.2026.08.11.08.41.22 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 11 Aug 2026 08:41:23 -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 v2 2/6] kcov: Add a kcov_pause guard Date: Tue, 11 Aug 2026 17:41:07 +0200 Message-Id: <20260811154111.64669-3-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260811154111.64669-1-kmehltretter@gmail.com> References: <20260811154111.64669-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. Provide a kcov_pause guard backed by internal helpers that operate on current. 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. The helpers are __always_inline, and guard users must be uninstrumented: inlining does not remove the caller's own coverage callbacks. Assisted-by: Claude:claude-fable-5 Signed-off-by: Karl Mehltretter Reviewed-by: Bradley Morgan --- Notes: v2: - add guard(kcov_pause)() backed by private current-only helpers include/linux/kcov.h | 40 +++++++++++++++++++++++++++++++++++++++- kernel/kcov.c | 2 +- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/include/linux/kcov.h b/include/linux/kcov.h index 895b761b2db15..1b4806dab62fb 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,7 +25,8 @@ 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) =20 void kcov_task_init(struct task_struct *t); void kcov_task_exit(struct task_struct *t); @@ -38,6 +41,25 @@ do { \ (t)->kcov_mode &=3D ~KCOV_IN_CTXSW; \ } while (0) =20 +/* + * Pause coverage for current. Callers must be uninstrumented. + * Pass the returned state to __kcov_resume(). + */ +static __always_inline unsigned int __kcov_pause(void) +{ + unsigned int paused; + + paused =3D current->kcov_mode & KCOV_PAUSED; + current->kcov_mode |=3D KCOV_PAUSED; + return paused; +} + +static __always_inline void __kcov_resume(unsigned int paused) +{ + if (!paused) + current->kcov_mode &=3D ~KCOV_PAUSED; +} + /* See Documentation/dev-tools/kcov.rst for usage details. */ void kcov_remote_start(u64 handle); void kcov_remote_stop(void); @@ -93,6 +115,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 +131,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 + * uninstrumented. + */ +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 b5340369e6fe3..a5c43764f21ac 100644 --- a/kernel/kcov.c +++ b/kernel/kcov.c @@ -830,7 +830,7 @@ static const struct file_operations kcov_fops =3D { =20 static inline bool kcov_mode_enabled(unsigned int mode) { - return (mode & ~KCOV_IN_CTXSW) !=3D KCOV_MODE_DISABLED; + return (mode & ~(KCOV_IN_CTXSW | KCOV_PAUSED)) !=3D KCOV_MODE_DISABLED; } =20 static void kcov_remote_softirq_start(struct task_struct *t) --=20 2.53.0 From nobody Tue Sep 29 06:49:54 2026 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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 B780E3B5302 for ; Tue, 11 Aug 2026 15:41:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786462890; cv=none; b=dlMYGuUP0aEQ97chdQkufsTrwbzhV/Oi8AIvzIqR3/u7wKtLSGxOTnV3vc4SPwml7/4eXdx+7EE2ZIBuqOJ/PZYfXfyJyuRFC+EcWtRS3nM+pYkyS+T1DZmjC53CsjV5AQFWwA4+QjMmWB/0wzcHai1Dg8iryZTk46nfShoRaWw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786462890; c=relaxed/simple; bh=/V1r6QXOL+eNTn/p3qGEcfXKl0uwiefVorjHNpHVPeI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lVG4LgAAwVgXy1S2aqv8d35FcANmF18zZcfMfU4OXBiOR/AFPOpYVOsPNf4L3LzZoA81wSFU+MiXZRzSGnoREme5NBa2pPQbg+cUuC/4/msRuJf9Y6fGWnqLVNJhYQn2YO9rG2zUc5mngL+A6AjZZ2fOldKdOV3NSM8ubkeqpxs= 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=bTffQ3j2; arc=none smtp.client-ip=209.85.128.46 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="bTffQ3j2" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4980fe6b3beso9276965e9.0 for ; Tue, 11 Aug 2026 08:41:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786462887; x=1787067687; 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=HYWQ6l3VVM6j4JRhvg6XxcplbTfEh60ar/rx0eHl1vY=; b=bTffQ3j2f3Jmr39taCD6XCE+/q8snZQrfMKwA/qsHltmeQ5ul2mR5SyUeO6oeYTkYY TLElnNAxqylbCh6shM5sQfIaGuBtoqKGWVEb/yO+H6VY8Lv9GDTyl61dIF7CcEH56XA8 Jw+HsCJR2sD8h92tImg+tER06NwBVjDvbqIdC/ItKt49XZkPW6ryj478dvD9IOCeOofe 4d1uGAMQjwtHxurawlABjS06NTi+riH6i+XYrni2PZxxFp1qBbM2uQwQ8qJaWD+ESP0h AYy3zBDNCJnbsk9IGUSiKCueOjUOlOVtAy03BZA6d9Aa9feI4xxM2PnEJoY3dZs9kiBF 0siQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786462887; x=1787067687; 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=HYWQ6l3VVM6j4JRhvg6XxcplbTfEh60ar/rx0eHl1vY=; b=pSHmKJSM7ZvjF7M82cGEaSrWDDYzs7BYZhYBaOiDEPR0uq2VdwQY2v6nkH2OPlvRWD bv+6gv35HBCVCHH/fpEw/gBJ3R0KG+4Xv4yIYK/TLGTbcR1bSYD0kMIGyG5PQw7/pVbH itaM9PR/33fQR9L3rNm7+BHFb8HHw0bCGjpPQhuDQxa71MVDDwlVf61+f6LVAZk87xpr DvmbxRp9xS9Wt8raRqYJ6L/k7fCigMYXD2LTRBgsE5khk7GZa1y5/zJCtFxkq76Balvf kg+zN2dEg9pl595Z3hhMLNVKUU9X0G82DpAplZ8YvDUoiDhIm8MBEP6BBpCLM39gESGQ 1APA== X-Forwarded-Encrypted: i=1; AHgh+Rr+P7iw+ewfXRlbL+XRM8KZdOtpbocFmNHTVcFy00+tOX8Jihu8RWR5P3Jf2TCm/wjePh2LNJs/3XVRAsY=@vger.kernel.org X-Gm-Message-State: AOJu0Yx3IR2xTPBdDfxdRA8l/xNfYQVglaHhWVkWC6rGYKY73emKmzt8 diV5vcn3Lt7iAmgKJxxHCOLknZVYQ6PnXVMHDI2DCwCX7V2Ge54cV7nU X-Gm-Gg: AR+sD10QS/thRzrJ2m03F1LzXBPJQCCnY/8WN5vFBRTab1132EzK211+aD92+4GBQ7R eSwFy6ip9ZG+Dez6Wyequ/dsZEMGbFEoOlIOyLY4/YgG0gJQxbeAyqyx90lEhFk3gzJXXhKu/Fn ZL8VtPvbtSEJOWNEvhJb1lyu28sHOaXDQ796BufjAI/HrhpPEVX35n6DPlxO18RXIjc/xFY5rxO lvCKClgDPwEucC7QAYUUoGChuUZtOelNVqEGAa0KlsuBMNrcTzv0KFHjUyxU9j8+/VAiElOM57S 3fLRUmyllfniKTLLNypyOYcZ3E1GG52qLUyqOjcXDn4n568fRKZBwRZHWYwx8EgvdAAhPLHnFYK s5t17TXmMFxCYVCjFCQdxRye4QmRmhekY+ibvuGnnef0v8A8ttn4eUm81V0XANqJo0aCUgua4vQ 9Pcg6DA4T7OzjNeKnk+h+rDBGuwxp+32faYBC496riEKS6YEdbOTWYqpSCPxo25TBHxmQvP0YZn L546Ijpt46AwOEN1+TH0wM720fUwUwQXJi6+cH8xzGyHgRCQ/UQNvbqx/FgaTOwWg7M9o+P85Km TaKYU/L/flV/LW3/8iFfOh8/r0RTb/bOBFTYeCHHAvqYsiqBbjV8bZMJSY/tGEcfUvOs X-Received: by 2002:a05:600c:6a09:b0:493:f783:c46a with SMTP id 5b1f17b1804b1-4997a70a41cmr9098195e9.6.1786462886886; Tue, 11 Aug 2026 08:41:26 -0700 (PDT) Received: from localhost.localdomain (dynamic-2a02-3100-a133-e401-bc8e-d36c-2d08-c5e0.310.pool.telefonica.de. [2a02:3100:a133:e401:bc8e:d36c:2d08:c5e0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997aaa7aabsm1670275e9.7.2026.08.11.08.41.25 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 11 Aug 2026 08:41:26 -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 v2 3/6] hrtimer: Pause KCOV during deferred rearm Date: Tue, 11 Aug 2026 17:41:08 +0200 Message-Id: <20260811154111.64669-4-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260811154111.64669-1-kmehltretter@gmail.com> References: <20260811154111.64669-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. Fixes: 15dd3a948855 ("hrtimer: Push reprogramming timers into the interrupt= return path") Assisted-by: Claude:claude-fable-5 Signed-off-by: Karl Mehltretter Reviewed-by: Bradley Morgan --- Notes: v2: - take guard(kcov_pause)() in an inline wrapper - clarify the test configuration and caller instrumentation requiremen= ts include/linux/hrtimer_rearm.h | 17 +++++++++++++++-- kernel/sched/core.c | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/include/linux/hrtimer_rearm.h b/include/linux/hrtimer_rearm.h index a6f2e5d5e1c7d..45e47421fa0c7 100644 --- a/include/linux/hrtimer_rearm.h +++ b/include/linux/hrtimer_rearm.h @@ -3,10 +3,22 @@ #define _LINUX_HRTIMER_REARM_H =20 #ifdef CONFIG_HRTIMER_REARM_DEFERRED +#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 uninstrumented. + */ +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 @@ -38,7 +50,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; @@ -50,7 +62,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 /* @@ -73,6 +85,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 96226707c2f61..3cbf817f52a4a 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1010,7 +1010,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 Tue Sep 29 06:49:54 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (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 663FC3B71AB for ; Tue, 11 Aug 2026 15:41:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786462893; cv=none; b=boqSBZJoCOyO/o4+4OuL+nr/RamLvqPw+QKXpTrWVmdtNV2b2fVdKJLdBBzrcZ9J2yXW+J8/kp4NlBklmOfsQ82+qcq7NZ+LJUjA0588p4/U+ItiizBQSLHgX8jAm8aBNO26+RvrKVWA8QeBYzud/7U1n3OjqmevvoLLxYxeHUE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786462893; c=relaxed/simple; bh=s2GsF/HuuhqRgEBoKnXETG0xb+lEGpCR6SzR1Bt2wXA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Y3zMCnbMOw/zM90qYbhf6IfqJYvAEyNBuUdUeV9/ekS2yQoFSuCSkQjE5Vps+Kh1czoGoSJDN8iQulJsMHVFSzX1hbsLS+ZDqgJjTLnqFJLtkhQfZgXpFlaDfpTKSg6wbNY1pcGvV9+J4nPboB8HT7V5kmSycydEwMBtlwTlAwM= 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=QikSISeF; arc=none smtp.client-ip=209.85.128.48 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="QikSISeF" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-4921eed3fa2so27683775e9.0 for ; Tue, 11 Aug 2026 08:41:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786462889; x=1787067689; 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=RBg7Waiba/udBzajyRDSpAo3xkVEtASSwhEEWYlwPWA=; b=QikSISeFEBjvNqt1p1DWEyh2+nUlFtevxr0r145g4Jf4oU6OmXmNkveIegfUbhTYTg C5jH1Uzj+AQiO/A+7+oNZwhXPnRYL9ZHAOkYk4deLyDktVU7cxWa/QUUYKksHkBKle9u LyvIq3pqzm+slBxXbg7tZ9io0SiBF72JV4v04zmOG3JzIDxr0YIiGlMBhE79MSkWVEtS itdkBFARoXzLWVoQuHGopVnfGIaq8JIM2OyMQtMKkaMQ4rF2Q9dEbF3jp1fVVfO5bgqh zVXVMKc8DNKgaUOLs9ofebH1HKnZRrbIgiVCn7jqvy7cyL1rog1fhUKkkHl6aWZgqUaK 7N4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786462889; x=1787067689; 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=RBg7Waiba/udBzajyRDSpAo3xkVEtASSwhEEWYlwPWA=; b=UZZOqptmZY8d1XXSdy6STBdade93yQp3Mw8rIO3O/yB3cLhh1m9K86mzTO6UWX6KME iAJH8eCsogZ8bZ2uqCs1xRo6jFlq5VMLV2l7LT9DbBa5lcXczoepja1oSeqqknN9zkhn bJVwCNGu35RIVCua7pKG4vJguIhrAu/7O5bOEHC4zuXiU/Sv/SW/J5IRgBS5jtctu6h9 +Mh15wos4Xjo7nd2xj3yZ9qQkN1zn/ZspHLpdALAyvz0Iv3moqjBnF3QCnqQZdmJt6AP 5r1ylnB3cM8yuin/qR/5yuFT6Q9QmuHyarNiuUC0fS6pAumQp1uFsKyslvdF3OPPYadi z7gg== X-Forwarded-Encrypted: i=1; AHgh+RqS032BUmFCRjlAXEhVH/PTQxXzTJOPDob91HVTnEfNEru5H+v8yfJUsx4peLaLbZVx6/31pYe8nLBwJAQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxnmVH8wGn2TU3bAx+7vtK4ez1yUjDc23ZpqbgERxrGPAz/V/Sj FtyLTUEHJpafPUluVlTNZW10R2KVEYIX3XkDiEWgHu3IjdtYge/5PEZu X-Gm-Gg: AR+sD12HR/0ZbvJ8qcRQFEhdqMD3rZqhBQSQXFikXdWU2VflxuPEza4/zc4AM31Jn8s OKBdEMv0RpO2sH3la+8h4qv20cWXFDtqgBjNCwBnRe1ZAclyjU2UOofPf/qlUNmvSPpF4iNbnBi BYuEU2jN6WSs7exDuswd/mTrdx0lblNyRkn0tZv15nzsiytEyAfBNBVR0HEY50JXYl3/NY29ogh vaUe76gC8xR4HIeuC/EbfqS9nPfqn2BgA8Nh7ogIllVpJOMf3vzo//fgZZluJ0tJqkdWfwSrLvd fgsz8CAQ96QiYjDZfWQwHy/UvK70wn0inPFW3/gISzMQhHX4X4z6qrYSJUgC1GbdgugFW5LqPCk Uljn9slVgBfktA3Z5G4PmdZc8hZ+kn3HLvSEtzhtTDH+kHMq8guZCEIelZO2xtVVoMHYJqzPuBN 6XR/e0e0PpfetpLnpYp/mdd2tceXenxRwn2p0fkIE6W3Cz72tI/kBUzWifO3yL9gMQVhTDHHvAM x7+c2FyeNmfJ1yvVhmu+DK+xbkWPKhtJsfCPktwauCBxPbowxT8AU0JzvIfYtFkvdI+hO1BWg4Z 2JEs9tgvF8yfy9jZIqCm84eYx7TgKHg4z8Q10LkH7or646BLoUixuymgKe1cRfJgMiBy X-Received: by 2002:a05:600c:821b:b0:493:e365:ace9 with SMTP id 5b1f17b1804b1-49978444628mr78764855e9.11.1786462889308; Tue, 11 Aug 2026 08:41:29 -0700 (PDT) Received: from localhost.localdomain (dynamic-2a02-3100-a133-e401-bc8e-d36c-2d08-c5e0.310.pool.telefonica.de. [2a02:3100:a133:e401:bc8e:d36c:2d08:c5e0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997aaa7aabsm1670275e9.7.2026.08.11.08.41.27 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 11 Aug 2026 08:41:28 -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 v2 4/6] sched/core: Pause KCOV in __schedule() Date: Tue, 11 Aug 2026 17:41:09 +0200 Message-Id: <20260811154111.64669-5-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260811154111.64669-1-kmehltretter@gmail.com> References: <20260811154111.64669-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 not instrumented, 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. Fixes: 5c9a8750a640 ("kernel: add kcov code coverage") Assisted-by: Claude:claude-fable-5 Signed-off-by: Karl Mehltretter Reviewed-by: Bradley Morgan --- Notes: v2: - take guard(kcov_pause)() - clarify the test configuration and reword the pause comment kernel/sched/core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 3cbf817f52a4a..e49f0bfa0ca73 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -7073,6 +7073,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 Tue Sep 29 06:49:54 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 AC8FD3B42D3 for ; Tue, 11 Aug 2026 15:41:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786462895; cv=none; b=P4VqJO0mbHkHzdlLaO58sbok3N8RlYhj7Qa4ZmmhVirIuRacOVe8PCLWh9jY4tCeTOsgS9WbhoVgVK1SmSSlgsTQfBZxwLK49sgT4776z4tCRVd63lRir6rWhhYa/0J8arIaHtWiWUEImnK7rnlO2wCUnBwuLte731+euO6nPK0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786462895; c=relaxed/simple; bh=mKSMctdUiHV7v8CKYXwusXFPtIb1S1vJydiBFzUlq1s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Bs4Lb6zWAk5KzIZTqzExD7T/dzm0u3uHZ+3HbRtYL74IQ/q14KjhM98LtODhuF/2GBhwLY8BczNnsU0U7L4ijqYN6y2Rue2kiRR8NG08anKMyq9E0b3r6o6Z3ILJ9wwcQCjtMw4qM06Mw7+Mkfu8bUGvqdgbGISnrC9SVmg5GNg= 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=l7hkGREA; arc=none smtp.client-ip=209.85.128.54 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="l7hkGREA" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-49954b88fffso35363595e9.0 for ; Tue, 11 Aug 2026 08:41:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786462892; x=1787067692; 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=QWD3Va6ASDeIp0J3iCIlcAhU+r4lUSfzKNfJdPGsleI=; b=l7hkGREA4GOoxqsOuT2yri6zNPUmkkSEuzKXL6NcAOP37gf8Vs+F3Q4EEjOuhKHi2Y G7qXbRLtSTkJDWo0aXQkB8r3Dy9XXBkzgrk3fGV3W1KXrRlbfe5QLMbnEoG+SlLMWZci TDAXkX9sYZkGzdYEvw5VchEIjNkI8Da1AJtHo8DqipnwDFivYHE6KHXZH7PdI90D59t6 5lTxC0h1Vj0g9sghw2ioU0zAlhxjm6mED2xvy07VVls/VkS6rm4pAQ6+pO3TjIdxvJzQ ca7r3KKjAR4sxnL8C6+CtWIPZEvzo9ce68zEtRC8jKZE5MjnPJuikKMlmSH7RSeHnlNm ccdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786462892; x=1787067692; 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=QWD3Va6ASDeIp0J3iCIlcAhU+r4lUSfzKNfJdPGsleI=; b=Au84ke33iqLTIbEN00bc1ZFdud4SAX/MkCM+pWlpbJrcdDH6QNiguGmyBR9yaYw4vc oGd1PQ3ZyKCXppe5sQK1cVw16uDLtJt64pvo5XWq8SHeO7pUCbto1y+7Sh4kugZAoRlG ks7isDQ+jYpU3MlnH0nyYqTg5JkbjPw5ICozE6YyolYMHokaTJvoSfn24CzYaSBEtKDG rZZvcnLi7akLwNZD43BMjBD0KVtLZJZGgbHck5FGy6d/d6M9vsyPMyL/q97KRCCr9X6J 8mcO/1VgQ+RsseAZ2pfkK/QjOLDj3PkcXyYjdvCCp2HebKDFAS8kXOD8EMdLqGSwKLSN j2pQ== X-Forwarded-Encrypted: i=1; AHgh+RonRO+CfvQqOqlTkx+3HkiBTnLPw3CpSNKbQk87hzc3cQLqSU8+3QI3kchQnvVKD3TrAluciC+jYtIDRVI=@vger.kernel.org X-Gm-Message-State: AOJu0YzEuPaF9Evjk/xBjoPJhMjnhZR6Dkxhp9s53sCgijitd0Vb8Zx8 S/EXIFS1Vm/8LNOPD9aUU4rpk9QjJY+XGjesTA78Yk6mXwEiwIyxy/iK X-Gm-Gg: AR+sD132zPrno2AIM2ffbzmVPS1q1z5hzkUi6htIzavGp/4qhg/nK6jYbLOAR6qJdE2 GRIP5r1Ks+r8PyHnuPYjfpvsN5TnOF03F70AvGPBFMHEw+fiWDeEL2D/n3uFZhcXBELROJAQIH0 xM4XNDl0Wzm9WHhy3WGAXGxT+Gbyrz+YwojZBUMZia43haEx2HYcesznORzpweJUwfYG73jcdlg BKLgYhgJrfNt1feKPZw3jgXBhEbxFtABCTY29bmGtTk9zU4p83EfGxQXuoTrGbfWO1M2HL2XhSQ 71PPodqnQ0vEsIMjUDOuRhSWa/YuKjYyOlDBljeMXS+86Hf67SrtYN/e3zxA5dSAAA5aCNb1ogG isjJQrO9Cf/Oyc0wldAGBpBrCQEI3yDCM03x9K/FuEcFy9L60TfuHxblZzQtibdvBnkJWNjWM7k oi+RjF5CTqyEcEE3ErqQr7J0fR874j17tWxHtptM+gZ9N/vsa3LhRybFXkehaVpjCI3VMzUBcLl WtFshdfHFSgZS+Kh3jdchrIZm2QDXDQlUO8SBrKFOideJBlaXU/CoAYWyserMY50pgy9kjTrGZN TXGt8JbYdzgnyYY6nVRkrHTEgJpH6DYxNSaPiDA7R/pmkQV8sdGGpgO481DMa39/BS9o X-Received: by 2002:a05:600c:4443:b0:495:5e3d:15e1 with SMTP id 5b1f17b1804b1-4997846c13dmr52811515e9.16.1786462891646; Tue, 11 Aug 2026 08:41:31 -0700 (PDT) Received: from localhost.localdomain (dynamic-2a02-3100-a133-e401-bc8e-d36c-2d08-c5e0.310.pool.telefonica.de. [2a02:3100:a133:e401:bc8e:d36c:2d08:c5e0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997aaa7aabsm1670275e9.7.2026.08.11.08.41.30 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 11 Aug 2026 08:41:31 -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 v2 5/6] sched/core: Pause KCOV in try_to_wake_up() Date: Tue, 11 Aug 2026 17:41:10 +0200 Message-Id: <20260811154111.64669-6-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260811154111.64669-1-kmehltretter@gmail.com> References: <20260811154111.64669-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 uninstrumented, 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. Wrapping only select_task_rq() would miss SCHED_HRTICK arming during enqueue. Fixes: 5c9a8750a640 ("kernel: add kcov code coverage") Assisted-by: Claude:claude-fable-5 Signed-off-by: Karl Mehltretter Reviewed-by: Bradley Morgan --- Notes: v2: - take guard(kcov_pause)() - describe the paused wakeup body precisely kernel/sched/core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index e49f0bfa0ca73..e863fac02e38f 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4253,6 +4253,9 @@ int try_to_wake_up(struct task_struct *p, unsigned in= t state, int wake_flags) guard(preempt)(); int cpu, success =3D 0; =20 + /* Instrumented callees would leak coverage into current. */ + guard(kcov_pause)(); + wake_flags |=3D WF_TTWU; =20 if (p =3D=3D current) { --=20 2.53.0 From nobody Tue Sep 29 06:49:54 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 02D0B3B71DF for ; Tue, 11 Aug 2026 15:41:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786462899; cv=none; b=pln2cjt2VtwQJ0zGGv0P0+BtBGvVytFtpaJAWmUBYzPxPgkCP287PMN6pWKIvVnBSEOiXx2AAT9/rXzO3Ieac8jtF2IVhuKcPjaZCStDzBwfI2zz6KvF4uoZsDIAPDtStcTxIB0P8lsOxpwvgRGD5022NwjDObuYNv5MN9hfTOI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786462899; c=relaxed/simple; bh=9jk9XjA/6n/fxs+YT4/t3BnvsbOeRFkLd3nOBibWNAE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hQQ8SWZUaHcJVSwTq0Uwa3tjwsXrqlDSkE0xkufHQqHvDd7fDfsI0V0e9ZBI3zKZKl6/J776+YG68PIR77KG199MNpNiKIPnA6NyEpUkzzJk3uqdgVwXWcueIEMem2a0YJyKojFIN4O1s4prrExmEB8XTzdcRKMmYzi5oOHhdLo= 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=pTA7mXgb; arc=none smtp.client-ip=209.85.128.42 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="pTA7mXgb" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-49553515a8bso51486385e9.1 for ; Tue, 11 Aug 2026 08:41:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786462894; x=1787067694; 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=bxCk87oJVTgaexDQI9eTOLL9u4+8ey5QmMeaUWHcbqk=; b=pTA7mXgbGdzJp1cPvUCmXrlZBfU+vQdp24IRBWpg1ODjor42wCfNZBa6rg5J4v/TGy GcZO6sK6AiFKtKPes9UMZ9M6kVA3TwSWWCe5yjh0x0JAW7cBB/3VTdH4J5nAgQprHU8Z ghnoRespKddsfIW2MtZZEqszA9XxSDJF+c4ZYMRQaOS1bdd0sKyHSKptb+7xugr77NjB Jm+bWYqOD87T5HmOcb5icQ97BUTv5fBEdB6tiiFIDE1IomxOcg3njCgy+GIQ5RdORRO4 JdzRv4xFkAYAz4uOokiJxYkbJRzvQ+3bclDdE8XJrD0iNEE0onAmxfoB5QA70bVWYZcq LvUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786462894; x=1787067694; 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=bxCk87oJVTgaexDQI9eTOLL9u4+8ey5QmMeaUWHcbqk=; b=A9iu/gG+scnAq+5sgfTlDp1DpUkVxxVT4YD9fPIMSHRRMP6H+ATyMQ/A1Eqla2/d4J mERft018vSb95BHuzbk8TC6nkQ+sC/R+TRiNZWhjUnfx5jyG1pun4zOxsqL4roP1a4DO gLGqX0bxJTpC6bDC274n9tLbzpTOMb5/WqXZ+OILgzNewqeoAYTGclzmlbCWH/P6pLJW tn0mPxlxroVvnphl59aNGsyYfRS1T7/9UJHbrd4F67nbiVPRNh2vam71AH5y27Fv0nca GdC8M/rShX6kWge4q3JuZWxPkL0fqyzxRnVDmwOusX9VnUcEPgIY2Gb3VMijphhtfpX+ wzXg== X-Forwarded-Encrypted: i=1; AHgh+RrEDEvqOBNhS95paKIhaLyIzo1R3ShXcrWoOtxOEwfFcR8VyvqOgCgDSAxDeRtXLcjN8sGHxvW8B2w7s00=@vger.kernel.org X-Gm-Message-State: AOJu0YwE9N/X0rwOJ9OjR11j6c+HpELY/mEJv39cSsHCO2gTv3SI4xkJ DokUssYUJGGiHTAHbeh6UFRGa+gxU8fZ814pinK6H8HS7W57YYuf4woE X-Gm-Gg: AR+sD11VkbExXcyBZMPiOKvG4Jzzil+nLCZes/9RGJBIEhVlIKTwSuS4BKS3o+vqiLZ hLYocBhSOcZDa+cCobtyu7tZZoRcYEbkH4VSG1jnVl8EKW73eJgsVOfpxTBdkf2BYc2fUI+60ud zzfvsoqZHhMvkQNh75/kzOd472jPFtymh49c4jDzfFCYmliXWNfIKmnOvfmhrPOuIBTlJGFV9vM zDKrZ3hEn11bA/tHDJhySr49xtVjJ6pgiUqmNntCMcCZiHKEhofARvOSxJVg86mrbec/noa5NRR hu8ZJerb2+wdxPSM9aBgNeJW1QetOA9ubk+SBNkR5edb4CdGeixl7agdwB4KxB6giVXlneIqscT L6fwJOlMUuOW/wMOD++RfD2OJRcS5g5l9/W+bv7FjBcylY6nVUwyMXUR6cwNnXL3r4Oy4Q9JUL+ lGVn/aESf3Ne9v10Zp3mc9C3We58VT3ihooQy/pzeiQEz5S6p06zpsEPIDOJwZ5qpXZz5QmtgzH UpSw4MfBty+NHCawXpe6dpWZ734pYhvjYxjiOgjLBLi3HnYHROplAJo2k/vA1xjCIwLgKUnXZP8 tTUe/txbyuTlyUa+B7ydhvchLcNNCWW1LfXl8FEcL1LKC4wsZdlcxzGzSVz61BNZDG3c X-Received: by 2002:a05:600c:6088:b0:496:ca1f:a428 with SMTP id 5b1f17b1804b1-49978475c11mr75566165e9.19.1786462893952; Tue, 11 Aug 2026 08:41:33 -0700 (PDT) Received: from localhost.localdomain (dynamic-2a02-3100-a133-e401-bc8e-d36c-2d08-c5e0.310.pool.telefonica.de. [2a02:3100:a133:e401:bc8e:d36c:2d08:c5e0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997aaa7aabsm1670275e9.7.2026.08.11.08.41.32 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 11 Aug 2026 08:41:33 -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 v2 6/6] sched/core: Pause KCOV in wake_up_new_task() Date: Tue, 11 Aug 2026 17:41:11 +0200 Message-Id: <20260811154111.64669-7-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260811154111.64669-1-kmehltretter@gmail.com> References: <20260811154111.64669-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 uninstrumented, 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. Fixes: 5c9a8750a640 ("kernel: add kcov code coverage") Assisted-by: Claude:claude-fable-5 Signed-off-by: Karl Mehltretter Reviewed-by: Bradley Morgan --- Notes: v2: - take guard(kcov_pause)() - reword the pause comment kernel/sched/core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index e863fac02e38f..f7ddfbbb5a494 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4947,6 +4947,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