From nobody Tue Dec 16 18:23:29 2025 Received: from out162-62-57-210.mail.qq.com (out162-62-57-210.mail.qq.com [162.62.57.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 034012DF153 for ; Thu, 11 Dec 2025 08:42:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=162.62.57.210 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765442527; cv=none; b=b66dwk0d4ykOTFMOCLGovXqvR+TbHdEi2IjMyphm3k02K3jJsnqPihZpQtHJgZUIJHJmwm8N/M582FMfDGs5k1LvwQxsnUx6virN7v/30dK9agY383EpjzgKwG78MEG50pedXE5Dm0/JBVL5pPMSmohHFcS8gA3wfIUtIRnwSDY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765442527; c=relaxed/simple; bh=86jM6/8ayfHPNKCYQQ/v+Gxswje4pbMb7uGQHheHd4c=; h=Message-ID:From:To:Cc:Subject:Date:In-Reply-To:References: MIME-Version; b=TSyVlfOVZqzxjFDBWho1/YeYRneJT00kYA3gova/n8gL2NC4OYvHpGunFWdJs3bx35WNfhP0ORAFdG7kD2dt1tAaLETXjtXswk7y3gbiJd/rnV1qtzMzi7jAgq7jOshCoR7ByHqNTx4gloGF8b09EBa9TO9QYy/neHwjlV4r6yU= 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=dDa7zysS; arc=none smtp.client-ip=162.62.57.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="dDa7zysS" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1765442519; bh=zDJ4Agqgm0IgPliNwt9ogn6DK+Rs7gCySxS9/AzULK8=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=dDa7zysScahAeibU60mRICgjxH1Oye3XmyYw2ACSNTBjoGDSVhWXoqu8FZUMCf/BK 5LlFY4QlZmdvPeqRh4nzA+6geWiKE6vO9UEQnrCwX1XKUqRpSCuCk9ptCiE5X3oLY1 WB6gO8VkQx3A2kKpQmKTL6iZokZDxZHMqNbROaww= Received: from meizu-Precision-3660.meizu.com ([112.91.84.72]) by newxmesmtplogicsvrszc43-0.qq.com (NewEsmtp) with SMTP id 98F2F61A; Thu, 11 Dec 2025 16:38:15 +0800 X-QQ-mid: xmsmtpt1765442295tlnjc9yz3 Message-ID: X-QQ-XMAILINFO: NZSml8PQdeKA9C/wv1ou5+KuyIg96s2waQuBjc517SWlxQfXhoeAAavj3syLmY /ZctY03wPWwjT9KZMJPLllDLSTWsnAZGHFX/E4M6DkwFFoqix2PFxVoroqBwtkVBnSi3swY5P5Z8 cFfBuAfLwpewDAtrN/7BlCxDGqNTJhu12ORSh859+6ubM6c05Xpo4hk5WoynNtx6HtYwE8WL81OZ Enb7xemSJhwUR5GKmNVXF00H7N49hTc4EZmqUYPk+UY/nPIrs14c7/RzjoT3yHMQPhNiSW0FKDjA tAycSpW7636IfQzOmglfdN1m3ad9UPg4kTDPZgoW9QqpcXUiJzwYm9I8YbKOpdoG+BCVlfCxY2V5 ENimuGZM5M289X7NgyyI4UgxnMiBJmlk1BXhsLt8G2gHjfa/WnULBPQVFPirajz3Taiz/longMUx dwO9f8pQs51BNyiCaltv0dJTha0JDc7TvUsGpfCpQIHGDDW871hYh3ELshi1cCrMj5/28njkUftR 7nKHlTb3zhdNqA25FOE2CbzhuhcMOljTkg3jzNP9CYBGwUtjJt+J9W+/ARxaBxlWtYc3mG0Jjb6G tUeoyAuqFXQn22aIH8OIfF3MehdXVXaVoSAgSjQEYXKKg0IWSZzsMlME3ghmJoGHXMGMv60NL52J n4mz/s/x3TUwWcz9hzPPCUG9Yqp4yGMLxGKgmcmwkECSkTCIDhVVae5BE2+32jtiJQ/yWQCIqvDp 9/eGjEYHEu24kZAWxGy+xJHkr+YsNi/vMjjOXGPoQ8l9W8eO2qGDUvt4r9BcrS6k3EIU62SUf0Y9 p1gUYGBDdeKLDwKvV0ep6du+Fm9XlvZIAvy3RH+uSOC2A9WsFUVNiUhRUOy7jXQ3wPmTAap6OxHW btTRhpUe4q+GCihdvjaexrN7jxbqBgxjuTgQxraqn4mJE7c8c+eJEq67EnYaOSE4qTo50u7/OEca 1CfZGySC23W6fEK/nosJRegmFHYba6tnY+fHXcEBuDx4thOIw5aIsfAkbXICKaggGeZrwou1Sm4o hmNfXjwdOmVRF2Koje4/pYBnXDnp5vX+QmsJ5MpJ3dU7wlTvRXMdTEbbb3x/t7eCadqLUaY+8A1K EQGjHJW0ms2rKLfZF9W1Bl79J7TLNmPtN3yWu6 X-QQ-XMRINFO: MSVp+SPm3vtS1Vd6Y4Mggwc= From: Yuwen Chen To: ywen.chen@foxmail.com Cc: akpm@linux-foundation.org, andrealmeid@igalia.com, dave@stgolabs.net, dbueso@suse.de, dvhart@infradead.org, edliaw@google.com, hpa@linux.intel.com, justinstitt@google.com, kernel-team@android.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, llvm@lists.linux.dev, 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 1/3] selftests/futex: reduce array declarations in the requeue_single Date: Thu, 11 Dec 2025 16:38:13 +0800 X-OQ-MSGID: <20251211083813.1795854-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 Tue Dec 16 18:23:29 2025 Received: from xmbghk7.mail.qq.com (xmbghk7.mail.qq.com [43.163.128.44]) (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 1A1E6283121 for ; Thu, 11 Dec 2025 08:38:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=43.163.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765442318; cv=none; b=JkF+QB9axWUzKmcM1ORBCgCduf1ZDN25rQenZz5BiZ6uH5yPkzmtV7vHg/TCCM0YkBqJSGLmZaPY68RZo5VmXG/qlYgtYdNaTuVearo6dNqwTk1PtTYR3qu9NBa35JlMpqo73bl2FudlSe44SZmrgGOPo2xH6BWnRZiYI5qtzA4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765442318; c=relaxed/simple; bh=C+08LbzQ/z+34cND2oLqaoWybgghg1e04b/dmySNlAk=; h=Message-ID:From:To:Cc:Subject:Date:In-Reply-To:References: MIME-Version; b=NTcwQ1ajrtrVcWafQubn1pIlpu6XRrcJczlrnUhVLpaWoUiS5Y/eCNvoEbKZ43AEoQkI4aXcBo9hnMm0AGLlVRQHssoP1Wj3eZTNxryEcqylsg/9is/GEKy5vSW3ZgxHYRtZFSnk6iuqRxrShnzG0G2eJTukimVm29md7UeFQEA= 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=cn8W+jaW; arc=none smtp.client-ip=43.163.128.44 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="cn8W+jaW" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1765442313; bh=v2V53COHy+vq93ovfqBudNjOizsywx7dvc+nT1DYRpk=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=cn8W+jaWaxhV5QlBstqNPQHZGfGgLFhEp/B84OVMURmMgaczFb0iA0nEBFEtFpro2 09iViF/JBbG4HjlGf3yY3IMshAtPuIj3PByC2XsoO2amn6pLL+/6yeqOfOzf3wsEd8 8SevHzZAIoH4DCM7YnxCeunM/ErLgkVaMUSOaJhk= Received: from meizu-Precision-3660.meizu.com ([112.91.84.72]) by newxmesmtplogicsvrszc41-0.qq.com (NewEsmtp) with SMTP id 99C86CEE; Thu, 11 Dec 2025 16:38:28 +0800 X-QQ-mid: xmsmtpt1765442308tvdlxcn0s Message-ID: X-QQ-XMAILINFO: NvlvDx7g+Np58u07Ay5Ip8QUxx3K07bUObagjxfVQ4igcs3gCUY117pX+PPyYR EL+g1O/mYFxDNYn5Pvb+msMHCg14rurWqXi0I0Xf0AxAPO+gxhxZXX8ED+nKDOBITtG/3uMVDxVK MeFO2giSdhT46m3TkUA0rh6ZkSYVf7SlMdgfpfCLN66MCHlrK2lPGeAzlv4gJTwBW6I9YewNXGo5 SZPxF148k+7hkNQhBOF6PCdJGAUw4IOjLQcWKEdFqcfysnnayXI3S/Vb5WsxKEUfNtZ7xIfZlNW6 SOSXxdOLN5ao2REQw16SSG/7ENlCP6lSx+8oDIrQ+s3aIF6EeCDgkUzTIQsTZzPSSUL7MebXTy9v XLV84O0wkxXKZTX0IHMGQiZFWO/JuQNphTq69vQeXOL7E2HaY+EmmWCRHS5z+3p69pBOhMu8sTxw uilNoJnNPh2HTtoV4P++gZrQ7NcJ5JHZxHHXYVTUSrejT3EvZkJfw6SSwWq5STst9ps0zjEX4uNP 04kmFXhK3sSpjeYAI26TfVwkeATMKnOZYF9JK0dM3K1ZU3uUPbOdGSSh8lkclVnToJL/dgTFR83K qoLJWEAkByYS9+C+IYwi3xWd4BTkePm3zoJ6xS156jycrE30H/mFNT6Xk1vquaEE3n2AunEVT2od lwwYhkal3BnU5gW1GTogqVkOaR57fSelmd4zvNkc/PaDEJIrFcpG6A2zAUYZcVVgpq9bC+9m0FBA EHUXJhlNKL2wBpn9AH+QCW0Hiuvq/BYRO18nhhL1kCiDq1OBclS+qtjctQJmeDLZQphtg3jdzizl HTmZPi3xnjTkQzUZKt4JwkNolJI7Ni+meCQkxnI0HBgHv3xtUk1KgLgcitYC9Xz5LeWotRHCMzRr OhugKtsRmYgAzfjdK5qOmrkQOur1tEf4ougffdXLnAYULZHSrAF38kbiPOeGE1LkUqCqyUBvCyx/ MxiAjhWccg0l/KMQBXBzG8hUS7a3G6cwuAMQOFjtuQu4MoSNzHsdyDbMR3TFf5zt60Awvbce3aY9 +BOCjRIVKiOmMWi6InXGRKXf+T/Pnx2GD5Xiaii/bSfZ8F+hzTS0KuVVO+UsboJDVjLeaogUMJ3V 0cZ/Fx3KMLJM95fijLZ4a8Fh612bWLxIBgSreNXENH7VAIF9cHX963YCESoit5/dXN8PSH X-QQ-XMRINFO: OWPUhxQsoeAVDbp3OJHYyFg= From: Yuwen Chen To: ywen.chen@foxmail.com Cc: akpm@linux-foundation.org, andrealmeid@igalia.com, dave@stgolabs.net, dbueso@suse.de, dvhart@infradead.org, edliaw@google.com, hpa@linux.intel.com, justinstitt@google.com, kernel-team@android.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, llvm@lists.linux.dev, 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 2/3] selftests/futex: use pthread_join to reclaim thread resources Date: Thu, 11 Dec 2025 16:38:27 +0800 X-OQ-MSGID: <20251211083827.1795879-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 Tue Dec 16 18:23:29 2025 Received: from xmbghk7.mail.qq.com (xmbghk7.mail.qq.com [43.163.128.49]) (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 6B5902E11B8 for ; Thu, 11 Dec 2025 08:42:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=43.163.128.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765442531; cv=none; b=c8vnR4Zr5bPoKAszrIEywH2/uTTMOnTCLvEpO47hLFHAkNVBwnjf57jpSfqOGyTJz1s9sTGvt4onU81SeBU8kajKj4stBrjyrZ17RYHLPWRj1R46tJ+bvkUk+IZuJ++qgRqUuhgX6rNxcBz/va7j6BQG+czKT9mn+4ClUAIS1CU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765442531; c=relaxed/simple; bh=OaSgAGZgu5RG4Xl0VKKZRIVm/ecsyP8/6HPNanHuPCQ=; h=Message-ID:From:To:Cc:Subject:Date:In-Reply-To:References: MIME-Version; b=U8fHfAHTdmJ04DtwwkghZE+TJWHUySRg+pNFd9NmCzRnNw0UUQqlnvr/gcpkQIL8XF8ju1UlaPFAxNSvN9YKXRZfPUQrtXWxmeqU4VxvFW2jVqseWAo1cPRVIf0vmwr1DoGw841RPrqm3DkCmnW9SC3FvCZvD+DurJ6bXSVEBqg= 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=dHHMw4lk; arc=none smtp.client-ip=43.163.128.49 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="dHHMw4lk" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1765442519; bh=n4KWtaaPkv1fkuquVXbchtgc+gwGqnmVqPn1pkVnRo8=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=dHHMw4lkIVfEHSNU53L8TmzLZr+3h2P5yHiY7y5JMm0bri7F/MhhH3tuoigvLG67c H/ZrJpTSvpttqDHw40CdOzJ1BpenAa8YzJMMb4RLvnDoR0teggXPZFZHwCKPkjAWak +AH+x+lzLv1qeCsbCAdPfWQokd8/Bn4wnXS/hNO4= Received: from meizu-Precision-3660.meizu.com ([14.21.33.152]) by newxmesmtplogicsvrszb51-1.qq.com (NewEsmtp) with SMTP id 9A636453; Thu, 11 Dec 2025 16:38:38 +0800 X-QQ-mid: xmsmtpt1765442318tebfhy6c9 Message-ID: X-QQ-XMAILINFO: M0Sh0xCkwVkdNmtdG9antE7A0JygJOTcZ/0i9oZMHT46MtOuBLbHgVyB72/9V8 UvtFGqsf63EpkuctT7U9hgXYrjahGbQFWV6mCmiGhaA7DHWiaObcM0/NAvH3U5RynJDUY3sA/5/q IJg2Nboe7TlOa9ih8MVRWdiDaqigI6j4cAaH5QzeEUYdpi0DD0WGGLsLeMSCqPpXgPOXXdfhegNe yJi5JGYaFjOmzn8pLRUI3tMuXOLxLz7+Oqk1ZMq/abGvvy8aUkxOoS4fbo0K8ZsY8xVIcxBEUmgW WihdnLg7FEXR0dbaekbYp7a9c5yeLdGNDo7rSXn0FC4ckKc6yq2MgW8zsqJPk9mz2IkGJh/OaiCa jNRxiyh8Ww+fBFn5foGNuE2KrZH6uDhazMFE+zAR7naUUTzy4UPE902ygSKFDZlkmrkE0sgly7CE VbASL9pw4b4D/T7qnvp41f/amcjOilTgsN+17YUJqmpNm319l1P1bQ4uQEeZTeI32U+XErY6q/Q8 LJCwADdCt3aBz5NvpOC0z68HGnmNR3PwVgQmFwfqQTFCWjmVfZOGIwgCvVdT3grA1nSo4fhR22LZ p9bAL+6A2KxPc3PTHEpMCrBql1pB8U054cTTaP6hyUJmHVvTtT2ODEsYDF3nP1oIc5cqbcR28O0x u5J7zmvDF9RNpX4GE4I8BJb0FrxkXpWtV67aLmeM1w17viwXjRSU8wH5okLSf+AGR8tuJsZ3ua8B fClQUtRLdZeRGOkItayI/ZckKBzBSMMBI+dMnztAM+WmwBuaqLGf0NTbLd/evkjday0764Mysmrt POWx3kkJIXsTkV89/tGQTKI/OqnZkag+CHjXLqgFAr3dm+dExkVkrvCTz21XQoFKAhWAJ3E5EBh/ lwY1Iz0Q4wyL/3zBQbk1aQQmUEM6v5cLP0vSJ5u+7EyPDH6Avk7EGdN9RUZzoz1DK5Zo97m+Mwj+ OXoGMSEWKt+HE3JFvERbUG65BDlTRszkplbE8q2ZgkCVLV6C9xel0hFU85Srl2W2rgJoay7kMHOL AjIxexUIMq9J4fnBrZ09YaMJsDQUaCgEzDeE+dlZncqqmJyQzSd42gANUuw5WobEmEc/01JKVpWJ SJHSz/2Xfa0rYibuPPkMvagJPZi0hj5O1FrsNnCx+TlhawHh4= X-QQ-XMRINFO: NS+P29fieYNw95Bth2bWPxk= From: Yuwen Chen To: ywen.chen@foxmail.com Cc: akpm@linux-foundation.org, andrealmeid@igalia.com, dave@stgolabs.net, dbueso@suse.de, dvhart@infradead.org, edliaw@google.com, hpa@linux.intel.com, justinstitt@google.com, kernel-team@android.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, llvm@lists.linux.dev, 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 3/3] selftests/futex: fix the issue of abnormal test results caused by thread timing Date: Thu, 11 Dec 2025 16:38:36 +0800 X-OQ-MSGID: <20251211083836.1795902-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 --- .../selftests/futex/functional/Makefile | 2 +- .../futex/functional/futex_requeue.c | 58 ++++++++++++++++--- 2 files changed, 52 insertions(+), 8 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/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