diff options
author | Filipe Manana <fdmanana@suse.com> | 2016-06-17 18:13:36 +0200 |
---|---|---|
committer | Filipe Manana <fdmanana@suse.com> | 2016-08-01 08:23:20 +0200 |
commit | 7969e77a73164b418da851cbae35cdd6c1b43fee (patch) | |
tree | d1d5180d948bf266587333c85e3581b21a7b7cbd /fs | |
parent | Btrfs: send, fix failure to move directories with the same name around (diff) | |
download | linux-7969e77a73164b418da851cbae35cdd6c1b43fee.tar.xz linux-7969e77a73164b418da851cbae35cdd6c1b43fee.zip |
Btrfs: send, add missing error check for calls to path_loop()
The function path_loop() can return a negative integer, signaling an
error, 0 if there's no path loop and 1 if there's a path loop. We were
treating any non zero values as meaning that a path loop exists. Fix
this by explicitly checking for errors and gracefully return them to
user space.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/btrfs/send.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c index 993e1bab0a6b..0dc05bb856ff 100644 --- a/fs/btrfs/send.c +++ b/fs/btrfs/send.c @@ -3200,6 +3200,8 @@ static int apply_dir_move(struct send_ctx *sctx, struct pending_dir_move *pm) sctx->send_progress = sctx->cur_ino + 1; ret = path_loop(sctx, name, pm->ino, pm->gen, &ancestor); + if (ret < 0) + goto out; if (ret) { LIST_HEAD(deleted_refs); ASSERT(ancestor > BTRFS_FIRST_FREE_OBJECTID); |