lkml.org 
[lkml]   [2008]   [May]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: kobject: Fix kobject_rename and !CONFIG_SYSFS
Eric W. Biederman wrote:
> Greg KH <greg@kroah.com> writes:
>
>> Eric, Randy Dunlap has found that this patch breaks the build when
>> CONFIG_SYSFS is not enabled. Can you please fix it up before I send it
>> to Linus?
>>
>> The exact error is:
>> In file included from /local/linsrc/next-20080509/include/linux/kobject.h:21,
>> from /local/linsrc/next-20080509/include/linux/module.h:16,
>> from /local/linsrc/next-20080509/include/linux/crypto.h:21,
>> from
>> /local/linsrc/next-20080509/arch/x86/kernel/asm-offsets_64.c:7,
>> from
>> /local/linsrc/next-20080509/arch/x86/kernel/asm-offsets.c:4:
>> /local/linsrc/next-20080509/include/linux/sysfs.h: In function
>> 'sysfs_rename_dir':
>> /local/linsrc/next-20080509/include/linux/sysfs.h:142: error: implicit
>> declaration of function 'kobject_set_name'
>
> I will take a look in the morning and see if I can see what is wrong.
>
> Which tree was this error against? I thought I tested this case,
> and I'm wondering if there might be another patch that is hiding
> kobject_set_name.

Argh, headers "cross-dependencies":

* linux/kobject.h includes linux/sysfs.h before defining
kobject_set_name()

* linux/sysfs.h needs to include linux/kobject.h to find
kobject_set_name() definition (for inlined sysfs_rename_dir() when
CONFIG_SYSFS=n)


sysfs_rename_dir() is only called by kobject.c, kobject_rename().
I guess this kind of patch is not acceptable to fix the depency?


Index: linux-2.6/lib/kobject.c
===================================================================
--- linux-2.6.orig/lib/kobject.c 2008-05-13 15:14:38.000000000 +0200
+++ linux-2.6/lib/kobject.c 2008-05-13 15:58:37.000000000 +0200
@@ -416,8 +416,11 @@ int kobject_rename(struct kobject *kobj,
envp[0] = devpath_string;
envp[1] = NULL;

+#ifdef CONFIG_SYSFS
error = sysfs_rename_dir(kobj, new_name);
-
+#else
+ error = kobject_set_name(kobj, "%s", new_name);
+#endif
/* This function is mostly/only used for network interface.
* Some hotplug package track interfaces by their name and
* therefore want to know when the name is changed by the user. */

-Benjamin

>
> Eric
>
>


--
B e n j a m i n T h e r y - BULL/DT/Open Software R&D

http://www.bull.com


\
 
 \ /
  Last update: 2008-05-13 16:29    [W:0.092 / U:16.416 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site