> > > This control logic is a bit strange. > > > When change_tramp() fails we should not printk() the output variable. > > > > > > if (pid < 0){ > > > free(output); > > > return; > > > } > > > > > > Would be much cleaner. > > > > I just didn't want to clone this free-return stuff. So, what you > > proposing is like this: > > ------------ > > ... > > output = uml_kmalloc(output_len, UM_GFP_KERNEL); > > if (output == NULL) > > printk(UM_KERN_ERR "change : failed to allocate output " > > "buffer\n"); > > > > pid = change_tramp(argv, output, output_len); > > if (pid < 0) { > > free(output); <---------- I'm not sure but > > 'output' can be NULL here. > > return; > > } > > > > if (output != NULL) { > > printk("%s", output); > > kfree(output); > > } > > } > > ------------ > > > > I was trying to print 'output' only in case change_tramp is > > successful. That's the old logic. And at the same time perform free > > only in case output is not NULL. > > Why? > Freeing a NULL pointer is perfectly fine.
I should agree that something that you propose has better readability. So, here is updated patch. Thanks --- >From b0c5ca0336cc94b2fda251e0da7918394e59c5cd Mon Sep 17 00:00:00 2001 From: Vitaliy Ivanov <vitaliva...@gmail.com> Date: Fri, 8 Jul 2011 14:54:29 +0300 Subject: [PATCH] uml: drivers/net_user.c memory leak fix Perform memory cleanup on exit. On receiving invalid 'pid' we still should clean 'output' variable. Signed-off-by: Vitaliy Ivanov <vitaliva...@gmail.com> Signed-off-by: Richard Weinberger <rich...@nod.at> --- arch/um/drivers/net_user.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/arch/um/drivers/net_user.c b/arch/um/drivers/net_user.c index 9415dd9..5201188 100644 --- a/arch/um/drivers/net_user.c +++ b/arch/um/drivers/net_user.c @@ -228,7 +228,10 @@ static void change(char *dev, char *what, unsigned char *addr, "buffer\n"); pid = change_tramp(argv, output, output_len); - if (pid < 0) return; + if (pid < 0) { + kfree(output); + return; + } if (output != NULL) { printk("%s", output); -- 1.7.0.4 ------------------------------------------------------------------------------ All of the data generated in your IT infrastructure is seriously valuable. Why? It contains a definitive record of application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-d2d-c2 _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel