[PATCH 00/25] media: v4l2-mem2mem: Reduce cargo-cult
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed Oct 8 12:21:29 PDT 2025
On Wed, Oct 08, 2025 at 02:24:30PM -0400, Nicolas Dufresne wrote:
> 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 ?
I tried to go with the most common prefix as reported by git log. I
don't mind changing this, I'll wait for more reviews to see if a v2 is
needed, otherwise this can be updated when applying if desired.
> > 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.
Thank you.
> > 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
--
Regards,
Laurent Pinchart
More information about the linux-amlogic
mailing list