Thread (36 messages) 36 messages, 10 authors, 2011-09-28

Re: [net-next 01/13] ixgb: eliminate checkstack warnings

From: Jesse Brandeburg <hidden>
Date: 2011-09-19 21:36:31

On Sat, 17 Sep 2011 01:43:26 -0700
Joe Perches [off-list ref] wrote:
On Sat, 2011-09-17 at 01:04 -0700, Jeff Kirsher wrote:
quoted
From: Jesse Brandeburg <redacted>
Really trivial fix, use kzalloc/kree instead of stack space.
Some more trivialities...
quoted
diff --git a/drivers/net/ethernet/intel/ixgb/ixgb_main.c
b/drivers/net/ethernet/intel/ixgb/ixgb_main.c\
[]
quoted
@@ -1120,8 +1120,12 @@ ixgb_set_multi(struct net_device *netdev)
 		rctl |= IXGB_RCTL_MPE;
 		IXGB_WRITE_REG(hw, RCTL, rctl);
 	} else {
-		u8 mta[IXGB_MAX_NUM_MULTICAST_ADDRESSES *
-			    IXGB_ETH_LENGTH_OF_ADDRESS];
+		u8 *mta = kzalloc(IXGB_MAX_NUM_MULTICAST_ADDRESSES
*
+			      IXGB_ETH_LENGTH_OF_ADDRESS,
GFP_KERNEL);
This doesn't need to be kzalloc as every byte is overwritten.
It should be kmalloc.
done, V2 on its way
Maybe delete the #define IXGB_ETH_LENGTH_OF_ADDRESS and
sed 's/\bIXGB_ETH_LENGTH_OF_ADDRESS\b/ETH_ALEN/g' ?
done

 
Perhaps this loop could be clearer without the multiply:

		i = 0;
		netdev_for_each_mc_addr(ha, netdev)
			memcpy(&mta[i++ * IXGB_ETH_LENGTH_OF_ADDRESS],
			       ha->addr, IXGB_ETH_LENGTH_OF_ADDRESS);

Perhaps:

		u8 *addr = mta;
		netdev_for_each_mc_addr(ha, netdev) {
			memcpy(addr, ha->addr, ETH_ALEN);
			addr += ETH_ALEN;
		}
done, but because of the nature of the changes being code flow, I'm
going to retest through our lab.  V2 will hopefully be at the list
shortly.

Thanks for the feedback,
 Jesse
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help