mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-16 01:54:00 +00:00
Revert "kobject: Remove redundant checks for whether ktype is NULL"
This reverts commit 1b28cb81dab7c1eedc6034206f4e8d644046ad31. 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: 1b28cb81dab7 ("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…
x
Reference in New Issue
Block a user