• Daniel Vetter's avatar
    drm: Fixup racy refcounting in plane_force_disable · aa8c3400
    Daniel Vetter authored
    [ Upstream commit 8218c3f4 ]
    
    Originally it was impossible to be dropping the last refcount in this
    function since there was always one around still from the idr. But in
    
    commit 83f45fc3
    Author: Daniel Vetter <daniel.vetter@ffwll.ch>
    Date:   Wed Aug 6 09:10:18 2014 +0200
    
        drm: Don't grab an fb reference for the idr
    
    we've switched to weak references, broke that assumption but forgot to
    fix it up.
    
    Since we still force-disable planes it's only possible to hit this
    when racing multiple rmfb with fbdev restoring or similar evil things.
    As long as userspace is nice it's impossible to hit the BUG_ON.
    
    But the BUG_ON would most likely be hit from fbdev code, which usually
    invovles the console_lock besides all modeset locks. So very likely
    we'd never get the bug reports if this was hit in the wild, hence
    better be safe than sorry and backport.
    
    Spotted by Matt Roper while reviewing other patches.
    
    [airlied: pull this back into 4.0 - the oops happens there]
    
    Cc: stable@vger.kernel.org
    Cc: Matt Roper <matthew.d.roper@intel.com>
    Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
    aa8c3400
drm_crtc.c 138 KB