diff options
-rw-r--r-- | drivers/media/video/v4l2-ioctl.c | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/drivers/media/video/v4l2-ioctl.c b/drivers/media/video/v4l2-ioctl.c index 00c0f76b9b5d..64b4fda08dd5 100644 --- a/drivers/media/video/v4l2-ioctl.c +++ b/drivers/media/video/v4l2-ioctl.c | |||
@@ -655,8 +655,6 @@ static long __video_do_ioctl(struct file *file, | |||
655 | if (cmd == VIDIOCGMBUF) { | 655 | if (cmd == VIDIOCGMBUF) { |
656 | struct video_mbuf *p = arg; | 656 | struct video_mbuf *p = arg; |
657 | 657 | ||
658 | memset(p, 0, sizeof(*p)); | ||
659 | |||
660 | if (!ops->vidiocgmbuf) | 658 | if (!ops->vidiocgmbuf) |
661 | return ret; | 659 | return ret; |
662 | ret = ops->vidiocgmbuf(file, fh, p); | 660 | ret = ops->vidiocgmbuf(file, fh, p); |
@@ -683,7 +681,6 @@ static long __video_do_ioctl(struct file *file, | |||
683 | case VIDIOC_QUERYCAP: | 681 | case VIDIOC_QUERYCAP: |
684 | { | 682 | { |
685 | struct v4l2_capability *cap = (struct v4l2_capability *)arg; | 683 | struct v4l2_capability *cap = (struct v4l2_capability *)arg; |
686 | memset(cap, 0, sizeof(*cap)); | ||
687 | 684 | ||
688 | if (!ops->vidioc_querycap) | 685 | if (!ops->vidioc_querycap) |
689 | break; | 686 | break; |
@@ -1367,7 +1364,6 @@ static long __video_do_ioctl(struct file *file, | |||
1367 | if (!ops->vidioc_g_audio) | 1364 | if (!ops->vidioc_g_audio) |
1368 | break; | 1365 | break; |
1369 | 1366 | ||
1370 | memset(p, 0, sizeof(*p)); | ||
1371 | ret = ops->vidioc_g_audio(file, fh, p); | 1367 | ret = ops->vidioc_g_audio(file, fh, p); |
1372 | if (!ret) | 1368 | if (!ret) |
1373 | dbgarg(cmd, "index=%d, name=%s, capability=0x%x, " | 1369 | dbgarg(cmd, "index=%d, name=%s, capability=0x%x, " |
@@ -1409,7 +1405,7 @@ static long __video_do_ioctl(struct file *file, | |||
1409 | 1405 | ||
1410 | if (!ops->vidioc_g_audout) | 1406 | if (!ops->vidioc_g_audout) |
1411 | break; | 1407 | break; |
1412 | dbgarg(cmd, "Enum for index=%d\n", p->index); | 1408 | |
1413 | ret = ops->vidioc_g_audout(file, fh, p); | 1409 | ret = ops->vidioc_g_audout(file, fh, p); |
1414 | if (!ret) | 1410 | if (!ret) |
1415 | dbgarg2("index=%d, name=%s, capability=%d, " | 1411 | dbgarg2("index=%d, name=%s, capability=%d, " |
@@ -1506,8 +1502,6 @@ static long __video_do_ioctl(struct file *file, | |||
1506 | if (!ops->vidioc_g_jpegcomp) | 1502 | if (!ops->vidioc_g_jpegcomp) |
1507 | break; | 1503 | break; |
1508 | 1504 | ||
1509 | memset(p, 0, sizeof(*p)); | ||
1510 | |||
1511 | ret = ops->vidioc_g_jpegcomp(file, fh, p); | 1505 | ret = ops->vidioc_g_jpegcomp(file, fh, p); |
1512 | if (!ret) | 1506 | if (!ret) |
1513 | dbgarg(cmd, "quality=%d, APPn=%d, " | 1507 | dbgarg(cmd, "quality=%d, APPn=%d, " |
@@ -1873,13 +1867,7 @@ long video_ioctl2(struct file *file, | |||
1873 | cmd == VIDIOC_TRY_EXT_CTRLS); | 1867 | cmd == VIDIOC_TRY_EXT_CTRLS); |
1874 | 1868 | ||
1875 | /* Copy arguments into temp kernel buffer */ | 1869 | /* Copy arguments into temp kernel buffer */ |
1876 | switch (_IOC_DIR(cmd)) { | 1870 | if (_IOC_DIR(cmd) != _IOC_NONE) { |
1877 | case _IOC_NONE: | ||
1878 | parg = NULL; | ||
1879 | break; | ||
1880 | case _IOC_READ: | ||
1881 | case _IOC_WRITE: | ||
1882 | case (_IOC_WRITE | _IOC_READ): | ||
1883 | if (_IOC_SIZE(cmd) <= sizeof(sbuf)) { | 1871 | if (_IOC_SIZE(cmd) <= sizeof(sbuf)) { |
1884 | parg = sbuf; | 1872 | parg = sbuf; |
1885 | } else { | 1873 | } else { |
@@ -1900,8 +1888,10 @@ long video_ioctl2(struct file *file, | |||
1900 | /* zero out anything we don't copy from userspace */ | 1888 | /* zero out anything we don't copy from userspace */ |
1901 | if (n < _IOC_SIZE(cmd)) | 1889 | if (n < _IOC_SIZE(cmd)) |
1902 | memset((u8 *)parg + n, 0, _IOC_SIZE(cmd) - n); | 1890 | memset((u8 *)parg + n, 0, _IOC_SIZE(cmd) - n); |
1891 | } else { | ||
1892 | /* read-only ioctl */ | ||
1893 | memset(parg, 0, _IOC_SIZE(cmd)); | ||
1903 | } | 1894 | } |
1904 | break; | ||
1905 | } | 1895 | } |
1906 | 1896 | ||
1907 | if (is_ext_ctrl) { | 1897 | if (is_ext_ctrl) { |