The patch titled driver core: clean up up symlinks has been removed from the -mm tree. Its filename was driver-core-clean-up-up-symlinks.patch This patch was dropped because it was merged into mainline or a subsystem tree ------------------------------------------------------ Subject: driver core: clean up up symlinks From: James Simmons <jsimmons@xxxxxxxxxxxxx> When a device fails to register the class symlinks where not cleaned up. This left a symlink in the /sys/class/"device"/ directory that pointed to no where. This caused the sysfs_follow_link Oops I reported earlier. This patch cleanups up the symlink. Please apply. Thank you. Signed-off-by: James Simmons <jsimmons@xxxxxxxxxxxxx> Cc: Greg KH <greg@xxxxxxxxx> Cc: Cornelia Huck <cornelia.huck@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/base/core.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff -puN drivers/base/core.c~driver-core-clean-up-up-symlinks drivers/base/core.c --- a/drivers/base/core.c~driver-core-clean-up-up-symlinks +++ a/drivers/base/core.c @@ -634,12 +634,41 @@ int device_add(struct device *dev) BUS_NOTIFY_DEL_DEVICE, dev); device_remove_groups(dev); GroupError: - device_remove_attrs(dev); + device_remove_attrs(dev); AttrsError: if (dev->devt_attr) { device_remove_file(dev, dev->devt_attr); kfree(dev->devt_attr); } + + if (dev->class) { + sysfs_remove_link(&dev->kobj, "subsystem"); + /* If this is not a "fake" compatible device, remove the + * symlink from the class to the device. */ + if (dev->kobj.parent != &dev->class->subsys.kset.kobj) + sysfs_remove_link(&dev->class->subsys.kset.kobj, + dev->bus_id); +#ifdef CONFIG_SYSFS_DEPRECATED + if (parent) { + char *class_name = make_class_name(dev->class->name, + &dev->kobj); + if (class_name) + sysfs_remove_link(&dev->parent->kobj, + class_name); + kfree(class_name); + sysfs_remove_link(&dev->kobj, "device"); + } +#endif + + down(&dev->class->sem); + /* notify any interfaces that the device is now gone */ + list_for_each_entry(class_intf, &dev->class->interfaces, node) + if (class_intf->remove_dev) + class_intf->remove_dev(dev, class_intf); + /* remove the device from the class list */ + list_del_init(&dev->node); + up(&dev->class->sem); + } ueventattrError: device_remove_file(dev, &dev->uevent_attr); attrError: _ Patches currently in -mm which might be from jsimmons@xxxxxxxxxxxxx are ps3fb-thread-updates.patch ps3av-thread-updates.patch ps3fb-kill-superfluous-zero-initializations.patch ps3av-misc-updates.patch aty128fb-fix-blanking.patch change-rivafb_remove-to-__devexit.patch atyfb-replace-busy-loop-with-mdelay.patch fbdev-display-class.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html