drm: Move locking into drm_debugfs_crtc_crc_add
authorTomeu Vizoso <tomeu.vizoso@collabora.com>
Mon, 2 Jan 2017 12:59:09 +0000 (13:59 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 5 Jan 2017 08:53:06 +0000 (09:53 +0100)
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 <tomeu.vizoso@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Robert Foss <robert.foss@collabora.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20170102125912.22305-2-tomeu.vizoso@collabora.com
drivers/gpu/drm/drm_debugfs_crc.c

index 00e771fb7df24b85f0c7b2cef6c8d744da923bbd..68b171af237b119bcecb7b17c5250763b20255f3 100644 (file)
@@ -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;
        }
@@ -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);