Re: slab redzoning

From: Manfred Spraul
Date: Sat May 22 2004 - 03:46:03 EST


William Lee Irwin III wrote:

On Sat, May 22, 2004 at 10:02:25AM +0200, Manfred Spraul wrote:


Why this change? I've tested my fls(size-1)==fls(size-1-3*4) approach and it always returned the right result: No redzoning between 8181 and 8192 bytes, between 16373 and 16384, etc.



It returns a false positive when size + 3*BYTES_PER_WORD == 2**n, e.g.
size == 16373. Here, fls(size - 1) == 13, but fls(size - 1 + 12) == 13
while size - 1 + 12 == 16384, where we'd want the check to fail.

No, 16373 must fail: After adding 12 bytes the object size would be 16385, which would mean an order==3 allocation.
And 16372 must succeed: 16384 is still an order==2 allocation.

The idea is that there shouldn't be an allocation order increase due to redzoning, and afaics that doesn't happen, except between 4082 and 4095 bytes.

--
Manfred

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/