[PATCH] Unchecked alloc_percpu() return in __create_workqueue()
authorBen Collins <bcollins@debian.org>
Sun, 8 Jan 2006 09:03:04 +0000 (01:03 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 9 Jan 2006 04:13:54 +0000 (20:13 -0800)
__create_workqueue() not checking return of alloc_percpu()

NULL dereference was possible.

Signed-off-by: Ben Collins <bcollins@ubuntu.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
kernel/workqueue.c

index 62d47220696a621d10661d82121719ce37a9c156..e72fb6478da6efa2ffc780eefcbb3228cccd2298 100644 (file)
@@ -315,6 +315,11 @@ struct workqueue_struct *__create_workqueue(const char *name,
                return NULL;
 
        wq->cpu_wq = alloc_percpu(struct cpu_workqueue_struct);
+       if (!wq->cpu_wq) {
+               kfree(wq);
+               return NULL;
+       }
+
        wq->name = name;
        /* We don't need the distraction of CPUs appearing and vanishing. */
        lock_cpu_hotplug();