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)
|
||||
return error;
|
||||
|
||||
error = sysfs_create_groups(kobj, ktype->default_groups);
|
||||
if (error) {
|
||||
sysfs_remove_dir(kobj);
|
||||
return error;
|
||||
if (ktype) {
|
||||
error = sysfs_create_groups(kobj, ktype->default_groups);
|
||||
if (error) {
|
||||
sysfs_remove_dir(kobj);
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -589,7 +591,8 @@ static void __kobject_del(struct kobject *kobj)
|
||||
sd = kobj->sd;
|
||||
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" */
|
||||
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",
|
||||
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 */
|
||||
if (kobj->state_in_sysfs) {
|
||||
pr_debug("'%s' (%p): auto cleanup kobject_del\n",
|
||||
@ -676,13 +683,10 @@ static void kobject_cleanup(struct kobject *kobj)
|
||||
parent = NULL;
|
||||
}
|
||||
|
||||
if (t->release) {
|
||||
if (t && t->release) {
|
||||
pr_debug("'%s' (%p): calling ktype release\n",
|
||||
kobject_name(kobj), 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 */
|
||||
@ -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;
|
||||
|
||||
if (parent && parent->ktype->child_ns_type)
|
||||
if (parent && parent->ktype && parent->ktype->child_ns_type)
|
||||
ops = parent->ktype->child_ns_type(parent);
|
||||
|
||||
return ops;
|
||||
|
Loading…
Reference in New Issue
Block a user