• Ville Syrjälä's avatar
    drm/i915: Make i915_pipe_crc_read() oops proof · 9ad6d99f
    Ville Syrjälä authored
    Currently i915_pipe_crc_read() will drop pipe_crc->lock for the entire
    duration of the copy_to_user() loop, which means it'll access
    pipe_crc->entries without any protection. If another thread sneaks in
    and frees pipe_crc->entries the code will oops.
    
    Reorganize the code to hold the lock around everything except
    copy_to_user(). After the copy the lock is reacquired and the the number
    of available entries is rechecked.
    
    Since this is a debug feature simplify the error handling a bit by
    consuming the crc entry even if copy_to_user() would fail.
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    9ad6d99f
i915_debugfs.c 116 KB