2020-04-29 13:25:31

by Dan Carpenter

[permalink] [raw]
Subject: [PATCH] rcutorture: Fix error codes in rcu_torture_read_exit_init()

The rcu_torture_read_exit_init() function is supposed to return negative
error codes which get propagated back down the call tree but the current
code returns true on failure.

Fixes: e02882cd57e3 ("rcutorture: Add races with task-exit processing")
Signed-off-by: Dan Carpenter <[email protected]>
---
kernel/rcu/rcutorture.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index 269881e51dc6d..5270674128029 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -2434,10 +2434,10 @@ static int rcu_torture_read_exit(void *unused)
return 0;
}

-static bool rcu_torture_read_exit_init(void)
+static int rcu_torture_read_exit_init(void)
{
if (read_exit <= 0)
- return true;
+ return -EINVAL;
init_waitqueue_head(&read_exit_wq);
read_exit_child_stop = false;
read_exit_child_stopped = false;
--
2.26.2


2020-04-29 15:55:30

by Paul E. McKenney

[permalink] [raw]
Subject: Re: [PATCH] rcutorture: Fix error codes in rcu_torture_read_exit_init()

On Wed, Apr 29, 2020 at 04:22:35PM +0300, Dan Carpenter wrote:
> The rcu_torture_read_exit_init() function is supposed to return negative
> error codes which get propagated back down the call tree but the current
> code returns true on failure.
>
> Fixes: e02882cd57e3 ("rcutorture: Add races with task-exit processing")
> Signed-off-by: Dan Carpenter <[email protected]>

Good catch! Talk about code sort of working by accident!!!

Thank you, and I folded this into the original commit with attribution.

Thanx, Paul

> ---
> kernel/rcu/rcutorture.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
> index 269881e51dc6d..5270674128029 100644
> --- a/kernel/rcu/rcutorture.c
> +++ b/kernel/rcu/rcutorture.c
> @@ -2434,10 +2434,10 @@ static int rcu_torture_read_exit(void *unused)
> return 0;
> }
>
> -static bool rcu_torture_read_exit_init(void)
> +static int rcu_torture_read_exit_init(void)
> {
> if (read_exit <= 0)
> - return true;
> + return -EINVAL;
> init_waitqueue_head(&read_exit_wq);
> read_exit_child_stop = false;
> read_exit_child_stopped = false;
> --
> 2.26.2
>