summaryrefslogtreecommitdiffstats
path: root/drivers/media/video/ivtv/ivtvfb.c
diff options
context:
space:
mode:
authorIan Armstrong <ian@iarmst.demon.co.uk>2011-05-29 03:15:41 +0200
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-06-01 13:45:36 +0200
commit6600cc301d0762e3db8bd2b44d2d5fef36a4fd68 (patch)
tree4f68a7ca392e1df8999fec0ef5033008a2e35fe6 /drivers/media/video/ivtv/ivtvfb.c
parent[media] ivtvfb: use display information in info not in var for panning (diff)
downloadlinux-6600cc301d0762e3db8bd2b44d2d5fef36a4fd68.tar.xz
linux-6600cc301d0762e3db8bd2b44d2d5fef36a4fd68.zip
[media] ivtvfb: Add sanity check to ivtvfb_pan_display()
Add sanity check to ivtvfb_pan_display() to ensure only valid values are used to pan the display. Invalid values are rejected with -EINVAL Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk> Signed-off-by: Andy Walls <awalls@md.metrocast.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/ivtv/ivtvfb.c')
-rw-r--r--drivers/media/video/ivtv/ivtvfb.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/media/video/ivtv/ivtvfb.c b/drivers/media/video/ivtv/ivtvfb.c
index 2d5a97431c0a..5dec2e4012bd 100644
--- a/drivers/media/video/ivtv/ivtvfb.c
+++ b/drivers/media/video/ivtv/ivtvfb.c
@@ -836,6 +836,10 @@ static int ivtvfb_pan_display(struct fb_var_screeninfo *var, struct fb_info *inf
u32 osd_pan_index;
struct ivtv *itv = (struct ivtv *) info->par;
+ if (var->yoffset + info->var.yres > info->var.yres_virtual ||
+ var->xoffset + info->var.xres > info->var.xres_virtual)
+ return -EINVAL;
+
osd_pan_index = var->yoffset * info->fix.line_length
+ var->xoffset * info->var.bits_per_pixel / 8;
write_reg(osd_pan_index, 0x02A0C);