lkml.org 
[lkml]   [2009]   [Apr]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] driver: dont update dev_name if it is not changed

    * Yinghai Lu <yinghai@kernel.org> wrote:

    > Ingo Molnar wrote:
    > > * Yinghai Lu <yinghai@kernel.org> wrote:
    > >
    > >> notice one system /proc/iomem some entries missed the name for pci_devices
    > >>
    > >> it turns that dev->dev.kobj name is changed after device_add.
    > >>
    > >> [Impact: fix corrupted names in /proc/iomem ]
    > >>
    > >> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    > >>
    > >> ---
    > >> lib/kobject.c | 13 +++++++++++--
    > >> 1 file changed, 11 insertions(+), 2 deletions(-)
    > >>
    > >> Index: linux-2.6/lib/kobject.c
    > >> ===================================================================
    > >> --- linux-2.6.orig/lib/kobject.c
    > >> +++ linux-2.6/lib/kobject.c
    > >> @@ -216,12 +216,21 @@ int kobject_set_name_vargs(struct kobjec
    > >> va_list vargs)
    > >> {
    > >> const char *old_name = kobj->name;
    > >> + char *new_name;
    > >> char *s;
    > >>
    > >> - kobj->name = kvasprintf(GFP_KERNEL, fmt, vargs);
    > >> - if (!kobj->name)
    > >> + new_name = kvasprintf(GFP_KERNEL, fmt, vargs);
    > >> + if (!new_name)
    > >> return -ENOMEM;
    > >>
    > >> + /* different ? */
    > >> + if (!strcmp(new_name, old_name)) {
    > >> + kfree(new_name);
    > >> + return 0;
    > >> + }
    > >> +
    > >> + kobj->name = new_name;
    > >> +
    > >> /* ewww... some of these buggers have '/' in the name ... */
    > >> while ((s = strchr(kobj->name, '/')))
    > >> s[0] = '!';
    > >
    > > So we used the old name in the resource code, and the kfree() here
    > > corrupted the /proc/iomem output?
    > >
    > if it is not changed, we still use old_name. and new_name get freed

    I know - you are talking about your patch.

    But i'm talking about the current, unpatched upstream code. It got a
    string displayed in /proc/iomem that got kfree()d? [and this is why
    the entries vanished?]

    That is badness somewhere _else_ (not in the kobject core i think),
    and your patch does not solve the real badness, it works around its
    symptoms AFAICS - like the first patch.

    Ingo


    \
     
     \ /
      Last update: 2009-04-18 22:31    [W:0.031 / U:0.360 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site