Messages in this thread | | | Date | Fri, 26 Jun 2009 07:49:49 -0700 | From | Greg KH <> | Subject | Re: [PATCH] kobject_set_name_vargs memory leak |
| |
On Fri, Jun 26, 2009 at 05:36:52PM +0300, Sergey Senozhatsky wrote: > Hello. > I suppose this patch fixes memory leak in kobject.c > Correct me if I'm wrong. > Thanks. > ----------- > > Fix memory leak when kobject_set_name_vargs returns -ENOMEM. > > Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@mail.by> > --- > diff --git a/lib/kobject.c b/lib/kobject.c > index b512b74..922cd8c 100644 > --- a/lib/kobject.c > +++ b/lib/kobject.c > @@ -222,8 +222,10 @@ int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, > return 0; > > kobj->name = kvasprintf(GFP_KERNEL, fmt, vargs); > - if (!kobj->name) > + if (!kobj->name) { > + kfree(old_name); > return -ENOMEM; > + }
We've been through this before (search lkml archives). If kvasprintf fails, then we don't want to free old_name, as the caller might want to do something with it.
Or something along those lines, I can't remember the exact reasoning this early in the morning.
Kay, do you remember?
thanks,
greg k-h
| |