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 2EEA5C43334 for ; Mon, 20 Jun 2022 07:55:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 95D2B6B0071; Mon, 20 Jun 2022 03:55:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8E6236B0073; Mon, 20 Jun 2022 03:55:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 786928E0001; Mon, 20 Jun 2022 03:55:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 666B66B0071 for ; Mon, 20 Jun 2022 03:55:12 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 3730C20D7B for ; Mon, 20 Jun 2022 07:55:12 +0000 (UTC) X-FDA: 79597853664.21.A026930 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by imf15.hostedemail.com (Postfix) with ESMTP id 1F5B5A008F for ; Mon, 20 Jun 2022 07:55:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655711711; x=1687247711; h=from:to:cc:subject:references:date:in-reply-to: message-id:mime-version; bh=BUrlbNZSKUvYRK40167TMJIvTUurjES69a62ziV+rhY=; b=NIK90OhLYHIwVkppqWVturex47Q3hbYyp9XHrPnneaYtzWarIR6hSRhT 9JLfEbfJljKuKHVkCeP2rkP34Nb8eAN0a2ANHoGSR63qkX8W8+YlowOjv vkHE6Gyg3ki0Hl2/FhIpKRpasjBb9mVO0YmwjA8XfXr7odeHLsnVj7NLX yYm2CzcScRqnKeUwDyH7OxlEOybzOSmPWe3zK2tB3CULZuZ6frEnDp8DK BAN7TasEIqOQY1wYJTXHGQC/28PFIG8ALLr9lCnnJs2oSAgc59cvCwJAH bA3ZY5hdAmqCwSdan20A+PYfNbLhbyCGD/JdZGnBTqqSITgPrge61JCeF w==; X-IronPort-AV: E=McAfee;i="6400,9594,10380"; a="366156939" X-IronPort-AV: E=Sophos;i="5.92,306,1650956400"; d="scan'208";a="366156939" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jun 2022 00:55:00 -0700 X-IronPort-AV: E=Sophos;i="5.92,306,1650956400"; d="scan'208";a="654559721" Received: from yhuang6-desk2.sh.intel.com (HELO yhuang6-desk2.ccr.corp.intel.com) ([10.239.13.94]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jun 2022 00:54:59 -0700 From: "Huang, Ying" To: Miaohe Lin Cc: , , , Subject: Re: [PATCH v2 2/3] mm/swapfile: fix possible data races of inuse_pages References: <20220608144031.829-1-linmiaohe@huawei.com> <20220608144031.829-3-linmiaohe@huawei.com> Date: Mon, 20 Jun 2022 15:54:55 +0800 In-Reply-To: <20220608144031.829-3-linmiaohe@huawei.com> (Miaohe Lin's message of "Wed, 8 Jun 2022 22:40:30 +0800") Message-ID: <87edzjrcq8.fsf@yhuang6-desk2.ccr.corp.intel.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=ascii ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1655711711; a=rsa-sha256; cv=none; b=harLsUSqydoDwU+YVTufzgHmwLycoxd6NS3Ix9DlMb+2QdHEHtrjVCiDRqZf5ekhCL59II vJxBu3HAJWY7XGaJV0sTMxCS9Kyq3ciD2TLV72V/SvdDDZpkcYCAuy+AozbDpjd6Q/AOsH 6Cn784Mx60naBrv2AuABUgQPCgADFac= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1655711711; 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=lcjmWbp7KQF8fk7fC6F98MKxditMnnUXy73d7tboT5U=; b=DuvqEgeW+I0qreAzgMEc06o5rJQ+QYmePXaTmhdREXxUtFagxjzSJ0R/y7NGS7jgPjlJLE fOHEH+x/2hX56OAsLAATanzOdZAu2wFtFlVX/HHSnKLndp9gUNPOyGQVfMaXhwnILJ3agC Ki6r+oVO4BeR6NDED1vx0HxReRBQEKA= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=NIK90OhL; dmarc=pass (policy=none) header.from=intel.com; spf=none (imf15.hostedemail.com: domain of ying.huang@intel.com has no SPF policy when checking 192.55.52.43) smtp.mailfrom=ying.huang@intel.com Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=NIK90OhL; dmarc=pass (policy=none) header.from=intel.com; spf=none (imf15.hostedemail.com: domain of ying.huang@intel.com has no SPF policy when checking 192.55.52.43) smtp.mailfrom=ying.huang@intel.com X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 1F5B5A008F X-Stat-Signature: wg4oz7xxbqzyrp4newk9ad5jdc7ma17w X-HE-Tag: 1655711710-394796 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: Miaohe Lin writes: > si->inuse_pages could still be accessed concurrently now. The plain reads > outside si->lock critical section, i.e. swap_show and si_swapinfo, which > results in data races. But these should be ok because they're just used > for showing swap info. > > Signed-off-by: Miaohe Lin > Reviewed-by: David Hildenbrand > --- > mm/swapfile.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/mm/swapfile.c b/mm/swapfile.c > index d2bead7b8b70..3fa26f6971e9 100644 > --- a/mm/swapfile.c > +++ b/mm/swapfile.c > @@ -2646,7 +2646,7 @@ static int swap_show(struct seq_file *swap, void *v) > } > > bytes = si->pages << (PAGE_SHIFT - 10); > - inuse = si->inuse_pages << (PAGE_SHIFT - 10); > + inuse = READ_ONCE(si->inuse_pages) << (PAGE_SHIFT - 10); > > file = si->swap_file; > len = seq_file_path(swap, file, " \t\n\\"); > @@ -3265,7 +3265,7 @@ void si_swapinfo(struct sysinfo *val) > struct swap_info_struct *si = swap_info[type]; > > if ((si->flags & SWP_USED) && !(si->flags & SWP_WRITEOK)) > - nr_to_be_unused += si->inuse_pages; > + nr_to_be_unused += READ_ONCE(si->inuse_pages); > } > val->freeswap = atomic_long_read(&nr_swap_pages) + nr_to_be_unused; > val->totalswap = total_swap_pages + nr_to_be_unused; READ_ONCE() should be paired with WRITE_ONCE(). So, change the writer side too? Best Regards, Huang, Ying