Messages in this thread | | | From | Kari Hurtta <> | Subject | Re: [PATCH 02/79] kobject: replace '/' with '!' in name | Date | 22 Jul 2008 10:12:11 +0300 |
| |
Greg Kroah-Hartman <gregkh@suse.de> writes in gmane.linux.kernel:
> From: Kay Sievers <kay.sievers@vrfy.org> > > Some (block) devices have a '/' in the name, and need special > handling. Let's have that rule to the core, so we can remove it > from the block class. > > Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> > Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> > --- > lib/kobject.c | 10 ++++++++-- > 1 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/lib/kobject.c b/lib/kobject.c > index dcade05..7444015 100644 > --- a/lib/kobject.c > +++ b/lib/kobject.c > @@ -216,13 +216,19 @@ static int kobject_add_internal(struct kobject *kobj) > static int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, > va_list vargs) > { > - /* Free the old name, if necessary. */ > - kfree(kobj->name); > + const char *old_name = kobj->name; > + char *s; > > kobj->name = kvasprintf(GFP_KERNEL, fmt, vargs); > if (!kobj->name) > return -ENOMEM;
Is this leaking old_name if kvasprintf returns NULL ?
kobj->name is that point to set NULL and old value of kobj->name (old_name) is not free'ed
> + /* ewww... some of these buggers have '/' in the name ... */ > + s = strchr(kobj->name, '/'); > + if (s) > + s[0] = '!'; > + > + kfree(old_name); > return 0; > } > > -- > 1.5.6.3
/ Kari Hurtta
| |