Re: [PATCHv2] lkdtm: Add READ_AFTER_FREE test

From: Laura Abbott
Date: Mon Feb 29 2016 - 20:37:15 EST


On 02/26/2016 02:33 PM, Kees Cook wrote:
On Fri, Feb 26, 2016 at 2:19 PM, Laura Abbott <labbott@xxxxxxxxxx> wrote:
I did a quick hack of zero poisoning for the slab allocator and I
didn't see any improvement in hackbench performance which is fairly
sensitive to slab performance. This doesn't surprise me when I
actually think about it.

Before I sent out my last set of performance optimizations for
SLUB debug path, I did a profile with ftrace to see if there was
anything else quick I could do. My profiling showed that the
poisoning itself was not where most of the allocation time was
spent. 25-50% of the time was being spent in removing the CPU slab.
Considering poisoning means that the CPU slab is never really used,
this can probably be improved. It's worth noting that the
PAX_MEMORY_SANITIZE implementation still uses the fast path so it
isn't affected here. (The trade off is a minor penalty on the
fast path even when poisoning is disabled which isn't acceptable
to the maintainers currently.)

Oh right, all of this is still the slow path...

Basically, until we've optimized other things I don't think the
zero poisoning will have a significant effect on performance.
The next set of optimizations will involve changing some of the
guts of the SLUB allocator. I have some ideas how to approach this
but we'll see if they pan out.

And we can't just have a CONFIG for the fast-path sanitization? Then
it's not in anyone's way, etc?


I proposed that but it was shot down :(

The request was to try and make the slow path work so I'm going to
do my due diligence there. If it turns out that it still isn't fast
enough I'll bring it up again but unless we can say that slow path
is still x% slower even after optimization I don't think it will fly.

-Kees


Thanks,
Laura