Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp4481083ybx; Mon, 4 Nov 2019 14:08:45 -0800 (PST) X-Google-Smtp-Source: APXvYqwOq0F+/E0NLOfpXm3XfCiLqN7v0mgZ3ED2/V2G1UiTOny37jBf6JAWSHuOV6iz0Al/UjtS X-Received: by 2002:a17:906:6094:: with SMTP id t20mr1195514ejj.316.1572905324965; Mon, 04 Nov 2019 14:08:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1572905324; cv=none; d=google.com; s=arc-20160816; b=HS7YaBWWBKeZFEEzd3cv+WcKXGlsbu6CehmjUrr5R5A0mkaGmSGJGvuDL4XvGy/nT7 HxnCKqR3Fb1XsfOvVLbaCL+Ds3VRAg6RxJmWkPqsv06LZYnTsFtvyECfFfz7mpXn2asV fmQkMMYZQXgGXn/rRV5vwfFyBCC5LlcPr61dzW6gz9TyUEOIX3KUUWmQTiCijTxcllVc UOLks9nDYxCWZxY7dbuBdCDu9+D6sEzf0h1KKB3K7WxFz9GtkeyMSJVavtBA59PgNM4W MZ6YZDfOOy72RENOijfN8ptOn2fdccHo8iTM2VEqm3r6+HguNaWpHvTtXilKeG/DWVby RdxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=82jgzFDzuLST2/CkbBzvr1KGGbz39MHatg7feYstQLQ=; b=omdbwHUEApgiCEAgdQs5Sk2uuu1Mr1pxP/Hq8xLe0Q3fAng3u5WR9oRT/Iskm5IFhV 7KP9jRvVJI9tJMWuER+UijJJ6c5TXKGj5FT5RoJ1E1KS+7/8y1FKSJRqjSmXcEmW41LR CF0keBqiV9m9pOK/ODf65i63S59/lKqQSrqQwHkteHH++abyG658KigQUFCXpNhHwquS V71dU3ATVl4GO5fMbLeNMbNjRNAAhoWQZxUp08BwHXcL6iIyRDHlPE7oiEJGzNjIgh5S MClna77htk4xulzenMiwGR3MWNrCZnd+mw6fNf5MQ2SaeSKaOt3JoPJ52rBOvMvWL4/T Pipw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ZY1wf1s2; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id uz29si12794125ejb.68.2019.11.04.14.08.17; Mon, 04 Nov 2019 14:08:44 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ZY1wf1s2; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389775AbfKDWFE (ORCPT + 99 others); Mon, 4 Nov 2019 17:05:04 -0500 Received: from mail.kernel.org ([198.145.29.99]:36022 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389760AbfKDWFB (ORCPT ); Mon, 4 Nov 2019 17:05:01 -0500 Received: from localhost (6.204-14-84.ripe.coltfrance.com [84.14.204.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 36A7B218BA; Mon, 4 Nov 2019 22:04:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1572905099; bh=g/1jJJEFKW5X1R+aFTvTd5Tfcgjad6O4MnPohfqGe8c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZY1wf1s2aRBAcZEDwHCbcxLnig/B3kdr7k1DLeZm+ascZoUZiOF1Kd4mR2ymKlMoD f0wfl1HJT+OgJ2u0FFIGoB5CrfuDvR3G4PNvcmn/AP983vh9sK9e64VI4AYeO5jv4u FXlo/caaAd4OvCXfwDJfYiwSLHk58bF9ygTMdoMQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hulk Robot , ZhangXiaoxu , Anna Schumaker , Sasha Levin Subject: [PATCH 5.3 028/163] nfs: Fix nfsi->nrequests count error on nfs_inode_remove_request Date: Mon, 4 Nov 2019 22:43:38 +0100 Message-Id: <20191104212142.362069895@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191104212140.046021995@linuxfoundation.org> References: <20191104212140.046021995@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: ZhangXiaoxu [ Upstream commit 33ea5aaa87cdae0f9af4d6b7ee4f650a1a36fd1d ] When xfstests testing, there are some WARNING as below: WARNING: CPU: 0 PID: 6235 at fs/nfs/inode.c:122 nfs_clear_inode+0x9c/0xd8 Modules linked in: CPU: 0 PID: 6235 Comm: umount.nfs Hardware name: linux,dummy-virt (DT) pstate: 60000005 (nZCv daif -PAN -UAO) pc : nfs_clear_inode+0x9c/0xd8 lr : nfs_evict_inode+0x60/0x78 sp : fffffc000f68fc00 x29: fffffc000f68fc00 x28: fffffe00c53155c0 x27: fffffe00c5315000 x26: fffffc0009a63748 x25: fffffc000f68fd18 x24: fffffc000bfaaf40 x23: fffffc000936d3c0 x22: fffffe00c4ff5e20 x21: fffffc000bfaaf40 x20: fffffe00c4ff5d10 x19: fffffc000c056000 x18: 000000000000003c x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000040 x14: 0000000000000228 x13: fffffc000c3a2000 x12: 0000000000000045 x11: 0000000000000000 x10: 0000000000000000 x9 : 0000000000000000 x8 : 0000000000000000 x7 : 0000000000000000 x6 : fffffc00084b027c x5 : fffffc0009a64000 x4 : fffffe00c0e77400 x3 : fffffc000c0563a8 x2 : fffffffffffffffb x1 : 000000000000764e x0 : 0000000000000001 Call trace: nfs_clear_inode+0x9c/0xd8 nfs_evict_inode+0x60/0x78 evict+0x108/0x380 dispose_list+0x70/0xa0 evict_inodes+0x194/0x210 generic_shutdown_super+0xb0/0x220 nfs_kill_super+0x40/0x88 deactivate_locked_super+0xb4/0x120 deactivate_super+0x144/0x160 cleanup_mnt+0x98/0x148 __cleanup_mnt+0x38/0x50 task_work_run+0x114/0x160 do_notify_resume+0x2f8/0x308 work_pending+0x8/0x14 The nrequest should be increased/decreased only if PG_INODE_REF flag was setted. But in the nfs_inode_remove_request function, it maybe decrease when no PG_INODE_REF flag, this maybe lead nrequests count error. Reported-by: Hulk Robot Signed-off-by: ZhangXiaoxu Signed-off-by: Anna Schumaker Signed-off-by: Sasha Levin --- fs/nfs/write.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fs/nfs/write.c b/fs/nfs/write.c index 85ca49549b39b..52cab65f91cf0 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c @@ -786,7 +786,6 @@ static void nfs_inode_remove_request(struct nfs_page *req) struct nfs_inode *nfsi = NFS_I(inode); struct nfs_page *head; - atomic_long_dec(&nfsi->nrequests); if (nfs_page_group_sync_on_bit(req, PG_REMOVE)) { head = req->wb_head; @@ -799,8 +798,10 @@ static void nfs_inode_remove_request(struct nfs_page *req) spin_unlock(&mapping->private_lock); } - if (test_and_clear_bit(PG_INODE_REF, &req->wb_flags)) + if (test_and_clear_bit(PG_INODE_REF, &req->wb_flags)) { nfs_release_request(req); + atomic_long_dec(&nfsi->nrequests); + } } static void -- 2.20.1