• D
    drm/i915: fix reference counting in i915_gem_create · d861e338
    Daniel Vetter 提交于
    This function is called without the dev->struct_mutex held, hence we
    need to use the _unlocked unreference variants.
    
    As soon as the object is registered userspace can sneak in here with a
    gem_close ioctl call, so the object can (and with my new evil tests
    actually does) get the final unreference in this place. The lack of
    locking then results in hilarity and some good leakage.
    
    To fix this we simply need to revert
    
    Chris Wilson <chris@chris-wilson.co.uk>
    
    v2: We need to make the trace call _before_ we drop our ref - the
    object might very well be gone by then already.
    
    v3: Just revert the original patch as suggested by Chris Wilson.
    
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
    [danvet: Remove the added white line again to tighten the return
    block, requested by Chris.]
    Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
    d861e338
i915_gem.c 117.2 KB