summaryrefslogtreecommitdiff
path: root/include/linux/vga_switcheroo.h
diff options
context:
space:
mode:
authorDanilo Krummrich <dakr@kernel.org>2024-07-30 20:52:34 +0200
committerDanilo Krummrich <dakr@kernel.org>2024-08-13 16:04:19 +0200
commita089a03947a5bf3a2a28919bb859ddc394b897bb (patch)
tree1b82de66d226d5a559d4733d86495a30a37a10a3 /include/linux/vga_switcheroo.h
parent4575c0baa19b1a74b307677abbe25b1d6d5be0c3 (diff)
mm: krealloc: consider spare memory for __GFP_ZERO
As long as krealloc() is called with __GFP_ZERO consistently, starting with the initial memory allocation, __GFP_ZERO should be fully honored. However, if for an existing allocation krealloc() is called with a decreased size, it is not ensured that the spare portion the allocation is zeroed. Thus, if krealloc() is subsequently called with a larger size again, __GFP_ZERO can't be fully honored, since we don't know the previous size, but only the bucket size. Example: buf = kzalloc(64, GFP_KERNEL); memset(buf, 0xff, 64); buf = krealloc(buf, 48, GFP_KERNEL | __GFP_ZERO); /* After this call the last 16 bytes are still 0xff. */ buf = krealloc(buf, 64, GFP_KERNEL | __GFP_ZERO); Fix this, by explicitly setting spare memory to zero, when shrinking an allocation with __GFP_ZERO flag set or init_on_alloc enabled. Acked-by: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Danilo Krummrich <dakr@kernel.org>
Diffstat (limited to 'include/linux/vga_switcheroo.h')
0 files changed, 0 insertions, 0 deletions