aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorManish Chopra <manish.chopra@qlogic.com>2013-07-19 16:56:30 -0400
committerDavid S. Miller <davem@davemloft.net>2013-07-19 20:08:16 -0400
commitcab150b5874babb0a3d558c10d28c936fdf6ac69 (patch)
treeeffb9ef8396bfce9152002c60c2b84c0624b6c1c /drivers/net
parent8dc394af2e6159d3799b1219625db47c42a1964f (diff)
qlcnic: Fix panic while setting VF's MAC address
o "qlcnic_sriov" structure pointer should be accessed only when SR-IOV is enabled. Access this pointer after SR-IOV PF check. Signed-off-by: Manish Chopra <manish.chopra@qlogic.com> Signed-off-by: Sucheta Chakraborty <sucheta.chakraborty@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c
index ee0c1d307966..b9b88f3a7b51 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c
@@ -1621,13 +1621,15 @@ int qlcnic_sriov_set_vf_mac(struct net_device *netdev, int vf, u8 *mac)
1621{ 1621{
1622 struct qlcnic_adapter *adapter = netdev_priv(netdev); 1622 struct qlcnic_adapter *adapter = netdev_priv(netdev);
1623 struct qlcnic_sriov *sriov = adapter->ahw->sriov; 1623 struct qlcnic_sriov *sriov = adapter->ahw->sriov;
1624 int i, num_vfs = sriov->num_vfs; 1624 int i, num_vfs;
1625 struct qlcnic_vf_info *vf_info; 1625 struct qlcnic_vf_info *vf_info;
1626 u8 *curr_mac; 1626 u8 *curr_mac;
1627 1627
1628 if (!qlcnic_sriov_pf_check(adapter)) 1628 if (!qlcnic_sriov_pf_check(adapter))
1629 return -EOPNOTSUPP; 1629 return -EOPNOTSUPP;
1630 1630
1631 num_vfs = sriov->num_vfs;
1632
1631 if (!is_valid_ether_addr(mac) || vf >= num_vfs) 1633 if (!is_valid_ether_addr(mac) || vf >= num_vfs)
1632 return -EINVAL; 1634 return -EINVAL;
1633 1635