From 0cefa0430dd41591806b1ba89b30078114795326 Mon Sep 17 00:00:00 2001 From: Jan Schmidt Date: Fri, 13 Apr 2012 12:28:00 +0200 Subject: [PATCH] --- yaml --- r: 299805 b: refs/heads/master c: aefc1eb13ebbb86c5ffade8a9e2425cd71032d7e h: refs/heads/master i: 299803: de2a7581cb29543b0bcce8511d435ab4a17d20e1 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/backref.c | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index f7ce35200d26..1377286c73c9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4735fb282830c0966b301dabcccf4753fa6604bb +refs/heads/master: aefc1eb13ebbb86c5ffade8a9e2425cd71032d7e diff --git a/trunk/fs/btrfs/backref.c b/trunk/fs/btrfs/backref.c index b332ff04c5ee..fb56bcc80377 100644 --- a/trunk/fs/btrfs/backref.c +++ b/trunk/fs/btrfs/backref.c @@ -1247,7 +1247,7 @@ static int iterate_irefs(u64 inum, struct btrfs_root *fs_root, struct btrfs_path *path, iterate_irefs_t *iterate, void *ctx) { - int ret; + int ret = 0; int slot; u32 cur; u32 len; @@ -1259,7 +1259,7 @@ static int iterate_irefs(u64 inum, struct btrfs_root *fs_root, struct btrfs_inode_ref *iref; struct btrfs_key found_key; - while (1) { + while (!ret) { ret = inode_ref_info(inum, parent ? parent+1 : 0, fs_root, path, &found_key); if (ret < 0) @@ -1288,10 +1288,8 @@ static int iterate_irefs(u64 inum, struct btrfs_root *fs_root, (unsigned long long)found_key.objectid, (unsigned long long)fs_root->objectid); ret = iterate(parent, iref, eb, ctx); - if (ret) { - free_extent_buffer(eb); + if (ret) break; - } len = sizeof(*iref) + name_len; iref = (struct btrfs_inode_ref *)((char *)iref + len); }