Re: [PATCH 5/5] mm: poison page struct

From: Sasha Levin
Date: Wed Oct 08 2014 - 10:23:22 EST


On 10/07/2014 06:02 PM, Dave Hansen wrote:
> On 09/29/2014 06:47 PM, Sasha Levin wrote:
>> struct page {
>> +#ifdef CONFIG_DEBUG_VM_POISON
>> + u32 poison_start;
>> +#endif
>> /* First double word block */
>> unsigned long flags; /* Atomic flags, some possibly
>> * updated asynchronously */
>> @@ -196,6 +199,9 @@ struct page {
>> #ifdef LAST_CPUPID_NOT_IN_PAGE_FLAGS
>> int _last_cpupid;
>> #endif
>> +#ifdef CONFIG_DEBUG_VM_POISON
>> + u32 poison_end;
>> +#endif
>> }
>
> Does this break slub's __cmpxchg_double_slab trick? I thought it
> required page->freelist and page->counters to be doubleword-aligned.

I'll probably have to switch it to 8 bytes anyways to make it work with
kasan. This should take care of the slub optimization as well.

> It's not like we really require this optimization when we're debugging,
> but trying to use it will unnecessarily slow things down.
>
> FWIW, if you're looking to trim down the number of lines of code, you
> could certainly play some macro tricks and #ifdef tricks.
>
> struct vm_poison {
> #ifdef CONFIG_DEBUG_VM_POISON
> u32 val;
> #endif
> };
>
> Then, instead of #ifdefs in each structure, you do:
>
> struct page {
> struct vm_poison poison_start;
> ... other gunk
> struct vm_poison poison_end;
> };

Agreed, I'll reword that in the next version.


Thanks,
Sasha

--
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/