From: sashiko-bot@kernel.org
To: "Alexandre Courbot" <acourbot@nvidia.com>
Cc: "Danilo Krummrich" <dakr@kernel.org>,
ojeda@kernel.org, "Alexandre Courbot" <acourbot@nvidia.com>,
dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v5 02/13] gpu: nova-core: gsp: sequencer: do not store sequence into GspSequencer
Date: Tue, 07 Jul 2026 07:58:22 +0000 [thread overview]
Message-ID: <20260707075822.CE7201F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260707-nova-bootcontext-v5-2-ecad9346387f@nvidia.com>
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
Pre-existing issues:
- [High] Command parsing errors silently terminate execution while reporting success.
- [High] Truncated commands are executed with zeroed payloads instead of failing.
- [High] `seq_info.cmd_index` is improperly used as the total command count.
--
--- Patch [2]: [PATCH v5 02/13] gpu: nova-core: gsp: sequencer: do not store sequence into GspSequencer ---
commit b9f8dfb196e815ccff55e396434b9fbb45c0cc05
Author: Alexandre Courbot <acourbot@nvidia.com>
gpu: nova-core: gsp: sequencer: do not store sequence into GspSequencer
Moves the sequence out of the GspSequencer struct to avoid borrow-checker
limitations. Iterator creation is moved to GspSeqIter::new so it no longer
borrows the entire GspSequencer.
> diff --git a/drivers/gpu/nova-core/gsp/sequencer.rs b/drivers/gpu/nova-core/gsp/sequencer.rs
> index f55205bd61f35..ddce32cc4e308 100644
> --- a/drivers/gpu/nova-core/gsp/sequencer.rs
> +++ b/drivers/gpu/nova-core/gsp/sequencer.rs
[ ... ]
> @@ -281,6 +279,18 @@ pub(crate) struct GspSeqIter<'a> {
> dev: &'a device::Device,
> }
>
> +impl<'a> GspSeqIter<'a> {
> + fn new(seq: &'a GspSequence, dev: &'a device::Device) -> Self {
> + Self {
> + cmd_data: &seq.cmd_data,
> + current_offset: 0,
> + total_cmds: seq.cmd_index,
[Severity: High]
This is a pre-existing issue, but does this incorrectly use the DWord size
as the command count?
If seq.cmd_index represents the buffer length in DWords, assigning it to
total_cmds breaks the iteration bounds check.
In GspSeqIter::next(), cmds_processed is incremented by 1 per command,
which means the condition cmds_processed >= total_cmds won't trigger at
the actual end of valid commands.
Could this cause the iterator to parse and execute padding bytes as
commands?
> + cmds_processed: 0,
> + dev,
> + }
> + }
> +}
[ ... ]
> @@ -363,14 +358,14 @@ pub(crate) fn run(
>
> dev_dbg!(sequencer.dev, "Running CPU Sequencer commands\n");
>
> - for cmd_result in sequencer.iter() {
> + for cmd_result in GspSeqIter::new(&seq_info, sequencer.dev) {
[Severity: High]
This is a pre-existing issue, but is it possible for truncated commands to
be parsed and executed with zeroed payloads?
Looking at GspSeqIter::next(), if the remaining buffer is smaller than
CMD_SIZE, it appears to zero-pad the data into a buffer of size CMD_SIZE
before passing it to GspSeqCmd::new():
let cmd_result = GspSeqCmd::new(&buffer, self.dev);
Inside GspSeqCmd::new(), the safety check uses data.len():
if data.len() < size {
dev_err!(dev, "Data is not enough for command\n");
return Err(EINVAL);
}
Since the padded buffer length is always exactly CMD_SIZE, this check might
act as dead code. Does this mean truncated commands would succeed using the
zero padding as their payload rather than failing with an error?
[Severity: High]
This is another pre-existing issue, but does command parsing silently
terminate on errors while reporting success to the caller?
In GspSeqIter::next(), when parsing fails, the error closure logs the
failure but returns None:
cmd_result.map_or_else(
|_err| {
dev_err!(self.dev, "Error parsing command at offset {}\n", offset);
None
},
Since None signals normal iterator termination, this loop in
GspSequencer::run() will exit cleanly and return Ok(()) without triggering
an error.
Could this leave the hardware sequence incomplete while the driver
incorrectly assumes the boot sequence succeeded?
> match cmd_result {
> Ok(cmd) => cmd.run(&sequencer)?,
> Err(e) => {
> dev_err!(
> sequencer.dev,
> "Error running command at index {}\n",
> - sequencer.seq_info.cmd_index
> + seq_info.cmd_index
> );
> return Err(e);
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260707-nova-bootcontext-v5-0-ecad9346387f@nvidia.com?part=2
next prev parent reply other threads:[~2026-07-07 7:58 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-07 7:21 [PATCH v5 00/13] gpu: nova-core: consolidate and streamline GSP boot process Alexandre Courbot
2026-07-07 7:21 ` [PATCH v5 01/13] gpu: nova-core: gsp: sequencer: use GspBootContext Alexandre Courbot
2026-07-07 7:21 ` [PATCH v5 02/13] gpu: nova-core: gsp: sequencer: do not store sequence into GspSequencer Alexandre Courbot
2026-07-07 7:58 ` sashiko-bot [this message]
2026-07-07 7:21 ` [PATCH v5 03/13] gpu: nova-core: gsp: replace BootUnloadGuard with local handlers Alexandre Courbot
2026-07-07 8:04 ` Eliot Courtney
2026-07-07 12:56 ` Alexandre Courbot
2026-07-07 13:34 ` Eliot Courtney
2026-07-07 8:10 ` sashiko-bot
2026-07-07 7:21 ` [PATCH v5 04/13] gpu: nova-core: gsp: pass GspBootContext to unload methods Alexandre Courbot
2026-07-07 7:21 ` [PATCH v5 05/13] gpu: nova-core: gsp: centralize missing unload bundle warnings Alexandre Courbot
2026-07-07 8:30 ` sashiko-bot
2026-07-07 7:21 ` [PATCH v5 06/13] gpu: nova-core: gsp: fold TU102 unload bundle construction into HAL method Alexandre Courbot
2026-07-07 7:21 ` [PATCH v5 07/13] gpu: nova-core: gsp: turn FWSEC execution " Alexandre Courbot
2026-07-07 7:21 ` [PATCH v5 08/13] gpu: nova-core: gsp: make use of FWSEC bootloader a property of the TU102 HAL Alexandre Courbot
2026-07-07 7:42 ` Eliot Courtney
2026-07-07 7:21 ` [PATCH v5 09/13] gpu: nova-core: move GSP firmware files decision to GSP HAL Alexandre Courbot
2026-07-07 7:49 ` Alexandre Courbot
2026-07-07 13:08 ` Eliot Courtney
2026-07-07 7:21 ` [PATCH v5 10/13] gpu: nova-core: avoid repeated calls to pci::Device::as_ref Alexandre Courbot
2026-07-07 7:21 ` [PATCH v5 11/13] gpu: nova-core: gsp: pass GspBootContext mutably Alexandre Courbot
2026-07-07 7:21 ` [PATCH v5 12/13] gpu: nova-core: gsp: separate context and GPU lifetimes in GspBootContext Alexandre Courbot
2026-07-07 9:02 ` sashiko-bot
2026-07-07 7:21 ` [PATCH v5 13/13] gpu: nova-core: store Fsp instance in Gpu Alexandre Courbot
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=20260707075822.CE7201F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=acourbot@nvidia.com \
--cc=dakr@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=ojeda@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox