diff options
author | Julia Lawall <Julia.Lawall@lip6.fr> | 2015-05-01 19:37:53 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-05-08 07:23:55 (GMT) |
commit | 32a3fab2ed1ed7240514eb50506031e68dcd4a38 (patch) | |
tree | 15bfb379c911782a87ca140cca2a8aeadda9bed7 | |
parent | 2522d76ae4061b679ebabea02e2ccf762846a4c0 (diff) | |
download | linux-32a3fab2ed1ed7240514eb50506031e68dcd4a38.tar.xz |
staging: lustre: obdclass: obd_config: remove unneeded null test before free
Kfree can cope with a null argument, so drop null tests.
The semantic patch that identifies this issue is as follows:
(http://coccinelle.lip6.fr/)
// <smpl>
@@ expression ptr; @@
- if (ptr != NULL)
kfree(ptr);
// </smpl>
The first part of the patch introduces new labels to avoid unnecessary
calls to kfree. In addition, lprof->lp_md is always null in the cleanup
code at the end of the function, so that kfree is just dropped.
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/staging/lustre/lustre/obdclass/obd_config.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/drivers/staging/lustre/lustre/obdclass/obd_config.c b/drivers/staging/lustre/lustre/obdclass/obd_config.c index 687fbbd..0bda9c5 100644 --- a/drivers/staging/lustre/lustre/obdclass/obd_config.c +++ b/drivers/staging/lustre/lustre/obdclass/obd_config.c @@ -869,7 +869,7 @@ int class_add_profile(int proflen, char *prof, int osclen, char *osc, lprof->lp_profile = kzalloc(proflen, GFP_NOFS); if (lprof->lp_profile == NULL) { err = -ENOMEM; - goto out; + goto free_lprof; } memcpy(lprof->lp_profile, prof, proflen); @@ -877,7 +877,7 @@ int class_add_profile(int proflen, char *prof, int osclen, char *osc, lprof->lp_dt = kzalloc(osclen, GFP_NOFS); if (lprof->lp_dt == NULL) { err = -ENOMEM; - goto out; + goto free_lp_profile; } memcpy(lprof->lp_dt, osc, osclen); @@ -886,7 +886,7 @@ int class_add_profile(int proflen, char *prof, int osclen, char *osc, lprof->lp_md = kzalloc(mdclen, GFP_NOFS); if (lprof->lp_md == NULL) { err = -ENOMEM; - goto out; + goto free_lp_dt; } memcpy(lprof->lp_md, mdc, mdclen); } @@ -894,13 +894,11 @@ int class_add_profile(int proflen, char *prof, int osclen, char *osc, list_add(&lprof->lp_list, &lustre_profile_list); return err; -out: - if (lprof->lp_md) - kfree(lprof->lp_md); - if (lprof->lp_dt) - kfree(lprof->lp_dt); - if (lprof->lp_profile) - kfree(lprof->lp_profile); +free_lp_dt: + kfree(lprof->lp_dt); +free_lp_profile: + kfree(lprof->lp_profile); +free_lprof: kfree(lprof); return err; } @@ -916,8 +914,7 @@ void class_del_profile(const char *prof) list_del(&lprof->lp_list); kfree(lprof->lp_profile); kfree(lprof->lp_dt); - if (lprof->lp_md) - kfree(lprof->lp_md); + kfree(lprof->lp_md); kfree(lprof); } } @@ -932,8 +929,7 @@ void class_del_profiles(void) list_del(&lprof->lp_list); kfree(lprof->lp_profile); kfree(lprof->lp_dt); - if (lprof->lp_md) - kfree(lprof->lp_md); + kfree(lprof->lp_md); kfree(lprof); } } |