diff --git a/mm/slab_common.c b/mm/slab_common.c index 8f128245b300..c5aacb359de3 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -1680,6 +1680,13 @@ static __always_inline void *__do_krealloc(const void *p, size_t new_size, ks = ksize(p); if (ks >= new_size) { + /* Zero out spare memory. */ + if (want_init_on_alloc(flags)) { + kasan_disable_current(); + memset((void *)p + new_size, 0, ks - new_size); + kasan_enable_current(); + } + p = kasan_krealloc((void *)p, new_size, flags); return (void *)p; }