Re: [PATCH] mm: Add additional consistency check

From: Kees Cook
Date: Tue Apr 11 2017 - 12:19:14 EST


On Tue, Apr 11, 2017 at 9:16 AM, Christoph Lameter <cl@xxxxxxxxx> wrote:
> On Tue, 11 Apr 2017, Michal Hocko wrote:
>
>> static inline void *index_to_obj(struct kmem_cache *cache, struct page *page,
>> @@ -3813,14 +3818,18 @@ void kfree(const void *objp)
>> {
>> struct kmem_cache *c;
>> unsigned long flags;
>> + struct page *page;
>>
>> trace_kfree(_RET_IP_, objp);
>>
>> if (unlikely(ZERO_OR_NULL_PTR(objp)))
>> return;
>> + page = virt_to_head_page(obj);
>> + if (CHECK_DATA_CORRUPTION(!PageSlab(page)))
>
> There is a flag SLAB_DEBUG_OBJECTS that is available for this check.
> Consistency checks are configuraable in the slab allocator.
>
> Mentioned that before and got this lecture about data consistency checks.

It seems that enabling the debug checks comes with a non-trivial
performance impact. I'd like to see consistency checks by default so
we can handle intentional heap corruption attacks better. This check
isn't expensive...

-Kees

--
Kees Cook
Pixel Security