aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/v4l2-core/v4l2-compat-ioctl32.c')
-rw-r--r--drivers/media/v4l2-core/v4l2-compat-ioctl32.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
index 7e2411c36419..cca6c2f76b3a 100644
--- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
+++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
@@ -540,7 +540,16 @@ struct v4l2_framebuffer32 {
540 __u32 capability; 540 __u32 capability;
541 __u32 flags; 541 __u32 flags;
542 compat_caddr_t base; 542 compat_caddr_t base;
543 struct v4l2_pix_format fmt; 543 struct {
544 __u32 width;
545 __u32 height;
546 __u32 pixelformat;
547 __u32 field;
548 __u32 bytesperline;
549 __u32 sizeimage;
550 __u32 colorspace;
551 __u32 priv;
552 } fmt;
544}; 553};
545 554
546static int get_v4l2_framebuffer32(struct v4l2_framebuffer *kp, struct v4l2_framebuffer32 __user *up) 555static int get_v4l2_framebuffer32(struct v4l2_framebuffer *kp, struct v4l2_framebuffer32 __user *up)
@@ -550,10 +559,10 @@ static int get_v4l2_framebuffer32(struct v4l2_framebuffer *kp, struct v4l2_frame
550 if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_framebuffer32)) || 559 if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_framebuffer32)) ||
551 get_user(tmp, &up->base) || 560 get_user(tmp, &up->base) ||
552 get_user(kp->capability, &up->capability) || 561 get_user(kp->capability, &up->capability) ||
553 get_user(kp->flags, &up->flags)) 562 get_user(kp->flags, &up->flags) ||
563 copy_from_user(&kp->fmt, &up->fmt, sizeof(up->fmt)))
554 return -EFAULT; 564 return -EFAULT;
555 kp->base = compat_ptr(tmp); 565 kp->base = compat_ptr(tmp);
556 get_v4l2_pix_format(&kp->fmt, &up->fmt);
557 return 0; 566 return 0;
558} 567}
559 568
@@ -564,9 +573,9 @@ static int put_v4l2_framebuffer32(struct v4l2_framebuffer *kp, struct v4l2_frame
564 if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_framebuffer32)) || 573 if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_framebuffer32)) ||
565 put_user(tmp, &up->base) || 574 put_user(tmp, &up->base) ||
566 put_user(kp->capability, &up->capability) || 575 put_user(kp->capability, &up->capability) ||
567 put_user(kp->flags, &up->flags)) 576 put_user(kp->flags, &up->flags) ||
577 copy_to_user(&up->fmt, &kp->fmt, sizeof(up->fmt)))
568 return -EFAULT; 578 return -EFAULT;
569 put_v4l2_pix_format(&kp->fmt, &up->fmt);
570 return 0; 579 return 0;
571} 580}
572 581