[PATCH 00/25] media: v4l2-mem2mem: Reduce cargo-cult

Nicolas Dufresne nicolas.dufresne at collabora.com
Wed Oct 8 11:24:30 PDT 2025


Hi,

Le mercredi 08 octobre 2025 à 20:50 +0300, Laurent Pinchart a écrit :
> Hello,
> 
> The v4l2_m2m_get_vq() function never returns NULL, but many mem2mem
> drivers still check its return value and consider NULL as an error. This
> may have originated a long time ago from valid checks when
> v4l2_m2m_get_vq() could return NULL, with drivers then just copying the
> checks. This series attempts to stop the cargo-cult behaviour.
> 
> Patch 01/25 starts by explicitly stating in kerneldoc that the
> v4l2_m2m_get_vq() function never returns NULL. All the other patches
> drop NULL checks from drivers.
> 
> I have carefully checked all patched locations in all drivers. They fall
> in 3 categories:
> 
> - Checks in the VIDIOC_G_FMT, VIDIOC_TRY_FMT and VIDIOC_S_FMT handlers:
>   Those may have been added to ensure that the format type has a valid
>   value, but that is ensured by the V4L2 ioctl core before calling the
>   handlers. The checks can be dropped without a need to replace them
>   with proper type checks.
> 
> - Checks in the VIDIOC_S_SELECTION handler: The only location where this
>   is performed has an explicit type check, so the NULL check can also be
>   dropped.
> 
> - Checks in other locations where the type parameter to the
>   v4l2_m2m_get_vq() function is hardcoded: The hardcoded type is valid,
>   so the NULL check can't have been meant to check the type. It can also
>   be removed.
> 
> There's no dependency between any of those patches so they can be merged
> in any order.
> 
> Laurent Pinchart (25):
>   media: v4l2-mem2mem: Document that v4l2_m2m_get_vq() never returns
>     NULL
>   media: allgro-dvt: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: meson-g2d: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: amphion: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: coda: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: imagination: e5010: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: m2m-deinterlace: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: mediatek: jpeg: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: mediatek: vcodec: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: dw100: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: imx-jpeg: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: imx-pxp: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: nxp: imx8-isi: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: mx2_emmaprp: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: qcom: iris: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: qcom: venus: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: renesas: fdp1: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: rcar_jpu: Drop unneeded v4l2_m2m_get_vq() NULL check

Why not "renesas: jpu" to match the fdp1 patch naming ?

>   media: platform: rga: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: samsung: s5p-g2d: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: samsung: s5p-jpeg: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: stm32: dma2d: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: ti: vpe: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: vicodec: Drop unneeded v4l2_m2m_get_vq() NULL check
>   media: vim2m: Drop unneeded v4l2_m2m_get_vq() NULL check

I reviewed the list and it seems complete to me.

Nicolas

> 
>  drivers/media/platform/allegro-dvt/allegro-core.c    |  2 --
>  drivers/media/platform/amlogic/meson-ge2d/ge2d.c     |  5 -----
>  drivers/media/platform/amphion/vdec.c                |  2 --
>  drivers/media/platform/amphion/venc.c                |  2 --
>  .../media/platform/chips-media/coda/coda-common.c    |  4 ----
>  drivers/media/platform/imagination/e5010-jpeg-enc.c  |  4 ----
>  drivers/media/platform/m2m-deinterlace.c             |  7 -------
>  drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c |  7 -------
>  .../mediatek/vcodec/decoder/mtk_vcodec_dec.c         |  7 -------
>  .../vcodec/decoder/vdec/vdec_av1_req_lat_if.c        |  2 --
>  .../vcodec/decoder/vdec/vdec_vp9_req_lat_if.c        |  2 --
>  .../mediatek/vcodec/encoder/mtk_vcodec_enc.c         |  8 --------
>  drivers/media/platform/nxp/dw100/dw100.c             |  7 -------
>  drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c       |  4 ----
>  drivers/media/platform/nxp/imx-pxp.c                 |  7 -------
>  drivers/media/platform/nxp/imx8-isi/imx8-isi-m2m.c   |  2 --
>  drivers/media/platform/nxp/mx2_emmaprp.c             |  7 -------
>  drivers/media/platform/qcom/iris/iris_vdec.c         |  2 --
>  drivers/media/platform/qcom/venus/vdec.c             |  2 --
>  drivers/media/platform/qcom/venus/venc.c             |  2 --
>  drivers/media/platform/renesas/rcar_fdp1.c           |  3 ---
>  drivers/media/platform/renesas/rcar_jpu.c            |  8 --------
>  drivers/media/platform/rockchip/rga/rga.c            |  4 ----
>  drivers/media/platform/samsung/s5p-g2d/g2d.c         |  4 ----
>  drivers/media/platform/samsung/s5p-jpeg/jpeg-core.c  |  7 -------
>  drivers/media/platform/st/stm32/dma2d/dma2d.c        |  5 -----
>  drivers/media/platform/ti/vpe/vpe.c                  |  7 -------
>  drivers/media/test-drivers/vicodec/vicodec-core.c    |  7 -------
>  drivers/media/test-drivers/vim2m.c                   | 12 ------------
>  drivers/media/v4l2-core/v4l2-mem2mem.c               | 12 +-----------
>  include/media/v4l2-mem2mem.h                         |  3 +++
>  31 files changed, 4 insertions(+), 153 deletions(-)
> 
> 
> base-commit: e5f0a698b34ed76002dc5cff3804a61c80233a7a
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: This is a digitally signed message part
URL: <http://lists.infradead.org/pipermail/linux-amlogic/attachments/20251008/56af186b/attachment.sig>


More information about the linux-amlogic mailing list