All of lore.kernel.org
 help / color / mirror / Atom feed
From: syzbot <syzbot+293a57918b36cfae3d48@syzkaller.appspotmail.com>
To: linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com
Subject: Forwarded: [PATCH] ext4: make ext4_write_inline_data_end() handle file conversion gracefully
Date: Fri, 17 Jul 2026 03:53:41 -0700	[thread overview]
Message-ID: <6a5a09b5.5028b7d0.1f0bb.001b.GAE@google.com> (raw)
In-Reply-To: <6a588d44.c96faac9.59e0.0012.GAE@google.com>

For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com.

***

Subject: [PATCH] ext4: make ext4_write_inline_data_end() handle file conversion gracefully
Author: kartikey406@gmail.com

#syz test: git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci


Replace BUG_ON(!ext4_has_inline_data(inode)) with a defensive check in
ext4_write_inline_data_end(). A file can be converted from inline to block
storage by concurrent paths while a write completion is in flight.

When this race occurs, the write completion handler should gracefully fall
back to block_write_end() instead of crashing. The data in the folio can
still be written to block storage via the fallback path.

This handles all inline-to-block conversion races regardless of which lock
protects the conversion (i_data_sem, xattr_sem, etc.).

Reported-by: syzbot+293a57918b36cfae3d48@syzkaller.appspotmail.com
Link: https://syzkaller.appspot.com/bug?extid=293a57918b36cfae3d48
Signed-off-by: Deepanshu Kartikey <kartikey406@gmail.com>
---
 fs/ext4/inline.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c
index 8045e4ff270c..04b9cd01fd7b 100644
--- a/fs/ext4/inline.c
+++ b/fs/ext4/inline.c
@@ -812,7 +812,11 @@ int ext4_write_inline_data_end(struct inode *inode, loff_t pos, unsigned len,
 			goto out;
 		}
 		ext4_write_lock_xattr(inode, &no_expand);
-		BUG_ON(!ext4_has_inline_data(inode));
+		/* File may have been converted to block storage by concurrent path */
+		if (!ext4_has_inline_data(inode)) {
+			ext4_write_unlock_xattr(inode, &no_expand);
+			return block_write_end(pos, len, copied, folio);
+		}
 
 		/*
 		 * ei->i_inline_off may have changed since
-- 
2.43.0


  parent reply	other threads:[~2026-07-17 10:53 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-16  7:50 [syzbot] [ext4?] kernel BUG in ext4_write_inline_data_end (3) syzbot
2026-07-17  0:08 ` Forwarded: [PATCH] ext4: fix race condition in ext4_write_end() with inline data conversion syzbot
2026-07-17  9:15 ` Forwarded: [PATCH] ext4: fix race in ext4_write_inline_data_end() by making it defensive syzbot
2026-07-17 10:53 ` syzbot [this message]
2026-07-17 13:41 ` Forwarded: [PATCH] ext4: handle inline-to-block file conversion race with error return syzbot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6a5a09b5.5028b7d0.1f0bb.001b.GAE@google.com \
    --to=syzbot+293a57918b36cfae3d48@syzkaller.appspotmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=syzkaller-bugs@googlegroups.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.