From nobody Mon Jun 15 10:46:55 2026 Received: from SN4PR2101CU001.outbound.protection.outlook.com (mail-southcentralusazon11012040.outbound.protection.outlook.com [40.93.195.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D96573195E4; Thu, 9 Apr 2026 16:23:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.195.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775751841; cv=fail; b=ZWygd019XzvUoxLxns69iU/cnG2i7uO2MzzN90r3YLla6eGSM4bkbaGk2yEFwbBDeWql2DuB9QkVgY/HUCm8VoCpHsE7my86f7qYIGEZ7gl1j0A/CGvVg0Tzn7IcMjIF8nQhuRUQgp5PRl4sJUFeVixpnTtwscxxhxGeHoqE0cc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775751841; c=relaxed/simple; bh=XqOOwA2O540R/+z3T/cgCynSoBnXgQ1C7Mlc3PVFsww=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=e3aqr8l7uJxpMuhp4Y0G6B1cW+ADLF0d3/T190UvCRu4elDv9svU5+8IkiN2RNVCArwEd1EgFXKYbI6JPmQc0lRRSAv7hzzUgk19z9HEw4DOx1cTI+2dGPDAgyD8537Lr2JVeklM48oGLaqPBJ7h2xhZdciQJQRlar83fx6vwKE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=gBzoj7sL; arc=fail smtp.client-ip=40.93.195.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="gBzoj7sL" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aRGwupv8mMuFdZuDm1TWVBcB7cIGihycOEg0rQUzHxnT0E2VxPtJkRObniPp/MpM/piJ5Os6xRYP8oRmzl4sZ7NvqTQaYNiH1wIcAKpePOaXxWGbwQRevDGYpSwAhSRd+z6tnqvCRKRNLwN2dzZpc7mD2emh1eIvgFnMi9ecED6rYJxoYHOVGmyXbdoXypgjAuIlKaDMKzfr8q/BuNn8oz8c85H8LgWCmsytWk2BDkOvgMcKfcb9OXVkL37vA0aK2xj1r2WQ+np+ZJ9JYNWrVMAsGjihkypib6A1ZkypUsuSuK4K2L1ewQiHJFGkyjs838GFaRMiQ4qxrFj3ig4Nfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WLL6aRD4HGzaTrkcI3J9Ug2WWHAUoWWG/0zIx96prg4=; b=cCOI61mwEdpkPXyjrQ9GOrdJhnqUmlUQNBzoHM8TDyj0u1PUGABnxOXacNRMVqL/vKgVF22L6l6aR3Aj7toA6pSyBBRXiTajnJcZp6KhMxDWa6SLywc2dQvjJ7K5hsQf/4wNc7L63EimnHWVyjWgzs3Ck/voh9A4t2gVScXaRve//5nwUfUoi5W7bc+P0rhSH8JCfk1YILthK623XV2AjODp2gFAwLSxiOjPGQSeGkxxG46MXZCFhUrKv6vruuCryF8eazj3h0n4qcf41ngZxkH3dylEwT2fzd9yhuAomMGQJs8g4ygWtj8xSmPVYYmO8Ppb89yZbzudn5Oe7asryw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=infradead.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WLL6aRD4HGzaTrkcI3J9Ug2WWHAUoWWG/0zIx96prg4=; b=gBzoj7sLn1lv5nZg8u3bGDkbbx4L4FtOBYSfaG4fmgRD98KMWHv+3Np1zdMF4b3bKgRKxOZ8pEA1AbLvyQkFXQz2izQLGn8X6dQg0gklidZZrgoH24gIhMXUoRcWEFPh25SpdXzFNl+wBzAYlrZNjn6I9ybUGsgY4FlnlAVubMA= Received: from CYZPR12CA0009.namprd12.prod.outlook.com (2603:10b6:930:8b::24) by SJ0PR12MB8090.namprd12.prod.outlook.com (2603:10b6:a03:4ea::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Thu, 9 Apr 2026 16:23:51 +0000 Received: from CY4PEPF0000E9CF.namprd03.prod.outlook.com (2603:10b6:930:8b::4) by CYZPR12CA0009.outlook.office365.com (2603:10b6:930:8b::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.42 via Frontend Transport; Thu, 9 Apr 2026 16:23:51 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by CY4PEPF0000E9CF.mail.protection.outlook.com (10.167.241.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Thu, 9 Apr 2026 16:23:50 +0000 Received: from tapi.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 9 Apr 2026 11:23:46 -0500 From: Swapnil Sapkal To: , , , , , CC: , , , , , , , "Swapnil Sapkal" Subject: [PATCH v2 1/3] perf sched stats: Fix SIGCHLD race in schedstat_record() Date: Thu, 9 Apr 2026 16:22:47 +0000 Message-ID: <20260409162249.25581-2-swapnil.sapkal@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260409162249.25581-1-swapnil.sapkal@amd.com> References: <20260409162249.25581-1-swapnil.sapkal@amd.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 X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9CF:EE_|SJ0PR12MB8090:EE_ X-MS-Office365-Filtering-Correlation-Id: 857b31a2-6471-4602-e2f3-08de96546284 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|1800799024|376014|36860700016|82310400026|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: CVmUwS89YwiQB+vcQXTOlipLIYTkimxsgv4CuWHQCjGIKLeajysmMjlm3nrZMdqsstRjK4eRq/ZttfoSSOD47imjvsvo8WpR+K16vtTsYVa0MbtNnxvy0eOhcnnFPZa/2lRxp2/LWRVDOdGhe/NH9VAYFBe2DlctlTGiNC+impjYwOMPYDHI/X8bjmNqPbD5JHFbkM1/mjklhXBh8Wnh1v5pYQIEgZaE+blTk1mZ2XrYm8/PmclE8ZL1wV64w53u4bRnFxXQ9U8ymJB6Mv0+p5cWKao6jdgqwZQilLuHY6VmypSlnNt60gzEJDwuvf4o+lr1zJMjVBZr9h4yI6KMdId7TDCXwVJJcQqG5TktQXmCiy9g59uR0FB7cCqfvkvcLeEDmWTK4MhSlf5YuFPousCst1OSj1nj22n82LyTvL6GE1o81Vub6uvIAWqXFWjaaDTcx6kdZyuwySBBM+JHwm87g0s5ARKLHXHgpNn714XuPMlWkLPVYUC24qs1q4pNA8Nf8uMLpfT61pGbG4MIP7ZJA10sP7j7va0tFNWXZFEHTers1EWj3ItamT5z8nbeP0PGMd1r4v7D3HB7b/O6C5pqy98NUt4BT7Y3daMLxsQ4/S+NR63qQgPSSfcn0ca7sqxVRFLaY1uHmCuMUdfpIjT/NiW4JUUbbJFmq94MH4WPXgMN+d69mibOKKOUro3Yg2/9FRWWjy3xC3u9Co1v1a7Zb+z1urHEHfy2KVC8D/52HTaeJbNbph4IQ6ZlEJsL+YLrPWlE7r2dkaL/zuRHYw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(7416014)(1800799024)(376014)(36860700016)(82310400026)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gzFGtgxSGU/j131/Om4jPoC5FCkgdD5dQRIBHSC8mVj9asHKEjc8Y6GNSx5ReKo51hHVj5LSuPRNHvKoKczsU+EqFiJrvGa3+gWZGMF5SUD/f6wIDc+wHsE7GdrQBUF770UW5ewFOjS2ZOhDyhO1KnJIvsLCGhA0Wn+v9EJ3z7Hs0ztCO8CpT2/RistTpx3iDC+WX9OrIKibVb2S6JDDT1vqmq6sEcCVkNp8ZRH30zU8EkNDbByO507ub09/bzBD6iBmx1MXMZwIZt3GDEWfpuWsBiri48kmHywGX7OqO/dTXtDYixP40BWKOeH2N3Bo+YLzzy+H78fp8gM9qOofH/XAMnxUvuA7tFo2uHRUdEb4m6QepesYDgDo8Rnzymc6qiInC07DLbhwVMBwlVsZ0Lh/ex5cm7DA0ywKXTDagUYvzBwjkMs9H5277ee0k11A X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 16:23:50.6644 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 857b31a2-6471-4602-e2f3-08de96546284 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000E9CF.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB8090 Content-Type: text/plain; charset="utf-8" When a very short-lived workload is used with 'perf sched stats record', the child process can exit and deliver SIGCHLD between evlist__start_workload() and pause(). Since pause() only returns when a signal is received while suspended, and the SIGCHLD has already been delivered and handled by then, pause() blocks indefinitely. Fix this by blocking SIGCHLD, SIGINT and SIGTERM after evlist__prepare_workload() (so the forked child does not inherit a modified signal mask) and replacing pause() with sigsuspend(). sigsuspend() atomically restores the original mask and suspends the process, ensuring no signal is lost regardless of how quickly the child exits or the user sends Ctrl+C. Reviewed-by: James Clark Assisted-by: Claude:claude-opus-4.6 Signed-off-by: Swapnil Sapkal --- tools/perf/builtin-sched.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c index 3f509cfdd58c..3f448acd5046 100644 --- a/tools/perf/builtin-sched.c +++ b/tools/perf/builtin-sched.c @@ -3807,6 +3807,7 @@ const char *output_name; static int perf_sched__schedstat_record(struct perf_sched *sched, int argc, const char **argv) { + sigset_t sig_mask, oldmask; struct perf_session *session; struct target target =3D {}; struct evlist *evlist; @@ -3899,11 +3900,25 @@ static int perf_sched__schedstat_record(struct perf= _sched *sched, if (err < 0) goto out; =20 + /* + * Block all handled signals so that a short-lived workload exiting + * (SIGCHLD) or an early Ctrl+C (SIGINT/SIGTERM) during the remaining + * setup cannot be delivered before we are ready to wait. sigsuspend() + * below will atomically unblock them. This is done after + * evlist__prepare_workload() so the forked child does not inherit a + * modified signal mask. + */ + sigemptyset(&sig_mask); + sigaddset(&sig_mask, SIGCHLD); + sigaddset(&sig_mask, SIGINT); + sigaddset(&sig_mask, SIGTERM); + sigprocmask(SIG_BLOCK, &sig_mask, &oldmask); + if (argc) evlist__start_workload(evlist); =20 - /* wait for signal */ - pause(); + sigsuspend(&oldmask); + sigprocmask(SIG_SETMASK, &oldmask, NULL); =20 if (reset) { err =3D disable_sched_schedstat(); --=20 2.43.0 From nobody Mon Jun 15 10:46:55 2026 Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11013005.outbound.protection.outlook.com [40.93.196.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA0423E1215; Thu, 9 Apr 2026 16:24:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.196.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775751859; cv=fail; b=jKlK3sAtPR4EFC+JUCqZ0dTsSV7rVRkuUg38S196KgJXsdbVJPSMXrYhK74jxHYL+gw6o+ra5k4+jCvUOu9q0536Phe3K6d96PGOokB3i3s1Sif4ruDSF6G949zf7mZX/UIjNERU5pWdIYbEj++qM6VmhIRLgDy4zJpWAkS7UkQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775751859; c=relaxed/simple; bh=Qvj5JZRg4yjzNJpMLLEwzOGMhmJYHkxSGxy3sPTpyD4=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=t/ElAzR5r//rZp1zqj5ZH5AEXvQnxoHNqI7IHKeTQzNTJfZFM+QFmAz0QGfW91VTKlBR0fvCczHb7Z1mpYM2tdTOB8VEkbvbqcn7uu6Huvn65cbq6cXCPNGU6bg543ECL+kniHVp6aCMw4Mvhi5AsN/SVG0gpVWDCTrTrvvDM9M= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=Iq2ECHGY; arc=fail smtp.client-ip=40.93.196.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="Iq2ECHGY" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ufSUBqYEVKAiv8et1m/ESR9gbRUbCzCgWllqxpZBIvF4/S2VbJDp7yCHwRfhsk/E4K4LgnzpJ7Snz4jaQQ+TyZZ1xPeIiOzprTcpRX0JpGrr2XfqKGoGpN9tzAXNfs5BNzSyo3xiDo3EtZUXamlkF4bpPipjXXBmyth6tthc3wWXDbNfRiucC5U5ibDVmeK+zdElR5TiKjWMvIU0YPeafXt5l80OZwdlTntrRdkjHyHKwTzw6EDZ/YFUKmirnrwhPvhbpf7PZ4YbUswKgBIK9GGMDf+aK6B24EQN4736xIzxUIgH74SpRWhNIuxlnTwPaLUtDYV6IarbTCu8Dzxmrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aleptZDEZLeZNu4y/ZELmKG3gtKm/T1aTEelSEFRqXY=; b=o2OHC3cDGrFqKSfACL1+yC8Pdk2qCqdmp922HSeGgx8RKI611W15taUtDuNWji5jzInwmQsQmEoWTkUha8AyAIB2DlFlwYEqvGjRGn+Wxg/agzy4oqvTanbZSuZ+8r0lYKrIQRNHs9StfRFknDlQRXWP8ZddTwMbVwMBJDZ8Fga7IGpYFiRNQ8gGyQ+g5IgOniR0ONcVWgZUvy6LGbNqXhCz4dm0YE4D5eB2or3+69NvRGL+5+kZiKibEevrVXh8Pf4lIgQ1jLo8oDMrpfO6/XoqlvytBrGfazYyjPMwfVAz3bYaYIj2V97oQ9+fCVg56BhpyFUYUL62hNOXM0Ie2A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=infradead.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aleptZDEZLeZNu4y/ZELmKG3gtKm/T1aTEelSEFRqXY=; b=Iq2ECHGYeNCr/YySVefztmYn1kN9+DosJbd5+z/OkyC+xHuXdsLlvKLmCGXAX8sDCQf7oKZnu5ZFaRmzhkKeATSCvXxbY3Sypxq2l/iUCo5+iSy6GzQzgYkHCiAXpwFvWzGpx55loMq2Ib7uNiZe9O//VyyVxUIPN+Ha06SL7OY= Received: from CYZPR12CA0007.namprd12.prod.outlook.com (2603:10b6:930:8b::25) by SA3PR12MB9198.namprd12.prod.outlook.com (2603:10b6:806:39f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9791.32; Thu, 9 Apr 2026 16:24:07 +0000 Received: from CY4PEPF0000E9CF.namprd03.prod.outlook.com (2603:10b6:930:8b:cafe::1a) by CYZPR12CA0007.outlook.office365.com (2603:10b6:930:8b::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.41 via Frontend Transport; Thu, 9 Apr 2026 16:23:59 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by CY4PEPF0000E9CF.mail.protection.outlook.com (10.167.241.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Thu, 9 Apr 2026 16:24:07 +0000 Received: from tapi.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 9 Apr 2026 11:24:03 -0500 From: Swapnil Sapkal To: , , , , , CC: , , , , , , , "Swapnil Sapkal" Subject: [PATCH v2 2/3] perf sched stats: Fix SIGCHLD race in schedstat_live() Date: Thu, 9 Apr 2026 16:22:48 +0000 Message-ID: <20260409162249.25581-3-swapnil.sapkal@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260409162249.25581-1-swapnil.sapkal@amd.com> References: <20260409162249.25581-1-swapnil.sapkal@amd.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 X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9CF:EE_|SA3PR12MB9198:EE_ X-MS-Office365-Filtering-Correlation-Id: fa7ae8b1-37b9-4ad4-13e2-08de96546c6a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|7416014|376014|1800799024|82310400026|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: UA5ASPCArJXgKAMqIVtXnnjXogG9QwFOHMZQ96bSXkBOtyz1HEkNIDvz6y1tGFWu6ItPmDtVaWXSPol9dz07YOEgPuwlgkAvmzwxHaWv8E2SgKh0Gt/Fk1GyY5vItTSmSx8wk9+LmXgowb2qgumolUV1LhMtI8VJIMlY1zuxZ6UtZMQyVuK4HR9NwN8GLZDp4uIIzs0d6QA92RUfRnKytVdPuJfOCk359y+VsXkKsXJpHGJTqs/zPc+NalBoJmYLrwgGSp11o6sJHd10a4rGwBjk9yZgvtZ1wm0ysjskiXT9C1hPZlbJzDfhWSyCC0t+8/isfhCsruEm3YOExooU5BW5b5mjdrlFuixv6RR8PIM6hgnAohOlcw9aOrdDPLYSEEY3Z8LrPp4M3bnL3Huwk2xeppFuzsCCz6qYSJbz4SEHhgAGbZyyVXFaKSc5csc0Dg8rB63pOo80cFTGL5dfe3EB4YAxdw9ysLYxk9SmwLY0fJOEp9TbYFZvI5H34ralW+S/15m8Jjhxau9pc0YoefOl64ue9jWwZHxS0pJAanoCHgNj1/AcA5dyf0eY/W4eHeEio/rhJxCzgtPxMUtKFairKUM2OUkdDtEkzlCLqnqoztZjXCqua/nhMdw7gDX4VJUBpjhbE4MvaJfC/CK7/CnZgdumLG3mYdE9mdrVlZCKoTzS7RDScsaxhbhTj96TgmKRO9QSlRHI7OaaLQcDjIGuFrpyyG7K85JS1zbOFNgdLNUh1SCL8/MP6g3gtpywmWG19Hh1BW+RaAp8093/ow== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(7416014)(376014)(1800799024)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 50y8dcsyFnHaj/W+JnSorqA/JqTPyWjV2nl8F645jl733EbDLE2A+KbMZPl162ku9iRpIGW0Iv3ND9JTLtc0fIOEsr7UqSZzH6z6UYgYH8wh4OdZvhW3w68IJp0ciE9moCx5ESLlCZQbAfIylbAambRCmOrXJOHd3r66kEeEjOxxAaCxt3RMDLiVTy57ZoMhXBqqF/8hJYqG+KiFwHcFY0Y9BwXArvPxiJMZchJhSg60B870zueciDvx8t5uzxvsqK2hBskBmVKc5UAUeVic5evOjT9cxMO0ffx3dGOyX3tmEN3pejjXOgWd+0S7nEe9iDHw4l0Ji7wji0ZoRCxvbUmdL0RZQwHoIp8hRbh8VD1etnAW4AHIZE1hhVF18jf5IE6bAUOpgwhww5/3OD8Fdm4GdZCsF64LxXTUo9yu4f0VZem+L1cORS1zF+eF/wfn X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 16:24:07.2648 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fa7ae8b1-37b9-4ad4-13e2-08de96546c6a X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000E9CF.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB9198 Content-Type: text/plain; charset="utf-8" The same signal race that exists in perf_sched__schedstat_record() also affects perf_sched__schedstat_live(). A very short-lived workload can exit and deliver SIGCHLD before pause() is entered, causing an indefinite hang. Apply the same fix: block SIGCHLD, SIGINT and SIGTERM after the workload is forked (evlist__prepare_workload) but before it is started (evlist__start_workload), then replace pause() with sigsuspend() to atomically unblock and wait. Reviewed-by: James Clark Assisted-by: Claude:claude-opus-4.6 Signed-off-by: Swapnil Sapkal --- tools/perf/builtin-sched.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c index 3f448acd5046..c716dd33a9c9 100644 --- a/tools/perf/builtin-sched.c +++ b/tools/perf/builtin-sched.c @@ -4653,6 +4653,7 @@ static int perf_sched__schedstat_live(struct perf_sch= ed *sched, int argc, const char **argv) { struct cpu_domain_map **cd_map =3D NULL; + sigset_t sig_mask, oldmask; struct target target =3D {}; u32 __maybe_unused md; struct evlist *evlist; @@ -4702,11 +4703,17 @@ static int perf_sched__schedstat_live(struct perf_s= ched *sched, if (err < 0) goto out; =20 + sigemptyset(&sig_mask); + sigaddset(&sig_mask, SIGCHLD); + sigaddset(&sig_mask, SIGINT); + sigaddset(&sig_mask, SIGTERM); + sigprocmask(SIG_BLOCK, &sig_mask, &oldmask); + if (argc) evlist__start_workload(evlist); =20 - /* wait for signal */ - pause(); + sigsuspend(&oldmask); + sigprocmask(SIG_SETMASK, &oldmask, NULL); =20 if (reset) { err =3D disable_sched_schedstat(); --=20 2.43.0 From nobody Mon Jun 15 10:46:55 2026 Received: from PH0PR06CU001.outbound.protection.outlook.com (mail-westus3azon11011050.outbound.protection.outlook.com [40.107.208.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 40E4F3B7741; Thu, 9 Apr 2026 16:24:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.208.50 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775751868; cv=fail; b=PkUyhWThiCrVBxlZ8Y9QNQqlpfsUjP84yUzlTJNUIzMUq8nOKmLlGC2cuYyKKSzvL7UmWBLEc1GRlsR+XWh/6es3XW/dFisjPgs7PQxZNivbb+gQKApIFxVc20NaHpvJg7OzbOXktdC6KXUsW3Gx7853fuc1T870cXZPmbiolcc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775751868; c=relaxed/simple; bh=pnMpT4EPrQH4EJCrLQFruax2rX5spUH8T0dOROqNHWg=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=nfwQzAu5G0OrvjEpiOcU5o6T3/A2fE+88lZU2PqjONyOPEoNUPrBzoSPGKRGdWyIgYs6eaFk/8gObE2VGWQ6jSX4kBErhrCXhnoFGHTAUNHWY2HuKYjqeuuis9IuBXHbUShm7SzW6xHpXZhRhasqLY/gJsw9GNB2XpLHjSrs0fw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=IU6OX5D3; arc=fail smtp.client-ip=40.107.208.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="IU6OX5D3" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pst8FMKi33mDuPk9TlfmuqUxj7d3ShqB3w8X+Inf8UT4KPasjRCEfiCPEo0Xj9uASIlE5dymPvZ20+81/lS0MY8th+lrlFx44IBZNYAO1ZxZT7Uyf2+Q7S6XzjON+UffveBF9CKRF/2hoYv/0jGn5FwfiP/Rgj3QrbmVc48GgUPBVe8YQHEXMj4tUMmGr+IAWAk1SGVxQKTtmrd6xeTM0xizPnGcrHywIfMpkmRLoP22CjoFgxZEsomHLUOQgv7Xe0195ogVGiKG57B3QI9EscjWVdiNFGflKICkx34YvOl6ZKJW10Zg27birPe+bJqO5h6tRiGwpZGgjmEcCHJjag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jOPQVgEX3IAUTL1lk+lhzKwBcc4pVmZ3u2jjMypyq7Q=; b=UOplxYj5hxTE1OLUbT4YfzaiTWYKCUiLbXqvxw/5vdLj3Ma3WYM6vYTQLqFb9dYBRar8D5rWJhWDE3TDQrCSUTTW0+nVGzLw4luSdMFxdlONnRpsZA0FkaQwRr78NMylF4OIWZWQntyUFnqDcsmziYJrmFzD35N13NM1jIYv1GVJ7Z8+AIun5c+c/qbh0tQAg6Kfc/oNmOIQrHRvc/BD7WahinsVOmb10q1b9TM1yRHjzW5l9xmhldfDZZzHhzZLf6NE+MaVraBMwqe4i5mUISrwXMGlndezVOB3BCSwOASx2xk1ws6NZVmSRtb24NfUpjd2MEI5TAAjwjzzdCTelQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=infradead.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jOPQVgEX3IAUTL1lk+lhzKwBcc4pVmZ3u2jjMypyq7Q=; b=IU6OX5D3/CGhc/sckBYPVgrjtwVgnkvM16pquikO1CF6TPo+scYgm3buojEN31vYxEgK6WzDw6Zrrm/dN7mkl+ZDhmukOn6R7aVbLXyPrMUdcjaENAlghEXFo+ny1EhEp1pxDUT2Gbxdx/Oxv5JMncisBibq973Uji8RT0pye0I= Received: from PH2PEPF0000385D.namprd17.prod.outlook.com (2603:10b6:518:1::6b) by BY5PR12MB4226.namprd12.prod.outlook.com (2603:10b6:a03:203::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.19; Thu, 9 Apr 2026 16:24:24 +0000 Received: from CY4PEPF0000E9CD.namprd03.prod.outlook.com (2a01:111:f403:f912::4) by PH2PEPF0000385D.outlook.office365.com (2603:1036:903:48::3) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.35 via Frontend Transport; Thu, 9 Apr 2026 16:24:24 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by CY4PEPF0000E9CD.mail.protection.outlook.com (10.167.241.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Thu, 9 Apr 2026 16:24:24 +0000 Received: from tapi.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 9 Apr 2026 11:24:19 -0500 From: Swapnil Sapkal To: , , , , , CC: , , , , , , , "Swapnil Sapkal" Subject: [PATCH v2 3/3] perf lock contention: Fix SIGCHLD race in __cmd_contention() Date: Thu, 9 Apr 2026 16:22:49 +0000 Message-ID: <20260409162249.25581-4-swapnil.sapkal@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260409162249.25581-1-swapnil.sapkal@amd.com> References: <20260409162249.25581-1-swapnil.sapkal@amd.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 X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9CD:EE_|BY5PR12MB4226:EE_ X-MS-Office365-Filtering-Correlation-Id: b50dfc76-28d2-4a3d-7cf8-08de96547668 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700016|7416014|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: oujGb06ePkU1TqBidBB/K+8yty+Xev7rSpu9BwbyFq4LFyDG/+5weLBbfzUsPwJtyETbXXcNmo+J3dawHQxbQ9FgtNN4jDM8tixtjTTM61VgW6QGK43MpbAxgS6ScRiC8SzYTAlvkAvlmm5lINcILekT6qhX6w8WQ239uYCPXUWaaoLhhKberWxJbXLX9zhmvrHUkHQi3NlsuErmOtWsxPcgl+y+rrOgfM+6HxrZrrMUFhuFGGuuhpG8Yxm48769j+VMRGsSYe5ioMU3Jx4leQq+4CtENuMxbJlj2YY7g8S31QA0psb+wb1jG+itrAYSPK0TtbEbaGyMfqGNYVg5UcWAGGGdyjGc8PRMr6zeBf65KO2wHgobAWwFDgYGoBtH+5MSm8ZzWOsCqgfUdChPfp7U8VgTJNYXE+e7/OA4xrLRUCzMpmvRpj56dFuUwypEGCCqaUoiKPSnwufip73H8CUOyZvn4WqpYJl6T6/k/QmP2n4VAEti4g0EavVwXoTWJiGhrwmTvqyVPBEtSOSgtHWsH7HdAtIrJ/ELzXpuSxs2CA/t4e2jk6FCVWUDDm3JBB3i02HEKtCGLioNOcTSqy1NBPjGmj03o91bbPwjw8HbjrwrUs4sr5TERK3xXBpilGGfl0oJTy1OARtBOINsKh+2x6iEdMe1j7OnARdBcZdiV6FXbf3nQY9tATMn0fXy9wABKOSifuQtpuJ78ve0rm2e4QtCgssIdwoyfnrpsoirbtXgll/5FHbHCxrT0npbtnVMJJoaNIM4/TV361q4AQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(376014)(82310400026)(36860700016)(7416014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: cjQVKalLrILW8uC3q2ga4zyGHccvKJP/snaRAYoyTNVSaWE3SYLfptqhM6/ouV114yvM7DedkqA0SUo4yqlpcDes6CyA9uWCAfy6u0Uzqmlg3T6T7zLp0eNRqMTJDOiPwnhN9bpHwSFZzN9UVNEV8Mc6Cxt1PAxdH4ddgK7KFFj9k70WU0KlHmOwq5TxuP/nTgOhVLTBxhO0Lp3cc3IhE5TymnZ4amWzolpJFzIRRDHtduPxN6/hv/gtSPk2+18LOnP3HV2MFWVrRTg8rtfYuI4MDN4s14WAruvxrbjPrlLDDAa7QmvRgMgd7gVMrClkUNMOWHg34R3Aea27E6BLJ9Qz/Rl+gn/bjNXue13IQ31PcK1aQad0pZWWDJV+l730Yu+qjjpOY2fRRuzwDDPkZM1HGC8NHA+c+nEZrCvBvQp8YskjdqnTb0kYFQhg1X9P X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 16:24:24.0293 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b50dfc76-28d2-4a3d-7cf8-08de96547668 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000E9CD.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4226 Content-Type: text/plain; charset="utf-8" __cmd_contention() in builtin-lock.c has the same signal race condition as the perf sched stats code paths. When running with a short-lived workload via 'perf lock contention -- ', the child can exit and deliver SIGCHLD before pause() is entered, causing an indefinite hang. Fix this by blocking SIGCHLD, SIGINT and SIGTERM after the workload is forked but before it is started, then replacing pause() with sigsuspend() to atomically unblock and wait. Blocking is done after evlist__prepare_workload() so the child does not inherit a modified signal mask that could break workloads relying on SIGCHLD delivery. Reviewed-by: James Clark Assisted-by: Claude:claude-opus-4.6 Signed-off-by: Swapnil Sapkal --- tools/perf/builtin-lock.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c index e8962c985d34..2da689de134a 100644 --- a/tools/perf/builtin-lock.c +++ b/tools/perf/builtin-lock.c @@ -1991,6 +1991,7 @@ static int check_lock_contention_options(const struct= option *options, =20 static int __cmd_contention(int argc, const char **argv) { + sigset_t sig_mask, oldmask; int err =3D -EINVAL; struct perf_tool eops; struct perf_data data =3D { @@ -2123,12 +2124,25 @@ static int __cmd_contention(int argc, const char **= argv) } =20 if (use_bpf) { + /* + * Block all handled signals after evlist__prepare_workload() + * so the forked child does not inherit a modified signal + * mask, then use sigsuspend() to atomically unblock and + * wait. This prevents a race where a short-lived workload + * exits and delivers SIGCHLD before we are ready to wait. + */ + sigemptyset(&sig_mask); + sigaddset(&sig_mask, SIGCHLD); + sigaddset(&sig_mask, SIGINT); + sigaddset(&sig_mask, SIGTERM); + sigprocmask(SIG_BLOCK, &sig_mask, &oldmask); + lock_contention_start(); if (argc) evlist__start_workload(con.evlist); =20 - /* wait for signal */ - pause(); + sigsuspend(&oldmask); + sigprocmask(SIG_SETMASK, &oldmask, NULL); =20 lock_contention_stop(); lock_contention_read(&con); --=20 2.43.0