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=-13.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY, URIBL_BLOCKED,USER_AGENT_GIT 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 46AA3C433C1 for ; Tue, 30 Mar 2021 10:23:50 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id D363461955 for ; Tue, 30 Mar 2021 10:23:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D363461955 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=bytedance.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 620B56B00A6; Tue, 30 Mar 2021 06:23:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5F8206B00A7; Tue, 30 Mar 2021 06:23:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 498686B00A8; Tue, 30 Mar 2021 06:23:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0028.hostedemail.com [216.40.44.28]) by kanga.kvack.org (Postfix) with ESMTP id 2D55F6B00A6 for ; Tue, 30 Mar 2021 06:23:49 -0400 (EDT) Received: from smtpin26.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id E313152B0 for ; Tue, 30 Mar 2021 10:23:48 +0000 (UTC) X-FDA: 77976154536.26.50FD08B Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) by imf09.hostedemail.com (Postfix) with ESMTP id A08886000104 for ; Tue, 30 Mar 2021 10:23:46 +0000 (UTC) Received: by mail-pg1-f177.google.com with SMTP id h25so11408568pgm.3 for ; Tue, 30 Mar 2021 03:23:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zl+lZA6IhpCUdnBZY8wrlIzpChNsz+rycB3YEkTf9d8=; b=jFmF1YweAfzCVW5eqeWZ6Wo5H2khjQVMjiHyanNyg6cfLPNR69RzaFvzTv5BCuFeeY kn4hrQEOWLZyoALmJ/9YjSod4oMunh8bu9E1BHxTdkklBsUMbCUHK3qmC0FpAmeYKmXW 3QUJOTX1TY2viaAiH6YZ35hoI3TzS5dTvChl4oM0uHXFybdk0T+8Z1ezdg9HRstUInBF G+V6B9oQ86nel9+i/N94+u4H27ha13gSyfVSElV4s1a9UjwxrM7I3ckM+Px2Tq30y79e QBRt4L0utaWecE4FCLY1xbwc1c+eiKB2kzTEQx6uc8BikMu809d+RPCs9fnGrS8ms/t6 usGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zl+lZA6IhpCUdnBZY8wrlIzpChNsz+rycB3YEkTf9d8=; b=GJaH/EVVHaD8fTl603hQ7s4yyVqoR1eONJj/Ct9cBaDBt0fTovbgeiMgS6cJe0OUtD MVC16VtdOgle/XJYpRhapoZhSw8rcmENfwDzgBEN5s/q+VA80PaPkqa4AJX4tbEQifLr Bs0V98nLavLMSy3JuB06FmwLGKme90AvP0gl+9Qau+ZGtw2DfJt1Jq2vc8uhGn1QWXsS im/sUUGMVMG+QNUAB5VQZczQwv/9KDd83+OtJ1/RvgED+KJ64WfdvFy3q7pGr4N/QuhM y9L2mY57v6+UMpgeArpa2nYwyyUHKU6mGep7PHzkTn5uSOVI3mMNqEu9wi887NvmArJB VmDQ== X-Gm-Message-State: AOAM533cpw47XW8tXOYixp50bz+yeZS5WcfyLLh6pXv4TbYIYx0I085T DFOjAC36kjn5XPeYzjzzf5iEEUpb4TysUAskMmU= X-Google-Smtp-Source: ABdhPJzQlV5q8vaRIDxPUz0GLjpfRCT4vVajWn0k9HKajxPtZV/x9+IEGJqZR3HRCpycu/Y5CXYmNQ== X-Received: by 2002:aa7:93af:0:b029:1ef:1bb9:b1a1 with SMTP id x15-20020aa793af0000b02901ef1bb9b1a1mr29893022pff.49.1617099827671; Tue, 30 Mar 2021 03:23:47 -0700 (PDT) Received: from localhost.localdomain ([2408:8445:ad30:68d8:c87f:ca1b:dc00:4730]) by smtp.gmail.com with ESMTPSA id k10sm202259pfk.205.2021.03.30.03.23.33 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 30 Mar 2021 03:23:47 -0700 (PDT) From: Muchun Song To: guro@fb.com, hannes@cmpxchg.org, mhocko@kernel.org, akpm@linux-foundation.org, shakeelb@google.com, vdavydov.dev@gmail.com Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, duanxiongchun@bytedance.com, Muchun Song Subject: [RFC PATCH 15/15] mm: lru: add VM_BUG_ON_PAGE to lru maintenance function Date: Tue, 30 Mar 2021 18:15:31 +0800 Message-Id: <20210330101531.82752-16-songmuchun@bytedance.com> X-Mailer: git-send-email 2.21.0 (Apple Git-122) In-Reply-To: <20210330101531.82752-1-songmuchun@bytedance.com> References: <20210330101531.82752-1-songmuchun@bytedance.com> MIME-Version: 1.0 X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: A08886000104 X-Stat-Signature: jhhoq3iq5mp6yfszx4wie4z5pd4tjotm Received-SPF: none (bytedance.com>: No applicable sender policy available) receiver=imf09; identity=mailfrom; envelope-from=""; helo=mail-pg1-f177.google.com; client-ip=209.85.215.177 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1617099826-1475 Content-Transfer-Encoding: quoted-printable 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: We need to make sure that the page is deleted from or added to the correct lruvec list. So add a VM_BUG_ON_PAGE() to catch invalid users. Signed-off-by: Muchun Song --- include/linux/mm_inline.h | 6 ++++++ mm/vmscan.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h index 355ea1ee32bd..d19870448287 100644 --- a/include/linux/mm_inline.h +++ b/include/linux/mm_inline.h @@ -84,6 +84,8 @@ static __always_inline void add_page_to_lru_list(struct= page *page, { enum lru_list lru =3D page_lru(page); =20 + VM_BUG_ON_PAGE(!lruvec_holds_page_lru_lock(page, lruvec), page); + update_lru_size(lruvec, lru, page_zonenum(page), thp_nr_pages(page)); list_add(&page->lru, &lruvec->lists[lru]); } @@ -93,6 +95,8 @@ static __always_inline void add_page_to_lru_list_tail(s= truct page *page, { enum lru_list lru =3D page_lru(page); =20 + VM_BUG_ON_PAGE(!lruvec_holds_page_lru_lock(page, lruvec), page); + update_lru_size(lruvec, lru, page_zonenum(page), thp_nr_pages(page)); list_add_tail(&page->lru, &lruvec->lists[lru]); } @@ -100,6 +104,8 @@ static __always_inline void add_page_to_lru_list_tail= (struct page *page, static __always_inline void del_page_from_lru_list(struct page *page, struct lruvec *lruvec) { + VM_BUG_ON_PAGE(!lruvec_holds_page_lru_lock(page, lruvec), page); + list_del(&page->lru); update_lru_size(lruvec, page_lru(page), page_zonenum(page), -thp_nr_pages(page)); diff --git a/mm/vmscan.c b/mm/vmscan.c index fea6b43bc1f9..0a4a3072d092 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -1656,6 +1656,8 @@ static unsigned long isolate_lru_pages(unsigned lon= g nr_to_scan, page =3D lru_to_page(src); prefetchw_prev_lru_page(page, src, flags); =20 + VM_BUG_ON_PAGE(!lruvec_holds_page_lru_lock(page, lruvec), page); + nr_pages =3D compound_nr(page); total_scan +=3D nr_pages; =20 @@ -1866,7 +1868,6 @@ static unsigned noinline_for_stack move_pages_to_lr= u(struct lruvec *lruvec, * All pages were isolated from the same lruvec (and isolation * inhibits memcg migration). */ - VM_BUG_ON_PAGE(!lruvec_holds_page_lru_lock(page, lruvec), page); add_page_to_lru_list(page, lruvec); nr_pages =3D thp_nr_pages(page); nr_moved +=3D nr_pages; --=20 2.11.0