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 |
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;
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 --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;
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(+)