diff mbox series

watch_queue: fix IOC_WATCH_QUEUE_SET_SIZE alloc error paths

Message ID 20220328145746.8146-1-ddiss@suse.de (mailing list archive)
State New, archived
Headers show
Series watch_queue: fix IOC_WATCH_QUEUE_SET_SIZE alloc error paths | expand

Commit Message

David Disseldorp March 28, 2022, 2:57 p.m. UTC
From code inspection, the watch_queue_set_size() allocation error paths
return the ret value set via the prior pipe_resize_ring() call, which
will always be zero.

Fixes: c73be61cede58 ("pipe: Add general notification queue support")
Signed-off-by: David Disseldorp <ddiss@suse.de>
---
 kernel/watch_queue.c | 1 +
 1 file changed, 1 insertion(+)

Comments

David Disseldorp April 4, 2022, 4:13 p.m. UTC | #1
Hi David,

Any feedback on this? It's a pretty obvious fix IMO.

On Mon, 28 Mar 2022 16:57:46 +0200, David Disseldorp wrote:

> From code inspection, the watch_queue_set_size() allocation error paths
> return the ret value set via the prior pipe_resize_ring() call, which
> will always be zero.
> 
> Fixes: c73be61cede58 ("pipe: Add general notification queue support")
> Signed-off-by: David Disseldorp <ddiss@suse.de>
> ---
>  kernel/watch_queue.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/kernel/watch_queue.c b/kernel/watch_queue.c
> index 3990e4df3d7b0..a128dedec9db2 100644
> --- a/kernel/watch_queue.c
> +++ b/kernel/watch_queue.c
> @@ -248,6 +248,7 @@ long watch_queue_set_size(struct pipe_inode_info *pipe, unsigned int nr_notes)
>  	if (ret < 0)
>  		goto error;
>  
> +	ret = -ENOMEM;
>  	pages = kcalloc(sizeof(struct page *), nr_pages, GFP_KERNEL);
>  	if (!pages)
>  		goto error;
David Disseldorp April 19, 2022, 2:32 p.m. UTC | #2
Ping...

On Mon, 4 Apr 2022 18:13:18 +0200, David Disseldorp wrote:

> Hi David,
> 
> Any feedback on this? It's a pretty obvious fix IMO.
> 
> On Mon, 28 Mar 2022 16:57:46 +0200, David Disseldorp wrote:
> 
> > From code inspection, the watch_queue_set_size() allocation error paths
> > return the ret value set via the prior pipe_resize_ring() call, which
> > will always be zero.
> > 
> > Fixes: c73be61cede58 ("pipe: Add general notification queue support")
> > Signed-off-by: David Disseldorp <ddiss@suse.de>
> > ---
> >  kernel/watch_queue.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/kernel/watch_queue.c b/kernel/watch_queue.c
> > index 3990e4df3d7b0..a128dedec9db2 100644
> > --- a/kernel/watch_queue.c
> > +++ b/kernel/watch_queue.c
> > @@ -248,6 +248,7 @@ long watch_queue_set_size(struct pipe_inode_info *pipe, unsigned int nr_notes)
> >  	if (ret < 0)
> >  		goto error;
> >  
> > +	ret = -ENOMEM;
> >  	pages = kcalloc(sizeof(struct page *), nr_pages, GFP_KERNEL);
> >  	if (!pages)
> >  		goto error;  
>
diff mbox series

Patch

diff --git a/kernel/watch_queue.c b/kernel/watch_queue.c
index 3990e4df3d7b0..a128dedec9db2 100644
--- a/kernel/watch_queue.c
+++ b/kernel/watch_queue.c
@@ -248,6 +248,7 @@  long watch_queue_set_size(struct pipe_inode_info *pipe, unsigned int nr_notes)
 	if (ret < 0)
 		goto error;
 
+	ret = -ENOMEM;
 	pages = kcalloc(sizeof(struct page *), nr_pages, GFP_KERNEL);
 	if (!pages)
 		goto error;