diff mbox series

media: nuvoton: npcm-video: Fix sleeping in atomic context

Message ID 20231003075512.2081141-1-milkfafa@gmail.com
State New
Headers show
Series media: nuvoton: npcm-video: Fix sleeping in atomic context | expand

Commit Message

Marvin Lin Oct. 3, 2023, 7:55 a.m. UTC
Fix sleeping in atomic context warnings reported by the Smatch static
analysis tool. Use GFP_ATOMIC instead of GFP_KERNEL in atomic context.

Fixes: 70721089985c ("media: nuvoton: Add driver for NPCM video capture and encoding engine")
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Marvin Lin <milkfafa@gmail.com>
---
 drivers/media/platform/nuvoton/npcm-video.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Hans Verkuil Oct. 3, 2023, 1:23 p.m. UTC | #1
On 10/3/23 09:55, Marvin Lin wrote:
> Fix sleeping in atomic context warnings reported by the Smatch static
> analysis tool. Use GFP_ATOMIC instead of GFP_KERNEL in atomic context.
> 
> Fixes: 70721089985c ("media: nuvoton: Add driver for NPCM video capture and encoding engine")
> Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
> Signed-off-by: Marvin Lin <milkfafa@gmail.com>
> ---
>  drivers/media/platform/nuvoton/npcm-video.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/media/platform/nuvoton/npcm-video.c b/drivers/media/platform/nuvoton/npcm-video.c
> index ac8d73b794d3..5d160978f7b3 100644
> --- a/drivers/media/platform/nuvoton/npcm-video.c
> +++ b/drivers/media/platform/nuvoton/npcm-video.c
> @@ -412,7 +412,7 @@ static unsigned int npcm_video_add_rect(struct npcm_video *video,
>  	struct rect_list *list = NULL;
>  	struct v4l2_rect *r;
>  
> -	list = kzalloc(sizeof(*list), GFP_KERNEL);
> +	list = kzalloc(sizeof(*list), GFP_ATOMIC);
>  	if (!list)
>  		return 0;
>  
> @@ -467,7 +467,7 @@ static struct rect_list *npcm_video_new_rect(struct npcm_video *video,
>  	struct rect_list *list = NULL;
>  	struct v4l2_rect *r;
>  
> -	list = kzalloc(sizeof(*list), GFP_KERNEL);
> +	list = kzalloc(sizeof(*list), GFP_ATOMIC);
>  	if (!list)
>  		return NULL;
>  

I'm not really sure this is the right approach.

Looking closer at the code I notice that npcm_video_irq is a threaded
interrupt handler, so wouldn't it be easier to change the video->lock
spinlock to a mutex?

Regards,

	Hans
Marvin Lin Oct. 10, 2023, 12:30 p.m. UTC | #2
Hi Hans,

Thanks for the review.

> > -     list = kzalloc(sizeof(*list), GFP_KERNEL);
> > +     list = kzalloc(sizeof(*list), GFP_ATOMIC);
> >       if (!list)
> >               return NULL;
> >
>
> I'm not really sure this is the right approach.
>
> Looking closer at the code I notice that npcm_video_irq is a threaded
> interrupt handler, so wouldn't it be easier to change the video->lock
> spinlock to a mutex?
>

Agree it's better to use mutex. Will send v2 for this.

Regards,
Marvin
diff mbox series

Patch

diff --git a/drivers/media/platform/nuvoton/npcm-video.c b/drivers/media/platform/nuvoton/npcm-video.c
index ac8d73b794d3..5d160978f7b3 100644
--- a/drivers/media/platform/nuvoton/npcm-video.c
+++ b/drivers/media/platform/nuvoton/npcm-video.c
@@ -412,7 +412,7 @@  static unsigned int npcm_video_add_rect(struct npcm_video *video,
 	struct rect_list *list = NULL;
 	struct v4l2_rect *r;
 
-	list = kzalloc(sizeof(*list), GFP_KERNEL);
+	list = kzalloc(sizeof(*list), GFP_ATOMIC);
 	if (!list)
 		return 0;
 
@@ -467,7 +467,7 @@  static struct rect_list *npcm_video_new_rect(struct npcm_video *video,
 	struct rect_list *list = NULL;
 	struct v4l2_rect *r;
 
-	list = kzalloc(sizeof(*list), GFP_KERNEL);
+	list = kzalloc(sizeof(*list), GFP_ATOMIC);
 	if (!list)
 		return NULL;