From nobody Wed Apr 1 22:13:31 2026 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012032.outbound.protection.outlook.com [52.101.43.32]) (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 888E12E7BD3; Wed, 1 Apr 2026 06:42:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775025724; cv=fail; b=YV9IqWeLGZJwh7cwbb60iPhvRfuOIucM1ac9oMOgnTc5b00+NTgYwveR+48a22HCXfXclLF+MaNUMMImBJ4USrNHElVn7G+KVvQzFsMBRaJrpgDuRvukbSIVtSN3ev8/Qk5XmjqHkhaOG/hU5bq1YUvRcCSh+KrYKypgxXxmYQI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775025724; c=relaxed/simple; bh=gysk5PzM8xy+Q7jL9jj4JMDWQYDhlGjl5j0n97OEgCA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=CNAwuyesf6W1/MLmod0B7c9Zk/AIKHR26J6kTN0Iv/Q7/hlPopaaECibIvL3dXZLtIz6hLc9ohXrQUZVmqlwwUrwvdZPXrTeEXnajv4rUBiJ/sB8im5ZPfcs05cm3lhukNRVNT/u/4JfWZ3pSdjorSnq7tgQ4uUPOsjh391KNuc= 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=eSPrF5Jx; arc=fail smtp.client-ip=52.101.43.32 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="eSPrF5Jx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MEAS8tcTixfUgpw5PrApNgD6bGzCs2TjAx2QYJ6XoFCBEjPHCbQr3m2stwCnwWkVQ/LXeHJKh/KzL8yXMwT6maGIq5PE2Z9I2gKMBdYBglcgFKec0Pb6LgG73NjK/B9kQ3AvXhddHHbCm1HrN3LmAfQHTNjFOqXGFYzxTpTnzGIa7pVfyKZ5hqgw6chylhs7BiTLJh+YY87qBwhxXMymanGbRuKnnxV4W+d6X7hOyR50zdb+vIrw9XrAZArR1ORzTmkRJ97Vqq9fCl69cyPRU6a6tTb4h7C1U0+PgbfcXLRM5PcTjvQ7gA77obPOJv0OyjHgnZn6ywtKxZsEKtJhIQ== 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=7r8Ew8WI9jqRiEjJse/Wc/puMIs1UxeBgQJ4bCCvWCY=; b=OAqhSwNQrkZLGqlZdCvaNEzFmX5V5o3YzSO5RTGLIMnkIMCe/IBPzxxbeUuRtJnXAvPNo6UaByXOPr10b8udszoZ9NViLGn9AdI50ha/WuKVuT3hc5DlOYcUiR2EyqXpK8m8ZIeN+4VQ2g88hDQicvtB3FIp100w7LXzj945sGhAlAOs1/1xm2NE7PQsdttAaB46Wmmkm2Q32lG3Cj6tlmM+r9kwwokGUtLqwZwFlxGBYt2trzrq/TKxxsZI8OysIFS+bc3ZGB5B28luCOMwfRntrb4FxwwqEJzmp7ctyA49gxV8o6mzxFtwIIAlAfK82nKbw7Bapar5upvvrARmig== 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=7r8Ew8WI9jqRiEjJse/Wc/puMIs1UxeBgQJ4bCCvWCY=; b=eSPrF5JxkhAYsURscZZpFnc5eU943NDw3nziI9DU2HctiPMztcaWgtSfKmJhV7M8tMX9iPrPhNnp86P8J7+jXwn9fC6heijyMv8C1cqWFGV3bs0VnVW9MNrPBQc+EHQuAulKs/Ajy/gl/OZ4mWuK7ttqsIX5TF1K7qnfzDHtJIY= Received: from CH2PR18CA0029.namprd18.prod.outlook.com (2603:10b6:610:4f::39) by IA4PR12MB9809.namprd12.prod.outlook.com (2603:10b6:208:54f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 1 Apr 2026 06:41:59 +0000 Received: from CH1PEPF0000AD7B.namprd04.prod.outlook.com (2603:10b6:610:4f:cafe::60) by CH2PR18CA0029.outlook.office365.com (2603:10b6:610:4f::39) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.29 via Frontend Transport; Wed, 1 Apr 2026 06:41:23 +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 CH1PEPF0000AD7B.mail.protection.outlook.com (10.167.244.58) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Wed, 1 Apr 2026 06:41:58 +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; Wed, 1 Apr 2026 01:41:53 -0500 From: Swapnil Sapkal To: , , , , , CC: , , , , , , , , , "Swapnil Sapkal" Subject: [PATCH 1/3] perf sched stats: Fix SIGCHLD race in schedstat_record() Date: Wed, 1 Apr 2026 06:41:12 +0000 Message-ID: <20260401064114.141066-2-swapnil.sapkal@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260401064114.141066-1-swapnil.sapkal@amd.com> References: <20260401064114.141066-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: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD7B:EE_|IA4PR12MB9809:EE_ X-MS-Office365-Filtering-Correlation-Id: cc227432-c873-422a-ddcc-08de8fb9c5d0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|36860700016|82310400026|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: QJIeaQRX5WilMZ5i35sGGICgi33Vl3+jZJ2ql7P+Qo/tbwUMM9pY71dljwTMnJM9jIV/eJ6BK3RVwcrve8fnnispQFpG1YYTKRab9DeJZge6QJZV2Te2M3Zr+L7n6oaQVZZoxFlTNf1E+s4RJauHoQ5jYHH9GIyLT0mEh29z5BHxJCa27I0fuh0gZUTRAmFfMaQ0J1bkchX5i5GOBfoyiXDo1sJROKOYhiD3xGCDAfmkj3IlEEvAxu2qWmpPoAlesfBFI1b45vyNARXh9IYPUxOyvzpbS2EXGILUNC9/+/t8mMlzDYCpsk13S46tXnzd24rAismHJXVehcMJwmfZuPshAKe/s0NYDtrZE1B1+vIsYi88CEURxNghpOFq0aJIEaNLyORKVfyUD94bp0u5EzSLblODGHA6EBFiuxEIqgfm4/QTo9jsS7GKdFNtb+SZ107Y4o64fqtROnKrGKr0T3+LZjtmGeHABRb9bZ6uACLVzY+x6uFwHooLJq2VwFSKJeXIydqygkbEK5zu3FPvZ3uFScAQVlWVjKnzBok2Tke/J6+pasS6ex3emOfyMVPzzF+Btx8E2dcv1D5mkbsYVjHBDEMVUanMudAbehB9AORXU1RdrGqeXPgW3Gh8aAhjUeYhQ3jsSLVjgdocfs+B5GN7r9cMxtJ+cm0hd2thjoVY9igie37ljMGwYMc8a9Q2YL8anvwStb8dt+4P5evgrV4YXrOkfDDcW2hBMGCtPrm0YhJgg0/8A8YFfwWo1wzx+iMDso4TNT1rmc+PQEsa0g== 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)(7416014)(376014)(36860700016)(82310400026)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: EGA+SqJo2QQVhn9OuJmR6QgOyaPKdakbHkWt0jPSszEKR7SCBykYQqiGC83dwYKG4PCJ688jHLfuv0kJYj0HR5VbzORyAiNdUxV0aHhcIt5kz90RBal2+8A0PTUrl7y54rpf0cBFHMF0XD/3qzHQJCzjy2nrEFeqZM75Ajs/s+Yk4zDH380ErSI7eRWiLo29HuiE7tLe3GWwFvFOg+TWDwHzoMjWUn1yj9zWV5HUq7IIXpNwI+ynt/sj5dlJisaOvn0+vJSkPz2rIKiqq5pSBFUhgEqKHgTam+wXcD9Zq9AnIjhXAFhzajICrrroz85R9gDNkW0a2WTzaWv0XZvI2hciS+Uto8T2jRc1qtz7r6R1GoU3xupys273yNul+eRD4v+lk9z76Nev2lXuE1JMBmYgLVkp/6vQFcA3B2c9uN7eexNv8ecPrRW6cWnlGrNh X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 06:41:58.3155 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cc227432-c873-422a-ddcc-08de8fb9c5d0 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: CH1PEPF0000AD7B.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA4PR12MB9809 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 before starting the workload and replacing pause() with sigsuspend(). sigsuspend() atomically unblocks SIGCHLD and suspends the process, ensuring no signal is lost regardless of how quickly the child exits. Assisted-by: Claude:claude-opus-4.6 Signed-off-by: Swapnil Sapkal Reviewed-by: James Clark --- tools/perf/builtin-sched.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c index 3f509cfdd58c..eb3702d98fd1 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 sigchld_mask, oldmask; struct perf_session *session; struct target target =3D {}; struct evlist *evlist; @@ -3822,6 +3823,15 @@ static int perf_sched__schedstat_record(struct perf_= sched *sched, signal(SIGCHLD, sighandler); signal(SIGTERM, sighandler); =20 + /* + * Block SIGCHLD early so that a short-lived workload cannot deliver + * the signal before we are ready to wait for it. sigsuspend() below + * will atomically unblock it. + */ + sigemptyset(&sigchld_mask); + sigaddset(&sigchld_mask, SIGCHLD); + sigprocmask(SIG_BLOCK, &sigchld_mask, &oldmask); + evlist =3D evlist__new(); if (!evlist) return -ENOMEM; @@ -3902,8 +3912,15 @@ static int perf_sched__schedstat_record(struct perf_= sched *sched, if (argc) evlist__start_workload(evlist); =20 - /* wait for signal */ - pause(); + /* + * Use sigsuspend() instead of pause() to avoid a race where a + * short-lived workload exits and delivers SIGCHLD before pause() + * is entered, causing it to block indefinitely. sigsuspend() + * atomically unblocks SIGCHLD (blocked above) and suspends, + * ensuring no signal is lost. + */ + sigsuspend(&oldmask); + sigprocmask(SIG_SETMASK, &oldmask, NULL); =20 if (reset) { err =3D disable_sched_schedstat(); --=20 2.43.0 From nobody Wed Apr 1 22:13:31 2026 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010037.outbound.protection.outlook.com [52.101.201.37]) (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 8F1883370E3; Wed, 1 Apr 2026 06:42:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.37 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775025745; cv=fail; b=bDJI3DL/m0UXG52sXu3MM7BDzClsMmgMyS0xjrzqTfoY1KK6QbeioovWszYPRbXloH9XN+DRN+fXNOhHZZTjI1bPh6Jm6IDouJOg4J2TvwjlqPySxyRd92P9z/nAyF1fMfaZuSOY4u5ajsLUu/qbVoJeBb3lBgZzacWKoRIKx/c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775025745; c=relaxed/simple; bh=lI9wvZ87eMjVkf+MorNDlVxcfHoZ7sRo6jGszV61BKE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=urVJSGUOyxZ7iqu3akF8OZz8cfbKlXoiWgCdoHLSFAuWO4+LbEB4H2R+Iu/z1x/td8jWxDB/ZDmg42t+Bd6wEddIOqmjBjAo82j7W9pYgjT4leLOs8Gc5JvKEJS3r+8p1GRN+DbztyV8rUaazf9yji56ovT9KUUoNQXH6Ev5+pI= 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=kr4LyhLi; arc=fail smtp.client-ip=52.101.201.37 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="kr4LyhLi" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GjWiFAx2pkZ3+jSsgwhgOiCFFctp9/AD1bQgY3Ww256EqHcZidvPAn3zvzB60pk0F34iTOuiKVhPalLTmgdyxg1gBCMdJC2IsLj5PMQfczeSwzhg+wAZHPqYgKiZ5bIoSPzl3efqJzMk3SWZwPNTzUF0Cf0wT1YV/W99UkogzhKOvcciq7AW3P/QTyBxoeKEXMypoMs2YcMsQZ2BSzC7TSOZDAe0hH7QiQg0/h4VdEhQq491FvU6BsKYKgtPRwBi/OuXZ1WYUJYZhKKeIemxEsRlE7xLjnX7x8nsT9ndQIKu70fFtgMhO5BmWpFEY2A03gW3QijpN70u0DL6zZMw9A== 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=luB1tlAekKf+b303Xhib/yfc6ffd71LgdAyxIz34pSQ=; b=QugUSzpFefPL2vnLGfln+TeaV1oR9O4f9muxJMPyGyxrL8lrSpZR4MlU5RFL/A/cDLklYIPMplSKOEozfg9Wk3Fk7o0EDhGUEEssNuTRAXJBVHB4lSN6+vafqI0cs+sX+N8X4Vt5pl638o+wI8zqY4q0Jwz7EZ2UTt0tL6N6LPTAZs5ucH2ikToKopadNFTHS37cmXz3b8lFPKKUXwvUehvW0tJ8awybM/xm2O1dwNNtA/UehUYLGUUas6dXx9qDeM1jiIJ0x/AnjE1KMG4O2xwECuSB6C8tqMrgObsDdPjxk7AJGMmAMMOJRZyGjSR7bXPQyLs8r2PHVPgQYlY/4Q== 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=luB1tlAekKf+b303Xhib/yfc6ffd71LgdAyxIz34pSQ=; b=kr4LyhLicglB7PrJoBHkNslMV+Q7911vZuDCvQEB8IhIAhVz32zmugowolbV420RLnMtD7QsXpUnR0Bw4d5rZF3WkxBEop1Jisqm6tFARoaOtlNwAQjSyRm/ZFGUtnw4Wl/SD/gXrA6ZYSxjIbCXOogemOVQnrQBiiv98MqBtQ0= Received: from CH0PR03CA0093.namprd03.prod.outlook.com (2603:10b6:610:cd::8) by DM4PR12MB7695.namprd12.prod.outlook.com (2603:10b6:8:101::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.14; Wed, 1 Apr 2026 06:42:21 +0000 Received: from CH1PEPF0000AD7A.namprd04.prod.outlook.com (2603:10b6:610:cd:cafe::f5) by CH0PR03CA0093.outlook.office365.com (2603:10b6:610:cd::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.30 via Frontend Transport; Wed, 1 Apr 2026 06:42:20 +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 CH1PEPF0000AD7A.mail.protection.outlook.com (10.167.244.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Wed, 1 Apr 2026 06:42:20 +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; Wed, 1 Apr 2026 01:42:15 -0500 From: Swapnil Sapkal To: , , , , , CC: , , , , , , , , , "Swapnil Sapkal" Subject: [PATCH 2/3] perf sched stats: Fix SIGCHLD race in schedstat_live() Date: Wed, 1 Apr 2026 06:41:13 +0000 Message-ID: <20260401064114.141066-3-swapnil.sapkal@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260401064114.141066-1-swapnil.sapkal@amd.com> References: <20260401064114.141066-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: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD7A:EE_|DM4PR12MB7695:EE_ X-MS-Office365-Filtering-Correlation-Id: 061a7efa-44f0-47ca-37ae-08de8fb9d314 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|82310400026|1800799024|36860700016|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: uRILiw5uobqoaVF1tLtlQKDrxIQZSiUK+emBv2J/OWwQuSeMOSjKrzrZ0pTMvtk6WerebX0pUGFHKVXXVvHNmjRoxE9ys7QWUwq8XDYldwJ2IeCTSYQwyNtSIVJPRuGMwLdJ70giwStzw6ChwQmcfV3HRAX5zQPUnnZKPvTmKtoZIChq8o2A4/G3tcjvvPAIj5rjNLVcL+oxi5THFjYBEvOmydf8y8heSSDcVv6XP+HPBeTjNNHFwzmvPkIIyAYAAkY7sR2HDY9iK73QtWY54FXEQ6L67OAzuAUhJyGl3i+usCwSgFpCtPabhS7bNEs1+c5WESVgYMmGj8qSrk5lIFhwkItJuX6i1ImBdMkqeKJBUKCtnM/FyoxB4qNHiQfYmCbUjfwjFP5eYtvnY796+LWRjgVq4c43HigX+ZXfk1lohHPBfswYDp2ZiicAzQ6GFJ66dSnwosTRfQle8eW0j7L7IUz7/D7Tl0k+1oiAtixhNDRxzJwuhHb4p6rtoog2UeRYIPwDwLTcxrBRc8Mf95JyWWqIjXlJvhe0jXe2fIDilv16jrydWnzi2RodKnaojIn83Ji96TyGYuJrO7QqOsaOG0Yz1BWExnEWFYpVcjNFQmUTwECZpjHDbeNzfN2VDtx9ImPH+bf4mX5AxEBjghBISPLJaAKmg/s0Z9yMap4FZYn/MmSxS5abeCZH+tVWK1KxiEgdsBHetQ1FTx3aastp3ZL7GdFmtztOmWqV68SJRK26EtCK4YQvT2rmAHla+COVPMfUI1sNbA8kxKYFZw== 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)(376014)(82310400026)(1800799024)(36860700016)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PTRJfNX6NXNouh8LlMu9ntiWf0ku1Qh6v8fgXSeHeWDsXg+Xd38nWHXvDDDCuDY8+tbQynoNZZQdNpqbyYxejS0U1sseX6taPIHMNxsgS8De0AKfLZ3DcCveQY1oeu0sWXibfSBCOyvOGrO7LNn0AkfrKxLXoRyldBpoyKrPzvQeh3glR2s5J4q4kIFZStjmnMXATBlSYfOxuoNouqaqv/rjVaUqi2N+Y2Ml8qdducgihbV9DMrJi/Hs+x2dmDB2dpvPwvhhuq8SvljZeyaLYZ068ygtcwyVxa5mRv67wYCKQxZBZz4kU3pdk1/D1Nr+B0rPjvtt5C9xF/5U9/lD/yQpKwVfGBRlk9xFkpRxn9baPusohb8ogl9vZFHmT7KdEUbzeJOm3pgto30iZrGHgESDJ7Dpc5JXDNy/1TRi0g8jZccUYqLagfiHrLDUhS+A X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 06:42:20.5690 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 061a7efa-44f0-47ca-37ae-08de8fb9d314 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: CH1PEPF0000AD7A.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7695 Content-Type: text/plain; charset="utf-8" The 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 before starting the workload and replace pause() with sigsuspend() to atomically unblock and wait. Assisted-by: Claude:claude-opus-4.6 Signed-off-by: Swapnil Sapkal Reviewed-by: James Clark --- tools/perf/builtin-sched.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c index eb3702d98fd1..1d8f4ceda1eb 100644 --- a/tools/perf/builtin-sched.c +++ b/tools/perf/builtin-sched.c @@ -4655,6 +4655,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 sigchld_mask, oldmask; struct target target =3D {}; u32 __maybe_unused md; struct evlist *evlist; @@ -4666,6 +4667,10 @@ static int perf_sched__schedstat_live(struct perf_sc= hed *sched, signal(SIGCHLD, sighandler); signal(SIGTERM, sighandler); =20 + sigemptyset(&sigchld_mask); + sigaddset(&sigchld_mask, SIGCHLD); + sigprocmask(SIG_BLOCK, &sigchld_mask, &oldmask); + evlist =3D evlist__new(); if (!evlist) return -ENOMEM; @@ -4707,8 +4712,8 @@ static int perf_sched__schedstat_live(struct perf_sch= ed *sched, 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 Wed Apr 1 22:13:31 2026 Received: from PH0PR06CU001.outbound.protection.outlook.com (mail-westus3azon11011062.outbound.protection.outlook.com [40.107.208.62]) (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 2E856236453; Wed, 1 Apr 2026 06:42:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.208.62 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775025768; cv=fail; b=qZXVyQzXLdtOMPApeKN41o31MA47izCMFfMI7qq+O9OpSibwhx63S9vduB9rhVmD8Uc/TMuuuHrk3c1t/GjziOmHj4aCE33Brz6j58oz9waSWQXQHcXKXRZcK6lFqp6NiRGcus8CZ0YnuCx+H1Dz4FqTDP0YaPEeKXYIoOWijqM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775025768; c=relaxed/simple; bh=dN1EA5QRqfV9BFMXTpdFYlMia/qKoLp9Eh7WKjB5q/c=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=OpZVTAJ21dtGlnTPIs61/A6gkCXmcimREuRApXZPzCwnNaTpyFvLJolKr7cbBEpE5bS45GkrFPwnDfz5JKt9HMMPuAnFPVKtSEQLgIfuFK6B1+csUG/lIqAHVWyM/CCBElSBxXMKpkSPSEzGXwOdeoo2FolGc0cF53oLD5bVPVA= 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=XljyU8+M; arc=fail smtp.client-ip=40.107.208.62 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="XljyU8+M" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=y9Zt2dGZC+LU5ahRQW+YfJfv/vSt5fg1cBevJj2JEr4VP+ZxFFjH58Cbl3NQyq8+kivA9nCWl5cqQuuVi81k+pyySRijGXIOW5qNxjMkDXz2DypdWEdDkEu7Gx2cZHeqyj9N9s4F7kvjhhrnrtItz/TjJ33HqZfIKq3iIwHZuTCFUZLgiqLlvA2MWBcB0NBdPDIpqnVz+whn+kS/YwPaDM+RLqYpXC0SCOotvkVNnhFf8i4saKfltbmLZ/AEcnrWiHl6qCDYISTh3fsCyJhhc13la64EDzvMoE2cHl+RmCakMH1gU0eeXU1xaDh7MofXBn6Flfc1x1rYWCEBHaEAsw== 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=pnrRHe83yZfbDDdlgIEsby/7yU1++1HtyUa6z8KxTok=; b=HyohhELhU7ZohLUOfpOgm8alyjAobC2lgHKfGpaKcY7dp0VtuGwUoNNNYRiOwfw6HRRkzPlEHwr3iSwpN6s7N1XCXagPVwJxhm5b8gD/CGYWQoT/40PCV5Qrz3i2+CjtaZeVtDI3sHFHPvLSA2IbTGIGHmWWFCZmBBkeTW0KZj3UotM1NrWsGZ6UGNGSAt2uXGTuFzc5j2CzCQSGkxd5d2PNN4ZmGIbLBKJ4/IM+qPKaM+GN2Pap5l8N1GWoVCrViUF20bO7yJUzqbg0mCnnhvYh1X1y1N7Ss8Bziv2Ltbithx4uChfwqCmyCuupZdaZr0XUu/JfCOWuc6J9qmsXoQ== 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=pnrRHe83yZfbDDdlgIEsby/7yU1++1HtyUa6z8KxTok=; b=XljyU8+M9mLs/JAF8kSMklL4REh4TcmlgohwAa4P5SOehKlM1SWUD8J8TfarO9HPn9CxXgnPZxs5jYBekKauJsEKtoKT/w2hiMFOU/mrysitr8AaE5Qb4JiT1cqcaaSKdTnDMIN9FNEo+YU1VUxNBebz91ndkvSIgWFwOrUHm0g= Received: from CH2PR11CA0028.namprd11.prod.outlook.com (2603:10b6:610:54::38) by CY8PR12MB7660.namprd12.prod.outlook.com (2603:10b6:930:84::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.16; Wed, 1 Apr 2026 06:42:44 +0000 Received: from CH1PEPF0000AD75.namprd04.prod.outlook.com (2603:10b6:610:54:cafe::c2) by CH2PR11CA0028.outlook.office365.com (2603:10b6:610:54::38) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.29 via Frontend Transport; Wed, 1 Apr 2026 06:42:17 +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 CH1PEPF0000AD75.mail.protection.outlook.com (10.167.244.54) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Wed, 1 Apr 2026 06:42:42 +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; Wed, 1 Apr 2026 01:42:38 -0500 From: Swapnil Sapkal To: , , , , , CC: , , , , , , , , , "Swapnil Sapkal" Subject: [PATCH 3/3] perf lock contention: Fix SIGCHLD race in __cmd_contention() Date: Wed, 1 Apr 2026 06:41:14 +0000 Message-ID: <20260401064114.141066-4-swapnil.sapkal@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260401064114.141066-1-swapnil.sapkal@amd.com> References: <20260401064114.141066-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: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD75:EE_|CY8PR12MB7660:EE_ X-MS-Office365-Filtering-Correlation-Id: 0e856b32-58e6-4c31-3750-08de8fb9e057 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700016|7416014|376014|1800799024|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: JzrqcqGqStlCqM7a+NVa7/hoYeje5KsGu3rTdBE2Mp6tjVdURiQP8X5Xj/Uc+WES31PakIa4F3hu/kXCSPPLl7pwqiRi8+luADoWBphd2dsDKl4ghnhBfYmcXspxOlvnv4zriiOlsilZL7pSv+Qb+OOHgqtjFEjiDwYozy/zJiul8Fx9tK0SV9cfKe5bNAoRWuq01mx7ZzTi9Zj2cPQYk1LfOg7+qaGcus6MSw01nMlpGCxMLCZ3eX9FwWubUYcndYX8nBqmLd+TfMB6sIOitOJS/gUVnD1uaURHj/a84amCl7uVxAHSSvhEWm/3c9BI4F6QF1EyaRucoyN7lo1HyzA/uuH7E7ajzBIwN7kHmB8BCRwSlaZLf/40JTM10GK8Db3KHIjKkdFYLu6lKcrYQR7KXmWGT83ZzxcoNhVK7QmjGvlpyFdzZ8RQUQ8c5ZLJVYMUiRV22j5GRv2Ev63xy/IMBG2BAmnQTcSwrd6iFMivJ7wQGaTAvXwm8SBKm5yZsyfWA1NUdJFGTQEdpEczx4Nld0Gw3U5/dgb6YaMuTIRjXapMJzGXpBkSdzWkZRoFkBKceUJPdArxLHJ3sDkBYrQ6vKpcz+x+jzbf1rLuh4GWfiYRpULx0TC66k+i3KzBwzBRMKk3PTtqGfFuWsmp8bZK8qqf2utMzXsd/FnVT6wR+V45efX9N1LVVf73Ijb93QaUkhaKyohramzFNcgykTwx1/9BYfENWAgjbZmV3sjuoaRjJixLl64mXC4bM7bK7+8FKdzhXdie0I9DM5qElg== 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)(82310400026)(36860700016)(7416014)(376014)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: S1hFxT60yJJ4qjLNSdchzo5xeADxCpnx3OOqMoW6UhI0M1OYe0vbi7me34w8UsiGHF/qg2+SCVLrvTCQEcleC9rM/CozqVqAE0QlXOKQ3NnyG9niiKZfUwlDFvFWeH1XviGwuJ3hEmhtXcWBU664ARnNqFeb7PQf82NCKY20nQaDwePE9Hyx8bzeDlexIAGvCS1j2/vM3fy600MxX2Cs4LtSr+3JxlajkxPgo2K4SSozPHVW4KXjOcgaJXLnVZGDkQe5YUll95S4iGCj6X01km9vHqTEvnjeXeK0YXsqB4PVM9O/EiP4Q++Vpt8JR8Ng6qGhwxJck8ahH0ugtiu5hj238wMw9WB2LuUhU9g6AlXbdgeuTF64UzGEBkrItpsjxtpXmcuY5guOn1Nc/azdM66fkTF71c+S9DyzrlZ0v/tX78T560zDPGXk4qkKxQhv X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2026 06:42:42.8184 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0e856b32-58e6-4c31-3750-08de8fb9e057 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: CH1PEPF0000AD75.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7660 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 before starting the workload and replacing pause() with sigsuspend() to atomically unblock and wait. Assisted-by: Claude:claude-opus-4.6 Signed-off-by: Swapnil Sapkal Reviewed-by: James Clark --- tools/perf/builtin-lock.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c index e8962c985d34..1bada9833c93 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 sigchld_mask, oldmask; int err =3D -EINVAL; struct perf_tool eops; struct perf_data data =3D { @@ -2064,6 +2065,15 @@ static int __cmd_contention(int argc, const char **a= rgv) signal(SIGCHLD, sighandler); signal(SIGTERM, sighandler); =20 + /* + * Block SIGCHLD early so that a short-lived workload + * cannot deliver the signal before sigsuspend() is + * entered below. + */ + sigemptyset(&sigchld_mask); + sigaddset(&sigchld_mask, SIGCHLD); + sigprocmask(SIG_BLOCK, &sigchld_mask, &oldmask); + con.evlist =3D evlist__new(); if (con.evlist =3D=3D NULL) { err =3D -ENOMEM; @@ -2127,8 +2137,14 @@ static int __cmd_contention(int argc, const char **a= rgv) if (argc) evlist__start_workload(con.evlist); =20 - /* wait for signal */ - pause(); + /* + * Use sigsuspend() instead of pause() to avoid a race + * where a short-lived workload exits and delivers SIGCHLD + * before pause() is entered. sigsuspend() atomically + * unblocks SIGCHLD (blocked above) and suspends. + */ + sigsuspend(&oldmask); + sigprocmask(SIG_SETMASK, &oldmask, NULL); =20 lock_contention_stop(); lock_contention_read(&con); --=20 2.43.0