Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'media/v5.0-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

Pull media fixes from Mauro Carvalho Chehab:

- a regression fix at v4l2 core, with affects multi-plane streams

- a fix at vim2m driver

* tag 'media/v5.0-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
media: vim2m: only cancel work if it is for right context
media: v4l: ioctl: Validate num_planes for debug messages
media: v4l: ioctl: Validate num_planes before using it
media: v4l2-ioctl: Clear only per-plane reserved fields

+22 -6
+3 -1
drivers/media/platform/vim2m.c
··· 807 807 struct vb2_v4l2_buffer *vbuf; 808 808 unsigned long flags; 809 809 810 - cancel_delayed_work_sync(&dev->work_run); 810 + if (v4l2_m2m_get_curr_priv(dev->m2m_dev) == ctx) 811 + cancel_delayed_work_sync(&dev->work_run); 812 + 811 813 for (;;) { 812 814 if (V4L2_TYPE_IS_OUTPUT(q->type)) 813 815 vbuf = v4l2_m2m_src_buf_remove(ctx->fh.m2m_ctx);
+19 -5
drivers/media/v4l2-core/v4l2-ioctl.c
··· 287 287 const struct v4l2_window *win; 288 288 const struct v4l2_sdr_format *sdr; 289 289 const struct v4l2_meta_format *meta; 290 + u32 planes; 290 291 unsigned i; 291 292 292 293 pr_cont("type=%s", prt_names(p->type, v4l2_type_names)); ··· 318 317 prt_names(mp->field, v4l2_field_names), 319 318 mp->colorspace, mp->num_planes, mp->flags, 320 319 mp->ycbcr_enc, mp->quantization, mp->xfer_func); 321 - for (i = 0; i < mp->num_planes; i++) 320 + planes = min_t(u32, mp->num_planes, VIDEO_MAX_PLANES); 321 + for (i = 0; i < planes; i++) 322 322 printk(KERN_DEBUG "plane %u: bytesperline=%u sizeimage=%u\n", i, 323 323 mp->plane_fmt[i].bytesperline, 324 324 mp->plane_fmt[i].sizeimage); ··· 1553 1551 if (unlikely(!ops->vidioc_s_fmt_vid_cap_mplane)) 1554 1552 break; 1555 1553 CLEAR_AFTER_FIELD(p, fmt.pix_mp.xfer_func); 1554 + if (p->fmt.pix_mp.num_planes > VIDEO_MAX_PLANES) 1555 + break; 1556 1556 for (i = 0; i < p->fmt.pix_mp.num_planes; i++) 1557 - CLEAR_AFTER_FIELD(p, fmt.pix_mp.plane_fmt[i].bytesperline); 1557 + CLEAR_AFTER_FIELD(&p->fmt.pix_mp.plane_fmt[i], 1558 + bytesperline); 1558 1559 return ops->vidioc_s_fmt_vid_cap_mplane(file, fh, arg); 1559 1560 case V4L2_BUF_TYPE_VIDEO_OVERLAY: 1560 1561 if (unlikely(!ops->vidioc_s_fmt_vid_overlay)) ··· 1586 1581 if (unlikely(!ops->vidioc_s_fmt_vid_out_mplane)) 1587 1582 break; 1588 1583 CLEAR_AFTER_FIELD(p, fmt.pix_mp.xfer_func); 1584 + if (p->fmt.pix_mp.num_planes > VIDEO_MAX_PLANES) 1585 + break; 1589 1586 for (i = 0; i < p->fmt.pix_mp.num_planes; i++) 1590 - CLEAR_AFTER_FIELD(p, fmt.pix_mp.plane_fmt[i].bytesperline); 1587 + CLEAR_AFTER_FIELD(&p->fmt.pix_mp.plane_fmt[i], 1588 + bytesperline); 1591 1589 return ops->vidioc_s_fmt_vid_out_mplane(file, fh, arg); 1592 1590 case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY: 1593 1591 if (unlikely(!ops->vidioc_s_fmt_vid_out_overlay)) ··· 1656 1648 if (unlikely(!ops->vidioc_try_fmt_vid_cap_mplane)) 1657 1649 break; 1658 1650 CLEAR_AFTER_FIELD(p, fmt.pix_mp.xfer_func); 1651 + if (p->fmt.pix_mp.num_planes > VIDEO_MAX_PLANES) 1652 + break; 1659 1653 for (i = 0; i < p->fmt.pix_mp.num_planes; i++) 1660 - CLEAR_AFTER_FIELD(p, fmt.pix_mp.plane_fmt[i].bytesperline); 1654 + CLEAR_AFTER_FIELD(&p->fmt.pix_mp.plane_fmt[i], 1655 + bytesperline); 1661 1656 return ops->vidioc_try_fmt_vid_cap_mplane(file, fh, arg); 1662 1657 case V4L2_BUF_TYPE_VIDEO_OVERLAY: 1663 1658 if (unlikely(!ops->vidioc_try_fmt_vid_overlay)) ··· 1689 1678 if (unlikely(!ops->vidioc_try_fmt_vid_out_mplane)) 1690 1679 break; 1691 1680 CLEAR_AFTER_FIELD(p, fmt.pix_mp.xfer_func); 1681 + if (p->fmt.pix_mp.num_planes > VIDEO_MAX_PLANES) 1682 + break; 1692 1683 for (i = 0; i < p->fmt.pix_mp.num_planes; i++) 1693 - CLEAR_AFTER_FIELD(p, fmt.pix_mp.plane_fmt[i].bytesperline); 1684 + CLEAR_AFTER_FIELD(&p->fmt.pix_mp.plane_fmt[i], 1685 + bytesperline); 1694 1686 return ops->vidioc_try_fmt_vid_out_mplane(file, fh, arg); 1695 1687 case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY: 1696 1688 if (unlikely(!ops->vidioc_try_fmt_vid_out_overlay))