Re: [PATCH v2 1/2] drm/panel-edp: fix i2c adapter leak on probe failure
From: Doug Anderson
Date: Fri Jul 17 2026 - 13:04:03 EST
Hi,
On Fri, Jul 17, 2026 at 7:32 AM Johan Hovold <johan@xxxxxxxxxx> wrote:
>
> Make sure to drop the i2c adapter reference on probe failure (e.g.
> probe deferral) and on driver unbind also if a devicetree redundantly
> uses the 'ddc-i2c-bus' property to point to the aux ddc bus.
>
> Fixes: cc5a3fc041f0 ("drm/panel: panel-simple: Stash DP AUX bus; allow using it for DDC")
> Cc: stable@xxxxxxxxxxxxxxx # 5.15
> Reported-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
> Link: https://lore.kernel.org/r/CAD=FV=VZPhzHU+Pet2m3L+Pqc7mOPfZC-f5p0OuNL79wNZPxRg@xxxxxxxxxxxxxx
> Signed-off-by: Johan Hovold <johan@xxxxxxxxxx>
> ---
> drivers/gpu/drm/panel/panel-edp.c | 19 +++++++++++++------
> 1 file changed, 13 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c
> index aa27d6cd932e..ac815729aa83 100644
> --- a/drivers/gpu/drm/panel/panel-edp.c
> +++ b/drivers/gpu/drm/panel/panel-edp.c
> @@ -831,6 +831,13 @@ static int generic_edp_panel_probe(struct device *dev, struct panel_edp *panel)
> return 0;
> }
>
> +static void panel_edp_put_adapter(void *_adap)
> +{
> + struct i2c_adapter *adap = _adap;
> +
> + put_device(&adap->dev);
> +}
> +
> static int panel_edp_probe(struct device *dev, const struct panel_desc *desc,
> struct drm_dp_aux *aux)
> {
> @@ -878,6 +885,11 @@ static int panel_edp_probe(struct device *dev, const struct panel_desc *desc,
>
> if (!panel->ddc)
> return -EPROBE_DEFER;
> +
> + err = devm_add_action_or_reset(dev, panel_edp_put_adapter,
> + panel->ddc);
> + if (err)
> + return err;
Yeah, devm makes this so much nicer. Thanks for fixing!
Reviewed-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
I'll plan to apply this, probably to drm-misc-next next week. Unless
someone objects, I won't land it -fixes because it's such a corner
case.
-Doug