Thread (11 messages) flat view 11 messages, 4 authors, 2020-12-10

Re: [PATCH] mm/vmalloc: randomize vmalloc() allocations

From: Topi Miettinen <hidden>
Date: 2020-12-04 16:54:34
Also in: linux-hardening, linux-mm, lkml

On 4.12.2020 15.33, David Laight wrote:
From: Topi Miettinen
quoted
Sent: 04 December 2020 10:58

On 4.12.2020 1.15, David Laight wrote:
quoted
From: Mike Rapoport
quoted
Sent: 03 December 2020 06:58

On Wed, Dec 02, 2020 at 08:49:06PM +0200, Topi Miettinen wrote:
quoted
On 1.12.2020 23.45, Topi Miettinen wrote:
quoted
Memory mappings inside kernel allocated with vmalloc() are in
predictable order and packed tightly toward the low addresses. With
new kernel boot parameter 'randomize_vmalloc=1', the entire area is
used randomly to make the allocations less predictable and harder to
guess for attackers.
Isn't that going to horribly fragment the available address space
and make even moderate sized allocation requests fail (or sleep).
For 32 bit architecture this is a real issue, but I don't think for 64
bits it will be a problem. You can't fragment the virtual memory space
for small allocations because the resulting page tables will not fit in
RAM for existing or near future systems.
Hmmm truly random allocations are going to need 3 or 4 extra page tables
on 64bit systems. A bit overhead for 4k allocates.
While you won't run out of address space, you will run out of memory.
There are 3500 entries in /proc/vmallocinfo on my system with lots of 
BPF filters (which allocate 8kB blocks). The total memory used is 740MB. 
Assuming that every entry needed additional 4 pages, it would mean 55MB, 
or 7.4% extra. I don't think that's a problem and even if it would be in 
some case, there's still the option of not using randomize_vmalloc.

-Topi
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help