From: Daniel Vetter <[email protected]>

[ Upstream commit d99004d7201aa653658ff2390d6e516567c96ebc ]

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 <[email protected]>
Cc: Tomeu Vizoso <[email protected]>
Cc: Emil Velikov <[email protected]>
Cc: Benjamin Gaignard <[email protected]>
Cc: Ville Syrjälä <[email protected]>
Reviewed-by: Emil Velikov <[email protected]>
Reviewed-by: Benjamin Gaignard <[email protected]>
Signed-off-by: Daniel Vetter <[email protected]>
Link: 
https://patchwork.freedesktop.org/patch/msgid/[email protected]
Signed-off-by: Sasha Levin <[email protected]>
---
 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 1a6a5b78e30f..fde298d9f510 100644
--- a/drivers/gpu/drm/drm_debugfs_crc.c
+++ b/drivers/gpu/drm/drm_debugfs_crc.c
@@ -395,7 +395,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;
        }
 
@@ -406,7 +406,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
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to