Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6: kobject: new_device->kref wasn't putted after error in kobject_move() driver core: export device_rename Remove devfs from MAINTAINERS Driver core: add device symlink back to sysfs Revert "driver core: refcounting fix"
This commit is contained in:
commit
271368b69b
|
@ -1103,9 +1103,6 @@ W: http://lanana.org/docs/device-list/index.html
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
DEVICE FILESYSTEM
|
|
||||||
S: Obsolete
|
|
||||||
|
|
||||||
DIGI INTL. EPCA DRIVER
|
DIGI INTL. EPCA DRIVER
|
||||||
P: Digi International, Inc
|
P: Digi International, Inc
|
||||||
M: Eng.Linux@digi.com
|
M: Eng.Linux@digi.com
|
||||||
|
|
|
@ -584,17 +584,17 @@ int device_add(struct device *dev)
|
||||||
if (dev->kobj.parent != &dev->class->subsys.kset.kobj)
|
if (dev->kobj.parent != &dev->class->subsys.kset.kobj)
|
||||||
sysfs_create_link(&dev->class->subsys.kset.kobj,
|
sysfs_create_link(&dev->class->subsys.kset.kobj,
|
||||||
&dev->kobj, dev->bus_id);
|
&dev->kobj, dev->bus_id);
|
||||||
#ifdef CONFIG_SYSFS_DEPRECATED
|
|
||||||
if (parent) {
|
if (parent) {
|
||||||
sysfs_create_link(&dev->kobj, &dev->parent->kobj,
|
sysfs_create_link(&dev->kobj, &dev->parent->kobj,
|
||||||
"device");
|
"device");
|
||||||
|
#ifdef CONFIG_SYSFS_DEPRECATED
|
||||||
class_name = make_class_name(dev->class->name,
|
class_name = make_class_name(dev->class->name,
|
||||||
&dev->kobj);
|
&dev->kobj);
|
||||||
if (class_name)
|
if (class_name)
|
||||||
sysfs_create_link(&dev->parent->kobj,
|
sysfs_create_link(&dev->parent->kobj,
|
||||||
&dev->kobj, class_name);
|
&dev->kobj, class_name);
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((error = device_add_attrs(dev)))
|
if ((error = device_add_attrs(dev)))
|
||||||
|
@ -651,17 +651,17 @@ int device_add(struct device *dev)
|
||||||
if (dev->kobj.parent != &dev->class->subsys.kset.kobj)
|
if (dev->kobj.parent != &dev->class->subsys.kset.kobj)
|
||||||
sysfs_remove_link(&dev->class->subsys.kset.kobj,
|
sysfs_remove_link(&dev->class->subsys.kset.kobj,
|
||||||
dev->bus_id);
|
dev->bus_id);
|
||||||
#ifdef CONFIG_SYSFS_DEPRECATED
|
|
||||||
if (parent) {
|
if (parent) {
|
||||||
|
#ifdef CONFIG_SYSFS_DEPRECATED
|
||||||
char *class_name = make_class_name(dev->class->name,
|
char *class_name = make_class_name(dev->class->name,
|
||||||
&dev->kobj);
|
&dev->kobj);
|
||||||
if (class_name)
|
if (class_name)
|
||||||
sysfs_remove_link(&dev->parent->kobj,
|
sysfs_remove_link(&dev->parent->kobj,
|
||||||
class_name);
|
class_name);
|
||||||
kfree(class_name);
|
kfree(class_name);
|
||||||
|
#endif
|
||||||
sysfs_remove_link(&dev->kobj, "device");
|
sysfs_remove_link(&dev->kobj, "device");
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
down(&dev->class->sem);
|
down(&dev->class->sem);
|
||||||
/* notify any interfaces that the device is now gone */
|
/* notify any interfaces that the device is now gone */
|
||||||
|
@ -761,17 +761,17 @@ void device_del(struct device * dev)
|
||||||
if (dev->kobj.parent != &dev->class->subsys.kset.kobj)
|
if (dev->kobj.parent != &dev->class->subsys.kset.kobj)
|
||||||
sysfs_remove_link(&dev->class->subsys.kset.kobj,
|
sysfs_remove_link(&dev->class->subsys.kset.kobj,
|
||||||
dev->bus_id);
|
dev->bus_id);
|
||||||
#ifdef CONFIG_SYSFS_DEPRECATED
|
|
||||||
if (parent) {
|
if (parent) {
|
||||||
|
#ifdef CONFIG_SYSFS_DEPRECATED
|
||||||
char *class_name = make_class_name(dev->class->name,
|
char *class_name = make_class_name(dev->class->name,
|
||||||
&dev->kobj);
|
&dev->kobj);
|
||||||
if (class_name)
|
if (class_name)
|
||||||
sysfs_remove_link(&dev->parent->kobj,
|
sysfs_remove_link(&dev->parent->kobj,
|
||||||
class_name);
|
class_name);
|
||||||
kfree(class_name);
|
kfree(class_name);
|
||||||
|
#endif
|
||||||
sysfs_remove_link(&dev->kobj, "device");
|
sysfs_remove_link(&dev->kobj, "device");
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
down(&dev->class->sem);
|
down(&dev->class->sem);
|
||||||
/* notify any interfaces that the device is now gone */
|
/* notify any interfaces that the device is now gone */
|
||||||
|
@ -1065,14 +1065,14 @@ int device_rename(struct device *dev, char *new_name)
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(device_rename);
|
||||||
|
|
||||||
static int device_move_class_links(struct device *dev,
|
static int device_move_class_links(struct device *dev,
|
||||||
struct device *old_parent,
|
struct device *old_parent,
|
||||||
struct device *new_parent)
|
struct device *new_parent)
|
||||||
{
|
{
|
||||||
|
int error = 0;
|
||||||
#ifdef CONFIG_SYSFS_DEPRECATED
|
#ifdef CONFIG_SYSFS_DEPRECATED
|
||||||
int error;
|
|
||||||
char *class_name;
|
char *class_name;
|
||||||
|
|
||||||
class_name = make_class_name(dev->class->name, &dev->kobj);
|
class_name = make_class_name(dev->class->name, &dev->kobj);
|
||||||
|
@ -1100,7 +1100,12 @@ out:
|
||||||
kfree(class_name);
|
kfree(class_name);
|
||||||
return error;
|
return error;
|
||||||
#else
|
#else
|
||||||
return 0;
|
if (old_parent)
|
||||||
|
sysfs_remove_link(&dev->kobj, "device");
|
||||||
|
if (new_parent)
|
||||||
|
error = sysfs_create_link(&dev->kobj, &new_parent->kobj,
|
||||||
|
"device");
|
||||||
|
return error;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2419,12 +2419,6 @@ void module_remove_driver(struct device_driver *drv)
|
||||||
kfree(driver_name);
|
kfree(driver_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
* Undo the additional reference we added in module_add_driver()
|
|
||||||
* via kset_find_obj()
|
|
||||||
*/
|
|
||||||
if (drv->mod_name)
|
|
||||||
kobject_put(&drv->kobj);
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(module_remove_driver);
|
EXPORT_SYMBOL(module_remove_driver);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -385,9 +385,11 @@ int kobject_move(struct kobject *kobj, struct kobject *new_parent)
|
||||||
goto out;
|
goto out;
|
||||||
old_parent = kobj->parent;
|
old_parent = kobj->parent;
|
||||||
kobj->parent = new_parent;
|
kobj->parent = new_parent;
|
||||||
|
new_parent = NULL;
|
||||||
kobject_put(old_parent);
|
kobject_put(old_parent);
|
||||||
kobject_uevent_env(kobj, KOBJ_MOVE, envp);
|
kobject_uevent_env(kobj, KOBJ_MOVE, envp);
|
||||||
out:
|
out:
|
||||||
|
kobject_put(new_parent);
|
||||||
kobject_put(kobj);
|
kobject_put(kobj);
|
||||||
kfree(devpath_string);
|
kfree(devpath_string);
|
||||||
kfree(devpath);
|
kfree(devpath);
|
||||||
|
|
Loading…
Reference in New Issue