[PATCH] Fix hardcoded cpu=0 in workqueue for per_cpu_ptr() calls
authorBen Collins <bcollins@debian.org>
Mon, 28 Nov 2005 21:43:56 +0000 (13:43 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 28 Nov 2005 22:42:23 +0000 (14:42 -0800)
commitbce61dd49d6ba7799be2de17c772e4c701558f14
treea8fd75afc85ffef3c9af0bafa1989d7a14e1a187
parentee500f274914653a7d3dfca7d0140a3d21658e32
[PATCH] Fix hardcoded cpu=0 in workqueue for per_cpu_ptr() calls

Tracked this down on an Ultra Enterprise 3000.  It's a 6-way machine.  Odd
thing about this machine (and it's good for finding bugs like this) is that
the CPU id's are not 0 based.  For instance, on my machine the CPU's are
6/7/10/11/14/15.

This caused some NULL pointer dereference in kernel/workqueue.c because for
single_threaded workqueue's, it hardcoded the cpu to 0.

I changed the 0's to any_online_cpu(cpu_online_mask), which cpumask.h
claims is "First cpu in mask".  So this fits the same usage.

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