On Sat, 2016-05-14 at 20:29 -0400, Michael Chan wrote:
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
[...]
quoted hunk ↗ jump to hunk
+ /* 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.
Ben.
quoted hunk ↗ jump to hunk
[...]
--
Ben Hutchings
For every action, there is an equal and opposite criticism. - Harrison