From nobody Sun Dec 14 05:53:23 2025 Received: from out203-205-221-235.mail.qq.com (out203-205-221-235.mail.qq.com [203.205.221.235]) (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 510A42D249E; Fri, 12 Dec 2025 03:24:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=203.205.221.235 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765509917; cv=none; b=snG7EToE44sAdEdXcWWTGyk8aFL8G/gAXCvCzYt5IF+/Yn6SoIydlZxjd33ZICLzdmteM66ad4Wxk50GtkyzgRS3W9of43K0qiIniOo97n5o6J6DTSJITw1qinQWdt7SvDYRKA3tUmdUGFyEuZ22bGUkX3CRlP8OzMu4G1IjfOU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765509917; c=relaxed/simple; bh=86jM6/8ayfHPNKCYQQ/v+Gxswje4pbMb7uGQHheHd4c=; h=Message-ID:From:To:Cc:Subject:Date:In-Reply-To:References: MIME-Version; b=j8saPZQ6vUSuvcu/p8VO3ArwceUS7pnrIwT2jwRarqtfXJmgpSHJFa0FrSWcc6FlRWXlktVHtb2/sNEaLLw+rFYkN0xbfC150OP2plJaeE3A5UqYSm2Bve20xoqcVURU2bXWiFm9YnTN87B/MSJ3RO1zR9r+IgnQqwWnApXn9ec= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foxmail.com; spf=pass smtp.mailfrom=foxmail.com; dkim=pass (1024-bit key) header.d=foxmail.com header.i=@foxmail.com header.b=ujb6hVgg; arc=none smtp.client-ip=203.205.221.235 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foxmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foxmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=foxmail.com header.i=@foxmail.com header.b="ujb6hVgg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1765509889; bh=zDJ4Agqgm0IgPliNwt9ogn6DK+Rs7gCySxS9/AzULK8=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ujb6hVggTY2nHKlqqid8hfyCRlDAu+Sgzkr8INUDXFe7lDIbvipprvemNoK1ExX/y 0NMlFJJEkGxiTy5o5/QK8WES2yT7k+JFcK3h+pV7jE8o34PGVzR9nS7dP4YzixFw1D JxUpYOyo8pIm+ArM+BgQCHEB0+doRoXVDXBvE3ZM= Received: from meizu-Precision-3660.meizu.com ([14.21.33.152]) by newxmesmtplogicsvrsza56-0.qq.com (NewEsmtp) with SMTP id 62D0A691; Fri, 12 Dec 2025 11:24:45 +0800 X-QQ-mid: xmsmtpt1765509885tx9osn5q6 Message-ID: X-QQ-XMAILINFO: NC4p7XQIBeahNutEhg7U/YbeXwgFTuUg16/TPFrcGtq4DET8roumfz4m93Nei4 bKhb/WEsn2kFahhSIdFLM1dn4AXOmSy89BqyC45ht4rZqjm0e7KfbzLo9Jop29D/zWe28lXkFTh1 PG+i+G35qgh67IjKsEK2Y+zn4f55kuVTB3Bp2EhVD7szzEpLwRO9vkmD5zIeDedSDbiEzDAwMogF uZswScFJwbvxY6tyRbZ73RW/83RgIeELKpIhmEo/d+ymsJmiHXKVHhIXJ4HD6WwRwAuK1l+6I9Xe tPBQmlC2saOGq/bq8KAXQewaLGyFsLFrH3Wp1Qswh1CwEQS3F8+9lMOlawqsxTWH7G5GX4Vo/WNL XUAwYU3dQcTRsAfmQN8JmgNf6u5ofs0wTTUdmMSd5mNQiAGPMyJmzNKUJCuKkRomT8md+SAYJGnJ 4nXVHhHOSKESVNqV/EudODj0ueKFRBHBc6hLjpawdw1wxvyERoEHEw95/4yZBisMoSfk1PaC9U9B Hms6HSEtXX8wRnPCM+0St+p1lq8z2u7k0dafnU1n3yx+TW4UNyh3MKbI2cSuzfZ8I8bvE2gagZbk GqYSiRWeSZW83CWdWieNsER62trw03bbvgNeanLwov+BiMm+dMhn1lNmnh+7nQ4RfYNADFpB0TO2 zhQ8FIYExLPPWqr2Lf1gcaWiXkKeOls/ObyrWsN0qgzaWITAL3IUTvHUzrirYEwLgspvNy3s3us7 xdSHryApLOPl5MkrjtErLWhzH6Y8IKc8WLSUu4fVTFNuMYff8QFZtCw4YL9sHY+T+KYlx85bTokT 74Wf5bPv1+ktxn4Ix8R0NRXES7dmS1FBmgVTc4PwBLKEEJqt+DsFP+ucSJODOk+lUb8hvRIVKbC8 sVBazZ/YSTTV2BKnrvMsc/kD7uhcMTYAOIjJZMQznGRs4YWw+xnvIhNJX62ipyck0YkrNYHgGsX7 bhB8kFvCugbHZLIDNPJvBfYLthjueioYW438fYVTxpvmotXIpX5Tm1aJc+9djf02a8dQbQkvQvtQ caKFuwGmTFQmK4yvzBiaL07gLqZL2tS9+FmFn3dbhvMsLl9r4tOfoinle6fXtIqI1G9dHPfDFO0T 8758hoT27DjtcdnNo8uq8pHw7Z6A== X-QQ-XMRINFO: MPJ6Tf5t3I/ycC2BItcBVIA= From: Yuwen Chen To: ywen.chen@foxmail.com Cc: andrealmeid@igalia.com, bigeasy@linutronix.de, colin.i.king@gmail.com, dave@stgolabs.net, dvhart@infradead.org, justinstitt@google.com, kernel-team@android.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, luto@mit.edu, mingo@redhat.com, morbo@google.com, nathan@kernel.org, ndesaulniers@google.com, peterz@infradead.org, shuah@kernel.org, tglx@linutronix.de, usama.anjum@collabora.com Subject: [PATCH v2 1/5] selftests/futex: reduce array declarations in the requeue_single Date: Fri, 12 Dec 2025 11:24:43 +0800 X-OQ-MSGID: <20251212032443.1842375-1-ywen.chen@foxmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: 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" In the requeue_single function, the variable "waits" only uses one element. There is no need to use an array. Signed-off-by: Yuwen Chen --- tools/testing/selftests/futex/functional/futex_requeue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/futex/functional/futex_requeue.c b/too= ls/testing/selftests/futex/functional/futex_requeue.c index 69e2555b60399..1807465de2144 100644 --- a/tools/testing/selftests/futex/functional/futex_requeue.c +++ b/tools/testing/selftests/futex/functional/futex_requeue.c @@ -33,7 +33,7 @@ TEST(requeue_single) { volatile futex_t _f1 =3D 0; volatile futex_t f2 =3D 0; - pthread_t waiter[10]; + pthread_t waiter; int res; =20 f1 =3D &_f1; @@ -41,7 +41,7 @@ TEST(requeue_single) /* * Requeue a waiter from f1 to f2, and wake f2. */ - if (pthread_create(&waiter[0], NULL, waiterfn, NULL)) + if (pthread_create(&waiter, NULL, waiterfn, NULL)) ksft_exit_fail_msg("pthread_create failed\n"); =20 usleep(WAKE_WAIT_US); --=20 2.34.1 From nobody Sun Dec 14 05:53:23 2025 Received: from out203-205-221-233.mail.qq.com (out203-205-221-233.mail.qq.com [203.205.221.233]) (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 B60852C1598; Fri, 12 Dec 2025 03:25:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=203.205.221.233 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765509918; cv=none; b=d+iyI8hWN89Dn+vn25mc1ba7D2WbXeTv+se+tKpu0KmcTBy+ibp2QBM10sMSHfgg+q4mW5mYoETflTuKcprP5rQmSs54ERDJb2BhbqQxDLVrdylFqOt8RrZ9P5cJhmL3z1YhB4oVo2pZ5m7ufVolarXcIGcwTbL7szC/mYfZ+IA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765509918; c=relaxed/simple; bh=C+08LbzQ/z+34cND2oLqaoWybgghg1e04b/dmySNlAk=; h=Message-ID:From:To:Cc:Subject:Date:In-Reply-To:References: MIME-Version; b=WoeERImTEG5MLsRMiRGAJiQcpacf3K0hYhSYhQd9iuyeRQRwl4maUVyBD6V97h6RyEegZuw2xEQtGvLUQBhvs78ZrBPLS42kwki7sFPoB0JGAosFhGTh8JswpZVAXPvITIhZLYU56WnwaxHIs0p62/pi0HxnFbLHck6ArwPjkAk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foxmail.com; spf=pass smtp.mailfrom=foxmail.com; dkim=pass (1024-bit key) header.d=foxmail.com header.i=@foxmail.com header.b=ZIYujaWg; arc=none smtp.client-ip=203.205.221.233 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foxmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foxmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=foxmail.com header.i=@foxmail.com header.b="ZIYujaWg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1765509900; bh=v2V53COHy+vq93ovfqBudNjOizsywx7dvc+nT1DYRpk=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ZIYujaWgQmn/LpUwwUyH0cJVvu1IJsctI4EqImwaaWJcVhYQqtK2dSsZKgcZDQ8hR /1a9+7HIMAi+GI7igompagc6jJ3ITuIhixXf0Mg4XF283z6m06k4Q8P/mx+17CDAt4 ThW+IWGTqbMlfPuWpnQUfvnWSLYGMSuQsdXBECBE= Received: from meizu-Precision-3660.meizu.com ([112.91.84.72]) by newxmesmtplogicsvrszb51-1.qq.com (NewEsmtp) with SMTP id 639364B8; Fri, 12 Dec 2025 11:24:57 +0800 X-QQ-mid: xmsmtpt1765509897t464m1gzz Message-ID: X-QQ-XMAILINFO: NEu9ADsh1Y9sOKFMIuv4j33dDDqP7g9GHHq8WERml/ySRXobvwTnRraj8ncXgN sZ9M0WcLuRb5Eethok/SQp82bz0Z9IewjhhJuXAJCVr+k0S1cPf2pPEITNePBLWjXQciuayUV4CA c0XAsmpGicpRTkhWgkhoj8NkUBhim7fQp0z3VZL9xCXqJzMJNuYjQZGRvgW6IQ3wSVahPZ9dmv8/ reDTiOFUyGGKD996Wty+ltxw5AU8CGpBcywKMVBQ01Ck3t7IcfiU38hMkyOwbIx09pgibmPeaj6h avA2E5E8KnuRZvng+E0ehulaab8GnjIGN/53IEU51l5Dw8Oqkb5jIIW3cHCRnEoQL0sBGWMSg6c6 EBt+eD+u8du2526OXg43jnCHHFKsVQw43Tqx+TKVrVayJHSyyfwXpoSfaGZCIf4q8QToVnpHc3zM ObI5dnum40jC0M9rOPCzt9KF5baKQNdMAlKDEIjuXznMxcV1foZDPgOpgF45a1u9vglHfQReNjfc 8uqex6liy/poMALMFt6BapL+iBa2gWb/jOECQhrnsb4vIBJXFaa1LtOlA6McWdcjDcQ5FZMECppU pIVVl4Q2mnndxi74upHzvqpTs1djjUkB4fPRCODDsn6RRKAYUjr/dLY5IJcM8tHDjo4332yfHnaz BjNHURiqVFVrylT3YCgFZQnbORqDubgTrJE6rIyML1h8Eit+IzBWaqP0vFGO7LxU2oVO4bldGzjB TWB0WU3Aq+ZBxPq/GQtlxYlQhO3Qo7lxzb3psInEOKj8hkRKRx2n/dFTRcjWn7BKQK03uhs+A2Lr zHBGgkQiUb38Uqua2nln6yAKgQYFxvbGmphXY+5eAVyYyM3UO8Y6y26gsdg6+Qc0vA+j4JIYr24X SJ0V/kGfQ+cjeRgkx0yxKtk4mZpr6t/wRkCLPcAbKQcgxqfncvtevhiQKOEf54CRgM0KV5Fen/7S YUq73+R1v0jiAYt0YymsAfVNVB4DzYF9nYH1AxroCq0xhcGx3PfAoUJtuGLQF5A0U/ILXsb1Iuh/ xB3tl64DNOEM3ByzMmnMr3uIMiwyD3eqpqAIVxTy07Y74oP1DYnh1YZbDPOxTFpqpLWcm0RJpsKv J1dtNL8qnyo93d8vtJS7xXE4C86RMCIG8Tpgs15uGo4mL1cOq8ejKKhyShlOoEkYHzfADs X-QQ-XMRINFO: OD9hHCdaPRBwq3WW+NvGbIU= From: Yuwen Chen To: ywen.chen@foxmail.com Cc: andrealmeid@igalia.com, bigeasy@linutronix.de, colin.i.king@gmail.com, dave@stgolabs.net, dvhart@infradead.org, justinstitt@google.com, kernel-team@android.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, luto@mit.edu, mingo@redhat.com, morbo@google.com, nathan@kernel.org, ndesaulniers@google.com, peterz@infradead.org, shuah@kernel.org, tglx@linutronix.de, usama.anjum@collabora.com Subject: [PATCH v2 2/5] selftests/futex: use pthread_join to reclaim thread resources Date: Fri, 12 Dec 2025 11:24:56 +0800 X-OQ-MSGID: <20251212032456.1842402-1-ywen.chen@foxmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: 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" When creating a thread using pthread_create, you should use pthread_join to free its resources. Signed-off-by: Yuwen Chen --- tools/testing/selftests/futex/functional/futex_requeue.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/testing/selftests/futex/functional/futex_requeue.c b/too= ls/testing/selftests/futex/functional/futex_requeue.c index 1807465de2144..7a22458c7fc96 100644 --- a/tools/testing/selftests/futex/functional/futex_requeue.c +++ b/tools/testing/selftests/futex/functional/futex_requeue.c @@ -62,6 +62,8 @@ TEST(requeue_single) } else { ksft_test_result_pass("futex_requeue simple succeeds\n"); } + + pthread_join(waiter, NULL); } =20 TEST(requeue_multiple) @@ -101,6 +103,9 @@ TEST(requeue_multiple) } else { ksft_test_result_pass("futex_requeue many succeeds\n"); } + + for (i =3D 0; i < 10; i++) + pthread_join(waiter[i], NULL); } =20 TEST_HARNESS_MAIN --=20 2.34.1 From nobody Sun Dec 14 05:53:23 2025 Received: from out203-205-221-210.mail.qq.com (out203-205-221-210.mail.qq.com [203.205.221.210]) (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 7CE542F8BC8; Fri, 12 Dec 2025 03:25:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=203.205.221.210 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765509933; cv=none; b=KmaQQc8FfaYlBK4DfetQVaC6nAjzzYXN5i+WZzaAQt9ATUpjiT3UdDSNf8OkUoDNaKqbKwQvdNs/Suf+qiYAEC7R6VLr983KqZDKe0isrtvXlpKoN9EaWGwHLOPMhstysBNxiYSI/eskh9QZv5vUbNymusc/P6ftv9jKIi6GruA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765509933; c=relaxed/simple; bh=Q9Dt8zcXiFFbcg9AaMquAPxodgc5EtsCma0SZrxjPgg=; h=Message-ID:From:To:Cc:Subject:Date:In-Reply-To:References: MIME-Version; b=LybRF8bCLzPUtsUDN3VGniGausJFNVds/sPQxEOrN1OwQlwrxr0Qjrjg0dZ/+k/x/pg33bpSyJY/dUNMk4QgWuEE2jXC1jsHIcuXJ26qrft8Ev8TQ0ymjbjGZcz7PIbTJPVnARpP2lBnaWnfo1eSh35Kzjzz7SNq6oISaz+1Qms= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foxmail.com; spf=pass smtp.mailfrom=foxmail.com; dkim=pass (1024-bit key) header.d=foxmail.com header.i=@foxmail.com header.b=FLmOI9Vk; arc=none smtp.client-ip=203.205.221.210 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foxmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foxmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=foxmail.com header.i=@foxmail.com header.b="FLmOI9Vk" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1765509912; bh=PfKTM9YgO72StMOXeVof7To4faRXvcAqJFGn8si/NpE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=FLmOI9VkUrXlDGCd63Ktut57BvK0+vhMYcI+dF/R3cfciL3YgXtqbVRVJCyx9glR3 xZUY8Y+mnV97fJxByPNMTR74VDGDcEmTcLex/sl4DJkJMTdtJKGjPat+//xuL4OWju QKmPLNsLVvK6bjyGEo3G/WXy7MsyTDTZFYFJO8Iw= Received: from meizu-Precision-3660.meizu.com ([14.21.33.152]) by newxmesmtplogicsvrsza53-0.qq.com (NewEsmtp) with SMTP id 6490C8D9; Fri, 12 Dec 2025 11:25:09 +0800 X-QQ-mid: xmsmtpt1765509909tn6u96rrw Message-ID: X-QQ-XMAILINFO: OIJV+wUmQOUAdhwvCmJC9UnurEtbtGWLtP5D3BlrF7Y9xZghT1i/8wHWvswme0 OgLdlXUTzS25H2js3MegDq25De3v5okQsUIRWZBOuKT5zv8rSjuh8bj7c4fuu+DTw9E/ygH67EkX 4CJbO6w4z786Bdvgv2uGue5GMkMtvjZ0xOuzA9aWyGFisZd8HlLnRfRir2Ej+SVoT4Y9lSwRSVLv t9VNQ3cWXXjBd4IdwVxTLYEv+pG3gB2cxDIRi93LIOqqDyQFemWLAnZeNaozi5/u9WZua9KQoJpW JdzSoEgCUVa9TdAlK8RUKGw7Mxnyih+TvNRNXSEjtYsXs1IhgMEJ5jo3KDIJ679T4iq7YLKt3fT9 n5tF5nlKdDKb/jadXbgFXYGdgAvQFiGwrgm+JL5wmXsWh6PuRuQPK5H/++wTEfv7XCtwRQh3xBZy 0E6za12iLvMHAeyBSRy4ivn/UKn2G4RVeHZWnEAYn5+hlwnz3pxKO4HmpXgBWrIH/TxqN3liTZZv FlsxcV+Ii9AdZF2iHSN7lott32hvfsNIjUSN2oCEuLjNi3gAyo4jt7Onl4fZlOSSYYNcTKmR3LfU ZIgLF0433PE5hRhFPDWC/rBcHD+UnZ3uq9DI99yDjrBWmLdjRJf9Olk1JR1BfY5OJHlCX3iaR49D 0dGeaj217wXPfi21e6U2DJIR8cQyYQwpEKEdqcLaV6ylwGGD8XL8h0TRXxakLo8L0nFf31JDqUQ+ y5LeTFQcokykcELu/6xBTZJ+W9tO/2MAhVaJmZuK6uR14644szUjmj0tXFrpGvL3o/mM2dndEty9 AJH+56Nl8xY2KTGerQT9muQczJBaXcxmDn03op8vegXGw6G+3/Ezs+WjYyx6Iv2toww6XuKnpC1Y xi9AkW/vwFZvOWNRQF0l3G5G08ztTteqH15WV/ZrXNP/DeZZRoPoDq6WsX1chsPy7WNvvQwZxl2D yKPIK6kffB4mIDCdY2z3cnRSBlHXC0LzpF4wEPOC/3+EplQ+QWkV4Lgpdg1L70Su4jZpVheY+xSH v6bILJuPa5C9cmSuHh9gGb4qjIEh5SuBA5kFyHULzmtsbN6j0dcy9yhbhsVRC66asH2BElPlz4tm pKehwZ X-QQ-XMRINFO: OD9hHCdaPRBwq3WW+NvGbIU= From: Yuwen Chen To: ywen.chen@foxmail.com Cc: andrealmeid@igalia.com, bigeasy@linutronix.de, colin.i.king@gmail.com, dave@stgolabs.net, dvhart@infradead.org, justinstitt@google.com, kernel-team@android.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, luto@mit.edu, mingo@redhat.com, morbo@google.com, nathan@kernel.org, ndesaulniers@google.com, peterz@infradead.org, shuah@kernel.org, tglx@linutronix.de, usama.anjum@collabora.com Subject: [PATCH v2 3/5] selftests/futex: read atomic variable value with atomic_read Date: Fri, 12 Dec 2025 11:25:07 +0800 X-OQ-MSGID: <20251212032507.1842436-1-ywen.chen@foxmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: 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" Directly reading the internal value of atomic_t externally does not meet the encapsulation requirements. A new function atomic_read is added to obtain the value of an atomic variable. Signed-off-by: Yuwen Chen --- .../selftests/futex/functional/futex_requeue_pi.c | 12 ++++++------ .../functional/futex_requeue_pi_signal_restart.c | 4 ++-- tools/testing/selftests/futex/include/atomic.h | 12 ++++++++++++ 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/tools/testing/selftests/futex/functional/futex_requeue_pi.c b/= tools/testing/selftests/futex/functional/futex_requeue_pi.c index f299d75848cd4..5d845b052891b 100644 --- a/tools/testing/selftests/futex/functional/futex_requeue_pi.c +++ b/tools/testing/selftests/futex/functional/futex_requeue_pi.c @@ -201,7 +201,7 @@ void *broadcast_wakerfn(void *arg) int i =3D 0; =20 ksft_print_dbg_msg("Waker: waiting for waiters to block\n"); - while (waiters_blocked.val < THREAD_MAX) + while (atomic_read(&waiters_blocked) < THREAD_MAX) usleep(1000); usleep(1000); =20 @@ -218,7 +218,7 @@ void *broadcast_wakerfn(void *arg) ksft_exit_fail_msg("FUTEX_CMP_REQUEUE_PI failed\n"); } else if (++i < MAX_WAKE_ITERS) { task_count +=3D args->ret; - if (task_count < THREAD_MAX - waiters_woken.val) + if (task_count < THREAD_MAX - atomic_read(&waiters_woken)) goto continue_requeue; } else { ksft_exit_fail_msg("max broadcast iterations (%d) reached with %d/%d tas= ks woken or requeued\n", @@ -247,13 +247,13 @@ void *signal_wakerfn(void *arg) int i =3D 0; =20 ksft_print_dbg_msg("Waker: waiting for waiters to block\n"); - while (waiters_blocked.val < THREAD_MAX) + while (atomic_read(&waiters_blocked) < THREAD_MAX) usleep(1000); usleep(1000); =20 - while (task_count < THREAD_MAX && waiters_woken.val < THREAD_MAX) { + while (task_count < THREAD_MAX && atomic_read(&waiters_woken) < THREAD_MA= X) { ksft_print_dbg_msg("task_count: %d, waiters_woken: %d\n", - task_count, waiters_woken.val); + task_count, atomic_read(&waiters_woken)); if (args->lock) { ksft_print_dbg_msg("Calling FUTEX_LOCK_PI on mutex=3D%x @ %p\n", f2, &f2); @@ -293,7 +293,7 @@ void *signal_wakerfn(void *arg) args->ret =3D task_count; =20 ksft_print_dbg_msg("Waker: exiting with %d\n", args->ret); - ksft_print_dbg_msg("Waker: waiters_woken: %d\n", waiters_woken.val); + ksft_print_dbg_msg("Waker: waiters_woken: %d\n", atomic_read(&waiters_wok= en)); pthread_exit((void *)&args->ret); } =20 diff --git a/tools/testing/selftests/futex/functional/futex_requeue_pi_sign= al_restart.c b/tools/testing/selftests/futex/functional/futex_requeue_pi_si= gnal_restart.c index e34ee0f9ebccd..29f93916b46da 100644 --- a/tools/testing/selftests/futex/functional/futex_requeue_pi_signal_rest= art.c +++ b/tools/testing/selftests/futex/functional/futex_requeue_pi_signal_rest= art.c @@ -70,7 +70,7 @@ int create_rt_thread(pthread_t *pth, void*(*func)(void *)= , void *arg, void handle_signal(int signo) { ksft_print_dbg_msg("signal received %s requeue\n", - requeued.val ? "after" : "prior to"); + atomic_read(&requeued) ? "after" : "prior to"); } =20 void *waiterfn(void *arg) @@ -83,7 +83,7 @@ void *waiterfn(void *arg) old_val =3D f1; res =3D futex_wait_requeue_pi(&f1, old_val, &(f2), NULL, FUTEX_PRIVATE_FLAG); - if (!requeued.val || errno !=3D EWOULDBLOCK) { + if (!atomic_read(&requeued) || errno !=3D EWOULDBLOCK) { ksft_test_result_fail("unexpected return from futex_wait_requeue_pi: %d = (%s)\n", res, strerror(errno)); ksft_print_dbg_msg("w2:futex: %x\n", f2); diff --git a/tools/testing/selftests/futex/include/atomic.h b/tools/testing= /selftests/futex/include/atomic.h index 428bcd921bb53..c0dccb1b966ba 100644 --- a/tools/testing/selftests/futex/include/atomic.h +++ b/tools/testing/selftests/futex/include/atomic.h @@ -76,4 +76,16 @@ atomic_set(atomic_t *addr, int newval) return newval; } =20 +/** + * atomic_read() - Atomic read + * @addr: Address of the variable to read + * + * Return the value of addr->val. + */ +static inline int +atomic_read(atomic_t *addr) +{ + return addr->val; +} + #endif --=20 2.34.1 From nobody Sun Dec 14 05:53:23 2025 Received: from out203-205-221-236.mail.qq.com (out203-205-221-236.mail.qq.com [203.205.221.236]) (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 993402BDC33; Fri, 12 Dec 2025 03:25:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=203.205.221.236 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765509940; cv=none; b=CMbn4W3GUiIAlXarOO6GrHkqeOkEL9TUMmpvB7d8EEMaSDjbuXlnnGXoE9XxzFGTnmoUFr02o+3vF3ElfckTHnMAsfPrtvuCn5cDcZCIKJv56LnzfmiONmxJyWNA81KFXKOcPhuYu9k8waFfbFBGwnowVtXh6uzWXwixcqh9yso= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765509940; c=relaxed/simple; bh=rnpDRseKuu1oN8cp3YcqKaQfXZngEhiYuWq2pbqtt18=; h=Message-ID:From:To:Cc:Subject:Date:In-Reply-To:References: MIME-Version; b=hBBMRxWpAwfV0EW822vDubBgSV8KDeYEDhl4Yooz1wxCRZO8Fmty1zrG5e1f+MueikDZKTd3xMpLRpJanKOZg9SlD+NTPNAiZ7uTDl5wNIUPvZe1Ji8tNB7Kqk66wQav1z4SDuM5wA5tYjwXRvkKmngvA/7LnKi5Z29XWPKQnyU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foxmail.com; spf=pass smtp.mailfrom=foxmail.com; dkim=pass (1024-bit key) header.d=foxmail.com header.i=@foxmail.com header.b=QqQ3t8OE; arc=none smtp.client-ip=203.205.221.236 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foxmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foxmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=foxmail.com header.i=@foxmail.com header.b="QqQ3t8OE" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1765509925; bh=t1EEodWpGoWnLWEjGc4KI0PlVkqXQi/P4R9mrlY7TsA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=QqQ3t8OECn3YJJlfe/idNW6IM0P/opHeUJZjyZe3fz7qlfoHkeHpXo4CwobfRft6S omu0auBudUgGj7mC5KPxyqPsPo2YA6RmHBkq+bJ/EcsgGF9QVBVZMYTJepGQOvkTcS yBF7metCq/RC/yH6nWegd2VY4i4CnUizhVUeG+jU= Received: from meizu-Precision-3660.meizu.com ([14.21.33.152]) by newxmesmtplogicsvrszc50-0.qq.com (NewEsmtp) with SMTP id 6550C291; Fri, 12 Dec 2025 11:25:21 +0800 X-QQ-mid: xmsmtpt1765509921tyekpd4jx Message-ID: X-QQ-XMAILINFO: NsQpel/Jbc8WVc6udj2FQ5rYW7aNg1fLRhgfjUiq26lolWIRdGhDwwv4VWoq7/ jIOt+q9kFAhManen0WnriHXYXfSk6tegRfh98AIEmGSoQVaqFylM01A7jUjJCVKfsIT3wTb/BHV+ 0Rz6Zw35ULVauyB5LHvKo7MQX+Xt1jlvcR0BYGVu9aquzRRn5kRDPv/mA6lBeZFXc5F5RU11QqTn hXZlvVZeD5PjPG5sDZ5bo6flizX9XyFEjVX5Bot2DTTAN0Sxj9TkpIobaR3KMBVCg20oM9mmAkaf zueNjLFTr3rtcbuBQpnR5lT7QN9r4/lvSY3ikwrcKpUFYt6gNZLOZfRvsKzjvEkhx50Mkh1fd2pU kTk9D3pq8qY7rIi37bK0+CcnMNYiK5BQW+2qIy4FWCw+7dwKC/t9sNmNx5ZSidS72mq6Augd60sj zG4vOeUPRGG5u6mE96BEMhjt9pTlAlLNhP0g4dphBSMTbgSloaQGOfEDX8eTiJ25tsZDbShGMyVq jQkOYPyP/040niqlLIqnOK4/powCvyv14/jfpQwxzXQ0H437iKaR8PojG3qO8tYL6P4/xRpGJ7NT MnJ3HTzBBEcBtRUrl8/baUuNGNCmhkA4IZYJsiA083uyz0uaD2YaU0JPH6M0c14zr38kO1cXUpE/ Ex7Yc2izU1Ph3+S5BSzUqe2vxngcjx05ANbQehCeHDX2hvNyKx54OMYJfaL5DnC178k95dTARgI1 0wUdLjDRPTqepokD2gPCZ40AEsIluONnzx4OfzVVFWx+k9XkJgkohRUa4Cr2fFY5T0lUZOsI9n+C RqIMFjxLVeaXjMVLXCnQcwCaoN6rtKm9NoLpHcUEKP8elGWgii3dJs/8/9PkPSAaSz4NEMju/QjW FC9obwZfV3BgXltwDZEtdDm6T/lb59bvAS3SCibsPHxOk+xEJHJYN1iEg2HqjtbzU271clB0lI0b P9y2UabTWqjL+GOkEZylgpEBAlVE1WuWQRaoKjO79ETfcCAGvEaLaKL9B5+dy/uTnNUh7nKafXK4 4vVpeBVON2cdL29xcJ7ZOj1PBCVNyZ7ZUtA1gRWP/PGLV8brpRp4pPM7uUnhAedJFqssQZoIAR+1 UKc4UnpqW1lGwVHgomsLuTpas9kD/TUwegA9Mj X-QQ-XMRINFO: NI4Ajvh11aEj8Xl/2s1/T8w= From: Yuwen Chen To: ywen.chen@foxmail.com Cc: andrealmeid@igalia.com, bigeasy@linutronix.de, colin.i.king@gmail.com, dave@stgolabs.net, dvhart@infradead.org, justinstitt@google.com, kernel-team@android.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, luto@mit.edu, mingo@redhat.com, morbo@google.com, nathan@kernel.org, ndesaulniers@google.com, peterz@infradead.org, shuah@kernel.org, tglx@linutronix.de, usama.anjum@collabora.com, kernel test robot Subject: [PATCH v2 4/5] selftests/futex: introduce the declaration of atomic_t from types.h Date: Fri, 12 Dec 2025 11:25:19 +0800 X-OQ-MSGID: <20251212032519.1842463-1-ywen.chen@foxmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: 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" Introduce the header files specifically prepared for test programs from the tools/include directory. And solve the problem that atomic_read and atomic_set may not be safe in a multi - threaded environment. Signed-off-by: Yuwen Chen Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-kbuild-all/202512112344.gsyPl2ag-lkp@int= el.com/ --- .../selftests/futex/functional/Makefile | 2 +- .../testing/selftests/futex/include/atomic.h | 25 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/tools/testing/selftests/futex/functional/Makefile b/tools/test= ing/selftests/futex/functional/Makefile index 490ace1f017e8..8589917a4b126 100644 --- a/tools/testing/selftests/futex/functional/Makefile +++ b/tools/testing/selftests/futex/functional/Makefile @@ -2,7 +2,7 @@ PKG_CONFIG ?=3D pkg-config LIBNUMA_TEST =3D $(shell sh -c "$(PKG_CONFIG) numa --atleast-version 2.0.1= 6 > /dev/null 2>&1 && echo SUFFICIENT || echo NO") =20 -INCLUDES :=3D -I../include -I../../ $(KHDR_INCLUDES) +INCLUDES :=3D -I../include -I../../ $(KHDR_INCLUDES) -I../../../../include CFLAGS :=3D $(CFLAGS) -g -O2 -Wall -pthread -D_FILE_OFFSET_BITS=3D64 -D_TI= ME_BITS=3D64 $(INCLUDES) $(KHDR_INCLUDES) -DLIBNUMA_VER_$(LIBNUMA_TEST)=3D1 LDLIBS :=3D -lpthread -lrt -lnuma =20 diff --git a/tools/testing/selftests/futex/include/atomic.h b/tools/testing= /selftests/futex/include/atomic.h index c0dccb1b966ba..b23e1a50949a7 100644 --- a/tools/testing/selftests/futex/include/atomic.h +++ b/tools/testing/selftests/futex/include/atomic.h @@ -18,9 +18,8 @@ #ifndef _ATOMIC_H #define _ATOMIC_H =20 -typedef struct { - volatile int val; -} atomic_t; +#include +#include =20 #define ATOMIC_INITIALIZER { 0 } =20 @@ -30,36 +29,36 @@ typedef struct { * @oldval: The expected value of the futex * @newval: The new value to try and assign the futex * - * Return the old value of addr->val. + * Return the old value of addr->counter. */ static inline int atomic_cmpxchg(atomic_t *addr, int oldval, int newval) { - return __sync_val_compare_and_swap(&addr->val, oldval, newval); + return __sync_val_compare_and_swap(&addr->counter, oldval, newval); } =20 /** * atomic_inc() - Atomic incrememnt * @addr: Address of the variable to increment * - * Return the new value of addr->val. + * Return the new value of addr->counter. */ static inline int atomic_inc(atomic_t *addr) { - return __sync_add_and_fetch(&addr->val, 1); + return __sync_add_and_fetch(&addr->counter, 1); } =20 /** * atomic_dec() - Atomic decrement * @addr: Address of the variable to decrement * - * Return the new value of addr-val. + * Return the new value of addr-counter. */ static inline int atomic_dec(atomic_t *addr) { - return __sync_sub_and_fetch(&addr->val, 1); + return __sync_sub_and_fetch(&addr->counter, 1); } =20 /** @@ -67,12 +66,12 @@ atomic_dec(atomic_t *addr) * @addr: Address of the variable to set * @newval: New value for the atomic_t * - * Return the new value of addr->val. + * Return the new value of addr->counter. */ static inline int atomic_set(atomic_t *addr, int newval) { - addr->val =3D newval; + WRITE_ONCE(addr->counter, newval); return newval; } =20 @@ -80,12 +79,12 @@ atomic_set(atomic_t *addr, int newval) * atomic_read() - Atomic read * @addr: Address of the variable to read * - * Return the value of addr->val. + * Return the value of addr->counter. */ static inline int atomic_read(atomic_t *addr) { - return addr->val; + return READ_ONCE(addr->counter); } =20 #endif --=20 2.34.1 From nobody Sun Dec 14 05:53:23 2025 Received: from out203-205-221-192.mail.qq.com (out203-205-221-192.mail.qq.com [203.205.221.192]) (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 1E24D2D0C85; Fri, 12 Dec 2025 03:25:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=203.205.221.192 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765509946; cv=none; b=pIa3N6NIMNpVJncRNMhMU5D0RpKnSKeo+JNsHbjQogmtgIep2jyq+eW4NPH5xxM7YAKB0ZY8j1nxQduBYUd/HJWa0rN8Rivum6EpNLQcgLDsczgXnnji8F0mNslrn3HrLo2NH6knk0PC6CuWn9ukw/7Lq4oQkbRJTJArip0wFBM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765509946; c=relaxed/simple; bh=Nex/oon8j7jao0rAiMT18+Qlahb70pnvBFyuLcCfMtc=; h=Message-ID:From:To:Cc:Subject:Date:In-Reply-To:References: MIME-Version; b=sakZeuWhjIAKVcVNVetoScdonIwMWqxDDGX3vVTiV7LX5cZhcHMSsdbOnvMNZcQ6QnsojT8sICziX69uDO/hw3aqNsBJF8w6c+gveYNr+RajolAMj9uL0VjCmbD1hFPXcxIWsqROLLe6egQpzZMqB8pfFqm//Rf37NZKg2lR6yk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foxmail.com; spf=pass smtp.mailfrom=foxmail.com; dkim=pass (1024-bit key) header.d=foxmail.com header.i=@foxmail.com header.b=rABEoZXS; arc=none smtp.client-ip=203.205.221.192 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foxmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foxmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=foxmail.com header.i=@foxmail.com header.b="rABEoZXS" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1765509937; bh=QK3nE1ne7aea/LyPtdjql3srPWIhxJ56KdqwzowyUvM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=rABEoZXS/iZZ06TQXz4JRJIS0v4lmJ013Ah+Dq5Xk5vZkeVYEziugQGsK4zDDgfwA Mr+NWac/qywBu12QmmNZVUD0iE+uRmctIyyUchq81Pu9jSFqwSj0wa6iwdcLGhddC4 jKkFWxoG8viWksuGDmGAJ/QYoEKwVSf2XJBhedpA= Received: from meizu-Precision-3660.meizu.com ([112.91.84.72]) by newxmesmtplogicsvrszb51-0.qq.com (NewEsmtp) with SMTP id 661906EA; Fri, 12 Dec 2025 11:25:33 +0800 X-QQ-mid: xmsmtpt1765509933tfdq12r78 Message-ID: X-QQ-XMAILINFO: NXu+3P8uW1MUEv+H/F6HGCU2EvaME7SX3ol31+NZMZH5H4z0YN4PGf25oh3DZP qrNoEwRPgOlym9OY1dfS961s6R5w7Zc8hdK9rzHqGG10GUZ9M18BWLmdDnTr3UkvZO8zn3zr86Se nWMMAKEBTKtTxudBghmBhVgh1g6ZXPOS0l77MByfLs+Dlq3qARshcyIWCztzaKzQ//BTMahSrF+K YXln1qWRQVDJZxCh9ONnnCaRGZmDvkADBg+oz2x0xNd+hNedDHgyq5iGB0fXST8vbty0vRnY4mgv Z+qxnzT6WIrHp9WTAL7bcjl6bo2YMmG4ZyoCUnSBL114LWE5T9zhBs0kp7+mnkyJ/iAjhC8Q4ss5 D7dSVFyNmxj680so1bNAjU6p2LTJBTd9geG4WgEQxR+q+uFdKKfI6S2PK5T4qcbisp44Bud2KZo5 MPlqlsKbRXa0SF5Du6z65Hz8wBoF6v+TFnIzSqSmrKmDisTAJq/wEaK1By0oherpXGkJaWD8vDTq /FdBLnOku2LYXh3IdkK/KO9PczU6+zNN720QtEfnQGjXpceDbrCdvdRYoG0vY9SBKNWngEB/bAre H4gCDnlLtOrpS/XdXihaDEbb30xXBSYZtJIKPo0pKUjOtlP0gFtHNtVLkke4ctY1vRFU4VaTzQU5 M8DgxZEVWnHnmfMEfuqlf+MXXsvyVEkNmb0EcgcaZQs+++c+OzjCNEb9I4Pq74kAgUUBMPcT7ONA 0s7Bo0Xebb7a50vKsjEHkMVtebGU1/G4Ks8IEcJBDgGtYS/68FEnTKkgWRoye5RlzCsYFSZw8kgR wznkj0FPHM5WY0GvToPg41Ny9b5iiLbim48TGClsCn2gzmsERi7HVO5CeY1Jjo7eELWQ6Gn4wupS BR5Wfw07NNqVNMrEiqV+Z722jw0vT5VP3e4MAIEu1ZDiWIE2FkmFBLzCfyx50rQOlkezWgQrSRed J8w176cqLr6u9WEYmUiO8pg0ZjbnIIuxFISYifJWNk6blquIFTU0EeU55Tem6GlGfgfHZXPIhxw5 BrsD5MTAJFTBg1SEF3ecy/G0RpsLVQnwOVV5b4q7qcgxXakkjcS/o52qWt13nujifeo/xJJQKYSw fMB0t+etVp7s013dKT2e2ovx8RIGk84fPupPBrq3B2mukF4skq54mv4bEUzQ== X-QQ-XMRINFO: NyFYKkN4Ny6FSmKK/uo/jdU= From: Yuwen Chen To: ywen.chen@foxmail.com Cc: andrealmeid@igalia.com, bigeasy@linutronix.de, colin.i.king@gmail.com, dave@stgolabs.net, dvhart@infradead.org, justinstitt@google.com, kernel-team@android.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, luto@mit.edu, mingo@redhat.com, morbo@google.com, nathan@kernel.org, ndesaulniers@google.com, peterz@infradead.org, shuah@kernel.org, tglx@linutronix.de, usama.anjum@collabora.com, Edward Liaw Subject: [PATCH v2 5/5] selftests/futex: fix the issue of abnormal test results caused by thread timing Date: Fri, 12 Dec 2025 11:25:32 +0800 X-OQ-MSGID: <20251212032532.1842495-1-ywen.chen@foxmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: 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" Fixes a race between parent and child threads in futex_requeue. Similar to commit fbf4dec70277 ("selftests/futex: Order calls to futex_lock_pi"), which fixed a flake in futex_lock_pi due to racing between the parent and child threads. The same issue can occur in the futex_requeue test, because it expects waiterfn to make progress to futex_wait before the parent starts to requeue. This is mitigated by the parent sleeping for WAKE_WAIT_US, but it still fails occasionally. This can be reproduced by adding a sleep in the waiterfn before futex_wait: TAP version 13 1..2 not ok 1 futex_requeue simple returned: 0 not ok 2 futex_requeue simple returned: 0 not ok 3 futex_requeue many returned: 0 not ok 4 futex_requeue many returned: 0 This issue can be resolved by checking whether the child thread is in a sleeping state. This is because when the child thread goes to sleep, it indicates that it is waiting for the futex lock. Fixes: 7cb5dd8e2c8c ("selftests: futex: Add futex compare requeue test") Signed-off-by: Yuwen Chen Co-developed-by: Edward Liaw Signed-off-by: Edward Liaw --- .../futex/functional/futex_requeue.c | 58 ++++++++++++++++--- 1 file changed, 51 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/futex/functional/futex_requeue.c b/too= ls/testing/selftests/futex/functional/futex_requeue.c index 7a22458c7fc96..994295fac6972 100644 --- a/tools/testing/selftests/futex/functional/futex_requeue.c +++ b/tools/testing/selftests/futex/functional/futex_requeue.c @@ -7,6 +7,7 @@ =20 #include #include +#include =20 #include "futextest.h" #include "../../kselftest_harness.h" @@ -15,6 +16,7 @@ #define WAKE_WAIT_US 10000 =20 volatile futex_t *f1; +static pthread_barrier_t barrier; =20 void *waiterfn(void *arg) { @@ -23,28 +25,59 @@ void *waiterfn(void *arg) to.tv_sec =3D 0; to.tv_nsec =3D timeout_ns; =20 + WRITE_ONCE(*((pid_t *)arg), gettid()); + pthread_barrier_wait(&barrier); + if (futex_wait(f1, *f1, &to, 0)) printf("waiter failed errno %d\n", errno); =20 return NULL; } =20 +static int get_thread_state(pid_t pid) +{ + FILE *fp; + char buf[80], tag[80]; + char val =3D 0; + + snprintf(buf, sizeof(buf), "/proc/%d/status", pid); + fp =3D fopen(buf, "r"); + if (!fp) + return -1; + + while (fgets(buf, sizeof(buf), fp)) + if (fscanf(fp, "%s %c\n", tag, &val) =3D=3D 2 && !strcmp(tag, "State:")) + break; + + fclose(fp); + return val; +} + TEST(requeue_single) { volatile futex_t _f1 =3D 0; volatile futex_t f2 =3D 0; pthread_t waiter; - int res; + pid_t tids; + int res, state; =20 f1 =3D &_f1; + pthread_barrier_init(&barrier, NULL, 2); =20 /* * Requeue a waiter from f1 to f2, and wake f2. */ - if (pthread_create(&waiter, NULL, waiterfn, NULL)) + if (pthread_create(&waiter, NULL, waiterfn, &tids)) ksft_exit_fail_msg("pthread_create failed\n"); =20 - usleep(WAKE_WAIT_US); + pthread_barrier_wait(&barrier); + pthread_barrier_destroy(&barrier); + while ((state =3D get_thread_state(READ_ONCE(tids))) !=3D 'S') { + usleep(WAKE_WAIT_US); + + if (state < 0) + break; + } =20 ksft_print_dbg_msg("Requeuing 1 futex from f1 to f2\n"); res =3D futex_cmp_requeue(f1, 0, &f2, 0, 1, 0); @@ -71,7 +104,8 @@ TEST(requeue_multiple) volatile futex_t _f1 =3D 0; volatile futex_t f2 =3D 0; pthread_t waiter[10]; - int res, i; + pid_t tids[10]; + int res, i, state; =20 f1 =3D &_f1; =20 @@ -80,11 +114,21 @@ TEST(requeue_multiple) * At futex_wake, wake INT_MAX (should be exactly 7). */ for (i =3D 0; i < 10; i++) { - if (pthread_create(&waiter[i], NULL, waiterfn, NULL)) + pthread_barrier_init(&barrier, NULL, 2); + + if (pthread_create(&waiter[i], NULL, waiterfn, &tids[i])) ksft_exit_fail_msg("pthread_create failed\n"); - } =20 - usleep(WAKE_WAIT_US); + pthread_barrier_wait(&barrier); + pthread_barrier_destroy(&barrier); + + while ((state =3D get_thread_state(READ_ONCE(tids[i]))) !=3D 'S') { + usleep(WAKE_WAIT_US); + + if (state < 0) + break; + } + } =20 ksft_print_dbg_msg("Waking 3 futexes at f1 and requeuing 7 futexes from f= 1 to f2\n"); res =3D futex_cmp_requeue(f1, 0, &f2, 3, 7, 0); --=20 2.34.1