On 30/10/2018 23:07, Kees Cook wrote:
We still have to deal with certain structures under the write-rare
window. For example, see:
https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git/commit/?h=kspp/write-rarely&id=60430b4d3b113aae4adab66f8339074986276474
They are wrappers to non-inline functions that have the same sanity-checking.
Even if I also did something similar, it was not intended to be final.
Just a stop-gap solution till the write-rare mechanism is identified.
If the size of the whole list_head is used as alignment, then the whole
list_head structure can be given an alternate mapping and the plain list
function can be used on this alternate mapping.
It can halve the overhead or more.
The typical case is when not only one list_head is contained in one
page, but also the other, like when allocating and queuing multiple
items from the same pool.
One single temporary mapping would be enough.
But it becomes tricky to do it, without generating code that is
almost-but-not-quite-identical.
--
igor