From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 85B26C00A5A for ; Wed, 18 Jan 2023 02:08:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B66B56B0071; Tue, 17 Jan 2023 21:08:03 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B16D46B0072; Tue, 17 Jan 2023 21:08:03 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9DDFB6B0074; Tue, 17 Jan 2023 21:08:03 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 8E0666B0071 for ; Tue, 17 Jan 2023 21:08:03 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 58463AAF76 for ; Wed, 18 Jan 2023 02:08:03 +0000 (UTC) X-FDA: 80366284446.11.99FD96B Received: from mail-yw1-f174.google.com (mail-yw1-f174.google.com [209.85.128.174]) by imf03.hostedemail.com (Postfix) with ESMTP id CD83720009 for ; Wed, 18 Jan 2023 02:08:01 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b="E/NELfxM"; spf=pass (imf03.hostedemail.com: domain of surenb@google.com designates 209.85.128.174 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674007681; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=IPntz93C+TLeiYuya3M1C/wd28MHaFTPeMLFazEhwmE=; b=BR9T6E9HCIN54QPPRnV1h79Y4nloLjTTtcJ3Vjjtwt+X2ceUDwnFr2HJLzHYGXicWmeFRf Rj88K8MhOXjbAUnzO6fXEbNl46K1px0tzIXD4r0oLeAFxPL2Q8Eh5IWkbEAFHhpq2LG2Kt 2s6p+caMudeowa+EnSaNhRy+RdcB0ps= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b="E/NELfxM"; spf=pass (imf03.hostedemail.com: domain of surenb@google.com designates 209.85.128.174 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674007681; a=rsa-sha256; cv=none; b=W8FO2vhuLSHJkdJsJxmRyDg5nvE7oXwfM7xIjGK8qTtnRVKQxIaQom/Jd3a7E8BVEgsj/R Y3ddN8ptz0AZNw5yG66XQcsUYmD7bouQtdoPaNe1QR47gJC/WCZXe46XMurcU8VFF/SZBP uu2T6hEpFr2Wjy7Qm5CvtX08AHfqmLg= Received: by mail-yw1-f174.google.com with SMTP id 00721157ae682-4d19b2686a9so321618727b3.6 for ; Tue, 17 Jan 2023 18:08:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=IPntz93C+TLeiYuya3M1C/wd28MHaFTPeMLFazEhwmE=; b=E/NELfxMjFTBI1CmtbcqjwsiauENdaTqInach8c86SJR2c1/56WBUHAal3gIhTRUSb jv5FEJFY1G+j14AmMioNZe/bJvrtUa4pwIjIu906R7jCEXint9daeTioB7w/OdN0H1eo eJQ22mc9V/eYL4wCsWdZ1vcc44AiUDEtW1uHBGuQyk23DmBqSMDkwC2DgQVpl8YosT9e mRedZ/Kmq4J+N524TLxW75CBx6pTTLnnuzhjvwPqs4zhrByXdnUiCcoHjxOALgS+Toir JxLqPBv9lh1Hz0PKEROEOPoPjIho1oPrj/ub9qhqrValKsHTGtbIGxv2iJwSdawi2I4l OJBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=IPntz93C+TLeiYuya3M1C/wd28MHaFTPeMLFazEhwmE=; b=jVDWQcoPChQwsz4hIMKBvBHkqmFi4rkBH9w4yYJKaOhyvDEZChJH1TusY5SNyCZXH6 Iynk6s5HkxJtkLKWZpYXWWx8wZ8KCefatZ8prbgJg3Q7jaSUWspmEQRlfgsD6zeiTdH2 EkqfeaFLh2UkHpzC/LOjzHeQglytfV2Y6rWXcvAquA4tzYE72LLfcepORgHJjb4tYltE VayFTxCp+z2FXJy/O14+yN+XFlSUuf/dvzqusJoK+70RbMUH3HtQWtSu90jItaXn24e1 NOzk8KiZUeKCHqRTNTps3E5rdYVlP9LidYH12nTuff9xhRgEQ5PVxwml52fQ+7aLEMtL nlrg== X-Gm-Message-State: AFqh2koGfHOtw/TsqIJZKmKUfoSZNCAsWR6GIU3bkzQFXqzApBh1FYhJ jA0jywqQeYS07D6+fRUDX9xSDKWN50QFS7xvVit6LQ== X-Google-Smtp-Source: AMrXdXt6HN6HjCJ0KoPrl+Bw/cVoPlnqd1wGxDKFOs1p/ddQiqBkhapFdQZ4VL85ZMUAD+PRUyF839a3jZDZ94RZE64= X-Received: by 2002:a81:784c:0:b0:4e1:5013:6da1 with SMTP id t73-20020a81784c000000b004e150136da1mr767604ywc.218.1674007680736; Tue, 17 Jan 2023 18:08:00 -0800 (PST) MIME-Version: 1.0 References: <20230109205336.3665937-1-surenb@google.com> <20230109205336.3665937-14-surenb@google.com> In-Reply-To: From: Suren Baghdasaryan Date: Tue, 17 Jan 2023 18:07:49 -0800 Message-ID: Subject: Re: [PATCH 13/41] mm: introduce vma->vm_flags modifier functions To: Michal Hocko Cc: akpm@linux-foundation.org, michel@lespinasse.org, jglisse@google.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, laurent.dufour@fr.ibm.com, paulmck@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, jannh@google.com, shakeelb@google.com, tatashin@google.com, edumazet@google.com, gthelen@google.com, gurua@google.com, arjunroy@google.com, soheil@google.com, hughlynch@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 Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: CD83720009 X-Rspam-User: X-Stat-Signature: amnkw7teot8o56p9j5gp83bnykknu39y X-HE-Tag: 1674007681-976825 X-HE-Meta: U2FsdGVkX1/Sm7qSfXsm0o9h2jh8d0zQsLEWamIxEGbl/K3jt3iLGfrhMxUW3H6dV0bmGauUCA/Iska/kko/0pAmuOZtOJ9H9DGRM0EsMaMgVMLVr2mCLi/ZSXDF81nA8f6P6vG4tRvqrliAcmA0Uy/1//V8OGWBajQXvGMFvDs4isx047aSDvlgxzfZtAdVa06l9XTGx5TsX3jlSbd2BSoLkKpgPaU4Z/5+1U+NhCRbxdstBwPw/UOMqwJXm0ragiqYDs7kkq9c9Y4f+r13lkpH2bcorhfGXyc4mSM8hhXMUXP8zrNWjOiRzdX/nVMTqy7sbnsnhiuVxP+1r1mbnCVEOvMe15VU27yI+DG+nd3IB9TqwESx+UxvgCjkCAljbTkH4LQM0JCGOhD/4SnU0O5Kll3IikrfZfl4QlXK/JPn+ZYEeDRQ4d0wmvJ9jOpavrsR2lwlqCE1KSeZMbYzQOGhcUvaFl6Cp6Jfzj3u3NtKU93gVGYBp/qCrGs3dvxxwSfaU07k6rmEkZdDZM29FdryrWcz/oqhGf8AhpdHgyZjGTqtxPCVfQjjmDaurcJ8j4YqnFGWLDIywXxfiSgZj3UCfjQTaXZUbafOUjp/phrX74d8hK7oqAfMqkeeBLv3t2QWrkoXji58s4G95Q2Dt1RVBP5YudlLe5N8v1PcD3sd/3cNYeZWJ/e81Rz9uHITiYzoxI+MF4TRYKzataNTELFZHoXiQAcoz9Cx8F0JdIswn5h14ZhzCV24c2SLDE9z/wIqV0BGiLzz9LKRWyiDsj7NG1h9Dw1knSmh6RL/mgxByobLw89yiCW7q7ZXZu8Ec3y3ftctELMw8511yJuXsq7C+qmOI6NEOmfOIeRYN6aj16YihQnldmeiNzp7V5xvtTCWYk+ZI1npK1J7QPVy8Z7FDA/jdH0pURBIfl73CuN6RT7I2HTSGpHGQbemrBeD9+/WOVNWZOhg9yAZW/t qosfi/GS CWAuYXfvtwv/hrXrvet+KzV3reUiELpmM11wfqJd9UkkIEnEaIGBfkyos2Q/grJcE3Nnh X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, Jan 17, 2023 at 7:15 AM 'Michal Hocko' via kernel-team wrote: > > On Tue 17-01-23 16:09:03, Michal Hocko wrote: > > On Mon 09-01-23 12:53:08, Suren Baghdasaryan wrote: > > > To keep vma locking correctness when vm_flags are modified, add modifier > > > functions to be used whenever flags are updated. > > > > > > Signed-off-by: Suren Baghdasaryan > > > --- > > > include/linux/mm.h | 38 ++++++++++++++++++++++++++++++++++++++ > > > include/linux/mm_types.h | 8 +++++++- > > > 2 files changed, 45 insertions(+), 1 deletion(-) > > > > > > diff --git a/include/linux/mm.h b/include/linux/mm.h > > > index ec2c4c227d51..35cf0a6cbcc2 100644 > > > --- a/include/linux/mm.h > > > +++ b/include/linux/mm.h > > > @@ -702,6 +702,44 @@ static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm) > > > vma_init_lock(vma); > > > } > > > > > > +/* Use when VMA is not part of the VMA tree and needs no locking */ > > > +static inline > > > +void init_vm_flags(struct vm_area_struct *vma, unsigned long flags) > > > +{ > > > + WRITE_ONCE(vma->vm_flags, flags); > > > +} > > > > Why do we need WRITE_ONCE here? Isn't vma invisible during its > > initialization? Ack. Will change to a simple assignment. > > > > > + > > > +/* Use when VMA is part of the VMA tree and needs appropriate locking */ > > > +static inline > > > +void reset_vm_flags(struct vm_area_struct *vma, unsigned long flags) > > > +{ > > > + vma_write_lock(vma); > > > + init_vm_flags(vma, flags); > > > +} > > > + > > > +static inline > > > +void set_vm_flags(struct vm_area_struct *vma, unsigned long flags) > > > +{ > > > + vma_write_lock(vma); > > > + vma->vm_flags |= flags; > > > +} > > > + > > > +static inline > > > +void clear_vm_flags(struct vm_area_struct *vma, unsigned long flags) > > > +{ > > > + vma_write_lock(vma); > > > + vma->vm_flags &= ~flags; > > > +} > > > + > > > +static inline > > > +void mod_vm_flags(struct vm_area_struct *vma, > > > + unsigned long set, unsigned long clear) > > > +{ > > > + vma_write_lock(vma); > > > + vma->vm_flags |= set; > > > + vma->vm_flags &= ~clear; > > > +} > > > + > > > > This is rather unusual pattern. There is no note about locking involved > > in the naming and also why is the locking part of this interface in the > > first place? I can see reason for access functions to actually check for > > lock asserts. > > OK, it took me a while but it is clear to me now. The confusion comes > from the naming vma_write_lock is no a lock in its usual terms. It is > more of a vma_mark_modified with side effects to read locking which is a > real lock. With that it makes more sense to have this done in these > helpers rather than requiring all users to keep this subtletly in mind. If renaming vma-locking primitives the way Matthew suggested in https://lore.kernel.org/all/Y8cZMt01Z1FvVFXh@casper.infradead.org/ makes it easier to read/understand, I'm all for it. Let's discuss the naming in that email thread because that's where these functions are introduced. > > -- > Michal Hocko > SUSE Labs > > -- > To unsubscribe from this group and stop receiving emails from it, send an email to kernel-team+unsubscribe@android.com. >