[PATCH] staging: vc04_services: vchiq_bus: Check return value of of_dma_configure()

From: Haotian Zhang
Date: Tue Dec 02 2025 - 04:57:26 EST


vchiq_device_register() ignores the return value of of_dma_configure(),
which may return -EPROBE_DEFER when the IOMMU is not ready or other error
codes. This allows device registration to proceed with incomplete DMA
configuration.

Check of_dma_configure() return value and fail device registration
on error.

Fixes: 027e5703de6b ("staging: vc04_services: vchiq_arm: Add new bus type and device type")
Signed-off-by: Haotian Zhang <vulab@xxxxxxxxxxx>
---
.../staging/vc04_services/interface/vchiq_arm/vchiq_bus.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_bus.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_bus.c
index 41ece91ab88a..8d920a7a3777 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_bus.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_bus.c
@@ -80,7 +80,12 @@ vchiq_device_register(struct device *parent, const char *name)

device->drv_mgmt = dev_get_drvdata(parent);

- of_dma_configure(&device->dev, parent->of_node, true);
+ ret = of_dma_configure(&device->dev, parent->of_node, true);
+ if (ret) {
+ dev_err(parent, "DMA configuration failed for %s: %d\n", name, ret);
+ kfree(device);
+ return NULL;
+ }

ret = device_register(&device->dev);
if (ret) {
--
2.50.1.windows.1