git: bb877c062034 - main - cxgbe(4): Empty the clib_db before trying to destroy it.
Navdeep Parhar
np at FreeBSD.org
Fri Jun 4 19:19:31 UTC 2021
The branch main has been updated by np:
URL: https://cgit.FreeBSD.org/src/commit/?id=bb877c0620347eb86f25f4382c42d58685c348d4
commit bb877c0620347eb86f25f4382c42d58685c348d4
Author: Navdeep Parhar <np at FreeBSD.org>
AuthorDate: 2021-06-04 19:01:14 +0000
Commit: Navdeep Parhar <np at 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);
}
More information about the dev-commits-src-all
mailing list