--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
-@@ -830,21 +830,18 @@ struct nvmem_device *nvmem_register(cons
+@@ -833,6 +833,12 @@ struct nvmem_device *nvmem_register(cons
nvmem->dev.groups = nvmem_dev_groups;
#endif
++ if (nvmem->nkeepout) {
++ rval = nvmem_validate_keepouts(nvmem);
++ if (rval)
++ goto err_put_device;
++ }
++
+ if (config->compat) {
+ rval = nvmem_sysfs_setup_compat(nvmem, config);
+ if (rval)
+@@ -853,15 +859,6 @@ struct nvmem_device *nvmem_register(cons
+ if (rval)
+ goto err_remove_cells;
+
- if (nvmem->nkeepout) {
- rval = nvmem_validate_keepouts(nvmem);
- if (rval) {
-
dev_dbg(&nvmem->dev, "Registering nvmem device %s\n", config->name);
- rval = device_register(&nvmem->dev);
- if (rval)
- goto err_put_device;
-
-+ if (nvmem->nkeepout) {
-+ rval = nvmem_validate_keepouts(nvmem);
-+ if (rval)
-+ goto err_device_del;
-+ }
-+
- if (config->compat) {
- rval = nvmem_sysfs_setup_compat(nvmem, config);
- if (rval)
+ rval = device_add(&nvmem->dev);