From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794047014; b=UKhWhjFxSMXU1KSs+AmdIvnE9cED9R7naf9o0RJXqynuG4Zb5gvgpsasg12XjpO5GNod ajjAvsOB1H3ktCzVIwCOlPKsXqjmtUMeuHptpYYYtCQb78GDX6ffEV/moOQkVNsDlfdH0 c9GLO8dhOjhCUuqHSjb55irK0Dh2bNT5T+3+EOi16YvcqgVjPhCt125BylIBQwbACjozE G/s0mOC2T67+rO/xMRDRuSAJsibINH0F9s6sHBq7+VR86ejlUDUe1RL5KMeLlBmONRj6s +acUNyWx1/yLgAMDyot8c1uJAScay+OGrh2UfERGFKapAXYLhGgLJdkfYBrpBfixeYQ== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794047014; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-ID:X-Mailer: MIME-Version:Content-Type:Content-Transfer-Encoding; bh=rIIhlLQ9aKf3uIwHu271uIUbnR7OlvDeQ5dJdWkkmgo=; b=ik6+Jh1BLRZf6KQ2nh0cupev1PtK6AjdJcJYk83pX0h7kHzXJDjgs+qWvYlN8rcZVRwr BuoaMiSjmYOD5VDt9ojXbC5iHHTMnkJZubzikNgyAJwTxSVf/8ks+Jn+K9Bd1983LzatH 4xbSi1ghgmon0bBoPuUYPCuugUV+sncANRwla4GBqHnjEiS/MiVH1YvdOnoT6UPFQUsZn 9ykUtSTRibUY5qfE+rbwyRX/QlCIMwo+HWemxfeS8Rn80jayH8WtYu161s8mK5hC80aJ3 aurLxK4ho2ubkynxlPbkK3YJ/zZ+fXnyrEQ/umjZgTWct/GNq5wyUl/yU6NOMdcQ8vA== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=H8+LeMm4; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E075D606A32D for ; Sat, 7 Nov 2026 10:23:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=H8+LeMm4 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45B881F0089F; Sat, 7 Nov 2026 10:23:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1794047013; bh=rIIhlLQ9aKf3uIwHu271uIUbnR7OlvDeQ5dJdWkkmgo=; h=From:To:Cc:Subject:Date; b=H8+LeMm49LQoJ1JR/0mi9mA7NFCQnp4qTX4rr/814V0I4dvevq1luMrH2Rq199hdT 9DEEv1QWXLIlGpT1ShB20gOS2hGrNQeB8P80U0MD4cieyGw1u19uN729Fy9lDkTDSr lfpJiVg0VYUZECdeQfiGdYWahJ4aM3cp6gG4OepSibaRLwhmkUA2zJUq9i72oQpi7k ZzbKffFEhzAHI5QGb1Kljmh8wRDQyBZmFO/tgJc6Eh77Nw+3QtKHitcN1OTk1FpT0G DMk8xmQIOBTi0iqGby/TpuhPFGJAp2CN5crctDoWAX+KzXF5m5XdPeKeqwRv5ot7Dn CoUcd5O9D3Z7g== From: Sasha Levin To: joannelkoong@gmail.com, hbirthelmer@ddn.com, mszeredi@redhat.com Cc: stable@vger.kernel.org Subject: FAILED: patch "[PATCH] fuse: don't launder folios of a bad inode" failed to apply to 6.12-stable tree Date: Sat, 7 Nov 2026 05:23:32 -0500 Message-ID: <20261107052332-failed-6.12-01d0f3d294af@kernel.org> X-Mailer: git-send-email 2.53.0 X-Mailing-List: stable@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The patch below does not apply to the 6.12-stable tree. If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to . To reproduce the conflict and resubmit, you may use the following commands: git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.12.y git checkout FETCH_HEAD git cherry-pick -x 01d0f3d294af126f517d92c11e100525537f8be4 # git commit -s git send-email --to '' --in-reply-to '20261107052332-failed-6.12-01d0f3d294af@kernel.org' --subject-prefix 'PATCH 6.12.y' 'HEAD^..' Thanks, Sasha ------------------ original commit in Linus's tree ------------------ >From 01d0f3d294af126f517d92c11e100525537f8be4 Mon Sep 17 00:00:00 2001 From: Joanne Koong Date: Tue, 6 Oct 2026 03:51:36 -0700 Subject: [PATCH] fuse: don't launder folios of a bad inode fuse_flush() and fuse_writepages() reject writing back dirty data for any inode that has been marked bad, but fuse_launder_folio() doesn't. This can cause the following warning in fuse_write_file_get() to trigger, as reported by syzbot: WARNING: fs/fuse/file.c:2043 at fuse_write_file_get fs/fuse/file.c:2043 [inline] WARNING: fs/fuse/file.c:2043 at fuse_iomap_writeback_range+0x7c8/0x18f0 fs/fuse/file.c:2227 Call Trace: iomap_writeback_folio+0x1526/0x2490 fs/iomap/buffered-io.c:2022 fuse_launder_folio+0x17b/0x240 fs/fuse/file.c:2331 folio_unmap_invalidate+0x4cd/0x830 mm/truncate.c:634 invalidate_inode_pages2_range+0x629/0xb30 mm/truncate.c:726 fuse_open+0x5a6/0x770 fs/fuse/file.c:297 This can be hit on a writeback cache mount: 1) a writeable file is open and a buffered write dirties some pages 2) another thread opens the same file read-only. fuse_open() passes the bad inode check and sends OPEN to the server. 3) a SETATTR reply with the wrong file type marks the inode bad 4) the writeable file is closed. Flush and release skip writeback because the inode is bad. The pages stay dirty but the file gets removed from write_files. 5) server replies to the OPEN. The reply has no FOPEN_KEEP_CACHE, so fuse_open() calls invalidate_inode_pages2(). 6) the invalidation finds the dirty pages and calls fuse_launder_folio(), which finds no wriable file and hits the WARN_ON in fuse_write_file_get(). Instead of trying to write back dirty data for the bad inode, fuse_launder_folio() should return -EIO. Fixes: 5d069dbe8aaf ("fuse: fix bad inode") Reported-by: syzbot+e8200299b0556976e13c@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=e8200299b0556976e13c Cc: stable@vger.kernel.org Signed-off-by: Joanne Koong Reviewed-by: Horst Birthelmer Tested-by: syzbot+e8200299b0556976e13c@syzkaller.appspotmail.com Signed-off-by: Miklos Szeredi --- fs/fuse/file.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 6d707f2b3bff8..0ef46f6e0267f 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -2351,6 +2351,9 @@ static int fuse_launder_folio(struct folio *folio) .wb_ctx = &data, }; + if (fuse_is_bad(wpc.inode)) + return -EIO; + if (folio_clear_dirty_for_io(folio)) { err = iomap_writeback_folio(&wpc, folio); err = fuse_iomap_writeback_submit(&wpc, err); -- 2.53.0