On Tue Oct 28, 2025 at 2:41 AM JST, Joel Fernandes wrote:
> Hello Alex,
>
> On 10/27/2025 8:54 AM, Alexandre Courbot wrote:
>> These variables were read from the u8 array `data` and converted to a
>> `usize`, before being converted back to a `u8`. Just re-read them from
>> the source to avoid using `as`.
>> 
>> Acked-by: Danilo Krummrich <[email protected]>
>> Signed-off-by: Alexandre Courbot <[email protected]>
>> ---
>>  drivers/gpu/nova-core/vbios.rs | 6 +++---
>>  1 file changed, 3 insertions(+), 3 deletions(-)
>> 
>> diff --git a/drivers/gpu/nova-core/vbios.rs b/drivers/gpu/nova-core/vbios.rs
>> index 943b0dac31df..dbe0d6e4a015 100644
>> --- a/drivers/gpu/nova-core/vbios.rs
>> +++ b/drivers/gpu/nova-core/vbios.rs
>> @@ -911,9 +911,9 @@ fn new(dev: &device::Device, data: &[u8]) -> 
>> Result<Self> {
>>  
>>          Ok(PmuLookupTable {
>>              version: data[0],
>> -            header_len: header_len as u8,
>> -            entry_len: entry_len as u8,
>> -            entry_count: entry_count as u8,
>> +            header_len: data[1],
>> +            entry_len: data[2],
>> +            entry_count: data[3],
>>              table_data,
>
> Why not just change PmuLookupTable to:
>
> struct PmuLookupTable {
>     version: u8,
>     header_len: usize,
>     entry_len: usize,
>     entry_count: usize,
>     table_data: KVec<u8>,
> }
>
> That is cleaner and removes the issue while allowing to use the local 
> variables
> (and also makes sense to be usize as these 3 fields are size-like fields).

That would work! But while trying I also figured we could just split the
header into its own `repr(C)` struct and use `FromBytes` on it, which
would achieve the same result with less array indexing.

Actually, we could do that for a bunch of structures in this file, so I
think I'll just try and do it that way.

Reply via email to