diff options
| author | 2015-05-01 21:37:53 +0200 | |
|---|---|---|
| committer | 2015-05-08 09:23:55 +0200 | |
| commit | 32a3fab2ed1ed7240514eb50506031e68dcd4a38 (patch) | |
| tree | 15bfb379c911782a87ca140cca2a8aeadda9bed7 | |
| parent | staging: lustre: obdclass: llog: remove unneeded null test before free (diff) | |
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 687fbbd1eb3f..0bda9c56f148 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); } } |
