Re: [PATCH] proc: use vmalloc for our kernel buffer

From: Josef Bacik
Date: Thu Aug 13 2020 - 13:08:56 EST


On 8/13/20 12:19 PM, David Laight wrote:
From: Josef Bacik
Sent: 13 August 2020 15:53

sysctl: pass kernel pointers to ->proc_handler

we have been pre-allocating a buffer to copy the data from the proc
handlers into, and then copying that to userspace. The problem is this
just blind kmalloc()'s the buffer size passed in from the read, which in
the case of our 'cat' binary was 64kib. Order-4 allocations are not
awesome, and since we can potentially allocate up to our maximum order,
use vmalloc for these buffers.

What happens if I run 'dd bs=16M ...' ?

David


/* don't even try if the size is too large */
error = -ENOMEM;
if (count >= KMALLOC_MAX_SIZE)
goto out;

is above this code, thanks,

Josef