[Intel-wired-lan] [PATCH net v2] i40e: Fix queues reservation scheme
Paul Menzel
pmenzel at molgen.mpg.de
Mon Sep 6 07:35:01 UTC 2021
Dear Jedrzej,
Am 06.09.21 um 09:32 schrieb Jedrzej Jagielski:
> Depending on the CPU count and NVM configuration, PF reset and
> rebuild may fail if more queues are allocated (e.g. attach XDP program),
> causes kernel NULL pointer dereference. The issue is that during rebuild,
> FDIR VSI's queue pile is not zeroed, despite no VSIs, but PF exisiting.
> The change causes all queue pairs released from the queue pile.
>
> Fixes: bc7d338fbb3f ("i40e: reinit flow for the main VSI")
> Signed-off-by: Przemyslaw Patynowski <przemyslawx.patynowski at intel.com>
> Signed-off-by: Lukasz Cieplicki <lukaszx.cieplicki at intel.com>
> Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski at intel.com>
> ---
> drivers/net/ethernet/intel/i40e/i40e_main.c | 19 ++++++++++++++++++-
> 1 file changed, 18 insertions(+), 1 deletion(-)
What changed between v1 and v2?
Kind regards,
Paul
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
> index 4fe4ab962888..e56c81c2e7ab 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
> @@ -221,6 +221,23 @@ static int i40e_get_lump(struct i40e_pf *pf, struct i40e_lump_tracking *pile,
> return ret;
> }
>
> +/**
> + * i40e_put_all_lump - return a lump of generic resource
> + * @pile: the pile of resource to search
> + *
> + * Returns the count of items in the lump
> + **/
> +static void i40e_put_all_lump(struct i40e_lump_tracking *pile)
> +{
> + u16 i;
> +
> + if (!pile)
> + return;
> +
> + for (i = 0; i < pile->num_entries; i++)
> + pile->list[i] = 0;
> +}
> +
> /**
> * i40e_put_lump - return a lump of generic resource
> * @pile: the pile of resource to search
> @@ -14109,7 +14126,7 @@ static struct i40e_vsi *i40e_vsi_reinit_setup(struct i40e_vsi *vsi)
>
> pf = vsi->back;
>
> - i40e_put_lump(pf->qp_pile, vsi->base_queue, vsi->idx);
> + i40e_put_all_lump(pf->qp_pile);
> i40e_vsi_clear_rings(vsi);
>
> i40e_vsi_free_arrays(vsi, false);
>
More information about the Intel-wired-lan
mailing list