Commit facfbf4f authored by David S. Miller's avatar David S. Miller

Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue

Tony Nguyen says:

====================
1GbE Intel Wired LAN Driver Updates 2021-07-23

This series contains updates to igb and e100 drivers.

Grzegorz adds a timeout check to prevent possible infinite loop for igb.

Kees Cook adjusts memcpy() argument to represent the entire structure
to allow for appropriate bounds checking for igb and e100.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 94a994d2 cd74f25b
...@@ -2715,10 +2715,10 @@ static void e100_get_strings(struct net_device *netdev, u32 stringset, u8 *data) ...@@ -2715,10 +2715,10 @@ static void e100_get_strings(struct net_device *netdev, u32 stringset, u8 *data)
{ {
switch (stringset) { switch (stringset) {
case ETH_SS_TEST: case ETH_SS_TEST:
memcpy(data, *e100_gstrings_test, sizeof(e100_gstrings_test)); memcpy(data, e100_gstrings_test, sizeof(e100_gstrings_test));
break; break;
case ETH_SS_STATS: case ETH_SS_STATS:
memcpy(data, *e100_gstrings_stats, sizeof(e100_gstrings_stats)); memcpy(data, e100_gstrings_stats, sizeof(e100_gstrings_stats));
break; break;
} }
} }
......
...@@ -492,6 +492,7 @@ static u32 igb_hash_mc_addr(struct e1000_hw *hw, u8 *mc_addr) ...@@ -492,6 +492,7 @@ static u32 igb_hash_mc_addr(struct e1000_hw *hw, u8 *mc_addr)
**/ **/
static void igb_i21x_hw_doublecheck(struct e1000_hw *hw) static void igb_i21x_hw_doublecheck(struct e1000_hw *hw)
{ {
int failed_cnt = 3;
bool is_failed; bool is_failed;
int i; int i;
...@@ -502,9 +503,12 @@ static void igb_i21x_hw_doublecheck(struct e1000_hw *hw) ...@@ -502,9 +503,12 @@ static void igb_i21x_hw_doublecheck(struct e1000_hw *hw)
is_failed = true; is_failed = true;
array_wr32(E1000_MTA, i, hw->mac.mta_shadow[i]); array_wr32(E1000_MTA, i, hw->mac.mta_shadow[i]);
wrfl(); wrfl();
break;
} }
} }
if (is_failed && --failed_cnt <= 0) {
hw_dbg("Failed to update MTA_REGISTER, too many retries");
break;
}
} while (is_failed); } while (is_failed);
} }
......
...@@ -2343,8 +2343,7 @@ static void igb_get_strings(struct net_device *netdev, u32 stringset, u8 *data) ...@@ -2343,8 +2343,7 @@ static void igb_get_strings(struct net_device *netdev, u32 stringset, u8 *data)
switch (stringset) { switch (stringset) {
case ETH_SS_TEST: case ETH_SS_TEST:
memcpy(data, *igb_gstrings_test, memcpy(data, igb_gstrings_test, sizeof(igb_gstrings_test));
IGB_TEST_LEN*ETH_GSTRING_LEN);
break; break;
case ETH_SS_STATS: case ETH_SS_STATS:
for (i = 0; i < IGB_GLOBAL_STATS_LEN; i++) for (i = 0; i < IGB_GLOBAL_STATS_LEN; i++)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment