Messages in this thread | | | Subject | Re: Memory zeroed when made available to user process | From | Jefferson Carpenter <> | Date | Fri, 29 Jun 2018 00:52:16 +0000 |
| |
On 6/27/2018 1:18 PM, Richard Weinberger wrote: > Am Mittwoch, 27. Juni 2018, 15:12:48 CEST schrieb Michal Hocko: >> On Wed 27-06-18 13:29:05, Richard Weinberger wrote: >>> On Wed, Jun 27, 2018 at 11:34 AM, Jefferson Carpenter >>> <jeffersoncarpenter2@gmail.com> wrote: >>>> Is there a way for a user process to mark memory as 'sensitive' or >>>> 'non-sensitive' when it is allocated? That could allow it not to have to be >>>> zeroed before being allocated to another process. >>> >>> Isn't this what we have Meltdown and Spectre for? ;-) >>> >>> No, memory from the kernel is always zeroed. >>> libc offers malloc() and calloc() for this purpose.
Interesting. Let's say
Process 1: free(use_memory(malloc(1024)));
Then Process 2: malloc(1024);
The physical RAM used to service Process 2's malloc call has to be zeroed to prevent it from leaking data from Process 1. However, if Process 1 could mark that memory as non-sensitive, then it would not have to be zeroed, saving the time it takes to do that. However, this would require at least a bit per memory page, so maybe it's not worth it.
>> >> Well, except for the weird MAP_UNINITIALIZED. Anyway agreed that this is >> a bad idea and the flag should have never been merged. I've just >> mentioned it for completness. > > Oh, I forgot about the crazy nommu world. :-) > > Thanks, > //richard >
| |