Messages in this thread Patch in this message | | | From | Toby Chen <> | Subject | [PATCH] drm/rockchip: dw_hdmi: cleanup drm encoder during unbind | Date | Thu, 16 Mar 2023 17:51:26 -0700 |
| |
This fixes a use-after-free crash during rmmod.
The DRM encoder is embedded inside the larger rockchip_hdmi, which is allocated with the component. The component memory gets freed before the main drm device is destroyed. Fix it by running encoder cleanup before tearing down its container.
Signed-off-by: Toby Chen <tobyc@nvidia.com> --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c index 2f4b8f64cbad..8aa88e6c9e5a 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -642,6 +642,8 @@ static void dw_hdmi_rockchip_unbind(struct device *dev, struct device *master, dw_hdmi_unbind(hdmi->hdmi); clk_disable_unprepare(hdmi->ref_clk); + drm_encoder_cleanup(&hdmi->encoder.encoder); + regulator_disable(hdmi->avdd_1v8); regulator_disable(hdmi->avdd_0v9); } -- 2.25.1
| |