Driver core: change sysdev classes to use dynamic kobject names

All kobjects require a dynamically allocated name now. We no longer
need to keep track if the name is statically assigned, we can just
unconditionally free() all kobject names on cleanup.

Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Kay Sievers 2007-12-20 02:09:39 +01:00 committed by Greg Kroah-Hartman
parent 528a4bf1d5
commit af5ca3f4ec
55 changed files with 62 additions and 73 deletions

View File

@ -195,7 +195,7 @@ static int leds_shutdown(struct sys_device *dev)
} }
static struct sysdev_class leds_sysclass = { static struct sysdev_class leds_sysclass = {
set_kset_name("leds"), .name = "leds",
.shutdown = leds_shutdown, .shutdown = leds_shutdown,
.suspend = leds_suspend, .suspend = leds_suspend,
.resume = leds_resume, .resume = leds_resume,
@ -369,7 +369,7 @@ static int timer_resume(struct sys_device *dev)
#endif #endif
static struct sysdev_class timer_sysclass = { static struct sysdev_class timer_sysclass = {
set_kset_name("timer"), .name = "timer",
.suspend = timer_suspend, .suspend = timer_suspend,
.resume = timer_resume, .resume = timer_resume,
}; };

View File

@ -214,7 +214,7 @@ static int irq_resume(struct sys_device *dev)
#endif #endif
static struct sysdev_class irq_class = { static struct sysdev_class irq_class = {
set_kset_name("irq"), .name = "irq",
.suspend = irq_suspend, .suspend = irq_suspend,
.resume = irq_resume, .resume = irq_resume,
}; };

View File

@ -566,7 +566,7 @@ static int cmx270_resume(struct sys_device *dev)
} }
static struct sysdev_class cmx270_pm_sysclass = { static struct sysdev_class cmx270_pm_sysclass = {
set_kset_name("pm"), .name = "pm",
.resume = cmx270_resume, .resume = cmx270_resume,
.suspend = cmx270_suspend, .suspend = cmx270_suspend,
}; };

View File

@ -122,7 +122,7 @@ static int lpd270_irq_resume(struct sys_device *dev)
} }
static struct sysdev_class lpd270_irq_sysclass = { static struct sysdev_class lpd270_irq_sysclass = {
set_kset_name("cpld_irq"), .name = "cpld_irq",
.resume = lpd270_irq_resume, .resume = lpd270_irq_resume,
}; };

View File

@ -126,7 +126,7 @@ static int lubbock_irq_resume(struct sys_device *dev)
} }
static struct sysdev_class lubbock_irq_sysclass = { static struct sysdev_class lubbock_irq_sysclass = {
set_kset_name("cpld_irq"), .name = "cpld_irq",
.resume = lubbock_irq_resume, .resume = lubbock_irq_resume,
}; };

View File

@ -120,7 +120,7 @@ static int mainstone_irq_resume(struct sys_device *dev)
} }
static struct sysdev_class mainstone_irq_sysclass = { static struct sysdev_class mainstone_irq_sysclass = {
set_kset_name("cpld_irq"), .name = "cpld_irq",
.resume = mainstone_irq_resume, .resume = mainstone_irq_resume,
}; };

View File

@ -100,7 +100,7 @@ void __init s3c2410_init_clocks(int xtal)
} }
struct sysdev_class s3c2410_sysclass = { struct sysdev_class s3c2410_sysclass = {
set_kset_name("s3c2410-core"), .name = "s3c2410-core",
}; };
static struct sys_device s3c2410_sysdev = { static struct sys_device s3c2410_sysdev = {

View File

@ -196,7 +196,7 @@ void __init s3c2412_init_clocks(int xtal)
*/ */
struct sysdev_class s3c2412_sysclass = { struct sysdev_class s3c2412_sysclass = {
set_kset_name("s3c2412-core"), .name = "s3c2412-core",
}; };
static int __init s3c2412_core_init(void) static int __init s3c2412_core_init(void)

View File

@ -312,7 +312,7 @@ static int osiris_pm_resume(struct sys_device *sd)
#endif #endif
static struct sysdev_class osiris_pm_sysclass = { static struct sysdev_class osiris_pm_sysclass = {
set_kset_name("mach-osiris"), .name = "mach-osiris",
.suspend = osiris_pm_suspend, .suspend = osiris_pm_suspend,
.resume = osiris_pm_resume, .resume = osiris_pm_resume,
}; };

View File

@ -43,7 +43,7 @@ static struct map_desc s3c2443_iodesc[] __initdata = {
}; };
struct sysdev_class s3c2443_sysclass = { struct sysdev_class s3c2443_sysclass = {
set_kset_name("s3c2443-core"), .name = "s3c2443-core",
}; };
static struct sys_device s3c2443_sysdev = { static struct sys_device s3c2443_sysdev = {

View File

@ -283,7 +283,7 @@ static int sa1100irq_resume(struct sys_device *dev)
} }
static struct sysdev_class sa1100irq_sysclass = { static struct sysdev_class sa1100irq_sysclass = {
set_kset_name("sa11x0-irq"), .name = "sa11x0-irq",
.suspend = sa1100irq_suspend, .suspend = sa1100irq_suspend,
.resume = sa1100irq_resume, .resume = sa1100irq_resume,
}; };

View File

@ -96,7 +96,7 @@ static int op_arm_resume(struct sys_device *dev)
} }
static struct sysdev_class oprofile_sysclass = { static struct sysdev_class oprofile_sysclass = {
set_kset_name("oprofile"), .name = "oprofile",
.resume = op_arm_resume, .resume = op_arm_resume,
.suspend = op_arm_suspend, .suspend = op_arm_suspend,
}; };

View File

@ -1455,7 +1455,7 @@ static int omap_gpio_resume(struct sys_device *dev)
} }
static struct sysdev_class omap_gpio_sysclass = { static struct sysdev_class omap_gpio_sysclass = {
set_kset_name("gpio"), .name = "gpio",
.suspend = omap_gpio_suspend, .suspend = omap_gpio_suspend,
.resume = omap_gpio_resume, .resume = omap_gpio_resume,
}; };

View File

@ -1265,7 +1265,7 @@ static int s3c2410_dma_resume(struct sys_device *dev)
#endif /* CONFIG_PM */ #endif /* CONFIG_PM */
struct sysdev_class dma_sysclass = { struct sysdev_class dma_sysclass = {
set_kset_name("s3c24xx-dma"), .name = "s3c24xx-dma",
.suspend = s3c2410_dma_suspend, .suspend = s3c2410_dma_suspend,
.resume = s3c2410_dma_resume, .resume = s3c2410_dma_resume,
}; };

View File

@ -151,13 +151,13 @@ static int s3c244x_resume(struct sys_device *dev)
/* Since the S3C2442 and S3C2440 share items, put both sysclasses here */ /* Since the S3C2442 and S3C2440 share items, put both sysclasses here */
struct sysdev_class s3c2440_sysclass = { struct sysdev_class s3c2440_sysclass = {
set_kset_name("s3c2440-core"), .name = "s3c2440-core",
.suspend = s3c244x_suspend, .suspend = s3c244x_suspend,
.resume = s3c244x_resume .resume = s3c244x_resume
}; };
struct sysdev_class s3c2442_sysclass = { struct sysdev_class s3c2442_sysclass = {
set_kset_name("s3c2442-core"), .name = "s3c2442-core",
.suspend = s3c244x_suspend, .suspend = s3c244x_suspend,
.resume = s3c244x_resume .resume = s3c244x_resume
}; };

View File

@ -214,7 +214,7 @@ void __init time_init(void)
} }
static struct sysdev_class timer_class = { static struct sysdev_class timer_class = {
set_kset_name("timer"), .name = "timer",
}; };
static struct sys_device timer_device = { static struct sys_device timer_device = {

View File

@ -238,7 +238,7 @@ static int i8259A_shutdown(struct sys_device *dev)
} }
static struct sysdev_class i8259_sysdev_class = { static struct sysdev_class i8259_sysdev_class = {
set_kset_name("i8259"), .name = "i8259",
.resume = i8259A_resume, .resume = i8259A_resume,
.shutdown = i8259A_shutdown, .shutdown = i8259A_shutdown,
}; };

View File

@ -459,7 +459,7 @@ static int spu_shutdown(struct sys_device *sysdev)
} }
static struct sysdev_class spu_sysdev_class = { static struct sysdev_class spu_sysdev_class = {
set_kset_name("spu"), .name = "spu",
.shutdown = spu_shutdown, .shutdown = spu_shutdown,
}; };

View File

@ -663,7 +663,7 @@ static int pmacpic_resume(struct sys_device *sysdev)
#endif /* CONFIG_PM && CONFIG_PPC32 */ #endif /* CONFIG_PM && CONFIG_PPC32 */
static struct sysdev_class pmacpic_sysclass = { static struct sysdev_class pmacpic_sysclass = {
set_kset_name("pmac_pic"), .name = "pmac_pic",
}; };
static struct sys_device device_pmacpic = { static struct sys_device device_pmacpic = {

View File

@ -725,7 +725,7 @@ unsigned int ipic_get_irq(void)
} }
static struct sysdev_class ipic_sysclass = { static struct sysdev_class ipic_sysclass = {
set_kset_name("ipic"), .name = "ipic",
}; };
static struct sys_device device_ipic = { static struct sys_device device_ipic = {

View File

@ -1584,7 +1584,7 @@ static struct sysdev_class mpic_sysclass = {
.resume = mpic_resume, .resume = mpic_resume,
.suspend = mpic_suspend, .suspend = mpic_suspend,
#endif #endif
set_kset_name("mpic"), .name = "mpic",
}; };
static int mpic_init_sys(void) static int mpic_init_sys(void)

View File

@ -483,7 +483,7 @@ int qe_ic_set_high_priority(unsigned int virq, unsigned int priority, int high)
} }
static struct sysdev_class qe_ic_sysclass = { static struct sysdev_class qe_ic_sysclass = {
set_kset_name("qe_ic"), .name = "qe_ic",
}; };
static struct sys_device device_qe_ic = { static struct sys_device device_qe_ic = {

View File

@ -614,7 +614,7 @@ int ipic_get_irq(void)
} }
static struct sysdev_class ipic_sysclass = { static struct sysdev_class ipic_sysclass = {
set_kset_name("ipic"), .name = "ipic",
}; };
static struct sys_device device_ipic = { static struct sys_device device_ipic = {

View File

@ -1043,7 +1043,7 @@ int openpic_resume(struct sys_device *sysdev)
#endif /* CONFIG_PM */ #endif /* CONFIG_PM */
static struct sysdev_class openpic_sysclass = { static struct sysdev_class openpic_sysclass = {
set_kset_name("openpic"), .name = "openpic",
}; };
static struct sys_device device_openpic = { static struct sys_device device_openpic = {

View File

@ -666,7 +666,7 @@ int openpic2_resume(struct sys_device *sysdev)
/* HACK ALERT */ /* HACK ALERT */
static struct sysdev_class openpic2_sysclass = { static struct sysdev_class openpic2_sysclass = {
set_kset_name("openpic2"), .name = "openpic2",
}; };
static struct sys_device device_openpic2 = { static struct sys_device device_openpic2 = {

View File

@ -1145,7 +1145,7 @@ static void etr_work_fn(struct work_struct *work)
* Sysfs interface functions * Sysfs interface functions
*/ */
static struct sysdev_class etr_sysclass = { static struct sysdev_class etr_sysclass = {
set_kset_name("etr") .name = "etr",
}; };
static struct sys_device etr_port0_dev = { static struct sys_device etr_port0_dev = {

View File

@ -19,7 +19,7 @@
#include <asm/dma.h> #include <asm/dma.h>
static struct sysdev_class dma_sysclass = { static struct sysdev_class dma_sysclass = {
set_kset_name("dma"), .name = "dma",
}; };
EXPORT_SYMBOL(dma_sysclass); EXPORT_SYMBOL(dma_sysclass);

View File

@ -174,7 +174,7 @@ int timer_resume(struct sys_device *dev)
#endif #endif
static struct sysdev_class timer_sysclass = { static struct sysdev_class timer_sysclass = {
set_kset_name("timer"), .name = "timer",
.suspend = timer_suspend, .suspend = timer_suspend,
.resume = timer_resume, .resume = timer_resume,
}; };

View File

@ -1530,7 +1530,7 @@ static int lapic_resume(struct sys_device *dev)
*/ */
static struct sysdev_class lapic_sysclass = { static struct sysdev_class lapic_sysclass = {
set_kset_name("lapic"), .name = "lapic",
.resume = lapic_resume, .resume = lapic_resume,
.suspend = lapic_suspend, .suspend = lapic_suspend,
}; };

View File

@ -639,7 +639,7 @@ static int lapic_resume(struct sys_device *dev)
} }
static struct sysdev_class lapic_sysclass = { static struct sysdev_class lapic_sysclass = {
set_kset_name("lapic"), .name = "lapic",
.resume = lapic_resume, .resume = lapic_resume,
.suspend = lapic_suspend, .suspend = lapic_suspend,
}; };

View File

@ -745,7 +745,7 @@ static void mce_restart(void)
static struct sysdev_class mce_sysclass = { static struct sysdev_class mce_sysclass = {
.resume = mce_resume, .resume = mce_resume,
set_kset_name("machinecheck"), .name = "machinecheck",
}; };
DEFINE_PER_CPU(struct sys_device, device_mce); DEFINE_PER_CPU(struct sys_device, device_mce);

View File

@ -51,7 +51,7 @@ static int i8237A_suspend(struct sys_device *dev, pm_message_t state)
} }
static struct sysdev_class i8237_sysdev_class = { static struct sysdev_class i8237_sysdev_class = {
set_kset_name("i8237"), .name = "i8237",
.suspend = i8237A_suspend, .suspend = i8237A_suspend,
.resume = i8237A_resume, .resume = i8237A_resume,
}; };

View File

@ -258,7 +258,7 @@ static int i8259A_shutdown(struct sys_device *dev)
} }
static struct sysdev_class i8259_sysdev_class = { static struct sysdev_class i8259_sysdev_class = {
set_kset_name("i8259"), .name = "i8259",
.suspend = i8259A_suspend, .suspend = i8259A_suspend,
.resume = i8259A_resume, .resume = i8259A_resume,
.shutdown = i8259A_shutdown, .shutdown = i8259A_shutdown,

View File

@ -370,7 +370,7 @@ static int i8259A_shutdown(struct sys_device *dev)
} }
static struct sysdev_class i8259_sysdev_class = { static struct sysdev_class i8259_sysdev_class = {
set_kset_name("i8259"), .name = "i8259",
.suspend = i8259A_suspend, .suspend = i8259A_suspend,
.resume = i8259A_resume, .resume = i8259A_resume,
.shutdown = i8259A_shutdown, .shutdown = i8259A_shutdown,

View File

@ -2401,7 +2401,7 @@ static int ioapic_resume(struct sys_device *dev)
} }
static struct sysdev_class ioapic_sysdev_class = { static struct sysdev_class ioapic_sysdev_class = {
set_kset_name("ioapic"), .name = "ioapic",
.suspend = ioapic_suspend, .suspend = ioapic_suspend,
.resume = ioapic_resume, .resume = ioapic_resume,
}; };

View File

@ -1850,7 +1850,7 @@ static int ioapic_resume(struct sys_device *dev)
} }
static struct sysdev_class ioapic_sysdev_class = { static struct sysdev_class ioapic_sysdev_class = {
set_kset_name("ioapic"), .name = "ioapic",
.suspend = ioapic_suspend, .suspend = ioapic_suspend,
.resume = ioapic_resume, .resume = ioapic_resume,
}; };

View File

@ -176,7 +176,7 @@ static int lapic_nmi_resume(struct sys_device *dev)
static struct sysdev_class nmi_sysclass = { static struct sysdev_class nmi_sysclass = {
set_kset_name("lapic_nmi"), .name = "lapic_nmi",
.resume = lapic_nmi_resume, .resume = lapic_nmi_resume,
.suspend = lapic_nmi_suspend, .suspend = lapic_nmi_suspend,
}; };

View File

@ -211,7 +211,7 @@ static int lapic_nmi_resume(struct sys_device *dev)
} }
static struct sysdev_class nmi_sysclass = { static struct sysdev_class nmi_sysclass = {
set_kset_name("lapic_nmi"), .name = "lapic_nmi",
.resume = lapic_nmi_resume, .resume = lapic_nmi_resume,
.suspend = lapic_nmi_suspend, .suspend = lapic_nmi_suspend,
}; };

View File

@ -51,7 +51,7 @@ static int nmi_resume(struct sys_device *dev)
static struct sysdev_class oprofile_sysclass = { static struct sysdev_class oprofile_sysclass = {
set_kset_name("oprofile"), .name = "oprofile",
.resume = nmi_resume, .resume = nmi_resume,
.suspend = nmi_suspend, .suspend = nmi_suspend,
}; };

View File

@ -911,7 +911,7 @@ __setup("acpi_irq_balance", acpi_irq_balance_set);
/* FIXME: we will remove this interface after all drivers call pci_disable_device */ /* FIXME: we will remove this interface after all drivers call pci_disable_device */
static struct sysdev_class irqrouter_sysdev_class = { static struct sysdev_class irqrouter_sysdev_class = {
set_kset_name("irqrouter"), .name = "irqrouter",
.resume = irqrouter_resume, .resume = irqrouter_resume,
}; };

View File

@ -466,7 +466,6 @@ static struct kset_uevent_ops class_uevent_ops = {
* entirely soon. * entirely soon.
*/ */
static struct kset class_obj_subsys = { static struct kset class_obj_subsys = {
.kobj = { .k_name = "class_obj", },
.uevent_ops = &class_uevent_ops, .uevent_ops = &class_uevent_ops,
}; };
@ -872,6 +871,7 @@ int __init classes_init(void)
/* ick, this is ugly, the things we go through to keep from showing up /* ick, this is ugly, the things we go through to keep from showing up
* in sysfs... */ * in sysfs... */
kset_init(&class_obj_subsys); kset_init(&class_obj_subsys);
kobject_set_name(&class_obj_subsys.kobj, "class_obj");
if (!class_obj_subsys.kobj.parent) if (!class_obj_subsys.kobj.parent)
class_obj_subsys.kobj.parent = &class_obj_subsys.kobj; class_obj_subsys.kobj.parent = &class_obj_subsys.kobj;
return 0; return 0;

View File

@ -14,7 +14,7 @@
#include "base.h" #include "base.h"
struct sysdev_class cpu_sysdev_class = { struct sysdev_class cpu_sysdev_class = {
set_kset_name("cpu"), .name = "cpu",
}; };
EXPORT_SYMBOL(cpu_sysdev_class); EXPORT_SYMBOL(cpu_sysdev_class);

View File

@ -26,7 +26,7 @@
#define MEMORY_CLASS_NAME "memory" #define MEMORY_CLASS_NAME "memory"
static struct sysdev_class memory_sysdev_class = { static struct sysdev_class memory_sysdev_class = {
set_kset_name(MEMORY_CLASS_NAME), .name = MEMORY_CLASS_NAME,
}; };
static const char *memory_uevent_name(struct kset *kset, struct kobject *kobj) static const char *memory_uevent_name(struct kset *kset, struct kobject *kobj)

View File

@ -15,7 +15,7 @@
#include <linux/device.h> #include <linux/device.h>
static struct sysdev_class node_class = { static struct sysdev_class node_class = {
set_kset_name("node"), .name = "node",
}; };

View File

@ -136,6 +136,7 @@ int sysdev_class_register(struct sysdev_class * cls)
cls->kset.kobj.parent = &system_kset->kobj; cls->kset.kobj.parent = &system_kset->kobj;
cls->kset.kobj.ktype = &ktype_sysdev_class; cls->kset.kobj.ktype = &ktype_sysdev_class;
cls->kset.kobj.kset = system_kset; cls->kset.kobj.kset = system_kset;
kobject_set_name(&cls->kset.kobj, cls->name);
return kset_register(&cls->kset); return kset_register(&cls->kset);
} }

View File

@ -31,7 +31,7 @@ struct workqueue_struct *edac_workqueue;
* need to export to other files in this modules * need to export to other files in this modules
*/ */
static struct sysdev_class edac_class = { static struct sysdev_class edac_class = {
set_kset_name("edac"), .name = "edac",
}; };
static int edac_class_valid; static int edac_class_valid;

View File

@ -3451,7 +3451,7 @@ static int kvm_resume(struct sys_device *dev)
} }
static struct sysdev_class kvm_sysdev_class = { static struct sysdev_class kvm_sysdev_class = {
set_kset_name("kvm"), .name = "kvm",
.suspend = kvm_suspend, .suspend = kvm_suspend,
.resume = kvm_resume, .resume = kvm_resume,
}; };

View File

@ -2796,7 +2796,7 @@ static int pmu_sys_resume(struct sys_device *sysdev)
#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */ #endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
static struct sysdev_class pmu_sysclass = { static struct sysdev_class pmu_sysclass = {
set_kset_name("pmu"), .name = "pmu",
}; };
static struct sys_device device_pmu = { static struct sys_device device_pmu = {

View File

@ -464,7 +464,7 @@ int sas_eh_bus_reset_handler(struct scsi_cmnd *cmd)
res = sas_phy_reset(phy, 1); res = sas_phy_reset(phy, 1);
if (res) if (res)
SAS_DPRINTK("Bus reset of %s failed 0x%x\n", SAS_DPRINTK("Bus reset of %s failed 0x%x\n",
phy->dev.kobj.k_name, kobject_name(&phy->dev.kobj),
res); res);
if (res == TMF_RESP_FUNC_SUCC || res == TMF_RESP_FUNC_COMPLETE) if (res == TMF_RESP_FUNC_SUCC || res == TMF_RESP_FUNC_COMPLETE)
return SUCCESS; return SUCCESS;

View File

@ -61,7 +61,7 @@ enum kobject_action {
}; };
struct kobject { struct kobject {
const char * k_name; const char *name;
struct kref kref; struct kref kref;
struct list_head entry; struct list_head entry;
struct kobject * parent; struct kobject * parent;
@ -69,7 +69,6 @@ struct kobject {
struct kobj_type * ktype; struct kobj_type * ktype;
struct sysfs_dirent * sd; struct sysfs_dirent * sd;
unsigned int state_initialized:1; unsigned int state_initialized:1;
unsigned int state_name_set:1;
unsigned int state_in_sysfs:1; unsigned int state_in_sysfs:1;
unsigned int state_add_uevent_sent:1; unsigned int state_add_uevent_sent:1;
unsigned int state_remove_uevent_sent:1; unsigned int state_remove_uevent_sent:1;
@ -80,7 +79,7 @@ extern int kobject_set_name(struct kobject *, const char *, ...)
static inline const char * kobject_name(const struct kobject * kobj) static inline const char * kobject_name(const struct kobject * kobj)
{ {
return kobj->k_name; return kobj->name;
} }
extern void kobject_init(struct kobject *kobj, struct kobj_type *ktype); extern void kobject_init(struct kobject *kobj, struct kobj_type *ktype);
@ -189,14 +188,6 @@ static inline struct kobj_type *get_ktype(struct kobject *kobj)
extern struct kobject * kset_find_obj(struct kset *, const char *); extern struct kobject * kset_find_obj(struct kset *, const char *);
/*
* Use this when initializing an embedded kset with no other
* fields to initialize.
*/
#define set_kset_name(str) .kset = { .kobj = { .k_name = str } }
/* The global /sys/kernel/ kobject for people to chain off of */ /* The global /sys/kernel/ kobject for people to chain off of */
extern struct kobject *kernel_kobj; extern struct kobject *kernel_kobj;
/* The global /sys/hypervisor/ kobject for people to chain off of */ /* The global /sys/hypervisor/ kobject for people to chain off of */

View File

@ -29,6 +29,7 @@
struct sys_device; struct sys_device;
struct sysdev_class { struct sysdev_class {
const char *name;
struct list_head drivers; struct list_head drivers;
/* Default operations for these types of devices */ /* Default operations for these types of devices */

View File

@ -394,7 +394,7 @@ static SYSDEV_ATTR(status, 0600, sysfs_test_status, NULL);
static SYSDEV_ATTR(command, 0600, NULL, sysfs_test_command); static SYSDEV_ATTR(command, 0600, NULL, sysfs_test_command);
static struct sysdev_class rttest_sysclass = { static struct sysdev_class rttest_sysclass = {
set_kset_name("rttest"), .name = "rttest",
}; };
static int init_test_thread(int id) static int init_test_thread(int id)

View File

@ -441,7 +441,7 @@ static SYSDEV_ATTR(available_clocksource, 0600,
sysfs_show_available_clocksources, NULL); sysfs_show_available_clocksources, NULL);
static struct sysdev_class clocksource_sysclass = { static struct sysdev_class clocksource_sysclass = {
set_kset_name("clocksource"), .name = "clocksource",
}; };
static struct sys_device device_clocksource = { static struct sys_device device_clocksource = {

View File

@ -335,9 +335,9 @@ static int timekeeping_suspend(struct sys_device *dev, pm_message_t state)
/* sysfs resume/suspend bits for timekeeping */ /* sysfs resume/suspend bits for timekeeping */
static struct sysdev_class timekeeping_sysclass = { static struct sysdev_class timekeeping_sysclass = {
.name = "timekeeping",
.resume = timekeeping_resume, .resume = timekeeping_resume,
.suspend = timekeeping_suspend, .suspend = timekeeping_suspend,
set_kset_name("timekeeping"),
}; };
static struct sys_device device_timer = { static struct sys_device device_timer = {

View File

@ -165,7 +165,7 @@ static int kobject_add_internal(struct kobject *kobj)
if (!kobj) if (!kobj)
return -ENOENT; return -ENOENT;
if (!kobj->k_name || !kobj->k_name[0]) { if (!kobj->name || !kobj->name[0]) {
pr_debug("kobject: (%p): attempted to be registered with empty " pr_debug("kobject: (%p): attempted to be registered with empty "
"name!\n", kobj); "name!\n", kobj);
WARN_ON(1); WARN_ON(1);
@ -228,13 +228,11 @@ static int kobject_set_name_vargs(struct kobject *kobj, const char *fmt,
if (!name) if (!name)
return -ENOMEM; return -ENOMEM;
/* Free the old name, if necessary. */ /* Free the old name, if necessary. */
kfree(kobj->k_name); kfree(kobj->name);
/* Now, set the new name */ /* Now, set the new name */
kobj->k_name = name; kobj->name = name;
kobj->state_name_set = 1;
return 0; return 0;
} }
@ -295,7 +293,6 @@ void kobject_init(struct kobject *kobj, struct kobj_type *ktype)
kref_init(&kobj->kref); kref_init(&kobj->kref);
INIT_LIST_HEAD(&kobj->entry); INIT_LIST_HEAD(&kobj->entry);
kobj->ktype = ktype; kobj->ktype = ktype;
kobj->state_name_set = 0;
kobj->state_in_sysfs = 0; kobj->state_in_sysfs = 0;
kobj->state_add_uevent_sent = 0; kobj->state_add_uevent_sent = 0;
kobj->state_remove_uevent_sent = 0; kobj->state_remove_uevent_sent = 0;
@ -551,8 +548,7 @@ struct kobject * kobject_get(struct kobject * kobj)
static void kobject_cleanup(struct kobject *kobj) static void kobject_cleanup(struct kobject *kobj)
{ {
struct kobj_type *t = get_ktype(kobj); struct kobj_type *t = get_ktype(kobj);
const char *name = kobj->k_name; const char *name = kobj->name;
int name_set = kobj->state_name_set;
pr_debug("kobject: '%s' (%p): %s\n", pr_debug("kobject: '%s' (%p): %s\n",
kobject_name(kobj), kobj, __FUNCTION__); kobject_name(kobj), kobj, __FUNCTION__);
@ -583,7 +579,7 @@ static void kobject_cleanup(struct kobject *kobj)
} }
/* free name if we allocated it */ /* free name if we allocated it */
if (name_set && name) { if (name) {
pr_debug("kobject: '%s': free name\n", name); pr_debug("kobject: '%s': free name\n", name);
kfree(name); kfree(name);
} }