]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/vblank: Increase timeout in drm_wait_one_vblank()
authorChintan Patel <chintanlike@gmail.com>
Tue, 28 Oct 2025 03:43:37 +0000 (20:43 -0700)
committerThomas Zimmermann <tzimmermann@suse.de>
Fri, 7 Nov 2025 08:48:35 +0000 (09:48 +0100)
Currently, wait_event_timeout() in drm_wait_one_vblank() uses a 100ms
timeout. Under heavy scheduling pressure or rare delayed vblank
handling, this can trigger WARNs unnecessarily.

Increase the timeout to 1000ms to reduce spurious WARNs, while still
catching genuine issues.

Reported-by: syzbot+147ba789658184f0ce04@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=147ba789658184f0ce04
Tested-by: syzbot+147ba789658184f0ce04@syzkaller.appspotmail.com
Signed-off-by: Chintan Patel <chintanlike@gmail.com>
v2:
 - Dropped unnecessary in-code comment (suggested by Thomas Zimmermann)
 - Removed else branch, only log timeout case

v3:
 - Replaced drm_dbg_kms()/manual logging with drm_err() (suggested by Ville Syrjälä)
 - Removed unnecessary curr = drm_vblank_count() (suggested by Thomas Zimmermann)
 - Fixed commit message wording ("invalid userspace calls" → "delayed vblank handling")

v4:
 - Keep the original drm_WARN() to catch genuine kernel issues
 - Increased timeout from 100ms → 1000ms to reduce spurious WARNs (suggested by Thomas Zimmermann)
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patch.msgid.link/20251028034337.6341-1-chintanlike@gmail.com
drivers/gpu/drm/drm_vblank.c

index 451ec96202266e7c345219d35b1c5983660f68aa..32d013c5c8fc60979bea129d6eed9d555f8dca17 100644 (file)
@@ -1315,7 +1315,7 @@ void drm_wait_one_vblank(struct drm_device *dev, unsigned int pipe)
 
        ret = wait_event_timeout(vblank->queue,
                                 last != drm_vblank_count(dev, pipe),
-                                msecs_to_jiffies(100));
+                                msecs_to_jiffies(1000));
 
        drm_WARN(dev, ret == 0, "vblank wait timed out on crtc %i\n", pipe);