On Wednesday, September 20, 2023 4:27 PM AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxx> wrote: > When external bridges are attached with > DRM_BRIDGE_ATTACH_NO_CONNECTOR, > the panel bridge may also get the same flag, but in the .attach() > callback for the panel bridge a device link is added only when this > flag is not present; To make things worse, the .detach() callback > tries to delete the device link unconditionally and without checking > if it was created in the first place, crashing the kernel with a NULL > pointer kernel panic upon calling panel_bridge_detach(). > > Fix that by moving the device_link_add() call before checking if the > DRM_BRIDGE_ATTACH_NO_CONNECTOR flag is present. > > Fixes: 199cf07ebd2b ("drm/bridge: panel: Add a device link between drm > device and panel device") > Signed-off-by: AngeloGioacchino Del Regno > <angelogioacchino.delregno@xxxxxxxxxxxxx> > --- > > Changes in v2: > - Added device_link_del() for (!bridge->encoder) error condition > > drivers/gpu/drm/bridge/panel.c | 17 +++++++++-------- > 1 file changed, 9 insertions(+), 8 deletions(-) Reviewed-by: Liu Ying <victor.liu@xxxxxxx>