| From f0943e29cbcf5bfeb31409bf2f7401d812db10a7 Mon Sep 17 00:00:00 2001 |
| From: Kangjie Lu <kjlu@umn.edu> |
| Date: Tue, 25 Dec 2018 01:56:14 -0600 |
| Subject: niu: fix missing checks of niu_pci_eeprom_read |
| |
| [ Upstream commit 26fd962bde0b15e54234fe762d86bc0349df1de4 ] |
| |
| niu_pci_eeprom_read() may fail, so we should check its return value |
| before using the read data. |
| |
| Signed-off-by: Kangjie Lu <kjlu@umn.edu> |
| Acked-by: Shannon Nelson <shannon.lee.nelson@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/sun/niu.c | 10 ++++++++-- |
| 1 file changed, 8 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c |
| index e92f41d20a2c..411a69bea1d4 100644 |
| --- a/drivers/net/ethernet/sun/niu.c |
| +++ b/drivers/net/ethernet/sun/niu.c |
| @@ -8119,6 +8119,8 @@ static int niu_pci_vpd_scan_props(struct niu *np, u32 start, u32 end) |
| start += 3; |
| |
| prop_len = niu_pci_eeprom_read(np, start + 4); |
| + if (prop_len < 0) |
| + return prop_len; |
| err = niu_pci_vpd_get_propname(np, start + 5, namebuf, 64); |
| if (err < 0) |
| return err; |
| @@ -8163,8 +8165,12 @@ static int niu_pci_vpd_scan_props(struct niu *np, u32 start, u32 end) |
| netif_printk(np, probe, KERN_DEBUG, np->dev, |
| "VPD_SCAN: Reading in property [%s] len[%d]\n", |
| namebuf, prop_len); |
| - for (i = 0; i < prop_len; i++) |
| - *prop_buf++ = niu_pci_eeprom_read(np, off + i); |
| + for (i = 0; i < prop_len; i++) { |
| + err = niu_pci_eeprom_read(np, off + i); |
| + if (err >= 0) |
| + *prop_buf = err; |
| + ++prop_buf; |
| + } |
| } |
| |
| start += len; |
| -- |
| 2.19.1 |
| |