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 8A221C433F5 for ; Tue, 8 Mar 2022 18:07:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 095398D0014; Tue, 8 Mar 2022 13:07:28 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 045C38D0001; Tue, 8 Mar 2022 13:07:28 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E4EA38D0014; Tue, 8 Mar 2022 13:07:27 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.28]) by kanga.kvack.org (Postfix) with ESMTP id D4EE28D0001 for ; Tue, 8 Mar 2022 13:07:27 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 9885E22232 for ; Tue, 8 Mar 2022 18:07:27 +0000 (UTC) X-FDA: 79222001334.11.3C661ED Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) by imf05.hostedemail.com (Postfix) with ESMTP id 2DF0E10000F for ; Tue, 8 Mar 2022 18:07:27 +0000 (UTC) Received: by mail-pj1-f51.google.com with SMTP id ge19-20020a17090b0e1300b001bcca16e2e7so2892744pjb.3 for ; Tue, 08 Mar 2022 10:07:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=pZliwmLm6S8tya/djJ5W/U/prHZbfOKsGwUj10OUIn0=; b=qpLtvuz0mEEMCmqJCiWKhn+xCPGesu6Pw3r09ZrgwzSL8mgKdriqPFXA9ih3Is4h9B SifskdlThgG6P5akCPbbqD9WE7XCGeo4X4REI2Xq16nnqJdjDh8Yg44L1Hb1N4TfG6tu n8UWwRuJGdgXt61SgxTM6sWov7sUP9PoJ1F6PcjaHjk4UA0ohjNiNuIFjIo8aiJ89BkM q1SFa5D5qa67somAsAgHXMVzggWN2AB2F3C/pooif71T2zLOfB4AZ8cqgO3NM+UdycIN 16Jx9ckYs0lUPqmnO2OwYbtPAh5PCfrByZLDoRJaA15JjjaLtO055sKJPEXWxnVf+m35 QGtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :mime-version:content-transfer-encoding; bh=pZliwmLm6S8tya/djJ5W/U/prHZbfOKsGwUj10OUIn0=; b=od32ygVOmdAggpV7wTqfRxaLZhs9gE98Q0IcCKVGGvzxOPLjfLvVwI5TNIY+uhp2pJ iVGqbnKcFsxOBtNtcjZw0g4k3NRqHEE2xWkC2fIDQaijQhFOjwDuEvEG21Q6QSpFulvX qUyt0/uOl1hVChqrK4F73VxcwcKPayuEBxGZXcIM2pHk20EtQn141z3jVBo8G+yafvep IX8AICHh3fFdVa7rH4LlKfEW5E0b9scQhL9UpNcOWRrJ639mFngLKfh8RwN1Aaus3NCc wujj06qQRseiBHqqCOhEwcp/g6BYx+L0mB0oUlWWfcOCVf2/+kUmCImCpg+bDyv/3q2G IIJw== X-Gm-Message-State: AOAM533zq9vqkGpUJkP97fPxEOtlQ5Df1H4Ixzuu9z0T3a5mD2JCVXwk G6tpAcKIMaeWQN0AoN6cBZY= X-Google-Smtp-Source: ABdhPJylFJEOWSaFFgHfIMPZ6Bg5gHKwdPIYqmxkknGO1e/TOEnJ+yqMzsCzV6dq5xLXIanBNwhu/g== X-Received: by 2002:a17:902:758f:b0:14f:b5ee:cc5a with SMTP id j15-20020a170902758f00b0014fb5eecc5amr18930620pll.43.1646762846012; Tue, 08 Mar 2022 10:07:26 -0800 (PST) Received: from bbox-1.mtv.corp.google.com ([2620:15c:211:201:ec3e:a6ab:7b5b:ed81]) by smtp.gmail.com with ESMTPSA id x23-20020a63fe57000000b0036490068f12sm15462368pgj.90.2022.03.08.10.07.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Mar 2022 10:07:12 -0800 (PST) From: Minchan Kim To: Andrew Morton Cc: linux-mm , LKML , Chris Goldsworthy , Marcelo Tosatti , John Dias , Minchan Kim Subject: [PATCH] mm: fs: fix lru_cache_disabled race in bh_lru Date: Tue, 8 Mar 2022 10:07:09 -0800 Message-Id: <20220308180709.2017638-1-minchan@kernel.org> X-Mailer: git-send-email 2.35.1.616.g0bdcbb4464-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 2DF0E10000F X-Rspam-User: Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=qpLtvuz0; spf=pass (imf05.hostedemail.com: domain of minchan.kim@gmail.com designates 209.85.216.51 as permitted sender) smtp.mailfrom=minchan.kim@gmail.com; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=kernel.org (policy=none) X-Stat-Signature: wac4zsh3nx7sem3rd65357w66ipptnip X-HE-Tag: 1646762847-887813 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: Check lru_cache_disabled under bh_lru_lock. Otherwise, it could introduce race below and it fails to migrate pages containing buffer_head. CPU 0 CPU 1 bh_lru_install lru_cache_disable lru_cache_disabled = false atomic_inc(&lru_disable_count); invalidate_bh_lrus_cpu of CPU 0 bh_lru_lock __invalidate_bh_lrus bh_lru_unlock bh_lru_lock install the bh bh_lru_unlock Fixes: 8cc621d2f45d (mm: fs: invalidate BH LRU during page migration) Signed-off-by: Minchan Kim --- fs/buffer.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/fs/buffer.c b/fs/buffer.c index 8e112b6bd371..c76a8ef60a75 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -1235,16 +1235,18 @@ static void bh_lru_install(struct buffer_head *bh) int i; check_irqs_on(); + bh_lru_lock(); + /* * the refcount of buffer_head in bh_lru prevents dropping the * attached page(i.e., try_to_free_buffers) so it could cause * failing page migration. * Skip putting upcoming bh into bh_lru until migration is done. */ - if (lru_cache_disabled()) + if (lru_cache_disabled()) { + bh_lru_unlock(); return; - - bh_lru_lock(); + } b = this_cpu_ptr(&bh_lrus); for (i = 0; i < BH_LRU_SIZE; i++) { -- 2.35.1.616.g0bdcbb4464-goog