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 A5323C77B73 for ; Sat, 27 May 2023 19:06:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 03092900003; Sat, 27 May 2023 15:06:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F22DE900002; Sat, 27 May 2023 15:06:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E11D4900003; Sat, 27 May 2023 15:06:27 -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 D2A2B900002 for ; Sat, 27 May 2023 15:06:27 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 3E1841402B6 for ; Sat, 27 May 2023 19:06:27 +0000 (UTC) X-FDA: 80836966014.04.6EBDBD4 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) by imf23.hostedemail.com (Postfix) with ESMTP id 4BEF314000A for ; Sat, 27 May 2023 19:06:25 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=qlEad91H; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf23.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.52 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1685214385; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=n66kUtCXN2+3ipqCEwIFuArZknqgA0I+gj/zASbJVa0=; b=jAUy1FzTJC4KVR7C63iY+GbV0Wxux2gnVcKjo33ksOA2rJ18ni4/SGFMFJnedGZDNMkvyb +0ZIp2wo7fcs+u+qpvyDwaqw/03R+bYNYbcUgcJcDh7U5RY7JP7xAoE8L7qN2OBiS2jnaZ /elzk7kipPCq5KoGT4tVmFvRBY6dXAw= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=qlEad91H; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf23.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.52 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1685214385; a=rsa-sha256; cv=none; b=XOWQy4P9wA+Yfmmk+102pOjYkHER8vF/U7+dq3+brXC08rE1hSmew1yMosIYgLt4UHnfeI wPHoUUqGRFc+zMOhoRGgEk8jvg89tpTQjQq5OcDTKLSQVT9C/iXHfxRw8NHMIm54GUpvLF gRDubPYTT9Fyi47SkEVs4NddpIdlDGY= Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-3f6cbdf16d2so12344885e9.2 for ; Sat, 27 May 2023 12:06:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685214384; x=1687806384; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=n66kUtCXN2+3ipqCEwIFuArZknqgA0I+gj/zASbJVa0=; b=qlEad91Hb9wTAMkOIeO45Ay3m0K4L9X+rQQq+dPrzuHbPkSWQL8mOzqiMhPbxPSIxf 1fBVGL6yY8ooZKrbeulCc++zyFPgmXyb3cfwQUF+EhzVHIQkl3udMP/fukSVw6ndExBn 7VPN6NpKL6nHhKcH2vlWIv4/2P/7QEfhZsWdxck+yOWaNBVR1al7sSTcIvFVQ/ry5BXs nMakQzSv7sZG98aSlHl2I6Wg0NU+uQX7utDW9rf1zJZqZUjd2Qt2yQkX/astpAnTRp2a XpGWHb2CGrlAwP909/jhEC5jNJdEPtKk8yLfQGRmfeEtfPEhVLPBc8cV91KuF/GTrJ4L Si1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685214384; x=1687806384; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=n66kUtCXN2+3ipqCEwIFuArZknqgA0I+gj/zASbJVa0=; b=FQhuq6gWQ20rgeRL/lQGfyaK8ctyIw7DH4KIqPp0Btd3u9VpirEWiuFy0G5p8/KpG/ m4gXtEvJ87XC8z45UI0FpLcgw0C1kg+5pjuoEn6PUOlSQx8EqoW9obaQIUYGtwq453bA DNfWqO7v5e+LCXY9OODFJ4GkkKBbMStqIFh+DNrhC0jNpDh84QDYfYLEIS7dGyElq1hQ wIrIGRhxbY1ZXwTQ3bwKILf6xeGBrmlmQgzGFa17zj2rEeuhvntfPu4/sq0VtuCV0TeZ +8hx9/3A6JTUafhSE4X1kDHg3GxgsXpVq6ur93mpZShhXWvAk5szysyeRkZMTrDslph+ Sfbw== X-Gm-Message-State: AC+VfDy5/Au0EcDilVKSJp46yP0DPfdnCt9kSQWHTrqi6/ryjs6EV6G9 m++O/JwvukQshkowB0TptV4= X-Google-Smtp-Source: ACHHUZ4Kzz9mdgQd6BW9KrV1BgNtly06cKJkE59+QQeuSI9WbLsb7hLD88yW8CixtbtAunkckcg6UQ== X-Received: by 2002:a05:600c:2113:b0:3f6:d2f:27f7 with SMTP id u19-20020a05600c211300b003f60d2f27f7mr5639193wml.17.1685214383472; Sat, 27 May 2023 12:06:23 -0700 (PDT) Received: from localhost (host81-154-179-160.range81-154.btcentralplus.com. [81.154.179.160]) by smtp.gmail.com with ESMTPSA id x21-20020a05600c21d500b003f6041f5a6csm9071625wmj.12.2023.05.27.12.06.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 May 2023 12:06:22 -0700 (PDT) Date: Sat, 27 May 2023 20:06:21 +0100 From: Lorenzo Stoakes To: Thomas Gleixner Cc: linux-mm@kvack.org, Andrew Morton , Christoph Hellwig , Uladzislau Rezki , Peter Zijlstra , Baoquan He Subject: Re: [V2 patch 5/6] mm/vmalloc: Add missing READ/WRITE_ONCE() annotations Message-ID: <4995e487-a6e6-4835-9ad7-1122c4d93b3e@lucifer.local> References: <20230525122342.109672430@linutronix.de> <20230525124504.807356682@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230525124504.807356682@linutronix.de> X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 4BEF314000A X-Stat-Signature: g9ugrp73i9wbog57a53ccw4kanfmuxq9 X-Rspam-User: X-HE-Tag: 1685214385-888216 X-HE-Meta: U2FsdGVkX1/dO1KLAnhLlhilfIET480b/USdTiCFojgRGYrhQYj2s+ETFm4nn+D5UCgwdNyWvrBqe0rMKmUzG+PN9XdRaIFzfTpeqO8REvWOSshenRhw7lFu+lFRIP45dC3zeBg8Vf0T6fs8TzKE07st7quNJApPCtWMiccbAoQ0zIN6u0xI4uPKEj7N+w9o+M/0vc3wM2VC00HaJW3MX0Pj/nEtksd64qKCFLBJQnH4IX1LlNPFeLI+hBJIck0pAq/w3HwrAh7myfgViN26HZFKlr9KASrLZmFWvATMURb6KbS/hBq0ZBaTcGOGnm9PupvqSb6CWs5DiUVUVDxWblE88GuNAcX2dXvdq+8LxL+cDAP70Wtb2mCTSuvPxWdHzQNL4A6mcx277M74BmidhWZRZxwZEyONR+IQQtb8OohhBS3bMf8Up3mke8A9ZT5EW9n7zlwRVjdLirr+kxJh1vHBLkuJnXev1Fwo3B0us8wnikZy/sv208+9ZiOaLyKhzX8JEiqU3QhSRbSaO+8GslcFx9JM0OBaGFXppYN9Ii1sFCvz2vpsk+L7OyKxIwiQBwj7vAtlMl/IaEWpKBHorzJvd/8CkbhJNhRh5vPQNavojEJ2UIT3LD2SpFxXHCIY+CHmd0rhHJ9wc+afBSvFpOsbCrETZpBEkqEss0Y0/Au6ncgwQq8i2HWhxxN5wHHgnTBSMFg+rjWWjIprrxRHaOdMPh2E6T8xabjuX7+h5gS7Ozn5nE7BzEKdXwL2cKTfr8MU1ApsHBUgYrv3oNrngQqeJhgeVx/vZ9PADr5k/2/sIWX1ElHtJCFVdnq7janXt5c6uqH9XUGP612J+8SUYlNy3Us5kkg1rjTg2GMVh3EB+H8EKBs11a893/bs27DwE1R4NRF69UjcfQFuHvJz6m288h5zs7B1zqXgQYPz+OxXJi56LXEdrFYWHg3Gd/AQUOjqpJLS8uY5AOLQwgv z/GleX9p VJOh7e2WtNbcsdT+9dpcMGeucBpqvr7faX/YTFktxiH92e4yeL8cAwS5sB5F9Uo0/E9i2bFaHHTryi+3d1MmPnzSvwxKmvRP+I3j6VFFO+Q5WQ9bjyGyJiQ2h4ZXGG3NLsUFgrK4dY9eUokmC0EvSaYi73oebp+Z/NbyjYgsrsPHcpG1NFdg6I1FSeoo4QXL8fBeoqjyrVQj00KeTiVZhXmwgzm0htVYlimBM5cNopA+siJTY4jNNl7+uHhItsy8GqGo2Xmgb6NLl8W8xIbqCPFJBz84EagReP5dCn5fth5qUnIXZUCHOBuPbPcWVkkuhxxFwUOszT29HAtBmic0+hp+y0aMnrbyQmmmXcDWkLqwATxoTjPIpySdkYLhLCsiCIC3r4TktWssbRxSD9AjaKzyQJq/iwfcqH/sSNDta43pr2tE0Qb9l7/E4xoc54TZ5Clm94OkdirbtxVFhbd/JxC+7LQ== 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: On Thu, May 25, 2023 at 02:57:08PM +0200, Thomas Gleixner wrote: > purge_fragmented_blocks() accesses vmap_block::free and vmap_block::dirty > lockless for a quick check. > > Add the missing READ/WRITE_ONCE() annotations. > > Signed-off-by: Thomas Gleixner > Reviewed-by: Uladzislau Rezki (Sony) > --- > mm/vmalloc.c | 13 ++++++++----- > 1 file changed, 8 insertions(+), 5 deletions(-) > > --- a/mm/vmalloc.c > +++ b/mm/vmalloc.c > @@ -2094,9 +2094,9 @@ static bool purge_fragmented_block(struc > return false; > > /* prevent further allocs after releasing lock */ > - vb->free = 0; > + WRITE_ONCE(vb->free, 0); > /* prevent purging it again */ > - vb->dirty = VMAP_BBMAP_BITS; > + WRITE_ONCE(vb->dirty, VMAP_BBMAP_BITS); > vb->dirty_min = 0; > vb->dirty_max = VMAP_BBMAP_BITS; > spin_lock(&vbq->lock); > @@ -2124,8 +2124,11 @@ static void purge_fragmented_blocks(int > > rcu_read_lock(); > list_for_each_entry_rcu(vb, &vbq->free, free_list) { > - if (vb->free + vb->dirty != VMAP_BBMAP_BITS || > - vb->dirty == VMAP_BBMAP_BITS) > + unsigned long free = READ_ONCE(vb->free); > + unsigned long dirty = READ_ONCE(vb->dirty); > + > + if (free + dirty != VMAP_BBMAP_BITS || > + dirty == VMAP_BBMAP_BITS) > continue; > > spin_lock(&vb->lock); > @@ -2233,7 +2236,7 @@ static void vb_free(unsigned long addr, > vb->dirty_min = min(vb->dirty_min, offset); > vb->dirty_max = max(vb->dirty_max, offset + (1UL << order)); > > - vb->dirty += 1UL << order; > + WRITE_ONCE(vb->dirty, vb->dirty + (1UL << order)); This is probably a me thing, but I'm a little confused as to why this is necessary in a code path distinct from the purge stuff, as this will only prevent the compiler from being 'creative' with ordering here which seems unlikely to be an issue? Or is it a case of belts + braces? Also wouldn't we require a READ_ONCE() here and below also? > if (vb->dirty == VMAP_BBMAP_BITS) { > BUG_ON(vb->free); > spin_unlock(&vb->lock); > >