Sparse reports a warning at ipmi_ssif_unlock_cond()
and ipmi_ssif_lock_cond()
warning: context imbalance in ipmi_ssif_lock_cond()
- wrong count at exit
warning: context imbalance in ipmi_ssif_unlock_cond()
- unexpected unlock
The root cause is the missing annotation at ipmi_ssif_unlock_cond()
and ipmi_ssif_lock_cond()
Add the missing __acquires(&ata_scsi_rbuf_lock)
Add the missing __releases(&ata_scsi_rbuf_lock)
Signed-off-by: Jules Irenge <[email protected]>
---
drivers/char/ipmi/ipmi_ssif.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
index 22c6a2e61236..030e7c09e44f 100644
--- a/drivers/char/ipmi/ipmi_ssif.c
+++ b/drivers/char/ipmi/ipmi_ssif.c
@@ -313,6 +313,7 @@ static int start_send(struct ssif_info *ssif_info,
static unsigned long *ipmi_ssif_lock_cond(struct ssif_info *ssif_info,
unsigned long *flags)
+ __acquires(&ssif_info->lock)
{
spin_lock_irqsave(&ssif_info->lock, *flags);
return flags;
@@ -320,6 +321,7 @@ static unsigned long *ipmi_ssif_lock_cond(struct ssif_info *ssif_info,
static void ipmi_ssif_unlock_cond(struct ssif_info *ssif_info,
unsigned long *flags)
+ __releases(&ssif_info->lock)
{
spin_unlock_irqrestore(&ssif_info->lock, *flags);
}
--
2.24.1
On Fri, Apr 03, 2020 at 05:05:05PM +0100, Jules Irenge wrote:
> Sparse reports a warning at ipmi_ssif_unlock_cond()
> and ipmi_ssif_lock_cond()
>
> warning: context imbalance in ipmi_ssif_lock_cond()
> - wrong count at exit
> warning: context imbalance in ipmi_ssif_unlock_cond()
> - unexpected unlock
>
> The root cause is the missing annotation at ipmi_ssif_unlock_cond()
> and ipmi_ssif_lock_cond()
>
> Add the missing __acquires(&ata_scsi_rbuf_lock)
> Add the missing __releases(&ata_scsi_rbuf_lock)
Yeah, this is good, I've included it in my tree.
-corey
>
> Signed-off-by: Jules Irenge <[email protected]>
> ---
> drivers/char/ipmi/ipmi_ssif.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
> index 22c6a2e61236..030e7c09e44f 100644
> --- a/drivers/char/ipmi/ipmi_ssif.c
> +++ b/drivers/char/ipmi/ipmi_ssif.c
> @@ -313,6 +313,7 @@ static int start_send(struct ssif_info *ssif_info,
>
> static unsigned long *ipmi_ssif_lock_cond(struct ssif_info *ssif_info,
> unsigned long *flags)
> + __acquires(&ssif_info->lock)
> {
> spin_lock_irqsave(&ssif_info->lock, *flags);
> return flags;
> @@ -320,6 +321,7 @@ static unsigned long *ipmi_ssif_lock_cond(struct ssif_info *ssif_info,
>
> static void ipmi_ssif_unlock_cond(struct ssif_info *ssif_info,
> unsigned long *flags)
> + __releases(&ssif_info->lock)
> {
> spin_unlock_irqrestore(&ssif_info->lock, *flags);
> }
> --
> 2.24.1
>