btrfs-progs: save and return error number correctly in check_chunks_and_extents
authorEryu Guan <guaneryu@gmail.com>
Mon, 19 Oct 2015 11:37:51 +0000 (19:37 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 2 Nov 2015 08:35:02 +0000 (09:35 +0100)
The variable "err" is assigned to "ret" then "ret" gets overwritten by
check_extent_refs() before "ret" can be used. Reported by Coverity.

Signed-off-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
cmds-check.c

index 1f8caad..bd05b7e 100644 (file)
@@ -8195,13 +8195,12 @@ again:
                goto out;
        }
 
-       err = check_chunks(&chunk_cache, &block_group_cache,
+       ret = check_chunks(&chunk_cache, &block_group_cache,
                           &dev_extent_cache, NULL, NULL, NULL, 0);
-       if (err) {
-               if (err == -EAGAIN)
+       if (ret) {
+               if (ret == -EAGAIN)
                        goto loop;
-               if (!ret)
-                       ret = err;
+               err = ret;
        }
 
        ret = check_extent_refs(root, &extent_cache);
@@ -8211,8 +8210,8 @@ again:
                goto out;
        }
 
-       err = check_devices(&dev_cache, &dev_extent_cache);
-       if (err && !ret)
+       ret = check_devices(&dev_cache, &dev_extent_cache);
+       if (ret && err)
                ret = err;
 
 out: