| From 695daf1a8e731a4b5b89de89a61f32a4d7ad7094 Mon Sep 17 00:00:00 2001 |
| From: Leo Liu <leo.liu@amd.com> |
| Date: Mon, 28 Apr 2014 09:40:22 -0400 |
| Subject: drm/radeon: check buffer relocation offset |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Leo Liu <leo.liu@amd.com> |
| |
| commit 695daf1a8e731a4b5b89de89a61f32a4d7ad7094 upstream. |
| |
| Signed-off-by: Leo Liu <leo.liu@amd.com> |
| Signed-off-by: Christian Kรถnig <christian.koenig@amd.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/radeon/radeon_uvd.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| --- a/drivers/gpu/drm/radeon/radeon_uvd.c |
| +++ b/drivers/gpu/drm/radeon/radeon_uvd.c |
| @@ -449,6 +449,10 @@ static int radeon_uvd_cs_reloc(struct ra |
| cmd = radeon_get_ib_value(p, p->idx) >> 1; |
| |
| if (cmd < 0x4) { |
| + if (end <= start) { |
| + DRM_ERROR("invalid reloc offset %X!\n", offset); |
| + return -EINVAL; |
| + } |
| if ((end - start) < buf_sizes[cmd]) { |
| DRM_ERROR("buffer to small (%d / %d)!\n", |
| (unsigned)(end - start), buf_sizes[cmd]); |