cxgb3: avoid needless buffer copy for firmware
authorKees Cook <keescook@chromium.org>
Tue, 16 Jun 2015 22:36:17 +0000 (15:36 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 21 Jun 2015 16:49:55 +0000 (09:49 -0700)
There's no reason to perform a buffer copy for the firmware name. This
also avoids a (currently impossible with current callers) NULL dereference
if there was no matching firmware.

Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c

index b96e4bfcac41a8086d5fbb45bf508bd5175072ee..8f7aa53a4c4bec39040dc88fbf7640a3ea6a2389 100644 (file)
@@ -1025,19 +1025,19 @@ int t3_get_edc_fw(struct cphy *phy, int edc_idx, int size)
 {
        struct adapter *adapter = phy->adapter;
        const struct firmware *fw;
-       char buf[64];
+       const char *fw_name;
        u32 csum;
        const __be32 *p;
        u16 *cache = phy->phy_cache;
-       int i, ret;
-
-       snprintf(buf, sizeof(buf), get_edc_fw_name(edc_idx));
+       int i, ret = -EINVAL;
 
-       ret = request_firmware(&fw, buf, &adapter->pdev->dev);
+       fw_name = get_edc_fw_name(edc_idx);
+       if (fw_name)
+               ret = request_firmware(&fw, fw_name, &adapter->pdev->dev);
        if (ret < 0) {
                dev_err(&adapter->pdev->dev,
                        "could not upgrade firmware: unable to load %s\n",
-                       buf);
+                       fw_name);
                return ret;
        }