From: Suren Baghdasaryan <surenb@google.com>
To: Cyrill Gorcunov <gorcunov@gmail.com>
Cc: "Andrew Morton" <akpm@linux-foundation.org>,
"Colin Cross" <ccross@google.com>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Michal Hocko" <mhocko@suse.com>,
"Dave Hansen" <dave.hansen@intel.com>,
"Kees Cook" <keescook@chromium.org>,
"Matthew Wilcox" <willy@infradead.org>,
"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
"Vlastimil Babka" <vbabka@suse.cz>,
"Johannes Weiner" <hannes@cmpxchg.org>,
"Jonathan Corbet" <corbet@lwn.net>,
"Al Viro" <viro@zeniv.linux.org.uk>,
"Randy Dunlap" <rdunlap@infradead.org>,
"Kalesh Singh" <kaleshsingh@google.com>,
"Peter Xu" <peterx@redhat.com>,
rppt@kernel.org, "Peter Zijlstra" <peterz@infradead.org>,
"Catalin Marinas" <catalin.marinas@arm.com>,
vincenzo.frascino@arm.com,
"Chinwen Chang (張錦文)" <chinwen.chang@mediatek.com>,
"Axel Rasmussen" <axelrasmussen@google.com>,
"Andrea Arcangeli" <aarcange@redhat.com>,
"Jann Horn" <jannh@google.com>,
apopple@nvidia.com, "John Hubbard" <jhubbard@nvidia.com>,
"Yu Zhao" <yuzhao@google.com>, "Will Deacon" <will@kernel.org>,
fenghua.yu@intel.com, thunder.leizhen@huawei.com,
"Hugh Dickins" <hughd@google.com>,
feng.tang@intel.com, "Jason Gunthorpe" <jgg@ziepe.ca>,
"Roman Gushchin" <guro@fb.com>,
"Thomas Gleixner" <tglx@linutronix.de>,
krisman@collabora.com, chris.hyser@oracle.com,
"Peter Collingbourne" <pcc@google.com>,
"Eric W. Biederman" <ebiederm@xmission.com>,
"Jens Axboe" <axboe@kernel.dk>,
legion@kernel.org, eb@emlix.com,
"Muchun Song" <songmuchun@bytedance.com>,
"Viresh Kumar" <viresh.kumar@linaro.org>,
"Thomas Cedeno" <thomascedeno@google.com>,
sashal@kernel.org, cxfcosmos@gmail.com,
"Rasmus Villemoes" <linux@rasmusvillemoes.dk>,
LKML <linux-kernel@vger.kernel.org>,
linux-fsdevel@vger.kernel.org, linux-doc@vger.kernel.org,
linux-mm <linux-mm@kvack.org>,
kernel-team <kernel-team@android.com>,
"Pekka Enberg" <penberg@kernel.org>,
"Ingo Molnar" <mingo@kernel.org>,
"Oleg Nesterov" <oleg@redhat.com>,
"Jan Glauber" <jan.glauber@gmail.com>,
"John Stultz" <john.stultz@linaro.org>,
"Rob Landley" <rob@landley.net>,
"Serge E. Hallyn" <serge.hallyn@ubuntu.com>,
"David Rientjes" <rientjes@google.com>,
"Rik van Riel" <riel@redhat.com>, "Mel Gorman" <mgorman@suse.de>,
"Michel Lespinasse" <walken@google.com>,
"Tang Chen" <tangchen@cn.fujitsu.com>,
"Robin Holt" <holt@sgi.com>, "Shaohua Li" <shli@fusionio.com>,
"Sasha Levin" <sasha.levin@oracle.com>,
"Minchan Kim" <minchan@kernel.org>
Subject: Re: [PATCH v8 1/3] mm: rearrange madvise code to allow for reuse
Date: Sat, 28 Aug 2021 14:59:16 -0700 [thread overview]
Message-ID: <CAJuCfpGsr4Za7xj5O1-KJyj+WF2OTiWdMUWPALq3K155G539yw@mail.gmail.com> (raw)
In-Reply-To: <YSpiIrQKs5RUccYk@grain>
On Sat, Aug 28, 2021 at 9:19 AM Cyrill Gorcunov <gorcunov@gmail.com> wrote:
>
> On Fri, Aug 27, 2021 at 12:18:56PM -0700, Suren Baghdasaryan wrote:
> ...
> >
> > +/*
> > + * Apply an madvise behavior to a region of a vma. madvise_update_vma
> > + * will handle splitting a vm area into separate areas, each area with its own
> > + * behavior.
> > + */
> > +static int madvise_vma_behavior(struct vm_area_struct *vma,
> > + struct vm_area_struct **prev,
> > + unsigned long start, unsigned long end,
> > + unsigned long behavior)
> > +{
> > + int error = 0;
>
>
> Hi Suren! A nitpick -- this variable is never used with default value
> so I think we could drop assignment here.
> ...
> > + case MADV_DONTFORK:
> > + new_flags |= VM_DONTCOPY;
> > + break;
> > + case MADV_DOFORK:
> > + if (vma->vm_flags & VM_IO) {
> > + error = -EINVAL;
>
> We can exit early here, without jumping to the end of the function, right?
>
> > + goto out;
> > + }
> > + new_flags &= ~VM_DONTCOPY;
> > + break;
> > + case MADV_WIPEONFORK:
> > + /* MADV_WIPEONFORK is only supported on anonymous memory. */
> > + if (vma->vm_file || vma->vm_flags & VM_SHARED) {
> > + error = -EINVAL;
>
> And here too.
>
> > + goto out;
> > + }
> > + new_flags |= VM_WIPEONFORK;
> > + break;
> > + case MADV_KEEPONFORK:
> > + new_flags &= ~VM_WIPEONFORK;
> > + break;
> > + case MADV_DONTDUMP:
> > + new_flags |= VM_DONTDUMP;
> > + break;
> > + case MADV_DODUMP:
> > + if (!is_vm_hugetlb_page(vma) && new_flags & VM_SPECIAL) {
> > + error = -EINVAL;
>
> Same.
>
> > + goto out;
> > + }
> > + new_flags &= ~VM_DONTDUMP;
> > + break;
> > + case MADV_MERGEABLE:
> > + case MADV_UNMERGEABLE:
> > + error = ksm_madvise(vma, start, end, behavior, &new_flags);
> > + if (error)
> > + goto out;
> > + break;
> > + case MADV_HUGEPAGE:
> > + case MADV_NOHUGEPAGE:
> > + error = hugepage_madvise(vma, &new_flags, behavior);
> > + if (error)
> > + goto out;
> > + break;
> > + }
> > +
> > + error = madvise_update_vma(vma, prev, start, end, new_flags);
> > +
> > +out:
>
> I suppose we better keep the former comment on why we maps ENOMEM to EAGAIN?
Thanks for the review Cyrill! Proposed changes sound good to me. Will
change in the next revision.
Suren.
>
> Cyrill
next prev parent reply other threads:[~2021-08-28 21:59 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-27 19:18 [PATCH v8 0/3] Anonymous VMA naming patches Suren Baghdasaryan
2021-08-27 19:18 ` [PATCH v8 1/3] mm: rearrange madvise code to allow for reuse Suren Baghdasaryan
2021-08-28 0:14 ` Kees Cook
2021-08-28 0:58 ` Suren Baghdasaryan
2021-08-28 16:19 ` Cyrill Gorcunov
2021-08-28 21:59 ` Suren Baghdasaryan [this message]
2021-08-27 19:18 ` [PATCH v8 2/3] mm: add a field to store names for private anonymous memory Suren Baghdasaryan
2021-08-28 1:47 ` Matthew Wilcox
2021-08-28 5:52 ` Kees Cook
2021-08-28 21:47 ` Suren Baghdasaryan
2021-08-30 8:12 ` Rasmus Villemoes
2021-08-30 16:16 ` Suren Baghdasaryan
2021-08-30 16:59 ` Matthew Wilcox
2021-08-31 17:21 ` Suren Baghdasaryan
2021-08-28 21:28 ` Cyrill Gorcunov
2021-08-28 21:53 ` Suren Baghdasaryan
2021-09-01 8:09 ` Michal Hocko
2021-09-01 15:28 ` Suren Baghdasaryan
2021-09-01 8:10 ` Michal Hocko
2021-09-01 15:42 ` Suren Baghdasaryan
2021-09-03 11:49 ` Michal Hocko
2021-09-03 15:47 ` Suren Baghdasaryan
2021-08-27 19:18 ` [PATCH v8 3/3] mm: add anonymous vma name refcounting Suren Baghdasaryan
2021-08-28 5:28 ` Kees Cook
2021-08-28 21:13 ` Suren Baghdasaryan
2021-08-30 7:03 ` Rolf Eike Beer
2021-08-30 16:12 ` Suren Baghdasaryan
2021-08-28 12:48 ` [PATCH v8 0/3] Anonymous VMA naming patches Pavel Machek
2021-08-28 22:06 ` Suren Baghdasaryan
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=CAJuCfpGsr4Za7xj5O1-KJyj+WF2OTiWdMUWPALq3K155G539yw@mail.gmail.com \
--to=surenb@google.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=apopple@nvidia.com \
--cc=axboe@kernel.dk \
--cc=axelrasmussen@google.com \
--cc=catalin.marinas@arm.com \
--cc=ccross@google.com \
--cc=chinwen.chang@mediatek.com \
--cc=chris.hyser@oracle.com \
--cc=corbet@lwn.net \
--cc=cxfcosmos@gmail.com \
--cc=dave.hansen@intel.com \
--cc=eb@emlix.com \
--cc=ebiederm@xmission.com \
--cc=feng.tang@intel.com \
--cc=fenghua.yu@intel.com \
--cc=gorcunov@gmail.com \
--cc=guro@fb.com \
--cc=hannes@cmpxchg.org \
--cc=holt@sgi.com \
--cc=hughd@google.com \
--cc=jan.glauber@gmail.com \
--cc=jannh@google.com \
--cc=jgg@ziepe.ca \
--cc=jhubbard@nvidia.com \
--cc=john.stultz@linaro.org \
--cc=kaleshsingh@google.com \
--cc=keescook@chromium.org \
--cc=kernel-team@android.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=krisman@collabora.com \
--cc=legion@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux@rasmusvillemoes.dk \
--cc=mgorman@suse.de \
--cc=mhocko@suse.com \
--cc=minchan@kernel.org \
--cc=mingo@kernel.org \
--cc=oleg@redhat.com \
--cc=pcc@google.com \
--cc=penberg@kernel.org \
--cc=peterx@redhat.com \
--cc=peterz@infradead.org \
--cc=rdunlap@infradead.org \
--cc=riel@redhat.com \
--cc=rientjes@google.com \
--cc=rob@landley.net \
--cc=rppt@kernel.org \
--cc=sasha.levin@oracle.com \
--cc=sashal@kernel.org \
--cc=serge.hallyn@ubuntu.com \
--cc=shli@fusionio.com \
--cc=songmuchun@bytedance.com \
--cc=sumit.semwal@linaro.org \
--cc=tangchen@cn.fujitsu.com \
--cc=tglx@linutronix.de \
--cc=thomascedeno@google.com \
--cc=thunder.leizhen@huawei.com \
--cc=vbabka@suse.cz \
--cc=vincenzo.frascino@arm.com \
--cc=viresh.kumar@linaro.org \
--cc=viro@zeniv.linux.org.uk \
--cc=walken@google.com \
--cc=will@kernel.org \
--cc=willy@infradead.org \
--cc=yuzhao@google.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).