Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/bridge: make drm_panel_bridge_remove more robust

Make sure that bridge parameter is not NULL and can be safely
cast into a panel_bridge structure.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
Reviewed-by: Philippe Cornu <philippe.cornu@st.com>
Tested-by: Philippe Cornu <philippe.cornu@st.com>
Link: https://patchwork.freedesktop.org/patch/msgid/1506936755-23625-2-git-send-email-benjamin.gaignard@linaro.org

+9 -1
+9 -1
drivers/gpu/drm/bridge/panel.c
··· 188 188 */ 189 189 void drm_panel_bridge_remove(struct drm_bridge *bridge) 190 190 { 191 - struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); 191 + struct panel_bridge *panel_bridge; 192 + 193 + if (!bridge) 194 + return; 195 + 196 + if (bridge->funcs != &panel_bridge_bridge_funcs) 197 + return; 198 + 199 + panel_bridge = drm_bridge_to_panel_bridge(bridge); 192 200 193 201 drm_bridge_remove(bridge); 194 202 devm_kfree(panel_bridge->panel->dev, bridge);