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 B257C27E05F for ; Wed, 17 Jun 2026 12:13:56 +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=1781698437; cv=none; b=SJ/w3SFkgDWqnHEamW1MCCzUfL6Zi1zdvxG4co6jAbYTL1BWR5Q5Tr2l6LZBKG7v5mS3tqSYu4ehAxtWqoBKNEVio/lCBOl3hFyhvbZX9oISj50qYNCA213lAO1f8m2Uuietc8qmi+6+ZeiVOFxtSUYrjoahyxQOLExiimeaUOs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781698437; c=relaxed/simple; bh=knqWpVnGPkJOdDkVrlb2IKkS3bew8cQzcLZmKM/HtzY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Wh9MLWRBp2xknsKtWNte6aZ2b1ivNKsUF2GWkkuCeO9kygMXq52831MFROvGyHn7/KWEaix0S7HawBNTGyZ13X1L/n3JjpwQgkCqob9g+GXB9bOSUkdH2Y20j5lNDrTrp4fp/fYFV/cXnO/4utzlN/FA4zm+dbSDWU1LUEr2yCk= 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=eWspqFe1; 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="eWspqFe1" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65GLXCsG632079; Wed, 17 Jun 2026 12:13:46 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=Fgy9FS2omO9JgLBzmmpm7qXa/m5mOUlGDeMWBB7capE=; b= eWspqFe1ll6t7tB5XAGv4FqOCJiy0j4Pq8pbItvHAp9JIGu7eDmVwUL4X39LunoH BkUEacGbJ2cXw8EUPvYB9vJyqZ5UBTmVQc9ZGulrcPxWdJregS70qznJ8QO7auob R9MDbpe4fLREMEuSuys1bnXIDZzoDUvuElcBg11PMhTaeoZSC5MBXHGES2/rn8iM BsRkNA8lflgnCo2Y4vr/mKTUCUMKAM+KLpP5vB/FxA6u8mDyUt5flar0rS0JstFs 1gMVFTTjuPMEapmH/6lN75AvhzSTXiAQrhbO85b0xqMOx10yenA2FuiZnajvUcZa cobq5XXLBk92J7mt9e6KYA== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4euegd0ue8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 12:13:46 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 65HCCuJ1031876; Wed, 17 Jun 2026 12:13:46 GMT Received: from pps.reinject (localhost [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4euduxddqc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 12:13:46 +0000 (GMT) Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by pps.reinject (8.18.1.12/8.18.1.12) with ESMTP id 65HCDfN8034521; Wed, 17 Jun 2026 12:13:45 GMT Received: from lab61.no.oracle.com (lab61.no.oracle.com [10.172.144.82]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTP id 4euduxddkt-3; Wed, 17 Jun 2026 12:13:45 +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 Cc: =?UTF-8?q?H=C3=A5kon=20Bugge?= , Ingo Molnar Subject: [PATCH 2/4] test-ww_mutex: Report errors from stress workers Date: Wed, 17 Jun 2026 14:13:31 +0200 Message-ID: <20260617121335.2036954-3-haakon.bugge@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260617121335.2036954-1-haakon.bugge@oracle.com> References: <20260617121335.2036954-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.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_01,2026-06-16_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 phishscore=0 lowpriorityscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2606150000 definitions=main-2606170116 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDExNiBTYWx0ZWRfX5bVfEqUeQrlw Ly65hOvYA4GgpfTmziqYbelDpif02eJuDyQh/XG/B68kpYuGRMRkrPz7OV3dqcKmFgw5q+fqDkG XYvmgFkIf122Fj6N71moEb33tEBEPjjERXmWKpg/DQiHb25SvCUQ/6iWo8UGZ7MdbbVuZQtyy+q Yfo+eVb3TlqrY5WgmaSgqJzPLiv6jrN/Jpy/Xj1CF6jpeZulY1WymjbYJJ3agh5ZIGYifw6V1jb gl/v2f0Rc3q7LAPaINJtz4dosCKrfHPuJe0X6dNoH16zbot01rQM700FMFyrni9WAgvHwyZEtxD 9LzdmrW8fr67drQetGdYfzpiWaoAucG61m7awo8bc4/fSYBERg/jw/UFMgZiyW75sfupNa44sIL kBRVE3DM3xW0QkxYObj9SDXtniT8vIiuWsehiqqY8h1N366uWOueEZLm4XEolE5fkP11LgAFDBi ICChuWs22spkFrAoPfQ== X-Proofpoint-GUID: qGbA5L2xihd8SWhms3r0M8wo_M4xRZWz X-Proofpoint-ORIG-GUID: qGbA5L2xihd8SWhms3r0M8wo_M4xRZWz X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDExNiBTYWx0ZWRfX8StJT+oCtp1z tDYQeEAN7Lhq/tLRTCwj4fm/iNdSNiSJGvzN6C2AR07ZWCMyjXib3Zcc0nyk41bsEEetEWYHTwr fqVOHCDNwEHq2mcWjT6aj9Fb1KLiR2k8DQ6tFxaAf2mU0jevR8kS X-Authority-Analysis: v=2.4 cv=GbMnWwXL c=1 sm=1 tr=0 ts=6a328f7a cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=M51BFTxLslgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=RD47p0oAkeU5bO7t-o6f:22 a=yPCof4ZbAAAA:8 a=HWq8w0C2B1yOpf0TK-AA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 If any of stress_one_work(), stress_reorder_work(), or stress_inorder_work() fails, the error is not conveyed back to the test harness function stress(). We may then see in the log: stress (stress_inorder_work) failed with -35 Beginning ww (die) mutex selftests All ww mutex selftests passed Besides being a contradiction by terms, the failure to return error from said worker functions leads to false-positive results. We fix that by adding a *result* variable to *struct stress*, update it in said worker functions, and finally, in stress(), scan the *stress_array* and report the first error if any. Fixes: 2a0c11282881 ("locking/ww_mutex: Add kselftests for ww_mutex stress") Signed-off-by: HÃ¥kon Bugge --- kernel/locking/test-ww_mutex.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/kernel/locking/test-ww_mutex.c b/kernel/locking/test-ww_mutex.c index 6f56a29ed6d77..5a4c92801bdfb 100644 --- a/kernel/locking/test-ww_mutex.c +++ b/kernel/locking/test-ww_mutex.c @@ -392,6 +392,7 @@ struct stress { struct ww_class *class; unsigned long timeout; int nlocks; + int result; }; struct rnd_state rng; @@ -440,6 +441,9 @@ static void stress_inorder_work(struct work_struct *work) struct ww_mutex *locks = stress->locks; struct ww_acquire_ctx ctx; int *order; + int err; + + stress->result = -ENOMEM; order = get_random_order(nlocks); if (!order) @@ -447,7 +451,7 @@ static void stress_inorder_work(struct work_struct *work) do { int contended = -1; - int n, err; + int n; ww_acquire_init(&ctx, stress->class); retry: @@ -485,6 +489,7 @@ static void stress_inorder_work(struct work_struct *work) } while (!time_after(jiffies, stress->timeout)); kfree(order); + stress->result = err; } struct reorder_lock { @@ -501,6 +506,8 @@ static void stress_reorder_work(struct work_struct *work) int *order; int n, err; + stress->result = -ENOMEM; + order = get_random_order(stress->nlocks); if (!order) return; @@ -545,6 +552,8 @@ static void stress_reorder_work(struct work_struct *work) ww_acquire_fini(&ctx); } while (!time_after(jiffies, stress->timeout)); + stress->result = err; + out: list_for_each_entry_safe(ll, ln, &locks, link) kfree(ll); @@ -569,6 +578,8 @@ static void stress_one_work(struct work_struct *work) break; } } while (!time_after(jiffies, stress->timeout)); + + stress->result = err; } #define STRESS_INORDER BIT(0) @@ -581,6 +592,7 @@ static int stress(struct ww_class *class, int nlocks, int nthreads, unsigned int struct ww_mutex *locks; struct stress *stress_array; int n, count; + int res = 0; locks = kmalloc_objs(*locks, nlocks); if (!locks) @@ -635,10 +647,15 @@ static int stress(struct ww_class *class, int nlocks, int nthreads, unsigned int for (n = 0; n < nlocks; n++) ww_mutex_destroy(&locks[n]); + + /* Report the first error */ + for (n = 0; !res && n < count; n++) + res = stress_array[n].result; + kfree(stress_array); kfree(locks); - return 0; + return res; } static int run_tests(struct ww_class *class) -- 2.43.5