|
@@ -489,21 +489,24 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
|
|
|
|
|
|
rval = device_add(&nvmem->dev);
|
|
|
if (rval)
|
|
|
- goto out;
|
|
|
+ goto err_put_device;
|
|
|
|
|
|
if (config->compat) {
|
|
|
rval = nvmem_setup_compat(nvmem, config);
|
|
|
if (rval)
|
|
|
- goto out;
|
|
|
+ goto err_device_del;
|
|
|
}
|
|
|
|
|
|
if (config->cells)
|
|
|
nvmem_add_cells(nvmem, config);
|
|
|
|
|
|
return nvmem;
|
|
|
-out:
|
|
|
- ida_simple_remove(&nvmem_ida, nvmem->id);
|
|
|
- kfree(nvmem);
|
|
|
+
|
|
|
+err_device_del:
|
|
|
+ device_del(&nvmem->dev);
|
|
|
+err_put_device:
|
|
|
+ put_device(&nvmem->dev);
|
|
|
+
|
|
|
return ERR_PTR(rval);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(nvmem_register);
|