]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Revert "fs/ntfs3: Replace inode_trylock with inode_lock"
authorKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Fri, 4 Jul 2025 13:11:32 +0000 (15:11 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Aug 2025 10:04:52 +0000 (12:04 +0200)
[ Upstream commit a49f0abd8959048af18c6c690b065eb0d65b2d21 ]

This reverts commit 69505fe98f198ee813898cbcaf6770949636430b.

Initially, conditional lock acquisition was removed to fix an xfstest bug
that was observed during internal testing. The deadlock reported by syzbot
is resolved by reintroducing conditional acquisition. The xfstest bug no
longer occurs on kernel version 6.16-rc1 during internal testing. I
assume that changes in other modules may have contributed to this.

Fixes: 69505fe98f19 ("fs/ntfs3: Replace inode_trylock with inode_lock")
Reported-by: syzbot+a91fcdbd2698f99db8f4@syzkaller.appspotmail.com
Suggested-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/ntfs3/file.c

index 46eec986ec9ca7202a0b4e6101490681981a45bf..6d9c1dfe9b1b641a4a4060aa58dfa1de401c91fd 100644 (file)
@@ -317,7 +317,10 @@ static int ntfs_file_mmap(struct file *file, struct vm_area_struct *vma)
                }
 
                if (ni->i_valid < to) {
-                       inode_lock(inode);
+                       if (!inode_trylock(inode)) {
+                               err = -EAGAIN;
+                               goto out;
+                       }
                        err = ntfs_extend_initialized_size(file, ni,
                                                           ni->i_valid, to);
                        inode_unlock(inode);