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:  mm...@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(&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,
@@ -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);
 }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to