lkml.org 
[lkml]   [2012]   [Oct]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 45/62] drm/radeon: Dont destroy I2C Bus Rec in radeon_ext_tmds_enc_destroy().
    Date
    3.4-stable review patch.  If anyone has any objections, please let me know.

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

    From: Egbert Eich <eich@suse.de>

    commit 082918471139b07964967cfe5f70230909c82ae1 upstream.

    radeon_i2c_fini() walks thru the list of I2C bus recs rdev->i2c_bus[]
    to destroy each of them.
    radeon_ext_tmds_enc_destroy() however also has code to destroy it's
    associated I2C bus rec which has been obtained by radeon_i2c_lookup()
    and is therefore also in the i2c_bus[] list.
    This causes a double free resulting in a kernel panic when unloading
    the radeon driver.
    Removing destroy code from radeon_ext_tmds_enc_destroy() fixes this
    problem.

    agd5f: fix compiler warning

    Signed-off-by: Egbert Eich <eich@suse.de>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/gpu/drm/radeon/radeon_legacy_encoders.c | 6 +-----
    1 file changed, 1 insertion(+), 5 deletions(-)

    --- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
    +++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
    @@ -973,11 +973,7 @@ static void radeon_legacy_tmds_ext_mode_
    static void radeon_ext_tmds_enc_destroy(struct drm_encoder *encoder)
    {
    struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
    - struct radeon_encoder_ext_tmds *tmds = radeon_encoder->enc_priv;
    - if (tmds) {
    - if (tmds->i2c_bus)
    - radeon_i2c_destroy(tmds->i2c_bus);
    - }
    + /* don't destroy the i2c bus record here, this will be done in radeon_i2c_fini */
    kfree(radeon_encoder->enc_priv);
    drm_encoder_cleanup(encoder);
    kfree(radeon_encoder);



    \
     
     \ /
      Last update: 2012-10-19 07:21    [W:4.187 / U:0.268 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site