Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: Documentation: ABI: /sys/devices/system/cpu/cpu#/node Documentation: ABI: /sys/devices/system/cpu/cpuidle/ Documentation: ABI: /sys/devices/system/cpu/sched_[mc|smt]_power_savings Documentation: ABI: /sys/devices/system/cpu/cpu#/ topology files Documentation: ABI: /sys/devices/system/cpu/ topology files Documentation: ABI: document /sys/devices/system/cpu/ Documentation: ABI: rename sysfs-devices-cache_disable properly Driver core: allow certain drivers prohibit bind/unbind via sysfs Driver core: fix driver_register() return value
This commit is contained in:
@@ -689,15 +689,19 @@ int bus_add_driver(struct device_driver *drv)
|
||||
printk(KERN_ERR "%s: driver_add_attrs(%s) failed\n",
|
||||
__func__, drv->name);
|
||||
}
|
||||
error = add_bind_files(drv);
|
||||
if (error) {
|
||||
/* Ditto */
|
||||
printk(KERN_ERR "%s: add_bind_files(%s) failed\n",
|
||||
__func__, drv->name);
|
||||
|
||||
if (!drv->suppress_bind_attrs) {
|
||||
error = add_bind_files(drv);
|
||||
if (error) {
|
||||
/* Ditto */
|
||||
printk(KERN_ERR "%s: add_bind_files(%s) failed\n",
|
||||
__func__, drv->name);
|
||||
}
|
||||
}
|
||||
|
||||
kobject_uevent(&priv->kobj, KOBJ_ADD);
|
||||
return 0;
|
||||
|
||||
out_unregister:
|
||||
kfree(drv->p);
|
||||
drv->p = NULL;
|
||||
@@ -720,7 +724,8 @@ void bus_remove_driver(struct device_driver *drv)
|
||||
if (!drv->bus)
|
||||
return;
|
||||
|
||||
remove_bind_files(drv);
|
||||
if (!drv->suppress_bind_attrs)
|
||||
remove_bind_files(drv);
|
||||
driver_remove_attrs(drv->bus, drv);
|
||||
driver_remove_file(drv, &driver_attr_uevent);
|
||||
klist_remove(&drv->p->knode_bus);
|
||||
|
@@ -236,7 +236,7 @@ int driver_register(struct device_driver *drv)
|
||||
put_driver(other);
|
||||
printk(KERN_ERR "Error: Driver '%s' is already registered, "
|
||||
"aborting...\n", drv->name);
|
||||
return -EEXIST;
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
ret = bus_add_driver(drv);
|
||||
|
@@ -521,11 +521,15 @@ int __init_or_module platform_driver_probe(struct platform_driver *drv,
|
||||
{
|
||||
int retval, code;
|
||||
|
||||
/* make sure driver won't have bind/unbind attributes */
|
||||
drv->driver.suppress_bind_attrs = true;
|
||||
|
||||
/* temporary section violation during probe() */
|
||||
drv->probe = probe;
|
||||
retval = code = platform_driver_register(drv);
|
||||
|
||||
/* Fixup that section violation, being paranoid about code scanning
|
||||
/*
|
||||
* Fixup that section violation, being paranoid about code scanning
|
||||
* the list of drivers in order to probe new devices. Check to see
|
||||
* if the probe was successful, and make sure any forced probes of
|
||||
* new devices fail.
|
||||
|
Reference in New Issue
Block a user