dpaa2: fix error propagation in remove path
v2 cover dpaa2: fix error propagation in remove path
This series fixes two bugs in the dpaa2/fslmc device removal path where error codes were silently discarded, making it impossible for callers to detect removal failures.
Patch 1 fixes fslmc_bus_unplug() to capture and propagate the return value of drv->remove() instead of ignoring it.
Patch 2 fixes dpaa2_qdma_remove() to return the actual error code from rte_dma_pmd_release() instead of unconditionally returning 0.
v2:
- bus/fslmc: use 'if (ret != 0)' style per DPDK coding standard
Md Shofiqul Islam (2):
bus/fslmc: fix ignored return value in fslmc_bus_unplug dma/dpaa2: fix dpaa2_qdma_remove always returning success
drivers/bus/fslmc/fslmc_bus.c | 4 +++- drivers/dma/dpaa2/dpaa2_qdma.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-)
Signature · 1 line
2.51.1
PATCH v2 1/2 bus/fslmc: fix ignored return value in fslmc_bus_unplug
fslmc_bus_unplug() called drv->remove() and discarded the return value, unconditionally clearing driver references and reporting success even when the remove callback signalled failure. As a result, callers had no way to detect or react to removal errors.
Capture the return value and propagate it to the caller. Only clear the driver references and log successful unplug when the callback returns zero.
Bugzilla ID: 1914
Cc: [email protected]
Cc: [email protected]
--- drivers/bus/fslmc/fslmc_bus.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/bus/fslmc/fslmc_bus.c +3 -1
@@ -620,7 +620,9 @@ fslmc_bus_unplug(struct rte_device *rte_dev)struct rte_dpaa2_driver *drv = dev->driver;if (drv && drv->remove) { - drv->remove (dev); +int ret = drv->remove (dev); +if (ret !=0 ) +return ret; dev->driver =NULL ; dev->device.driver =NULL ;DPAA2_BUS_INFO ("%s Un-Plugged" , dev->device.name);
Signature · 1 line
2.51.1
RE: [PATCH v2 1/2] bus/fslmc: fix ignored return value in fslmc_bus_unplug
PATCH v2 2/2 dma/dpaa2: fix dpaa2_qdma_remove always returning success
In reply to Md Shofiqul Islamdpaa2_qdma_remove() checked the return value of rte_dma_pmd_release() and logged an error on failure, but then unconditionally returned 0, hiding the failure from fslmc_bus_unplug() and any higher-level caller. A device-cleanup failure was silently swallowed.
Return the actual error code so that callers can detect and handle removal failures correctly.
Bugzilla ID: 1914
Cc: [email protected]
Cc: [email protected]
--- drivers/dma/dpaa2/dpaa2_qdma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/dma/dpaa2/dpaa2_qdma.c +1 -1
@@ -1739,7 +1739,7 @@ dpaa2_qdma_remove(struct rte_dpaa2_device *dpaa2_dev)if (ret)DPAA2_QDMA_ERR ("Device cleanup failed" ); -return 0 ; +return ret; }static struct rte_dpaa2_driver rte_dpaa2_qdma_pmd;
Signature · 1 line
2.51.1
RE: [PATCH v2 2/2] dma/dpaa2: fix dpaa2_qdma_remove always returning success
Quoted 14 lines · Md Shofiqul Islam
This series fixes two bugs in the dpaa2/fslmc device removal path where error codes were silently discarded, making it impossible for callers to detect removal failures.
Patch 1 fixes
fslmc_bus_unplug()to capture and propagate the return value ofdrv->remove()instead of ignoring it.Patch 2 fixes
dpaa2_qdma_remove()to return the actual error code fromrte_dma_pmd_release()instead of unconditionally returning 0.v2:
- bus/fslmc: use 'if (ret != 0)' style per DPDK coding standard
Quoted 7 lines
Md Shofiqul Islam (2):
bus/fslmc: fix ignored return value infslmc_bus_unplugdma/dpaa2: fixdpaa2_qdma_removealways returning successdrivers/bus/fslmc/fslmc_bus.c | 4 +++- drivers/dma/dpaa2/dpaa2_qdma.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-)
Series applied, thanks.
Signature · 1 line
David Marchand