aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Triplett <josht@us.ibm.com>2006-10-04 05:17:11 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-04 10:55:30 -0400
commit2860aaba4dc87fa43c08724434b87a8650f3bff5 (patch)
tree5c9a4ec9c571352174cbe4fd8d7eb125f53e0c30
parent3c29e03d9121e07714fb9e5303d9b026800ffd5a (diff)
[PATCH] rcu: Avoid kthread_stop on invalid pointer if rcutorture reader startup fails
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>
-rw-r--r--kernel/rcutorture.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c
index 021d3108bb6e..42e7f01e8003 100644
--- a/kernel/rcutorture.c
+++ b/kernel/rcutorture.c
@@ -780,7 +780,7 @@ rcu_torture_init(void)
780 writer_task = NULL; 780 writer_task = NULL;
781 goto unwind; 781 goto unwind;
782 } 782 }
783 reader_tasks = kmalloc(nrealreaders * sizeof(reader_tasks[0]), 783 reader_tasks = kzalloc(nrealreaders * sizeof(reader_tasks[0]),
784 GFP_KERNEL); 784 GFP_KERNEL);
785 if (reader_tasks == NULL) { 785 if (reader_tasks == NULL) {
786 VERBOSE_PRINTK_ERRSTRING("out of memory"); 786 VERBOSE_PRINTK_ERRSTRING("out of memory");