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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to