Skip to content

Commit

Permalink
drm: Move locking into drm_debugfs_crtc_crc_add
Browse files Browse the repository at this point in the history
There's no reason any more for callers of this function to take the lock
themselves, so just move the lock to the function to avoid confusion and
bugs when more callers are contributed.

Signed-off-by: Tomeu Vizoso <[email protected]>
Reviewed-by: Emil Velikov <[email protected]>
Reviewed-by: Robert Foss <[email protected]>
Signed-off-by: Daniel Vetter <[email protected]>
Link: http://patchwork.freedesktop.org/patch/msgid/[email protected]
  • Loading branch information
tomeuv authored and danvet committed Jan 5, 2017
1 parent 88017bd commit 1aa81be
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions drivers/gpu/drm/drm_debugfs_crc.c
Original file line number Diff line number Diff line change
Expand Up @@ -325,16 +325,19 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, bool has_frame,
struct drm_crtc_crc_entry *entry;
int head, tail;

assert_spin_locked(&crc->lock);
spin_lock(&crc->lock);

/* Caller may not have noticed yet that userspace has stopped reading */
if (!crc->opened)
if (!crc->opened) {
spin_unlock(&crc->lock);
return -EINVAL;
}

head = crc->head;
tail = crc->tail;

if (CIRC_SPACE(head, tail, DRM_CRC_ENTRIES_NR) < 1) {
spin_unlock(&crc->lock);
DRM_ERROR("Overflow of CRC buffer, userspace reads too slow.\n");
return -ENOBUFS;
}
Expand All @@ -347,6 +350,8 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, bool has_frame,
head = (head + 1) & (DRM_CRC_ENTRIES_NR - 1);
crc->head = head;

spin_unlock(&crc->lock);

return 0;
}
EXPORT_SYMBOL_GPL(drm_crtc_add_crc_entry);

0 comments on commit 1aa81be

Please sign in to comment.