Patch "fs: fix an infinite loop in iomap_fiemap" has been added to the 5.17-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    fs: fix an infinite loop in iomap_fiemap

to the 5.17-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     fs-fix-an-infinite-loop-in-iomap_fiemap.patch
and it can be found in the queue-5.17 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 145788c6387a941ff9326af2b324d7a905798e6f
Author: Guo Xuenan <guoxuenan@xxxxxxxxxx>
Date:   Wed Mar 30 09:49:28 2022 -0700

    fs: fix an infinite loop in iomap_fiemap
    
    [ Upstream commit 49df34221804cfd6384135b28b03c9461a31d024 ]
    
    when get fiemap starting from MAX_LFS_FILESIZE, (maxbytes - *len) < start
    will always true , then *len set zero. because of start offset is beyond
    file size, for erofs filesystem it will always return iomap.length with
    zero,iomap iterate will enter infinite loop. it is necessary cover this
    corner case to avoid this situation.
    
    ------------[ cut here ]------------
    WARNING: CPU: 7 PID: 905 at fs/iomap/iter.c:35 iomap_iter+0x97f/0xc70
    Modules linked in: xfs erofs
    CPU: 7 PID: 905 Comm: iomap Tainted: G        W         5.17.0-rc8 #27
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014
    RIP: 0010:iomap_iter+0x97f/0xc70
    Code: 85 a1 fc ff ff e8 71 be 9c ff 0f 1f 44 00 00 e9 92 fc ff ff e8 62 be 9c ff 0f 0b b8 fb ff ff ff e9 fc f8 ff ff e8 51 be 9c ff <0f> 0b e9 2b fc ff ff e8 45 be 9c ff 0f 0b e9 e1 fb ff ff e8 39 be
    RSP: 0018:ffff888060a37ab0 EFLAGS: 00010293
    RAX: 0000000000000000 RBX: ffff888060a37bb0 RCX: 0000000000000000
    RDX: ffff88807e19a900 RSI: ffffffff81a7da7f RDI: ffff888060a37be0
    RBP: 7fffffffffffffff R08: 0000000000000000 R09: ffff888060a37c20
    R10: ffff888060a37c67 R11: ffffed100c146f8c R12: 7fffffffffffffff
    R13: 0000000000000000 R14: ffff888060a37bd8 R15: ffff888060a37c20
    FS:  00007fd3cca01540(0000) GS:ffff888108780000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000020010820 CR3: 0000000054b92000 CR4: 00000000000006e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     iomap_fiemap+0x1c9/0x2f0
     erofs_fiemap+0x64/0x90 [erofs]
     do_vfs_ioctl+0x40d/0x12e0
     __x64_sys_ioctl+0xaa/0x1c0
     do_syscall_64+0x35/0x80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
     </TASK>
    ---[ end trace 0000000000000000 ]---
    watchdog: BUG: soft lockup - CPU#7 stuck for 26s! [iomap:905]
    
    Reported-by: Hulk Robot <hulkci@xxxxxxxxxx>
    Signed-off-by: Guo Xuenan <guoxuenan@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    [djwong: fix some typos]
    Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx>
    Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/ioctl.c b/fs/ioctl.c
index 1ed097e94af2..85f7e4ee6924 100644
--- a/fs/ioctl.c
+++ b/fs/ioctl.c
@@ -173,7 +173,7 @@ int fiemap_prep(struct inode *inode, struct fiemap_extent_info *fieinfo,
 
 	if (*len == 0)
 		return -EINVAL;
-	if (start > maxbytes)
+	if (start >= maxbytes)
 		return -EFBIG;
 
 	/*



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux