net/bnxt: fix a null dereference in cleanup label
Checks
Commit Message
Fixes: a46bbb57605b4 ("net/bnxt: update multi device design")
In tf_session_create(), there is a case that with 'tfp->session' still
be NULL and run 'goto cleanup', which will leads to a null dereference
by 'tfp_free(tfp->session->core_data)' in the cleanup.
Signed-off-by: Weiguo Li <liwg06@foxmail.com>
---
drivers/net/bnxt/tf_core/tf_session.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
Comments
On Thu, Feb 24, 2022 at 7:54 AM Weiguo Li <liwg06@foxmail.com> wrote:
>
> Fixes: a46bbb57605b4 ("net/bnxt: update multi device design")
>
> In tf_session_create(), there is a case that with 'tfp->session' still
> be NULL and run 'goto cleanup', which will leads to a null dereference
> by 'tfp_free(tfp->session->core_data)' in the cleanup.
>
> Signed-off-by: Weiguo Li <liwg06@foxmail.com>
Patch applied to dpdk-next-net-brcm.
Thanks
> ---
> drivers/net/bnxt/tf_core/tf_session.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/bnxt/tf_core/tf_session.c b/drivers/net/bnxt/tf_core/tf_session.c
> index 9f849a0a76..c30c0e7029 100644
> --- a/drivers/net/bnxt/tf_core/tf_session.c
> +++ b/drivers/net/bnxt/tf_core/tf_session.c
> @@ -230,10 +230,12 @@ tf_session_create(struct tf *tfp,
> "FW Session close failed, rc:%s\n",
> strerror(-rc));
> }
> + if (tfp->session) {
> + tfp_free(tfp->session->core_data);
> + tfp_free(tfp->session);
> + tfp->session = NULL;
> + }
>
> - tfp_free(tfp->session->core_data);
> - tfp_free(tfp->session);
> - tfp->session = NULL;
> return rc;
> }
>
> --
> 2.25.1
>
@@ -230,10 +230,12 @@ tf_session_create(struct tf *tfp,
"FW Session close failed, rc:%s\n",
strerror(-rc));
}
+ if (tfp->session) {
+ tfp_free(tfp->session->core_data);
+ tfp_free(tfp->session);
+ tfp->session = NULL;
+ }
- tfp_free(tfp->session->core_data);
- tfp_free(tfp->session);
- tfp->session = NULL;
return rc;
}