@@ -1409,7 +1409,7 @@ static int traceprobe_parse_probe_arg_body(const char *argv, ssize_t *size,
1409
1409
struct traceprobe_parse_context * ctx )
1410
1410
{
1411
1411
struct fetch_insn * code , * tmp = NULL ;
1412
- char * type , * arg ;
1412
+ char * type , * arg __free ( kfree ) = NULL ;
1413
1413
int ret , len ;
1414
1414
1415
1415
len = strlen (argv );
@@ -1426,22 +1426,16 @@ static int traceprobe_parse_probe_arg_body(const char *argv, ssize_t *size,
1426
1426
return - ENOMEM ;
1427
1427
1428
1428
parg -> comm = kstrdup (arg , GFP_KERNEL );
1429
- if (!parg -> comm ) {
1430
- ret = - ENOMEM ;
1431
- goto out ;
1432
- }
1429
+ if (!parg -> comm )
1430
+ return - ENOMEM ;
1433
1431
1434
1432
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 );
1439
1435
1440
1436
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 ;
1445
1439
code [FETCH_INSN_MAX - 1 ].op = FETCH_OP_END ;
1446
1440
1447
1441
ctx -> last_type = NULL ;
@@ -1497,8 +1491,6 @@ static int traceprobe_parse_probe_arg_body(const char *argv, ssize_t *size,
1497
1491
kfree (code -> data );
1498
1492
}
1499
1493
kfree (tmp );
1500
- out :
1501
- kfree (arg );
1502
1494
1503
1495
return ret ;
1504
1496
}
@@ -1668,7 +1660,7 @@ const char **traceprobe_expand_meta_args(int argc, const char *argv[],
1668
1660
{
1669
1661
const struct btf_param * params = NULL ;
1670
1662
int i , j , n , used , ret , args_idx = -1 ;
1671
- const char * * new_argv = NULL ;
1663
+ const char * * new_argv __free ( kfree ) = NULL ;
1672
1664
1673
1665
ret = argv_has_var_arg (argc , argv , & args_idx , ctx );
1674
1666
if (ret < 0 )
@@ -1707,7 +1699,7 @@ const char **traceprobe_expand_meta_args(int argc, const char *argv[],
1707
1699
ret = sprint_nth_btf_arg (n , "" , buf + used ,
1708
1700
bufsize - used , ctx );
1709
1701
if (ret < 0 )
1710
- goto error ;
1702
+ return ERR_PTR ( ret ) ;
1711
1703
1712
1704
new_argv [j ++ ] = buf + used ;
1713
1705
used += ret + 1 ;
@@ -1721,40 +1713,35 @@ const char **traceprobe_expand_meta_args(int argc, const char *argv[],
1721
1713
n = simple_strtoul (argv [i ] + 4 , & type , 10 );
1722
1714
if (type && !(* type == ':' || * type == '\0' )) {
1723
1715
trace_probe_log_err (0 , BAD_VAR );
1724
- ret = - ENOENT ;
1725
- goto error ;
1716
+ return ERR_PTR (- ENOENT );
1726
1717
}
1727
1718
/* Note: $argN starts from $arg1 */
1728
1719
ret = sprint_nth_btf_arg (n - 1 , type , buf + used ,
1729
1720
bufsize - used , ctx );
1730
1721
if (ret < 0 )
1731
- goto error ;
1722
+ return ERR_PTR ( ret ) ;
1732
1723
new_argv [j ++ ] = buf + used ;
1733
1724
used += ret + 1 ;
1734
1725
} else
1735
1726
new_argv [j ++ ] = argv [i ];
1736
1727
}
1737
1728
1738
- return new_argv ;
1739
-
1740
- error :
1741
- kfree (new_argv );
1742
- return ERR_PTR (ret );
1729
+ return_ptr (new_argv );
1743
1730
}
1744
1731
1745
1732
/* @buf: *buf must be equal to NULL. Caller must to free *buf */
1746
1733
int traceprobe_expand_dentry_args (int argc , const char * argv [], char * * buf )
1747
1734
{
1748
1735
int i , used , ret ;
1749
1736
const int bufsize = MAX_DENTRY_ARGS_LEN ;
1750
- char * tmpbuf = NULL ;
1737
+ char * tmpbuf __free ( kfree ) = NULL ;
1751
1738
1752
1739
if (* buf )
1753
1740
return - EINVAL ;
1754
1741
1755
1742
used = 0 ;
1756
1743
for (i = 0 ; i < argc ; i ++ ) {
1757
- char * tmp ;
1744
+ char * tmp __free ( kfree ) = NULL ;
1758
1745
char * equal ;
1759
1746
size_t arg_len ;
1760
1747
@@ -1769,7 +1756,7 @@ int traceprobe_expand_dentry_args(int argc, const char *argv[], char **buf)
1769
1756
1770
1757
tmp = kstrdup (argv [i ], GFP_KERNEL );
1771
1758
if (!tmp )
1772
- goto nomem ;
1759
+ return - ENOMEM ;
1773
1760
1774
1761
equal = strchr (tmp , '=' );
1775
1762
if (equal )
@@ -1790,18 +1777,14 @@ int traceprobe_expand_dentry_args(int argc, const char *argv[], char **buf)
1790
1777
offsetof(struct file , f_path .dentry ),
1791
1778
equal ? equal + 1 : tmp );
1792
1779
1793
- kfree (tmp );
1794
1780
if (ret >= bufsize - used )
1795
- goto nomem ;
1781
+ return - ENOMEM ;
1796
1782
argv [i ] = tmpbuf + used ;
1797
1783
used += ret + 1 ;
1798
1784
}
1799
1785
1800
- * buf = tmpbuf ;
1786
+ * buf = no_free_ptr ( tmpbuf ) ;
1801
1787
return 0 ;
1802
- nomem :
1803
- kfree (tmpbuf );
1804
- return - ENOMEM ;
1805
1788
}
1806
1789
1807
1790
void traceprobe_finish_parse (struct traceprobe_parse_context * ctx )
0 commit comments