i40evf: check for msix_entries null dereference
It is possible for msix_entries to be freed by a previous suspend/remove before a VF is closed. This patch fixes the issue by checking for NULL before dereferencing msix_entries and returning early in the case where it is NULL within the i40evf_close code path. Without this patch it is possible to trigger a kernel panic through NULL dereference. Change-ID: I92a2746e82533a889e25f91578eac9abd0388ae2 Signed-off-by: Alan Brady <alan.brady@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
Родитель
dedecb6d42
Коммит
47d2a5d827
|
@ -631,6 +631,9 @@ static void i40evf_free_traffic_irqs(struct i40evf_adapter *adapter)
|
|||
{
|
||||
int vector, irq_num, q_vectors;
|
||||
|
||||
if (!adapter->msix_entries)
|
||||
return;
|
||||
|
||||
q_vectors = adapter->num_msix_vectors - NONQ_VECS;
|
||||
|
||||
for (vector = 0; vector < q_vectors; vector++) {
|
||||
|
@ -1443,6 +1446,9 @@ static void i40evf_free_q_vectors(struct i40evf_adapter *adapter)
|
|||
**/
|
||||
void i40evf_reset_interrupt_capability(struct i40evf_adapter *adapter)
|
||||
{
|
||||
if (!adapter->msix_entries)
|
||||
return;
|
||||
|
||||
pci_disable_msix(adapter->pdev);
|
||||
kfree(adapter->msix_entries);
|
||||
adapter->msix_entries = NULL;
|
||||
|
|
Загрузка…
Ссылка в новой задаче