Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp1800082pxb; Thu, 16 Sep 2021 16:14:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwN1ghnbnkIMiuZjW3KrRAxyocYQmSrkyvCEHxrDI0A2Qjuh58UStFbIbqmz9SCEY36tp15 X-Received: by 2002:a17:907:3e20:: with SMTP id hp32mr8775146ejc.536.1631834098450; Thu, 16 Sep 2021 16:14:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631834098; cv=none; d=google.com; s=arc-20160816; b=EgjfLbGeWP3A+1Fge1ARrseI33oPx2ZYCI2T/WFCLZk2wkvgFYqaIvhg/55MXfmrI+ EICFln6lS0A0auJ4KUrubFj7cCBdrpl3y2mkDpNiv5DESFjsrQdzYpdzLSx4k5lmkBw7 cw6tPVeCAgvMe56YsqC7oZvmd3tm8DxO4E+IBbyEuJgPA/YimKPguaqpxkR0XeBekvOV bCuK099vjBFoma8fIjBjmLpnhI17i5D7sd/rSIakrANio99G0KfWZ+Tkvnr1ZnyVbZc8 9qRSxNahIj4K52DFSlBDgKtRtPeJ3B3djau2pDBtKj/YUv03FBKuSFr/rH0XQCKjngif 0p3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=UewPNYQRrhC9wpWLC1eByrrBc+C/5ENl97yivUL/fAM=; b=WDnNciusKGX9htfUjCAK7GayRbazJxUgq/VXsg+fZ94rQCWjz7NTdEPiVu/5ELC/lY NBnA7IonuayoPaZK1zHNKvRQbuAzQDaUcIC9lGvkC076DWBRvGKxLbYw8Du8s8Le5ej0 xPIJTnSq3mpkrwxfseZ4S+FL5qhLq/B38evnzK8F9OC5jPG2BZHuqZwJ6pztk4Uj4Ynn R4c6vboITF9U0F3Z5hnul/PeNKclCcu/oE6vaBMgxFyU5y/5y6ogyjyP5/zeIV2qm5pb MLNQQQH36Yg6U1GnDVb1zt8A6jJOiFfQMWUJMg+CI4tPeAguOiorEeyPoYVtg7eqsca3 pf/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=OEPfWVLp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d5si3684124ejd.235.2021.09.16.16.14.35; Thu, 16 Sep 2021 16:14:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=OEPfWVLp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240964AbhIPQxY (ORCPT + 99 others); Thu, 16 Sep 2021 12:53:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:36672 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344778AbhIPQsd (ORCPT ); Thu, 16 Sep 2021 12:48:33 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 2B4E361503; Thu, 16 Sep 2021 16:27:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1631809648; bh=hBMpEcqTLqk1Iuuh/VqFCCsSi3SUvQ2kusH5coJhz90=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OEPfWVLprWjamuHT7wot2bB4DS1L4RhprvMhzMyhfxObM3ZWAVux0AB2MNdOhNYRs rfwButiiQ506Hfy+wx2xPiK0IR5wChHj5nwmWrPFZLh/F/NwOHz5UTYKd2Mvv+f4Sr vscLUFbq61tJnI++YKOJN5tpFZyuKVCGhtyjNlHs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Bob Peterson , Sasha Levin Subject: [PATCH 5.13 231/380] gfs2: Fix glock recursion in freeze_go_xmote_bh Date: Thu, 16 Sep 2021 17:59:48 +0200 Message-Id: <20210916155811.941403711@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210916155803.966362085@linuxfoundation.org> References: <20210916155803.966362085@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Bob Peterson [ Upstream commit 9d9b16054b7d357afde69a027514c695092b0d22 ] We must not call gfs2_consist (which does a file system withdraw) from the freeze glock's freeze_go_xmote_bh function because the withdraw will try to use the freeze glock, thus causing a glock recursion error. This patch changes freeze_go_xmote_bh to call function gfs2_assert_withdraw_delayed instead of gfs2_consist to avoid recursion. Signed-off-by: Bob Peterson Signed-off-by: Sasha Levin --- fs/gfs2/glops.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c index 54d3fbeb3002..384565d63eea 100644 --- a/fs/gfs2/glops.c +++ b/fs/gfs2/glops.c @@ -610,16 +610,13 @@ static int freeze_go_xmote_bh(struct gfs2_glock *gl) j_gl->gl_ops->go_inval(j_gl, DIO_METADATA); error = gfs2_find_jhead(sdp->sd_jdesc, &head, false); - if (error) - gfs2_consist(sdp); - if (!(head.lh_flags & GFS2_LOG_HEAD_UNMOUNT)) - gfs2_consist(sdp); - - /* Initialize some head of the log stuff */ - if (!gfs2_withdrawn(sdp)) { - sdp->sd_log_sequence = head.lh_sequence + 1; - gfs2_log_pointers_init(sdp, head.lh_blkno); - } + if (gfs2_assert_withdraw_delayed(sdp, !error)) + return error; + if (gfs2_assert_withdraw_delayed(sdp, head.lh_flags & + GFS2_LOG_HEAD_UNMOUNT)) + return -EIO; + sdp->sd_log_sequence = head.lh_sequence + 1; + gfs2_log_pointers_init(sdp, head.lh_blkno); } return 0; } -- 2.30.2