fs/gfs2: Use an IS_ERR test rather than a NULL test
Subsystems (2)
PATCH 1/1 fs/gfs2: Use an IS_ERR test rather than a NULL test
From: Julien Brunel <[email protected]>
In case of error, the function gfs2_inode_lookup returns an ERR pointer, but never returns a NULL pointer. So a NULL test that necessarily comes after an IS_ERR test should be deleted, and a NULL test that may come after a call to this function should be strengthened by an IS_ERR test.
The semantic match that finds this problem is as follows:
(http://www.emn.fr/x-info/coccinelle/)
// <smpl>
@match_bad_null_test@
expression x, E;
statement S1,S2;
@@
x = gfs2_inode_lookup(...)
... when != x = E
* if (x != NULL)
S1 else S2
// </smpl>
--- fs/gfs2/inode.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
fs/gfs2/inode.c +1 -3
@@ -1033,13 +1033,11 @@ struct inode *gfs2_createi(struct gfs2_hif (bh)brelse (bh); -if (!inode) -return ERR_PTR (-ENOMEM );return inode; fail_gunlock2:gfs2_glock_dq_uninit (ghs +1 ); -if (inode) +if (inode && !IS_ERR (inode))iput (inode); fail_gunlock:gfs2_glock_dq (ghs);
Hi,
Sorry for taking so long about this. Its now in the -nmw git tree. Thanks,
Steve.
Quoted 52 lines · Julien Brunel
From: Julien Brunel <[email protected]>
In case of error, the function
gfs2_inode_lookupreturns an ERR pointer, but never returns a NULL pointer. So a NULL test that necessarily comes after anIS_ERRtest should be deleted, and a NULL test that may come after a call to this function should be strengthened by anIS_ERRtest.The semantic match that finds this problem is as follows:
(http://www.emn.fr/x-info/coccinelle/)// <smpl>
@match_bad_null_test@
expression x, E;
statement S1,S2;
@@
x =gfs2_inode_lookup(...)
... when != x = E
* if (x != NULL)
S1 else S2
// </smpl>Signed-off-by Julien Brunel <[email protected]>Signed-off-by Julia Lawall <[email protected]>--- fs/gfs2/inode.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)diff -u -p
a/fs/gfs2/inode.cb/fs/gfs2/inode.cfs/gfs2/inode.c +1
-4@@ -1033,13 +1033,11 @@ struct inode *gfs2_createi(struct gfs2_hif (bh)brelse (bh); -if (!inode) -return ERR_PTR (-ENOMEM );return inode; fail_gunlock2:gfs2_glock_dq_uninit (ghs +1 ); -if (inode) +if (inode && !IS_ERR (inode))iput (inode); fail_gunlock:gfs2_glock_dq (ghs); --To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/