From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com ([192.55.52.88]:2456 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752405AbdATPJb (ORCPT ); Fri, 20 Jan 2017 10:09:31 -0500 From: Jani Nikula To: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org Cc: Ander Conselvan de Oliveira , Chris Wilson , Daniel Vetter , Daniel Vetter , stable@vger.kernel.org Subject: Re: [PATCH 1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc() In-Reply-To: <1484922525-6131-1-git-send-email-ander.conselvan.de.oliveira@intel.com> References: <1484922525-6131-1-git-send-email-ander.conselvan.de.oliveira@intel.com> Date: Fri, 20 Jan 2017 17:09:26 +0200 Message-ID: <8760l9dazd.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: stable-owner@vger.kernel.org List-ID: On Fri, 20 Jan 2017, Ander Conselvan de Oliveira wrote: > In the path where intel_crt_detect_ddc() detects a CRT, if would return > true without freeing the edid. > > Found by coverity. > > Fixes: a2bd1f541f19 ("drm/i915: check whether we actually received an > edid in detect_ddc") > Cc: Chris Wilson > Cc: Daniel Vetter > Cc: Daniel Vetter > Cc: Jani Nikula > Cc: intel-gfx@lists.freedesktop.org > Cc: # v3.6+ > Signed-off-by: Ander Conselvan de Oliveira Reviewed-by: Jani Nikula > --- > drivers/gpu/drm/i915/intel_crt.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c > index 385e29a..2bf5aca 100644 > --- a/drivers/gpu/drm/i915/intel_crt.c > +++ b/drivers/gpu/drm/i915/intel_crt.c > @@ -499,6 +499,7 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector) > struct drm_i915_private *dev_priv = to_i915(crt->base.base.dev); > struct edid *edid; > struct i2c_adapter *i2c; > + bool ret = false; > > BUG_ON(crt->base.type != INTEL_OUTPUT_ANALOG); > > @@ -515,17 +516,17 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector) > */ > if (!is_digital) { > DRM_DEBUG_KMS("CRT detected via DDC:0x50 [EDID]\n"); > - return true; > + ret = true; > + } else { > + DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [EDID reports a digital panel]\n"); > } > - > - DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [EDID reports a digital panel]\n"); > } else { > DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [no valid EDID found]\n"); > } > > kfree(edid); > > - return false; > + return ret; > } > > static enum drm_connector_status -- Jani Nikula, Intel Open Source Technology Center