rcutorture: Check nfakewriters parameter
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 14 May 2015 22:42:40 +0000 (15:42 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 15 Jul 2015 21:47:15 +0000 (14:47 -0700)
Currently, a negative value for rcutorture.nfakewriters= can cause
rcutorture to pass a negative size to the memory allocator, which
is not really a particularly good thing to do.  This commit therefore
adds bounds checking to this parameter, so that values that are less
than or equal to zero disable fake writing.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcu/rcutorture.c

index 7e29a3266139e2a5bd351387895076f6d2680ed5..2cbe569ac5dd08a93b5e570008819fb1c18bd86f 100644 (file)
@@ -1786,12 +1786,15 @@ rcu_torture_init(void)
                                          writer_task);
        if (firsterr)
                goto unwind;
-       fakewriter_tasks = kzalloc(nfakewriters * sizeof(fakewriter_tasks[0]),
-                                  GFP_KERNEL);
-       if (fakewriter_tasks == NULL) {
-               VERBOSE_TOROUT_ERRSTRING("out of memory");
-               firsterr = -ENOMEM;
-               goto unwind;
+       if (nfakewriters > 0) {
+               fakewriter_tasks = kzalloc(nfakewriters *
+                                          sizeof(fakewriter_tasks[0]),
+                                          GFP_KERNEL);
+               if (fakewriter_tasks == NULL) {
+                       VERBOSE_TOROUT_ERRSTRING("out of memory");
+                       firsterr = -ENOMEM;
+                       goto unwind;
+               }
        }
        for (i = 0; i < nfakewriters; i++) {
                firsterr = torture_create_kthread(rcu_torture_fakewriter,