[dpdk-stable] patch 'net/bnxt: fix checking VNIC in shutdown path' has been queued to stable release 19.11.6

Somnath Kotur somnath.kotur at broadcom.com
Thu Oct 29 07:29:33 CET 2020


On Wed, Oct 28, 2020 at 4:18 PM <luca.boccassi at gmail.com> wrote:
>
> Hi,
>
> FYI, your patch has been queued to stable release 19.11.6
>
> Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
> It will be pushed if I get no objections before 10/30/20. So please
> shout if anyone has objections.
>
> Also note that after the patch there's a diff of the upstream commit vs the
> patch applied to the branch. This will indicate if there was any rebasing
> needed to apply to the stable branch. If there were code changes for rebasing
> (ie: not only metadata diffs), please double check that the rebase was
> correctly done.
>
> Thanks.
>
> Luca Boccassi
>
> ---
> From 590892526b436a852d0af36e55be8e15e110a1f1 Mon Sep 17 00:00:00 2001
> From: Somnath Kotur <somnath.kotur at broadcom.com>
> Date: Thu, 10 Sep 2020 18:56:02 -0700
> Subject: [PATCH] net/bnxt: fix checking VNIC in shutdown path
>
> [ upstream commit 4b029f02de3a0ce9cdd9a3475b84ca2e42d74281 ]
>
> Add a couple of NULL pointer checks in bnxt_free_all_filters()
> and bnxt_free_vnics() respectively to guard against certain error
> injection/recovery scenarios where it was found that the application
> was crashing with the bp->vnic_info pointer being NULL.
>
> Fixes: 51fafb89a9a0 ("net/bnxt: get rid of ff pools and use VNIC info array")
>
> Signed-off-by: Somnath Kotur <somnath.kotur at broadcom.com>
> Reviewed-by: Ajit Khaparde <ajit.khaparde at broadcom.com>
> ---
>  drivers/net/bnxt/bnxt_filter.c | 15 +++++++++------
>  drivers/net/bnxt/bnxt_vnic.c   |  3 +++
>  2 files changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/bnxt/bnxt_filter.c b/drivers/net/bnxt/bnxt_filter.c
> index 622a9bb417..f4b18d5b84 100644
> --- a/drivers/net/bnxt/bnxt_filter.c
> +++ b/drivers/net/bnxt/bnxt_filter.c
> @@ -81,6 +81,15 @@ void bnxt_free_all_filters(struct bnxt *bp)
>         struct bnxt_filter_info *filter, *temp_filter;
>         unsigned int i;
>
> +       for (i = 0; i < bp->pf.max_vfs; i++) {
> +               STAILQ_FOREACH(filter, &bp->pf.vf_info[i].filter, next) {
> +                       bnxt_hwrm_clear_l2_filter(bp, filter);
> +               }
> +       }
> +
> +       if (bp->vnic_info == NULL)
> +               return;
> +
>         for (i = 0; i < bp->nr_vnics; i++) {
>                 vnic = &bp->vnic_info[i];
>                 filter = STAILQ_FIRST(&vnic->filter);
> @@ -94,12 +103,6 @@ void bnxt_free_all_filters(struct bnxt *bp)
>                 }
>                 STAILQ_INIT(&vnic->filter);
>         }
> -
> -       for (i = 0; i < bp->pf.max_vfs; i++) {
> -               STAILQ_FOREACH(filter, &bp->pf.vf_info[i].filter, next) {
> -                       bnxt_hwrm_clear_l2_filter(bp, filter);
> -               }
> -       }
>  }
>
>  void bnxt_free_filter_mem(struct bnxt *bp)
> diff --git a/drivers/net/bnxt/bnxt_vnic.c b/drivers/net/bnxt/bnxt_vnic.c
> index bc054a8e0e..ef07721148 100644
> --- a/drivers/net/bnxt/bnxt_vnic.c
> +++ b/drivers/net/bnxt/bnxt_vnic.c
> @@ -78,6 +78,9 @@ void bnxt_free_all_vnics(struct bnxt *bp)
>         struct bnxt_vnic_info *vnic;
>         unsigned int i;
>
> +       if (bp->vnic_info == NULL)
> +               return;
> +
>         for (i = 0; i < bp->max_vnics; i++) {
>                 vnic = &bp->vnic_info[i];
>                 STAILQ_INSERT_TAIL(&bp->free_vnic_list, vnic, next);
> --
> 2.20.1
>
> ---
>   Diff of the applied patch vs upstream commit (please double-check if non-empty:
> ---
> --- -   2020-10-28 10:35:13.164340871 +0000
> +++ 0044-net-bnxt-fix-checking-VNIC-in-shutdown-path.patch      2020-10-28 10:35:11.504830024 +0000
> @@ -1,33 +1,34 @@
> -From 4b029f02de3a0ce9cdd9a3475b84ca2e42d74281 Mon Sep 17 00:00:00 2001
> +From 590892526b436a852d0af36e55be8e15e110a1f1 Mon Sep 17 00:00:00 2001
>  From: Somnath Kotur <somnath.kotur at broadcom.com>
>  Date: Thu, 10 Sep 2020 18:56:02 -0700
>  Subject: [PATCH] net/bnxt: fix checking VNIC in shutdown path
>
> +[ upstream commit 4b029f02de3a0ce9cdd9a3475b84ca2e42d74281 ]
> +
>  Add a couple of NULL pointer checks in bnxt_free_all_filters()
>  and bnxt_free_vnics() respectively to guard against certain error
>  injection/recovery scenarios where it was found that the application
>  was crashing with the bp->vnic_info pointer being NULL.
>
>  Fixes: 51fafb89a9a0 ("net/bnxt: get rid of ff pools and use VNIC info array")
> -Cc: stable at dpdk.org
>
>  Signed-off-by: Somnath Kotur <somnath.kotur at broadcom.com>
>  Reviewed-by: Ajit Khaparde <ajit.khaparde at broadcom.com>
>  ---
> - drivers/net/bnxt/bnxt_filter.c | 14 +++++++++-----
> + drivers/net/bnxt/bnxt_filter.c | 15 +++++++++------
>   drivers/net/bnxt/bnxt_vnic.c   |  3 +++
> - 2 files changed, 12 insertions(+), 5 deletions(-)
> + 2 files changed, 12 insertions(+), 6 deletions(-)
>
>  diff --git a/drivers/net/bnxt/bnxt_filter.c b/drivers/net/bnxt/bnxt_filter.c
> -index d822ff607c..6d85983242 100644
> +index 622a9bb417..f4b18d5b84 100644
>  --- a/drivers/net/bnxt/bnxt_filter.c
>  +++ b/drivers/net/bnxt/bnxt_filter.c
>  @@ -81,6 +81,15 @@ void bnxt_free_all_filters(struct bnxt *bp)
>         struct bnxt_filter_info *filter, *temp_filter;
>         unsigned int i;
>
> -+      for (i = 0; i < bp->pf->max_vfs; i++) {
> -+              STAILQ_FOREACH(filter, &bp->pf->vf_info[i].filter, next) {
> ++      for (i = 0; i < bp->pf.max_vfs; i++) {
> ++              STAILQ_FOREACH(filter, &bp->pf.vf_info[i].filter, next) {
>  +                      bnxt_hwrm_clear_l2_filter(bp, filter);
>  +              }
>  +      }
> @@ -38,12 +39,13 @@
>         for (i = 0; i < bp->nr_vnics; i++) {
>                 vnic = &bp->vnic_info[i];
>                 filter = STAILQ_FIRST(&vnic->filter);
> -@@ -95,11 +104,6 @@ void bnxt_free_all_filters(struct bnxt *bp)
> +@@ -94,12 +103,6 @@ void bnxt_free_all_filters(struct bnxt *bp)
> +               }
>                 STAILQ_INIT(&vnic->filter);
>         }
> -
> --      for (i = 0; i < bp->pf->max_vfs; i++) {
> --              STAILQ_FOREACH(filter, &bp->pf->vf_info[i].filter, next) {
> +-
> +-      for (i = 0; i < bp->pf.max_vfs; i++) {
> +-              STAILQ_FOREACH(filter, &bp->pf.vf_info[i].filter, next) {
>  -                      bnxt_hwrm_clear_l2_filter(bp, filter);
>  -              }
>  -      }
> @@ -51,7 +53,7 @@
>
>   void bnxt_free_filter_mem(struct bnxt *bp)
>  diff --git a/drivers/net/bnxt/bnxt_vnic.c b/drivers/net/bnxt/bnxt_vnic.c
> -index 326c0d1b6d..9a135ae881 100644
> +index bc054a8e0e..ef07721148 100644
>  --- a/drivers/net/bnxt/bnxt_vnic.c
>  +++ b/drivers/net/bnxt/bnxt_vnic.c
>  @@ -78,6 +78,9 @@ void bnxt_free_all_vnics(struct bnxt *bp)

Luca,
          I see that the rebase is not correct, you'd want me to
re-spin the corrected version and send it to the 'stable' mailing
list, right?

Thanks
Som


More information about the stable mailing list