1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-12 09:58:36 +00:00

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
This commit is contained in:
Navdeep Parhar 2021-06-04 12:01:14 -07:00
parent 2290dfb40f
commit bb877c0620

View File

@ -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);
}