mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
Revert "kobject: Remove redundant checks for whether ktype is NULL"
This reverts commit1b28cb81da
. It is reported to cause problems, so revert it for now until the root cause can be found. Reported-by: kernel test robot <oliver.sang@intel.com> Fixes:1b28cb81da
("kobject: Remove redundant checks for whether ktype is NULL") Cc: Zhen Lei <thunder.leizhen@huawei.com> Closes: https://lore.kernel.org/oe-lkp/202402071403.e302e33a-oliver.sang@intel.com Link: https://lore.kernel.org/r/2024020849-consensus-length-6264@gregkh Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
6e7ad1aebb
commit
3ca8fbabcc
@ -74,10 +74,12 @@ static int create_dir(struct kobject *kobj)
|
|||||||
if (error)
|
if (error)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
error = sysfs_create_groups(kobj, ktype->default_groups);
|
if (ktype) {
|
||||||
if (error) {
|
error = sysfs_create_groups(kobj, ktype->default_groups);
|
||||||
sysfs_remove_dir(kobj);
|
if (error) {
|
||||||
return error;
|
sysfs_remove_dir(kobj);
|
||||||
|
return error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -589,7 +591,8 @@ static void __kobject_del(struct kobject *kobj)
|
|||||||
sd = kobj->sd;
|
sd = kobj->sd;
|
||||||
ktype = get_ktype(kobj);
|
ktype = get_ktype(kobj);
|
||||||
|
|
||||||
sysfs_remove_groups(kobj, ktype->default_groups);
|
if (ktype)
|
||||||
|
sysfs_remove_groups(kobj, ktype->default_groups);
|
||||||
|
|
||||||
/* send "remove" if the caller did not do it but sent "add" */
|
/* send "remove" if the caller did not do it but sent "add" */
|
||||||
if (kobj->state_add_uevent_sent && !kobj->state_remove_uevent_sent) {
|
if (kobj->state_add_uevent_sent && !kobj->state_remove_uevent_sent) {
|
||||||
@ -666,6 +669,10 @@ static void kobject_cleanup(struct kobject *kobj)
|
|||||||
pr_debug("'%s' (%p): %s, parent %p\n",
|
pr_debug("'%s' (%p): %s, parent %p\n",
|
||||||
kobject_name(kobj), kobj, __func__, kobj->parent);
|
kobject_name(kobj), kobj, __func__, kobj->parent);
|
||||||
|
|
||||||
|
if (t && !t->release)
|
||||||
|
pr_debug("'%s' (%p): does not have a release() function, it is broken and must be fixed. See Documentation/core-api/kobject.rst.\n",
|
||||||
|
kobject_name(kobj), kobj);
|
||||||
|
|
||||||
/* remove from sysfs if the caller did not do it */
|
/* remove from sysfs if the caller did not do it */
|
||||||
if (kobj->state_in_sysfs) {
|
if (kobj->state_in_sysfs) {
|
||||||
pr_debug("'%s' (%p): auto cleanup kobject_del\n",
|
pr_debug("'%s' (%p): auto cleanup kobject_del\n",
|
||||||
@ -676,13 +683,10 @@ static void kobject_cleanup(struct kobject *kobj)
|
|||||||
parent = NULL;
|
parent = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (t->release) {
|
if (t && t->release) {
|
||||||
pr_debug("'%s' (%p): calling ktype release\n",
|
pr_debug("'%s' (%p): calling ktype release\n",
|
||||||
kobject_name(kobj), kobj);
|
kobject_name(kobj), kobj);
|
||||||
t->release(kobj);
|
t->release(kobj);
|
||||||
} else {
|
|
||||||
pr_debug("'%s' (%p): does not have a release() function, it is broken and must be fixed. See Documentation/core-api/kobject.rst.\n",
|
|
||||||
kobject_name(kobj), kobj);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* free name if we allocated it */
|
/* free name if we allocated it */
|
||||||
@ -1056,7 +1060,7 @@ const struct kobj_ns_type_operations *kobj_child_ns_ops(const struct kobject *pa
|
|||||||
{
|
{
|
||||||
const struct kobj_ns_type_operations *ops = NULL;
|
const struct kobj_ns_type_operations *ops = NULL;
|
||||||
|
|
||||||
if (parent && parent->ktype->child_ns_type)
|
if (parent && parent->ktype && parent->ktype->child_ns_type)
|
||||||
ops = parent->ktype->child_ns_type(parent);
|
ops = parent->ktype->child_ns_type(parent);
|
||||||
|
|
||||||
return ops;
|
return ops;
|
||||||
|
Loading…
Reference in New Issue
Block a user