Page MenuHomeFreeBSD

D7799.id20149.diff
No OneTemporary

D7799.id20149.diff

Index: sys/kern/subr_gtaskqueue.c
===================================================================
--- sys/kern/subr_gtaskqueue.c
+++ sys/kern/subr_gtaskqueue.c
@@ -797,6 +797,9 @@
qid = i;
break;
}
+ if (i == qgroup->tqg_cnt)
+ panic("taskqgroup_adjust: Failed to pick a qid"
+ " for gtask cpu %d.", (int)gtask->gt_cpu);
}
qgroup->tqg_queue[qid].tgc_cnt++;
LIST_INSERT_HEAD(&qgroup->tqg_queue[qid].tgc_tasks, gtask,
Index: sys/net/iflib.c
===================================================================
--- sys/net/iflib.c
+++ sys/net/iflib.c
@@ -4303,7 +4303,9 @@
/* clear up to the qid'th bit */
for (i = 0; i < qid; i++) {
cpuid = CPU_FFS(cpus);
- CPU_CLR(cpuid, cpus);
+ KASSERT(cpuid != 0, ("find_nth: No CPU %d", i));
+ KASSERT(!CPU_ABSENT(cpuid - 1), ("find_nth: Absent CPU %d", cpuid - 1));
+ CPU_CLR(cpuid - 1, cpus);
}
}
@@ -4317,7 +4319,7 @@
iflib_filter_info_t info;
cpuset_t cpus;
gtask_fn_t *fn;
- int tqrid, err;
+ int tqrid, err, cpu;
void *q;
info = &ctx->ifc_filter_info;
@@ -4364,7 +4366,10 @@
return (err);
if (tqrid != -1) {
find_nth(ctx, &cpus, qid);
- taskqgroup_attach_cpu(tqg, gtask, q, CPU_FFS(&cpus), irq->ii_rid, name);
+ cpu = CPU_FFS(&cpus);
+ KASSERT(cpu != 0, ("no CPU at qid %d", qid));
+ KASSERT(!CPU_ABSENT(cpu - 1), ("Absent CPU %d", cpu - 1));
+ taskqgroup_attach_cpu(tqg, gtask, q, cpu - 1, irq->ii_rid, name);
} else
taskqgroup_attach(tqg, gtask, q, tqrid, name);

File Metadata

Mime Type
text/plain
Expires
Fri, Jun 26, 9:04 AM (4 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34351658
Default Alt Text
D7799.id20149.diff (1 KB)

Event Timeline