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 X-Spam-Level: X-Spam-Status: No, score=-12.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C9966C63777 for ; Thu, 3 Dec 2020 12:20:05 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 2361C22245 for ; Thu, 3 Dec 2020 12:20:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2361C22245 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 419248D0001; Thu, 3 Dec 2020 07:20:04 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3A0FA6B007D; Thu, 3 Dec 2020 07:20:04 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 269D68D0001; Thu, 3 Dec 2020 07:20:04 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0198.hostedemail.com [216.40.44.198]) by kanga.kvack.org (Postfix) with ESMTP id 0BE8C6B0072 for ; Thu, 3 Dec 2020 07:20:04 -0500 (EST) Received: from smtpin30.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id BF8D5363B for ; Thu, 3 Dec 2020 12:20:03 +0000 (UTC) X-FDA: 77551877886.30.rod40_43088c1273bb Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin30.hostedemail.com (Postfix) with ESMTP id 963EB180B3C83 for ; Thu, 3 Dec 2020 12:20:03 +0000 (UTC) X-HE-Tag: rod40_43088c1273bb X-Filterd-Recvd-Size: 4612 Received: from mail-qt1-f196.google.com (mail-qt1-f196.google.com [209.85.160.196]) by imf28.hostedemail.com (Postfix) with ESMTP for ; Thu, 3 Dec 2020 12:20:02 +0000 (UTC) Received: by mail-qt1-f196.google.com with SMTP id p12so1115641qtp.7 for ; Thu, 03 Dec 2020 04:20:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=0YG4wbx5uXn5ZVc8LUjokfiUnek0XP00ZZjOe0WJxYE=; b=htPUd+NfDQhpS40j5lrHjNKKG7rGEqt/XAy15Gy4jCIT+ysNxBMY/VqgcC+2pbu0KM IgRe+7LoUCUovVJ3nAoYy+UTw57vLIMPhyMQccinnfj9GxV88/ZtM0yXOekmaoCxR6gQ fOHKpeOVgYwPC/CrVdoIpBFi6xC9hLtegzFyAe1Bp/TdUxABJ3RKwvc69b3CddXXutql qQJqNod4dekUrMD4lOdSXwzSGIyM1PTkb9c/0ZW+KQepDDZNr5/Pmf3AqaXgc9OJPVwH ZyA36V4QZURCtvFHBiDDJVT9f36gEXXmvaC6M9yx8kqWbT+9To7Z2Zgx7vfGBnh0/IJ0 SAkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=0YG4wbx5uXn5ZVc8LUjokfiUnek0XP00ZZjOe0WJxYE=; b=tPu9zspy8wctuF1egaNpRbAKhNJpAk5hPk0jwduRzZAjv1Cao18jTFTrpQqoOe6Qie Tkqds/mh7zWgeGZMpRssYt7OoRXb2V0WxMdVPvb0RS8utR/gDCE7frvd6rgw83kOIx0o digPwvroli/b8vkCoH7ph4VPqSQ2+7wnHeyW4x8HyqtQKyIDvJZhEEM479XSbg8aLIBq RgdsCVT3Delui5pKxrB0hJcUUXIEB4GDJFwS2LkDjErndPI2vBvu+0xmX+LfvnB04+Rx +EIvhqdDobs6To02i+bcNSxZdLClVzH2H3EyPX6HG5uLNv/kj8slgM+zPWGhaH2m3mZ9 72vw== X-Gm-Message-State: AOAM531e4kKsOv87L0KuX7HsIP0zVe/EXunzuuV4aFZrLu5Qk9U3Frkl N095zwHfPfqubTcrelEq56EmNJ7djJT3832ClDQ= X-Google-Smtp-Source: ABdhPJzsYP0w8jKrH5meaVwG1sMDh6W0b7QKYFjfYhXXElXPIHoIExJhd0KeaCU596idLDriqczWSKKSZQiYjhnoR0s= X-Received: by 2002:ac8:3a84:: with SMTP id x4mr2805779qte.55.1606998002440; Thu, 03 Dec 2020 04:20:02 -0800 (PST) MIME-Version: 1.0 References: <1606995362-16413-1-git-send-email-zhaoyang.huang@unisoc.com> In-Reply-To: <1606995362-16413-1-git-send-email-zhaoyang.huang@unisoc.com> From: Zhaoyang Huang Date: Thu, 3 Dec 2020 20:19:51 +0800 Message-ID: Subject: Re: [PATCH] mm: fix a race on nr_swap_pages To: Zhaoyang Huang , "open list:MEMORY MANAGEMENT" , LKML Content-Type: text/plain; charset="UTF-8" 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: It is show_swap_cache_info() which races with get_swap_xxx On Thu, Dec 3, 2020 at 7:36 PM Zhaoyang Huang wrote: > > The scenario on which "Free swap -4kB" happens in my system, which is caused by > get_swap_page_of_type or get_swap_pages racing with show_mem. Remove the race > here. > > Signed-off-by: Zhaoyang Huang > --- > mm/swapfile.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/mm/swapfile.c b/mm/swapfile.c > index cf63b5f..13201b6 100644 > --- a/mm/swapfile.c > +++ b/mm/swapfile.c > @@ -974,6 +974,8 @@ int get_swap_pages(int n_goal, swp_entry_t swp_entries[], int entry_size) > /* Only single cluster request supported */ > WARN_ON_ONCE(n_goal > 1 && size == SWAPFILE_CLUSTER); > > + spin_lock(&swap_avail_lock); > + > avail_pgs = atomic_long_read(&nr_swap_pages) / size; > if (avail_pgs <= 0) > goto noswap; > @@ -986,8 +988,6 @@ int get_swap_pages(int n_goal, swp_entry_t swp_entries[], int entry_size) > > atomic_long_sub(n_goal * size, &nr_swap_pages); > > - spin_lock(&swap_avail_lock); > - > start_over: > node = numa_node_id(); > plist_for_each_entry_safe(si, next, &swap_avail_heads[node], avail_lists[node]) { > @@ -1061,14 +1061,13 @@ swp_entry_t get_swap_page_of_type(int type) > > spin_lock(&si->lock); > if (si->flags & SWP_WRITEOK) { > - atomic_long_dec(&nr_swap_pages); > /* This is called for allocating swap entry, not cache */ > offset = scan_swap_map(si, 1); > if (offset) { > + atomic_long_dec(&nr_swap_pages); > spin_unlock(&si->lock); > return swp_entry(type, offset); > } > - atomic_long_inc(&nr_swap_pages); > } > spin_unlock(&si->lock); > fail: > -- > 1.9.1 >