summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulia Lawall <Julia.Lawall@lip6.fr>2015-05-01 19:37:53 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-05-08 07:23:55 (GMT)
commit32a3fab2ed1ed7240514eb50506031e68dcd4a38 (patch)
tree15bfb379c911782a87ca140cca2a8aeadda9bed7
parent2522d76ae4061b679ebabea02e2ccf762846a4c0 (diff)
downloadlinux-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.c24
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);
}
}