From: Christian König Date: Wed, 2 May 2012 13:11:14 +0000 (+0200) Subject: drm/radeon: fix a bug in the SA code X-Git-Tag: v3.6-rc1~59^2~48 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=96050bca22f4fe6c8db175e02c8530a9720e5e9b;p=platform%2Fkernel%2Flinux-exynos.git drm/radeon: fix a bug in the SA code Aligning offset can make it bigger than tmp->offset leading to an overrun bug in the following subtraction. v2: Against initial suspicions this can't happen in mainline, so no need to push it into stable. Signed-off-by: Christian König Reviewed-by: Michel Dänzer Reviewed-by: Jerome Glisse Signed-off-by: Dave Airlie --- diff --git a/drivers/gpu/drm/radeon/radeon_sa.c b/drivers/gpu/drm/radeon/radeon_sa.c index 4cce47e..8fbfe69 100644 --- a/drivers/gpu/drm/radeon/radeon_sa.c +++ b/drivers/gpu/drm/radeon/radeon_sa.c @@ -150,7 +150,7 @@ int radeon_sa_bo_new(struct radeon_device *rdev, offset = 0; list_for_each_entry(tmp, &sa_manager->sa_bo, list) { /* room before this object ? */ - if ((tmp->offset - offset) >= size) { + if (offset < tmp->offset && (tmp->offset - offset) >= size) { head = tmp->list.prev; goto out; }