Marco Elver
c28a209911
FROMGIT: kfence: avoid stalling work queue task without allocations
...
To toggle the allocation gates, we set up a delayed work that calls
toggle_allocation_gate(). Here we use wait_event() to await an allocation
and subsequently disable the static branch again. However, if the kernel
has stopped doing allocations entirely, we'd wait indefinitely, and stall
the worker task. This may also result in the appropriate warnings if
CONFIG_DETECT_HUNG_TASK=y.
Therefore, introduce a 1 second timeout and use wait_event_timeout(). If
the timeout is reached, the static branch is disabled and a new delayed
work is scheduled to try setting up an allocation at a later time.
Note that, this scenario is very unlikely during normal workloads once the
kernel has booted and user space tasks are running. It can, however,
happen during early boot after KFENCE has been enabled, when e.g. running
tests that do not result in any allocations.
Link: https://lkml.kernel.org/r/CADYN=9J0DQhizAGB0-jz4HOBBh+05kMBXb4c0cXMS7Qi5NAJiw@mail.gmail.com
Link: https://lkml.kernel.org/r/20201110135320.3309507-1-elver@google.com
Signed-off-by: Marco Elver <elver@google.com>
Reported-by: Anders Roxell <anders.roxell@linaro.org>
Cc: Alexander Potapenko <glider@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: SeongJae Park <sjpark@amazon.de>
Cc: Jann Horn <jannh@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Bug: 177201466
(cherry picked from commit 80d4693491f6f20de01437319b081fdda2079e67
https://github.com/hnaz/linux-mm v5.11-rc4-mmots-2021-01-21-20-10)
Test: CONFIG_KFENCE_KUNIT_TEST=y passes on Cuttlefish
Signed-off-by: Alexander Potapenko <glider@google.com>
Change-Id: I2332ff8144b8bce5c4574b01ea2863e0e71e6124
2026-05-07 17:24:02 +03:00
..
kasan
Merge android11-5.4.233+ ( 4716ccc) into msm-5.4
2023-05-30 11:16:10 +05:30
kfence
FROMGIT: kfence: avoid stalling work queue task without allocations
2026-05-07 17:24:02 +03:00
backing-dev.c
mm: bdi: initialize bdi_min_ratio when bdi is unregistered
2021-12-14 14:49:00 +01:00
balloon_compaction.c
cleancache.c
cma.c
Merge android11-5.4.265+ ( a34cc1d) into msm-5.4
2024-02-29 15:10:56 +05:30
cma.h
cma_debug.c
compaction.c
BACKPORT: sysctl: pass kernel pointers to ->proc_handler
2025-12-23 13:36:15 -08:00
debug.c
debug_page_ref.c
dmapool.c
early_ioremap.c
fadvise.c
failslab.c
filemap.c
Merge tag 'ASB-2025-10-06_11-5.4' of https://android.googlesource.com/kernel/common into android13-5.4-lahaina
2025-10-08 15:17:54 +03:00
frame_vector.c
v4l2: don't fall back to follow_pfn() if pin_user_pages_fast() fails
2022-12-08 11:23:06 +01:00
frontswap.c
treewide: Remove uninitialized_var() usage
2023-06-09 10:29:01 +02:00
gup.c
BACKPORT: mm/gup: Remove enfornced COW mechanism
2025-05-18 08:08:42 +00:00
gup_benchmark.c
highmem.c
hmm.c
mm/hmm: move pmd_to_hmm_pfn_flags() to the respective #ifdeffery
2025-08-28 16:21:34 +02:00
huge_memory.c
Merge tag 'ASB-2025-08-05_11-5.4' of https://android.googlesource.com/kernel/common into android13-5.4-lahaina
2025-09-01 13:17:46 +03:00
hugetlb.c
BACKPORT: sysctl: pass kernel pointers to ->proc_handler
2025-12-23 13:36:15 -08:00
hugetlb_cgroup.c
hwpoison-inject.c
init-mm.c
Revert "mm: protect mm_rb tree with a rwlock"
2025-05-24 05:44:05 +00:00
internal.h
Revert "mm: protect mm_rb tree with a rwlock"
2025-05-24 05:44:05 +00:00
interval_tree.c
Kconfig
Revert "mm: introduce CONFIG_SPECULATIVE_PAGE_FAULT"
2025-05-24 05:44:57 +00:00
Kconfig.debug
khugepaged.c
mm/khugepaged: fix the address passed to notifier on testing young
2025-10-02 13:34:28 +02:00
kmemleak-test.c
kmemleak.c
mm/kmemleak: avoid deadlock by moving pr_warn() outside kmemleak_lock
2025-08-28 16:21:34 +02:00
ksm.c
Merge android11-5.4.249+ ( d57e792) into msm-5.4
2023-09-28 16:45:28 +05:30
list_lru.c
maccess.c
BACKPORT: maccess: rename probe_user_{read,write} to copy_{from,to}_user_nofault
2026-01-14 18:13:22 -08:00
madvise.c
Merge tag 'ASB-2025-10-06_11-5.4' of https://android.googlesource.com/kernel/common into android13-5.4-lahaina
2025-10-08 15:17:54 +03:00
Makefile
BACKPORT: mm: add Kernel Electric-Fence infrastructure
2026-05-07 17:24:01 +03:00
memblock.c
This is the 5.4.232 stable release
2023-02-22 12:30:48 +00:00
memcontrol.c
UPSTREAM: mm: memcontrol: recursive memory.low protection
2026-01-14 18:13:12 -08:00
memfd.c
memfd: fix F_SEAL_WRITE after shmem huge page allocated
2022-03-08 19:07:49 +01:00
memory-failure.c
Merge branch 'android11-5.4-lts' of https://android.googlesource.com/kernel/common into android13-5.4-lahaina
2025-10-08 15:23:13 +03:00
memory.c
BACKPORT: mm/memory.c: Add memory read privilege on page fault handling
2026-01-14 18:13:19 -08:00
memory_hotplug.c
Merge android11-5.4.161+ ( b9d179c) into msm-5.4
2022-02-07 22:29:21 +05:30
mempolicy.c
Revert "mm: protect VMA modifications using VMA sequence count"
2025-05-24 05:44:09 +00:00
mempool.c
memremap.c
memtest.c
memtest: use {READ,WRITE}_ONCE in memory scanning
2024-04-13 12:51:27 +02:00
migrate.c
Merge branch 'android11-5.4-lts' of https://android.googlesource.com/kernel/common into android13-5.4-lahaina
2025-10-08 15:23:13 +03:00
mincore.c
mlock.c
Revert "mm: protect VMA modifications using VMA sequence count"
2025-05-24 05:44:09 +00:00
mm_init.c
mmap.c
This is the 5.4.297 stable release
2025-09-02 10:52:40 +00:00
mmu_context.c
mmu_gather.c
mm/khugepaged: fix GUP-fast interaction by sending IPI
2022-12-14 11:30:42 +01:00
mmu_notifier.c
mmzone.c
arm: remove CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
2022-05-15 19:54:46 +02:00
mprotect.c
Revert "mm: protect VMA modifications using VMA sequence count"
2025-05-24 05:44:09 +00:00
mremap.c
Revert "mm: protect mremap() against SPF hanlder"
2025-05-24 05:44:08 +00:00
msync.c
nommu.c
BACKPORT: mm: remove the pgprot argument to __vmalloc
2026-01-14 17:48:09 -08:00
oom_kill.c
Merge tag 'ASB-2025-05-05_11-5.4' of https://android.googlesource.com/kernel/common into android13-5.4-lahaina
2025-05-18 08:00:20 +00:00
OWNERS
page-writeback.c
BACKPORT: sysctl: pass kernel pointers to ->proc_handler
2025-12-23 13:36:15 -08:00
page_alloc.c
BACKPORT: mm: remove the pgprot argument to __vmalloc
2026-01-14 17:48:09 -08:00
page_counter.c
page_ext.c
page_idle.c
BACKPORT: mm: don't be stuck to rmap lock on reclaim path
2023-01-13 08:56:32 +00:00
page_io.c
Merge android11-5.4.197+ ( 3970bc6) into msm-5.4
2022-08-16 16:52:01 +05:30
page_isolation.c
page_owner.c
mm: page_owner: Fix -Wstrlcpy-strlcat-size
2025-04-26 21:17:21 +03:00
page_poison.c
page_vma_mapped.c
mm/thp: another PVMW_SYNC fix in page_vma_mapped_walk()
2021-06-30 08:47:55 -04:00
pagewalk.c
mm: pagewalk: Fix race between unmap and page walker
2022-10-15 07:54:36 +02:00
percpu-internal.h
percpu-km.c
percpu-stats.c
percpu-vm.c
percpu.c
BACKPORT: mm: remove the pgprot argument to __vmalloc
2026-01-14 17:48:09 -08:00
pgsize_migration.c
ANDROID: 16K: Allocate pad vma on the stack
2025-08-22 07:07:13 -07:00
pgtable-generic.c
mm/thp: fix __split_huge_pmd_locked() on shmem migration entry
2021-06-30 08:47:52 -04:00
process_vm_access.c
readahead.c
vfs: fix readahead(2) on block devices
2023-11-20 10:30:08 +01:00
rmap.c
Revert "mm: introduce __page_add_new_anon_rmap()"
2025-05-24 05:44:06 +00:00
rodata_test.c
BACKPORT: maccess: rename probe_kernel_{read,write} to copy_{from,to}_kernel_nofault
2026-01-14 18:13:21 -08:00
shmem.c
UPSTREAM: kernfs: Add removed_size out param for simple_xattr_set
2026-01-14 18:13:12 -08:00
showmem.c
shuffle.c
shuffle.h
slab.c
slab.h
mm: kmemleak: slob: respect SLAB_NOLEAKTRACE flag
2021-11-26 10:47:21 +01:00
slab_common.c
Merge tag 'ASB-2024-12-05_11-5.4' of https://android.googlesource.com/kernel/common into android13-5.4-lahaina
2024-12-17 03:24:53 +02:00
slob.c
slub.c
BACKPORT: maccess: rename probe_kernel_{read,write} to copy_{from,to}_kernel_nofault
2026-01-14 18:13:21 -08:00
sparse-vmemmap.c
sparse.c
swap.c
Revert "mm: introduce __lru_cache_add_active_or_unevictable"
2025-05-24 05:44:06 +00:00
swap_cgroup.c
swap_slots.c
swap_state.c
Revert "mm: protect VMA modifications using VMA sequence count"
2025-05-24 05:44:09 +00:00
swapfile.c
This is the 5.4.285 stable release
2024-11-09 11:29:17 +00:00
truncate.c
mm/thp: unmap_mapping_page() to fix THP truncate_cleanup_page()
2021-06-30 08:47:53 -04:00
usercopy.c
Merge android11-5.4.191+ ( 375c2e2) into msm-5.4
2022-06-09 11:43:23 +05:30
userfaultfd.c
UPSTREAM: mm/shmem: use page_mapping() to detect page cache for uffd continue
2025-05-18 08:08:42 +00:00
util.c
BACKPORT: sysctl: pass kernel pointers to ->proc_handler
2025-12-23 13:36:15 -08:00
vmacache.c
vmalloc.c
BACKPORT: mm: remove the pgprot argument to __vmalloc
2026-01-14 17:48:09 -08:00
vmpressure.c
vmscan.c
Merge tag 'ASB-2025-06-05_11-5.4' of https://android.googlesource.com/kernel/common into android13-5.4-lahaina
2025-06-30 10:49:17 +03:00
vmstat.c
BACKPORT: sysctl: pass kernel pointers to ->proc_handler
2025-12-23 13:36:15 -08:00
workingset.c
z3fold.c
mm/z3fold: fix potential memory leak in z3fold_destroy_pool()
2021-07-14 16:53:47 +02:00
zbud.c
zpool.c
zsmalloc.c
Merge tag 'ASB-2025-10-06_11-5.4' of https://android.googlesource.com/kernel/common into android13-5.4-lahaina
2025-10-08 15:17:54 +03:00
zswap.c