svn commit: r307041 - head/sys/kern
Sean Bruno
sbruno at FreeBSD.org
Tue Oct 11 14:08:54 UTC 2016
Author: sbruno
Date: Tue Oct 11 14:08:53 2016
New Revision: 307041
URL: https://svnweb.freebsd.org/changeset/base/307041
Log:
Fix bug where malloc(.., M_NOWAIT) return value is not checked, Change to
M_WAITOK and move outside the mutex
Submitted by: shurd
Reviewed by: mmacy at nextbsd.org
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D7649
Modified:
head/sys/kern/subr_gtaskqueue.c
Modified: head/sys/kern/subr_gtaskqueue.c
==============================================================================
--- head/sys/kern/subr_gtaskqueue.c Tue Oct 11 13:30:39 2016 (r307040)
+++ head/sys/kern/subr_gtaskqueue.c Tue Oct 11 14:08:53 2016 (r307041)
@@ -728,7 +728,7 @@ taskqgroup_bind(struct taskqgroup *qgrou
* one.
*/
for (i = 0; i < qgroup->tqg_cnt; i++) {
- gtask = malloc(sizeof (*gtask), M_DEVBUF, M_NOWAIT);
+ gtask = malloc(sizeof (*gtask), M_DEVBUF, M_WAITOK);
GTASK_INIT(>ask->bt_task, 0, 0, taskqgroup_binder, gtask);
gtask->bt_cpuid = qgroup->tqg_queue[i].tgc_cpu;
grouptaskqueue_enqueue(qgroup->tqg_queue[i].tgc_taskq,
@@ -827,11 +827,11 @@ _taskqgroup_adjust(struct taskqgroup *qg
for (i = cnt; i < old_cnt; i++)
taskqgroup_cpu_remove(qgroup, i);
+ taskqgroup_bind(qgroup);
+
mtx_lock(&qgroup->tqg_lock);
qgroup->tqg_adjusting = 0;
- taskqgroup_bind(qgroup);
-
return (0);
}
More information about the svn-src-all
mailing list