2021-04-28 23:13:54

by Jules Irenge

[permalink] [raw]
Subject: [PATCH] rcu: Add missing __releases() annotation

Sparse report a warning at rcu_print_task_stall()

"warning: context imbalance in rcu_print_task_stall - unexpected unlock"

The root cause is a missing annotation at rcu_print_task_stall() function

Add the missing __releases(rnp->lock) annotation

Signed-off-by: Jules Irenge <[email protected]>
---
kernel/rcu/tree_stall.h | 1 +
1 file changed, 1 insertion(+)

diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h
index 59b95cc5cbdf..18b2d5274d65 100644
--- a/kernel/rcu/tree_stall.h
+++ b/kernel/rcu/tree_stall.h
@@ -314,6 +314,7 @@ static void rcu_print_detail_task_stall_rnp(struct rcu_node *rnp)
* tasks blocked within RCU read-side critical sections.
*/
static int rcu_print_task_stall(struct rcu_node *rnp, unsigned long flags)
+ __releases(rnp->lock)
{
raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
return 0;
--
2.31.1


2021-04-29 18:40:53

by Paul E. McKenney

[permalink] [raw]
Subject: Re: [PATCH] rcu: Add missing __releases() annotation

On Thu, Apr 29, 2021 at 12:12:19AM +0100, Jules Irenge wrote:
> Sparse report a warning at rcu_print_task_stall()
>
> "warning: context imbalance in rcu_print_task_stall - unexpected unlock"
>
> The root cause is a missing annotation at rcu_print_task_stall() function
>
> Add the missing __releases(rnp->lock) annotation
>
> Signed-off-by: Jules Irenge <[email protected]>

Good catch, applied, thank you!

Thanx, Paul

> ---
> kernel/rcu/tree_stall.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h
> index 59b95cc5cbdf..18b2d5274d65 100644
> --- a/kernel/rcu/tree_stall.h
> +++ b/kernel/rcu/tree_stall.h
> @@ -314,6 +314,7 @@ static void rcu_print_detail_task_stall_rnp(struct rcu_node *rnp)
> * tasks blocked within RCU read-side critical sections.
> */
> static int rcu_print_task_stall(struct rcu_node *rnp, unsigned long flags)
> + __releases(rnp->lock)
> {
> raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
> return 0;
> --
> 2.31.1
>