Signed-off-by: Andrew Morton --- arch/powerpc/platforms/pseries/power.c | 2 +- arch/s390/hypfs/inode.c | 4 ++-- arch/s390/kernel/ipl.c | 8 ++++---- block/genhd.c | 5 +++-- drivers/acpi/bus.c | 2 +- drivers/base/bus.c | 5 +++-- drivers/base/class.c | 8 +++++--- drivers/base/core.c | 5 +++-- drivers/base/firmware.c | 5 +++-- drivers/base/hypervisor.c | 2 +- drivers/base/sys.c | 3 ++- drivers/edac/edac_mc_sysfs.c | 2 +- drivers/firmware/edd.c | 5 +++-- drivers/firmware/efivars.c | 9 +++++---- drivers/parisc/pdc_stable.c | 9 +++++---- drivers/pci/hotplug/pci_hotplug_core.c | 7 ++++--- drivers/pci/hotplug/rpadlpar_sysfs.c | 1 - drivers/uio/uio.c | 2 +- fs/configfs/mount.c | 4 ++-- fs/debugfs/inode.c | 4 ++-- fs/dlm/lockspace.c | 6 ++---- fs/ecryptfs/main.c | 4 ++-- fs/fuse/inode.c | 8 ++++---- fs/gfs2/locking/dlm/sysfs.c | 6 ++---- fs/gfs2/sys.c | 6 ++---- fs/namespace.c | 2 +- fs/ocfs2/cluster/masklog.c | 2 +- fs/ocfs2/cluster/sys.c | 2 +- fs/sysfs/file.c | 4 +--- include/linux/kobject.h | 15 ++++----------- kernel/ksysfs.c | 2 +- kernel/module.c | 2 +- kernel/params.c | 9 +++++---- kernel/power/main.c | 2 +- mm/slub.c | 5 +++-- security/inode.c | 4 ++-- 36 files changed, 84 insertions(+), 87 deletions(-) diff -puN arch/powerpc/platforms/pseries/power.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset arch/powerpc/platforms/pseries/power.c --- a/arch/powerpc/platforms/pseries/power.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/arch/powerpc/platforms/pseries/power.c @@ -57,7 +57,7 @@ static struct subsys_attribute auto_powe }; #ifndef CONFIG_PM -decl_subsys(power,NULL,NULL); +decl_subsys(power, NULL); static struct attribute *g[] = { &auto_poweron_attr.attr, diff -puN arch/s390/hypfs/inode.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset arch/s390/hypfs/inode.c --- a/arch/s390/hypfs/inode.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/arch/s390/hypfs/inode.c @@ -490,7 +490,7 @@ static struct super_operations hypfs_s_o .show_options = hypfs_show_options, }; -static decl_subsys(s390, NULL, NULL); +static decl_subsys(s390, NULL); static int __init hypfs_init(void) { @@ -506,7 +506,7 @@ static int __init hypfs_init(void) goto fail_diag; } } - kobj_set_kset_s(&s390_subsys, hypervisor_subsys); + s390_subsys.kobj.kset = &hypervisor_subsys; rc = subsystem_register(&s390_subsys); if (rc) goto fail_sysfs; diff -puN arch/s390/kernel/ipl.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset arch/s390/kernel/ipl.c --- a/arch/s390/kernel/ipl.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/arch/s390/kernel/ipl.c @@ -418,7 +418,7 @@ static struct attribute_group ipl_unknow .attrs = ipl_unknown_attrs, }; -static decl_subsys(ipl, NULL, NULL); +static decl_subsys(ipl, NULL); /* * reipl section @@ -590,7 +590,7 @@ static ssize_t reipl_type_store(struct k static struct subsys_attribute reipl_type_attr = __ATTR(reipl_type, 0644, reipl_type_show, reipl_type_store); -static decl_subsys(reipl, NULL, NULL); +static decl_subsys(reipl, NULL); /* * dump section @@ -685,13 +685,13 @@ static ssize_t dump_type_store(struct ks static struct subsys_attribute dump_type_attr = __ATTR(dump_type, 0644, dump_type_show, dump_type_store); -static decl_subsys(dump, NULL, NULL); +static decl_subsys(dump, NULL); /* * Shutdown actions section */ -static decl_subsys(shutdown_actions, NULL, NULL); +static decl_subsys(shutdown_actions, NULL); /* on panic */ diff -puN block/genhd.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset block/genhd.c --- a/block/genhd.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/block/genhd.c @@ -584,7 +584,7 @@ static struct kset_uevent_ops block_ueve .uevent = block_uevent, }; -decl_subsys(block, &ktype_block, &block_uevent_ops); +decl_subsys(block, &block_uevent_ops); /* * aggregate disk stat collector. Uses the same stats that the sysfs @@ -720,7 +720,8 @@ struct gendisk *alloc_disk_node(int mino } } disk->minors = minors; - kobj_set_kset_s(disk,block_subsys); + disk->kobj.kset = &block_subsys; + disk->kobj.ktype = &ktype_block; kobject_init(&disk->kobj); rand_initialize_disk(disk); INIT_WORK(&disk->async_notify, diff -puN drivers/acpi/bus.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset drivers/acpi/bus.c --- a/drivers/acpi/bus.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/drivers/acpi/bus.c @@ -743,7 +743,7 @@ static int __init acpi_bus_init(void) return -ENODEV; } -decl_subsys(acpi, NULL, NULL); +decl_subsys(acpi, NULL); static int __init acpi_init(void) { diff -puN drivers/base/bus.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset drivers/base/bus.c --- a/drivers/base/bus.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/drivers/base/bus.c @@ -166,7 +166,7 @@ static struct kset_uevent_ops bus_uevent .filter = bus_uevent_filter, }; -static decl_subsys(bus, &bus_ktype, &bus_uevent_ops); +static decl_subsys(bus, &bus_uevent_ops); #ifdef CONFIG_HOTPLUG @@ -639,6 +639,7 @@ int bus_add_driver(struct device_driver if (error) goto out_put_bus; drv->kobj.kset = &bus->drivers; + drv->kobj.ktype = &driver_ktype; error = kobject_register(&drv->kobj); if (error) goto out_put_bus; @@ -851,6 +852,7 @@ int bus_register(struct bus_type * bus) goto out; bus->subsys.kobj.kset = &bus_subsys; + bus->subsys.kobj.ktype = &bus_ktype; retval = subsystem_register(&bus->subsys); if (retval) @@ -868,7 +870,6 @@ int bus_register(struct bus_type * bus) kobject_set_name(&bus->drivers.kobj, "drivers"); bus->drivers.kobj.parent = &bus->subsys.kobj; - bus->drivers.ktype = &driver_ktype; retval = kset_register(&bus->drivers); if (retval) goto bus_drivers_fail; diff -puN drivers/base/class.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset drivers/base/class.c --- a/drivers/base/class.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/drivers/base/class.c @@ -71,7 +71,7 @@ static struct kobj_type class_ktype = { }; /* Hotplug events for classes go to the class_obj subsys */ -static decl_subsys(class, &class_ktype, NULL); +static decl_subsys(class, NULL); int class_create_file(struct class * cls, const struct class_attribute * attr) @@ -150,6 +150,7 @@ int class_register(struct class * cls) return error; cls->subsys.kobj.kset = &class_subsys; + cls->subsys.kobj.ktype = &class_ktype; error = subsystem_register(&cls->subsys); if (!error) { @@ -452,7 +453,7 @@ static struct kset_uevent_ops class_ueve .uevent = class_uevent, }; -static decl_subsys(class_obj, &class_device_ktype, &class_uevent_ops); +static decl_subsys(class_obj, &class_uevent_ops); static int class_device_add_attrs(struct class_device * cd) @@ -537,7 +538,8 @@ static struct class_device_attribute cla void class_device_initialize(struct class_device *class_dev) { - kobj_set_kset_s(class_dev, class_obj_subsys); + class_dev->kobj.kset = &class_obj_subsys; + class_dev->kobj.ktype = &class_device_ktype; kobject_init(&class_dev->kobj); INIT_LIST_HEAD(&class_dev->node); } diff -puN drivers/base/core.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset drivers/base/core.c --- a/drivers/base/core.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/drivers/base/core.c @@ -405,7 +405,7 @@ static struct device_attribute devt_attr * devices_subsys - structure to be registered with kobject core. */ -decl_subsys(devices, &device_ktype, &device_uevent_ops); +decl_subsys(devices, &device_uevent_ops); /** @@ -525,7 +525,8 @@ static void klist_children_put(struct kl void device_initialize(struct device *dev) { - kobj_set_kset_s(dev, devices_subsys); + dev->kobj.kset = &devices_subsys; + dev->kobj.ktype = &device_ktype; kobject_init(&dev->kobj); klist_init(&dev->klist_children, klist_children_get, klist_children_put); diff -puN drivers/base/firmware.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset drivers/base/firmware.c --- a/drivers/base/firmware.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/drivers/base/firmware.c @@ -15,11 +15,12 @@ #include "base.h" -static decl_subsys(firmware, NULL, NULL); +static decl_subsys(firmware, NULL); int firmware_register(struct kset *s) { - kobj_set_kset_s(s, firmware_subsys); + s->kobj.kset = &firmware_subsys; + s->kobj.ktype = NULL; return subsystem_register(s); } diff -puN drivers/base/hypervisor.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset drivers/base/hypervisor.c --- a/drivers/base/hypervisor.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/drivers/base/hypervisor.c @@ -11,7 +11,7 @@ #include "base.h" -decl_subsys(hypervisor, NULL, NULL); +decl_subsys(hypervisor, NULL); EXPORT_SYMBOL_GPL(hypervisor_subsys); int __init hypervisor_init(void) diff -puN drivers/base/sys.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset drivers/base/sys.c --- a/drivers/base/sys.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/drivers/base/sys.c @@ -131,7 +131,7 @@ EXPORT_SYMBOL_GPL(sysdev_class_remove_fi /* * declare system_subsys */ -static decl_subsys(system, &ktype_sysdev_class, NULL); +static decl_subsys(system, NULL); int sysdev_class_register(struct sysdev_class * cls) { @@ -139,6 +139,7 @@ int sysdev_class_register(struct sysdev_ kobject_name(&cls->kset.kobj)); INIT_LIST_HEAD(&cls->drivers); cls->kset.kobj.parent = &system_subsys.kobj; + cls->kset.kobj.ktype = &ktype_sysdev_class; cls->kset.kobj.kset = &system_subsys; return kset_register(&cls->kset); } diff -puN drivers/edac/edac_mc_sysfs.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset drivers/edac/edac_mc_sysfs.c --- a/drivers/edac/edac_mc_sysfs.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/drivers/edac/edac_mc_sysfs.c @@ -744,7 +744,6 @@ static struct kobj_type ktype_mc_set_att */ static struct kset mc_kset = { .kobj = {.ktype = &ktype_mc_set_attribs }, - .ktype = &ktype_mci, }; @@ -767,6 +766,7 @@ int edac_mc_register_sysfs_main_kobj(str /* this instance become part of the mc_kset */ kobj_mci->kset = &mc_kset; + kobj_mci->ktype = &ktype_mci; /* set the name of the mc object */ err = kobject_set_name(kobj_mci, "mc%d", mci->mc_idx); diff -puN drivers/firmware/edd.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset drivers/firmware/edd.c --- a/drivers/firmware/edd.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/drivers/firmware/edd.c @@ -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 *e 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); diff -puN drivers/firmware/efivars.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset drivers/firmware/efivars.c --- a/drivers/firmware/efivars.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/drivers/firmware/efivars.c @@ -583,8 +583,8 @@ static struct subsys_attribute *efi_subs 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 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); diff -puN drivers/parisc/pdc_stable.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset drivers/parisc/pdc_stable.c --- a/drivers/parisc/pdc_stable.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/drivers/parisc/pdc_stable.c @@ -964,8 +964,8 @@ static struct subsys_attribute *pdcs_sub NULL, }; -static decl_subsys(paths, &ktype_pdcspath, NULL); -static decl_subsys(stable, NULL, NULL); +static decl_subsys(paths, NULL); +static decl_subsys(stable, NULL); /** * pdcs_register_pathentries - Prepares path entries kobjects for sysfs usage. @@ -997,7 +997,8 @@ pdcs_register_pathentries(void) if ((err = kobject_set_name(&entry->kobj, "%s", entry->name))) return err; - kobj_set_kset_s(entry, paths_subsys); + entry->kobj.kset = &paths_subsys; + entry->kobj.ktype = &ktype_pdcspath; if ((err = kobject_register(&entry->kobj))) return err; @@ -1072,7 +1073,7 @@ pdc_stable_init(void) error = subsys_create_file(&stable_subsys, attr); /* register the paths subsys as a subsystem of stable subsys */ - kobj_set_kset_s(&paths_subsys, stable_subsys); + paths_subsys.kobj.kset = &stable_subsys; if ((rc = subsystem_register(&paths_subsys))) goto fail_subsysreg; diff -puN drivers/pci/hotplug/pci_hotplug_core.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset drivers/pci/hotplug/pci_hotplug_core.c --- a/drivers/pci/hotplug/pci_hotplug_core.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/drivers/pci/hotplug/pci_hotplug_core.c @@ -96,7 +96,7 @@ static struct kobj_type hotplug_slot_kty .release = &hotplug_slot_release, }; -decl_subsys_name(pci_hotplug_slots, slots, &hotplug_slot_ktype, NULL); +decl_subsys_name(pci_hotplug_slots, slots, NULL); /* these strings match up with the values in pci_bus_speed */ static char *pci_bus_speed_strings[] = { @@ -633,7 +633,8 @@ int pci_hp_register (struct hotplug_slot } kobject_set_name(&slot->kobj, "%s", slot->name); - kobj_set_kset_s(slot, pci_hotplug_slots_subsys); + slot->kobj.kset = &pci_hotplug_slots_subsys; + slot->kobj.ktype = &hotplug_slot_ktype; /* this can fail if we have already registered a slot with the same name */ if (kobject_register(&slot->kobj)) { @@ -701,7 +702,7 @@ static int __init pci_hotplug_init (void { int result; - kobj_set_kset_s(&pci_hotplug_slots_subsys, pci_bus_type.subsys); + pci_hotplug_slots_subsys.kobj.kset = &pci_bus_type.subsys; result = subsystem_register(&pci_hotplug_slots_subsys); if (result) { err("Register subsys with error %d\n", result); diff -puN drivers/pci/hotplug/rpadlpar_sysfs.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset drivers/pci/hotplug/rpadlpar_sysfs.c --- a/drivers/pci/hotplug/rpadlpar_sysfs.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/drivers/pci/hotplug/rpadlpar_sysfs.c @@ -131,7 +131,6 @@ struct kobj_type ktype_dlpar_io = { struct kset dlpar_io_kset = { .kobj = {.ktype = &ktype_dlpar_io, .parent = &pci_hotplug_slots_subsys.kobj}, - .ktype = &ktype_dlpar_io, }; int dlpar_sysfs_init(void) diff -puN drivers/uio/uio.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset drivers/uio/uio.c --- a/drivers/uio/uio.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/drivers/uio/uio.c @@ -160,7 +160,7 @@ static int uio_dev_add_attributes(struct if (!map_found) { map_found = 1; kobject_set_name(&idev->map_attr_kset.kobj,"maps"); - idev->map_attr_kset.ktype = &map_attr_type; + idev->map_attr_kset.kobj.ktype = &map_attr_type; idev->map_attr_kset.kobj.parent = &idev->dev->kobj; ret = kset_register(&idev->map_attr_kset); if (ret) diff -puN fs/configfs/mount.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset fs/configfs/mount.c --- a/fs/configfs/mount.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/fs/configfs/mount.c @@ -128,7 +128,7 @@ void configfs_release_fs(void) } -static decl_subsys(config, NULL, NULL); +static decl_subsys(config, NULL); static int __init configfs_init(void) { @@ -140,7 +140,7 @@ static int __init configfs_init(void) if (!configfs_dir_cachep) goto out; - kobj_set_kset_s(&config_subsys, kernel_subsys); + config_subsys.kobj.kset = &kernel_subsys; err = subsystem_register(&config_subsys); if (err) { kmem_cache_destroy(configfs_dir_cachep); diff -puN fs/debugfs/inode.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset fs/debugfs/inode.c --- a/fs/debugfs/inode.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/fs/debugfs/inode.c @@ -426,13 +426,13 @@ exit: } EXPORT_SYMBOL_GPL(debugfs_rename); -static decl_subsys(debug, NULL, NULL); +static decl_subsys(debug, NULL); static int __init debugfs_init(void) { int retval; - kobj_set_kset_s(&debug_subsys, kernel_subsys); + debug_subsys.kobj.kset = &kernel_subsys; retval = subsystem_register(&debug_subsys); if (retval) return retval; diff -puN fs/dlm/lockspace.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset fs/dlm/lockspace.c --- a/fs/dlm/lockspace.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/fs/dlm/lockspace.c @@ -166,9 +166,7 @@ static struct kobj_type dlm_ktype = { .release = lockspace_kobj_release, }; -static struct kset dlm_kset = { - .ktype = &dlm_ktype, -}; +static struct kset dlm_kset; static int kobject_setup(struct dlm_ls *ls) { @@ -228,7 +226,7 @@ int dlm_lockspace_init(void) spin_lock_init(&lslist_lock); kobject_set_name(&dlm_kset.kobj, "dlm"); - kobj_set_kset_s(&dlm_kset, kernel_subsys); + dlm_kset.kobj.kset = &kernel_subsys; error = kset_register(&dlm_kset); if (error) printk("dlm_lockspace_init: cannot register kset %d\n", error); diff -puN fs/ecryptfs/main.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset fs/ecryptfs/main.c --- a/fs/ecryptfs/main.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/fs/ecryptfs/main.c @@ -730,7 +730,7 @@ static int ecryptfs_init_kmem_caches(voi return 0; } -static decl_subsys(ecryptfs, NULL, NULL); +static decl_subsys(ecryptfs, NULL); static ssize_t version_show(struct kset *kset, char *buff) { @@ -794,6 +794,7 @@ static int do_sysfs_registration(void) { int rc; + ecryptfs_subsys.kobj.kset = &fs_subsys; rc = subsystem_register(&ecryptfs_subsys); if (rc) { printk(KERN_ERR @@ -841,7 +842,6 @@ static int __init ecryptfs_init(void) printk(KERN_ERR "Failed to register filesystem\n"); goto out_free_kmem_caches; } - kobj_set_kset_s(&ecryptfs_subsys, fs_subsys); rc = do_sysfs_registration(); if (rc) { printk(KERN_ERR "sysfs registration failed\n"); diff -puN fs/fuse/inode.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset fs/fuse/inode.c --- a/fs/fuse/inode.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/fs/fuse/inode.c @@ -744,8 +744,8 @@ static inline void unregister_fuseblk(vo } #endif -static decl_subsys(fuse, NULL, NULL); -static decl_subsys(connections, NULL, NULL); +static decl_subsys(fuse, NULL); +static decl_subsys(connections, NULL); static void fuse_inode_init_once(struct kmem_cache *cachep, void *foo) { @@ -795,12 +795,12 @@ static int fuse_sysfs_init(void) { int err; - kobj_set_kset_s(&fuse_subsys, fs_subsys); + fuse_subsys.kobj.kset = &fs_subsys; err = subsystem_register(&fuse_subsys); if (err) goto out_err; - kobj_set_kset_s(&connections_subsys, fuse_subsys); + connections_subsys.kobj.kset = &fuse_subsys; err = subsystem_register(&connections_subsys); if (err) goto out_fuse_unregister; diff -puN fs/gfs2/locking/dlm/sysfs.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset fs/gfs2/locking/dlm/sysfs.c --- a/fs/gfs2/locking/dlm/sysfs.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/fs/gfs2/locking/dlm/sysfs.c @@ -189,9 +189,7 @@ static struct kobj_type gdlm_ktype = { .sysfs_ops = &gdlm_attr_ops, }; -static struct kset gdlm_kset = { - .ktype = &gdlm_ktype, -}; +static struct kset gdlm_kset; int gdlm_kobject_setup(struct gdlm_ls *ls, struct kobject *fskobj) { @@ -224,7 +222,7 @@ int gdlm_sysfs_init(void) int error; kobject_set_name(&gdlm_kset.kobj, "lock_dlm"); - kobj_set_kset_s(&gdlm_kset, kernel_subsys); + gdlm_kset.kobj.kset = &kernel_subsys; error = kset_register(&gdlm_kset); if (error) printk("lock_dlm: cannot register kset %d\n", error); diff -puN fs/gfs2/sys.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset fs/gfs2/sys.c --- a/fs/gfs2/sys.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/fs/gfs2/sys.c @@ -221,9 +221,7 @@ static struct kobj_type gfs2_ktype = { .sysfs_ops = &gfs2_attr_ops, }; -static struct kset gfs2_kset = { - .ktype = &gfs2_ktype, -}; +static struct kset gfs2_kset; /* * display struct lm_lockstruct fields @@ -551,7 +549,7 @@ int gfs2_sys_init(void) gfs2_sys_margs = NULL; spin_lock_init(&gfs2_sys_margs_lock); kobject_set_name(&gfs2_kset.kobj, "gfs2"); - kobj_set_kset_s(&gfs2_kset, fs_subsys); + gfs2_kset.kobj.kset = &fs_subsys; return kset_register(&gfs2_kset); } diff -puN fs/namespace.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset fs/namespace.c --- a/fs/namespace.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/fs/namespace.c @@ -41,7 +41,7 @@ static struct kmem_cache *mnt_cache __re static struct rw_semaphore namespace_sem; /* /sys/fs */ -decl_subsys(fs, NULL, NULL); +decl_subsys(fs, NULL); EXPORT_SYMBOL_GPL(fs_subsys); static inline unsigned long hash(struct vfsmount *mnt, struct dentry *dentry) diff -puN fs/ocfs2/cluster/masklog.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset fs/ocfs2/cluster/masklog.c --- a/fs/ocfs2/cluster/masklog.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/fs/ocfs2/cluster/masklog.c @@ -157,7 +157,7 @@ int mlog_sys_init(struct kset *o2cb_subs mlog_attr_ptrs[i] = NULL; kobject_set_name(&mlog_kset.kobj, "logmask"); - kobj_set_kset_s(&mlog_kset, *o2cb_subsys); + mlog_kset.kobj.kset = o2cb_subsys; return kset_register(&mlog_kset); } diff -puN fs/ocfs2/cluster/sys.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset fs/ocfs2/cluster/sys.c --- a/fs/ocfs2/cluster/sys.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/fs/ocfs2/cluster/sys.c @@ -72,7 +72,7 @@ static struct kobj_type o2cb_subsys_type }; /* gives us o2cb_subsys */ -static decl_subsys(o2cb, NULL, NULL); +static decl_subsys(o2cb, NULL); static ssize_t o2cb_show(struct kobject * kobj, struct attribute * attr, char * buffer) diff -puN fs/sysfs/file.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset fs/sysfs/file.c --- a/fs/sysfs/file.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/fs/sysfs/file.c @@ -361,9 +361,7 @@ static int sysfs_open_file(struct inode /* if the kobject has no ktype, then we assume that it is a subsystem * itself, and use ops for it. */ - if (kobj->kset && kobj->kset->ktype) - ops = kobj->kset->ktype->sysfs_ops; - else if (kobj->ktype) + if (kobj->ktype) ops = kobj->ktype->sysfs_ops; else ops = &subsys_sysfs_ops; diff -puN include/linux/kobject.h~gregkh-driver-remove-struct-kobj_type-from-struct-kset include/linux/kobject.h --- a/include/linux/kobject.h~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/include/linux/kobject.h @@ -128,7 +128,6 @@ struct kset_uevent_ops { * define the attribute callbacks and other common events that happen to * a kobject. * - * @ktype: the struct kobj_type for this specific kset * @list: the list of all kobjects for this kset * @list_lock: a lock for iterating over the kobjects * @kobj: the embedded kobject for this kset (recursion, isn't it fun...) @@ -138,7 +137,6 @@ struct kset_uevent_ops { * desired. */ struct kset { - struct kobj_type *ktype; struct list_head list; spinlock_t list_lock; struct kobject kobj; @@ -166,12 +164,9 @@ static inline void kset_put(struct kset kobject_put(&k->kobj); } -static inline struct kobj_type * get_ktype(struct kobject * k) +static inline struct kobj_type *get_ktype(struct kobject *kobj) { - if (k->kset && k->kset->ktype) - return k->kset->ktype; - else - return k->ktype; + return kobj->ktype; } extern struct kobject * kset_find_obj(struct kset *, const char *); @@ -184,16 +179,14 @@ extern struct kobject * kset_find_obj(st #define set_kset_name(str) .kset = { .kobj = { .k_name = str } } -#define decl_subsys(_name,_type,_uevent_ops) \ +#define decl_subsys(_name,_uevent_ops) \ struct kset _name##_subsys = { \ .kobj = { .k_name = __stringify(_name) }, \ - .ktype = _type, \ .uevent_ops =_uevent_ops, \ } -#define decl_subsys_name(_varname,_name,_type,_uevent_ops) \ +#define decl_subsys_name(_varname,_name,_uevent_ops) \ struct kset _varname##_subsys = { \ .kobj = { .k_name = __stringify(_name) }, \ - .ktype = _type, \ .uevent_ops =_uevent_ops, \ } diff -puN kernel/ksysfs.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset kernel/ksysfs.c --- a/kernel/ksysfs.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/kernel/ksysfs.c @@ -94,7 +94,7 @@ static struct bin_attribute notes_attr = .read = ¬es_read, }; -decl_subsys(kernel, NULL, NULL); +decl_subsys(kernel, NULL); EXPORT_SYMBOL_GPL(kernel_subsys); static struct attribute * kernel_attrs[] = { diff -puN kernel/module.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset kernel/module.c --- a/kernel/module.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/kernel/module.c @@ -1221,7 +1221,7 @@ int mod_sysfs_init(struct module *mod) err = kobject_set_name(&mod->mkobj.kobj, "%s", mod->name); if (err) goto out; - kobj_set_kset_s(&mod->mkobj, module_subsys); + mod->mkobj.kobj.kset = &module_subsys; mod->mkobj.mod = mod; kobject_init(&mod->mkobj.kobj); diff -puN kernel/params.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset kernel/params.c --- a/kernel/params.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/kernel/params.c @@ -30,6 +30,8 @@ #define DEBUGP(fmt, a...) #endif +static struct kobj_type module_ktype; + static inline char dash2underscore(char c) { if (c == '-') @@ -560,7 +562,8 @@ static void __init kernel_param_sysfs_se BUG_ON(!mk); mk->mod = THIS_MODULE; - kobj_set_kset_s(mk, module_subsys); + mk->kobj.kset = &module_subsys; + mk->kobj.ktype = &module_ktype; kobject_set_name(&mk->kobj, name); kobject_init(&mk->kobj); ret = kobject_add(&mk->kobj); @@ -679,8 +682,6 @@ static struct sysfs_ops module_sysfs_ops .store = module_attr_store, }; -static struct kobj_type module_ktype; - static int uevent_filter(struct kset *kset, struct kobject *kobj) { struct kobj_type *ktype = get_ktype(kobj); @@ -694,7 +695,7 @@ static struct kset_uevent_ops module_uev .filter = uevent_filter, }; -decl_subsys(module, &module_ktype, &module_uevent_ops); +decl_subsys(module, &module_uevent_ops); int module_sysfs_initialized; static struct kobj_type module_ktype = { diff -puN kernel/power/main.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset kernel/power/main.c --- a/kernel/power/main.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/kernel/power/main.c @@ -388,7 +388,7 @@ EXPORT_SYMBOL(pm_suspend); #endif /* CONFIG_SUSPEND */ -decl_subsys(power,NULL,NULL); +decl_subsys(power, NULL); /** diff -puN mm/slub.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset mm/slub.c --- a/mm/slub.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/mm/slub.c @@ -3958,7 +3958,7 @@ static struct kset_uevent_ops slab_ueven .filter = uevent_filter, }; -static decl_subsys(slab, &slab_ktype, &slab_uevent_ops); +static decl_subsys(slab, &slab_uevent_ops); #define ID_STR_LENGTH 64 @@ -4021,8 +4021,9 @@ static int sysfs_slab_add(struct kmem_ca name = create_unique_id(s); } - kobj_set_kset_s(s, slab_subsys); kobject_set_name(&s->kobj, name); + s->kobj.kset = &slab_subsys; + s->kobj.ktype = &slab_ktype; kobject_init(&s->kobj); err = kobject_add(&s->kobj); if (err) diff -puN security/inode.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset security/inode.c --- a/security/inode.c~gregkh-driver-remove-struct-kobj_type-from-struct-kset +++ a/security/inode.c @@ -315,13 +315,13 @@ void securityfs_remove(struct dentry *de } EXPORT_SYMBOL_GPL(securityfs_remove); -static decl_subsys(security, NULL, NULL); +static decl_subsys(security, NULL); static int __init securityfs_init(void) { int retval; - kobj_set_kset_s(&security_subsys, kernel_subsys); + security_subsys.kobj.kset = &kernel_subsys; retval = subsystem_register(&security_subsys); if (retval) return retval; _