diff options
author | Sritej Velaga <sritej.velaga@qlogic.com> | 2011-08-29 12:50:29 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-08-29 22:52:50 -0400 |
commit | 9254b751492c7fc08497a5c0e0cd668ddd269ea2 (patch) | |
tree | 0835d876bf509dc1dc776ad87ee48cdcef043fbc /drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c | |
parent | a2050c7eeef034521f34df9cb896e72ea6802331 (diff) |
qlcnic: fix cdrp race condition
Reading CRB registers(if reqd) before releasing the api lock.
Signed-off-by: Sritej Velaga <sritej.velaga@qlogic.com>
Signed-off-by: Sony Chacko <sony.chacko@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c')
-rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c index 720b3330aafa..2230a62268aa 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c @@ -659,6 +659,7 @@ static int qlcnic_irq_test(struct net_device *netdev) struct qlcnic_adapter *adapter = netdev_priv(netdev); int max_sds_rings = adapter->max_sds_rings; int ret; + u32 *rd_args[3]; if (test_and_set_bit(__QLCNIC_RESETTING, &adapter->state)) return -EIO; @@ -668,9 +669,10 @@ static int qlcnic_irq_test(struct net_device *netdev) goto clear_it; adapter->diag_cnt = 0; + memset(rd_args, 0, sizeof(rd_args)); ret = qlcnic_issue_cmd(adapter, adapter->ahw->pci_func, adapter->fw_hal_version, adapter->ahw->pci_func, - 0, 0, 0x00000011); + 0, 0, 0x00000011, rd_args); if (ret) goto done; |