diff --git a/mm/slab_common.c b/mm/slab_common.c index 022319e7deaf..3173c8a17904 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -1210,6 +1210,13 @@ static __always_inline void *__do_krealloc(const void *p, size_t new_size, /* If the object still fits, repoison it precisely. */ 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; }