From nobody Wed Sep 30 13:36:20 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 8C5283AA51F for ; Fri, 7 Aug 2026 20:50:46 +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=1786135848; cv=none; b=hYAXmi9vrZlKy+bDkq9WBoLhfepuQAA2UeHeqZAq1HST18DBVp08DvXAoTPtxeSkHsxlCovRACjQy9RqVcpym5fNM6OYAzVjc7c2TqOW2CUH/ulfmUX5Cmkk3UP4qhweNrACwa3TYQbWakotecVqUFbYaYxgcqTvYXjGXByh43E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786135848; c=relaxed/simple; bh=KE7jxTTIl7FxzfHujrUTE+iKc46R65h25NsolEfdIoE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=eVcSUggjCIPOgH6LK1hxy2Wen2dA9AMAC39Q+Os+0cde/F5em9/h+cgejeLh8tD3powd2LswSwiR/rI3qq5oWzmSkSvmO685UqLiokIuN4gzOxa3DXmf/DejfVk/mqKfejzPMghndoFY/rVZhrmqj/34NL9ybytVKQATZ1PT43Y= 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=eM5UTuYv; 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="eM5UTuYv" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4994c49f588so24504725e9.0 for ; Fri, 07 Aug 2026 13:50:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786135845; x=1786740645; 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=XWIpuYzBApl8zv9n7HJKMhE3qiO2DjOnCastEYJNAc8=; b=eM5UTuYvcP5AFQ6agd3kA0cXDAZ0f9LyEVivRfKHp15PK/XGmYxRlnUsJMPi3QYfrh GxZgky8lf4Q11ylXf1tSh0m6k2l9D7FDne4mwdgTU05oONYyMhnEuRpflIOebXgrJMz9 6WWK3JLffXzhvRzhKo9WtOKzfN2pjcshvveS9A8pL73AZLe6dALg2oexyQovkODCl48n edC6ecBI3DHFTBY1xsoHNnGSTjrVhT+AJt92NANI8bhMFtsJlXvaL9HtwmT86EWSnkgt FtsvJQGvvFzTn8p7whIxSxDfWczCGTfSP+6im1cDJKCjUiFCuIpjTkErisPHt6k8kW/4 2BjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786135845; x=1786740645; 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=XWIpuYzBApl8zv9n7HJKMhE3qiO2DjOnCastEYJNAc8=; b=TYe5H6QezsvWVc4R5MPVUMR4L5397kcVGYjfzQn5pGdvDjdVtnnLriFTbpDM/nzIco 0lzPnlYJEX+jRMXPZMt7s0BOB3EGJ4IUW2PtSfvULovPAA4Rc4Cnb4NaQtoXJ+aBnruG 4dTht1ck0Hqs69/l79b3bG8ZcNmI90uCYjnP9wYeZJAqtW422yL5BqjQsStTj30GCxi/ 0Qw4W+aAB6jMYtVrqv8rAAGPdYBCgcyByS3px9M24cg/VNfktMCWmNUG6/qYZk1h4wRk CkJvinmhtQ8fZ/ycMJ21uMG0Abt543suXARy2YA8S16z4OzFNQ11RYibuB/FF7G5o01A 2qJg== X-Forwarded-Encrypted: i=1; AHgh+Rrh1Zc0RoqU80PrCqWDKd/FllhaeOzVxxgvDaf7zPRWH/nphfOI8eACAPunD2qXe7ZYN/3f9mYPb46EEng=@vger.kernel.org X-Gm-Message-State: AOJu0YykaATbTDoEZnpLegHYreBW2o+BuVgoEY1Aw9VGzzw7xd6eAYM6 KlQIzjLk9Cwp+bETYDqLCKcT4fv5kx5CRzSrQJMlIPyD/BpLZvvRCB4K X-Gm-Gg: AR+sD13NZWwuk3YRALyPhi6ayK2ihMPtctBPzzBLqphSF5kzqMGMFI5GTTbssy+aMdc hS1vUr9Xo89FMgpph7ZLf/6UGj/oudycuRUPtShgZCmqd8TcXMsLXm4Jik281CJ7SB6j6d3rL3z 4FOzMOVN2tjjzhsvbenNOPFinwRlMhVItkMOmIaFw9ZCX4UnaCv+4ABljJLb8UN18qzUgFZJ5NM EI6pJjZXbjCE4LiZOnz452donnYe+fFkr8TemhBnAVJSr0fcP9qC2gdcIQZXwxQWzqXHRGfCjvn olsiH4gc4QHMMkljNfHB6Nj+1tx7c69rrWGa5nSMCCeZUqZL9O13dfwTrUmc4cMRlfBtMTQjDWy EPefANeJ6n6tveGNmUggpMtPTDFcjwu2L7+EsRFP/Y3STpHM+/3tRGHDGjY8L5olgRdfswewsw6 RSgoL3/sa+3vehJZ/iOMm+xUa3JtF/CzSzQuGVm9SpXd0zU1tsvdadTzANCLGZcomVCC7MpgRdm Xj6V10C9jau0IUl83X03oVUPiYUG2yCXYkhaktJM59UrQa9tVJQQwLnsTdCeGOVEBhS+mt5OVE5 MuTIeAq5PK/q5Z6yQ/Q1graSOwV9M2u2Lrtx0eBPIEjgzjjeYqAult0RnY2pmnbrnrzCbeiJ1+K C664= X-Received: by 2002:a05:600c:e549:10b0:499:59fd:dbfc with SMTP id 5b1f17b1804b1-49962453c96mr11433955e9.1.1786135844596; Fri, 07 Aug 2026 13:50:44 -0700 (PDT) Received: from localhost.localdomain (dynamic-2a02-3100-b105-e101-a437-493a-4de9-ee3e.310.pool.telefonica.de. [2a02:3100:b105:e101:a437:493a:4de9:ee3e]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499542851d6sm192408105e9.12.2026.08.07.13.50.43 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 07 Aug 2026 13:50:44 -0700 (PDT) From: Karl Mehltretter To: Andrew Morton Cc: Karl Mehltretter , Andrey Konovalov , Dmitry Vyukov , Alexander Potapenko , Marco Elver , Bradley Morgan , kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org Subject: [PATCH 1/5] kcov: add kcov_pause()/kcov_resume() helpers Date: Fri, 7 Aug 2026 22:50:23 +0200 Message-Id: <20260807205027.31972-2-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260807205027.31972-1-kmehltretter@gmail.com> References: <20260807205027.31972-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 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. Sections nest by passing the state returned by kcov_pause() to kcov_resume(). Both operate on current. When task KCOV is active, remote softirq sections save and restore the complete mode, preserving the pause state. The helpers are __always_inline, and the caller must be uninstrumented: inlining does not remove the caller's own coverage callbacks. Assisted-by: Claude:claude-opus-4-8 Assisted-by: Claude:claude-fable-5 Signed-off-by: Karl Mehltretter Reviewed-by: Bradley Morgan --- include/linux/kcov.h | 25 ++++++++++++++++++++++++- kernel/kcov.c | 2 +- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/include/linux/kcov.h b/include/linux/kcov.h index 895b761b2db1..5a0a1a9bb7ef 100644 --- a/include/linux/kcov.h +++ b/include/linux/kcov.h @@ -2,6 +2,7 @@ #ifndef _LINUX_KCOV_H #define _LINUX_KCOV_H =20 +#include #include #include =20 @@ -23,7 +24,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 +40,25 @@ do { \ (t)->kcov_mode &=3D ~KCOV_IN_CTXSW; \ } while (0) =20 +/* + * Pause coverage for current. Pass the returned state to kcov_resume(). + * Callers must be uninstrumented. + */ +static __always_inline unsigned int kcov_pause(struct task_struct *t) +{ + unsigned int paused; + + paused =3D t->kcov_mode & KCOV_PAUSED; + t->kcov_mode |=3D KCOV_PAUSED; + return paused; +} + +static __always_inline void kcov_resume(struct task_struct *t, unsigned in= t paused) +{ + if (!paused) + t->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 +114,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(struct task_struct *t) { return 0; } +static inline void kcov_resume(struct task_struct *t, 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) {} diff --git a/kernel/kcov.c b/kernel/kcov.c index 1df373fb562b..83d53e383822 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 Wed Sep 30 13:36:20 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 24A273C3459 for ; Fri, 7 Aug 2026 20:50:48 +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=1786135850; cv=none; b=YlLt4Z0e5CjMyzELdRlSdzhIYQW4c7EAeyM+ha4C90up9EVIb1Vq+Tz/oX31cZv4ks8nVi6PgDYEhIe22AmmEhvr/7F2WM6auIJ0NOoXGs2Sj4h6wE2iU4Z/IXFGNdMRXP08U8NVYFjydBKWzRHNMB45ZoFOa3lWdOOHuvQqKds= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786135850; c=relaxed/simple; bh=KOYg+Pv290TZMNk/QShSD00q8YL33RcIolzJODdsXv8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=a22e9vO39o5fTW2RTz9BO81R4+q1CwLYB4YvQb9YFOV/k7MAOKoyJBJh8gPgyhkZUHeY9ID++muuzhXnMY4MCeU7S7oXIFsHoWelB0zMBTYSaIVpQdK25IKqpfknaloCiMyhOyJejs+X1vJgIqKNiBfaaXf6mx1gjL6p5pIEC4o= 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=AzWapSeG; 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="AzWapSeG" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-4954a2e73a9so23541855e9.3 for ; Fri, 07 Aug 2026 13:50:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786135847; x=1786740647; 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=hQ3DafFqgnmpQY2l1YNbgVGcuwBaYHrzebpedzGAFHc=; b=AzWapSeGTXzKH94uTFkUKiec+DTc2qwg65j/b24x9dwHWAjlqJmHyxvyWRFVmTjsVV oqrpv4I38m+OBGCyLLKCp29v33BXqLviBk75DD7HLhN4Gf3p6oieUluUaREnhTNwkJHp 63AKC93/Ci1mTR0vycbRMREcjyBfMq1r++OuuONjDGFTZ4z/jZ6GN9lvPoGSaLjDlpS5 kjft+TTf/uD9wiDPHfeqk1f/NiiL1zJsDdp/8d+0/JxOCg0cFuWX8vgkWFFgC/E6ZAzf X9q6v+QSv3hWJak9cEdL60ARimyb6AeXUQQdQ+whhYvsFFt1XovBwwJcdQ/3gCzpthtb DjWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786135847; x=1786740647; 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=hQ3DafFqgnmpQY2l1YNbgVGcuwBaYHrzebpedzGAFHc=; b=AJCFDuboi9tdr8BDhmi5JniMv/AUgDjOuMJNxzi16RPyiWhX27QAAkdOFVX5FcBTeA WEklTwDjFg6RueYw8XnQ2FXRECqBkOv+0Z0/inNYSQOSN7N47cd84y80AqtnUfBH1UhL E56lH9m5M/vNSmdv669zOSOnNA3fpFwFnGiwNAqfmJMLd7EmQ+fzGsJMdTVTFsh95NAO YDxmbuvm26DTREoFIBZY4uWY+2Ks2rycqrloAG+Abuusv8UJxN9MIuPUBR049shiNVsu BIEGAxzPxly4gReHov6qEnZwMuVlN5cryafg3Q/JViWHyTUXXtuP+tQDR1ExgOn02CtE iFjQ== X-Forwarded-Encrypted: i=1; AHgh+RqTPvcyk4dc617VlNlUrEfn96QreXtkAQb5nXJq+GbcJS5jWVGgas/XPKV+ztq+HrHQaZ+RSWUNihlqEkg=@vger.kernel.org X-Gm-Message-State: AOJu0YzaNZ1JdBWWJb7HKc3UxzM9kQtLk2hSuxlWtpbKH7XDwlC3CDVN KnKgdAcsX9TXsDiteAUUZl/U9kmts5dPJQ5ZrGSxRVSYfLNXNbNcr9rU X-Gm-Gg: AR+sD13cQ1TqPNltbsx7QNfyz7ABE9aae+kwbp3JTYfBJs6OkRXeop/WfK44Z7K+Jwe 0FZfLofO22cxgYPH9qzDW4A/VYvnWVNH9oLAOnvoaW0knXidD9uXor8cmuP/UkKW7hxl8ela+o5 M9YahGjTcfoPu2xRY1RVEnTZydK4VdkYQcmtuv73+XcF5CSdMABirBweqoWfjmDsqcfJ6D/obMC UtFXthnwfg3dSYEkOjCSzdkxQOTYcdAM1GldbrViCa1svy+QAJvrVuc6j5hFT/e6h/VACWoD9dB fMmIPkbTQFm/sfzWeZsWjWPOrkxOfLSsVA6GXw1ktXN9lhYzBI625FQoejNI3OxBMWzucZLS4iK S2AQZk3jGiaKBDYOuWCVf3VPiLjFJevMaLhLQXvRy4qyjNk01OJ8Xh/oGqoskhulKn5DEDkxf0a YLJNgN1ZyWl4O0ngaGrQrZ8xGZ/e+hqJlxfTcAyI9U/agxf8lPa/+Pi8G8yOoUade3rRKlXRj/j rTyPGLqR3zIrcdfjVGji0BcVsfdIPVhyfmRpuODHe/47R8P6kcnd8sIRHuLplCburQSmHQyatQK rSp3Jc2tS710el/9ShytDt96Oz6OCGs3neSUHEunAjprmjPapZqW0VjRTsB6BQpC4NCc X-Received: by 2002:a05:600c:4455:b0:499:50ec:a3fd with SMTP id 5b1f17b1804b1-49950eca404mr300209385e9.19.1786135847025; Fri, 07 Aug 2026 13:50:47 -0700 (PDT) Received: from localhost.localdomain (dynamic-2a02-3100-b105-e101-a437-493a-4de9-ee3e.310.pool.telefonica.de. [2a02:3100:b105:e101:a437:493a:4de9:ee3e]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499542851d6sm192408105e9.12.2026.08.07.13.50.45 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 07 Aug 2026 13:50:46 -0700 (PDT) From: Karl Mehltretter To: Andrew Morton Cc: Karl Mehltretter , Andrey Konovalov , Dmitry Vyukov , Alexander Potapenko , Marco Elver , Bradley Morgan , kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, Thomas Gleixner , Anna-Maria Behnsen , Frederic Weisbecker , Peter Zijlstra , Ingo Molnar , Juri Lelli , Vincent Guittot Subject: [PATCH 2/5] hrtimer: pause KCOV during deferred rearm Date: Fri, 7 Aug 2026 22:50:24 +0200 Message-Id: <20260807205027.31972-3-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260807205027.31972-1-kmehltretter@gmail.com> References: <20260807205027.31972-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, the interrupt selftest fails on x86_64 defconfig 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. Pause in the __always_inline wrappers, including hrtick_schedule_exit(). Call sites where task KCOV can be active are KCOV-disabled or 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-opus-4-8 Assisted-by: Claude:claude-fable-5 Signed-off-by: Karl Mehltretter Reviewed-by: Bradley Morgan --- 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 a6f2e5d5e1c7..b95687529c2e 100644 --- a/include/linux/hrtimer_rearm.h +++ b/include/linux/hrtimer_rearm.h @@ -3,10 +3,23 @@ #define _LINUX_HRTIMER_REARM_H =20 #ifdef CONFIG_HRTIMER_REARM_DEFERRED +#include #include =20 void __hrtimer_rearm_deferred(void); =20 +/* + * Pause outside __hrtimer_rearm_deferred() to suppress its entry coverage. + * Call sites where task KCOV can be active are uninstrumented. + */ +static __always_inline void hrtimer_rearm_deferred_paused(void) +{ + unsigned int kcov_paused =3D kcov_pause(current); + + __hrtimer_rearm_deferred(); + kcov_resume(current, kcov_paused); +} + /* * 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 +51,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_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 +63,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_paused(); } =20 /* @@ -73,6 +86,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_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 96226707c2f6..b6a8fbbdd538 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_paused(); =20 rq->hrtick_sched =3D HRTICK_SCHED_NONE; } --=20 2.53.0 From nobody Wed Sep 30 13:36:20 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 711D138331D for ; Fri, 7 Aug 2026 20:50:51 +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=1786135853; cv=none; b=PHKikV5ByR6xbT9REoU5pdIXAjBZ8mRgbjRpalkRjMun5pGvsdqVQZYMZSaIZWPbupEWxVMPlRVm6iJwq5cACdL2TNzCp+RbM8d0EzAyWhT+5QLJXcmjlMdWDXubmbVl28pU6QLLDUgCeA/w27Is2LmHlkFX4PrHZJhfKaGf82A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786135853; c=relaxed/simple; bh=1Wvn2ASWLpJa7OdFAItl1XmdMGylWkPd9KvxclX6aCU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Nq+4l370R+NfyLu9ax+HCWS+kOa8v164PqhseqQp37a115hoADiz1qlKbKkPtF5Ec6dITb3rGhvQKOQtviT+kaU7jNAbl67HDGGZVGxMBOllUgCy7i66Su/HkXQbWuK9o9Ov2G9MNxKRosOFs37j9DD9WcJdorQ44o02PoqDLmg= 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=hZdxR0dl; 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="hZdxR0dl" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4955de8797cso27053795e9.3 for ; Fri, 07 Aug 2026 13:50:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786135850; x=1786740650; 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=njg7D0dr+It8+AFbo9bscANhjCPVN3AOqB4SRqfNs/A=; b=hZdxR0dlYwTF5agE2QiBe/+YucZe75ARZ8pB7dfkwtcofIjaE8HxsgaAruihf2bVn5 XP+eKe0YerT7ERi5hC27gYFieJdxqkU/s4ofaLe7SsI9oelNUrd7shm8DcLJiTqdyqgt K84a865c7QXxAB+ED+UN9RD2Pv/rXv+zSrULykUG4xThHt8L4kvt/U7ImpWT4XwnCvWz AQ+WcbdN8uwJAf7nO4RKSO0Jj/ytADUZkzand+JhFrSuVAavqUW9g+Cchd8P9W0N3q19 nQOp9pNIKkLJKkYXVTpJMJIkQRjXJOO1IXjE8YXtiJD3GMjLbNAUBObVn0U9BHNV9Kem t7zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786135850; x=1786740650; 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=njg7D0dr+It8+AFbo9bscANhjCPVN3AOqB4SRqfNs/A=; b=PSkzzCxy9JQKY4ehrgUqaIP010YU2dPcltrs6E2sQaB350qlcJRgCXAWpNtZuRVORP 8V5H2n54IhwW+1jZrCH2hGz79wNSb/zI8rrlX4USyHCohjcfMuND8vd4ZeQysdPYHirH T+muPAbQ/2tXOTjJhYbiCluIzXtvSH2T2EPXk/E0NLRqTLf20e3rNdl1B2UuDN5/z+qZ iOpP79AqApY9jtb+yV2/O4uEJkXyjcvUPqQsmA+F+SQf73PtByfxq2hMKJwZnlCAf82+ cNkxerinZiAP2IGlzrXhWf9bEzx0sEyZA9TXnoVKa6J/nRjPnUF0871yXgaeFbCMoj0I eEKA== X-Forwarded-Encrypted: i=1; AHgh+Rq7JOFfArYJvGNN8K97dYoW8IUbWuxaIGmyYX/TXL/gQnXdSVDfdbwl83uWKHY/5FCwNYH7Br7jfscAsj4=@vger.kernel.org X-Gm-Message-State: AOJu0Yyd+0QXtenF5AlObW+LzCCB5MFno38CeE0qOpXOsn1KRaIpp7gH 1fDkM7SBPbW32Bo+6rV+32QpjMWPybscxWxIKObVpW/WeilIF9P6t00D X-Gm-Gg: AR+sD12oYUKGhEGOp01pXzqkcCmxoXjNIRAVSuKxn7eUxCuwAqFVUckPCV3mLE1RZPc iOOHvz3pbAvr0hqghQPjvH4baUYXuGpNlyCte6wgvrClnuiJrvYK5LeiiBSRg7XOAWZ5cXqF8pr t7tfmYebQsdFtbxnv/dW2waxJH2P4LcWd9omayn2MD/Kz44O4XFSJAin4NuGIBYzT/vdNgP/CGF OC5P+qVB/K+Rc/IIJUS/Xi05nF8S63cf5D8jrWLMfaCKghE79n6fFhnUn0IGeiYBHV3MJSJqnZ4 VAGhBSWDYRaweZ9AlWm8hMOV3MAfVhgAe91/sORcEqMcoa4cjo3DV2NciNtqgxzJh5zeL3RKy3Z PrNqTV2IBvo12TWULvv1Y87L1ls6fkIl9AgVO/6cDJaEascRKWwotCprXNSTDMRVyqxn34UifXN aAz71GEalDE7N2Ap2kdxfuCz+VKlSCGfp+rXBguDa37NUf3bCufuyhbfnffGmHyTvFcuKY6Pr90 N1Y6srNQk5twttDPbYvG9dofNYEJvC3vsNMiB8gYAOioWMwwSZ9pFgx5mYRjBtEqg6+cKKBsHp+ x6i1twmvBZA06uVV++88IdJ331TyStrWYb5xp9XriMVaXys3AlB6+yKf0tTOkOcSfs6+kw== X-Received: by 2002:a05:600c:3b29:b0:498:261:dd93 with SMTP id 5b1f17b1804b1-4995e0eccfbmr82030555e9.18.1786135849566; Fri, 07 Aug 2026 13:50:49 -0700 (PDT) Received: from localhost.localdomain (dynamic-2a02-3100-b105-e101-a437-493a-4de9-ee3e.310.pool.telefonica.de. [2a02:3100:b105:e101:a437:493a:4de9:ee3e]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499542851d6sm192408105e9.12.2026.08.07.13.50.48 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 07 Aug 2026 13:50:49 -0700 (PDT) From: Karl Mehltretter To: Andrew Morton Cc: Karl Mehltretter , Andrey Konovalov , Dmitry Vyukov , Alexander Potapenko , Marco Elver , Bradley Morgan , kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, Peter Zijlstra , Ingo Molnar , Juri Lelli , Vincent Guittot Subject: [PATCH 3/5] sched: pause KCOV in __schedule() Date: Fri, 7 Aug 2026 22:50:25 +0200 Message-Id: <20260807205027.31972-4-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260807205027.31972-1-kmehltretter@gmail.com> References: <20260807205027.31972-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, the interrupt selftest fails on x86_64 defconfig under QEMU, detecting spurious coverage in arch_scale_cpu_capacity(). On arm64 the same class of leak appears in sched_clock(), once the separate arm64 interrupt-accounting leak is suppressed. 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. Its resumed __schedule() frame restores the prior state. Fixes: 5c9a8750a640 ("kernel: add kcov code coverage") Assisted-by: Claude:claude-opus-4-8 Assisted-by: Claude:claude-fable-5 Signed-off-by: Karl Mehltretter Reviewed-by: Bradley Morgan --- kernel/sched/core.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index b6a8fbbdd538..d5663df6c702 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -7069,10 +7069,14 @@ static void __sched notrace __schedule(int sched_mo= de) bool is_switch =3D false; unsigned long *switch_count; unsigned long prev_state; + unsigned int kcov_paused; struct rq_flags rf; struct rq *rq; int cpu; =20 + /* KCOV: sched/ is uninstrumented but the __schedule() callees are not. */ + kcov_paused =3D kcov_pause(current); + /* Trace preemptions consistently with task switches */ trace_sched_entry_tp(sched_mode =3D=3D SM_PREEMPT); =20 @@ -7239,6 +7243,7 @@ static void __sched notrace __schedule(int sched_mode) raw_spin_rq_unlock_irq(rq); } trace_sched_exit_tp(is_switch); + kcov_resume(current, kcov_paused); } =20 void __noreturn do_task_dead(void) --=20 2.53.0 From nobody Wed Sep 30 13:36:20 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 C81F5331ED4 for ; Fri, 7 Aug 2026 20:50:53 +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=1786135855; cv=none; b=XzNnfU8Iyp/1pBiuD/cMRYTicg5NkcN8iY7DWAvYR3j5xA4DGnUVPyfCdJpxkcbREWSmFnU6mtjRc2KLBsVTl31pD26kaYmTIaPHg5PJWYwFXb8Ln3IzdMLiqcVCtuxrSDwwCssSVf6y25Cahi8PY6tzuoVBa7Qtu1wpednw9Cs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786135855; c=relaxed/simple; bh=ovBootHlmPwMO9Q4aAGQU97zSZBvoeOXU5XO8Xv0k+4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=taEOOQ0OUbs1CUgAKXtN0Z7IalXD8sQQOz6r7EcZzlDzdnDPY5ROrmTS5pkxyStDPFkLKBK/gonxjvUg3U52uP4AvYf+vJCHw8CGelr5DURNnNH3mDqGUkF0/dsU3qvRu66u7aU4XU6E4Pa6YbW+NN5xHhVZZ59kJ7wxYJZDXSY= 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=QL2rIumA; 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="QL2rIumA" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-495590dde14so5475e9.0 for ; Fri, 07 Aug 2026 13:50:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786135852; x=1786740652; 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=I5BZy2hwsKHXRFfC3cUWApKwBxDn8y4JzUdYjcaPm6s=; b=QL2rIumATxgYkdIPuT6p3YL2DOD11Lx2cQJ9tsMYL7skSJPVcxyHJ3SvClgt65Oh4b jQO2T5W0fbrYkNX7Er2+7btvS/JIOwlnuYZsBSJWYaPP2vpHB1lQL9VCpdKfy6OxiV+o 9P4fsyxleBSig6svcYqQnaScRXvTIbGgfwZJLxaGJWJDM/ZtdhL7dwI3MGS2WAChrtYr FkyKNyzvBH19CrbPwhQcCdyNiFs5SvLKOTX8Ute3B3tD7Kh3R/3cOUPNNTUC7uDl2mTP p7+ky6iJTGmJ6Idu7R3ucqkTXHdSr6NqLGN45PV8yriTLrJK/LIuPjlfKp8y4eH1eGKC xnUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786135852; x=1786740652; 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=I5BZy2hwsKHXRFfC3cUWApKwBxDn8y4JzUdYjcaPm6s=; b=GCSfpJe/Nf1+Ge6u5EocgTySjwIOSIYrsdzhviRBR/zoED81RAA97ybAIZ+tjHlKSr /W6quK8AR0oYE0fIZxZ+usWG+SspF/yQUCE4uPeRlGaRwPcLwsr/cgGCNNYt+y8IyT4R MTvbdqKYVh1rxfjDLatgZhV0jZWp8kEA/ThLnRGY83L0geIpv9mtSmBfRStsuYxyIs97 q/mta9+LirnJquky48m5lU4xbYdJ8Ybc9p23W2fYmQn1KHPCt+6LypiRo9uce1Gcubbj muTrhA6kYSpk1IqBXRm13+JKNy6b4EjlPia/iROXqn9iH6C3nt0wSBxjGzEPDJW9eSgi wnnA== X-Forwarded-Encrypted: i=1; AHgh+RpHDmpUyqFPx7YFRVyYdyBei8c2/DP/L0Oa4Ob9nBN/C2bvgglqkIvw3AJ3LyNWf42ks/JRz3wdSFE/r84=@vger.kernel.org X-Gm-Message-State: AOJu0Yzkk3IBbfiPYLFVGroI1Ovxj2PysOy1jijEj03vjXK6XdV7U3bM +gt/dqGZNpNwTg9kfnChf/ciEbgi3GqlMP9jRzWqCX5Ui4outSkyCR2w X-Gm-Gg: AR+sD10N1ZNAeUGBwYFa+s0EUYJ+5omgbLikGEQyQYMni8F7C6eZFscQ0L1MDpPYYdF AViMHu7X6AiEkZegvj1+9htnR527XeXX/aIpiOhYhpuek7biQ8gAKUpldbi1N6qvpzmXT2vCH3h PJsXvUQT4nanK/bBJ6+JTKSaq6HXvMWiwTmfGQsxUpxCWrdockWoT7hti4vXdeTvwTRwlrV6Jn1 yJiiLQptL9wK8K+AkCk4l2lafP0p9JtxPMSZGRqMgXNOaoi7GgxY88FZe051YK32iXAsKurR+eM UAm+VS+cQ+JqQe7zlp07RDwqV85d8kr3FuWrL5a/xQKmGNEI1pZmjSbuatGC3tuyiLanWRDtsE7 08QuRG34tJ1tAyXr8cVcI88KNK15dNTUbp3Qg/RSgaHVuTmHfA2+2yX08I0fjALkd9jxXlvQk34 5gKkaRb0lQ0LhN5Gf9Kf5gLX75NsM6aO1vpZh5JLnLwKOu0ZJJSFfQxgMTiSe5uH2ILe/EEXbPI FPCYzo57idBJr69MUvxKg9F4rglIruQjOpLdwCEGhSdTKxintFVrU5LW34ooLDq1zvXzH/LadCd 1tObXdyNeLuPNKK8LVFi1AuxihP7SiED5Cdx7N6Sq39xQlPLb5zb9OijxG13GvovE9Uc X-Received: by 2002:a05:600c:e549:10b0:495:6934:414c with SMTP id 5b1f17b1804b1-4994e7df489mr277825025e9.19.1786135851912; Fri, 07 Aug 2026 13:50:51 -0700 (PDT) Received: from localhost.localdomain (dynamic-2a02-3100-b105-e101-a437-493a-4de9-ee3e.310.pool.telefonica.de. [2a02:3100:b105:e101:a437:493a:4de9:ee3e]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499542851d6sm192408105e9.12.2026.08.07.13.50.50 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 07 Aug 2026 13:50:51 -0700 (PDT) From: Karl Mehltretter To: Andrew Morton Cc: Karl Mehltretter , Andrey Konovalov , Dmitry Vyukov , Alexander Potapenko , Marco Elver , Bradley Morgan , kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, Peter Zijlstra , Ingo Molnar , Juri Lelli , Vincent Guittot , Steven Rostedt , Sebastian Andrzej Siewior , Clark Williams , linux-rt-devel@lists.linux.dev Subject: [PATCH 4/5] sched: pause KCOV in try_to_wake_up() Date: Fri, 7 Aug 2026 22:50:26 +0200 Message-Id: <20260807205027.31972-5-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260807205027.31972-1-kmehltretter@gmail.com> References: <20260807205027.31972-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 all of try_to_wake_up(). Wrapping only select_task_rq() would miss SCHED_HRTICK arming during enqueue. Fixes: 5c9a8750a640 ("kernel: add kcov code coverage") Assisted-by: Claude:claude-opus-4-8 Signed-off-by: Karl Mehltretter Reviewed-by: Bradley Morgan --- kernel/sched/core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index d5663df6c702..1e562a7ff0af 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4252,6 +4252,8 @@ int try_to_wake_up(struct task_struct *p, unsigned in= t state, int wake_flags) { guard(preempt)(); int cpu, success =3D 0; + /* KCOV: sched/ is uninstrumented but the wakeup callees are not. */ + unsigned int kcov_paused =3D kcov_pause(current); =20 wake_flags |=3D WF_TTWU; =20 @@ -4418,6 +4420,7 @@ int try_to_wake_up(struct task_struct *p, unsigned in= t state, int wake_flags) if (success) ttwu_stat(p, task_cpu(p), wake_flags); =20 + kcov_resume(current, kcov_paused); return success; } =20 --=20 2.53.0 From nobody Wed Sep 30 13:36:20 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (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 ED9693C3C07 for ; Fri, 7 Aug 2026 20:50:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786135858; cv=none; b=eLYYgvfFF12x4EhBPlb/rERGLuZYpjAm3NsJmjUQM/pfoX7LmaEQl3Gx+1L+xHT2K1vPplnAr5Kw/gKHhuAEbfDsBSscO2ieFb79Vyx8Remf7/BmENCeq4+z6j14DCHI1jbeveO9rmwd0K2/k8E1TCvcOIrBLnQ0qLn7biuN9vk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786135858; c=relaxed/simple; bh=eK6gxh0PrWK7VsKpmMgZQcl+aLVZeIwU2Ow4g4kNWbw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=VitF7ZtiJd4eOcPprxgByl9MChz+ecR3ygzicV4qZoCIxVmx88l96LH+pYT6vjwKZQIVXuvVuCjJBqrVe6OGMu1FjUj0hllJF5VnfA0wKH5tge6Sx8rsdIbUxTDi8/FaUxNhtTd7kq0Y1FLTZDuIT4U/yNipKRaCiTQ1FMX/uh8= 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=OFVN/0mc; arc=none smtp.client-ip=209.85.128.47 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="OFVN/0mc" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-495437bb891so21852245e9.1 for ; Fri, 07 Aug 2026 13:50:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786135855; x=1786740655; 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=mN5O1Af9WzWgmjLRgH+EEsczjyxiiiTK5giyw6cTCX0=; b=OFVN/0mcI5LVdFPYIT/Fk2yo+40wPIKBQf8qwvBaFQUOyGIQWDjB4Wlmkrpuq9We/K VoxU+5NlCKeGRiR9Q5wLiwC9jr3xnzPboSLlZUKyczz1wsUB43qupjANjFxXCOLaYjcr 09+BBewBiRV+FfSlL+48ZJR1YHIcieX6NSAOHTd0kQ1ixVZZdjGpeJ1ooL/Qpo+koPh9 jPnAGqiHMKcAOBageYK3pVq4m8D+S5RmpVIgCzJuOT7QNHFeAiwrOuuzDgYSDJjgPPcd DLaRXjyu7BvdbXnk+WXRTFBYhwxlbdFVd2xZMsmbciR0OSXhaFY3Wl6lgtX4CZE01eb5 TC2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786135855; x=1786740655; 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=mN5O1Af9WzWgmjLRgH+EEsczjyxiiiTK5giyw6cTCX0=; b=NB2aTeGRhJzsC6+Z/E7eVHCxiTPU1/T/YkL1W7l6wv5k6h6hg19X3rJ3Tc1ZsxWnU4 3/cqem484H8BhrMOaY0NSF6ScqFKQnVNcqts/e4qndft0XomFwLu4zTCVR1sEHIaGFaw ugWe1oS3gJmaqYgyP0Q80xgZaqtDoH5I0MwMeMxYUtY7pi/oFshmhQNlnQ3kZLk28BT9 hqkd5bsaMM3SF8hoikaD6Y4qHI2+BdbLAeaS4KVeA8HdIuGBtTL4Jn0PXldeLgRcvcRO o5i40SryfT8gJUzVbl7RObzTb/fkvAvtd1FCMmLEGAgIkDmPJBu4LFzG97BduBTYmhTr 5DpQ== X-Forwarded-Encrypted: i=1; AHgh+Ro8G7Nka75QcbIjcHo8jQU9JbCvAzq+qj8k9tCfvrifb0ZXPDhriI1bPL9kpEtxyB0cO8SCm/TTyMKvrvw=@vger.kernel.org X-Gm-Message-State: AOJu0YxEsgLM7baebpy0c7pMu9D1JT22EfMFhicDcucVykHRZeIXFzrk WKK1hNRwkwpxGjGamV2/5hPMSO+uIy2jh93S/HEl9qkbDW+A3FqnP1E+ X-Gm-Gg: AR+sD120Ke9YPAjjCXkiOEQfYXX2Cwm5LonERVNjC2/nyT1OOe+fqJdvtV5eBkv9zuh +GwU6OOi3oEyyT2VyOeaf+wI8aOqctROWwnMLkg06lWBYdJdrgHeX7nw4QfAGyYGaK1QPyVkt9i d3WxwuIdAfuybKyLNa4etCKLzh4I/UWIDtD6CFJBz3yUDEK6cruGRTbBU+9UvloKJ7YXLoTTdQv oys5X6rfSgKnNOoPkWOrJVpbFucO458j2OKxr/PV5Vb9e2sC1kz6KFiJQu6GB4jW8hTYSw3tyho nOUFhiNqmXltC8cA/6Qy+4faeTUeiny8rH9X38whXFCvfLAHSXSrYUfj93A47KdoyGouWI95Iu5 QOwRF2uBYHR9FYmsPbLuw8Binssi1kRVqmhBPfr4WlG78EwasEBZYFD1p+kcr+To+FyC6SoKYuY UcxRiBtwmckivMAFthzHdqhX4ACe49JcPzPaL+OPeYSaRGQugpFuhWdlrXNsLxfOhL+AbIvnooh I7i/VNF8SxGkX6gc2AQczJKFvj6A+XCGaCeNncztlzPwvmy3r0M54U6ZnuhqWtfjiX3/A3wB3UZ tfgtrOg+O30p45hrNFhxfyuUHIpLkxElt2cEVTMIDFjVRrHdJq7cBM4UsgBFCBZc5bM6 X-Received: by 2002:a05:600c:3154:b0:495:3bc6:d381 with SMTP id 5b1f17b1804b1-49962453c45mr12874425e9.2.1786135855016; Fri, 07 Aug 2026 13:50:55 -0700 (PDT) Received: from localhost.localdomain (dynamic-2a02-3100-b105-e101-a437-493a-4de9-ee3e.310.pool.telefonica.de. [2a02:3100:b105:e101:a437:493a:4de9:ee3e]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499542851d6sm192408105e9.12.2026.08.07.13.50.53 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 07 Aug 2026 13:50:53 -0700 (PDT) From: Karl Mehltretter To: Andrew Morton Cc: Karl Mehltretter , Andrey Konovalov , Dmitry Vyukov , Alexander Potapenko , Marco Elver , Bradley Morgan , kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, Peter Zijlstra , Ingo Molnar , Juri Lelli , Vincent Guittot Subject: [PATCH 5/5] sched: pause KCOV in wake_up_new_task() Date: Fri, 7 Aug 2026 22:50:27 +0200 Message-Id: <20260807205027.31972-6-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260807205027.31972-1-kmehltretter@gmail.com> References: <20260807205027.31972-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-opus-4-8 Signed-off-by: Karl Mehltretter Reviewed-by: Bradley Morgan --- kernel/sched/core.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 1e562a7ff0afb..cad1b01063450 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4945,8 +4945,12 @@ void wake_up_new_task(struct task_struct *p) { struct rq_flags rf; struct rq *rq; + unsigned int kcov_paused; int wake_flags =3D WF_FORK; =20 + /* KCOV: sched/ is uninstrumented but the wakeup callees are not. */ + kcov_paused =3D kcov_pause(current); + raw_spin_lock_irqsave(&p->pi_lock, rf.flags); WRITE_ONCE(p->__state, TASK_RUNNING); /* @@ -4976,6 +4980,7 @@ void wake_up_new_task(struct task_struct *p) rq_repin_lock(rq, &rf); } task_rq_unlock(rq, p, &rf); + kcov_resume(current, kcov_paused); } =20 #ifdef CONFIG_PREEMPT_NOTIFIERS --=20 2.53.0