On Mon, Aug 12, 2024 at 04:27:33PM +0100, fdmanana@xxxxxxxxxx wrote: > From: Filipe Manana <fdmanana@xxxxxxxx> > > commit e0391e92f9ab4fb3dbdeb139c967dcfa7ac4b115 upstream. > > If we do a direct IO sync write, at btrfs_sync_file(), and we need to skip > inode logging or we get an error starting a transaction or an error when > flushing delalloc, we end up unlocking the inode when we shouldn't under > the 'out_release_extents' label, and then unlock it again at > btrfs_direct_write(). > > Fix that by checking if we have to skip inode unlocking under that label. > > Reported-by: syzbot+7dbbb74af6291b5a5a8b@xxxxxxxxxxxxxxxxxxxxxxxxx > Link: https://lore.kernel.org/linux-btrfs/000000000000dfd631061eaeb4bc@xxxxxxxxxx/ > Fixes: 939b656bc8ab ("btrfs: fix corruption after buffer fault in during direct IO append write") > Reviewed-by: Josef Bacik <josef@xxxxxxxxxxxxxx> > Signed-off-by: Filipe Manana <fdmanana@xxxxxxxx> > Signed-off-by: David Sterba <dsterba@xxxxxxxx> > --- > fs/btrfs/file.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) All now queued up, thanks. greg k-h