On Mon Jun 2, 2025 at 10:25 PM CEST, Daniel P. Smith wrote:
>> +/* Helper to read a big number; size is in cells (not bytes) */
>> +static inline u64 dt_read_number(const __be32 *cell, int size)
>> +{
>> +    u64 r = 0;
>> +
>> +    while ( size-- )
>> +        r = (r << 32) | be32_to_cpu(*(cell++));
>> +    return r;
>> +}
>
> I know you are trying to keep code changes to a minimal but let's not 
> allow poorly constructed logic like this to continue to persist. This is 
> an unbounded, arbitrary read function that is feed parameters via 
> externally input. The DT spec declares only two number types for a 
> property, u32 and u64, see Table 2.3 in Section 2.2.4. There is no 
> reason to have an unbounded, arbitrary read function lying around 
> waiting to be leveraged in exploitation.

Seeing how it's a big lump of code motion, I really don't want to play games
or I will myself lose track of what I changed and what I didn't.

While I agree it should probably be a switch statement (or factored away
altogether), this isn't the place for it.

Cheers,
Alejandro

Reply via email to