Driver core and kobject fixes for 3.4-rc2
Here are some minor fixes for the driver core and kobjects that people have reported recently. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (GNU/Linux) iEYEABECAAYFAk+HTLAACgkQMUfUDdst+ylwlACcCcVRLdGIyW7Qjd1VB8hAVCSy 27EAniaKfzOiPAkrb9718D6gfdBTVU0B =c1Bm -----END PGP SIGNATURE----- Merge tag 'driver-core-3.4-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core Pull driver core and kobject fixes from Greg KH: "Here are some minor fixes for the driver core and kobjects that people have reported recently. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>" * tag 'driver-core-3.4-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: kobject: provide more diagnostic info for kobject_add_internal() failures sysfs: handle 'parent deleted before child added' sysfs: Prevent crash on unset sysfs group attributes sysfs: Update the name hash for an entry after changing the namespace drivers/base: fix compiler warning in SoC export driver - idr should be ida drivers/base: Remove unneeded spin_lock_init call for soc_lock
This commit is contained in:
Коммит
f5ad501006
|
@ -15,7 +15,7 @@
|
|||
#include <linux/sys_soc.h>
|
||||
#include <linux/err.h>
|
||||
|
||||
static DEFINE_IDR(soc_ida);
|
||||
static DEFINE_IDA(soc_ida);
|
||||
static DEFINE_SPINLOCK(soc_lock);
|
||||
|
||||
static ssize_t soc_info_get(struct device *dev,
|
||||
|
@ -168,8 +168,6 @@ void soc_device_unregister(struct soc_device *soc_dev)
|
|||
|
||||
static int __init soc_bus_register(void)
|
||||
{
|
||||
spin_lock_init(&soc_lock);
|
||||
|
||||
return bus_register(&soc_bus_type);
|
||||
}
|
||||
core_initcall(soc_bus_register);
|
||||
|
|
|
@ -729,6 +729,9 @@ int sysfs_create_dir(struct kobject * kobj)
|
|||
else
|
||||
parent_sd = &sysfs_root;
|
||||
|
||||
if (!parent_sd)
|
||||
return -ENOENT;
|
||||
|
||||
if (sysfs_ns_type(parent_sd))
|
||||
ns = kobj->ktype->namespace(kobj);
|
||||
type = sysfs_read_ns_type(kobj);
|
||||
|
@ -878,7 +881,6 @@ int sysfs_rename(struct sysfs_dirent *sd,
|
|||
|
||||
dup_name = sd->s_name;
|
||||
sd->s_name = new_name;
|
||||
sd->s_hash = sysfs_name_hash(sd->s_ns, sd->s_name);
|
||||
}
|
||||
|
||||
/* Move to the appropriate place in the appropriate directories rbtree. */
|
||||
|
@ -886,6 +888,7 @@ int sysfs_rename(struct sysfs_dirent *sd,
|
|||
sysfs_get(new_parent_sd);
|
||||
sysfs_put(sd->s_parent);
|
||||
sd->s_ns = new_ns;
|
||||
sd->s_hash = sysfs_name_hash(sd->s_ns, sd->s_name);
|
||||
sd->s_parent = new_parent_sd;
|
||||
sysfs_link_sibling(sd);
|
||||
|
||||
|
|
|
@ -67,7 +67,11 @@ static int internal_create_group(struct kobject *kobj, int update,
|
|||
/* Updates may happen before the object has been instantiated */
|
||||
if (unlikely(update && !kobj->sd))
|
||||
return -EINVAL;
|
||||
|
||||
if (!grp->attrs) {
|
||||
WARN(1, "sysfs: attrs not set by subsystem for group: %s/%s\n",
|
||||
kobj->name, grp->name ? "" : grp->name);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (grp->name) {
|
||||
error = sysfs_create_subdir(kobj, grp->name, &sd);
|
||||
if (error)
|
||||
|
|
|
@ -192,14 +192,14 @@ static int kobject_add_internal(struct kobject *kobj)
|
|||
|
||||
/* be noisy on error issues */
|
||||
if (error == -EEXIST)
|
||||
printk(KERN_ERR "%s failed for %s with "
|
||||
"-EEXIST, don't try to register things with "
|
||||
"the same name in the same directory.\n",
|
||||
__func__, kobject_name(kobj));
|
||||
WARN(1, "%s failed for %s with "
|
||||
"-EEXIST, don't try to register things with "
|
||||
"the same name in the same directory.\n",
|
||||
__func__, kobject_name(kobj));
|
||||
else
|
||||
printk(KERN_ERR "%s failed for %s (%d)\n",
|
||||
__func__, kobject_name(kobj), error);
|
||||
dump_stack();
|
||||
WARN(1, "%s failed for %s (error: %d parent: %s)\n",
|
||||
__func__, kobject_name(kobj), error,
|
||||
parent ? kobject_name(parent) : "'none'");
|
||||
} else
|
||||
kobj->state_in_sysfs = 1;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче