Kay Sievers wrote: > On Tue, Apr 28, 2009 at 17:51, Yinghai Lu <yinghai@xxxxxxxxxx> wrote: > >> before device_register==>device_initialize is called, kobj->ref is still 0. >> >> will get warn from >> if (!kobj->state_initialized) > > Initialize the device before you do anything with it. And call _put() > any time to get rid of ressources, which might have been allocated > before registering. > struct sa1111_dev *dev; int ret; dev = kzalloc(sizeof(struct sa1111_dev), GFP_KERNEL); if (!dev) { ret = -ENOMEM; goto out; } dev_set_name(&dev->dev, "%4.4lx", info->offset); dev->devid = info->devid; dev->dev.parent = sachip->dev; dev->dev.bus = &sa1111_bus_type; dev->dev.release = sa1111_dev_release; dev->dev.coherent_dma_mask = sachip->dev->coherent_dma_mask; dev->res.start = sachip->phys + info->offset; dev->res.end = dev->res.start + 511; dev->res.name = dev_name(&dev->dev); dev->res.flags = IORESOURCE_MEM; dev->mapbase = sachip->base + info->offset; dev->skpcr_mask = info->skpcr_mask; memmove(dev->irq, info->irq, sizeof(dev->irq)); ret = request_resource(parent, &dev->res); if (ret) { printk("SA1111: failed to allocate resource for %s\n", dev->res.name); dev_set_name(&dev->dev, NULL); kfree(dev); goto out; } ret = device_register(&dev->dev); if (ret) { release_resource(&dev->res); put_device(&dev->dev); kfree(dev); goto out; } so you mean don't call dev_set_name before device_register and let device_register or device_add take name param? YH -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html