• Maarten Lankhorst's avatar
    drm/atomic: Handle -EDEADLK with out-fences correctly · 7f5d6dac
    Maarten Lankhorst authored
    complete_crtc_signaling is freeing fence_state, but when retrying
    num_fences and fence_state are not zero'd. This caused duplicate
    fd's in the fence_state array, followed by a BUG_ON in fs/file.c
    because we reallocate freed memory, and installing over an existing
    fd, or potential other fun.
    
    Zero fence_state and num_fences correctly in the retry loop, which
    allows kms_atomic_transition to pass.
    
    Fixes: beaf5af4 ("drm/fence: add out-fences support")
    Cc: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Cc: Brian Starkey <brian.starkey@arm.com> (v10)
    Cc: Sean Paul <seanpaul@chromium.org>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: David Airlie <airlied@linux.ie>
    Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: <stable@vger.kernel.org> # v4.10+
    Testcase: kms_atomic_transitions.plane-all-modeset-transition-fencing
    (with CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y)
    Link: https://patchwork.freedesktop.org/patch/msgid/20170814100721.13340-1-maarten.lankhorst@linux.intel.com
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> #intel-gfx on irc
    7f5d6dac
drm_atomic.c 68.8 KB