[PATCH] ixgbevf: don't release the soft entries

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch fix an oops issue caused by NULL pointer. The call stack
may be like this:
[<ffffffffa04dae0b>] ixgbevf_down+0x10b/0x300 [ixgbevf]
[<ffffffffa04dc6bd>] ixgbevf_open+0x27d/0x2b0 [ixgbevf]
[<ffffffff813866b7>] __dev_open+0xa7/0x100
[<ffffffff81386745>] dev_open+0x35/0x60

When opening the net device, we are trying to request msix irqs,
if failed, the error procedure released the msix entries and disabled
the MSI-X interrupts in pci level. However, if the request is not
succeeded, the ixgbevf_down is called, it synchronizes the irq by
referring to the msix_entries, it may cause oops as to NULL pointer
references.

The msix_entries may be allocated in probe procedure and be released
in remove routine may be the best way. So we removed this error
processing action. Then we may try to reopen the device, all we must
reload the driver.

Signed-off-by: Li Xun <xunleer.li@xxxxxxxxxx>
---
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index c3db6cd..f176208 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -944,9 +944,6 @@ free_queue_irqs:
 		free_irq(adapter->msix_entries[vector].vector,
 			 adapter->q_vector[vector]);
 	}
-	pci_disable_msix(adapter->pdev);
-	kfree(adapter->msix_entries);
-	adapter->msix_entries = NULL;
 	return err;
 }

-- 
1.8.0


--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]