2020-04-03 16:08:53

by Jules Irenge

[permalink] [raw]
Subject: [PATCH 0/5] lock warnings cleanup

This patch series adds missing annotations to various functions,
that register warnings of context imbalance when built with Sparse tool.
The adds fix the warnings, improve on readability of the code
and give better insight or directive on what the functions are actually doing.

Jules Irenge (5):
ipc/msg: Add missing annotation for freeque()
video: Add missing annotation for cyber2000fb_enable_ddc() and
cyber2000fb_disable_ddc()
ocfs2: Add missing annotation for dlm_empty_lockres()
libata: Add missing annotation for ata_scsi_rbuf_get() and
ata_scsi_rbuf_fill()
ipmi: Add missing annotation for ipmi_ssif_lock_cond() and
ipmi_ssif_unlock_cond()

drivers/ata/libata-scsi.c | 2 ++
drivers/char/ipmi/ipmi_ssif.c | 2 ++
drivers/video/fbdev/cyber2000fb.c | 2 ++
fs/ocfs2/dlm/dlmmaster.c | 1 +
ipc/msg.c | 2 ++
5 files changed, 9 insertions(+)

--
2.24.1


2020-04-03 16:09:08

by Jules Irenge

[permalink] [raw]
Subject: [PATCH 2/5] video: Add missing annotation for cyber2000fb_enable_ddc() and cyber2000fb_disable_ddc()

Sparse reports warnings at cyber2000fb_enable_ddc()
and cyber2000fb_disable_ddc()

warning: context imbalance in cyber2000fb_enable_ddc()
- wrong count at exit

warning: context imbalance in cyber2000fb_disable_ddc()
- unexpected unlock

The root cause is the missing annotation at cyber2000fb_enable_ddc()
and cyber2000fb_disable_ddc()

Add the missing __acquires(&cfb->reg_b0_lock) annotation
Add the missing __releases(&cfb->reg_b0_lock) annotation

Signed-off-by: Jules Irenge <[email protected]>
---
drivers/video/fbdev/cyber2000fb.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/video/fbdev/cyber2000fb.c b/drivers/video/fbdev/cyber2000fb.c
index 460826a7ad55..513f58f28b0f 100644
--- a/drivers/video/fbdev/cyber2000fb.c
+++ b/drivers/video/fbdev/cyber2000fb.c
@@ -1160,12 +1160,14 @@ EXPORT_SYMBOL(cyber2000fb_detach);
#define DDC_SDA_IN (1 << 6)

static void cyber2000fb_enable_ddc(struct cfb_info *cfb)
+ __acquires(&cfb->reg_b0_lock)
{
spin_lock(&cfb->reg_b0_lock);
cyber2000fb_writew(0x1bf, 0x3ce, cfb);
}

static void cyber2000fb_disable_ddc(struct cfb_info *cfb)
+ __releases(&cfb->reg_b0_lock)
{
cyber2000fb_writew(0x0bf, 0x3ce, cfb);
spin_unlock(&cfb->reg_b0_lock);
--
2.24.1

2020-04-07 19:49:30

by Sam Ravnborg

[permalink] [raw]
Subject: Re: [PATCH 2/5] video: Add missing annotation for cyber2000fb_enable_ddc() and cyber2000fb_disable_ddc()

Hi Jules.

On Fri, Apr 03, 2020 at 05:05:02PM +0100, Jules Irenge wrote:
> Sparse reports warnings at cyber2000fb_enable_ddc()
> and cyber2000fb_disable_ddc()
>
> warning: context imbalance in cyber2000fb_enable_ddc()
> - wrong count at exit
>
> warning: context imbalance in cyber2000fb_disable_ddc()
> - unexpected unlock
>
> The root cause is the missing annotation at cyber2000fb_enable_ddc()
> and cyber2000fb_disable_ddc()
>
> Add the missing __acquires(&cfb->reg_b0_lock) annotation
> Add the missing __releases(&cfb->reg_b0_lock) annotation
>
> Signed-off-by: Jules Irenge <[email protected]>

Thanks, added to drm-misc-next, so the patch will hit the kernel
when the merge windows opens the next time.

Was this the only locking relevant warning in fbdev?
I would expect a few more.

Sam

> ---
> drivers/video/fbdev/cyber2000fb.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/video/fbdev/cyber2000fb.c b/drivers/video/fbdev/cyber2000fb.c
> index 460826a7ad55..513f58f28b0f 100644
> --- a/drivers/video/fbdev/cyber2000fb.c
> +++ b/drivers/video/fbdev/cyber2000fb.c
> @@ -1160,12 +1160,14 @@ EXPORT_SYMBOL(cyber2000fb_detach);
> #define DDC_SDA_IN (1 << 6)
>
> static void cyber2000fb_enable_ddc(struct cfb_info *cfb)
> + __acquires(&cfb->reg_b0_lock)
> {
> spin_lock(&cfb->reg_b0_lock);
> cyber2000fb_writew(0x1bf, 0x3ce, cfb);
> }
>
> static void cyber2000fb_disable_ddc(struct cfb_info *cfb)
> + __releases(&cfb->reg_b0_lock)
> {
> cyber2000fb_writew(0x0bf, 0x3ce, cfb);
> spin_unlock(&cfb->reg_b0_lock);
> --
> 2.24.1
>
> _______________________________________________
> dri-devel mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/dri-devel