drm/i915: Handle ERESTARTSYS during page fault
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 22 Sep 2009 23:43:56 +0000 (00:43 +0100)
committerEric Anholt <eric@anholt.net>
Wed, 23 Sep 2009 01:25:32 +0000 (18:25 -0700)
commitc715089f49844260f1eeae8e3b55af9468ba1325
tree0d0b72a77c75c84ad2cf4e473fda0b31e976a47a
parentab18282d58ce67ee5cd720d99a91c1a2bbf3e693
drm/i915: Handle ERESTARTSYS during page fault

During a page fault and rebinding the buffer there exists a window for a
signal to arrive during the i915_wait_request() and trigger a
ERESTARTSYS. This used to be handled by returning SIGBUS and thereby
killing the application. Try 'cairo-perf-trace & cairo-test-suite' and
watch X go boom!

The solution as suggested by H. Peter Anvin is to simply return NOPAGE and
leave the higher layers to spot we did not fill the page and resubmit
the page fault.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: stable@kernel.org
[anholt: Mostly squash it with another commit]
drivers/gpu/drm/i915/i915_gem.c