Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758035AbZDRUXH (ORCPT ); Sat, 18 Apr 2009 16:23:07 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754062AbZDRUWy (ORCPT ); Sat, 18 Apr 2009 16:22:54 -0400 Received: from hera.kernel.org ([140.211.167.34]:58168 "EHLO hera.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753493AbZDRUWx (ORCPT ); Sat, 18 Apr 2009 16:22:53 -0400 Message-ID: <49EA3617.9020602@kernel.org> Date: Sat, 18 Apr 2009 13:20:39 -0700 From: Yinghai Lu User-Agent: Thunderbird 2.0.0.19 (X11/20081227) MIME-Version: 1.0 To: Ingo Molnar CC: Greg KH , Linus Torvalds , Andrew Morton , Jesse Barnes , "H. Peter Anvin" , Thomas Gleixner , "linux-kernel@vger.kernel.org" , linux-pci@vger.kernel.org Subject: Re: [PATCH] driver: dont update dev_name if it is not changed References: <20090416235452.GE21405@elte.hu> <20090417131633.GA30578@elte.hu> <49E8FD0B.2050308@zytor.com> <49E96731.1000501@kernel.org> <49EA27B9.3030004@kernel.org> <20090418192314.GA22107@suse.de> <49EA3176.4010901@kernel.org> <20090418201114.GA27903@elte.hu> In-Reply-To: <20090418201114.GA27903@elte.hu> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1649 Lines: 56 Ingo Molnar wrote: > * Yinghai Lu 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 >> >> --- >> 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 YH -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/