@@ -1409,7 +1409,7 @@ static int traceprobe_parse_probe_arg_body(const char *argv, ssize_t *size,
14091409 struct traceprobe_parse_context * ctx )
14101410{
14111411 struct fetch_insn * code , * tmp = NULL ;
1412- char * type , * arg ;
1412+ char * type , * arg __free ( kfree ) = NULL ;
14131413 int ret , len ;
14141414
14151415 len = strlen (argv );
@@ -1426,22 +1426,16 @@ static int traceprobe_parse_probe_arg_body(const char *argv, ssize_t *size,
14261426 return - ENOMEM ;
14271427
14281428 parg -> comm = kstrdup (arg , GFP_KERNEL );
1429- if (!parg -> comm ) {
1430- ret = - ENOMEM ;
1431- goto out ;
1432- }
1429+ if (!parg -> comm )
1430+ return - ENOMEM ;
14331431
14341432 type = parse_probe_arg_type (arg , parg , ctx );
1435- if (IS_ERR (type )) {
1436- ret = PTR_ERR (type );
1437- goto out ;
1438- }
1433+ if (IS_ERR (type ))
1434+ return PTR_ERR (type );
14391435
14401436 code = tmp = kcalloc (FETCH_INSN_MAX , sizeof (* code ), GFP_KERNEL );
1441- if (!code ) {
1442- ret = - ENOMEM ;
1443- goto out ;
1444- }
1437+ if (!code )
1438+ return - ENOMEM ;
14451439 code [FETCH_INSN_MAX - 1 ].op = FETCH_OP_END ;
14461440
14471441 ctx -> last_type = NULL ;
@@ -1497,8 +1491,6 @@ static int traceprobe_parse_probe_arg_body(const char *argv, ssize_t *size,
14971491 kfree (code -> data );
14981492 }
14991493 kfree (tmp );
1500- out :
1501- kfree (arg );
15021494
15031495 return ret ;
15041496}
@@ -1668,7 +1660,7 @@ const char **traceprobe_expand_meta_args(int argc, const char *argv[],
16681660{
16691661 const struct btf_param * params = NULL ;
16701662 int i , j , n , used , ret , args_idx = -1 ;
1671- const char * * new_argv = NULL ;
1663+ const char * * new_argv __free ( kfree ) = NULL ;
16721664
16731665 ret = argv_has_var_arg (argc , argv , & args_idx , ctx );
16741666 if (ret < 0 )
@@ -1707,7 +1699,7 @@ const char **traceprobe_expand_meta_args(int argc, const char *argv[],
17071699 ret = sprint_nth_btf_arg (n , "" , buf + used ,
17081700 bufsize - used , ctx );
17091701 if (ret < 0 )
1710- goto error ;
1702+ return ERR_PTR ( ret ) ;
17111703
17121704 new_argv [j ++ ] = buf + used ;
17131705 used += ret + 1 ;
@@ -1721,40 +1713,35 @@ const char **traceprobe_expand_meta_args(int argc, const char *argv[],
17211713 n = simple_strtoul (argv [i ] + 4 , & type , 10 );
17221714 if (type && !(* type == ':' || * type == '\0' )) {
17231715 trace_probe_log_err (0 , BAD_VAR );
1724- ret = - ENOENT ;
1725- goto error ;
1716+ return ERR_PTR (- ENOENT );
17261717 }
17271718 /* Note: $argN starts from $arg1 */
17281719 ret = sprint_nth_btf_arg (n - 1 , type , buf + used ,
17291720 bufsize - used , ctx );
17301721 if (ret < 0 )
1731- goto error ;
1722+ return ERR_PTR ( ret ) ;
17321723 new_argv [j ++ ] = buf + used ;
17331724 used += ret + 1 ;
17341725 } else
17351726 new_argv [j ++ ] = argv [i ];
17361727 }
17371728
1738- return new_argv ;
1739-
1740- error :
1741- kfree (new_argv );
1742- return ERR_PTR (ret );
1729+ return_ptr (new_argv );
17431730}
17441731
17451732/* @buf: *buf must be equal to NULL. Caller must to free *buf */
17461733int traceprobe_expand_dentry_args (int argc , const char * argv [], char * * buf )
17471734{
17481735 int i , used , ret ;
17491736 const int bufsize = MAX_DENTRY_ARGS_LEN ;
1750- char * tmpbuf = NULL ;
1737+ char * tmpbuf __free ( kfree ) = NULL ;
17511738
17521739 if (* buf )
17531740 return - EINVAL ;
17541741
17551742 used = 0 ;
17561743 for (i = 0 ; i < argc ; i ++ ) {
1757- char * tmp ;
1744+ char * tmp __free ( kfree ) = NULL ;
17581745 char * equal ;
17591746 size_t arg_len ;
17601747
@@ -1769,7 +1756,7 @@ int traceprobe_expand_dentry_args(int argc, const char *argv[], char **buf)
17691756
17701757 tmp = kstrdup (argv [i ], GFP_KERNEL );
17711758 if (!tmp )
1772- goto nomem ;
1759+ return - ENOMEM ;
17731760
17741761 equal = strchr (tmp , '=' );
17751762 if (equal )
@@ -1790,18 +1777,14 @@ int traceprobe_expand_dentry_args(int argc, const char *argv[], char **buf)
17901777 offsetof(struct file , f_path .dentry ),
17911778 equal ? equal + 1 : tmp );
17921779
1793- kfree (tmp );
17941780 if (ret >= bufsize - used )
1795- goto nomem ;
1781+ return - ENOMEM ;
17961782 argv [i ] = tmpbuf + used ;
17971783 used += ret + 1 ;
17981784 }
17991785
1800- * buf = tmpbuf ;
1786+ * buf = no_free_ptr ( tmpbuf ) ;
18011787 return 0 ;
1802- nomem :
1803- kfree (tmpbuf );
1804- return - ENOMEM ;
18051788}
18061789
18071790void traceprobe_finish_parse (struct traceprobe_parse_context * ctx )
0 commit comments