Hi, On Fri, Mar 14, 2025 at 11:31:13AM +0100, Luca Ceresoli wrote: > This series improves the way DRM bridges are allocated and initialized and > makes them reference-counted. The goal of reference counting is to avoid > use-after-free by drivers which got a pointer to a bridge and keep it > stored and used even after the bridge has been deallocated. > > The overall goal is supporting Linux devices with a DRM pipeline whose > final components can be hot-plugged and hot-unplugged, including one or > more bridges. For more details see the big picture [0]. > > DRM bridge drivers will have to be adapted to the new API, which is pretty > simple for most cases. Refcounting will have to be adopted on the two > sides: all functions returning a bridge pointer and all code obtaining such > a pointer. This series has just an overview of some of those conversions, > because for now the main goal is to agree on the API. > > Series layout: > > 1. Add the new API and refcounting: > > drm/bridge: add devm_drm_bridge_alloc() > drm/bridge: add support for refcounting > > 2. get/put the reference in basic operations in the bridge core: > > drm/bridge: get/put the bridge reference in drm_bridge_add/remove() > drm/bridge: get/put the bridge reference in drm_bridge_attach/detach() > > 3. as an example of changes for bridge consumers, get a reference for the > bridge returned by drm_bridge_chain_get_first_bridge(), have it put by > all callers (all users will be covered later on separately): > > drm/bridge: add a cleanup action for scope-based drm_bridge_put() invocation > drm/bridge: get the bridge returned by drm_bridge_chain_get_first_bridge() > drm/mxsfb: put the bridge returned by drm_bridge_chain_get_first_bridge() > drm/atomic-helper: put the bridge returned by drm_bridge_chain_get_first_bridge() > drm/probe-helper: put the bridge returned by drm_bridge_chain_get_first_bridge() > > 4. convert a few bridge drivers (bridge providers) to the new API: > > drm/bridge: ti-sn65dsi83: use dynamic lifetime management > drm/bridge: samsung-dsim: use dynamic lifetime management > > This work was formerly a part of my v6 DRM bridge hotplug series[0], now > split as a standalone series with many improvements, hence the "v7" version > number. Except for one patch where I had comments, I think the series is in excellent shape. We're still missing a couple of things to close this topic though: - Converting the other bridge iterators/accessors to take / put the references - Mass converting the drivers to devm_drm_bridge_alloc - Documenting somewhere (possibly in drm_bridge_init?) that it really shouldn't be used anymore Maxime
Attachment:
signature.asc
Description: PGP signature