diff options
Diffstat (limited to 'drivers/media/v4l2-core/v4l2-compat-ioctl32.c')
-rw-r--r-- | drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 19 |
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 | ||
546 | static int get_v4l2_framebuffer32(struct v4l2_framebuffer *kp, struct v4l2_framebuffer32 __user *up) | 555 | static 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 | ||