From mboxrd@z Thu Jan 1 00:00:00 1970 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: 8bit 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 --- 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_mode) bool is_switch = false; unsigned long *switch_count; unsigned long prev_state; + unsigned int kcov_paused; struct rq_flags rf; struct rq *rq; int cpu; + /* KCOV: sched/ is uninstrumented but the __schedule() callees are not. */ + kcov_paused = kcov_pause(current); + /* Trace preemptions consistently with task switches */ trace_sched_entry_tp(sched_mode == SM_PREEMPT); @@ -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); } void __noreturn do_task_dead(void) -- 2.53.0