Re: [PATCH v6 0/2] x86: Implement fast refcount overflow protection

From: Kees Cook
Date: Thu Jul 20 2017 - 13:15:43 EST


On Thu, Jul 20, 2017 at 2:11 AM, Ingo Molnar <mingo@xxxxxxxxxx> wrote:
> Could you please also create a tabulated quick-comparison of the three variants,
> of all key properties, about behavior, feature and tradeoff differences?
>
> Something like:
>
> !ARCH_HAS_REFCOUNT ARCH_HAS_REFCOUNT=y REFCOUNT_FULL=y
>
> avg fast path instructions: 5 3 10
> behavior on overflow: unsafe, silent safe, verbose safe, verbose
> behavior on underflow: unsafe, silent unsafe, verbose unsafe, verbose
> ...
>
> etc. - note that this table is just a quick mockup with wild guesses. (Please add
> more comparisons of other aspects as well.)
>
> Such a comparison would make it easier for arch, subsystem and distribution
> maintainers to decide on which variant to use/enable.

Sure, I can write this up. I'm not sure "safe"/"unsafe" is quite that
clean. The differences between -full and -fast are pretty subtle, but
I think I can describe it using the updated LKDTM tests I've written
to compare the two. There are conditions that -fast doesn't catch, but
those cases aren't actually useful for the overflow defense.

As for "avg fast path instructions", do you mean the resulting
assembly for each refcount API function? I think it's going to look
something like "1 2 45", but I'll write it up.

-Kees

--
Kees Cook
Pixel Security