Just ignore this patch, i have merge the correct modification of this patch to the [patch V2] fix double free in the iterate_extent_inodes(). Thanks, Wang > On 03/30/13 12:55, Wang Shilong wrote: >> <snip> >> >>> On 03/29/13 14:42, Wang Shilong wrote: >>>> From: Wang Shilong <[email protected]> >>>> >>>> Just remove the unnecessary check and assignment. >>>> >>>> Signed-off-by: Wang Shilong <[email protected]> >>>> --- >>>> fs/btrfs/backref.c | 3 +-- >>>> 1 file changed, 1 insertion(+), 2 deletions(-) >>>> >>>> diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c >>>> index 3ca413bb..e102b48 100644 >>>> --- a/fs/btrfs/backref.c >>>> +++ b/fs/btrfs/backref.c >>>> @@ -1499,7 +1499,7 @@ int iterate_extent_inodes(struct btrfs_fs_info >>>> *fs_info, >>>> if (ret) >>>> break; >>>> ULIST_ITER_INIT(&root_uiter); >>>> - while (!ret && (root_node = ulist_next(roots, &root_uiter))) { >>>> + while ((root_node = ulist_next(roots, &root_uiter))) { >>> >>> It doesn't look unnecessary at all to me. ret is set in the loop and >>> only checked in the while condition. >>> >>>> pr_debug("root %llu references leaf %llu, data list " >>>> "%#llx\n", root_node->val, ref_node->val, >>>> (long long)ref_node->aux); >>>> @@ -1510,7 +1510,6 @@ int iterate_extent_inodes(struct btrfs_fs_info >>>> *fs_info, >>>> iterate, ctx); >>>> } >>>> ulist_free(roots); >>>> - roots = NULL; >>> >>> roots gets freed again later on. If you don't set it to NULL, it will >>> result in a double free. >> >> Maybe you mean this? >> >> http://marc.info/?l=linux-btrfs&m=136456233929528&w=2 >> ulist_free() here is unnecessary and may cause a double free⦠>> So we don't need to set it to NULL again.. > > Yeah, I haven't seen your other patch. > >> >> >> >>> >>> -Arne >>> >>>> } >>>> >>>> free_leaf_list(refs); >>>> >>> >> >
-- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
