Re: kobject: Fix kobject_rename and !CONFIG_SYSFS

From: Benjamin Thery
Date: Tue May 13 2008 - 10:24:53 EST


Eric W. Biederman wrote:
Greg KH <greg@xxxxxxxxx> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/