From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from YT6PR01CU002.outbound.protection.outlook.com (mail-canadacentralazon11022104.outbound.protection.outlook.com [40.107.193.104]) (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 BD5E220E6E2 for ; Mon, 16 Mar 2026 19:19:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.193.104 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773688787; cv=fail; b=iCUVLPmnTX+w7Un4d05vpQvEtexupK9EAaIi2LJn8ecueirDrnVPI0GwweCzltkiawnJ2iMX5rZicn9bw5MVFANwtelyIjGx8uk8xsIhhrH6UKJ5pnQPtXNq8Z+IZg4xE8a5J6BtqXO3IDi48KksiQqahPvFYpPDsdJOr6IftD4= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773688787; c=relaxed/simple; bh=OzyxU6zXU9N34iUvkYUie5dXlf45XMYDOmIryZZj7Q0=; h=Message-ID:Date:Subject:To:Cc:References:From:In-Reply-To: Content-Type:MIME-Version; b=qAZnQKMutaxUMM+BXixwYbQHn1b63i3WUlx7p3a2nfGs9IU+LDrVUgZCio2VGIoSPRyvPAsmYhVS7DzELy6oHZhpfHLgy6NkQ/P7D/OoHHMz8U1FEo+t/QKtjwcxnzn/Rk5Hj/e1Y1ijv6+iLWxb7xkoXPppPsZRbI1iUMLdqOQ= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=efficios.com; spf=pass smtp.mailfrom=efficios.com; dkim=pass (2048-bit key) header.d=efficios.com header.i=@efficios.com header.b=Nlv9ANho; arc=fail smtp.client-ip=40.107.193.104 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=efficios.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=efficios.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=efficios.com header.i=@efficios.com header.b="Nlv9ANho" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p2c/EM7LEMa2c7Jqe5lGtp+ARiJUUJf05S6OeZa5g6at6NTFZP1KBFksTmUSrMUfVkh5h+m85G9kIpWHErAOjWqY/GP1v9Qziv+7okkGdFqqdZ27dp2hlDjXQft/9OZRYLyCpOt0JR/jgjJFkEI9Ud36ym6HulPRh6P6dMFK+ywbdhKZVY81mCyCUh3HYI5zAXMteF0YaklJT9IyWyv5oTok+UgS4m1bS2RpR0KzyjCPbnbDiiQrzb/CULDdVLyDEhgWaJWAdldpZj/R1WC6pbS6sgaBRcL9pHnbevzGJES5LWbv3bd+xOLplQFAWbb4JDyErkQR+tqGD0O6WP+KKA== 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=z2fWdVbDRUmifkl4zNigKC6UVQFKJWyj6jFqH3XxDvI=; b=fEiHaH8kGa8cCim3VNDcVoe1+h8QiM2GxiMqFbnAKTtLKXlbL6jj1QBbVw9j7UJgqMaqU9eIXnmecG0dBCMdtla2uP7yfZxbP/DvWkFFBU3dy40ZnZhR4U4hapHBu8/RuaKat9S791+UMZoeASn0k7yL9PAlwmNbg/DCiwnBP8A4oVUCChCGtAV8T+RA8Nvzu5KljJFRK6QByErWQ1OAII3/tzZf9nhflsYuuPxlvOk0HYbhlGfC3/GCA8WdsGLJnmoDkFXvFtINa2sJ1ETIV0gDPR+++bt2o5wu+Xr0Z8GHsV0vJJohF7Bb9vcHLtEmADqcSBOMtOtiRJun494Kdg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=efficios.com; dmarc=pass action=none header.from=efficios.com; dkim=pass header.d=efficios.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficios.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=z2fWdVbDRUmifkl4zNigKC6UVQFKJWyj6jFqH3XxDvI=; b=Nlv9ANhoYxjJyPCS0I63jpCGps1Lp1paSnJWoAuO/TvCO4udhwGn291vuG1a7CA55VseYlM9PFQsloXrEyt1VmswC6x9L0oca38K2lU8HHC9P/Y4AjHhEPo0vDhPkS9vjFbGVGCsxPSfx4I4qoSNzaYNop39l13WUNmeywMT6vbK1LZTdWzyjBz166xy9HGE8COUHu8z+wLyLNl3/oUZ9dF9aMxa0VIOEMDZ/j/AFJLcwyQOyvLrLSLx8xiMFXNfMfVXNaeALRUrd/RsRd+1TOq53kt29j2oObsJ517F8Oce2YM6YWFApN2sfSeMTdvtD2H8BaYd0woK6uo5PU2PPA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=efficios.com; Received: from YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:be::5) by YT3PR01MB10474.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:93::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.22; Mon, 16 Mar 2026 19:19:36 +0000 Received: from YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM ([fe80::6004:a862:d45d:90c1]) by YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM ([fe80::6004:a862:d45d:90c1%3]) with mapi id 15.20.9700.024; Mon, 16 Mar 2026 19:19:41 +0000 Message-ID: <7b942738-231b-4168-8d97-0e5c974af2e9@efficios.com> Date: Mon, 16 Mar 2026 15:19:38 -0400 User-Agent: Mozilla Thunderbird Subject: Re: [patch 8/8] x86/vdso: Implement __vdso_futex_robust_try_unlock() To: Thomas Gleixner , LKML Cc: =?UTF-8?Q?Andr=C3=A9_Almeida?= , Sebastian Andrzej Siewior , Carlos O'Donell , Peter Zijlstra , Florian Weimer , Rich Felker , Torvald Riegel , Darren Hart , Ingo Molnar , Davidlohr Bueso , Arnd Bergmann , "Liam R . Howlett" References: <20260316162316.356674433@kernel.org> <20260316164951.484640267@kernel.org> From: Mathieu Desnoyers Content-Language: en-US In-Reply-To: <20260316164951.484640267@kernel.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: YQBPR0101CA0239.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:66::22) To YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:be::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: YT2PR01MB9175:EE_|YT3PR01MB10474:EE_ X-MS-Office365-Filtering-Correlation-Id: baca0729-3915-4d8b-ba08-08de8390f915 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: iHBY7fCrVF1wq/AhbgdpzPUzfYxh6zYuJujmHgoK7/5oZYQy2E/lkUCSnh4Y2jjUDaKyaSK+aF7uHANR1m7bL9wi2KgGNheFFjfd47VJkwXIusp6Gxw3/Sn2bUsy8/3HW2MQn0/RS8CYkZMO/EuKtZjXGmRxL4iupbdCR42oOeP9f0Fz74axeljDR0NVrd56ZNpgMiCoyH3mOZ/CtW/o1JlXZBdHjH+9HjvENJlpkadqpjivmV2PPv/BckyCOPdfACHTT42ut3PiObXFKdhuwGwkAWg5XqWXOGdzU4DvjZhSL3jYFhEPz6q2jIB7ttALjROlR7wU3IUiSUcVB/eIVtlqnXVo9GBuDLzaTbNIPjyTStwOOtVLv0YYGKmVDz92pIRrdnbrdY+A7txKGaloHaGzDrNTdpMU/y4uaGNcr3RdqxLMkPyggrOaXVpaYwWp2H57RNlUbpaN2Iv1dVDIkkQOz2umNj9+421jbcmyxvnKNyPOXllg1EbVoDgG9ZroJ1vkFNl9Ie/ANqtzZRBtrjVCEU1I4GhPHDmeRlt+b5SEJXz31cT56qGrbmyWGmJc45FFdVIsXIompzXupwO0cZDdx9wLc0980CxhiQM9ykI5sJvid53bK1LwZs79GBrrBokkfvxE5O1/wis9cqE8w8IjTQVJW6tQKmIqWApeBuRo/XixuugU8diLvOQjGwWD X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?N2lLemZvcCttT3F6M2I2c3BnQWY0am9VYWh4TmxqQkZzbks4TkFmVkhvZEVS?= =?utf-8?B?TEJEdzBTL0ZtK21uaUtVNW5IRzJhdXBQQTdTZkxQOU9NR2VacEtKNjA3OENp?= =?utf-8?B?SVVKNkMwS3Axd2Z2WnVObzUyclcvbUdFUDh1c0wxMHBhMUtPVjViOHl1ODFW?= =?utf-8?B?WnRodW4wNXkzQXRieGRHbzVKUlhFYllRbGdYUDJjcGVvU0l5NTVmcEZLMWV5?= =?utf-8?B?Q29kVFJ5WGxLWE5uUDNSb2tJQzA5RmxnZllmbVlGdDVNd2kvQkJTY01OMmlH?= =?utf-8?B?SGtMZWgyVlhkK214ZzFMNG9KR2I2RVJaWVNtVXR6bkF1bUNwcTllMjRYWHli?= =?utf-8?B?QkJqZUlWNmVzbXFkZFF0NGg2THY4QjNNZjlRRnNEOXg0K3hValhTbmZ1Q1Yy?= =?utf-8?B?WjVXQW9Fc3Y0ZHFROW1UeUVqQkdpU0hLRHI0Q0hwVnkwNGsxZmlFKytQR1or?= =?utf-8?B?RC9pVkRjeFpOc3IzWVNUMWVjVTBXRjdBYkVpMms2eUtHdXpLYkxyOFQrMERW?= =?utf-8?B?ZGJSdkdObUgwUzcrY0gwWjBYdWhyTjVaMmtIMllpOHRPTThRZWlNT1NyMHdI?= =?utf-8?B?T2k1TGgyWTB3b0gxWW0zRnp6Ump3czU3eVNpdEFkR0xkU3haMWZvZnVBMldT?= =?utf-8?B?UTRLNCtaVDRKVmZpa0ZwandDQVFpb1dlWnloWmFXcXZ3b01PNWtXTExtS3hr?= =?utf-8?B?aS8xbVJpakUxdHgvODRpamIxTWVMaVlEQitmVEM1TDJ0MHpiWnRRMkpvSEJL?= =?utf-8?B?dU1GbmU2NlRHVEM1ZzBFK3JLdmwzNUo5Rm0yMXFreVJHdVEwR1JFdS9BaHNt?= =?utf-8?B?dUh3cHkrcHhSVm9LMGJYWVFDakVMSHdZYmlDamNlS0UzSWhOSVNhQVU4TmQw?= =?utf-8?B?RTJvUGJwYmtKLzdJckVMSFRSbmozaDVlU2w0eWg1NEtDMTJHYURZdys5RzRX?= =?utf-8?B?VW8vNE5pWnJrQWhFZTVVK2hqOFNKSkVMNTZUQUFRcmNWUmtISFZMemVVT3dw?= =?utf-8?B?dnFpbS9zZGd6RkVrMHVleVR6YmdDUEpJRkRjK1IyYWQ3OHZWUkVUSDZpNHVu?= =?utf-8?B?b0RzcnBoZzdBMmxCeDdiOGc5ZWhKSVJNMElodmlHNjVscDRnRnNKOGNXdjVj?= =?utf-8?B?SDZON29yczJRQXAyUlBGOXhvYjh0L3g5MmtpWXVsWkxWTUVucm1HQTFPTDZV?= =?utf-8?B?bUpjVnYyUXpoWVVRcStSWGk4TjBpejd0MWNjdk1hUWJ3WDlXTjBrUkhNUzRZ?= =?utf-8?B?UnB2cXRtTHdJcjQ1NDE4Vlh5Mm54L3ZtUE0wcy9IWEZnRTY0QkxSVmJPNGpu?= =?utf-8?B?VHJFK05udklCWFNkWU9jak5TYVErcHNmTHNCcStsY29JL0JTWENzREM2NDRo?= =?utf-8?B?TGErbXNEWDhYRDNBV2szUzNmdFBVS1paRm5URWZzSVVRbjBWSWhMRGdqaCti?= =?utf-8?B?azcrWlk4dERZeEFhUWF0dUI5OGx1S2hVUHpmczBhbzU2UkZUOGtrY3YzREN3?= =?utf-8?B?Z2M3M3ZNQmJRY2d5WFJZWUtxbUtydGJmMWtxNXAyanZ0bmc0RzV5K0lLbFFJ?= =?utf-8?B?VUdTb1huTW01K1pxZGRMUGxiVUY0VjFWblNUaGtkZUNaMW5FMmNPRWpRWE40?= =?utf-8?B?OFJhRTBRaHYxMHF0VUQxVEVzRE82Nm1CRHJPYmJlNWtuL0YzQ1dJZlp5dUtk?= =?utf-8?B?R0JBOXI2NWNpcUllSTJzRWovOVlSSkdIYXlodVlpZEcxQ0k5TmUrUzhMRnYz?= =?utf-8?B?eHJraXFCL0xCdVgrcmxGUHI3QkNtRnd5a0l1NzJqdVZjVTIwZlVCeHJocWp6?= =?utf-8?B?YlBjb01SZDNzUGh6TFo2OWUzYWhxU3B5emNGcDY2NWhiK2lDQmtQUWwwZVVP?= =?utf-8?B?WVYwU3BiN0JzSmQ5c3FaRXk2YWpsbEcvd05yWm85V0pRVUZ5T2l4V29oSWV2?= =?utf-8?B?U0Y4VXFjMEZTOEtDM2RaTmE3RkxtQnF6bnJrRi95bVlyUk1mVlpveEx3TGV0?= =?utf-8?B?cFhzdFhMRHVCZDl1Q1F0ZVhvREhWVXUzRmxJNkNOYmFHa0FxOXZkWCtDcDRn?= =?utf-8?B?NXlEQld2UkRIUjNtT2YvT1JxUFpHU2hhcldVVU14MlVheW4vVWtJUEtTK2VP?= =?utf-8?B?UzhjM1dIbGJ4dXZSWTVxVU9KcHBFYTZLOXdxbU01OWdGd2RhVlV1WEFDNWpk?= =?utf-8?B?UVV3UDIwdVd4TEJhU2s0VzYySFFCVzd2TE94cmErRUNVcWVSNDFyQmRFTmpS?= =?utf-8?B?OVpLUlNiN0NMemhCQVI5M05JbVFabURIZnJRc2pJemVPWVoxNm9JRHZqUFVX?= =?utf-8?B?V2JDM01jY25iRmF3Y2pRUUZDNG5xSWpIbVJXMU5jMm5Id0ZOek1RWGtKQzRO?= =?utf-8?Q?plhbyPs6E1epjLNZZ16dCwGdfe7VL4QfELQm4?= X-OriginatorOrg: efficios.com X-MS-Exchange-CrossTenant-Network-Message-Id: baca0729-3915-4d8b-ba08-08de8390f915 X-MS-Exchange-CrossTenant-AuthSource: YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Mar 2026 19:19:41.1978 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4f278736-4ab6-415c-957e-1f55336bd31e X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: nq0oZ/cD4xTg0tB/CjaHGCYeWhBFBqm1PixTDGtJ/UqLsvS9UNN3Y0VSF9zm8IZm7wK5q7Z6W6ie1mbYjQI093/6AJQGH+igvpVTXk0EzEo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YT3PR01MB10474 On 2026-03-16 13:13, Thomas Gleixner wrote: > When the FUTEX_ROBUST_UNLOCK mechanism is used for unlocking (PI-)futexes, > then the unlock sequence in userspace looks like this: > > 1) robust_list_set_op_pending(mutex); > 2) robust_list_remove(mutex); > > lval = gettid(); > 3) if (atomic_try_cmpxchg(&mutex->lock, lval, 0)) > 4) robust_list_clear_op_pending(); > else > 5) sys_futex(OP,...FUTEX_ROBUST_UNLOCK); [...] > > When then the original task exits before reaching #6 then the kernel robust > list handling observes the pending op entry and tries to fix up user space. There is no #6. [...] > + > +uint32_t __vdso_futex_robust_try_unlock(uint32_t *lock, uint32_t tid, void *pop) I'm not sure I see the link between "list_pending_op" and @pop ? > +{ > + asm volatile ( > + ".global __vdso_futex_robust_try_unlock_cs_start \n" > + ".global __vdso_futex_robust_try_unlock_cs_success \n" > + ".global __vdso_futex_robust_try_unlock_cs_end \n" Those .global are fragile: they depend on making sure the compiler does not emit those symbols more than once per compile unit (due to optimizations). I understand that you want to skip the "iteration on a section" within the kernel fast path, and I agree with that intent, but I think we can achieve that goal with more robustness by: - emitting those as triplets within a dedicated section, - validating that the section only contains a single triplet within the vdso2c script. This would fail immediately in the vsdo2c script if the compiler does not do as expected rather than silently fail to cover part of the emitted code range. [...] > + : [tid] "+a" (tid) Could use a few comments: - "tid" sits in eax. > + : [ptr] "D" (lock), - "lock" sits in edi/rdi. > + [pop] "d" (pop), This constraint puts the unmasked "pop" pointer into edx/rdx. > + [val] "r" (0) > + ASM_PAD_CONSTRAINT The masked "pop" pointer sits in esi/rsi. [...] > + * disabled or this is a 32-bit kernel then ZF is authoritive no matter authoritative > + > +static __always_inline void __user *x86_futex_robust_unlock_get_pop(struct pt_regs *regs) > +{ > + return (void __user *)regs->dx; When userspace is compat 32-bit, with a 64-bit kernel, are we sure that the 32 upper bits are cleared ? If not can we rely on compat_robust_list_clear_pending to ignore those top bits in put_user(0U, pop) ? Thanks, Mathieu -- Mathieu Desnoyers EfficiOS Inc. https://www.efficios.com