[PATCH] rcu: Avoid kthread_stop on invalid pointer if rcutorture reader startup fails
authorJosh Triplett <josht@us.ibm.com>
Wed, 4 Oct 2006 09:17:11 +0000 (02:17 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Wed, 4 Oct 2006 14:55:30 +0000 (07:55 -0700)
rcu_torture_init kmallocs the array of reader threads, then creates each
one with kthread_run, cleaning up with rcu_torture_cleanup if this fails.
rcu_torture_cleanup calls kthread_stop on any non-NULL pointer in the
array; however, any readers after the one that failed to start up will have
invalid pointers, not null pointers.  Avoid this by using kzalloc instead.

Signed-off-by: Josh Triplett <josh@freedesktop.org>
Acked-by: Paul E. McKenney <paulmck@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
kernel/rcutorture.c

index 021d3108bb6e4fe681f5fecf31940519a436864c..42e7f01e8003af785a335bc9c12f7adab34d9a97 100644 (file)
@@ -780,7 +780,7 @@ rcu_torture_init(void)
                writer_task = NULL;
                goto unwind;
        }
-       reader_tasks = kmalloc(nrealreaders * sizeof(reader_tasks[0]),
+       reader_tasks = kzalloc(nrealreaders * sizeof(reader_tasks[0]),
                               GFP_KERNEL);
        if (reader_tasks == NULL) {
                VERBOSE_PRINTK_ERRSTRING("out of memory");