From be40a5e29e3eba9c5628512b6f991ab6822a3f04 Mon Sep 17 00:00:00 2001 From: Tapasweni Pathak Date: Sat, 25 Oct 2014 10:46:02 +0530 Subject: [PATCH] staging: unisys: visorchannel: Improved cleanup code kfree on NULL pointer is a no-op. This patch used the following semantic patch to find an instance where NULL check is present before kfree // @@ expression E; @@ - if (E != NULL) { kfree(E); } + kfree(E); @@ expression E; @@ - if (E != NULL) { kfree(E); E = NULL; } + kfree(E); + E = NULL; // Code is made more simpler by breaking up of sequence of kmallocs and adding some more exit labels. Removed unnecessary initialization of buf and fmtbuf to NULL as they are local variables. Suggested-by: Arnd Bergmann Suggested-by: Julia Lawall Signed-off-by: Tapasweni Pathak Acked-by: Julia Lawall Signed-off-by: Greg Kroah-Hartman --- .../unisys/visorchannel/visorchannel_funcs.c | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/drivers/staging/unisys/visorchannel/visorchannel_funcs.c b/drivers/staging/unisys/visorchannel/visorchannel_funcs.c index c24052b13fd2..5fbd5ada52e9 100644 --- a/drivers/staging/unisys/visorchannel/visorchannel_funcs.c +++ b/drivers/staging/unisys/visorchannel/visorchannel_funcs.c @@ -650,15 +650,17 @@ visorchannel_dump_section(VISORCHANNEL *chan, char *s, fmtbufsize = 100 * COVQ(len, 16); buf = kmalloc(len, GFP_KERNEL|__GFP_NORETRY); + if (!buf) + return; fmtbuf = kmalloc(fmtbufsize, GFP_KERNEL|__GFP_NORETRY); - if (buf == NULL || fmtbuf == NULL) - goto Away; + if (!fmtbuf) + goto fmt_failed; errcode = visorchannel_read(chan, off, buf, len); if (errcode < 0) { ERRDRV("%s failed to read %s from channel errcode=%d", s, __func__, errcode); - goto Away; + goto read_failed; } seq_printf(seq, "channel %s:\n", s); tbuf = buf; @@ -670,14 +672,9 @@ visorchannel_dump_section(VISORCHANNEL *chan, char *s, len -= 16; } -Away: - if (buf != NULL) { - kfree(buf); - buf = NULL; - } - if (fmtbuf != NULL) { - kfree(fmtbuf); - fmtbuf = NULL; - } +read_failed: + kfree(fmtbuf); +fmt_failed: + kfree(buf); } EXPORT_SYMBOL_GPL(visorchannel_dump_section); -- 2.30.2