From: sashiko-bot@kernel.org
To: "Alexandre Courbot" <acourbot@nvidia.com>
Cc: ojeda@kernel.org, dri-devel@lists.freedesktop.org,
"Danilo Krummrich" <dakr@kernel.org>
Subject: Re: [PATCH v4 01/13] gpu: nova-core: gsp: sequencer: use GspBootContext
Date: Mon, 29 Jun 2026 14:22:48 +0000 [thread overview]
Message-ID: <20260629142248.B368F1F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260629-nova-bootcontext-v4-1-5539d8469590@nvidia.com>
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
Pre-existing issues:
- [High] Incorrect loop bounds check causes RPC message padding bytes to be executed as hardware sequencer commands (e.g., unintended RegWrite to address 0).
- [High] Fixed-size zero-padded buffer bypasses length checks for truncated commands, leading to execution of zeroed out-of-bounds payloads.
- [High] Unaligned stack array passed to `FromBytes::from_bytes` may cause spurious parsing failures and abort the GSP boot process depending on compiler stack layout.
--
commit c264aea160f8cb747324a1d5a568d1e3a869623a
Author: Alexandre Courbot <acourbot@nvidia.com>
gpu: nova-core: gsp: sequencer: use GspBootContext
`GspBootContext` contains all the resources currently carried by
`GspSequencerParams`, so replace the latter with the former for better
integration with the boot process and less code.
> diff --git a/drivers/gpu/nova-core/gsp/sequencer.rs b/drivers/gpu/nova-core/gsp/sequencer.rs
> index 13983d42b12bc..f55205bd61f35 100644
> --- a/drivers/gpu/nova-core/gsp/sequencer.rs
> +++ b/drivers/gpu/nova-core/gsp/sequencer.rs
[ ... ]
> @@ -335,24 +336,13 @@ fn iter(&self) -> GspSeqIter<'_> {
> }
> }
[Severity: High]
This is a pre-existing issue, but does this bounds check in GspSeqIter::next()
fail to prevent processing alignment padding bytes?
In drivers/gpu/nova-core/gsp/sequencer.rs:GspSeqIter::new(), total_cmds is
initialized using the length in DWORDs rather than the command count:
GspSeqIter {
...
total_cmds: self.seq_info.cmd_index,
...
}
Then in GspSeqIter::next(), the loop bounds check compares commands processed
against this DWORD count:
if self.cmds_processed >= self.total_cmds ||
self.current_offset >= self.cmd_data.len() {
return None;
}
If the message buffer contains RPC alignment padding (e.g., trailing zeros),
could cmds_processed fail to reach total_cmds, causing these zeros to be
incorrectly parsed as hardware sequencer commands (where opcode 0 is RegWrite
to address 0)?
[Severity: High]
This is a pre-existing issue, but does passing a zero-padded buffer bypass
the length check for truncated commands?
In drivers/gpu/nova-core/gsp/sequencer.rs:GspSeqIter::next(), a truncated
command is copied into a fixed 24-byte zero-initialized array, and a slice
covering the entire array is passed to GspSeqCmd::new():
let mut buffer = [0u8; CMD_SIZE];
...
buffer[..copy_len].copy_from_slice(
&self.cmd_data[offset..offset + copy_len]
);
let cmd_result = GspSeqCmd::new(&buffer, self.dev);
Inside GspSeqCmd::new(), the length check evaluates data.len(), which will
always be 24 regardless of copy_len:
if data.len() < size {
dev_err!(dev, "Data is not enough for command\n");
return Err(EINVAL);
}
Could this allow execution of malformed, zero-padded hardware commands?
[Severity: High]
This is a pre-existing issue, but can the unaligned stack array passed to
FromBytes::from_bytes() cause spurious parsing failures?
In drivers/gpu/nova-core/gsp/sequencer.rs:GspSeqIter::next(), buffer is backed
by a u8 array which only guarantees 1-byte alignment:
let mut buffer = [0u8; CMD_SIZE];
When this buffer is passed to GspSeqCmd::new() and then to
SequencerBufferCmd::from_bytes():
let fw_cmd = fw::SequencerBufferCmd::from_bytes(data).ok_or(EINVAL)?;
If the compiler places the array at a misaligned address on the stack, could
from_bytes() (which expects 4-byte alignment for u32 fields) fail silently and
abort the GSP boot process?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260629-nova-bootcontext-v4-0-5539d8469590@nvidia.com?part=1
next prev parent reply other threads:[~2026-06-29 14:22 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-29 14:09 [PATCH v4 00/13] gpu: nova-core: consolidate and streamline GSP boot process Alexandre Courbot
2026-06-29 14:09 ` [PATCH v4 01/13] gpu: nova-core: gsp: sequencer: use GspBootContext Alexandre Courbot
2026-06-29 14:22 ` sashiko-bot [this message]
2026-06-29 14:09 ` [PATCH v4 02/13] gpu: nova-core: gsp: sequencer: do not store sequence into GspSequencer Alexandre Courbot
2026-06-29 14:19 ` sashiko-bot
2026-06-29 14:09 ` [PATCH v4 03/13] gpu: nova-core: gsp: replace BootUnloadGuard with local handlers Alexandre Courbot
2026-06-29 14:21 ` sashiko-bot
2026-07-01 2:54 ` Eliot Courtney
2026-07-06 10:00 ` Alexandre Courbot
2026-06-29 14:09 ` [PATCH v4 04/13] gpu: nova-core: gsp: pass GspBootContext to unload methods Alexandre Courbot
2026-07-01 3:57 ` Eliot Courtney
2026-06-29 14:09 ` [PATCH v4 05/13] gpu: nova-core: gsp: centralize missing unload bundle warnings Alexandre Courbot
2026-06-29 14:20 ` sashiko-bot
2026-07-01 4:06 ` Eliot Courtney
2026-06-29 14:09 ` [PATCH v4 06/13] gpu: nova-core: gsp: fold TU102 unload bundle construction into HAL method Alexandre Courbot
2026-07-01 4:15 ` Eliot Courtney
2026-06-29 14:09 ` [PATCH v4 07/13] gpu: nova-core: gsp: turn FWSEC execution " Alexandre Courbot
2026-07-01 4:16 ` Eliot Courtney
2026-06-29 14:09 ` [PATCH v4 08/13] gpu: nova-core: gsp: make use of FWSEC bootloader a property of the TU102 HAL Alexandre Courbot
2026-06-29 14:09 ` [PATCH v4 09/13] gpu: nova-core: introduce GspBootMethod Alexandre Courbot
2026-07-02 2:28 ` Eliot Courtney
2026-06-29 14:09 ` [PATCH v4 10/13] gpu: nova-core: avoid repeated calls to pci::Device::as_ref Alexandre Courbot
2026-06-29 14:17 ` sashiko-bot
2026-07-01 6:38 ` Eliot Courtney
2026-06-29 14:09 ` [PATCH v4 11/13] gpu: nova-core: gsp: pass GspBootContext mutably Alexandre Courbot
2026-07-01 6:40 ` Eliot Courtney
2026-06-29 14:09 ` [PATCH v4 12/13] gpu: nova-core: gsp: separate context and GPU lifetimes in GspBootContext Alexandre Courbot
2026-06-29 14:22 ` sashiko-bot
2026-07-01 6:52 ` Eliot Courtney
2026-06-29 14:09 ` [PATCH v4 13/13] gpu: nova-core: store Fsp instance in Gpu Alexandre Courbot
2026-06-29 14:27 ` sashiko-bot
2026-07-01 6:46 ` Eliot Courtney
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=20260629142248.B368F1F00A3A@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