drm/nouveau/tmr: fix corruption of the pending list when rescheduling an alarm
authorBen Skeggs <bskeggs@redhat.com>
Thu, 11 May 2017 07:03:05 +0000 (17:03 +1000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 May 2017 12:30:10 +0000 (14:30 +0200)
commit5e07724c28f4e06fe42dd5b58bb6f9dd56510567
tree4fb3ed207835055bca9bbb1e4e7ebc0b5bc0f7db
parent27f82df2f02688c51d2c1d9f624cc0c5b8a62661
drm/nouveau/tmr: fix corruption of the pending list when rescheduling an alarm

commit 9fc64667ee48c9a25e7dca1a6bcb6906fec5bcc5 upstream.

At least therm/fantog "attempts" to work around this issue, which could
lead to corruption of the pending alarm list.

Fix it properly by not updating the timestamp without the lock held, or
trying to add an already pending alarm to the pending alarm list....

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/nouveau/nvkm/subdev/timer/base.c