i40e: Fix NULL ptr dereference on VSI filter sync
Remove the reason of null pointer dereference in sync VSI filters.
Added new I40E_VSI_RELEASING flag to signalize deleting and releasing
of VSI resources to sync this thread with sync filters subtask.
Without this patch it is possible to start update the VSI filter list
after VSI is removed, that's causing a kernel oops.
Fixes: 41c445ff0f
("i40e: main driver core")
Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
Signed-off-by: Michal Maloszewski <michal.maloszewski@intel.com>
Reviewed-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
Reviewed-by: Witold Fijalkowski <witoldx.fijalkowski@intel.com>
Reviewed-by: Jaroslaw Gawin <jaroslawx.gawin@intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Tested-by: Tony Brelinski <tony.brelinski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
6afbd7b3c5
commit
37d9e304ac
|
@ -161,6 +161,7 @@ enum i40e_vsi_state_t {
|
|||
__I40E_VSI_OVERFLOW_PROMISC,
|
||||
__I40E_VSI_REINIT_REQUESTED,
|
||||
__I40E_VSI_DOWN_REQUESTED,
|
||||
__I40E_VSI_RELEASING,
|
||||
/* This must be last as it determines the size of the BITMAP */
|
||||
__I40E_VSI_STATE_SIZE__,
|
||||
};
|
||||
|
|
|
@ -2623,7 +2623,8 @@ static void i40e_sync_filters_subtask(struct i40e_pf *pf)
|
|||
|
||||
for (v = 0; v < pf->num_alloc_vsi; v++) {
|
||||
if (pf->vsi[v] &&
|
||||
(pf->vsi[v]->flags & I40E_VSI_FLAG_FILTER_CHANGED)) {
|
||||
(pf->vsi[v]->flags & I40E_VSI_FLAG_FILTER_CHANGED) &&
|
||||
!test_bit(__I40E_VSI_RELEASING, pf->vsi[v]->state)) {
|
||||
int ret = i40e_sync_vsi_filters(pf->vsi[v]);
|
||||
|
||||
if (ret) {
|
||||
|
@ -13771,7 +13772,7 @@ int i40e_vsi_release(struct i40e_vsi *vsi)
|
|||
dev_info(&pf->pdev->dev, "Can't remove PF VSI\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
set_bit(__I40E_VSI_RELEASING, vsi->state);
|
||||
uplink_seid = vsi->uplink_seid;
|
||||
if (vsi->type != I40E_VSI_SRIOV) {
|
||||
if (vsi->netdev_registered) {
|
||||
|
|
Loading…
Reference in New Issue