On Sat, May 14, 2016 at 6:31 PM, Ben Hutchings <b...@decadent.org.uk> wrote:
> On Sat, 2016-05-14 at 20:29 -0400, Michael Chan wrote:
>> From: Ajit Khaparde <ajit.khapa...@broadcom.com>
> [...]
>> +     /* Read A2 portion of the EEPROM */
>> +     if (length) {
>> +             start -= ETH_MODULE_SFF_8436_LEN;
>> +             bnxt_read_sfp_module_eeprom_info(bp, I2C_DEV_ADDR_A2, 1, start,
>> +                                              length, data + start);
>
> The output address calculation (data + start) makes no sense at all.
> If eeprom->offset < ETH_MODULE_SFF_8436_LEN then start == 0 here and
> this read overwrites earlier data in the output buffer.  If
> eeeprom->offset > ETH_MODULE_SFF_8436_LEN then start > 0 here and this
> overruns the output buffer.
>
> I think that 'data' should be incremented along with 'start' in the
> previous if-block.
>

Yes, you're right.  We'll fix it and resend.  Thanks.

Reply via email to