• Ye Bin's avatar
    ext4: fix warning in ext4_iomap_begin as race between bmap and write · 51ae846c
    Ye Bin authored
    We got issue as follows:
    ------------[ cut here ]------------
    WARNING: CPU: 3 PID: 9310 at fs/ext4/inode.c:3441 ext4_iomap_begin+0x182/0x5d0
    RIP: 0010:ext4_iomap_begin+0x182/0x5d0
    RSP: 0018:ffff88812460fa08 EFLAGS: 00010293
    RAX: ffff88811f168000 RBX: 0000000000000000 RCX: ffffffff97793c12
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000003
    RBP: ffff88812c669160 R08: ffff88811f168000 R09: ffffed10258cd20f
    R10: ffff88812c669077 R11: ffffed10258cd20e R12: 0000000000000001
    R13: 00000000000000a4 R14: 000000000000000c R15: ffff88812c6691ee
    FS:  00007fd0d6ff3740(0000) GS:ffff8883af180000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fd0d6dda290 CR3: 0000000104a62000 CR4: 00000000000006e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     iomap_apply+0x119/0x570
     iomap_bmap+0x124/0x150
     ext4_bmap+0x14f/0x250
     bmap+0x55/0x80
     do_vfs_ioctl+0x952/0xbd0
     __x64_sys_ioctl+0xc6/0x170
     do_syscall_64+0x33/0x40
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Above issue may happen as follows:
              bmap                    write
    bmap
      ext4_bmap
        iomap_bmap
          ext4_iomap_begin
                                ext4_file_write_iter
    			      ext4_buffered_write_iter
    			        generic_perform_write
    				  ext4_da_write_begin
    				    ext4_da_write_inline_data_begin
    				      ext4_prepare_inline_data
    				        ext4_create_inline_data
    					  ext4_set_inode_flag(inode,
    						EXT4_INODE_INLINE_DATA);
          if (WARN_ON_ONCE(ext4_has_inline_data(inode))) ->trigger bug_on
    
    To solved above issue hold inode lock in ext4_bamp.
    Signed-off-by: default avatarYe Bin <yebin10@huawei.com>
    Link: https://lore.kernel.org/r/20220617013935.397596-1-yebin10@huawei.comSigned-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    51ae846c
inode.c 179 KB