Date: Mon, 26 Feb 2018 10:32:37 -0800 From: J Freyensee <why2jjj.linux@...il.com> To: Igor Stoppa <igor.stoppa@...wei.com>, david@...morbit.com, willy@...radead.org, keescook@...omium.org, mhocko@...nel.org Cc: labbott@...hat.com, linux-security-module@...r.kernel.org, linux-mm@...ck.org, linux-kernel@...r.kernel.org, kernel-hardening@...ts.openwall.com Subject: Re: [PATCH 7/7] Documentation for Pmalloc [...] On 2/26/18 7:39 AM, Igor Stoppa wrote: > > On 24/02/18 02:26, J Freyensee wrote: >> >> On 2/23/18 6:48 AM, Igor Stoppa wrote: > [...] > >>> +- Before destroying a pool, all the memory allocated from it must be >>> + released. >> Is that true? pmalloc_destroy_pool() has: >> >> . >> . >> + pmalloc_pool_set_protection(pool, false); >> + gen_pool_for_each_chunk(pool, pmalloc_chunk_free, NULL); >> + gen_pool_destroy(pool); >> + kfree(data); >> >> which to me looks like is the opposite, the data (ie, "memory") is being >> released first, then the pool is destroyed. > well, this is embarrassing ... yes I had this prototype code, because I > was wondering if it wouldn't make more sense to tear down the pool as > fast as possible. It slipped in, apparently. > > I'm actually tempted to leave it in and fix the comment. Sure, one or the other. > > [...] > >>> + >>> +- pmalloc does not provide locking support with respect to allocating vs >>> + protecting an individual pool, for performance reasons. >> What is the recommendation to using locks then, as the computing >> real-world mainly operates in multi-threaded/process world? > How common are multi-threaded allocations of write-once memory? > Here we are talking exclusively about the part of the memory life-cycle > where it is allocated (from pmalloc). Yah, that's true, good point. > >> Maybe show >> an example of an issue that occur if locks aren't used and give a coding >> example. > An example of how to use a mutex to access a shared resource? :-O > > This part below, under your question, was supposed to be the answer :-( > >>> + It is recommended not to share the same pool between unrelated functions. >>> + Should sharing be a necessity, the user of the shared pool is expected >>> + to implement locking for that pool. My bad, I was suggesting a code sample, if there was a simple code sample to provide (like 5-10 lines?). If it's a lot of code to write, no bother. > [...] > >>> +- pmalloc uses genalloc to optimize the use of the space it allocates >>> + through vmalloc. Some more TLB entries will be used, however less than >>> + in the case of using vmalloc directly. The exact number depends on the >>> + size of each allocation request and possible slack. >>> + >>> +- Considering that not much data is supposed to be dynamically allocated >>> + and then marked as read-only, it shouldn't be an issue that the address >>> + range for pmalloc is limited, on 32-bit systems. >> Why is 32-bit systems mentioned and not 64-bit? > Because, as written, on 32 bit system the vmalloc range is relatively > small, so one might wonder if there are enough addresses. > >> Is there a problem with 64-bit here? > Quite the opposite. > I thought it was clear, but obviously it isn't, I'll reword this. Sounds good, thank you, Jay > > -igor > >
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.