diff mbox

Btrfs: fix return value check in btrfs_ioctl_send()

Message ID CAPgLHd-ikKq2V2aZ-u1AJAdaxma19DEifui+q+FxmX0pAh_mLA@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Wei Yongjun Sept. 21, 2012, 4:42 a.m. UTC
From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>

In case of error, the function btrfs_read_fs_root_no_name() returns
ERR_PTR() and never returns NULL pointer. The NULL test in the return
value check should be replaced with IS_ERR(), and remove useless
NULL test.

dpatch engine is used to auto generated this patch.
(https://github.com/weiyj/dpatch)

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
---
 fs/btrfs/send.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)



--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

David Sterba Sept. 24, 2012, 12:42 p.m. UTC | #1
On Fri, Sep 21, 2012 at 12:42:02PM +0800, Wei Yongjun wrote:
> From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
> 
> In case of error, the function btrfs_read_fs_root_no_name() returns
> ERR_PTR() and never returns NULL pointer. The NULL test in the return
> value check should be replaced with IS_ERR(), and remove useless
> NULL test.

Good catch.  Also please update the other remaining case in
disk-io.c:open_ctree()

2587         fs_info->fs_root = btrfs_read_fs_root_no_name(fs_info, &location);
2588         if (!fs_info->fs_root)
2589                 goto fail_qgroup;
2590         if (IS_ERR(fs_info->fs_root)) {
2591                 err = PTR_ERR(fs_info->fs_root);
2592                 goto fail_qgroup;
2593         }


> dpatch engine is used to auto generated this patch.
> (https://github.com/weiyj/dpatch)

I've played with it, looks nice, although it's full of hardcoded paths.
I'd like to run it directly from the git repo. Can you please fix that?
No patch from me, because I hadcoded my paths :)

It would be great if we can run a set of .cocci scripts that would
verify code invariants (limited to cocci capabilities, but eg. the
IS_ERR is a good example) and add new ones eventually over time.


david
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
index fb5ffe9..a617451 100644
--- a/fs/btrfs/send.c
+++ b/fs/btrfs/send.c
@@ -4501,10 +4501,6 @@  long btrfs_ioctl_send(struct file *mnt_file, void __user *arg_)
 			key.type = BTRFS_ROOT_ITEM_KEY;
 			key.offset = (u64)-1;
 			clone_root = btrfs_read_fs_root_no_name(fs_info, &key);
-			if (!clone_root) {
-				ret = -EINVAL;
-				goto out;
-			}
 			if (IS_ERR(clone_root)) {
 				ret = PTR_ERR(clone_root);
 				goto out;
@@ -4520,8 +4516,8 @@  long btrfs_ioctl_send(struct file *mnt_file, void __user *arg_)
 		key.type = BTRFS_ROOT_ITEM_KEY;
 		key.offset = (u64)-1;
 		sctx->parent_root = btrfs_read_fs_root_no_name(fs_info, &key);
-		if (!sctx->parent_root) {
-			ret = -EINVAL;
+		if (IS_ERR(sctx->parent_root)) {
+			ret = PTR_ERR(sctx->parent_root);
 			goto out;
 		}
 	}