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=-18.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_IN_DEF_DKIM_WL autolearn=unavailable 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 48905C4320E for ; Wed, 1 Sep 2021 15:28:48 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id D7AEB6109E for ; Wed, 1 Sep 2021 15:28:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org D7AEB6109E 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 4EDC16B006C; Wed, 1 Sep 2021 11:28:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 49DE96B0071; Wed, 1 Sep 2021 11:28:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 33F8E6B0072; Wed, 1 Sep 2021 11:28:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0032.hostedemail.com [216.40.44.32]) by kanga.kvack.org (Postfix) with ESMTP id 2686C6B006C for ; Wed, 1 Sep 2021 11:28:47 -0400 (EDT) Received: from smtpin40.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id D2F9F1821544A for ; Wed, 1 Sep 2021 15:28:46 +0000 (UTC) X-FDA: 78539387052.40.F02021A Received: from mail-yb1-f182.google.com (mail-yb1-f182.google.com [209.85.219.182]) by imf18.hostedemail.com (Postfix) with ESMTP id 89E344002087 for ; Wed, 1 Sep 2021 15:28:46 +0000 (UTC) Received: by mail-yb1-f182.google.com with SMTP id v26so3714260ybd.9 for ; Wed, 01 Sep 2021 08:28:46 -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=+GlOqsOpw3zZfxlN+CxYu9jIfOzsHv5cSyt625Vybl8=; b=pouVvtouO9DCggJX7QWS3tCOWjs/IVuHjqBQMcHhQ0STgWiOvIiZCSSrNXAY5ld81f LZ1tSIspJ93Le8JyfMvoJul1UlvtVWAf3Ztf2FqwZPU6rjLOwLaDy2z27rSUE5xeXbjs QLUk6yb4SBxpBWd9Ak1A2Z/ZZchEHnkRsFFSh7Hp74C0IIwTPtxicZvUFOz24o01Dwqu 8PTDkYunv439Eipf41iI9fhCJBZN/ubgyxj1LESHmh5f7wxAPOm5SEwzYAHjC/qqTKZI 18CwG0LwTneoTDEOQIHDU1N8oo2XrfLx49c7cxf2mvzUQ4wXyPFrbnQvKkLWtZ6b5kWg 4+1w== 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=+GlOqsOpw3zZfxlN+CxYu9jIfOzsHv5cSyt625Vybl8=; b=j+NopZaOJ0+/2OZoqqgLAWB3Nk0XGW9No0yzfNXEcaUlPFld1UHS+a+gPwiZ56gf76 YgdAANifARg7kdXFSIE72+KeW0nPMxs43aZkf7OVCtzzCSt6vYKjU+QqZyh4Q/EIrSf5 rx7bOoQS9EB8qTrgi/dm2x9CJn0zbfxcWtQyBZJ9X/9g+6XuY33MnmldPWZ17mRknFlo S52Deh1Ge49blsVSx7LZLc7TS3KlKitn140LAJmZMdJZXihimHkSM/oNJ4h7iUtqPO8f mhcUiBdHNIGXcmvNclQnXwqTqeWFdW4WrNoL+k/fTyVBbtVvzfLFDNIRS9Vto+ZPmfP3 oXrA== X-Gm-Message-State: AOAM5330yjC6MhnhdyLNrdQR4Q5D60YLqdlj31ByIs/JlIE8J7dUBide +XQgAd/5DWP9QBko7d1TbD8ViOxZdOVf1NFPLhnRIQ== X-Google-Smtp-Source: ABdhPJzhZM0GkaML7l5NDkIdjuUzVHwpLZu9eyWoVcLH5iiYwRQjA1Xhn5CpBr/9c59LJQdRbh+17vthAETK0dGKDdw= X-Received: by 2002:a25:4757:: with SMTP id u84mr23681yba.397.1630510125588; Wed, 01 Sep 2021 08:28:45 -0700 (PDT) MIME-Version: 1.0 References: <20210827191858.2037087-1-surenb@google.com> <20210827191858.2037087-3-surenb@google.com> In-Reply-To: From: Suren Baghdasaryan Date: Wed, 1 Sep 2021 08:28:34 -0700 Message-ID: Subject: Re: [PATCH v8 2/3] mm: add a field to store names for private anonymous memory To: Michal Hocko Cc: Andrew Morton , Colin Cross , Sumit Semwal , 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, Rolf Eike Beer , 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 Content-Type: text/plain; charset="UTF-8" Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=google.com header.s=20161025 header.b=pouVvtou; spf=pass (imf18.hostedemail.com: domain of surenb@google.com designates 209.85.219.182 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com X-Stat-Signature: mhdp5ngt3rwg4h7t5s7a81pdgi6jmfzg X-Rspamd-Queue-Id: 89E344002087 X-Rspamd-Server: rspam04 X-HE-Tag: 1630510126-271208 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 Wed, Sep 1, 2021 at 1:09 AM 'Michal Hocko' via kernel-team wrote: > > On Fri 27-08-21 12:18:57, Suren Baghdasaryan wrote: > [...] > > Userspace can set the name for a region of memory by calling > > prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, start, len, (unsigned long)name); > > Setting the name to NULL clears it. > > Maybe I am missing this part but I do not see this being handled > anywhere. It's handled in replace_vma_anon_name(). When name==NULL we call free_vma_anon_name() which frees and resets anon_name pointer. Except that, as you noticed, the check after strndup_user() will prevent NULL to be passed here. I forgot to test this case after conversion to strndup_user() and missed this important point. Thanks for pointing it out. Will fix and retest. > > [...] > > @@ -3283,5 +3283,16 @@ static inline int seal_check_future_write(int seals, struct vm_area_struct *vma) > > return 0; > > } > > > > +#ifdef CONFIG_ADVISE_SYSCALLS > > +int madvise_set_anon_name(struct mm_struct *mm, unsigned long start, > > + unsigned long len_in, const char *name); > > +#else > > +static inline int > > +madvise_set_anon_name(struct mm_struct *mm, unsigned long start, > > + unsigned long len_in, const char *name) { > > + return 0; > > +} > > +#endif > > You want to make this depend on CONFIG_PROC_FS. Ack. > > [...] > > +#ifdef CONFIG_MMU > > + > > +#define ANON_VMA_NAME_MAX_LEN 64 > > + > > +static int prctl_set_vma(unsigned long opt, unsigned long addr, > > + unsigned long size, unsigned long arg) > > +{ > > + struct mm_struct *mm = current->mm; > > + char *name, *pch; > > + int error; > > + > > + switch (opt) { > > + case PR_SET_VMA_ANON_NAME: > > + name = strndup_user((const char __user *)arg, > > + ANON_VMA_NAME_MAX_LEN); > > + > > + if (IS_ERR(name)) > > + return PTR_ERR(name); > > unless I am missing something NULL name would lead to an error rather > than a name clearing as advertised above. Correct, I missed that. Will fix. > > > + > > + for (pch = name; *pch != '\0'; pch++) { > > + if (!isprint(*pch)) { > > + kfree(name); > > + return -EINVAL; > > + } > > + } > > + > > + mmap_write_lock(mm); > > + error = madvise_set_anon_name(mm, addr, size, name); > > + mmap_write_unlock(mm); > > + kfree(name); > > + break; > > + default: > > + error = -EINVAL; > > + } > > + > > + return error; > -- > Michal Hocko > SUSE Labs > > -- > To unsubscribe from this group and stop receiving emails from it, send an email to kernel-team+unsubscribe@android.com. >