}
 
 static struct sysdev_class leds_sysclass = {
-       set_kset_name("leds"),
+       .name           = "leds",
        .shutdown       = leds_shutdown,
        .suspend        = leds_suspend,
        .resume         = leds_resume,
 #endif
 
 static struct sysdev_class timer_sysclass = {
-       set_kset_name("timer"),
+       .name           = "timer",
        .suspend        = timer_suspend,
        .resume         = timer_resume,
 };
 
 #endif
 
 static struct sysdev_class irq_class = {
-       set_kset_name("irq"),
+       .name           = "irq",
        .suspend        = irq_suspend,
        .resume         = irq_resume,
 };
 
 }
 
 static struct sysdev_class cmx270_pm_sysclass = {
-       set_kset_name("pm"),
+       .name = "pm",
        .resume = cmx270_resume,
        .suspend = cmx270_suspend,
 };
 
 }
 
 static struct sysdev_class lpd270_irq_sysclass = {
-       set_kset_name("cpld_irq"),
+       .name = "cpld_irq",
        .resume = lpd270_irq_resume,
 };
 
 
 }
 
 static struct sysdev_class lubbock_irq_sysclass = {
-       set_kset_name("cpld_irq"),
+       .name = "cpld_irq",
        .resume = lubbock_irq_resume,
 };
 
 
 }
 
 static struct sysdev_class mainstone_irq_sysclass = {
-       set_kset_name("cpld_irq"),
+       .name = "cpld_irq",
        .resume = mainstone_irq_resume,
 };
 
 
 }
 
 struct sysdev_class s3c2410_sysclass = {
-       set_kset_name("s3c2410-core"),
+       .name = "s3c2410-core",
 };
 
 static struct sys_device s3c2410_sysdev = {
 
 */
 
 struct sysdev_class s3c2412_sysclass = {
-       set_kset_name("s3c2412-core"),
+       .name = "s3c2412-core",
 };
 
 static int __init s3c2412_core_init(void)
 
 #endif
 
 static struct sysdev_class osiris_pm_sysclass = {
-       set_kset_name("mach-osiris"),
+       .name           = "mach-osiris",
        .suspend        = osiris_pm_suspend,
        .resume         = osiris_pm_resume,
 };
 
 };
 
 struct sysdev_class s3c2443_sysclass = {
-       set_kset_name("s3c2443-core"),
+       .name = "s3c2443-core",
 };
 
 static struct sys_device s3c2443_sysdev = {
 
 }
 
 static struct sysdev_class sa1100irq_sysclass = {
-       set_kset_name("sa11x0-irq"),
+       .name           = "sa11x0-irq",
        .suspend        = sa1100irq_suspend,
        .resume         = sa1100irq_resume,
 };
 
 }
 
 static struct sysdev_class oprofile_sysclass = {
-       set_kset_name("oprofile"),
+       .name           = "oprofile",
        .resume         = op_arm_resume,
        .suspend        = op_arm_suspend,
 };
 
 }
 
 static struct sysdev_class omap_gpio_sysclass = {
-       set_kset_name("gpio"),
+       .name           = "gpio",
        .suspend        = omap_gpio_suspend,
        .resume         = omap_gpio_resume,
 };
 
 #endif /* CONFIG_PM */
 
 struct sysdev_class dma_sysclass = {
-       set_kset_name("s3c24xx-dma"),
+       .name           = "s3c24xx-dma",
        .suspend        = s3c2410_dma_suspend,
        .resume         = s3c2410_dma_resume,
 };
 
 /* Since the S3C2442 and S3C2440 share  items, put both sysclasses here */
 
 struct sysdev_class s3c2440_sysclass = {
-       set_kset_name("s3c2440-core"),
+       .name           = "s3c2440-core",
        .suspend        = s3c244x_suspend,
        .resume         = s3c244x_resume
 };
 
 struct sysdev_class s3c2442_sysclass = {
-       set_kset_name("s3c2442-core"),
+       .name           = "s3c2442-core",
        .suspend        = s3c244x_suspend,
        .resume         = s3c244x_resume
 };
 
 }
 
 static struct sysdev_class timer_class = {
-       set_kset_name("timer"),
+       .name = "timer",
 };
 
 static struct sys_device timer_device = {
 
 }
 
 static struct sysdev_class i8259_sysdev_class = {
-       set_kset_name("i8259"),
+       .name = "i8259",
        .resume = i8259A_resume,
        .shutdown = i8259A_shutdown,
 };
 
 }
 
 static struct sysdev_class spu_sysdev_class = {
-       set_kset_name("spu"),
+       .name = "spu",
        .shutdown = spu_shutdown,
 };
 
 
 #endif /* CONFIG_PM && CONFIG_PPC32 */
 
 static struct sysdev_class pmacpic_sysclass = {
-       set_kset_name("pmac_pic"),
+       .name = "pmac_pic",
 };
 
 static struct sys_device device_pmacpic = {
 
 }
 
 static struct sysdev_class ipic_sysclass = {
-       set_kset_name("ipic"),
+       .name = "ipic",
 };
 
 static struct sys_device device_ipic = {
 
        .resume = mpic_resume,
        .suspend = mpic_suspend,
 #endif
-       set_kset_name("mpic"),
+       .name = "mpic",
 };
 
 static int mpic_init_sys(void)
 
 }
 
 static struct sysdev_class qe_ic_sysclass = {
-       set_kset_name("qe_ic"),
+       .name = "qe_ic",
 };
 
 static struct sys_device device_qe_ic = {
 
 }
 
 static struct sysdev_class ipic_sysclass = {
-       set_kset_name("ipic"),
+       .name = "ipic",
 };
 
 static struct sys_device device_ipic = {
 
 #endif /* CONFIG_PM */
 
 static struct sysdev_class openpic_sysclass = {
-       set_kset_name("openpic"),
+       .name = "openpic",
 };
 
 static struct sys_device device_openpic = {
 
 
 /* HACK ALERT */
 static struct sysdev_class openpic2_sysclass = {
-       set_kset_name("openpic2"),
+       .name = "openpic2",
 };
 
 static struct sys_device device_openpic2 = {
 
  * Sysfs interface functions
  */
 static struct sysdev_class etr_sysclass = {
-       set_kset_name("etr")
+       .name   = "etr",
 };
 
 static struct sys_device etr_port0_dev = {
 
 #include <asm/dma.h>
 
 static struct sysdev_class dma_sysclass = {
-       set_kset_name("dma"),
+       .name = "dma",
 };
 EXPORT_SYMBOL(dma_sysclass);
 
 
 #endif
 
 static struct sysdev_class timer_sysclass = {
-       set_kset_name("timer"),
+       .name    = "timer",
        .suspend = timer_suspend,
        .resume  = timer_resume,
 };
 
  */
 
 static struct sysdev_class lapic_sysclass = {
-       set_kset_name("lapic"),
+       .name           = "lapic",
        .resume         = lapic_resume,
        .suspend        = lapic_suspend,
 };
 
 }
 
 static struct sysdev_class lapic_sysclass = {
-       set_kset_name("lapic"),
+       .name           = "lapic",
        .resume         = lapic_resume,
        .suspend        = lapic_suspend,
 };
 
 
 static struct sysdev_class mce_sysclass = {
        .resume = mce_resume,
-       set_kset_name("machinecheck"),
+       .name = "machinecheck",
 };
 
 DEFINE_PER_CPU(struct sys_device, device_mce);
 
 }
 
 static struct sysdev_class i8237_sysdev_class = {
-       set_kset_name("i8237"),
+       .name = "i8237",
        .suspend = i8237A_suspend,
        .resume = i8237A_resume,
 };
 
 }
 
 static struct sysdev_class i8259_sysdev_class = {
-       set_kset_name("i8259"),
+       .name = "i8259",
        .suspend = i8259A_suspend,
        .resume = i8259A_resume,
        .shutdown = i8259A_shutdown,
 
 }
 
 static struct sysdev_class i8259_sysdev_class = {
-       set_kset_name("i8259"),
+       .name = "i8259",
        .suspend = i8259A_suspend,
        .resume = i8259A_resume,
        .shutdown = i8259A_shutdown,
 
 }
 
 static struct sysdev_class ioapic_sysdev_class = {
-       set_kset_name("ioapic"),
+       .name = "ioapic",
        .suspend = ioapic_suspend,
        .resume = ioapic_resume,
 };
 
 }
 
 static struct sysdev_class ioapic_sysdev_class = {
-       set_kset_name("ioapic"),
+       .name = "ioapic",
        .suspend = ioapic_suspend,
        .resume = ioapic_resume,
 };
 
 
 
 static struct sysdev_class nmi_sysclass = {
-       set_kset_name("lapic_nmi"),
+       .name           = "lapic_nmi",
        .resume         = lapic_nmi_resume,
        .suspend        = lapic_nmi_suspend,
 };
 
 }
 
 static struct sysdev_class nmi_sysclass = {
-       set_kset_name("lapic_nmi"),
+       .name           = "lapic_nmi",
        .resume         = lapic_nmi_resume,
        .suspend        = lapic_nmi_suspend,
 };
 
 
 
 static struct sysdev_class oprofile_sysclass = {
-       set_kset_name("oprofile"),
+       .name           = "oprofile",
        .resume         = nmi_resume,
        .suspend        = nmi_suspend,
 };
 
 
 /* FIXME: we will remove this interface after all drivers call pci_disable_device */
 static struct sysdev_class irqrouter_sysdev_class = {
-       set_kset_name("irqrouter"),
+       .name = "irqrouter",
        .resume = irqrouter_resume,
 };
 
 
  * entirely soon.
  */
 static struct kset class_obj_subsys = {
-       .kobj = { .k_name = "class_obj", },
        .uevent_ops = &class_uevent_ops,
 };
 
        /* ick, this is ugly, the things we go through to keep from showing up
         * in sysfs... */
        kset_init(&class_obj_subsys);
+       kobject_set_name(&class_obj_subsys.kobj, "class_obj");
        if (!class_obj_subsys.kobj.parent)
                class_obj_subsys.kobj.parent = &class_obj_subsys.kobj;
        return 0;
 
 #include "base.h"
 
 struct sysdev_class cpu_sysdev_class = {
-       set_kset_name("cpu"),
+       .name = "cpu",
 };
 EXPORT_SYMBOL(cpu_sysdev_class);
 
 
 #define MEMORY_CLASS_NAME      "memory"
 
 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)
 
 #include <linux/device.h>
 
 static struct sysdev_class node_class = {
-       set_kset_name("node"),
+       .name = "node",
 };
 
 
 
        cls->kset.kobj.parent = &system_kset->kobj;
        cls->kset.kobj.ktype = &ktype_sysdev_class;
        cls->kset.kobj.kset = system_kset;
+       kobject_set_name(&cls->kset.kobj, cls->name);
        return kset_register(&cls->kset);
 }
 
 
  *     need to export to other files in this modules
  */
 static struct sysdev_class edac_class = {
-       set_kset_name("edac"),
+       .name = "edac",
 };
 static int edac_class_valid;
 
 
 }
 
 static struct sysdev_class kvm_sysdev_class = {
-       set_kset_name("kvm"),
+       .name = "kvm",
        .suspend = kvm_suspend,
        .resume = kvm_resume,
 };
 
 #endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
 
 static struct sysdev_class pmu_sysclass = {
-       set_kset_name("pmu"),
+       .name = "pmu",
 };
 
 static struct sys_device device_pmu = {
 
        res = sas_phy_reset(phy, 1);
        if (res)
                SAS_DPRINTK("Bus reset of %s failed 0x%x\n",
-                           phy->dev.kobj.k_name,
+                           kobject_name(&phy->dev.kobj),
                            res);
        if (res == TMF_RESP_FUNC_SUCC || res == TMF_RESP_FUNC_COMPLETE)
                return SUCCESS;
 
 };
 
 struct kobject {
-       const char              * k_name;
+       const char              *name;
        struct kref             kref;
        struct list_head        entry;
        struct kobject          * parent;
        struct kobj_type        * ktype;
        struct sysfs_dirent     * sd;
        unsigned int state_initialized:1;
-       unsigned int state_name_set:1;
        unsigned int state_in_sysfs:1;
        unsigned int state_add_uevent_sent:1;
        unsigned int state_remove_uevent_sent:1;
 
 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 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 */
 extern struct kobject *kernel_kobj;
 /* The global /sys/hypervisor/ kobject for people to chain off of */
 
 struct sys_device;
 
 struct sysdev_class {
+       const char *name;
        struct list_head        drivers;
 
        /* Default operations for these types of devices */
 
 static SYSDEV_ATTR(command, 0600, NULL, sysfs_test_command);
 
 static struct sysdev_class rttest_sysclass = {
-       set_kset_name("rttest"),
+       .name = "rttest",
 };
 
 static int init_test_thread(int id)
 
                   sysfs_show_available_clocksources, NULL);
 
 static struct sysdev_class clocksource_sysclass = {
-       set_kset_name("clocksource"),
+       .name = "clocksource",
 };
 
 static struct sys_device device_clocksource = {
 
 
 /* sysfs resume/suspend bits for timekeeping */
 static struct sysdev_class timekeeping_sysclass = {
+       .name           = "timekeeping",
        .resume         = timekeeping_resume,
        .suspend        = timekeeping_suspend,
-       set_kset_name("timekeeping"),
 };
 
 static struct sys_device device_timer = {
 
        if (!kobj)
                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 "
                         "name!\n", kobj);
                WARN_ON(1);
        if (!name)
                return -ENOMEM;
 
-
        /* Free the old name, if necessary. */
-       kfree(kobj->k_name);
+       kfree(kobj->name);
 
        /* Now, set the new name */
-       kobj->k_name = name;
-       kobj->state_name_set = 1;
+       kobj->name = name;
 
        return 0;
 }
        kref_init(&kobj->kref);
        INIT_LIST_HEAD(&kobj->entry);
        kobj->ktype = ktype;
-       kobj->state_name_set = 0;
        kobj->state_in_sysfs = 0;
        kobj->state_add_uevent_sent = 0;
        kobj->state_remove_uevent_sent = 0;
 static void kobject_cleanup(struct kobject *kobj)
 {
        struct kobj_type *t = get_ktype(kobj);
-       const char *name = kobj->k_name;
-       int name_set = kobj->state_name_set;
+       const char *name = kobj->name;
 
        pr_debug("kobject: '%s' (%p): %s\n",
                 kobject_name(kobj), kobj, __FUNCTION__);
        }
 
        /* free name if we allocated it */
-       if (name_set && name) {
+       if (name) {
                pr_debug("kobject: '%s': free name\n", name);
                kfree(name);
        }