Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues: - [High] VBIOS structures are parsed using native endianness, yielding incorrect values and validation failures on Big Endian architectures. -- commit dfd6016814a03a8ecf36ea1b92019e446ec39712 Author: Pedro Yudi Honda <[email protected]> drm/nova: use zerocopy in vbios.rs This commit replaces the transmute traits with their zerocopy equivalents for parsing VBIOS structures. It updates the derive macros and changes the initialization calls to use zerocopy's read_from_prefix(). > diff --git a/drivers/gpu/nova-core/vbios.rs b/drivers/gpu/nova-core/vbios.rs > index e6d144587c4ee..a3c0c06f6818d 100644 > --- a/drivers/gpu/nova-core/vbios.rs > +++ b/drivers/gpu/nova-core/vbios.rs [ ... ] > @@ -525,7 +513,7 @@ fn from_id(image: &PciAtBiosImage, token_id: u8) -> > Result<Self> { > /// > /// This header is at the beginning of every image in the set of images in > the ROM. It contains a > /// pointer to the PCI Data Structure which describes the image. > -#[derive(Debug, Clone, Copy)] > +#[derive(Debug, Clone, Copy, FromBytes)] > #[repr(C)] > struct PciRomHeader { > /// 00h: Signature (0xAA55) > signature: u16, [Severity: High] This is a pre-existing issue, but does mapping this byte stream directly into native integer types break on Big Endian architectures? Since VBIOS data is typically little-endian, parsing it into native integer types (like the u16 signature here, or the u16 id in BitHeader) means the bytes will be interpreted backwards on Big Endian systems. For example, the signature 0xAA55 would be read as 0x55AA, causing validation to fail entirely. Additionally, in VbiosIterator::read_more(), the data is read via try_read32() and converted to a byte stream using .to_ne_bytes(), which scrambles the byte order in 4-byte chunks on Big Endian platforms. Should these structures be using explicit little-endian types (like __le16) to ensure correct VBIOS parsing across all architectures? -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=2
