drm/radeon: prevent crash in the ring space allocation
authorAlex Deucher <alexander.deucher@amd.com>
Wed, 30 Jan 2013 19:24:09 +0000 (14:24 -0500)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 20 Feb 2013 03:15:23 +0000 (03:15 +0000)
commitb819a9646971e6f0bfad33a67459b23677cd5d1c
tree27a5b6dcc0f7b27e8da0244612a216d046e4bebf
parente7a2a2e32bba0121dc1e4c2006fab092f30b4e0f
drm/radeon: prevent crash in the ring space allocation

commit fd5d93a0015ce1a7db881382022b2fcdfdc61760 upstream.

If the requested number of DWs on the ring is larger than
the size of the ring itself, return an error.

In testing with large VM updates, we've seen crashes when we
try and allocate more space on the ring than the total size
of the ring without checking.

This prevents the crash but for large VM updates or bo moves
of very large buffers, we will need to break the transaction
down into multiple batches.  I have patches to use IBs for
the next kernel.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
[bwh: Backported to 3.2: use rdev->cp.ring_size instead of ring->ring_size]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/gpu/drm/radeon/radeon_ring.c