• Christoph Hellwig's avatar
    iomap: add a workaround for racy i_size updates on block devices · 381c0432
    Christoph Hellwig authored
    
    
    A szybot reproducer that does write I/O while truncating the size of a
    block device can end up in clean_bdev_aliases, which tries to clean the
    bdev aliases that it uses.  This is because iomap_to_bh automatically
    sets the BH_New flag when outside of i_size.  For block devices updates
    to i_size are racy and we can hit this case in a tiny race window,
    leading to the eventual clean_bdev_aliases call.  Fix this by erroring
    out of > i_size I/O on block devices.
    
    Reported-by: syzbot+1fa947e7f09e136925b8@syzkaller.appspotmail.com
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Tested-by: syzbot+1fa947e7f09e136925b8@syzkaller.appspotmail.com
    Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
    Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
    381c0432
buffer.c 82.9 KB