nvmem: fix nvmem_cell_get_from_lookup()
PATCH v3 1/1 nvmem: fix nvmem_cell_get_from_lookup()
From: Bartosz Golaszewski <[email protected]>
We check if the pointer returned by __nvmem_device_get() is not NULL while we should actually check if it is not IS_ERR(nvmem). Fix it.
While we're at it: fix the next error path where we should assign an error value to cell before returning.
---
v1 -> v2:
- use ERR_CAST() instead of a direct pointer cast
v2 -> v3:
- added the Reported-by tag
drivers/nvmem/core.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/nvmem/core.c +3 -2
@@ -952,9 +952,9 @@ nvmem_cell_get_from_lookup(struct device *dev, const char *con_id) (strcmp(lookup->con_id, con_id) == 0)) {/* This is the right entry. */ nvmem =__nvmem_device_get (NULL , lookup->nvmem_name); -if (!nvmem) { +if (IS_ERR (nvmem)) {/* Provider may not be registered yet. */ - cell =ERR_PTR (-EPROBE_DEFER ); + cell =ERR_CAST (nvmem); goto out; }
@@ -962,6 +962,7 @@ nvmem_cell_get_from_lookup(struct device *dev, const char *con_id) lookup->cell_name);if (!cell) {__nvmem_device_put (nvmem); + cell =ERR_PTR (-ENOENT ); goto out; } }
Signature · 1 line
2.19.0
Quoted 10 lines · Bartosz Golaszewski
From: Bartosz Golaszewski <[email protected]>
We check if the pointer returned by
__nvmem_device_get()is not NULL while we should actually check if it is notIS_ERR(nvmem). Fix it.While we're at it: fix the next error path where we should assign an error value to cell before returning.
Signed-off-by Bartosz Golaszewski <[email protected]>Reported-by Stephen Rothwell <[email protected]>
Quoted 35 lines
---
v1 -> v2:
- useERR_CAST()instead of a direct pointer castv2 -> v3:
- added the Reported-by tagdrivers/nvmem/core.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)drivers/nvmem/core.c +3
-2@@ -952,9 +952,9 @@ nvmem_cell_get_from_lookup(struct device *dev, const char *con_id) (strcmp(lookup->con_id, con_id) == 0)) {/* This is the right entry. */ nvmem =__nvmem_device_get (NULL , lookup->nvmem_name); -if (!nvmem) { +if (IS_ERR (nvmem)) {/* Provider may not be registered yet. */ - cell =ERR_PTR (-EPROBE_DEFER ); + cell =ERR_CAST (nvmem); goto out; }@@ -962,6 +962,7 @@ nvmem_cell_get_from_lookup(struct device *dev, const char *con_id) lookup->cell_name);if (!cell) {__nvmem_device_put (nvmem); + cell =ERR_PTR (-ENOENT ); goto out; } }