I. was. blind.

Caught with vkms, which has some really slow crc computation function.

Fixes: 1882018a70e0 ("drm/crc-debugfs: User irqsafe spinlock in 
drm_crtc_add_crc_entry")
Cc: Rodrigo Siqueira <rodrigosiqueiram...@gmail.com>
Cc: Tomeu Vizoso <tomeu.viz...@collabora.com>
Cc: Emil Velikov <emil.veli...@collabora.com>
Cc: Benjamin Gaignard <benjamin.gaign...@linaro.org>
Cc: Ville Syrjälä <ville.syrj...@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vet...@intel.com>
---
 drivers/gpu/drm/drm_debugfs_crc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/drm_debugfs_crc.c 
b/drivers/gpu/drm/drm_debugfs_crc.c
index 7f35b5ba1924..d2f102f01515 100644
--- a/drivers/gpu/drm/drm_debugfs_crc.c
+++ b/drivers/gpu/drm/drm_debugfs_crc.c
@@ -402,7 +402,7 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, bool 
has_frame,
 
        /* Caller may not have noticed yet that userspace has stopped reading */
        if (!crc->entries) {
-               spin_unlock(&crc->lock);
+               spin_unlock_irqrestore(&crc->lock, flags);
                return -EINVAL;
        }
 
@@ -413,7 +413,7 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, bool 
has_frame,
                bool was_overflow = crc->overflow;
 
                crc->overflow = true;
-               spin_unlock(&crc->lock);
+               spin_unlock_irqrestore(&crc->lock, flags);
 
                if (!was_overflow)
                        DRM_ERROR("Overflow of CRC buffer, userspace reads too 
slow.\n");
-- 
2.20.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to