From: Andrea Arcangeli on
On Mon, Apr 19, 2010 at 05:45:05PM +0200, Peter Zijlstra wrote:
> Wouldn't a longer poison be more recognisable? Also, shouldn't this use
> POISON_POINTER_DELTA?
>
> Something like:
>
> #define HUGETBL_POISON ((void *) 0x00300300 + POISON_POINTER_DELTA)
>
> 0x2e5 isn't that high, I've had actual derefs in that range.

The default at kernel config time sets only 4k as unmapped (I think
it's a very bad default for 64bit archs), so above 4k userland can map
it and you can have actual derefs with 0x00300300 but not with Mel's
preferred <0x1000 address. So the address must be <0x1000.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Andrea Arcangeli on
On Mon, Apr 19, 2010 at 06:18:48PM +0200, Peter Zijlstra wrote:
> Well, most poison values have that problem and still we have them. Also

That would better be fixed too to stay <4096 for higher chance of
bug-detection, it doesn't make this case correct ;).

> on 64bit machines you can use POISON_POINTER_DELTA to map it outside the
> virtual address range.

We've thousands of magic values there, I don't see much benefit from
POISON_POINTER_DELTA other than being able to call it
0xdeadbeef+POISON_POINTER_DELTA ;). We always look the assembly to
find the actual real raw pointer value (without the field offset) so I
think using a range between 0xaaa and 0xbbb for the error pointers, is
functional enough, but it's up to you as long as it is a address range
that can't be used by userland it's surely ok ;).
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/