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 B5AD9CE8D4F for ; Thu, 19 Sep 2024 06:39:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0F1156B0085; Thu, 19 Sep 2024 02:39:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0A0D06B0088; Thu, 19 Sep 2024 02:39:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EAA856B0089; Thu, 19 Sep 2024 02:39:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id CD5D46B0085 for ; Thu, 19 Sep 2024 02:39:28 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 1E2E7A0AB8 for ; Thu, 19 Sep 2024 06:39:28 +0000 (UTC) X-FDA: 82580536416.18.B2A395A Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) by imf12.hostedemail.com (Postfix) with ESMTP id 568E440006 for ; Thu, 19 Sep 2024 06:39:26 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ZMtzIR02; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf12.hostedemail.com: domain of jiangshanlai@gmail.com designates 209.85.216.43 as permitted sender) smtp.mailfrom=jiangshanlai@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1726727955; a=rsa-sha256; cv=none; b=3JgZ9gyYZqvLeJsxWRvseq6fycYzzc8RA5jxhXSrV9gMlF44/VWzaTEDevE9I7k27WG7BU onfCyx5NNzju8Z6/ASFi4cF7nzcE4uacr933WWxVqkYVB9ig5VxIj0o9hUq9G3jeeAwrNr NcZzV3HrPMhMHhf5UB6QuYiacEUCtww= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ZMtzIR02; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf12.hostedemail.com: domain of jiangshanlai@gmail.com designates 209.85.216.43 as permitted sender) smtp.mailfrom=jiangshanlai@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1726727955; 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:dkim-signature; bh=ciBDeJbMoYShPX4NBgaU7Dv6KXNedCl1tbMLTbPne+k=; b=g9BrHv1h+/TQmtaIXrEqG3ChHfqwY3ou45aUBzheHR0YR5pWB1Ysg3d8QVDQHQrLAxYReT RQDk5zrU6cVgNBwY3KXVaNaRIq/9sJv+VaoPHHgquh8tOUjs2cl8N4Jj/NLr/CPm7JUgsU hQPLIaAIMQ15tqbuVOlwlCROr5jOqno= Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-2d87a0bfaa7so458095a91.2 for ; Wed, 18 Sep 2024 23:39:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1726727965; x=1727332765; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=ciBDeJbMoYShPX4NBgaU7Dv6KXNedCl1tbMLTbPne+k=; b=ZMtzIR02WXp6biyRjG75si5m6qOQFEfB+F+B0baLtpLfE2vnC2VwmbpRr85V8Myy9w T6EjIv4HJ4iJ0lRjBfY6xIxPGSYgjtTEvkTqCyJ2VT4UPgw4PUXLBanO7NrdwUnrrmLS 08AvH3UK7w9ZS9caulLvbe/ZKkWA1JvDJEQwAve2rLgptz0aH/IDqLSb1dpyHW8yqM8F xXZYtHLHNs6JhUfk25Bqu1/Bbmnjb147wQMa54FI71POYBIRIJuHtxh9qCp3ggQj5+LE 1Kd5k+MjbmIJYki1/USBa69PTTUZZeAi2PV+krR0lTS8FJ+TPZopg6TwEtN9qbPbmO6E qcyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726727965; x=1727332765; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ciBDeJbMoYShPX4NBgaU7Dv6KXNedCl1tbMLTbPne+k=; b=VLh6RdInoOHF9XcSZPvUwu+xdXmOgSYQBmbnl38J+TEPzorW41iEh78BlVar2zBgUS DH/uOVRLbulHMGCYXwYnDCIgx+VMQOQ312+Kybm/UvPNFYeNdbzaz0OHpkPVyWoDSNmx jEtQq9ux0tvDS5uqTf7JGR1XGy4z+xKyz+3FvrRH1eaje2uhO8NFRilkzX3yFjGRtYvD BFWdC7BzScpCTreuvnuhmdrE3eTmOOSUvspISM+9NgcWuPdtU5dkZCmemmffiC2CvS08 8TnkAiRdGE1aYOj4TC767FbPdLLUw1kl8cO6UhCIj4hGUQOpt8LEsAw7jS1wP74gXIGP oRVQ== X-Forwarded-Encrypted: i=1; AJvYcCW65ErXcH/WUSdkObaLSMvMtXcB9tpPJctejERCnr0BjsbaIoHAIFiygjBoyTnwhGVcKUYggRAj8g==@kvack.org X-Gm-Message-State: AOJu0YwY5ZOoRFS23SgpRDnukFvkPuIRLGx83TDibsf2ftMEB5oci3fJ b7Ub4hhCWvn6mgiHLunzNqnkfUcMuLFT2bdQ1XqjURKrL4lCKHp/2igSC4K2acYW/C/AFqupxZc rENR5pkK9w9/VnrYUQ2k0Q9ENWAY= X-Google-Smtp-Source: AGHT+IHTFEsMgb0xzYGl8MhnF2VcxUosQdj2CvtQ/OvDBnL7Eb5sTTXGpiv/plzMVm2V6OOuYAOL3prxrQoZvbq0PIw= X-Received: by 2002:a17:90b:4f91:b0:2d3:cd27:c480 with SMTP id 98e67ed59e1d1-2dbb9f7d558mr28967837a91.33.1726727964820; Wed, 18 Sep 2024 23:39:24 -0700 (PDT) MIME-Version: 1.0 References: <20240917143402.930114-1-boqun.feng@gmail.com> <20240917143402.930114-2-boqun.feng@gmail.com> In-Reply-To: <20240917143402.930114-2-boqun.feng@gmail.com> From: Lai Jiangshan Date: Thu, 19 Sep 2024 14:39:13 +0800 Message-ID: Subject: Re: [RFC PATCH 1/4] hazptr: Add initial implementation of hazard pointers To: Boqun Feng Cc: linux-kernel@vger.kernel.org, rcu@vger.kernel.org, linux-mm@kvack.org, lkmm@vger.kernel.org, "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Uladzislau Rezki , Steven Rostedt , Mathieu Desnoyers , Zqiang , Peter Zijlstra , Ingo Molnar , Will Deacon , Waiman Long , Mark Rutland , Thomas Gleixner , Kent Overstreet , Linus Torvalds , Vlastimil Babka , maged.michael@gmail.com, Neeraj Upadhyay Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: mhprh1uaesjqfipkbkjkztnw5z4cnapx X-Rspamd-Queue-Id: 568E440006 X-Rspamd-Server: rspam02 X-HE-Tag: 1726727966-889863 X-HE-Meta: U2FsdGVkX1/Da3eOvrIataWLCf+eqCmCMeEgXnLX1IGEH/0URmEzvN9FmYZBxKcXUJjOwa4CIGbFbVSgRLPfFn4896GuflHK1JGZCGLxJBN6YoPW5/1+t2LL2GDf3VCYMuVqQEGGc9r0hXvJzDywacUNstTQ+lUv4AShu5f9MrlqnPvwmhpX5liN7xos9PKFkIfIzwsi6gYY/g8afSQxyZp+zH3xBRTWr5VkF8AxHNe0pIttQ5SjWpXC03uxus7jefw9tLeOoQlPYGC9SYVtyWWuD0sriEQ8PZBW2Mv0Xv2JJ3qEZ7cjD7XmVYRfnmkYX6YPHR/WemtKZEW2ytCOSW9OEL7CGs8ssf4UmG2+hczWYp95e0IAeIQC8CwV9EA+Q8bsGr//BbBk01Jv+GOeaMdujKDio2HXhRvBOmtsZZ2nljl7sFPpHC1d8XrA4wJmecobFy7+29liDrfGS6TtoatT7WvBG8EdmFQxVwt+zmIoztwNM/ABZXnqKA0JlIVK8Pw7nqfNx7oYaaebc+uuV0LZcz2nQzfNlk8Wv4+6afdGyNBE640p8UcYk9H7WMnC+qQlQM4f+IaDZCKNHMEx/QngYcA3gs+gMC40tvr/sZhgP/liGMvkOQKmfc3rKKhVE548ZYsV6ZqfN6z3cUXb4TlFhrbKuoqsexZF2IL+xOaNzoe7qUghaXpJwceFK98/5Lt2WNYHhNyIgjvsCRkX7XpoZkI43FpFMDlhMCZwpJhW2ELJqulch5EY/Zf4L+3xpivo+721XQCaums3Y2f+zSv/3D4XmJe4A+gc8Fs8+eG9wk+E+3DDikNZBiAScCV+3K54M5Srbde3OAmDZQQYfNRdUq8RETQLiIp/o3MY/57KOqZKG5o7bdDqxjkeSOEup0O7n2zBJ22QMgNlb0Wa6IxN8zQtG36Cng1GQhYqZawbP2llL3W4cVMJC+hy1hG2YYsLwLocm3jqUz7srLG 91fCaH4S lH9mhelqER0sfN+qtwxpTkjMy9cM/kv3sME3z+tBEtHNe24fHBD56Z62gI55GiCi85BGCcDQuJcFQbQuNBLJ6lWqR/t83ysHRSWCKTLbuRUS9Tjy77v9vlEVuKN2eOML2GiPb5j9Ype9RSaOgKti8Y79QVpdbZWrey7A3enydZjuN8rXalYANe8Jj/7AHskoFtiNHmGNcijZNUM6Du5ju+w0l8G/Yrutv9RaNFQ4yqFWjFZy2DYm0KQ7jp9U/E5c6pidA8DW75FCHoEusfcOdiDs44V11w9c2In5p8ydrX9kpw/BG9GNL0j0UcYVbaP6R1aNrexfPGINy5ct4gjOTODkMxFx6WkPbXAR193x0cNoePxiv7C/+fHC1jrFZYpYjivXiRU3k0WmTw9Yjw5UAIezyOLwIzpvhk7RI 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: On Tue, Sep 17, 2024 at 10:34=E2=80=AFPM Boqun Feng = wrote: > +static void hazptr_context_snap_readers_locked(struct hazptr_reader_tree= *tree, > + struct hazptr_context *hzc= p) > +{ > + lockdep_assert_held(hzcp->lock); > + > + for (int i =3D 0; i < HAZPTR_SLOT_PER_CTX; i++) { > + /* > + * Pairs with smp_store_release() in hazptr_{clear,free}(= ). > + * > + * Ensure > + * > + * > + * > + * [access protected pointers] > + * hazptr_clear(); > + * smp_store_release() > + * // in reader scan. > + * smp_load_acquire(); // is null or= unused. > + * [run callbacks] // all accesses f= rom > + * // reader must be > + * // observed. > + */ > + hazptr_t val =3D smp_load_acquire(&hzcp->slots[i]); > + > + if (!is_null_or_unused(val)) { > + struct hazptr_slot_snap *snap =3D &hzcp->snaps[i]= ; > + > + // Already in the tree, need to remove first. > + if (!is_null_or_unused(snap->slot)) { > + reader_del(tree, snap); > + } > + snap->slot =3D val; > + reader_add(tree, snap); > + } > + } > +} Hello I'm curious about whether there are any possible memory leaks here. It seems that call_hazptr() never frees the memory until the slot is set to another valid value. In the code here, the snap is not deleted when hzcp->snaps[i] is null/unuse= d and snap->slot is not which I think it should be. And it can cause unneeded deletion and addition of the snap if the slot value is unchanged. I'm not so sure... Thanks Lai