]> Git Repo - linux.git/commit
iov_iter: fix copy_page_from_iter_atomic() if KMAP_LOCAL_FORCE_MAP
authorHugh Dickins <[email protected]>
Sun, 27 Oct 2024 22:23:23 +0000 (15:23 -0700)
committerChristian Brauner <[email protected]>
Mon, 28 Oct 2024 12:39:35 +0000 (13:39 +0100)
commitc749d9b7ebbc5716af7a95f7768634b30d9446ec
tree21dfcaa2e437f49e3b26f5faaf10ccadac91e888
parentf19910006effbd08398de79ca0233ea7e480616a
iov_iter: fix copy_page_from_iter_atomic() if KMAP_LOCAL_FORCE_MAP

generic/077 on x86_32 CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP=y with highmem,
on huge=always tmpfs, issues a warning and then hangs (interruptibly):

WARNING: CPU: 5 PID: 3517 at mm/highmem.c:622 kunmap_local_indexed+0x62/0xc9
CPU: 5 UID: 0 PID: 3517 Comm: cp Not tainted 6.12.0-rc4 #2
...
copy_page_from_iter_atomic+0xa6/0x5ec
generic_perform_write+0xf6/0x1b4
shmem_file_write_iter+0x54/0x67

Fix copy_page_from_iter_atomic() by limiting it in that case
(include/linux/skbuff.h skb_frag_must_loop() does similar).

But going forward, perhaps CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP is too
surprising, has outlived its usefulness, and should just be removed?

Fixes: 908a1ad89466 ("iov_iter: Handle compound highmem pages in copy_page_from_iter_atomic()")
Signed-off-by: Hugh Dickins <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Reviewed-by: Christoph Hellwig <[email protected]>
Cc: [email protected]
Signed-off-by: Christian Brauner <[email protected]>
lib/iov_iter.c
This page took 0.051232 seconds and 4 git commands to generate.