ptp: ocp: handle error from nvmem_device_find
nvmem_device_find returns a valid pointer or IS_ERR().
Handle this properly.
Fixes: 0cfcdd1ebc ("ptp: ocp: add nvmem interface for accessing eeprom")
Signed-off-by: Jonathan Lemon <jonathan.lemon@gmail.com>
Link: https://lore.kernel.org/r/20220329160354.4035-1-jonathan.lemon@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
866b7a278c
commit
8f0588e80e
@@ -1214,11 +1214,10 @@ ptp_ocp_nvmem_device_get(struct ptp_ocp *bp, const void * const tag)
|
|||||||
static inline void
|
static inline void
|
||||||
ptp_ocp_nvmem_device_put(struct nvmem_device **nvmemp)
|
ptp_ocp_nvmem_device_put(struct nvmem_device **nvmemp)
|
||||||
{
|
{
|
||||||
if (*nvmemp != NULL) {
|
if (!IS_ERR_OR_NULL(*nvmemp))
|
||||||
nvmem_device_put(*nvmemp);
|
nvmem_device_put(*nvmemp);
|
||||||
*nvmemp = NULL;
|
*nvmemp = NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ptp_ocp_read_eeprom(struct ptp_ocp *bp)
|
ptp_ocp_read_eeprom(struct ptp_ocp *bp)
|
||||||
@@ -1241,13 +1240,15 @@ ptp_ocp_read_eeprom(struct ptp_ocp *bp)
|
|||||||
}
|
}
|
||||||
if (!nvmem) {
|
if (!nvmem) {
|
||||||
nvmem = ptp_ocp_nvmem_device_get(bp, tag);
|
nvmem = ptp_ocp_nvmem_device_get(bp, tag);
|
||||||
if (!nvmem)
|
if (IS_ERR(nvmem)) {
|
||||||
goto out;
|
ret = PTR_ERR(nvmem);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ret = nvmem_device_read(nvmem, map->off, map->len,
|
ret = nvmem_device_read(nvmem, map->off, map->len,
|
||||||
BP_MAP_ENTRY_ADDR(bp, map));
|
BP_MAP_ENTRY_ADDR(bp, map));
|
||||||
if (ret != map->len)
|
if (ret != map->len)
|
||||||
goto read_fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
bp->has_eeprom_data = true;
|
bp->has_eeprom_data = true;
|
||||||
@@ -1256,7 +1257,7 @@ out:
|
|||||||
ptp_ocp_nvmem_device_put(&nvmem);
|
ptp_ocp_nvmem_device_put(&nvmem);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
read_fail:
|
fail:
|
||||||
dev_err(&bp->pdev->dev, "could not read eeprom: %d\n", ret);
|
dev_err(&bp->pdev->dev, "could not read eeprom: %d\n", ret);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user