From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id F0A16C369C4 for ; Wed, 25 Sep 2024 10:06:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 885506B0092; Wed, 25 Sep 2024 06:06:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8335D6B0095; Wed, 25 Sep 2024 06:06:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 722466B0096; Wed, 25 Sep 2024 06:06:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 555D46B0092 for ; Wed, 25 Sep 2024 06:06:57 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id B752180A6C for ; Wed, 25 Sep 2024 10:06:56 +0000 (UTC) X-FDA: 82602832032.19.B4BED69 Received: from frasgout13.his.huawei.com (frasgout13.his.huawei.com [14.137.139.46]) by imf24.hostedemail.com (Postfix) with ESMTP id 3129718000F for ; Wed, 25 Sep 2024 10:06:52 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=none; spf=pass (imf24.hostedemail.com: domain of jonas.oberhauser@huaweicloud.com designates 14.137.139.46 as permitted sender) smtp.mailfrom=jonas.oberhauser@huaweicloud.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1727258753; a=rsa-sha256; cv=none; b=KgeiS0O1PDLJ3wSeuaEAunkTrHK+iWeKzgE0B/oFpOt4Mxe79ahGe1Qy43u98zGBGUUcR5 bPDD4c8U8QormKCo/K3kZpV4TDll1Sjcf0+dpujdouBVi3igBSYrSFZz8Ywj/v2lQUnpew V6f9pgy3xpw+v0FrH74UgNLuc4ovB0k= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=none; spf=pass (imf24.hostedemail.com: domain of jonas.oberhauser@huaweicloud.com designates 14.137.139.46 as permitted sender) smtp.mailfrom=jonas.oberhauser@huaweicloud.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1727258753; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Myh7RVzDHfOS/o32fAcZaWWgglvfxJb1PZ2We6f9Q7U=; b=PmGM/D9Ucve3r5IVFLLY1yQWpj161gLzbDKwhfgx3aNFpwLeQzEAfObJ4AGdQ9OijW+ajc n35x+RgoMfDxdcshAce+LjZQNHlubPLzfdQxRqzbEc7aKV4iedPBwTwBv3GykcKk8fAUMI Ez1hwjz56yOFeasgSB/Ug1IR+4SZM0E= Received: from mail.maildlp.com (unknown [172.18.186.29]) by frasgout13.his.huawei.com (SkyGuard) with ESMTP id 4XDBhn05Mwz9v7N8 for ; Wed, 25 Sep 2024 17:47:05 +0800 (CST) Received: from mail02.huawei.com (unknown [7.182.16.27]) by mail.maildlp.com (Postfix) with ESMTP id F2CE61404A8 for ; Wed, 25 Sep 2024 18:06:43 +0800 (CST) Received: from [10.45.145.58] (unknown [10.45.145.58]) by APP2 (Coremail) with SMTP id GxC2BwD3psej4PNmhg+eAQ--.32700S2; Wed, 25 Sep 2024 11:06:43 +0100 (CET) Message-ID: <07c9285f-44a1-486a-8390-0c63cefae35a@huaweicloud.com> Date: Wed, 25 Sep 2024 12:06:24 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH 1/1] hpref: Hazard Pointers with Reference Counter To: Mathieu Desnoyers , Boqun Feng , "Paul E. McKenney" Cc: linux-kernel@vger.kernel.org, Will Deacon , Peter Zijlstra , Alan Stern , John Stultz , Linus Torvalds , Frederic Weisbecker , Joel Fernandes , Josh Triplett , Uladzislau Rezki , Steven Rostedt , Lai Jiangshan , Zqiang , Ingo Molnar , Waiman Long , Mark Rutland , Thomas Gleixner , Vlastimil Babka , maged.michael@gmail.com, Mateusz Guzik , rcu@vger.kernel.org, linux-mm@kvack.org, lkmm@lists.linux.dev References: <20240921164210.256278-1-mathieu.desnoyers@efficios.com> <48ae741e-98aa-49d9-b677-6c4f8fd1bcb0@efficios.com> From: Jonas Oberhauser In-Reply-To: <48ae741e-98aa-49d9-b677-6c4f8fd1bcb0@efficios.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-CM-TRANSID:GxC2BwD3psej4PNmhg+eAQ--.32700S2 X-Coremail-Antispam: 1UD129KBjvJXoWruw1xtr48JF4DuFyUur1kGrg_yoW8JF17pr Z7KFy7CFyDGF9akryxtw1UZ348AFZYvas8XaykWrnrZa95WryFqr1SkF1UuF93Aws7XryU trWrArZxCasrJaDanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvjb4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4 vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Jr0_JF4l84ACjcxK6xIIjxv20xvEc7Cj xVAFwI0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW8JVWxJwA2z4x0Y4vEx4A2jsIEc7CjxV AFwI0_Gr0_Gr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40E x7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AKxVWUJVW8JwAm72CE4IkC6x 0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lFIxGxcIEc7CjxVA2Y2ka0xkIwI1lc7CjxVAaw2AF wI0_GFv_Wryl42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4 xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r4a6rW5 MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I 0E14v26r4j6F4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWU JVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxUIF 4iUUUUU X-CM-SenderInfo: 5mrqt2oorev25kdx2v3u6k3tpzhluzxrxghudrp/ X-Stat-Signature: jcud71qtxugkp37pnpjf3e6tjicrozhx X-Rspamd-Queue-Id: 3129718000F X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1727258812-235100 X-HE-Meta: U2FsdGVkX1+jS4qlH1jY5h2TRaXbgP4kO6PVNzb+qTEvN/UrCxDBIeCz2JI4n0JY3rIuPoKEVxMmwGn3KWWe7QikI+/+fJt7R2PAFF/ENg8LRISgBXpd8vLcWZ79zaP7L1de80ILa9uDMUENS20XF2la1NVJM59w/gWqX71bNufNo9zH+W5RtW4rIOw2QSLwPq6fdRaOssse38SbGrJ0kmRJvJiXd3H4+vPu7HR3bg1omm4NyvX/LW3V9e8h5JkdPvUnduj0W4hCJyNNVuUrVaaEPGdyegFS5d0yiObkh+P/dmnd9NEMSQS3BfWmij7s4/zV5mMnUkNwR57G8Id4vrNFS6sJxjhTRFtRCz6qFpMa6IPyBZmxfUxvfUQE/7EG/TelJZgJuyytGnb2EMSjB/o/sEm68TZk7JS62V7VylyspJD/HqXmRraoaAAdD5/KKLKRL4q7XYp5b9C/8UljTAx4UE2MzwJ3xqmOnP1K44IpcBCzemqWPkY3n3knF1zkU0lADaWG7fcBE9xanhgsnVrO4dQV9QPsuL5KztGcyKZ+U1UmOQ5Beli2Y3FQNcRu5zqoour7MvJZTvX4zXnwVn6tYcaArXJE5h+c8PaiOvpINFog9AkJ88nUIRY4QE4HeC1b4QL5GVAsMKDqSmuSuspOiLTOx6lifqUguh7le8NJrc2OYutwnbeLYV4jE3aTyENIms18zRmhsU79LZ+/VmZp6J2YRwgECyvfM9s82Stoz2Kr1WXAe5mff6OPRF7oNzHnTEooHpahBn4CJGXqyOGd0P3qhgj+/uAJLMM0dQzux9kf/H6fw8rtZ0iLhPcr+FgjLhbxM/e4ytlsuKOTXCUbfxYaPK4GV8PRUZOVE3jmES+be0ICXNSrN4TRejB6PUZSszh0bXbB2b1zwECjQJqTd+q6gyPtihkgdLWcCyI0bQIESVGkGGMA9FmQB4URLQf4ZTF54sL4wYo2i0N hzePw7IF UixY/bjPuGdpYHuNSeEhA++gjrKkblGpnOBk/dWICpxYq8D0wG8zxPqla8z46WCp9Pe1c74zUFIyNBI0XTETEYIi0ZAkUm6+oEUzt6M+8c7QUnLIghLZA6CvCSjKvuEtTQ9+e7ExlhzuWfZcqbpXBkLUveN52ihlJ1lF6hT84npBUTmg3j6SHyNyExoWL5mdUo6fJXGy3nU6iczNCumKBwVB/BnCObn3IYdGN/ToCFqS7aBvaz2hezo1VtewvBM8EbgNV X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Am 9/25/2024 um 8:35 AM schrieb Mathieu Desnoyers: > On 2024-09-25 07:57, Jonas Oberhauser wrote: >> Hi Mathieu, >> I haven't read your code in detail but it seems to me you have an ABA >> bug: as I explained elsewhere, you could read the same pointer after >> ABA but you don't synchronize with the newer store that gave you >> node2, leaving you to speculatively read stale values through *ctx->hp. >> (I am assuming here that ctx->hp is essentially an out parameter used >> to let the caller know which node got protected). > > The following change should fix it: > >      cmm_barrier(); > -    node2 = uatomic_load(node_p, CMM_RELAXED);    /* Load A */ > +    node2 = rcu_dereference(*node_p);    /* Load A */ > I don't think this fixes it, because IIRC rcu_dereference relies on the address dependency (which we don't have here) to provide ordering. I would recommend either: - ctx->hp = node; + ctx->hp = node2; which fixes the problem under the perhaps too weak assumption that the compiler doesn't use its knowledge that node==node2 to just undo this fix, or more strictly, + ctx->hp = READ_ONCE(node2); which I believe makes sure that the value of node2 is used. Alternatively you could always use an acquire load. Best wishes, jonas