From: Hyeonggon Yoo <42.hyeyoo@gmail.com>
To: Suren Baghdasaryan <surenb@google.com>
Cc: michel@lespinasse.org, joelaf@google.com, songliubraving@fb.com,
mhocko@suse.com, leewalsh@google.com, david@redhat.com,
peterz@infradead.org, bigeasy@linutronix.de, peterx@redhat.com,
dhowells@redhat.com, linux-mm@kvack.org, edumazet@google.com,
jglisse@google.com, punit.agrawal@bytedance.com, will@kernel.org,
arjunroy@google.com, dave@stgolabs.net, minchan@google.com,
x86@kernel.org, hughd@google.com, willy@infradead.org,
gurua@google.com, mingo@redhat.com,
linux-arm-kernel@lists.infradead.org, rientjes@google.com,
axelrasmussen@google.com, kernel-team@android.com,
soheil@google.com, paulmck@kernel.org, jannh@google.com,
liam.howlett@oracle.com, shakeelb@google.com, luto@kernel.org,
gthelen@google.com, ldufour@linux.ibm.com, vbabka@suse.cz,
posk@google.com, lstoakes@gmail.com, peterjung1337@gmail.com,
linuxppc-dev@lists.ozlabs.org, kent.overstreet@linux.dev,
linux-kernel@vger.kernel.org, hannes@cmpxchg.org,
akpm@linux-foundation.org, tatashin@google.com,
mgorman@techsingularity .net, rppt@kernel.org
Subject: Re: [PATCH v4 5/7] mm: replace vma->vm_flags indirect modification in ksm_madvise
Date: Wed, 8 Feb 2023 01:54:47 +0000 [thread overview]
Message-ID: <Y+MA5wUYgtq6Ll++@localhost> (raw)
In-Reply-To: <20230126193752.297968-6-surenb@google.com>
On Thu, Jan 26, 2023 at 11:37:50AM -0800, Suren Baghdasaryan wrote:
> Replace indirect modifications to vma->vm_flags with calls to modifier
> functions to be able to track flag changes and to keep vma locking
> correctness.
>
> Signed-off-by: Suren Baghdasaryan <surenb@google.com>
> Acked-by: Michal Hocko <mhocko@suse.com>
> Acked-by: Mel Gorman <mgorman@techsingularity.net>
> Acked-by: Mike Rapoport (IBM) <rppt@kernel.org>
> ---
> arch/powerpc/kvm/book3s_hv_uvmem.c | 6 +++++-
> arch/s390/mm/gmap.c | 6 +++++-
> 2 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/kvm/book3s_hv_uvmem.c b/arch/powerpc/kvm/book3s_hv_uvmem.c
> index 1d67baa5557a..709ebd578394 100644
> --- a/arch/powerpc/kvm/book3s_hv_uvmem.c
> +++ b/arch/powerpc/kvm/book3s_hv_uvmem.c
> @@ -393,6 +393,7 @@ static int kvmppc_memslot_page_merge(struct kvm *kvm,
> {
> unsigned long gfn = memslot->base_gfn;
> unsigned long end, start = gfn_to_hva(kvm, gfn);
> + unsigned long vm_flags;
> int ret = 0;
> struct vm_area_struct *vma;
> int merge_flag = (merge) ? MADV_MERGEABLE : MADV_UNMERGEABLE;
> @@ -409,12 +410,15 @@ static int kvmppc_memslot_page_merge(struct kvm *kvm,
> ret = H_STATE;
> break;
> }
> + /* Copy vm_flags to avoid partial modifications in ksm_madvise */
> + vm_flags = vma->vm_flags;
> ret = ksm_madvise(vma, vma->vm_start, vma->vm_end,
> - merge_flag, &vma->vm_flags);
> + merge_flag, &vm_flags);
> if (ret) {
> ret = H_STATE;
> break;
> }
> + vm_flags_reset(vma, vm_flags);
> start = vma->vm_end;
> } while (end > vma->vm_end);
>
> diff --git a/arch/s390/mm/gmap.c b/arch/s390/mm/gmap.c
> index ab836597419d..5a716bdcba05 100644
> --- a/arch/s390/mm/gmap.c
> +++ b/arch/s390/mm/gmap.c
> @@ -2587,14 +2587,18 @@ int gmap_mark_unmergeable(void)
> {
> struct mm_struct *mm = current->mm;
> struct vm_area_struct *vma;
> + unsigned long vm_flags;
> int ret;
> VMA_ITERATOR(vmi, mm, 0);
>
> for_each_vma(vmi, vma) {
> + /* Copy vm_flags to avoid partial modifications in ksm_madvise */
> + vm_flags = vma->vm_flags;
> ret = ksm_madvise(vma, vma->vm_start, vma->vm_end,
> - MADV_UNMERGEABLE, &vma->vm_flags);
> + MADV_UNMERGEABLE, &vm_flags);
> if (ret)
> return ret;
> + vm_flags_reset(vma, vm_flags);
> }
> mm->def_flags &= ~VM_MERGEABLE;
> return 0;
> --
Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
> 2.39.1
>
>
WARNING: multiple messages have this Message-ID (diff)
From: Hyeonggon Yoo <42.hyeyoo@gmail.com>
To: Suren Baghdasaryan <surenb@google.com>
Cc: akpm@linux-foundation.org, michel@lespinasse.org,
jglisse@google.com, mhocko@suse.com, vbabka@suse.cz,
hannes@cmpxchg.org, mgorman@techsingularity.net,
dave@stgolabs.net, willy@infradead.org, liam.howlett@oracle.com,
peterz@infradead.org, ldufour@linux.ibm.com, paulmck@kernel.org,
mingo@redhat.com, will@kernel.org, luto@kernel.org,
songliubraving@fb.com, peterx@redhat.com, david@redhat.com,
dhowells@redhat.com, hughd@google.com, bigeasy@linutronix.de,
kent.overstreet@linux.dev, punit.agrawal@bytedance.com,
lstoakes@gmail.com, peterjung1337@gmail.com, rientjes@google.com,
axelrasmussen@google.com, joelaf@google.com, minchan@google.com,
rppt@kernel.org, jannh@google.com, shakeelb@google.com,
tatashin@google.com, edumazet@google.com, gthelen@google.com,
gurua@google.com, arjunroy@google.com, soheil@google.com,
leewalsh@google.com, posk@google.com, linux-mm@kvack.org,
linux-arm-kernel@lists.infradead.org,
linuxppc-dev@lists.ozlabs.org, x86@kernel.org,
linux-kernel@vger.kernel.org, kernel-team@android.com
Subject: Re: [PATCH v4 5/7] mm: replace vma->vm_flags indirect modification in ksm_madvise
Date: Wed, 8 Feb 2023 01:54:47 +0000 [thread overview]
Message-ID: <Y+MA5wUYgtq6Ll++@localhost> (raw)
In-Reply-To: <20230126193752.297968-6-surenb@google.com>
On Thu, Jan 26, 2023 at 11:37:50AM -0800, Suren Baghdasaryan wrote:
> Replace indirect modifications to vma->vm_flags with calls to modifier
> functions to be able to track flag changes and to keep vma locking
> correctness.
>
> Signed-off-by: Suren Baghdasaryan <surenb@google.com>
> Acked-by: Michal Hocko <mhocko@suse.com>
> Acked-by: Mel Gorman <mgorman@techsingularity.net>
> Acked-by: Mike Rapoport (IBM) <rppt@kernel.org>
> ---
> arch/powerpc/kvm/book3s_hv_uvmem.c | 6 +++++-
> arch/s390/mm/gmap.c | 6 +++++-
> 2 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/kvm/book3s_hv_uvmem.c b/arch/powerpc/kvm/book3s_hv_uvmem.c
> index 1d67baa5557a..709ebd578394 100644
> --- a/arch/powerpc/kvm/book3s_hv_uvmem.c
> +++ b/arch/powerpc/kvm/book3s_hv_uvmem.c
> @@ -393,6 +393,7 @@ static int kvmppc_memslot_page_merge(struct kvm *kvm,
> {
> unsigned long gfn = memslot->base_gfn;
> unsigned long end, start = gfn_to_hva(kvm, gfn);
> + unsigned long vm_flags;
> int ret = 0;
> struct vm_area_struct *vma;
> int merge_flag = (merge) ? MADV_MERGEABLE : MADV_UNMERGEABLE;
> @@ -409,12 +410,15 @@ static int kvmppc_memslot_page_merge(struct kvm *kvm,
> ret = H_STATE;
> break;
> }
> + /* Copy vm_flags to avoid partial modifications in ksm_madvise */
> + vm_flags = vma->vm_flags;
> ret = ksm_madvise(vma, vma->vm_start, vma->vm_end,
> - merge_flag, &vma->vm_flags);
> + merge_flag, &vm_flags);
> if (ret) {
> ret = H_STATE;
> break;
> }
> + vm_flags_reset(vma, vm_flags);
> start = vma->vm_end;
> } while (end > vma->vm_end);
>
> diff --git a/arch/s390/mm/gmap.c b/arch/s390/mm/gmap.c
> index ab836597419d..5a716bdcba05 100644
> --- a/arch/s390/mm/gmap.c
> +++ b/arch/s390/mm/gmap.c
> @@ -2587,14 +2587,18 @@ int gmap_mark_unmergeable(void)
> {
> struct mm_struct *mm = current->mm;
> struct vm_area_struct *vma;
> + unsigned long vm_flags;
> int ret;
> VMA_ITERATOR(vmi, mm, 0);
>
> for_each_vma(vmi, vma) {
> + /* Copy vm_flags to avoid partial modifications in ksm_madvise */
> + vm_flags = vma->vm_flags;
> ret = ksm_madvise(vma, vma->vm_start, vma->vm_end,
> - MADV_UNMERGEABLE, &vma->vm_flags);
> + MADV_UNMERGEABLE, &vm_flags);
> if (ret)
> return ret;
> + vm_flags_reset(vma, vm_flags);
> }
> mm->def_flags &= ~VM_MERGEABLE;
> return 0;
> --
Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
> 2.39.1
>
>
next prev parent reply other threads:[~2023-02-08 1:55 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-26 19:37 [PATCH v4 0/7] introduce vm_flags modifier functions Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-26 19:37 ` [PATCH v4 1/7] kernel/fork: convert vma assignment to a memcpy Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-26 19:40 ` Mike Rapoport
2023-01-26 19:40 ` Mike Rapoport
2023-01-26 19:40 ` Mike Rapoport
2023-01-26 19:37 ` [PATCH v4 2/7] mm: introduce vma->vm_flags wrapper functions Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-26 19:42 ` Mike Rapoport
2023-01-26 19:42 ` Mike Rapoport
2023-01-26 19:42 ` Mike Rapoport
2023-02-08 1:48 ` Hyeonggon Yoo
2023-02-08 1:48 ` Hyeonggon Yoo
2023-01-26 19:37 ` [PATCH v4 3/7] mm: replace VM_LOCKED_CLEAR_MASK with VM_LOCKED_MASK Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-27 17:45 ` Davidlohr Bueso
2023-01-27 17:45 ` Davidlohr Bueso
2023-01-27 17:45 ` Davidlohr Bueso
2023-01-27 20:56 ` Suren Baghdasaryan
2023-01-27 20:56 ` Suren Baghdasaryan
2023-01-26 19:37 ` [PATCH v4 4/7] mm: replace vma->vm_flags direct modifications with modifier calls Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-27 14:23 ` Liam R. Howlett
2023-01-27 14:23 ` Liam R. Howlett
2023-01-27 14:23 ` Liam R. Howlett
2023-01-31 8:32 ` Hyeonggon Yoo
2023-01-31 8:32 ` Hyeonggon Yoo
2023-01-31 8:32 ` Hyeonggon Yoo
2023-01-31 18:54 ` Suren Baghdasaryan
2023-01-31 18:54 ` Suren Baghdasaryan
2023-01-31 18:54 ` Suren Baghdasaryan
2023-01-31 20:53 ` Andrew Morton
2023-01-31 20:53 ` Andrew Morton
2023-01-31 20:53 ` Andrew Morton
2023-01-31 21:08 ` Suren Baghdasaryan
2023-01-31 21:08 ` Suren Baghdasaryan
2023-01-31 21:08 ` Suren Baghdasaryan
2023-01-31 23:12 ` Andrew Morton
2023-01-31 23:12 ` Andrew Morton
2023-01-31 23:12 ` Andrew Morton
2023-02-01 0:03 ` Suren Baghdasaryan
2023-02-01 0:03 ` Suren Baghdasaryan
2023-02-01 0:03 ` Suren Baghdasaryan
2023-02-01 12:23 ` Hyeonggon Yoo
2023-02-01 12:23 ` Hyeonggon Yoo
2023-02-01 12:23 ` Hyeonggon Yoo
2023-01-26 19:37 ` [PATCH v4 5/7] mm: replace vma->vm_flags indirect modification in ksm_madvise Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-26 22:45 ` Michael Ellerman
2023-01-26 22:45 ` Michael Ellerman
2023-01-26 22:45 ` Michael Ellerman
2023-02-08 1:54 ` Hyeonggon Yoo [this message]
2023-02-08 1:54 ` Hyeonggon Yoo
2023-01-26 19:37 ` [PATCH v4 6/7] mm: introduce __vm_flags_mod and use it in untrack_pfn Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-26 19:44 ` Mike Rapoport
2023-01-26 19:44 ` Mike Rapoport
2023-01-26 19:44 ` Mike Rapoport
2023-01-26 19:37 ` [PATCH v4 7/7] mm: export dump_mm() Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-01-26 19:37 ` Suren Baghdasaryan
2023-03-14 20:11 ` [PATCH v4 0/7] introduce vm_flags modifier functions Alex Williamson
2023-03-14 20:11 ` Alex Williamson
2023-03-17 19:08 ` Suren Baghdasaryan
2023-03-17 19:08 ` Suren Baghdasaryan
2023-03-17 22:40 ` Alex Williamson
2023-03-17 22:40 ` Alex Williamson
2023-03-17 23:04 ` Suren Baghdasaryan
2023-03-17 23:04 ` Suren Baghdasaryan
2023-03-22 13:48 ` Jason Gunthorpe
2023-03-22 13:48 ` Jason Gunthorpe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y+MA5wUYgtq6Ll++@localhost \
--to=42.hyeyoo@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=arjunroy@google.com \
--cc=axelrasmussen@google.com \
--cc=bigeasy@linutronix.de \
--cc=dave@stgolabs.net \
--cc=david@redhat.com \
--cc=dhowells@redhat.com \
--cc=edumazet@google.com \
--cc=gthelen@google.com \
--cc=gurua@google.com \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=jannh@google.com \
--cc=jglisse@google.com \
--cc=joelaf@google.com \
--cc=kent.overstreet@linux.dev \
--cc=kernel-team@android.com \
--cc=ldufour@linux.ibm.com \
--cc=leewalsh@google.com \
--cc=liam.howlett@oracle.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lstoakes@gmail.com \
--cc=luto@kernel.org \
--cc=mgorman@techsingularity.net \
--cc=mhocko@suse.com \
--cc=michel@lespinasse.org \
--cc=minchan@google.com \
--cc=mingo@redhat.com \
--cc=paulmck@kernel.org \
--cc=peterjung1337@gmail.com \
--cc=peterx@redhat.com \
--cc=peterz@infradead.org \
--cc=posk@google.com \
--cc=punit.agrawal@bytedance.com \
--cc=rientjes@google.com \
--cc=rppt@kernel.org \
--cc=shakeelb@google.com \
--cc=soheil@google.com \
--cc=songliubraving@fb.com \
--cc=surenb@google.com \
--cc=tatashin@google.com \
--cc=vbabka@suse.cz \
--cc=will@kernel.org \
--cc=willy@infradead.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.