Switch to devm_of_reserved_mem_device_init() so the reserved memory region is released automatically on probe failure or device unbind. Remove the three explicit of_reserved_mem_device_release() calls in the setup_fail error path, the bind error path, and hdlcd_drm_unbind().
Signed-off-by: Mukesh Ojha <[email protected]> --- drivers/gpu/drm/arm/hdlcd_drv.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c index 81d45f2dd6a7..67466fd441d5 100644 --- a/drivers/gpu/drm/arm/hdlcd_drv.c +++ b/drivers/gpu/drm/arm/hdlcd_drv.c @@ -134,7 +134,7 @@ static int hdlcd_load(struct drm_device *drm, unsigned long flags) version & HDLCD_VERSION_MINOR_MASK); /* Get the optional framebuffer memory resource */ - ret = of_reserved_mem_device_init(drm->dev); + ret = devm_of_reserved_mem_device_init(drm->dev); if (ret && ret != -ENODEV) return ret; @@ -164,8 +164,6 @@ static int hdlcd_load(struct drm_device *drm, unsigned long flags) irq_fail: drm_crtc_cleanup(&hdlcd->crtc); setup_fail: - of_reserved_mem_device_release(drm->dev); - return ret; } @@ -316,7 +314,6 @@ static int hdlcd_drm_bind(struct device *dev) of_node_put(hdlcd->crtc.port); hdlcd->crtc.port = NULL; hdlcd_irq_uninstall(hdlcd); - of_reserved_mem_device_release(drm->dev); err_free: dev_set_drvdata(dev, NULL); return ret; @@ -338,7 +335,6 @@ static void hdlcd_drm_unbind(struct device *dev) pm_runtime_put(dev); if (pm_runtime_enabled(dev)) pm_runtime_disable(dev); - of_reserved_mem_device_release(dev); dev_set_drvdata(dev, NULL); } -- 2.53.0

