From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.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 0E0A633DEE9 for ; Tue, 4 Aug 2026 16:32:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.165.32 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785861127; cv=none; b=HcFr4F1bH85Ic4ROdVogQ44Y2VeL+V29s2u6Crsl/87VXfmyv7SGIiQs70YNbIVCOAFQBdLR+Hxp7SpkarKNkfsVithzaNEnAZbsQHIKOQd/do8LY3nfoENoGD6kt48umrRgsrmw69yzSUefE6DtEun56Q/RW0fdBHufiKjvxu4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785861127; c=relaxed/simple; bh=B0qFluCe+nIvg9YwI/zuBMEY+CMOt7xNDklJ09e+O1w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Frm/A0T5do+GJyiCaXiAzViyYlJY1jsyL7PExfhotQ1JETDnSreSL5w7BAhyAgNQPBoeCWyj9oxB8tPh7KTpxX1HKQI70rj+gnqAE+ZP/pTnIE8NVoBJHiK4jj+glfRKLJX1NB8Bj2nuyg4Qj3+5P+bm1X3kd/Lb4yizmPyBl7o= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=XOr33cQB; arc=none smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="XOr33cQB" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 674FxaS21651961; Tue, 4 Aug 2026 16:31:49 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=pvGQoHM4XnE7EyDPU+oD3ECvDpZGCsg2pZOT5P8ExAU=; b= XOr33cQBIaKpIfdsVUcesqKgwunKnSrcvsoH5q04sdk1wzjF9TR/+Bkn66o3lSqb ttT8cgGerxtN+Ka9tEFovdzUU9UiAoELJJG6ZuLtEEsUG3wMorlDJ4yqZD3VTOgS s0uIaymoRXYH2gkJOVW74UhNHtmPnaHLA90xTLPyzfmvBlKN9Mo9ZwFFS8YAKJP/ V69kfuqm9gSMgEDw8Cl/yANUddayAvTU9R3UShlBLCKbFri3X+ZtUnqtQdoc+rFI 7c6o5imaGWryEBqJ3M67WbUqcua+jwPJ/HhunBoGNafJBv0cX1zDrnDGvr4MZOCl mjWDFyLF7vLl+jFNjF3iFg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4fs8p95y89-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 04 Aug 2026 16:31:49 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 674GU601035084; Tue, 4 Aug 2026 16:31:45 GMT Received: from pps.reinject (localhost [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4fs78c9y0k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 04 Aug 2026 16:31:45 +0000 (GMT) Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by pps.reinject (8.18.1.12/8.18.1.12) with ESMTP id 674GViIH004573; Tue, 4 Aug 2026 16:31:44 GMT Received: from lab61.no.oracle.com (lab61.no.oracle.com [10.172.144.82]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTP id 4fs78c9xxd-2; Tue, 04 Aug 2026 16:31:44 +0000 (GMT) From: =?UTF-8?q?H=C3=A5kon=20Bugge?= To: linux-kernel@vger.kernel.org, Peter Zijlstra , Ingo Molnar , Will Deacon , Boqun Feng , Waiman Long , Chris Wilson , John Stultz Cc: =?UTF-8?q?H=C3=A5kon=20Bugge?= , Ingo Molnar Subject: [PATCH v3 1/3] test-ww_mutex: Fix module cleanup Date: Tue, 4 Aug 2026 18:31:34 +0200 Message-ID: <20260804163139.3121781-2-haakon.bugge@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260804163139.3121781-1-haakon.bugge@oracle.com> References: <20260804163139.3121781-1-haakon.bugge@oracle.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-04_03,2026-08-04_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 lowpriorityscore=0 suspectscore=0 adultscore=0 mlxscore=0 bulkscore=0 spamscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2606160000 definitions=main-2608040133 X-Proofpoint-Spam-Info: AW1haW4tMjYwODA0MDEzMyBTYWx0ZWRfX1gNegd80Z2cQ k074VJurIABH4eOtX7tAc3i3tDBkZXU1xuxvXtyWNh18tNi6gWLieNqaqQ+6TMIrpTGV3tUj1Kt is/jSHIgj5R03ML6TToy0uSnmBFBsVuX5v5vxXsgyle/Jeo/3Ai8 X-Authority-Analysis: v=2.4 cv=EPU2FVZC c=1 sm=1 tr=0 ts=6a7213f5 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=M51BFTxLslgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=EIcjfB9IiI4px24ztqRk:22 a=yPCof4ZbAAAA:8 a=1XWaLZrsAAAA:8 a=gMi_3LN3h5E03voxdxMA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=WmVTiCyuxqgg3mnwYu6p:22 X-Proofpoint-GUID: tv88IYslaCFnXyiAaTzdFxe3xn_f56Oh X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA0MDEzMyBTYWx0ZWRfX64q/309IEJ45 SkAl4zPJjHXWd+hCA+ULXuOFbxUssWtbElwk43qoN+rJEUYSe37L2wRrzTR6MskMHrDCKqsSVYQ gjAlPgTAOp+TbtmCuqhXITHa+0XSYHigvDlG64VcUkuiPWi1sdI1w3cQgTmnDTcaQiyk07oICX7 qjsdqAbjKEFQQDC8e4KiDdBrDCjQ6zC+Yd1OLSW42gR+JDY44jBmqwAIAzP66s9qUPFfuU+3OUd g1KzDsD3iAeHloBPFHHwT7LaN8RS0Z6IAj3rS9/w3ZAUUVixX/7W1c3yyyR6F5pxA/pEHJrDWN+ h1GI6fMyIRVQiTwj7mDzGO/jWMzmo8U/kI5INNkIYFSrkl2Cj3n37PxKfkwHkDiFkMHsE90I5rT E730+crLkqVDV+vxAn86HPgIpvCS/jM7UraZ5/cVPquKLTks5BxgkpR+zPfi28dPwcFOgaPBBth 05GPmOGtcYpsJFO3Mwg== X-Proofpoint-ORIG-GUID: tv88IYslaCFnXyiAaTzdFxe3xn_f56Oh When test-ww_mutex is compiled as a module, there are two bugs. One is related to the case where the module fails to load. In that case, some or all of the allocated objects are not released. Also, if loaded OK and thereafter unloaded, the sysfs file is not removed. The latter bug gives the following splat (trimmed for better brevity): sysfs: cannot create duplicate filename '/kernel/test_ww_mutex' dump_stack_lvl+0x5d/0x90 sysfs_warn_dup.cold+0x17/0x23 sysfs_create_dir_ns+0xe2/0x100 kobject_add_internal+0xba/0x270 kobject_add+0x95/0xd0 kobject_create_and_add+0xa3/0xd0 test_ww_mutex_init+0x90/0xff0 [test_ww_mutex] do_one_initcall+0x5c/0x330 do_init_module+0x90/0x290 __do_sys_init_module+0x195/0x1d0 do_syscall_64+0xe8/0x550 entry_SYSCALL_64_after_hwframe+0x76/0x7e Fixes: 2a0c11282881 ("locking/ww_mutex: Add kselftests for ww_mutex stress") Fixes: de2c5a1523fd ("test-ww_mutex: Allow test to be run (and re-run) from userland") Signed-off-by: HÃ¥kon Bugge Acked-by: John Stultz --- v1 -> v2: * Keep the sysfs file if module is built-in even when the test fails. This in order to be able to run the test multiple times even in case of errors. Suggested by John Stultz --- kernel/locking/test-ww_mutex.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/kernel/locking/test-ww_mutex.c b/kernel/locking/test-ww_mutex.c index 838d631544ed2..8311ff38ab683 100644 --- a/kernel/locking/test-ww_mutex.c +++ b/kernel/locking/test-ww_mutex.c @@ -734,7 +734,7 @@ static struct kobject *test_ww_mutex_kobj; static int __init test_ww_mutex_init(void) { - int ret; + int ret = -ENOMEM; prandom_seed_state(&rng, get_random_u64()); @@ -743,28 +743,35 @@ static int __init test_ww_mutex_init(void) return -ENOMEM; test_ww_mutex_kobj = kobject_create_and_add("test_ww_mutex", kernel_kobj); - if (!test_ww_mutex_kobj) { - destroy_workqueue(wq); - return -ENOMEM; - } + if (!test_ww_mutex_kobj) + goto kobj_err; /* Create the files associated with this kobject */ ret = sysfs_create_group(test_ww_mutex_kobj, &attr_group); - if (ret) { - kobject_put(test_ww_mutex_kobj); - destroy_workqueue(wq); - return ret; - } + if (ret) + goto sysfs_err; mutex_lock(&run_lock); ret = run_test_classes(); mutex_unlock(&run_lock); + if (!ret || IS_BUILTIN(CONFIG_WW_MUTEX_SELFTEST)) + return 0; + + sysfs_remove_group(test_ww_mutex_kobj, &attr_group); + +sysfs_err: + kobject_put(test_ww_mutex_kobj); + +kobj_err: + destroy_workqueue(wq); + return ret; } static void __exit test_ww_mutex_exit(void) { + sysfs_remove_group(test_ww_mutex_kobj, &attr_group); kobject_put(test_ww_mutex_kobj); destroy_workqueue(wq); } -- 2.43.5