Description
In the Linux kernel, the following vulnerability has been resolved:
vhost/vsock: Use kvmalloc/kvfree for larger packets.
When copying a large file over sftp over vsock, data size is usually 32kB,
and kmalloc seems to fail to try to allocate 32 32kB regions.
vhost-5837: page allocation failure: order:4, mode:0x24040c0
Call Trace:
[] dump_stack+0x97/0xdb
[] warn_alloc_failed+0x10f/0x138
[] ? __alloc_pages_direct_compact+0x38/0xc8
[] __alloc_pages_nodemask+0x84c/0x90d
[] alloc_kmem_pages+0x17/0x19
[] kmalloc_order_trace+0x2b/0xdb
[] __kmalloc+0x177/0x1f7
[] ? copy_from_iter+0x8d/0x31d
[] vhost_vsock_handle_tx_kick+0x1fa/0x301 [vhost_vsock]
[] vhost_worker+0xf7/0x157 [vhost]
[] kthread+0xfd/0x105
[] ? vhost_dev_set_owner+0x22e/0x22e [vhost]
[] ? flush_kthread_worker+0xf3/0xf3
[] ret_from_fork+0x4e/0x80
[] ? flush_kthread_worker+0xf3/0xf3
Work around by doing kvmalloc instead.