Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Jun 2021 19:19:31 GMT
From:      Navdeep Parhar <np@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: bb877c062034 - main - cxgbe(4): Empty the clib_db before trying to destroy it.
Message-ID:  <202106041919.154JJVGk005924@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by np:

URL: https://cgit.FreeBSD.org/src/commit/?id=bb877c0620347eb86f25f4382c42d58685c348d4

commit bb877c0620347eb86f25f4382c42d58685c348d4
Author:     Navdeep Parhar <np@FreeBSD.org>
AuthorDate: 2021-06-04 19:01:14 +0000
Commit:     Navdeep Parhar <np@FreeBSD.org>
CommitDate: 2021-06-04 19:01:14 +0000

    cxgbe(4): Empty the clib_db before trying to destroy it.
    
    This fixes a panic on driver unload.
    
    Reported by:    Jithesh Arakkan @ Chelsio
    MFC after:      1 week
    Sponsored by:   Chelsio Communications
---
 sys/dev/cxgbe/t4_clip.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/sys/dev/cxgbe/t4_clip.c b/sys/dev/cxgbe/t4_clip.c
index 98734d6d11ce..5f4fbd0f07a6 100644
--- a/sys/dev/cxgbe/t4_clip.c
+++ b/sys/dev/cxgbe/t4_clip.c
@@ -854,8 +854,21 @@ t4_clip_modload(void)
 void
 t4_clip_modunload(void)
 {
+	struct clip_db_entry *cde;
+	int i;
+
 	EVENTHANDLER_DEREGISTER(ifaddr_event_ext, ifaddr_evhandler);
 	taskqueue_drain(taskqueue_thread, &clip_db_task);
+	mtx_lock(&clip_db_lock);
+	for (i = 0; i <= clip_db_mask; i++) {
+		while ((cde = LIST_FIRST(&clip_db[i])) != NULL) {
+			MPASS(cde->tmp_ref == 0);
+			MPASS(cde->adp_ref == 0);
+			LIST_REMOVE(cde, link);
+			free(cde, M_CXGBE);
+		}
+	}
+	mtx_unlock(&clip_db_lock);
 	hashdestroy(clip_db, M_CXGBE, clip_db_mask);
 	mtx_destroy(&clip_db_lock);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202106041919.154JJVGk005924>