@@ -4093,8 +4093,8 @@ void *vrealloc_noprof(const void *p, size_t size, gfp_t flags)
4093
4093
* would be a good heuristic for when to shrink the vm_area?
4094
4094
*/
4095
4095
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 ) )
4098
4098
memset ((void * )p + size , 0 , old_size - size );
4099
4099
vm -> requested_size = size ;
4100
4100
kasan_poison_vmalloc (p + size , old_size - size );
@@ -4107,9 +4107,11 @@ void *vrealloc_noprof(const void *p, size_t size, gfp_t flags)
4107
4107
if (size <= alloced_size ) {
4108
4108
kasan_unpoison_vmalloc (p + old_size , size - old_size ,
4109
4109
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
+ */
4113
4115
vm -> requested_size = size ;
4114
4116
return (void * )p ;
4115
4117
}
0 commit comments