Page MenuHomeFreeBSD

D17404.diff
No OneTemporary

D17404.diff

Index: head/sys/kern/subr_gtaskqueue.c
===================================================================
--- head/sys/kern/subr_gtaskqueue.c
+++ head/sys/kern/subr_gtaskqueue.c
@@ -812,6 +812,7 @@
qgroup->tqg_queue[i].tgc_cnt--;
LIST_REMOVE(gtask, gt_list);
mtx_unlock(&qgroup->tqg_lock);
+ gtaskqueue_drain(gtask->gt_taskqueue, &gtask->gt_task);
gtask->gt_taskqueue = NULL;
}
Index: head/sys/net/iflib.c
===================================================================
--- head/sys/net/iflib.c
+++ head/sys/net/iflib.c
@@ -2279,8 +2279,8 @@
STATE_LOCK(ctx);
if_setdrvflagbits(ctx->ifc_ifp, IFF_DRV_OACTIVE, IFF_DRV_RUNNING);
ctx->ifc_flags |= (IFC_DO_WATCHDOG|IFC_DO_RESET);
- iflib_admin_intr_deferred(ctx);
STATE_UNLOCK(ctx);
+ iflib_admin_intr_deferred(ctx);
}
static void
@@ -2802,8 +2802,8 @@
err:
STATE_LOCK(ctx);
ctx->ifc_flags |= IFC_DO_RESET;
- iflib_admin_intr_deferred(ctx);
STATE_UNLOCK(ctx);
+ iflib_admin_intr_deferred(ctx);
return (false);
}
@@ -5973,7 +5973,10 @@
{
#ifdef INVARIANTS
struct grouptask *gtask;
-
+#endif
+ if (iflib_in_detach(ctx))
+ return;
+#ifdef INVARIANTS
gtask = &ctx->ifc_admin_task;
MPASS(gtask != NULL && gtask->gt_taskqueue != NULL);
#endif
@@ -5984,6 +5987,8 @@
void
iflib_iov_intr_deferred(if_ctx_t ctx)
{
+ if (iflib_in_detach(ctx))
+ return;
GROUPTASK_ENQUEUE(&ctx->ifc_vflr_task);
}

File Metadata

Mime Type
text/plain
Expires
Sun, Feb 1, 2:50 PM (9 h, 34 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28394038
Default Alt Text
D17404.diff (1 KB)

Event Timeline