drm/rockchip: dw_hdmi: cleanup drm encoder during unbind
Subsystems (4)
PATCH 1/1 drm/rockchip: dw_hdmi: cleanup drm encoder during unbind
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 <[email protected]>
--- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +2 -0
@@ -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); }
Signature · 1 line
2.25.1
Quoted 8 lines · Toby Chen
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.[...]
Applied, thanks!
[1/1] drm/rockchip: dw_hdmi: cleanup drm encoder during unbind
commit: b5af48eedcb53491c02ded55d5991e03d6da6dbf
Best regards,
Signature · 1 line
Heiko Stuebner <[email protected]>