]> www.infradead.org Git - users/dwmw2/linux.git/commit
drm: Wake up next in drm_read() chain if we are forced to putback the event
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 4 Aug 2017 08:23:28 +0000 (09:23 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 31 May 2019 13:47:35 +0000 (06:47 -0700)
commitce16889c87c2e9b5eb4d79a7072190e4ca7364d0
treeda8ddbb6a2e7e2b4e0d996503ab6a766810b6e79
parentb2a21fe258588c9c5840dfeecac268bd077162b2
drm: Wake up next in drm_read() chain if we are forced to putback the event

[ Upstream commit 60b801999c48b6c1dd04e653a38e2e613664264e ]

After an event is sent, we try to copy it into the user buffer of the
first waiter in drm_read() and if the user buffer doesn't have enough
room we put it back onto the list. However, we didn't wake up any
subsequent waiter, so that event may sit on the list until either a new
vblank event is sent or a new waiter appears. Rare, but in the worst
case may lead to a stuck process.

Testcase: igt/drm_read/short-buffer-wakeup
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170804082328.17173-1-chris@chris-wilson.co.uk
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/drm_file.c