Several DRM drivers manually manage reserved memory lifetime by pairing of_reserved_mem_device_init() with an explicit of_reserved_mem_device_release() in the remove or unbind path. Missing the release on any error path between the two calls leaks the region for the lifetime of the driver.
devm_of_reserved_mem_device_init() was recently introduced to tie the release to the device's devres lifetime automatically. Convert the affected DRM drivers to use it. Note for drivers using the component framework (hdlcd, malidp, sun4i): the previous code called of_reserved_mem_device_release() explicitly in the component unbind callback. After conversion, the release happens at device removal (devm teardown) rather than at component unbind. For standard CMA or system heap reserved memory, this is benign. Drivers relying on custom rmem->ops with meaningful release-time side effects may need to retain an explicit release in unbind; those cases are not known to exist for the drivers converted here. Changes since v1: https://lore.kernel.org/lkml/[email protected]/ - Carried R-b tag if any. - Rebased it. Mukesh Ojha (11): drm: logicvc: Use devm_of_reserved_mem_device_init() drm: hdlcd: Use devm_of_reserved_mem_device_init() drm: pl111: Use devm_of_reserved_mem_device_init() drm: komeda: Use devm_of_reserved_mem_device_init() drm: malidp: Use devm_of_reserved_mem_device_init() drm: ingenic: Use devm_of_reserved_mem_device_init() drm: kmb: Use devm_of_reserved_mem_device_init() drm: sun4i: Use devm_of_reserved_mem_device_init() drm: xlnx: zynqmp_dpsub: Use devm_of_reserved_mem_device_init() drm: aspeed: Use devm_of_reserved_mem_device_init() drm: arcpgu: Use devm_of_reserved_mem_device_init() drivers/gpu/drm/logicvc/logicvc_drm.c | 21 ++++++++------------- drivers/gpu/drm/arm/hdlcd_drv.c | 6 +----- drivers/gpu/drm/pl111/pl111_drv.c | 4 +--- drivers/gpu/drm/arm/display/komeda/komeda_dev.c | 4 +--- drivers/gpu/drm/arm/malidp_drv.c | 4 +--- drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 13 +------------ drivers/gpu/drm/kmb/kmb_drv.c | 12 ++---------- drivers/gpu/drm/sun4i/sun4i_drv.c | 4 +--- drivers/gpu/drm/xlnx/zynqmp_dpsub.c | 4 +--- drivers/gpu/drm/aspeed/aspeed_gfx_drv.c | 2 +- drivers/gpu/drm/tiny/arcpgu.c | 2 +- 11 files changed, 14 insertions(+), 76 deletions(-) -- 2.34.1
