From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from YQZPR01CU011.outbound.protection.outlook.com (mail-canadaeastazon11020124.outbound.protection.outlook.com [52.101.191.124]) (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 D28B411CA9 for ; Fri, 10 Jul 2026 00:10:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.191.124 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783642209; cv=fail; b=A2m+IX6HwPA5KNDXBkww4EYnyBd+G9NujWjVEZQ4MB38J3xm5UsRQMdQA4CbA1PGXBnKej182tb9mD/c5KInROY8HQKI+FLNK+f1NiWyi3FwsXLoomxk2oA3vi6g6jgolHtyUPWohOYPxd7PziW55D32Dei0DvrMpsHYBvasAcI= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783642209; c=relaxed/simple; bh=LRCL6EXfXHdC8i7gr4gWaXWSgB5Vk+btr+kuvxW/9Q8=; h=Message-ID:Date:Subject:To:Cc:References:From:In-Reply-To: Content-Type:MIME-Version; b=kfiIMIVPMPhd4k+2R2Db3Hn2JlmISbl88VhJEt2cerQJB+ve/ZgdPLlyPjnAkABPHiXyWWIfkd9pk4LMQFBuj9y5PYqpXYLJz74eOyxWQnADqOk+2tDLpuAIVVzuVCzvSimyr5uWt9Z/t9pXonpeD4D8vDoAK5I/PsMwTqKaibc= 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=TKwdSE0U; arc=fail smtp.client-ip=52.101.191.124 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="TKwdSE0U" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HLllkhMdB3zzUGC1Ptt7qAEq2ce3UDcx6X+DkBd6DmDI2ml4wpM2SWCUIo2aWO3dV6tBAIPLJxXR1SrZ45xk/1JHyu4H1exyk0bIZdc+23b/HtTtiVlZchyharEPYqzYhAUrFJ8DjPRnEKySyoosaIN4bLyr7hX6MpljKEFH5roT8eDhRg30JJHULv4oSPAYza+yhszkORFlB5WSmCTX3nyguoQtZpRpOp3dAkqLq6dF1f2JFQs4rLOh2eFAsOVeNZmMN+CrjJt/NDTeb1LhkETuj+Pfp25xv0G9/wW0GHSYfaejQXzpOYtc3c7zkafLWKCWbJuXdHNhF+iKDGQidw== 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=3lmFjvHVOBxE0bZxhw+Jj04dG+I1OKXBA65I7FEYU9Y=; b=ogqZqm25kGCydZ+ZT9CvrUgZbH67JMxuRnvi6OimcftWBXUfKHMaDxx15J0es7l0WOGo+Cdyzsp1jzkRbDztBlI4EebEkKsAn9UUSz3T4M1rOj4zeJJ+l2qXEL1XmDoZFCOi7m3mJvk8V3vztSh7YlJ6/WnGy2IxjcIAXdADmrSYIEq7xL/MmrOIGZdQXLV4qk4u0KQphy8gebkL+UMZEWcw/pDu3jsG+OmWj54VaI/q8ZSTfymFgtg8Es1knwsOH1UEJ+R+DeD2KVx6qOsF3vGFo7GsK80UQG86YKgK/W3aTqHNtNLG+XW2LDuMb49cUr44bnZ6j8kEm6q1WG0gCg== 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=3lmFjvHVOBxE0bZxhw+Jj04dG+I1OKXBA65I7FEYU9Y=; b=TKwdSE0UzAypR0gqRCrJ69wpapbhN42yyM3Bp1ZSRsxnJooiNEwcp9BJisNy06bzE4UHAot2IMtcXL3vXfvvnDJPKHpeBeQKnTDGkLQLxGuddGE1ovzbGXRqwubXOXzhX4pR0h6Ek2cAIbavw9qsbHyJcrvooJdZo5vzmNUosiIdvbW9yp31affXOvDy0KDf2Vmt4rkYYNrpjRiMqqzkhZeHf3AHAphysZadmICjsGXzi973D1yVJz/7IMzzLx0OnSRu5HZZ9ULsJybTfe6jrW+IC/xvyrdMFSpXjxqJlM52B2qlZUGMcWDo4ysJWIjfCnWN47a0rHKxJdPOtJ4QNg== 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 YT2PR01MB10385.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:df::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.16; Fri, 10 Jul 2026 00:10:01 +0000 Received: from YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM ([fe80::6004:a862:d45d:90c1]) by YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM ([fe80::6004:a862:d45d:90c1%4]) with mapi id 15.21.0181.017; Fri, 10 Jul 2026 00:10:01 +0000 Message-ID: <64b9de0c-a620-493a-bec7-a2f617149d36@efficios.com> Date: Thu, 9 Jul 2026 20:10:00 -0400 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/2] hazptr: Introduce CONFIG_HAZPTR_DEBUG misuse detection To: paulmck@kernel.org Cc: Boqun Feng , linux-kernel@vger.kernel.org References: <20260709183009.6814-1-mathieu.desnoyers@efficios.com> <20260709183009.6814-2-mathieu.desnoyers@efficios.com> <2402b90a-7f26-4ef8-b5ff-b3c92d1be9d0@paulmck-laptop> <55079bd3-b049-4e0f-9225-ad41e3562500@efficios.com> <222ca62f-a39f-4b6e-b5b4-7e40bb5ceb36@paulmck-laptop> <2c7f97fa-8429-4fbb-bb33-53e015629f01@paulmck-laptop> <2d801522-6a77-47ad-8daf-d23cc85cbb7a@efficios.com> <9282757b-8b73-4f40-ae8b-239a587d36f9@paulmck-laptop> From: Mathieu Desnoyers Content-Language: en-US In-Reply-To: <9282757b-8b73-4f40-ae8b-239a587d36f9@paulmck-laptop> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: YQZPR01CA0116.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:83::9) 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_|YT2PR01MB10385:EE_ X-MS-Office365-Filtering-Correlation-Id: 8ef63147-45a6-46e7-94fd-08dede1795c7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|23010399003|10070799003|366016|1800799024|6133799003|5023799004|56012099006|4143699003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: XOWWUIalLgf0TSquxCTTDPMjVGuhsiLuHWcHa+Iq+kZK4NoVHvYl5GB5DHtgx2tQoCsy5RVRRESf3HVhPX42Y9Sz7T1vvQYZ6/mtkfu383ded5gIDR2efAxradU1Rk+QOOxKhr2NRAIrXgF/XrgOyq6FAki16xOu+l+PEbqDOOx26B0Mb4P1T2BONE3ZcO+BgaeUlH/xQVZto4SlYggAQ3inCrWAo5CCp+othZQX7a5hunvPJs4YxmxVXGDGxr+lfQzNZDWmCv2mNBcAKkD5ZtXeY6+72+NZ/TGCYcUcbiY8l8rKps8pYkiPu+JgXUc/2QAK+YH69YpKT+Dv45WtQBdqvw90AH+L5sOsADtnOIaHCVS9xojSIGggzZCEcZty16tuTF2WYYGDc1SShIPXg5vcGAhBWHBu90mq8R4vIGcYdxX0Ws7HeBW+/FoVsA0Hiy7z8opMdSyhuquuk75CXjVO7ZmdfRdQl1IApqSkLL+LYw9SF8hrCIDVZaDN7Slg/a+xzAHqReeuo1Nc4fAo3luWmT0A1351SdH2fVlJRct0FnJSrv3AvJz0IBgX/COwu1361wh/2lEDhgXi+70HbOJHt3k+B9GCu/ZeeJ+nWaY= 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)(23010399003)(10070799003)(366016)(1800799024)(6133799003)(5023799004)(56012099006)(4143699003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bEZhdSs2ZnQ5SlF5RGVvVkRZWk5yRTN1WGtvY041dEVnTElMbmlJKzBOQlNh?= =?utf-8?B?eUQzM0h3OEQzeWVUa1A4UGlnYVNwUXQzOXdZeXU0aURRb3VoZG1WVkIyY0V1?= =?utf-8?B?NzBDR3Z0ZFR2Q0FScVlHc2FRQWY3MjNWTE81cmUvMzhEaTV3cW1TN3l2bWNL?= =?utf-8?B?cUxrczJ6bXJQUTkxYWdtSEtEMmIzS2QraEhDUHFCVUhYd1NVNXljUTVFVHRO?= =?utf-8?B?RUNFSFErTEVHK09jdU1YYlJoWlZVbEwxRW1yNnpBQ1lHbitXMStSRG5NYXdX?= =?utf-8?B?SkhKMHZsbkU2SGV4c1JmOGQ0NkJCbllFaDJObEJYRDRkZUVrQlBNNm1VSmdC?= =?utf-8?B?RTg4QzhNa1NzQzZHWGpuK3MvbUpRQ1c3QUxGTFJBU1BNdDJMZXg5a09RZ1hL?= =?utf-8?B?cmw0L2p0MjJBT3VUU2lzWlloSTZqY0dVSTh2ZU9TQ0M5cVp3UXNKWTlXS1R3?= =?utf-8?B?Q0E4aFMrajZ4Q0t1UDF1cXhjNGVVUHhJYTFpUU1oWElMeHVDRVRKUmdyRlh4?= =?utf-8?B?cUdEN2d6b3g3UXRCTGdtSGNnaHhML3hxZ0dyQXZrTUJuTVh4Uzh4WGZ4NHYz?= =?utf-8?B?akFaZHlDdmx2ODgzNUtIRHJDWUxDS0EwNVRqTWV2SFpxTWhoZzJDTE9qMmtX?= =?utf-8?B?SkVoYzdXZVhyWFNuSlpHMmdJbGJZSWJJWExSVE9ERFNjWUI1bG1IcHkvQ0pS?= =?utf-8?B?NTRMU1Q4c1RzeGRTL2VmNjdBN1c5TEIxYWVYTldsTXdXUWs5TS85VzZDOW1K?= =?utf-8?B?L09Rb1lyTDdPUmN0UmxxampmVTgyZXd4UVRTWGw3QXlUV3IzaVZFVTAvQTNR?= =?utf-8?B?S0xtTFVleFBlbSsrVEdYNHZyS3JNck5oMXF3VVFPRlVEUXJ5RzNLN0dWa1My?= =?utf-8?B?M2pEVENWaGN4ZHNkV3VmYTdZMGE4K3ZzU1QvaWJadUVRSXZTVHRKbGdmSFZs?= =?utf-8?B?WENyUjdMRk9WalBHRFBiUFdiR1kwSjJDNlhqYzRKNWlUUGFjK29MQ0dpUWZB?= =?utf-8?B?cTMxSHBKejl2TlB3WUhDbmZTcWgzY1l6c3k0MnI3TTYyd2tLVGVoR05DQ2ZZ?= =?utf-8?B?K1NNK3EvWStrMGF3czY0aG9hczRidmRMU2xRZ2FGWlFkRUxQdTFxMkFNRTZH?= =?utf-8?B?cjFKSWdGR3k0TVA1VURoZzdnZ3lHQ285ZzB2OFZZT29qR2hWUFovRUlPdFJV?= =?utf-8?B?c1NOQTkwZzA1U2JMZnkwb1lIdWdncDhIdGYyYlJvMytyMElHeFI0dUNaZnBY?= =?utf-8?B?WEplaEFiRFc5NVViSHkzTFIra25Gd3lmckUyYXQ0M1YxUWpJV3RKSzQxaEk5?= =?utf-8?B?dWhZS0pKM21iSnFXZ1FyWkpCUXllREtybUJLRWhPQzRuM2xaTW5kMytzSEdQ?= =?utf-8?B?RzY3WS8xeUdEL01sQVN3MWdueTRtRm15SVl2MVYrT0F5a0VmckJUUHA3U3or?= =?utf-8?B?blNkOCtRS05LNXRjSkdXR2FEaFlCckFPdU9xREliaitpMC9uVmsva3R3U1d1?= =?utf-8?B?ekIybXpOcE92UWdHcTZjQll5RVBhaVJZSUY1VmVPUU9sS0JlWWxsbE5Kc3ZR?= =?utf-8?B?bFVDZWpBYXk1bllvWkxSVm9vaFNlTzhXZWJ6WlJzaDJIQzVHR3M0aDM0Vlgw?= =?utf-8?B?REtlVDlESXEzbUwyd1FzcTY1RmFiL3BRRWdNMjBLTmZFTk92VVRVQWtXQ2pm?= =?utf-8?B?bkNhZk1USkVPUlpFdDlSOERicWN3RFlOTlMwQW16WDJSWTFabk1SNTVpOVN5?= =?utf-8?B?bjZMdzlVTVlTWlhQenNicmpnY0tUck4yWERpUHVKS3FjRW8zRjlLc1o0QmNU?= =?utf-8?B?UVg4YVliV2hGSjNhbFNncnRENmZvZnk2NUtDOFN2UXpEb210YUpKYkxkVUUw?= =?utf-8?B?L0YwZ3ZSK05iOGVsN0tpR0JMYVJNc1RkOWlNV1lxV080SHBoS3hJQVB1MExy?= =?utf-8?B?QnlpVlYwREtNWXk2ZTREdEhOdGM0NGY4WVJKR3BEdm9NTk5URHVRVllnRUVm?= =?utf-8?B?YkhRdzRlaGlYbUt2RW12dlhIL0JmVmNmNTFwOTBOd0tLdEk2cXlmUlpKdHky?= =?utf-8?B?VnphRmVvYW4vc1hKS2l2bTBVUFV2eEZGNWJ2Rm1tMW9BYzNSZW1hblpQUGxt?= =?utf-8?B?NnlNTml5dU1ob1NnV3BON3JIRHlUZTl6eDdURWNPSkVwSDVBRndjSlNOUFhS?= =?utf-8?B?L1AxR3lJS1hwTzhia3lJNUI1RXZhaTVKVW9ZeTQyMEhEbDg5aVBoNndpS1N5?= =?utf-8?B?cTVQT1ZVWTJuSndPTmhPMmFEVm52eXBQYXZ2N0MzT3dlTEx6UGpZR2RiVXE4?= =?utf-8?B?ZjRtcjF6ai9uY0JPSDNSRkc4YVBEb1dmZW95VzRYVnVUOTIxaUY2ZzhGeTFE?= =?utf-8?Q?qMryT5thcLeRpHUertt93RgN1xIV0t0EddhB11bN97ouX?= X-MS-Exchange-AntiSpam-MessageData-1: adQVxQW5CI21U4NFoOTcUIuUZgPoJ9/ybAQ= X-OriginatorOrg: efficios.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8ef63147-45a6-46e7-94fd-08dede1795c7 X-MS-Exchange-CrossTenant-AuthSource: YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2026 00:10:01.2958 (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: Yl00/x/t0dg7z2VmrzvdNNgYKZPLv7VEDARJSiWxT/28kVSxkcGSBSdciBgdzd9w3lqFhNZd79OWQhhYlAdSePNX+rYuuZMRRQzEKBwAyAM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YT2PR01MB10385 On 2026-07-09 19:48, Paul E. McKenney wrote: [...] > Let's start by me correctly documenting the current rules. Calling > hazptr_detach_from_task() should not be all that much of a burden, > especially if the proper diagnostics are in place. > > Please see below, and thank you for bearing with me! > Comments below, > Thanx, Paul > > ------------------------------------------------------------------------ > > commit b8de842c6708de99335e2f700d3668e18aeeb3eb > Author: Paul E. McKenney > Date: Thu Jul 9 13:39:09 2026 -0700 > > hazptr: Upgrade kernel-doc headers > > Upgrade the kernel-doc headers for hazptr_acquire(), hazptr_release(), > and hazptr_detach_from_task(). > > Signed-off-by: Paul E. McKenney > Cc: Mathieu Desnoyers > Cc: Boqun Feng > > diff --git a/include/linux/hazptr.h b/include/linux/hazptr.h > index c5aa4fb03b11cf..dbaea42a68745b 100644 > --- a/include/linux/hazptr.h > +++ b/include/linux/hazptr.h > @@ -126,6 +126,29 @@ void hazptr_promote_to_backup_slot(struct hazptr_ctx *ctx, struct hazptr_slot *s > ctx->slot = backup_slot; > } > > +/** > + * hazptr_detach_from_task - Allow a hazard pointer to be released by some other task We should really rename this given that it detaches the hazptr ctx from the execution _context_ (irq handler or thread). Not sure how to name it though. > + * > + * @ctx: The hazard-pointer context to be migrated. > + * > + * By default, a given hazptr_acquire() and the corresponding > + * hazptr_release() must run in a single execution context, for example, the > + * context of a single task or a single interrupt handler. Please note that > + * things like interrupt handlers execute in the context of the interrupted > + * task. When you have acquired a hazard pointer in one task and need > + * to release it in another, you must invoke hazptr_detach_from_task() > + * on that hazard pointer's context. It is permissible to invoke > + * hazptr_detach_from_task() multiple times on the same @ctx while it is > + * protecting the same pointer, however, the first invocation absolutely > + * must be in the context of the task that did the hazptr_acquire(), > + * and must take place after the return from that hazptr_acquire(). > + * The text above does not discuss the need to either release or detach before returning from interrupt handler. Or am I missing something ? > + * For example, if a hazard pointer is acquired by a task and > + * released by a timer handler, that task would need to pass the hazard > + * pointer's context to hazptr_detach_from_task() after return from the > + * hazptr_acquire() and before arming the timer (or at least before the > + * handler had a chance to access that hazard-pointer context). ok > + */ > static inline > void hazptr_detach_from_task(struct hazptr_ctx *ctx) > { > @@ -160,12 +183,27 @@ void hazptr_note_context_switch(void) > } > } > > -/* > - * hazptr_acquire: Load pointer at address and protect with hazard pointer. > +/** > + * hazptr_acquire - Load pointer at address and protect with hazard pointer. > + * > + * @ctx: The hazard-pointer context to be passed to hazptr_release(). > + * @addr_p: Pointer to the pointer that is to be hazard-pointer protected. > * > * Load @addr_p, and protect the loaded pointer with hazard pointer. > - * When using hazptr_acquire from interrupt handlers, the acquired slots > - * need to be released before returning from the interrupt handler. > + * This protection is roughly similar to that of a reference counter, and > + * ends with a hazptr_release(). > + * > + * By default, the call to hazptr_release() must be running in the same > + * execution context that executed the corresponding hazptr_acquire(), for > + * example, within the same task or interrupt handler. When it is necessary > + * to instead call hazptr_release() from the context of some other task, > + * pass @ctx to hazptr_detach_from_task() after invoking hazptr_acquire() > + * but before making the hazard pointer available to that other task. > + * Please note that things like interrupt handlers execute in the context > + * of the interrupted task. Same comment about use of detach before returning from irq. > + * > + * It is not permissible to invoke hazptr_acquire() twice on the same @ctx > + * without an intervening hazptr_release(). > * > * Returns a non-NULL protected address if the loaded pointer is non-NULL. > * Returns NULL if the loaded pointer is NULL. > @@ -233,7 +271,25 @@ void hazptr_release_debug(struct hazptr_ctx *ctx, void *addr) > static inline void hazptr_release_debug(struct hazptr_ctx *ctx, void *addr) { } > #endif > > -/* Release the protected hazard pointer from @slot. */ > +/** > + * hazptr_release - Release the specified hazard pointer > + * > + * @ctx: The hazard-pointer context that was passed to hazptr_acquire(). > + * @addr_p: The pointer that is to be hazard-pointer unprotected. > + * > + * Release the protected hazard pointer recorded in @ctx. > + * > + * By default, hazptr_release() must execute in the same execution context > + * that invoked the corresponding hazptr_acquire(), for example, within the > + * same task or the same interrupt handler. However, if this restriction > + * is problematic for your use case, please see hazptr_detach_from_task(). > + * Please note that things like interrupt handlers execute in the context > + * of the interrupted task. Again, this statement is misleading: one could think that they don't need to detach the ctx before returning to the _same task_. The naming of the detach helper is actively confusing here. Maybe just call it hazptr_detach() ? Thanks, Mathieu > + * > + * It is permissible (though likely unwise from a maintainability > + * viewpoint) to invoke hazptr_release() twice on the same @ctx without > + * an intervening hazptr_acquire(). > + */ > static inline > void hazptr_release(struct hazptr_ctx *ctx, void *addr) > { -- Mathieu Desnoyers EfficiOS Inc. https://www.efficios.com