From: Vasily Averin Date: Fri, 9 Nov 2018 16:34:40 +0000 (-0500) Subject: ext4: missing !bh check in ext4_xattr_inode_write() X-Git-Tag: v5.4-rc1~2221^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eb6984fa4ce2837dcb1f66720a600f31b0bb3739;p=platform%2Fkernel%2Flinux-rpi.git ext4: missing !bh check in ext4_xattr_inode_write() According to Ted Ts'o ext4_getblk() called in ext4_xattr_inode_write() should not return bh = NULL The only time that bh could be NULL, then, would be in the case of something really going wrong; a programming error elsewhere (perhaps a wild pointer dereference) or I/O error causing on-disk file system corruption (although that would be highly unlikely given that we had *just* allocated the blocks and so the metadata blocks in question probably would still be in the cache). Fixes: e50e5129f384 ("ext4: xattr-in-inode support") Signed-off-by: Vasily Averin Signed-off-by: Theodore Ts'o Cc: stable@kernel.org # 4.13 --- diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index 0b96886..7643d52 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c @@ -1384,6 +1384,12 @@ retry: bh = ext4_getblk(handle, ea_inode, block, 0); if (IS_ERR(bh)) return PTR_ERR(bh); + if (!bh) { + WARN_ON_ONCE(1); + EXT4_ERROR_INODE(ea_inode, + "ext4_getblk() return bh = NULL"); + return -EFSCORRUPTED; + } ret = ext4_journal_get_write_access(handle, bh); if (ret) goto out;