aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/aty
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2011-05-25 05:34:52 -0400
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2011-08-19 04:30:16 -0400
commit0e03f856d2383a5428cf6de516b73d2b40841ced (patch)
tree4330edd227ad550d9356300a72d59d49c07a312f /drivers/video/aty
parentb3e9c12949c1e66f3190e430ad096e53df4e1328 (diff)
radeonfb: use display information in info not in var for panning
We must not use any information in the passed var besides xoffset, yoffset and vmode as otherwise applications might abuse it. Also use the aligned fix.line_length and not the (possible) unaligned xres_virtual. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'drivers/video/aty')
-rw-r--r--drivers/video/aty/radeon_base.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/video/aty/radeon_base.c b/drivers/video/aty/radeon_base.c
index 32f8cf6200a7..150684882ef7 100644
--- a/drivers/video/aty/radeon_base.c
+++ b/drivers/video/aty/radeon_base.c
@@ -845,16 +845,16 @@ static int radeonfb_pan_display (struct fb_var_screeninfo *var,
845{ 845{
846 struct radeonfb_info *rinfo = info->par; 846 struct radeonfb_info *rinfo = info->par;
847 847
848 if ((var->xoffset + var->xres > var->xres_virtual) 848 if ((var->xoffset + info->var.xres > info->var.xres_virtual)
849 || (var->yoffset + var->yres > var->yres_virtual)) 849 || (var->yoffset + info->var.yres > info->var.yres_virtual))
850 return -EINVAL; 850 return -EINVAL;
851 851
852 if (rinfo->asleep) 852 if (rinfo->asleep)
853 return 0; 853 return 0;
854 854
855 radeon_fifo_wait(2); 855 radeon_fifo_wait(2);
856 OUTREG(CRTC_OFFSET, ((var->yoffset * var->xres_virtual + var->xoffset) 856 OUTREG(CRTC_OFFSET, (var->yoffset * info->fix.line_length +
857 * var->bits_per_pixel / 8) & ~7); 857 var->xoffset * info->var.bits_per_pixel / 8) & ~7);
858 return 0; 858 return 0;
859} 859}
860 860