lkml.org 
[lkml]   [2017]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 260/370] drm/i915: Don't leak edid in intel_crt_detect_ddc()
    3.16.42-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>

    commit c34f078675f505c4437919bb1897b1351f16a050 upstream.

    In the path where intel_crt_detect_ddc() detects a CRT, if would return
    true without freeing the edid.

    Fixes: a2bd1f541f19 ("drm/i915: check whether we actually received an edid in detect_ddc")
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Daniel Vetter <daniel.vetter@intel.com>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: intel-gfx@lists.freedesktop.org
    Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1484922525-6131-1-git-send-email-ander.conselvan.de.oliveira@intel.com
    (cherry picked from commit c96b63a6a7ac4bd670ec2e663793a9a31418b790)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    drivers/gpu/drm/i915/intel_crt.c | 9 +++++----
    1 file changed, 5 insertions(+), 4 deletions(-)

    --- a/drivers/gpu/drm/i915/intel_crt.c
    +++ b/drivers/gpu/drm/i915/intel_crt.c
    @@ -477,6 +477,7 @@ static bool intel_crt_detect_ddc(struct
    struct drm_i915_private *dev_priv = crt->base.base.dev->dev_private;
    struct edid *edid;
    struct i2c_adapter *i2c;
    + bool ret = false;

    BUG_ON(crt->base.type != INTEL_OUTPUT_ANALOG);

    @@ -493,17 +494,17 @@ static bool intel_crt_detect_ddc(struct
    */
    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
    \
     
     \ /
      Last update: 2017-03-10 14:47    [W:4.072 / U:0.236 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site