42 lines
1.2 KiB
Diff
42 lines
1.2 KiB
Diff
|
From 02fb24d24bd705822254133fa82c007ab3487af8 Mon Sep 17 00:00:00 2001
|
||
|
From: Selvin Xavier <selvin.xavier@broadcom.com>
|
||
|
Date: Sun, 16 Jan 2022 11:10:08 -0800
|
||
|
Subject: [PATCH] bnxt_re/lib: Check pointer validity while freeing queue
|
||
|
pointers
|
||
|
|
||
|
qp->jrqq can be NULL in SRQ case or when accessed from error path.
|
||
|
Avoid segfault by adding check before accessing qp->jrqq and qp->jsqq.
|
||
|
|
||
|
Fixes: f92837e29fd4 ("bnxt_re/lib: consolidate hwque and swque in common structure")
|
||
|
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
|
||
|
---
|
||
|
providers/bnxt_re/verbs.c | 12 ++++++++----
|
||
|
1 file changed, 8 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/providers/bnxt_re/verbs.c b/providers/bnxt_re/verbs.c
|
||
|
index 14fb58b7..ca113537 100644
|
||
|
--- a/providers/bnxt_re/verbs.c
|
||
|
+++ b/providers/bnxt_re/verbs.c
|
||
|
@@ -820,10 +820,14 @@ static int bnxt_re_check_qp_limits(struct bnxt_re_context *cntx,
|
||
|
|
||
|
static void bnxt_re_free_queue_ptr(struct bnxt_re_qp *qp)
|
||
|
{
|
||
|
- free(qp->jrqq->hwque);
|
||
|
- free(qp->jrqq);
|
||
|
- free(qp->jsqq->hwque);
|
||
|
- free(qp->jsqq);
|
||
|
+ if (qp->jrqq) {
|
||
|
+ free(qp->jrqq->hwque);
|
||
|
+ free(qp->jrqq);
|
||
|
+ }
|
||
|
+ if (qp->jsqq) {
|
||
|
+ free(qp->jsqq->hwque);
|
||
|
+ free(qp->jsqq);
|
||
|
+ }
|
||
|
}
|
||
|
|
||
|
static int bnxt_re_alloc_queue_ptr(struct bnxt_re_qp *qp,
|
||
|
--
|
||
|
2.31.1
|
||
|
|