diff options
author | Manish Chopra <manish.chopra@qlogic.com> | 2013-07-19 16:56:30 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-07-19 20:08:16 -0400 |
commit | cab150b5874babb0a3d558c10d28c936fdf6ac69 (patch) | |
tree | effb9ef8396bfce9152002c60c2b84c0624b6c1c /drivers/net | |
parent | 8dc394af2e6159d3799b1219625db47c42a1964f (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.c | 4 |
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 | ||