• Jan Kara's avatar
    fs: gracefully handle ->get_block not mapping bh in __mpage_writepage · 7010839c
    Jan Kara authored
    When filesystem's ->get_block function does not map the buffer head when
    called from __mpage_writepage(), the function will happily go and pass
    bogus bdev and block number to bio allocation routines which leads to
    crashes sooner or later. E.g. UDF can do this because it doesn't want to
    allocate blocks from ->writepages callbacks. It allocates blocks on
    write or page fault but writeback can still spot dirty buffers without
    underlying blocks allocated e.g. if blocksize < pagesize, the tail page
    is dirtied (which means all its buffers are dirtied), and truncate
    extends the file so that some buffer starts to be within i_size.
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarJan Kara <jack@suse.cz>
    7010839c
mpage.c 18.8 KB