Btrfs: fix wrong return value of btrfs_truncate_page()
PATCH 6/6 Btrfs: fix wrong return value of btrfs_truncate_page()
ret variant may be set to 0 if we read page successfully, but it might be released before we lock it again. On this case, if we fail to allocate a new page, we will return 0, it is wrong, fix it.
Signed-off-by Miao Xie <[email protected]>
--- fs/btrfs/inode.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
fs/btrfs/inode.c +1 -2
@@ -3497,11 +3497,11 @@ int btrfs_truncate_page(struct inode *inode, loff_t from, loff_t len,if (ret) goto out; - ret = -ENOMEM ; again: page =find_or_create_page (mapping, index, mask);if (!page) {btrfs_delalloc_release_space (inode,PAGE_CACHE_SIZE ); + ret = -ENOMEM ; goto out; }
@@ -3550,7 +3550,6 @@ again: goto out_unlock; } - ret =0 ;if (offset !=PAGE_CACHE_SIZE ) {if (!len) len =PAGE_CACHE_SIZE - offset;
Signature · 1 line
1.7.11.7