* [PATCH v2 1/2] drm/panel-edp: fix i2c adapter leak on probe failure [not found] <20260717143119.1815106-1-johan@kernel.org> @ 2026-07-17 14:31 ` Johan Hovold 2026-07-17 17:03 ` Doug Anderson 0 siblings, 1 reply; 4+ messages in thread From: Johan Hovold @ 2026-07-17 14:31 UTC (permalink / raw) To: Douglas Anderson, Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann Cc: David Airlie, Simona Vetter, dri-devel, linux-kernel, Johan Hovold, stable 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@vger.kernel.org # 5.15 Reported-by: Douglas Anderson <dianders@chromium.org> Link: https://lore.kernel.org/r/CAD=FV=VZPhzHU+Pet2m3L+Pqc7mOPfZC-f5p0OuNL79wNZPxRg@mail.gmail.com Signed-off-by: Johan Hovold <johan@kernel.org> --- 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; } else if (aux) { panel->ddc = &aux->ddc; } @@ -889,7 +901,7 @@ static int panel_edp_probe(struct device *dev, const struct panel_desc *desc, err = drm_panel_of_backlight(&panel->base); if (err) - goto err_finished_ddc_init; + return err; /* * We use runtime PM for prepare / unprepare since those power the panel @@ -936,9 +948,6 @@ static int panel_edp_probe(struct device *dev, const struct panel_desc *desc, err_finished_pm_runtime: pm_runtime_dont_use_autosuspend(dev); pm_runtime_disable(dev); -err_finished_ddc_init: - if (panel->ddc && (!panel->aux || panel->ddc != &panel->aux->ddc)) - put_device(&panel->ddc->dev); return err; } @@ -982,8 +991,6 @@ static void panel_edp_remove(struct device *dev) pm_runtime_dont_use_autosuspend(dev); pm_runtime_disable(dev); - if (panel->ddc && (!panel->aux || panel->ddc != &panel->aux->ddc)) - put_device(&panel->ddc->dev); drm_edid_free(panel->drm_edid); panel->drm_edid = NULL; -- 2.54.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2 1/2] drm/panel-edp: fix i2c adapter leak on probe failure 2026-07-17 14:31 ` [PATCH v2 1/2] drm/panel-edp: fix i2c adapter leak on probe failure Johan Hovold @ 2026-07-17 17:03 ` Doug Anderson 2026-07-20 7:46 ` Johan Hovold 0 siblings, 1 reply; 4+ messages in thread From: Doug Anderson @ 2026-07-17 17:03 UTC (permalink / raw) To: Johan Hovold Cc: Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, dri-devel, linux-kernel, stable Hi, On Fri, Jul 17, 2026 at 7:32 AM Johan Hovold <johan@kernel.org> 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@vger.kernel.org # 5.15 > Reported-by: Douglas Anderson <dianders@chromium.org> > Link: https://lore.kernel.org/r/CAD=FV=VZPhzHU+Pet2m3L+Pqc7mOPfZC-f5p0OuNL79wNZPxRg@mail.gmail.com > Signed-off-by: Johan Hovold <johan@kernel.org> > --- > 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@chromium.org> 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 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2 1/2] drm/panel-edp: fix i2c adapter leak on probe failure 2026-07-17 17:03 ` Doug Anderson @ 2026-07-20 7:46 ` Johan Hovold 2026-07-24 15:01 ` Doug Anderson 0 siblings, 1 reply; 4+ messages in thread From: Johan Hovold @ 2026-07-20 7:46 UTC (permalink / raw) To: Doug Anderson Cc: Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, dri-devel, linux-kernel, stable On Fri, Jul 17, 2026 at 10:03:42AM -0700, Doug Anderson wrote: > > @@ -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@chromium.org> > > 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. Sounds good. Thanks. Johan ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2 1/2] drm/panel-edp: fix i2c adapter leak on probe failure 2026-07-20 7:46 ` Johan Hovold @ 2026-07-24 15:01 ` Doug Anderson 0 siblings, 0 replies; 4+ messages in thread From: Doug Anderson @ 2026-07-24 15:01 UTC (permalink / raw) To: Johan Hovold Cc: Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, dri-devel, linux-kernel, stable Hi, On Mon, Jul 20, 2026 at 12:46 AM Johan Hovold <johan@kernel.org> wrote: > > On Fri, Jul 17, 2026 at 10:03:42AM -0700, Doug Anderson wrote: > > > > @@ -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@chromium.org> > > > > 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. > > Sounds good. Thanks. Pushed to drm-misc-next: [1/2] drm/panel-edp: fix i2c adapter leak on probe failure commit: e2a9e291275a74e309a21cbb1def6296a72d6aed ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-07-24 15:01 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260717143119.1815106-1-johan@kernel.org>
2026-07-17 14:31 ` [PATCH v2 1/2] drm/panel-edp: fix i2c adapter leak on probe failure Johan Hovold
2026-07-17 17:03 ` Doug Anderson
2026-07-20 7:46 ` Johan Hovold
2026-07-24 15:01 ` Doug Anderson
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox