From: sashiko-bot@kernel.org
To: "Rishikesh Donadkar" <r-donadkar@ti.com>
Cc: robh@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v13 10/17] media: ti: j721e-csi2rx: add support for processing virtual channels
Date: Wed, 20 May 2026 12:44:33 +0000 [thread overview]
Message-ID: <20260520124434.1334F1F00893@smtp.kernel.org> (raw)
In-Reply-To: <20260520120022.539913-11-r-donadkar@ti.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] The check for an unmatched stream in `ti_csi2rx_get_vc_and_dt` is incorrectly placed inside the loop, rendering it dead code and causing a false success return.
- [High] Error path bypasses `video_device_pipeline_stop()`, leaking a media pipeline reference if `ti_csi2rx_get_vc_and_dt` fails.
--
commit a246af785a58954c2b9c8219f7853322d7ba7a14
Author: Jai Luthra <jai.luthra@linux.dev>
media: ti: j721e-csi2rx: add support for processing virtual channels
This commit adds support for virtual channels by using get_frame_desc()
to retrieve the frame descriptor from the connected source. It falls
back to virtual channel 0 if the source does not support
get_frame_desc().
> diff --git a/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c b/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
> index 26a8eaa98b3da..d0a681ba78ebf 100644
> --- a/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
> +++ b/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
[ ... ]
> @@ -881,12 +887,46 @@ static void ti_csi2rx_buffer_queue(struct vb2_buffer *vb)
> +static int ti_csi2rx_get_vc_and_dt(struct ti_csi2rx_ctx *ctx)
> +{
[ ... ]
> + for (i = 0; i < fd.num_entries; i++) {
> + if (ctx->stream == fd.entry[i].stream) {
> + ctx->vc = fd.entry[i].bus.csi2.vc;
> + ctx->dt = fd.entry[i].bus.csi2.dt;
> + break;
> + }
> +
> + /* Return error if no matching stream found */
> + if (i == fd.num_entries)
> + return -EINVAL;
> + }
> +
> + return 0;
> +}
[Severity: High]
Is it possible for the i == fd.num_entries condition to ever be true here?
Because it is inside the for loop body where the condition i < fd.num_entries
is strictly enforced, i can never equal fd.num_entries.
If no matching stream is found, the loop will exit normally and the function
will silently return 0 instead of returning an error. This leaves ctx->vc and
ctx->dt uninitialized or with stale values, and bypasses the fallback logic.
[ ... ]
> @@ -901,6 +941,15 @@ static int ti_csi2rx_start_streaming(struct vb2_queue *vq, unsigned int count)
> if (ret)
> goto err;
>
> + ret = ti_csi2rx_get_vc_and_dt(ctx);
> + if (ret == -ENOIOCTLCMD) {
> + ctx->vc = 0;
> + fmt = find_format_by_fourcc(ctx->v_fmt.fmt.pix.pixelformat);
> + ctx->dt = fmt->csi_dt;
> + } else if (ret < 0) {
> + goto err;
> + }
[Severity: High]
Does this error path leak the media pipeline reference?
By jumping to the err label, the execution bypasses the err_pipeline label
which calls video_device_pipeline_stop(). This would leave the pipeline
permanently in an active state and block future pipeline operations
with -EBUSY.
I understand this issue is fixed in a later commit ("media: ti: j721e-csi2rx:
add multistream support"), but could we fix it here to ensure this commit
doesn't introduce regressions during bisection?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260520120022.539913-1-r-donadkar@ti.com?part=10
next prev parent reply other threads:[~2026-05-20 12:44 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-20 12:00 [PATCH v13 00/17] media: cadence,ti: CSI2RX Multistream Support Rishikesh Donadkar
2026-05-20 12:00 ` [PATCH v13 01/17] media: ti: j721e-csi2rx: Remove word size alignment on frame width Rishikesh Donadkar
2026-05-20 12:27 ` sashiko-bot
2026-05-20 12:00 ` [PATCH v13 02/17] dt-bindings: media: ti,j721e-csi2rx-shim: Support 32 dma chans Rishikesh Donadkar
2026-05-20 12:00 ` [PATCH v13 03/17] media: ti: j721e-csi2rx: separate out device and context Rishikesh Donadkar
2026-05-20 12:37 ` sashiko-bot
2026-05-20 12:00 ` [PATCH v13 04/17] media: ti: j721e-csi2rx: prepare SHIM code for multiple contexts Rishikesh Donadkar
2026-05-20 12:00 ` [PATCH v13 05/17] media: ti: j721e-csi2rx: allocate DMA channel based on context index Rishikesh Donadkar
2026-05-20 12:32 ` sashiko-bot
2026-05-20 12:00 ` [PATCH v13 06/17] media: ti: j721e-csi2rx: add a subdev for the core device Rishikesh Donadkar
2026-05-20 12:28 ` Sakari Ailus
2026-05-20 12:49 ` sashiko-bot
2026-05-20 12:00 ` [PATCH v13 07/17] media: cadence: csi2rx: Move to .enable/disable_streams API Rishikesh Donadkar
2026-05-20 12:39 ` sashiko-bot
2026-05-20 12:00 ` [PATCH v13 08/17] media: ti: j721e-csi2rx: get number of contexts from device tree Rishikesh Donadkar
2026-05-20 12:45 ` sashiko-bot
2026-05-20 12:00 ` [PATCH v13 09/17] media: cadence: csi2rx: Add .get_frame_desc op Rishikesh Donadkar
2026-05-20 14:25 ` Jai Luthra
2026-05-20 12:00 ` [PATCH v13 10/17] media: ti: j721e-csi2rx: add support for processing virtual channels Rishikesh Donadkar
2026-05-20 12:44 ` sashiko-bot [this message]
2026-05-20 12:00 ` [PATCH v13 11/17] media: cadence: csi2rx: add multistream support Rishikesh Donadkar
2026-05-20 12:58 ` sashiko-bot
2026-05-20 12:00 ` [PATCH v13 12/17] media: ti: j721e-csi2rx: " Rishikesh Donadkar
2026-05-20 12:48 ` sashiko-bot
2026-05-20 12:00 ` [PATCH v13 13/17] media: ti: j721e-csi2rx: Submit all available buffers Rishikesh Donadkar
2026-05-20 12:59 ` sashiko-bot
2026-05-20 12:00 ` [PATCH v13 14/17] media: ti: j721e-csi2rx: Change the drain architecture for multistream Rishikesh Donadkar
2026-05-20 13:01 ` sashiko-bot
2026-05-20 12:00 ` [PATCH v13 15/17] media: cadence: csi2rx: Support runtime PM Rishikesh Donadkar
2026-05-20 13:00 ` sashiko-bot
2026-05-20 12:00 ` [PATCH v13 16/17] media: ti: j721e-csi2rx: Support runtime suspend Rishikesh Donadkar
2026-05-20 13:01 ` sashiko-bot
2026-05-20 12:00 ` [PATCH v13 17/17] media: ti: j721e-csi2rx: Support system suspend using pm_notifier Rishikesh Donadkar
2026-05-20 12:25 ` Sakari Ailus
2026-05-20 13:14 ` sashiko-bot
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=20260520124434.1334F1F00893@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=r-donadkar@ti.com \
--cc=robh@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.