ARM Sunxi Platform Development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Arash Golgol" <arash.golgol@gmail.com>, linux-sunxi@lists.linux.dev
Cc: media-ci@linuxtv.org
Subject: Re: [PATCH v1 1/3] media: sun6i-csi: capture: Align size to 16 for NV12_16L16
Date: Fri, 16 Oct 2026 11:47:38 +0000	[thread overview]
Message-ID: <sashiko-outbox-174251@kernel.org> (raw)
In-Reply-To: <20261016113846.8602-2-arash.golgol@gmail.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] media: sun6i-csi: incorrect bytesperline for NV12_16L16 format
--

commit 476de016f26cd243aac004fdf752c97c70ae693b
Author: Arash Golgol <arash.golgol@gmail.com>

    media: sun6i-csi: capture: Align size to 16 for NV12_16L16

This commit introduces alignment handling specific to pixel formats in the
sun6i-csi capture driver. It sets the required alignment based on the format
and applies it during format preparation.

> diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c
> index d90abba213098..f55edfd0b174a 100644
> --- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c
> +++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c

[ ... ]

> @@ -665,17 +671,19 @@ static void sun6i_csi_capture_format_prepare(struct v4l2_format *format)
>  {
>  	struct v4l2_pix_format *pix_format = &format->fmt.pix;
>  	const struct v4l2_format_info *info;
> -	unsigned int width, height;
> -
> -	v4l_bound_align_image(&pix_format->width, SUN6I_CSI_CAPTURE_WIDTH_MIN,
> -			      SUN6I_CSI_CAPTURE_WIDTH_MAX, 1,
> -			      &pix_format->height, SUN6I_CSI_CAPTURE_HEIGHT_MIN,
> -			      SUN6I_CSI_CAPTURE_HEIGHT_MAX, 1, 0);
> +	unsigned int width, height, align;
>  
>  	if (!sun6i_csi_capture_format_find(pix_format->pixelformat))
>  		pix_format->pixelformat =
>  			sun6i_csi_capture_formats[0].pixelformat;
>  
> +	align = sun6i_csi_capture_format_align(pix_format->pixelformat);
> +
> +	v4l_bound_align_image(&pix_format->width, SUN6I_CSI_CAPTURE_WIDTH_MIN,
> +			      SUN6I_CSI_CAPTURE_WIDTH_MAX, align,
> +			      &pix_format->height, SUN6I_CSI_CAPTURE_HEIGHT_MIN,
> +			      SUN6I_CSI_CAPTURE_HEIGHT_MAX, align, 0);
> +
>  	width = pix_format->width;
>  	height = pix_format->height;
>
> 	info = v4l2_format_info(pix_format->pixelformat);
>
> 	switch (pix_format->pixelformat) {
> 	case V4L2_PIX_FMT_NV12_16L16:
> 		pix_format->bytesperline = width * 12 / 8;

[Severity: Medium]
Does this code violate the V4L2 API contract by incorrectly hardcoding
bytesperline to 1.5x width as a shortcut to calculate the correct sizeimage?

The V4L2 specification requires bytesperline to reflect the stride of the
largest plane, which for NV12 is just width. By exposing a stride of
1.5 * width, userspace applications may compute out-of-bounds plane offsets,
potentially leading to memory corruption or crashes within the userspace
client.

This is supported by sun6i_csi_setup_format(), which configures the
hardware using the correct luma and chroma strides of width internally:

drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c:sun6i_csi_setup_format() {
	...
	switch (pixelformat) {
	...
	case V4L2_PIX_FMT_NV12_16L16:
		luma_line = width;
		chroma_line = width;
		break;
	...
}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261016113846.8602-1-arash.golgol@gmail.com?part=1

  reply	other threads:[~2026-10-16 11:47 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-16 11:38 [PATCH v1 0/3] media: sun6i-csi: Improve capture and bridge Arash Golgol
2026-10-16 11:38 ` [PATCH v1 1/3] media: sun6i-csi: capture: Align size to 16 for NV12_16L16 Arash Golgol
2026-10-16 11:47   ` sashiko-bot [this message]
2026-10-16 11:38 ` [PATCH v1 2/3] media: sun6i-csi: capture: Add enum_framesizes support Arash Golgol
2026-10-16 11:38 ` [PATCH v1 3/3] media: sun6i-csi: bridge: Remove duplicate mbus format entries Arash Golgol

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=sashiko-outbox-174251@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=arash.golgol@gmail.com \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=media-ci@linuxtv.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox