bnx2x: allocate memory dynamically in ethtool self-test.
authorMintz Yuval <yuvalmin@broadcom.com>
Wed, 15 Feb 2012 02:10:27 +0000 (02:10 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 15 Feb 2012 20:30:49 +0000 (15:30 -0500)
From: Merav Sicron <meravs@broadcom.com>

Current ethtool self tests usesa large buffer on stack. This patch replaces
that array by dynamically allocated memory

Signed-off-by: Merav Sicron <meravs@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c

index 4cbd474..c18dc1d 100644 (file)
@@ -2016,14 +2016,22 @@ static int bnx2x_test_nvram(struct bnx2x *bp)
                { 0x708,  0x70 }, /* manuf_key_info */
                {     0,     0 }
        };
-       __be32 buf[0x350 / 4];
-       u8 *data = (u8 *)buf;
+       __be32 *buf;
+       u8 *data;
        int i, rc;
        u32 magic, crc;
 
        if (BP_NOMCP(bp))
                return 0;
 
+       buf = kmalloc(0x350, GFP_KERNEL);
+       if (!buf) {
+               DP(NETIF_MSG_PROBE, "kmalloc failed\n");
+               rc = -ENOMEM;
+               goto test_nvram_exit;
+       }
+       data = (u8 *)buf;
+
        rc = bnx2x_nvram_read(bp, 0, data, 4);
        if (rc) {
                DP(NETIF_MSG_PROBE, "magic value read (rc %d)\n", rc);
@@ -2057,6 +2065,7 @@ static int bnx2x_test_nvram(struct bnx2x *bp)
        }
 
 test_nvram_exit:
+       kfree(buf);
        return rc;
 }