]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
drm/bridge: Fix refcount shown via debugfs for encoder_bridges_show()
authorLiu Ying <victor.liu@nxp.com>
Wed, 18 Mar 2026 05:26:05 +0000 (13:26 +0800)
committerLuca Ceresoli <luca.ceresoli@bootlin.com>
Thu, 26 Mar 2026 10:25:03 +0000 (11:25 +0100)
commitf078634c184a9b5ccaa056e8b8d6cd32f7bff1b6
tree06fee798f7970cca88550e8f6516a2924f7e157b
parent87a70013be7d1b96e7e160aea6dad4564b459868
drm/bridge: Fix refcount shown via debugfs for encoder_bridges_show()

A typical bridge refcount value is 3 after a bridge chain is formed:
- devm_drm_bridge_alloc() initializes the refcount value to be 1.
- drm_bridge_add() gets an additional reference hence 2.
- drm_bridge_attach() gets the third reference hence 3.

This typical refcount value aligns with allbridges_show()'s behaviour.
However, since encoder_bridges_show() uses
drm_for_each_bridge_in_chain_scoped() to automatically get/put the
bridge reference while iterating, a bogus reference is accidentally
got when showing the wrong typical refcount value as 4 to users via
debugfs.  Fix this by caching the refcount value returned from
kref_read() while iterating and explicitly decreasing the cached
refcount value by 1 before showing it to users.

Fixes: bd57048e4576 ("drm/bridge: use drm_for_each_bridge_in_chain_scoped()")
Signed-off-by: Liu Ying <victor.liu@nxp.com>
Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Link: https://patch.msgid.link/20260318-drm-misc-next-2026-03-05-fix-encoder-bridges-refcount-v3-1-147fea581279@nxp.com
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
drivers/gpu/drm/drm_bridge.c