mirror of
https://github.com/torvalds/linux.git
synced 2026-09-26 18:12:03 +02:00
ksm: initialize the addr only once in rmap_walk_ksm
This is a minor performance optimization, especially when there are many for-loop iterations, because the addr variable doesn't change across iterations. Therefore, it only needs to be initialized once before the loop. Link: https://lkml.kernel.org/r/20260212192820223O_r2NQzSEPG_C56cs-z4l@zte.com.cn Link: https://lkml.kernel.org/r/20260212192932941MSsJEAyoRW4YdLBN7_myn@zte.com.cn Signed-off-by: xu xin <xu.xin16@zte.com.cn> Acked-by: David Hildenbrand (Arm) <david@kernel.org> Cc: Chengming Zhou <chengming.zhou@linux.dev> Cc: Hugh Dickins <hughd@google.com> Cc: Wang Yaxin <wang.yaxin@zte.com.cn> Cc: Yang Yang <yang.yang29@zte.com.cn> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
34ca46cc6f
commit
318d87b8fa
7
mm/ksm.c
7
mm/ksm.c
|
|
@ -3168,6 +3168,8 @@ void rmap_walk_ksm(struct folio *folio, struct rmap_walk_control *rwc)
|
||||||
return;
|
return;
|
||||||
again:
|
again:
|
||||||
hlist_for_each_entry(rmap_item, &stable_node->hlist, hlist) {
|
hlist_for_each_entry(rmap_item, &stable_node->hlist, hlist) {
|
||||||
|
/* Ignore the stable/unstable/sqnr flags */
|
||||||
|
const unsigned long addr = rmap_item->address & PAGE_MASK;
|
||||||
struct anon_vma *anon_vma = rmap_item->anon_vma;
|
struct anon_vma *anon_vma = rmap_item->anon_vma;
|
||||||
struct anon_vma_chain *vmac;
|
struct anon_vma_chain *vmac;
|
||||||
struct vm_area_struct *vma;
|
struct vm_area_struct *vma;
|
||||||
|
|
@ -3180,16 +3182,13 @@ void rmap_walk_ksm(struct folio *folio, struct rmap_walk_control *rwc)
|
||||||
}
|
}
|
||||||
anon_vma_lock_read(anon_vma);
|
anon_vma_lock_read(anon_vma);
|
||||||
}
|
}
|
||||||
|
|
||||||
anon_vma_interval_tree_foreach(vmac, &anon_vma->rb_root,
|
anon_vma_interval_tree_foreach(vmac, &anon_vma->rb_root,
|
||||||
0, ULONG_MAX) {
|
0, ULONG_MAX) {
|
||||||
unsigned long addr;
|
|
||||||
|
|
||||||
cond_resched();
|
cond_resched();
|
||||||
vma = vmac->vma;
|
vma = vmac->vma;
|
||||||
|
|
||||||
/* Ignore the stable/unstable/sqnr flags */
|
|
||||||
addr = rmap_item->address & PAGE_MASK;
|
|
||||||
|
|
||||||
if (addr < vma->vm_start || addr >= vma->vm_end)
|
if (addr < vma->vm_start || addr >= vma->vm_end)
|
||||||
continue;
|
continue;
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user