linux/mm
Enze Li 6e4930e333 mm/damon/core: fix wasteful CPU calls by skipping non-existent targets
Currently, DAMON does not proactively clean up invalid monitoring targets
during its runtime.  When some monitored processes exit, DAMON continues
to make the following unnecessary function calls,

  --damon_for_each_target--
  --damon_for_each_region--
      damon_do_apply_schemes
        damos_apply_scheme
          damon_va_apply_scheme
            damos_madvise
              damon_get_mm

it is only in the damon_get_mm() function that it may finally discover the
target no longer exists, which wastes CPU resources.  A simple idea is to
check for the existence of monitoring targets within the
kdamond_need_stop() function and promptly clean up non-existent targets.

However, SJ pointed out that this approach is problematic because the
online commit logic incorrectly uses list indices to update the monitoring
state.  This can lead to data loss if the target list is changed
concurrently.  Meanwhile, SJ suggests checking for target existence at the
damon_for_each_target level, and if a target does not exist, simply skip
it and proceed to the next one.

Link: https://lkml.kernel.org/r/20251210052508.264433-1-lienze@kylinos.cn
Signed-off-by: Enze Li <lienze@kylinos.cn>
Suggested-by: SeongJae Park <sj@kernel.org>
Reviewed-by: SeongJae Park <sj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2026-01-20 19:24:42 -08:00
..
damon mm/damon/core: fix wasteful CPU calls by skipping non-existent targets 2026-01-20 19:24:42 -08:00
kasan mm: introduce generic lazy_mmu helpers 2026-01-20 19:24:33 -08:00
kfence mm/kfence: fix potential deadlock in reboot notifier 2026-01-20 09:34:26 -08:00
kmsan mm: kmsan: fix poisoning of high-order non-compound pages 2026-01-14 22:16:25 -08:00
tests mm: add basic tests for lazy_mmu 2026-01-20 19:24:35 -08:00
backing-dev.c Coccinelle-based conversion to use ->i_state accessors 2025-10-20 20:22:26 +02:00
balloon_compaction.c mm/migrate: fix NULL movable_ops if CONFIG_ZSMALLOC=m 2025-08-19 16:35:57 -07:00
bootmem_info.c
cma_debug.c mm: cma: simplify cma_maxchunk_get() 2025-07-24 19:12:36 -07:00
cma_sysfs.c
cma.c mm/cma: refuse handing out non-contiguous page ranges 2025-09-21 14:22:06 -07:00
cma.h mm: cma: set early_pfn and bitmap as a union in cma_memrange 2025-05-22 14:55:36 -07:00
compaction.c mm/compaction: fix low_pfn advance on isolating hugetlb 2025-09-28 11:51:29 -07:00
debug_page_alloc.c mm/debug_page_alloc: improve error message for invalid guardpage minorder 2025-05-12 23:50:38 -07:00
debug_page_ref.c
debug_vm_pgtable.c mm: softdirty: add pgtable_supports_soft_dirty() 2025-11-24 15:08:54 -08:00
debug.c mm: constify __dump_folio() arguments 2025-11-20 13:43:57 -08:00
dmapool_test.c
dmapool.c docs: dma-api: replace consistent with coherent 2025-07-01 13:25:36 -06:00
early_ioremap.c
execmem.c mm: remove PMD alignment constraint in execmem_vmalloc() 2025-09-28 11:51:31 -07:00
fadvise.c mm: rename filemap_fdatawrite_range_kick to filemap_flush_range 2025-10-29 15:50:42 +01:00
fail_page_alloc.c
failslab.c
filemap.c ARM: 2025-12-05 17:01:20 -08:00
folio-compat.c
gup_test.c
gup_test.h
gup.c mm: replace READ_ONCE() with standard page table accessors 2025-11-16 17:27:56 -08:00
highmem.c mm: constify highmem related functions for improved const-correctness 2025-09-21 14:22:15 -07:00
hmm.c Significant patch series in this merge are as follows: 2025-12-05 13:52:43 -08:00
huge_memory.c Patch series in this pull request: 2025-12-13 20:35:41 +12:00
hugetlb_cgroup.c
hugetlb_cma.c mm: hugetlb: directly pass order when allocate a hugetlb folio 2025-09-21 14:22:11 -07:00
hugetlb_cma.h mm: hugetlb: directly pass order when allocate a hugetlb folio 2025-09-21 14:22:11 -07:00
hugetlb_internal.h mm/hugetlb: extract sysctl into hugetlb_sysctl.c 2025-11-20 13:43:57 -08:00
hugetlb_sysctl.c mm/hugetlb: extract sysctl into hugetlb_sysctl.c 2025-11-20 13:43:57 -08:00
hugetlb_sysfs.c mm/hugetlb: extract sysfs into hugetlb_sysfs.c 2025-11-20 13:43:57 -08:00
hugetlb_vmemmap.c treewide: include linux/pgalloc.h instead of asm/pgalloc.h 2025-11-16 17:28:25 -08:00
hugetlb_vmemmap.h
hugetlb.c mm/hugetlb: fix excessive IPI broadcasts when unsharing PMD tables using mmu_gather 2026-01-20 09:34:26 -08:00
hwpoison-inject.c mm/hwpoison: decouple hwpoison_filter from mm/memory-failure.c 2025-09-21 14:22:21 -07:00
init-mm.c mm: rename cpu_bitmap field to flexible_array 2026-01-19 12:30:00 -08:00
internal.h mm: restore per-memcg proactive reclaim with !CONFIG_NUMA 2026-01-20 09:34:27 -08:00
interval_tree.c
ioremap.c
Kconfig mm: add basic tests for lazy_mmu 2026-01-20 19:24:35 -08:00
Kconfig.debug mm: fix DEBUG_RODATA_TEST indentation in Kconfig 2025-11-29 10:41:09 -08:00
khugepaged.c mm: declare VMA flags by bit 2025-11-29 10:41:08 -08:00
kmemleak.c mm: fix possible deadlock in kmemleak 2025-09-01 17:11:37 -07:00
ksm.c mm/ksm: fix pte_unmap_unlock of wrong address in break_ksm_pmd_entry 2025-12-23 11:23:17 -08:00
list_lru.c mm: memcontrol: rename mem_cgroup_from_slab_obj() 2026-01-20 19:24:42 -08:00
maccess.c mm: unexport globally copy_to_kernel_nofault 2025-07-09 22:42:22 -07:00
madvise.c mm: introduce generic lazy_mmu helpers 2026-01-20 19:24:33 -08:00
Makefile mm: add basic tests for lazy_mmu 2026-01-20 19:24:35 -08:00
mapping_dirty_helpers.c mm/dirty: replace READ_ONCE() with pudp_get() 2025-11-16 17:27:58 -08:00
memblock.c Significant patch series in this pull request: 2025-12-06 14:01:20 -08:00
memcontrol-v1.c memcg: move mem_cgroup_usage memcontrol-v1.c 2026-01-20 19:24:41 -08:00
memcontrol-v1.h memcg: move mem_cgroup_usage memcontrol-v1.c 2026-01-20 19:24:41 -08:00
memcontrol.c mm: memcontrol: rename mem_cgroup_from_slab_obj() 2026-01-20 19:24:42 -08:00
memfd_luo.c mm: memfd_luo: allow preserving memfd 2025-11-27 14:24:41 -08:00
memfd.c selinux/stable-6.19 PR 20251201 2025-12-03 10:45:47 -08:00
memory_hotplug.c Significant patch series in this merge are as follows: 2025-12-05 13:52:43 -08:00
memory-failure.c mm: fixup pfnmap memory failure handling to use pgoff 2025-12-23 11:23:15 -08:00
memory-tiers.c mm: fix some typos in mm module 2025-11-16 17:27:52 -08:00
memory.c mm: folio_zero_user: cache neighbouring pages 2026-01-20 19:24:41 -08:00
mempolicy.c ARM: 2025-12-05 17:01:20 -08:00
mempool.c slab updates for 6.19 2025-12-03 11:53:47 -08:00
memremap.c mm/memremap: fix spurious large folio warning for FS-DAX 2025-12-23 11:23:16 -08:00
memtest.c
migrate_device.c mm: introduce generic lazy_mmu helpers 2026-01-20 19:24:33 -08:00
migrate.c migrate: correct lock ordering for hugetlb file folios 2026-01-19 12:30:01 -08:00
mincore.c mm: replace remaining pte_to_swp_entry() with softleaf_from_pte() 2025-11-24 15:08:52 -08:00
mlock.c mm: update vma_modify_flags() to handle residual flags, document 2025-11-20 13:43:58 -08:00
mm_init.c memblock: introduce check_pages boot parameter 2025-12-07 08:56:10 -08:00
mm_slot.h
mmap_lock.c mm: fix vma_start_write_killable() signal handling 2025-11-29 10:41:11 -08:00
mmap.c mm: softdirty: add pgtable_supports_soft_dirty() 2025-11-24 15:08:54 -08:00
mmu_gather.c mm/hugetlb: fix excessive IPI broadcasts when unsharing PMD tables using mmu_gather 2026-01-20 09:34:26 -08:00
mmu_notifier.c Update Christoph's Email address and make it consistent 2025-05-12 23:50:31 -07:00
mmzone.c mm: introduce memdesc_flags_t 2025-09-13 16:55:07 -07:00
mprotect.c mm: introduce generic lazy_mmu helpers 2026-01-20 19:24:33 -08:00
mremap.c mm: introduce generic lazy_mmu helpers 2026-01-20 19:24:33 -08:00
mseal.c mm: update vma_modify_flags() to handle residual flags, document 2025-11-20 13:43:58 -08:00
msync.c
nommu.c mm/nommu: convert kobjsize() to folios 2025-09-13 16:54:46 -07:00
numa_emulation.c mm: numa,memblock: Use SZ_1M macro to denote bytes to MB conversion 2025-08-20 16:31:23 +03:00
numa_memblks.c mm: numa,memblock: include <asm/numa.h> for 'numa_nodes_parsed' 2026-01-14 22:16:26 -08:00
numa.c mm/numa: remove unnecessary local variable in alloc_node_data() 2025-05-12 23:50:38 -07:00
oom_kill.c mm: memcg: dump memcg protection info on oom or alloc failures 2025-11-20 13:43:59 -08:00
page_alloc.c dma-mapping fixes for Linux 6.19 2026-01-20 10:16:18 -08:00
page_counter.c
page_ext.c mm,page_ext: derive the node from the pfn 2025-07-13 16:38:16 -07:00
page_frag_cache.c
page_idle.c mm/rmap: extend rmap and migration support device-private entries 2025-11-24 15:08:48 -08:00
page_io.c mm, swap: tidy up swap device and cluster info helpers 2025-09-21 14:22:23 -07:00
page_isolation.c mm/page_isolation: drop __folio_test_movable() check for large folios 2025-07-13 16:38:29 -07:00
page_owner.c mm/page_owner: fix memory leak in page_owner_stack_fops->release() 2025-12-23 11:23:17 -08:00
page_poison.c
page_reporting.c
page_reporting.h
page_table_check.c mm: replace pmd_to_swp_entry() with softleaf_from_pmd() 2025-11-24 15:08:51 -08:00
page_vma_mapped.c mm: eliminate further swapops predicates 2025-11-24 15:08:52 -08:00
page-writeback.c Significant patch series in this merge are as follows: 2025-12-05 13:52:43 -08:00
pagewalk.c mm: eliminate further swapops predicates 2025-11-24 15:08:52 -08:00
percpu-internal.h
percpu-km.c mm/mm/percpu-km: drop nth_page() usage within single allocation 2025-09-21 14:22:04 -07:00
percpu-stats.c mm: remove outdated filename comment in percpu-stats.c 2025-07-13 16:38:23 -07:00
percpu-vm.c kmsan: remove hard-coded GFP_KERNEL flags 2025-11-16 17:27:54 -08:00
percpu.c percpu: fix race on alloc failed warning limit 2025-09-08 23:45:10 -07:00
pgalloc-track.h
pgtable-generic.c mm/huge_memory: add device-private THP support to PMD operations 2025-11-24 15:08:48 -08:00
process_vm_access.c
pt_reclaim.c treewide: include linux/pgalloc.h instead of asm/pgalloc.h 2025-11-16 17:28:25 -08:00
ptdump.c mm/ptdump: replace READ_ONCE() with standard page table accessors 2025-11-16 17:27:52 -08:00
readahead.c mm/filemap: Add NUMA mempolicy support to filemap_alloc_folio() 2025-10-20 06:30:25 -07:00
rmap.c mm/hugetlb: fix excessive IPI broadcasts when unsharing PMD tables using mmu_gather 2026-01-20 09:34:26 -08:00
rodata_test.c
secretmem.c Significant patch series in this merge are as follows: 2025-12-05 13:52:43 -08:00
shmem_quota.c
shmem.c mm/shmem: add mTHP swpout fallback statistics in shmem_writeout() 2026-01-20 19:24:35 -08:00
show_mem.c mm: re-enable kswapd when memory pressure subsides or demotion is toggled 2025-09-21 14:22:29 -07:00
shrinker_debug.c
shrinker.c
shuffle.c
shuffle.h
slab_common.c slab fix for 6.19-rc1 2025-12-11 08:54:08 +09:00
slab.h mm/slab: introduce kvfree_rcu_barrier_on_cache() for cache destruction 2025-12-07 18:09:54 +01:00
slub.c slab fix for 6.19-rc2 2025-12-20 11:24:42 -08:00
sparse-vmemmap.c mm: replace READ_ONCE() with standard page table accessors 2025-11-16 17:27:56 -08:00
sparse.c mm/memory_hotplug: Remove MEM_PREPARE_ONLINE/MEM_FINISH_OFFLINE notifiers 2025-10-14 14:24:53 +02:00
swap_cgroup.c
swap_state.c mm, swap: remove redundant comment for read_swap_cache_async 2025-11-24 15:08:56 -08:00
swap_table.h mm, swap: use a single page for swap table when the size fits 2025-09-21 14:22:25 -07:00
swap.c mm: lru_add_drain_all() do local lru_add_drain() first 2025-09-21 14:22:32 -07:00
swap.h mm/migrate, swap: drop usage of folio_index 2025-11-16 17:28:20 -08:00
swapfile.c mm/swapfile: use plist_for_each_entry in __folio_throttle_swaprate 2025-11-29 10:41:11 -08:00
truncate.c vfs-6.19-rc1.folio 2025-12-01 10:26:38 -08:00
usercopy.c usercopy: Remove folio references from check_heap_object() 2025-11-13 11:01:08 +01:00
userfaultfd.c mm: introduce generic lazy_mmu helpers 2026-01-20 19:24:33 -08:00
util.c mm: add ability to take further action in vm_area_desc 2025-11-16 17:28:12 -08:00
vma_exec.c mm: softdirty: add pgtable_supports_soft_dirty() 2025-11-24 15:08:54 -08:00
vma_init.c Summary of significant series in this pull request: 2025-10-02 18:18:33 -07:00
vma_internal.h
vma.c mm/vma: do not leak memory when .mmap_prepare swaps the file 2026-01-19 12:30:01 -08:00
vma.h mm/vma: fix anon_vma UAF on mremap() faulted, unfaulted merge 2026-01-14 22:16:24 -08:00
vmalloc.c mm: introduce generic lazy_mmu helpers 2026-01-20 19:24:33 -08:00
vmpressure.c memcg: convert memcg->socket_pressure to u64 2025-07-24 19:12:32 -07:00
vmscan.c memcg: remove mem_cgroup_size() 2026-01-20 19:24:42 -08:00
vmstat.c mm: vmstat: correct the comment above preempt_disable_nested() 2025-11-20 13:43:59 -08:00
workingset.c Significant patch series in this merge are as follows: 2025-12-05 13:52:43 -08:00
zpdesc.h mm: zpdesc: minor naming and comment corrections 2025-09-21 14:21:59 -07:00
zsmalloc.c mm: remove unused zpool layer 2025-09-21 14:21:59 -07:00
zswap.c mm: zswap: delete unused acomp->is_sleepable 2026-01-20 19:24:41 -08:00