summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2018-02-02 17:56:47 +0000
committermav <mav@FreeBSD.org>2018-02-02 17:56:47 +0000
commit1c9c9edbe3f90e3cd9478fe0f7fc6ec3d21d9aa5 (patch)
tree98e34cde50c3c6ecb478a70c6a43dd8e0c17cd82
parent95dd5889f9f9b98296ec67cf8516c96098b8309b (diff)
downloadFreeBSD-src-1c9c9edbe3f90e3cd9478fe0f7fc6ec3d21d9aa5.zip
FreeBSD-src-1c9c9edbe3f90e3cd9478fe0f7fc6ec3d21d9aa5.tar.gz
MFC r307041 (by sbruno):
Fix bug where malloc(.., M_NOWAIT) return value is not checked, Change to M_WAITOK and move outside the mutex
-rw-r--r--sys/kern/subr_gtaskqueue.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/kern/subr_gtaskqueue.c b/sys/kern/subr_gtaskqueue.c
index 07bbc36..3e33eaa 100644
--- a/sys/kern/subr_gtaskqueue.c
+++ b/sys/kern/subr_gtaskqueue.c
@@ -729,7 +729,7 @@ taskqgroup_bind(struct taskqgroup *qgroup)
* 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(&gtask->bt_task, 0, 0, taskqgroup_binder, gtask);
gtask->bt_cpuid = qgroup->tqg_queue[i].tgc_cpu;
grouptaskqueue_enqueue(qgroup->tqg_queue[i].tgc_taskq,
@@ -828,11 +828,11 @@ _taskqgroup_adjust(struct taskqgroup *qgroup, int cnt, int stride)
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);
}
OpenPOWER on IntegriCloud