On Mon, 2025-10-06 at 11:39 +0200, Johan Hovold wrote:
A recent change fixed device reference leaks when looking up drm platform device driver data during bind() but failed to remove a partial fix which had been added by commit 80805b62ea5b ("drm/mediatek: Fix kobject put for component sub-drivers").
This results in a reference imbalance on component bind() failures and on unbind() which could lead to a user-after-free.
Make sure to only drop the references after retrieving the driver data by effectively reverting the previous partial fix.
Note that holding a reference to a device does not prevent its driver data from going away so there is no point in keeping the reference.
We ran into the same issue in mesaci[1] and have test validated this proposed fix. It was tested with Linux 6.17.3 + this fix.
[1] https://gitlab.freedesktop.org/RickXy/mesa/-/jobs/86389548
Tested-by: Ritesh Raj Sarraf ritesh.sarraf@collabora.com
Fixes: 1f403699c40f ("drm/mediatek: Fix device/node reference count leaks in mtk_drm_get_all_drm_priv") Reported-by: Sjoerd Simons sjoerd@collabora.com Link: https://lore.kernel.org/r/20251003-mtk-drm-refcount-v1-1-3b3f2813b0db@collab... Cc: stable@vger.kernel.org Cc: Ma Ke make24@iscas.ac.cn Cc: AngeloGioacchino Del Regno angelogioacchino.delregno@collabora.com Signed-off-by: Johan Hovold johan@kernel.org