From nobody Sun Jul 26 01:45:47 2026 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C9A5D3DE436 for ; Fri, 10 Jul 2026 09:29:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783675784; cv=none; b=s24SnImpLrytZIWCWsUfWLp+qo6VdW33Pz0/P95xf3mcT6WixKOURjyEyPzXzcibBwdXMYwRWWFQiN7j15a86hH2fjOo2Rgl0O2xiFWl0mVuM7VbipTyWiAudQE6QsWdZHfNXREp4KN8vKT66nYWvtFWY6fZZiDu6WgJpqZdf64= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783675784; c=relaxed/simple; bh=4ieCCDJ5H/rjXNm4Of+5Nh2IRMy8yRejL0AX/t6i5mc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=h0ZYXVM3Vp6PxS5amaq4FjdxA+4i454Bn0HCCS2NSGt1sBRQUzhzzib9lXUmbeuPpbwxoxmaFK8PXVR2zE/XYnjjM0CQv1lrFINXJvAnB9moB3EDbloOrvwLtiuJJC64uoaQQKUTkSGC0+m9Bj8MddUUd/IQphfeQ1Ws7MO5lGQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Nl5Zr7r/; arc=none smtp.client-ip=209.85.210.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Nl5Zr7r/" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-8487214ad2bso909671b3a.1 for ; Fri, 10 Jul 2026 02:29:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783675782; x=1784280582; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=mcNr7aPJDaQGbJ8tF3tPtyZ2+lpmBfwpMh1imQLrr50=; b=Nl5Zr7r/ksibsy/qqwfU+DqXlLwqCpGtq2ak8x8agxtntGpyqEzCI32pAG1g8BuR/e oSoZ0k19Cc3jbs+laaCGFEc0yYuw3tqrHA+zfhEO31Vr/kUXMhxkZ0xdf9uBl146OUHy JMslM6+ps5n4gMTvcuUpt/vjsQ+l8FHNnZFp1B54ps26xsFJJeElA2rWqkRSHexPHwZP 60RH+HQh9WwD67H7n9peLv3a+5qI4cMASVmKmQi0jAdqLXj+PMtqqvGUe76Z6ely/agk EohfPVxD0oS898Gzc8FrWyX5u5E45ONZrPRFcufO61ox0lDmxNT0fZTMwj6gEblXD6KU QVTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783675782; x=1784280582; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=mcNr7aPJDaQGbJ8tF3tPtyZ2+lpmBfwpMh1imQLrr50=; b=KBsV0x6ZBCoXZtJny9dlxZPW0crEqK/ptWbdDdeJxUp/VvjiJgDZJKbyJ8o4wUps5a g9HyzkIFrgVK/BxhoT3pSCxwPIMP/hbM08+6A4OPw4b0EOvu3f51LbXOByBOvjrBsL85 G58Zbbt0gU8Klzy5g75UpK4p1VkIBDvVDh9II5MyzaOKlJXjuFmcIK8AOp6infknDRez AY/q/ZmETnGwWBk/itvFjpC7+W/4aOy0FIf/oP6BMTenKn5sPDDU6Zsm+SmBm3+0eDcO FXC25XXK6kU4eN2/TYmijE5O1egdsEuQCpmK4ubr95iPqqAbBUukwSw1IR7bZE7INnjb pukg== X-Forwarded-Encrypted: i=1; AHgh+Rq19j/m5tqRsie4/QTkB+ESeyH+hK8dWrAuGLorf77jF8VvmpRkmU590bdZq/6IXYkqsJL73KVXAPl46G0=@vger.kernel.org X-Gm-Message-State: AOJu0YzooATrSzD3npLzbI5ra7WFdKSg89PF2dIc+XUxpD/Hr6Iu9EYz Re87M3gfDBIeq74Ff4CdPlYeKtejx4/+SzqAX/3DKECaIhpwcgkBu0U4n042BA== X-Gm-Gg: AfdE7cksEfarxbQTR8ODYuZ6WMtMbQJ0JkZX4al5SY9ibzBjnC0Qlf9qgRMAIlX71OG DDwXNQGPDJkWaZg3rC3LHTBe9lLOAlr9/NQAq/mR7wZwZEKF5i2l+4Ozipzz0HKJi7UoAglfy+p wkTCWjypp89j+N/+Nrln9kaJ+YrzbJvHiggbOapTNIrBNKlhWF8uMaKot4wcN0nMdryJpMmC1cO ecY18UdIdN6oITkWMRST7ulgVR1OHSmvfASJ0QFO846kY7tGQXGEEBBUG27teDvbWSxOSADOeIH 3RYgjoJA0A3I8WpXLEHcewJJgg35i5wd9GENtoky9qOcOaCBVHcuaPwXPNZZi/wfsNog1RGF081 W2kUdbHI763fpZBla91PXOZKuDFUJuKqipyYn+6oKUSPY5LurLUjkVbBOvh4uhdwltWbSkJY/cL IJnSGzN1zgmf3eieL1VbWxiSw= X-Received: by 2002:a05:6a00:3011:b0:848:80ec:5d2 with SMTP id d2e1a72fcca58-84880ec0b07mr281171b3a.51.1783675781683; Fri, 10 Jul 2026 02:29:41 -0700 (PDT) Received: from ustb520lab-MS-7E07.. ([115.25.44.221]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-847f6db0eaasm9982141b3a.52.2026.07.10.02.29.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jul 2026 02:29:40 -0700 (PDT) From: Jiaming Zhang To: agruenba@redhat.com, gfs2@lists.linux.dev Cc: r772577952@gmail.com, linux-kernel@vger.kernel.org, syzkaller@googlegroups.com Subject: [PATCH] gfs2: stop logd and quotad before kill_sb log flush Date: Fri, 10 Jul 2026 17:29:32 +0800 Message-ID: <20260710092933.3631376-1-r772577952@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" gfs2_kill_sb() issues a synchronous log flush before stopping the gfs2_logd= and gfs2_quotad kthreads. Given a corrupted filesystem image, that flush can sp= end a long time while holding sd_log_flush_lock. Since the background threads are still alive at that point, gfs2_logd can be woken and block on sd_log_flush= _lock in gfs2_logd(), and gfs2_quotad can block on the same lock through gfs2_statfs_sync() -> __gfs2_trans_begin(). The threads can then remain in uninterruptible sleep long enough to trigger the hung task. Stop the background threads before the kill_sb log flush. gfs2_destroy_thre= ads() waits for both kthreads to exit via kthread_stop_put(), so after it returns there is no live logd or quotad thread that can wait behind sd_log_flush_lo= ck. Closes: https://lore.kernel.org/lkml/CANypQFasb8voDrg=3DO9xJikYHdRFeupb5VP2= VeJaZ_wFNMoGr2Q@mail.gmail.com/ Assisted-by: Codex:gpt-5.5-xhigh Signed-off-by: Jiaming Zhang --- fs/gfs2/ops_fstype.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c index 9b9e70f14d25..d087845a75d6 100644 --- a/fs/gfs2/ops_fstype.c +++ b/fs/gfs2/ops_fstype.c @@ -1776,6 +1776,8 @@ static void gfs2_kill_sb(struct super_block *sb) return; } =20 + gfs2_destroy_threads(sdp); + gfs2_log_flush(sdp, NULL, GFS2_LOG_HEAD_FLUSH_SYNC | GFS2_LFC_KILL_SB); dput(sdp->sd_root_dir); dput(sdp->sd_master_dir); --=20 2.43.0