On 8/21/17 8:40 AM, SF Markus Elfring wrote:
> From: Markus Elfring <elfr...@users.sourceforge.net>
> Date: Mon, 21 Aug 2017 13:10:15 +0200
> 
> Add a jump target so that a bit of exception handling can be better reused
> at the end of this function.
> 
> This issue was detected by using the Coccinelle software.

btrfs_abort_transaction dumps __FILE__:__LINE__ in the log so this patch
makes the code more difficult to debug.

-Jeff

> Signed-off-by: Markus Elfring <elfr...@users.sourceforge.net>
> ---
>  fs/btrfs/root-tree.c | 27 +++++++++++----------------
>  1 file changed, 11 insertions(+), 16 deletions(-)
> 
> diff --git a/fs/btrfs/root-tree.c b/fs/btrfs/root-tree.c
> index 5b488af6f25e..bc497ba9d9d1 100644
> --- a/fs/btrfs/root-tree.c
> +++ b/fs/btrfs/root-tree.c
> @@ -145,10 +145,8 @@ int btrfs_update_root(struct btrfs_trans_handle *trans, 
> struct btrfs_root
>               return -ENOMEM;
>  
>       ret = btrfs_search_slot(trans, root, key, path, 0, 1);
> -     if (ret < 0) {
> -             btrfs_abort_transaction(trans, ret);
> -             goto out;
> -     }
> +     if (ret < 0)
> +             goto abort_transaction;
>  
>       if (ret != 0) {
>               btrfs_print_leaf(path->nodes[0]);
> @@ -171,23 +169,17 @@ int btrfs_update_root(struct btrfs_trans_handle *trans, 
> struct btrfs_root
>               btrfs_release_path(path);
>               ret = btrfs_search_slot(trans, root, key, path,
>                               -1, 1);
> -             if (ret < 0) {
> -                     btrfs_abort_transaction(trans, ret);
> -                     goto out;
> -             }
> +             if (ret < 0)
> +                     goto abort_transaction;
>  
>               ret = btrfs_del_item(trans, root, path);
> -             if (ret < 0) {
> -                     btrfs_abort_transaction(trans, ret);
> -                     goto out;
> -             }
> +             if (ret < 0)
> +                     goto abort_transaction;
>               btrfs_release_path(path);
>               ret = btrfs_insert_empty_item(trans, root, path,
>                               key, sizeof(*item));
> -             if (ret < 0) {
> -                     btrfs_abort_transaction(trans, ret);
> -                     goto out;
> -             }
> +             if (ret < 0)
> +                     goto abort_transaction;
>               l = path->nodes[0];
>               slot = path->slots[0];
>               ptr = btrfs_item_ptr_offset(l, slot);
> @@ -204,6 +196,9 @@ int btrfs_update_root(struct btrfs_trans_handle *trans, 
> struct btrfs_root
>  out:
>       btrfs_free_path(path);
>       return ret;
> +abort_transaction:
> +     btrfs_abort_transaction(trans, ret);
> +     goto out;
>  }
>  
>  int btrfs_insert_root(struct btrfs_trans_handle *trans, struct btrfs_root 
> *root,
> 


-- 
Jeff Mahoney
SUSE Labs

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to