+static void __ksm_add_vma(struct vm_area_struct *vma) +{
- unsigned long vm_flags = vma->vm_flags;
- if (vm_flags & VM_MERGEABLE)
return;
- if (vma_ksm_compatible(vma)) {
vm_flags |= VM_MERGEABLE;
vm_flags_reset(vma, vm_flags);
- }
+}
We can do the following simplification on top:
diff --git a/mm/ksm.c b/mm/ksm.c index 905c8edce5cf..26e7f585d65d 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -2511,15 +2511,11 @@ static int ksm_scan_thread(void *nothing)
static void __ksm_add_vma(struct vm_area_struct *vma) { - unsigned long vm_flags = vma->vm_flags; - - if (vm_flags & VM_MERGEABLE) + if (vma->vm_flags & VM_MERGEABLE) return;
- if (vma_ksm_compatible(vma)) { - vm_flags |= VM_MERGEABLE; - vm_flags_reset(vma, vm_flags); - } + if (vma_ksm_compatible(vma)) + vm_flags_set(vma, VM_MERGEABLE); }
/**
David Hildenbrand david@redhat.com writes:
+static void __ksm_add_vma(struct vm_area_struct *vma) +{
- unsigned long vm_flags = vma->vm_flags;
- if (vm_flags & VM_MERGEABLE)
return;
- if (vma_ksm_compatible(vma)) {
vm_flags |= VM_MERGEABLE;
vm_flags_reset(vma, vm_flags);
- }
+}
We can do the following simplification on top:
diff --git a/mm/ksm.c b/mm/ksm.c index 905c8edce5cf..26e7f585d65d 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -2511,15 +2511,11 @@ static int ksm_scan_thread(void *nothing)
static void __ksm_add_vma(struct vm_area_struct *vma) {
- unsigned long vm_flags = vma->vm_flags;
- if (vm_flags & VM_MERGEABLE)
- if (vma->vm_flags & VM_MERGEABLE) return;
- if (vma_ksm_compatible(vma)) {
vm_flags |= VM_MERGEABLE;
vm_flags_reset(vma, vm_flags);
- }
- if (vma_ksm_compatible(vma))
vm_flags_set(vma, VM_MERGEABLE);
}
/**
2.39.2
The next version has the above change.
I have some patches based on your patch set (handling/testing unmerging whens setting PR_SET_MEMORY_MERGE=0. Will send out once you changes are queued.
linux-kselftest-mirror@lists.linaro.org