From 3514faca19a6fdc209734431c509631ea92b094e Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 16 Oct 2007 10:11:44 -0600 Subject: 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 Cc: Kay Sievers Cc: Dave Young Signed-off-by: Greg Kroah-Hartman --- drivers/acpi/bus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/acpi/bus.c') diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index f4487c38d9f2..7c172d9d7acf 100644 --- a/drivers/acpi/bus.c +++ b/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) { -- cgit v1.2.3 From 99e0d2fc6c60ca44f56203eeda9fc0e07b508f06 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 2 Nov 2007 16:19:59 -0700 Subject: kobject: convert /sys/firmware/acpi/ to use kobject_create We don't need a kset here, a simple kobject will do just fine, so dynamically create the kobject and use it. Cc: Kay Sievers Cc: Len Brown Signed-off-by: Greg Kroah-Hartman --- drivers/acpi/bus.c | 11 ++++++----- drivers/acpi/system.c | 2 +- include/acpi/acpi_bus.h | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) (limited to 'drivers/acpi/bus.c') diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index 7c172d9d7acf..e550da684a47 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -743,7 +743,7 @@ static int __init acpi_bus_init(void) return -ENODEV; } -decl_subsys(acpi, NULL); +struct kobject *acpi_kobj; static int __init acpi_init(void) { @@ -755,10 +755,11 @@ static int __init acpi_init(void) return -ENODEV; } - result = firmware_register(&acpi_subsys); - if (result < 0) - printk(KERN_WARNING "%s: firmware_register error: %d\n", - __FUNCTION__, result); + acpi_kobj = kobject_create_and_add("acpi", &firmware_kset->kobj); + if (!acpi_kobj) { + printk(KERN_WARNING "%s: kset create error\n", __FUNCTION__); + acpi_kobj = NULL; + } result = acpi_bus_init(); diff --git a/drivers/acpi/system.c b/drivers/acpi/system.c index edee2806e37b..c22b93aab7fe 100644 --- a/drivers/acpi/system.c +++ b/drivers/acpi/system.c @@ -135,7 +135,7 @@ static int acpi_system_sysfs_init(void) int table_index = 0; int result; - tables_kobj.parent = &acpi_subsys.kobj; + tables_kobj.parent = acpi_kobj; kobject_set_name(&tables_kobj, "tables"); result = kobject_register(&tables_kobj); if (result) diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h index 7b74b60a68a4..fb7171b1bd22 100644 --- a/include/acpi/acpi_bus.h +++ b/include/acpi/acpi_bus.h @@ -319,7 +319,7 @@ struct acpi_bus_event { u32 data; }; -extern struct kset acpi_subsys; +extern struct kobject *acpi_kobj; extern int acpi_bus_generate_netlink_event(const char*, const char*, u8, int); /* * External Functions -- cgit v1.2.3 From f62ed9e33b3ccff54d66b08f82d11940bb9e269b Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 5 Nov 2007 13:16:15 -0800 Subject: firmware: change firmware_kset to firmware_kobj There is no firmware "subsystem" it's just a directory in /sys that other portions of the kernel want to hook into. So make it a kobject not a kset to help alivate anyone who tries to do some odd kset-like things with this. Cc: Kay Sievers Cc: Cornelia Huck Signed-off-by: Greg Kroah-Hartman --- arch/s390/kernel/ipl.c | 8 ++++---- drivers/acpi/bus.c | 2 +- drivers/base/firmware.c | 8 ++++---- drivers/firmware/edd.c | 2 +- drivers/firmware/efivars.c | 2 +- drivers/parisc/pdc_stable.c | 2 +- include/linux/kobject.h | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) (limited to 'drivers/acpi/bus.c') diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c index c8179fc30baa..b97694fa62ec 100644 --- a/arch/s390/kernel/ipl.c +++ b/arch/s390/kernel/ipl.c @@ -855,7 +855,7 @@ static int __init ipl_init(void) { int rc; - ipl_kset = kset_create_and_add("ipl", NULL, &firmware_kset->kobj); + ipl_kset = kset_create_and_add("ipl", NULL, firmware_kobj); if (!ipl_kset) return -ENOMEM; switch (ipl_info.type) { @@ -974,7 +974,7 @@ static int __init reipl_init(void) { int rc; - reipl_kset = kset_create_and_add("reipl", NULL, &firmware_kset->kobj); + reipl_kset = kset_create_and_add("reipl", NULL, firmware_kobj); if (!reipl_kset) return -ENOMEM; rc = sysfs_create_file(&reipl_kset->kobj, &reipl_type_attr.attr); @@ -1063,7 +1063,7 @@ static int __init dump_init(void) { int rc; - dump_kset = kset_create_and_add("dump", NULL, &firmware_kset->kobj); + dump_kset = kset_create_and_add("dump", NULL, firmware_kobj); if (!dump_kset) return -ENOMEM; rc = sysfs_create_file(&dump_kset->kobj, &dump_type_attr); @@ -1086,7 +1086,7 @@ static int __init shutdown_actions_init(void) int rc; shutdown_actions_kset = kset_create_and_add("shutdown_actions", NULL, - &firmware_kset->kobj); + firmware_kobj); if (!shutdown_actions_kset) return -ENOMEM; rc = sysfs_create_file(&shutdown_actions_kset->kobj, &on_panic_attr); diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index e550da684a47..1b4cf984b081 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -755,7 +755,7 @@ static int __init acpi_init(void) return -ENODEV; } - acpi_kobj = kobject_create_and_add("acpi", &firmware_kset->kobj); + acpi_kobj = kobject_create_and_add("acpi", firmware_kobj); if (!acpi_kobj) { printk(KERN_WARNING "%s: kset create error\n", __FUNCTION__); acpi_kobj = NULL; diff --git a/drivers/base/firmware.c b/drivers/base/firmware.c index 9efff481f5dc..113815556809 100644 --- a/drivers/base/firmware.c +++ b/drivers/base/firmware.c @@ -15,13 +15,13 @@ #include "base.h" -struct kset *firmware_kset; -EXPORT_SYMBOL_GPL(firmware_kset); +struct kobject *firmware_kobj; +EXPORT_SYMBOL_GPL(firmware_kobj); int __init firmware_init(void) { - firmware_kset = kset_create_and_add("firmware", NULL, NULL); - if (!firmware_kset) + firmware_kobj = kobject_create_and_add("firmware", NULL); + if (!firmware_kobj) return -ENOMEM; return 0; } diff --git a/drivers/firmware/edd.c b/drivers/firmware/edd.c index f07f37047cd1..ddcc95793068 100644 --- a/drivers/firmware/edd.c +++ b/drivers/firmware/edd.c @@ -756,7 +756,7 @@ edd_init(void) return 1; } - edd_kset = kset_create_and_add("edd", NULL, &firmware_kset->kobj); + edd_kset = kset_create_and_add("edd", NULL, firmware_kobj); if (!edd_kset) return -ENOMEM; diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c index e17cd8133548..d1ad48190afc 100644 --- a/drivers/firmware/efivars.c +++ b/drivers/firmware/efivars.c @@ -668,7 +668,7 @@ efivars_init(void) /* * For now we'll register the efi subsys within this driver */ - efi_kset = kset_create_and_add("efi", NULL, &firmware_kset->kobj); + efi_kset = kset_create_and_add("efi", NULL, firmware_kobj); if (!efi_kset) { printk(KERN_ERR "efivars: Firmware registration failed.\n"); error = -ENOMEM; diff --git a/drivers/parisc/pdc_stable.c b/drivers/parisc/pdc_stable.c index 444483405abf..ef1a353e5540 100644 --- a/drivers/parisc/pdc_stable.c +++ b/drivers/parisc/pdc_stable.c @@ -1059,7 +1059,7 @@ pdc_stable_init(void) pdcs_osid = (u16)(result >> 16); /* For now we'll register the stable kset within this driver */ - stable_kset = kset_create_and_add("stable", NULL, &firmware_kset->kobj); + stable_kset = kset_create_and_add("stable", NULL, firmware_kobj); if (!stable_kset) { rc = -ENOMEM; goto fail_firmreg; diff --git a/include/linux/kobject.h b/include/linux/kobject.h index 29841bb5badb..673623f18464 100644 --- a/include/linux/kobject.h +++ b/include/linux/kobject.h @@ -210,8 +210,8 @@ extern struct kset *kernel_kset; extern struct kobject *hypervisor_kobj; /* The global /sys/power/ kset for people to chain off of */ extern struct kset *power_kset; -/* The global /sys/firmware/ kset for people to chain off of */ -extern struct kset *firmware_kset; +/* The global /sys/firmware/ kobject for people to chain off of */ +extern struct kobject *firmware_kobj; extern int __must_check subsystem_register(struct kset *); extern void subsystem_unregister(struct kset *); -- cgit v1.2.3