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 X-Spam-Level: X-Spam-Status: No, score=-13.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 69E27C432BE for ; Sat, 28 Aug 2021 21:59:29 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 1F45560E93 for ; Sat, 28 Aug 2021 21:59:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 1F45560E93 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id A07DB6B006C; Sat, 28 Aug 2021 17:59:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9B6006B0071; Sat, 28 Aug 2021 17:59:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8A4C28D0001; Sat, 28 Aug 2021 17:59:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0070.hostedemail.com [216.40.44.70]) by kanga.kvack.org (Postfix) with ESMTP id 7B7046B006C for ; Sat, 28 Aug 2021 17:59:28 -0400 (EDT) Received: from smtpin26.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 20CF7824999B for ; Sat, 28 Aug 2021 21:59:28 +0000 (UTC) X-FDA: 78525856416.26.06A823B Received: from mail-yb1-f178.google.com (mail-yb1-f178.google.com [209.85.219.178]) by imf17.hostedemail.com (Postfix) with ESMTP id D72B8F000136 for ; Sat, 28 Aug 2021 21:59:27 +0000 (UTC) Received: by mail-yb1-f178.google.com with SMTP id z18so19865800ybg.8 for ; Sat, 28 Aug 2021 14:59:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=pyWbJNHHz8eg8MTD7gm92l9NEwd2/uLCVNwtVRUk+N8=; b=RtWc0eULZASFS2c8UT3utLEPhZqsSiVw4hdmjvsPupSThfmle1yxbAmgOSFLM1o7lV 7X72oEIxSujnXwjV8bx2uMA4uZgDJ5sYemIqpxhRKsyJZJr6OEjZbWXiXnBE7GiPSS7e gDC2jE+VsDNNpvIxQfR/v1D46KuGZfJO/lyuifEhSVr8GTZbrc9XmwRcFat4Ght4g83P j5lsNBhkGkRZGyKtF9aPiYaNts0GyiDAxnqG68VrxKwwwqP5usAYcy6aBN7avZicL7CR bYoDwqQf4ZtSk8C66XQOP04BnHYF+fnfJCGDzn8ZriiSkUjhboIZQ+ijtZZgiFhDd6vC OElg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=pyWbJNHHz8eg8MTD7gm92l9NEwd2/uLCVNwtVRUk+N8=; b=KjQHUtznz1mKU7sct5tHDBSvsUjwB5Pox/d+bO0hw/WRImzZulB+amk9H/n9o8gcz4 4z/F2PPJjk8qEduvUh66hQZR1L6D3H8DH9MLPYoI0zv12gHrnlSdyVqMSXLHCsYt2st6 zNkrFMf0LaIEmOpzpJRbi/GQu9GVra7B5lWmhC9wO3II1rAxIJceWBJKawCyPuSaeyOp Hvai14K+OGk1pIBat1SG650Uil7VzrUZMFG+Zq/2mJXw1GotA6QGorxUXUmzIaLJiZaJ mNnzz88V+bxi6F6YdywFUPgFt0uJ4HSqsjj506rIlWiUyxKWwdBfLXkLOhckkRcC+T+i dWwQ== X-Gm-Message-State: AOAM531vjgox8tm4m+QvJXymi935bG+gojVwNGyotiUQYoZMxtxqgYFl Re+eza5aWKdve2dbIqFJOjUZF6ctq7uVHglzOU13VA== X-Google-Smtp-Source: ABdhPJxcsvbqwcIf6UU/EabbulfP5bhcIGDCQHmNnC1Py259tPI6pmKG7LONTo/wpRs8g1yhIw0178/u97GU7v8ekPI= X-Received: by 2002:a25:7ec4:: with SMTP id z187mr13867314ybc.136.1630187967034; Sat, 28 Aug 2021 14:59:27 -0700 (PDT) MIME-Version: 1.0 References: <20210827191858.2037087-1-surenb@google.com> <20210827191858.2037087-2-surenb@google.com> In-Reply-To: From: Suren Baghdasaryan Date: Sat, 28 Aug 2021 14:59:16 -0700 Message-ID: Subject: Re: [PATCH v8 1/3] mm: rearrange madvise code to allow for reuse To: Cyrill Gorcunov Cc: Andrew Morton , Colin Cross , Sumit Semwal , Michal Hocko , Dave Hansen , Kees Cook , Matthew Wilcox , "Kirill A . Shutemov" , Vlastimil Babka , Johannes Weiner , Jonathan Corbet , Al Viro , Randy Dunlap , Kalesh Singh , Peter Xu , rppt@kernel.org, Peter Zijlstra , Catalin Marinas , vincenzo.frascino@arm.com, =?UTF-8?B?Q2hpbndlbiBDaGFuZyAo5by16Yym5paHKQ==?= , Axel Rasmussen , Andrea Arcangeli , Jann Horn , apopple@nvidia.com, John Hubbard , Yu Zhao , Will Deacon , fenghua.yu@intel.com, thunder.leizhen@huawei.com, Hugh Dickins , feng.tang@intel.com, Jason Gunthorpe , Roman Gushchin , Thomas Gleixner , krisman@collabora.com, chris.hyser@oracle.com, Peter Collingbourne , "Eric W. Biederman" , Jens Axboe , legion@kernel.org, eb@emlix.com, Muchun Song , Viresh Kumar , Thomas Cedeno , sashal@kernel.org, cxfcosmos@gmail.com, Rasmus Villemoes , LKML , linux-fsdevel@vger.kernel.org, linux-doc@vger.kernel.org, linux-mm , kernel-team , Pekka Enberg , Ingo Molnar , Oleg Nesterov , Jan Glauber , John Stultz , Rob Landley , "Serge E. Hallyn" , David Rientjes , Rik van Riel , Mel Gorman , Michel Lespinasse , Tang Chen , Robin Holt , Shaohua Li , Sasha Levin , Minchan Kim Content-Type: text/plain; charset="UTF-8" Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20161025 header.b=RtWc0eUL; spf=pass (imf17.hostedemail.com: domain of surenb@google.com designates 209.85.219.178 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: D72B8F000136 X-Stat-Signature: w3xi8oazjewmgnxxtdbxj41hkf9nmo9g X-HE-Tag: 1630187967-181357 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 Sat, Aug 28, 2021 at 9:19 AM Cyrill Gorcunov 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