@@ -4097,8 +4097,8 @@ void *vrealloc_noprof(const void *p, size_t size, gfp_t flags)
4097
4097
* would be a good heuristic for when to shrink the vm_area?
4098
4098
*/
4099
4099
if (size <= old_size ) {
4100
- /* Zero out "freed" memory. */
4101
- if (want_init_on_free ())
4100
+ /* Zero out "freed" memory, potentially for future realloc . */
4101
+ if (want_init_on_free () || want_init_on_alloc ( flags ) )
4102
4102
memset ((void * )p + size , 0 , old_size - size );
4103
4103
vm -> requested_size = size ;
4104
4104
kasan_poison_vmalloc (p + size , old_size - size );
@@ -4111,9 +4111,11 @@ void *vrealloc_noprof(const void *p, size_t size, gfp_t flags)
4111
4111
if (size <= alloced_size ) {
4112
4112
kasan_unpoison_vmalloc (p + old_size , size - old_size ,
4113
4113
KASAN_VMALLOC_PROT_NORMAL );
4114
- /* Zero out "alloced" memory. */
4115
- if (want_init_on_alloc (flags ))
4116
- memset ((void * )p + old_size , 0 , size - old_size );
4114
+ /*
4115
+ * No need to zero memory here, as unused memory will have
4116
+ * already been zeroed at initial allocation time or during
4117
+ * realloc shrink time.
4118
+ */
4117
4119
vm -> requested_size = size ;
4118
4120
return (void * )p ;
4119
4121
}
0 commit comments