Am Freitag 08 Juli 2011, 15:00:44 schrieb Vitaliy Ivanov: > > > > 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>
Why are you adding my Signed-off-by?! That's my job... > --- > 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); Anyway, Applied! Thanks, //richard ------------------------------------------------------------------------------ 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