@@ -4093,8 +4093,8 @@ void *vrealloc_noprof(const void *p, size_t size, gfp_t flags)
40934093 * would be a good heuristic for when to shrink the vm_area?
40944094 */
40954095 if (size <= old_size ) {
4096- /* Zero out "freed" memory. */
4097- if (want_init_on_free ())
4096+ /* Zero out "freed" memory, potentially for future realloc . */
4097+ if (want_init_on_free () || want_init_on_alloc ( flags ) )
40984098 memset ((void * )p + size , 0 , old_size - size );
40994099 vm -> requested_size = size ;
41004100 kasan_poison_vmalloc (p + size , old_size - size );
@@ -4107,9 +4107,11 @@ void *vrealloc_noprof(const void *p, size_t size, gfp_t flags)
41074107 if (size <= alloced_size ) {
41084108 kasan_unpoison_vmalloc (p + old_size , size - old_size ,
41094109 KASAN_VMALLOC_PROT_NORMAL );
4110- /* Zero out "alloced" memory. */
4111- if (want_init_on_alloc (flags ))
4112- memset ((void * )p + old_size , 0 , size - old_size );
4110+ /*
4111+ * No need to zero memory here, as unused memory will have
4112+ * already been zeroed at initial allocation time or during
4113+ * realloc shrink time.
4114+ */
41134115 vm -> requested_size = size ;
41144116 return (void * )p ;
41154117 }
0 commit comments