[PATCH v2 01/16] drm/panel: get/put panel reference in drm_panel_add/remove()

Maxime Ripard mripard at kernel.org
Fri Jun 20 02:10:55 PDT 2025


On Fri, Jun 20, 2025 at 10:33:53AM +0200, Luca Ceresoli wrote:
> Hello Anusha,
> 
> On Thu, 19 Jun 2025 14:15:53 -0500
> Anusha Srivatsa <asrivats at redhat.com> wrote:
> 
> > Take the panel reference and put it back as required.
> > drm_panel_add() and drm_panel_remove() add a panel to
> > the global registry and removes a panel respectively.
> > Use get() and put() helpers to keep up with refcounting.
> > 
> > Reviewed-by: Luca Ceresoli <luca.ceresoli at bootlin.com>
> > Signed-off-by: Anusha Srivatsa <asrivats at redhat.com>
> 
> This patch is good.
> 
> I'd just point out that this must be applied only after all drivers
> have been converted to the the _alloc API, otherwise with the following
> sequence:
> 
>   panel = devm_kzalloc();
>   drm_panel_init(panel);
>   drm_panel_add(panel);
>   ...
>   drm_panel_remove(panel); <-----
> 
> at the drm_panel_remove() you'd have a warning:
> 
>   refcount_t: addition on 0; use-after-free.
> 
> So, if all panel drivers are converted:

Not all panels are yet:
$ rg -l drm_panel_init -- drivers/gpu/drm/panel/ | wc -l
20

Maxime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 273 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20250620/7a9fed7c/attachment.sig>


More information about the linux-arm-kernel mailing list