mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 00:22:00 +02:00
drm/bridge: panel: Prevent ERR_PTR Dereference
Commit5ea6b17027("drm/panel: Add prepare_prev_first flag to drm_panel") introduced an access to the bridge pointer in the devm_drm_panel_bridge_add_typed() function. However, due to the unusual ERR_PTR check when getting that pointer, the pointer access is done even though the pointer might be an error pointer. Rework the function for a more traditional design that will return immediately if it gets an ERR_PTR so that we never access the pointer in that case. Fixes:5ea6b17027("drm/panel: Add prepare_prev_first flag to drm_panel") Reported-by: kernel test robot <lkp@intel.com> Reported-by: Dan Carpenter <error27@gmail.com> Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com> Signed-off-by: Maxime Ripard <maxime@cerno.tech> Link: https://patchwork.freedesktop.org/patch/msgid/20230102120123.19062-1-maxime@cerno.tech Link: https://patchwork.freedesktop.org/patch/msgid/20230102120123.19062-1-maxime@cerno.tech
This commit is contained in:
parent
51342cc021
commit
8dd4e8c49e
|
|
@ -357,15 +357,16 @@ struct drm_bridge *devm_drm_panel_bridge_add_typed(struct device *dev,
|
|||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
bridge = drm_panel_bridge_add_typed(panel, connector_type);
|
||||
if (!IS_ERR(bridge)) {
|
||||
*ptr = bridge;
|
||||
devres_add(dev, ptr);
|
||||
} else {
|
||||
if (IS_ERR(bridge)) {
|
||||
devres_free(ptr);
|
||||
return bridge;
|
||||
}
|
||||
|
||||
bridge->pre_enable_prev_first = panel->prepare_prev_first;
|
||||
|
||||
*ptr = bridge;
|
||||
devres_add(dev, ptr);
|
||||
|
||||
return bridge;
|
||||
}
|
||||
EXPORT_SYMBOL(devm_drm_panel_bridge_add_typed);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user