Messages in this thread Patch in this message | | | Date | Fri, 20 Jul 2007 01:00:59 -0700 | From | Greg KH <> | Subject | Re: kobject link failure |
| |
On Thu, Jul 19, 2007 at 08:11:26PM +0200, Gabriel C wrote: > Jan Engelhardt wrote: > > Hi, > > > > > > top is 275afcac9953ece0828972edeab9684cfe1a5ef3, error is: > > LD .tmp_vmlinux1 > > drivers/built-in.o: In function `store_uevent': > > core.c:(.text+0x20ebb): undefined reference to `kobject_actions' > > core.c:(.text+0x20edd): undefined reference to `kobject_actions' > > make[1]: *** [.tmp_vmlinux1] Error 1 > > make: *** [_all] Error 2 > > > > .config attached. Is it because of CONFIG_HOTPLUG=n? > >
Can any of you try the following patch and let me know if it fixes the issue or not?
Kay, it's an ugly fix, any better thoughts?
thanks,
greg k-h
From: Greg Kroah-Hartman <gregkh@suse.de> Subject: fix build error when CONFIG_HOTPLUG is disabled for kobject_actions
--- drivers/base/core.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-)
--- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -250,6 +250,7 @@ static struct kset_uevent_ops device_uev .uevent = dev_uevent, }; +#ifdef CONFIG_HOTPLUG static ssize_t show_uevent(struct device *dev, struct device_attribute *attr, char *buf) { @@ -330,6 +331,23 @@ out: static struct device_attribute uevent_attr = __ATTR(uevent, S_IRUGO | S_IWUSR, show_uevent, store_uevent); +static int device_add_uevent_attr(struct device *dev) +{ + return device_create_file(dev, &uevent_attr); +} + +static void device_remove_uevent_attr(struct device *dev) +{ + device_remove_file(dev, &uevent_attr); +} + +#else /* CONFIG_HOTPLUG */ + +static inline int device_add_uevent_attr(struct device *dev) { return 0; } +static inline void device_remove_uevent_attr(struct device *dev) { } + +#endif /* CONFIG_HOTPLUG */ + static int device_add_attributes(struct device *dev, struct device_attribute *attrs) { @@ -787,7 +805,7 @@ int device_add(struct device *dev) blocking_notifier_call_chain(&dev->bus->bus_notifier, BUS_NOTIFY_ADD_DEVICE, dev); - error = device_create_file(dev, &uevent_attr); + error = device_add_uevent_attr(dev); if (error) goto attrError; @@ -861,7 +879,7 @@ int device_add(struct device *dev) } } ueventattrError: - device_remove_file(dev, &uevent_attr); + device_remove_uevent_attr(dev); attrError: kobject_uevent(&dev->kobj, KOBJ_REMOVE); kobject_del(&dev->kobj); @@ -994,7 +1012,7 @@ void device_del(struct device * dev) up(&dev->class->sem); } } - device_remove_file(dev, &uevent_attr); + device_remove_uevent_attr(dev); device_remove_attrs(dev); bus_remove_device(dev); - 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/
| |