Re: [PATCH v2] drivers/misc/vmw_vmci: restrict too big queue size in
On Tue, Feb 09, 2021 at 03:31:01PM +0600, Sabyrzhan Tasbolatov wrote: > syzbot found WARNING in qp_broker_alloc[1] in qp_host_alloc_queue() > when num_pages is 0x11, giving queue_size + queue_page_size > bigger than KMALLOC_MAX_SIZE for kzalloc(), resulting order >= MAX_ORDER > condition. > > queue_size + queue_page_size=0x8000d8, where KMALLOC_MAX_SIZE=0x40. > > Reported-by: syzbot+15ec7391f3d6a1a7c...@syzkaller.appspotmail.com > Signed-off-by: Sabyrzhan Tasbolatov > --- > >As this is controllable by userspace, you just provided a way to flood > >the kernel logs. > > > >Please make this a dev_dbg() call instead, if you really want to see it. > >Otherwise just return NULL, no need to report anything, right? > > Thanks, removed pr_warn(). > > v2: Removed pr_warn() to avoid flood from user-space > --- > drivers/misc/vmw_vmci/vmci_queue_pair.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/drivers/misc/vmw_vmci/vmci_queue_pair.c > b/drivers/misc/vmw_vmci/vmci_queue_pair.c > index f6af406fda80..ea16df73cde0 100644 > --- a/drivers/misc/vmw_vmci/vmci_queue_pair.c > +++ b/drivers/misc/vmw_vmci/vmci_queue_pair.c > @@ -538,9 +538,7 @@ static struct vmci_queue *qp_host_alloc_queue(u64 size) > queue_page_size = num_pages * sizeof(*queue->kernel_if->u.h.page); > > if (queue_size + queue_page_size > KMALLOC_MAX_SIZE) { > - pr_warn("too big queue to allocate\n"); > return NULL; > - } > This patch doesn't apply to the tree, you can't send me a patch that is relative to your previous one, that doesn't work at all. And also, test-build your patches always first, to not do so is a bit rude to maintainers... thanks, greg k-h
Re: [PATCH v2] drivers/misc/vmw_vmci: restrict too big queue size in
On 09/02/2021 09:31, Sabyrzhan Tasbolatov wrote: syzbot found WARNING in qp_broker_alloc[1] in qp_host_alloc_queue() when num_pages is 0x11, giving queue_size + queue_page_size bigger than KMALLOC_MAX_SIZE for kzalloc(), resulting order >= MAX_ORDER condition. queue_size + queue_page_size=0x8000d8, where KMALLOC_MAX_SIZE=0x40. Reported-by: syzbot+15ec7391f3d6a1a7c...@syzkaller.appspotmail.com Signed-off-by: Sabyrzhan Tasbolatov --- As this is controllable by userspace, you just provided a way to flood the kernel logs. Please make this a dev_dbg() call instead, if you really want to see it. Otherwise just return NULL, no need to report anything, right? Thanks, removed pr_warn(). Looks like you forgot to take out the opening brace. v2: Removed pr_warn() to avoid flood from user-space --- drivers/misc/vmw_vmci/vmci_queue_pair.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/misc/vmw_vmci/vmci_queue_pair.c b/drivers/misc/vmw_vmci/vmci_queue_pair.c index f6af406fda80..ea16df73cde0 100644 --- a/drivers/misc/vmw_vmci/vmci_queue_pair.c +++ b/drivers/misc/vmw_vmci/vmci_queue_pair.c @@ -538,9 +538,7 @@ static struct vmci_queue *qp_host_alloc_queue(u64 size) queue_page_size = num_pages * sizeof(*queue->kernel_if->u.h.page); if (queue_size + queue_page_size > KMALLOC_MAX_SIZE) { - pr_warn("too big queue to allocate\n"); return NULL; - } queue = kzalloc(queue_size + queue_page_size, GFP_KERNEL); if (queue) {
[PATCH v2] drivers/misc/vmw_vmci: restrict too big queue size in
syzbot found WARNING in qp_broker_alloc[1] in qp_host_alloc_queue() when num_pages is 0x11, giving queue_size + queue_page_size bigger than KMALLOC_MAX_SIZE for kzalloc(), resulting order >= MAX_ORDER condition. queue_size + queue_page_size=0x8000d8, where KMALLOC_MAX_SIZE=0x40. Reported-by: syzbot+15ec7391f3d6a1a7c...@syzkaller.appspotmail.com Signed-off-by: Sabyrzhan Tasbolatov --- >As this is controllable by userspace, you just provided a way to flood >the kernel logs. > >Please make this a dev_dbg() call instead, if you really want to see it. >Otherwise just return NULL, no need to report anything, right? Thanks, removed pr_warn(). v2: Removed pr_warn() to avoid flood from user-space --- drivers/misc/vmw_vmci/vmci_queue_pair.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/misc/vmw_vmci/vmci_queue_pair.c b/drivers/misc/vmw_vmci/vmci_queue_pair.c index f6af406fda80..ea16df73cde0 100644 --- a/drivers/misc/vmw_vmci/vmci_queue_pair.c +++ b/drivers/misc/vmw_vmci/vmci_queue_pair.c @@ -538,9 +538,7 @@ static struct vmci_queue *qp_host_alloc_queue(u64 size) queue_page_size = num_pages * sizeof(*queue->kernel_if->u.h.page); if (queue_size + queue_page_size > KMALLOC_MAX_SIZE) { - pr_warn("too big queue to allocate\n"); return NULL; - } queue = kzalloc(queue_size + queue_page_size, GFP_KERNEL); if (queue) { -- 2.25.1