Message ID | 20220624022813.10796-1-hbh25y@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [RESEND] drm: i915: fix a possible refcount leak in intel_dp_add_mst_connector() | expand |
Nice catch! Reviewed-by: Lyude Paul <lyude@redhat.com> Will push to drm-intel-next On Fri, 2022-06-24 at 10:28 +0800, Hangyu Hua wrote: > If drm_connector_init fails, intel_connector_free will be called to take > care of proper free. So it is necessary to drop the refcount of port > before intel_connector_free. > > Fixes: 091a4f91942a ("drm/i915: Handle drm-layer errors in > intel_dp_add_mst_connector") > Signed-off-by: Hangyu Hua <hbh25y@gmail.com> > Reviewed-by: José Roberto de Souza <jose.souza@intel.com> > --- > drivers/gpu/drm/i915/display/intel_dp_mst.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c > b/drivers/gpu/drm/i915/display/intel_dp_mst.c > index 061b277e5ce7..14d2a64193b2 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > @@ -839,6 +839,7 @@ static struct drm_connector > *intel_dp_add_mst_connector(struct drm_dp_mst_topolo > ret = drm_connector_init(dev, connector, > &intel_dp_mst_connector_funcs, > DRM_MODE_CONNECTOR_DisplayPort); > if (ret) { > + drm_dp_mst_put_port_malloc(port); > intel_connector_free(intel_connector); > return NULL; > }
Ah-nevermind! Seems like someone already pushed this for you :) On Tue, 2022-06-28 at 18:55 -0400, Lyude Paul wrote: > Nice catch! > > Reviewed-by: Lyude Paul <lyude@redhat.com> > > Will push to drm-intel-next > > On Fri, 2022-06-24 at 10:28 +0800, Hangyu Hua wrote: > > If drm_connector_init fails, intel_connector_free will be called to take > > care of proper free. So it is necessary to drop the refcount of port > > before intel_connector_free. > > > > Fixes: 091a4f91942a ("drm/i915: Handle drm-layer errors in > > intel_dp_add_mst_connector") > > Signed-off-by: Hangyu Hua <hbh25y@gmail.com> > > Reviewed-by: José Roberto de Souza <jose.souza@intel.com> > > --- > > drivers/gpu/drm/i915/display/intel_dp_mst.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c > > b/drivers/gpu/drm/i915/display/intel_dp_mst.c > > index 061b277e5ce7..14d2a64193b2 100644 > > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > > @@ -839,6 +839,7 @@ static struct drm_connector > > *intel_dp_add_mst_connector(struct drm_dp_mst_topolo > > ret = drm_connector_init(dev, connector, > > &intel_dp_mst_connector_funcs, > > DRM_MODE_CONNECTOR_DisplayPort); > > if (ret) { > > + drm_dp_mst_put_port_malloc(port); > > intel_connector_free(intel_connector); > > return NULL; > > } >
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index 061b277e5ce7..14d2a64193b2 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -839,6 +839,7 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo ret = drm_connector_init(dev, connector, &intel_dp_mst_connector_funcs, DRM_MODE_CONNECTOR_DisplayPort); if (ret) { + drm_dp_mst_put_port_malloc(port); intel_connector_free(intel_connector); return NULL; }