qlcnic: Fix potential NULL dereference
authorRajesh Borundia <rajesh.borundia@qlogic.com>
Tue, 2 Apr 2013 05:34:40 +0000 (05:34 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 2 Apr 2013 18:27:10 +0000 (14:27 -0400)
[net-next:master 301/302] drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c:563
 qlcnic_set_multi() error: potential null dereference 'cur'. (kzalloc returns null)

o Break out of the loop after memory allocation failure. Program all the
  MAC addresses that were cached in the return path.

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Rajesh Borundia <rajesh.borundia@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c

index ddc130b23378c6be4bcd2aae31a6659eeae7761a..253b3ac160466c76bb8a578609a3037603f9eb7a 100644 (file)
@@ -560,6 +560,8 @@ void qlcnic_set_multi(struct net_device *netdev)
                        netdev_for_each_mc_addr(ha, netdev) {
                                cur = kzalloc(sizeof(struct qlcnic_mac_list_s),
                                              GFP_ATOMIC);
+                               if (cur == NULL)
+                                       break;
                                memcpy(cur->mac_addr,
                                       ha->addr, ETH_ALEN);
                                list_add_tail(&cur->list, &adapter->vf_mc_list);