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

drm/bridge: add warning for bridges using neither devm_drm_bridge_alloc() nor drm_bridge_add()

The correct sequence for bridge initialization is:

1. devm_drm_bridge_alloc()
2. drm_bridge_add()
3. drm_bridge_attach()

For bridges missing either 1 or 2 there are warnings in place already,
presenting an explanatory error message.

Bridges missing both 1 and 2 would still face a poorly understandable
message, as reported in a recent regression report [0]:

WARNING: [...] at [...]/lib/refcount.c:25 drm_bridge_attach+0x2c/0x1dc
...
Call trace:
...
drm_bridge_attach
...

Add a new warning to ensure an understandable message is logged in such
cases. Use the same message and warning message already in place in
drm_bridge_add().

[0] https://lore.kernel.org/all/hlf4wdopapxnh4rekl5s3kvoi6egaga3lrjfbx6r223ar3txri@3ik53xw5idyh/

Reviewed-by: Maxime Ripard <mripard@kernel.org>
Link: https://patch.msgid.link/20251028-b4-drm-bridge-alloc-add-before-attach-v3-5-bb8611acbbfb@bootlin.com
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>

+3
+3
drivers/gpu/drm/drm_bridge.c
··· 441 441 if (!encoder || !bridge) 442 442 return -EINVAL; 443 443 444 + if (!bridge->container) 445 + DRM_WARN("DRM bridge corrupted or not allocated by devm_drm_bridge_alloc()\n"); 446 + 444 447 if (list_empty(&bridge->list)) 445 448 DRM_WARN("Missing drm_bridge_add() before attach\n"); 446 449