kobject: remove struct kobj_type from struct kset

We don't need a "default" ktype for a kset.  We should set this
explicitly every time for each kset.  This change is needed so that we
can make ksets dynamic, and cleans up one of the odd, undocumented
assumption that the kset/kobject/ktype model has.

This patch is based on a lot of help from Kay Sievers.

Nasty bug in the block code was found by Dave Young
<[email protected]>

Cc: Kay Sievers <[email protected]>
Cc: Dave Young <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
This commit is contained in:
Greg Kroah-Hartman 2007-10-16 10:11:44 -06:00
commit 3514faca19
36 changed files with 84 additions and 87 deletions

View file

@ -631,7 +631,7 @@ static struct kobj_type edd_ktype = {
.default_attrs = def_attrs,
};
static decl_subsys(edd, &edd_ktype, NULL);
static decl_subsys(edd, NULL);
/**
@ -723,7 +723,8 @@ edd_device_register(struct edd_device *edev, int i)
edd_dev_set_info(edev, i);
kobject_set_name(&edev->kobj, "int13_dev%02x",
0x80 + i);
kobj_set_kset_s(edev,edd_subsys);
edev->kobj.kset = &edd_subsys;
edev->kobj.ktype = &edd_ktype;
error = kobject_register(&edev->kobj);
if (!error)
edd_populate_dir(edev);

View file

@ -583,8 +583,8 @@ static struct subsys_attribute *efi_subsys_attrs[] = {
NULL, /* maybe more in the future? */
};
static decl_subsys(vars, &efivar_ktype, NULL);
static decl_subsys(efi, NULL, NULL);
static decl_subsys(vars, NULL);
static decl_subsys(efi, NULL);
/*
* efivar_create_sysfs_entry()
@ -629,7 +629,8 @@ efivar_create_sysfs_entry(unsigned long variable_name_size,
efi_guid_unparse(vendor_guid, short_name + strlen(short_name));
kobject_set_name(&new_efivar->kobj, "%s", short_name);
kobj_set_kset_s(new_efivar, vars_subsys);
new_efivar->kobj.kset = &vars_subsys;
new_efivar->kobj.ktype = &efivar_ktype;
i = kobject_register(&new_efivar->kobj);
if (i) {
kfree(short_name);
@ -687,7 +688,7 @@ efivars_init(void)
goto out_free;
}
kobj_set_kset_s(&vars_subsys, efi_subsys);
vars_subsys.kobj.kset = &efi_subsys;
error = subsystem_register(&vars_subsys);