mirror of
https://github.com/torvalds/linux.git
synced 2026-09-25 17:42: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;
|
||||
again:
|
||||
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_chain *vmac;
|
||||
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_interval_tree_foreach(vmac, &anon_vma->rb_root,
|
||||
0, ULONG_MAX) {
|
||||
unsigned long addr;
|
||||
|
||||
cond_resched();
|
||||
vma = vmac->vma;
|
||||
|
||||
/* Ignore the stable/unstable/sqnr flags */
|
||||
addr = rmap_item->address & PAGE_MASK;
|
||||
|
||||
if (addr < vma->vm_start || addr >= vma->vm_end)
|
||||
continue;
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user