summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/emulex/benet/be_main.c
diff options
context:
space:
mode:
authorVenkat Duvvuru <venkatkumar.duvvuru@avagotech.com>2015-12-18 01:40:50 +0530
committerDavid S. Miller <davem@davemloft.net>2015-12-18 15:50:52 -0500
commit6e3cd5fa65318f35ec9c9f61bc5cdb55d4783cb9 (patch)
tree048a86e6d1c078c8eda7e43b4e5453b035397f90 /drivers/net/ethernet/emulex/benet/be_main.c
parent6be842f7ccc2c690232f5094681eb0efae4c1590 (diff)
downloadop-kernel-dev-6e3cd5fa65318f35ec9c9f61bc5cdb55d4783cb9.zip
op-kernel-dev-6e3cd5fa65318f35ec9c9f61bc5cdb55d4783cb9.tar.gz
be2net: Avoid accessing eq object in be_msix_register routine, when i < 0.
When the first request_irq fails in be_msix_register, i value would be zero. The current code decrements the i value and accesses the eq object without validating the decremented "i" value. This can cause an "invalid memory address access" violation. This patch fixes the problem by accessing the eq object after validating the "i" value. Signed-off-by: Venkat Duvvuru <venkatkumar.duvvuru@avagotech.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/emulex/benet/be_main.c')
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index b6ad029..6598820 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -3299,8 +3299,10 @@ static int be_msix_register(struct be_adapter *adapter)
return 0;
err_msix:
- for (i--, eqo = &adapter->eq_obj[i]; i >= 0; i--, eqo--)
+ for (i--; i >= 0; i--) {
+ eqo = &adapter->eq_obj[i];
free_irq(be_msix_vec_get(adapter, eqo), eqo);
+ }
dev_warn(&adapter->pdev->dev, "MSIX Request IRQ failed - err %d\n",
status);
be_msix_disable(adapter);
OpenPOWER on IntegriCloud