e1000: fix memcpy in e1000_get_strings
Subsystems (2)
PATCH 1/2 e1000: fix memcpy in e1000_get_strings
From: Roel Kluin <[email protected]>
drivers/net/e1000/e1000_ethtool.c:113:
#define E1000_TEST_LEN sizeof(e1000_gstrings_test) / ETH_GSTRING_LEN
drivers/net/e1000e/ethtool.c:106:
#define E1000_TEST_LEN sizeof(e1000_gstrings_test) / ETH_GSTRING_LEN
E1000_TEST_LEN*ETH_GSTRING_LEN will expand to sizeof(e1000_gstrings_test) / (ETH_GSTRING_LEN * ETH_GSTRING_LEN)
A lack of parentheses around defines causes unexpected results due to operator precedences.
---
drivers/net/e1000/e1000_ethtool.c | 2 +- drivers/net/e1000e/ethtool.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/net/e1000/e1000_ethtool.c +1 -1
@@ -1949,7 +1949,7 @@ e1000_get_strings(struct net_device *netdev, uint32_t stringset, uint8_t *data)switch (stringset) {case ETH_SS_TEST :memcpy (data, *e1000_gstrings_test, -E1000_TEST_LEN *ETH_GSTRING_LEN ); +sizeof (e1000_gstrings_test));break ;case ETH_SS_STATS :for (i =0 ; i <E1000_GLOBAL_STATS_LEN ; i++) {
drivers/net/e1000e/ethtool.c +1 -1
@@ -1760,7 +1760,7 @@ static void e1000_get_strings(struct net_device *netdev, u32 stringset,switch (stringset) {case ETH_SS_TEST :memcpy (data, *e1000_gstrings_test, -E1000_TEST_LEN *ETH_GSTRING_LEN ); +sizeof (e1000_gstrings_test));break ;case ETH_SS_STATS :for (i =0 ; i <E1000_GLOBAL_STATS_LEN ; i++) {
PATCH 2/2 e100: cleanup unneeded math
No need to convert to bytes and back - cleanup unneeded code.
Adapted from fix from 'Roel Kluin <[email protected]>'
---
drivers/net/e100.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-)
drivers/net/e100.c +2 -4
@@ -2284,13 +2284,11 @@ static void e100_get_drvinfo(struct net_device *netdev,strcpy (info->bus_info,pci_name (nic->pdev)); } +#define E100_PHY_REGS 0x1Cstatic int e100_get_regs_len (struct net_device *netdev) {struct nic *nic =netdev_priv (netdev); -#define E100_PHY_REGS 0x1C -#define E100_REGS_LEN 1 + E100_PHY_REGS + \ - sizeof(nic->mem->dump_buf) / sizeof(u32) -return E100_REGS_LEN *sizeof (u32); +return 1 +E100_PHY_REGS +sizeof (nic->mem->dump_buf); } static void e100_get_regs(struct net_device *netdev,
Quoted 14 lines · Auke Kok
From: Roel Kluin <[email protected]>
drivers/net/e1000/e1000_ethtool.c:113:
#defineE1000_TEST_LENsizeof(e1000_gstrings_test)/ETH_GSTRING_LEN
drivers/net/e1000e/ethtool.c:106:
#defineE1000_TEST_LENsizeof(e1000_gstrings_test)/ETH_GSTRING_LENE1000_TEST_LEN*ETH_GSTRING_LEN will expand to
sizeof(e1000_gstrings_test)/ (ETH_GSTRING_LEN*ETH_GSTRING_LEN)A lack of parentheses around defines causes unexpected results due to operator precedences.
Quoted 7 lines
Signed-off-by Roel Kluin <[email protected]>Signed-off-by Auke Kok <[email protected]>---
drivers/net/e1000/e1000_ethtool.c | 2 +- drivers/net/e1000e/ethtool.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
applied 1-2 to #upstream-fixes