diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2015-05-14 18:42:40 -0400 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2015-07-15 17:47:15 -0400 |
commit | 4444d852a99b8f0310f369da8473ec3639e380a7 (patch) | |
tree | cdc5c247b4782a57c7c041d66e9e7fb9984157ad /kernel/rcu/rcutorture.c | |
parent | d9eba768839ac24e47606af36e50c14f10c2211c (diff) |
rcutorture: Check nfakewriters parameter
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>
Diffstat (limited to 'kernel/rcu/rcutorture.c')
-rw-r--r-- | kernel/rcu/rcutorture.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 7e29a3266139..2cbe569ac5dd 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c | |||
@@ -1786,12 +1786,15 @@ rcu_torture_init(void) | |||
1786 | writer_task); | 1786 | writer_task); |
1787 | if (firsterr) | 1787 | if (firsterr) |
1788 | goto unwind; | 1788 | goto unwind; |
1789 | fakewriter_tasks = kzalloc(nfakewriters * sizeof(fakewriter_tasks[0]), | 1789 | if (nfakewriters > 0) { |
1790 | GFP_KERNEL); | 1790 | fakewriter_tasks = kzalloc(nfakewriters * |
1791 | if (fakewriter_tasks == NULL) { | 1791 | sizeof(fakewriter_tasks[0]), |
1792 | VERBOSE_TOROUT_ERRSTRING("out of memory"); | 1792 | GFP_KERNEL); |
1793 | firsterr = -ENOMEM; | 1793 | if (fakewriter_tasks == NULL) { |
1794 | goto unwind; | 1794 | VERBOSE_TOROUT_ERRSTRING("out of memory"); |
1795 | firsterr = -ENOMEM; | ||
1796 | goto unwind; | ||
1797 | } | ||
1795 | } | 1798 | } |
1796 | for (i = 0; i < nfakewriters; i++) { | 1799 | for (i = 0; i < nfakewriters; i++) { |
1797 | firsterr = torture_create_kthread(rcu_torture_fakewriter, | 1800 | firsterr = torture_create_kthread(rcu_torture_fakewriter, |