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 4B140C77B7C for ; Tue, 24 Jun 2025 14:31:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DE7D96B00B5; Tue, 24 Jun 2025 10:31:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DBFFA6B00B6; Tue, 24 Jun 2025 10:31:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CFC516B00B9; Tue, 24 Jun 2025 10:31:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id BCDC76B00B5 for ; Tue, 24 Jun 2025 10:31:43 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 673CF140A1F for ; Tue, 24 Jun 2025 14:31:43 +0000 (UTC) X-FDA: 83590532886.24.D8B0C10 Received: from mail-qt1-f179.google.com (mail-qt1-f179.google.com [209.85.160.179]) by imf09.hostedemail.com (Postfix) with ESMTP id 8205714000F for ; Tue, 24 Jun 2025 14:31:41 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Z8TIJewY; spf=pass (imf09.hostedemail.com: domain of surenb@google.com designates 209.85.160.179 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=1750775501; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=8Dx/+TnSwYdW10JgkjELsEMSU3LgJtYLB/mfgfXSHy4=; b=QqslFiTZfgG0FqwDWH5aOgnFeOJj/XucYPCTyTDAfXlUfjNl/Wa6ICecmeRR8Juzsy5vfy FWOCeMRBZP5Pd7Am0xSls2mVsQWtAJesqFPAwCZoutZSt4NJUgOmMufwZah59W9JqYoihw zHNF5iIZfXG+c2FC4wN8y06fd9GdyAw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750775501; a=rsa-sha256; cv=none; b=GqNqqZ25czGez98bTlFZvv2EbrzC2hLg9GnFnwxTrLCFUg+0rZj0ayGRe5P/UT3tiqGQ8f RJd3hiCMz/LivTqVDRmW4mQX1HyhDZnRDe4eswuz+Z07bdjUB9NVKZQd/9Zg5pRD/D7/JD iEWaF7z+odFyp/yR9ObTK1mt22A/JuU= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Z8TIJewY; spf=pass (imf09.hostedemail.com: domain of surenb@google.com designates 209.85.160.179 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-qt1-f179.google.com with SMTP id d75a77b69052e-47e9fea29easo408941cf.1 for ; Tue, 24 Jun 2025 07:31:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1750775500; x=1751380300; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=8Dx/+TnSwYdW10JgkjELsEMSU3LgJtYLB/mfgfXSHy4=; b=Z8TIJewYROhTXzEUxXgATgpuBKCNP800MsTVAJ6m3ocgwfO6UrwkW1TyXOJCTSmdU3 HY7r2Sg9EGYT8lGWGQsP5akULkfNqz1F1xRYa6QoMZeMbmiEXZW1KaNxIATuhZk2BSf9 X/Z9CoHuX8x6ibDoLsFrUEq637yC/rcw3Xd4xQpSwIyVcXiODuOHNYCYYjIY31n5Y81u lOVQD0iMwf6GZn9TS/idK9aLrFg7SwyC/x5xIczbilDfIIOhHTVBApUgsfLXK87hJBdz Ll9rv7ZDNVPJkb8rcnRohR+ox/dTf2msUutM1G+lpMVmIzGJCk83epudeLhMz0MZPT8Y Gdwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750775500; x=1751380300; h=content-transfer-encoding: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=8Dx/+TnSwYdW10JgkjELsEMSU3LgJtYLB/mfgfXSHy4=; b=NN46iJRhvVZhFO2Azy7InMypjyVtHB13I6rWRtE3itiTCYgLvU7hXh9NOOcOWOxfwb 10aPF3TVO14q5QLvRhoeFogzBF1x1Jdmqf4RpGk0I2pmgMtAUuRmMpnHL93C1AZOs9z5 AIQXBU2JeAIh3NTRHSWdIECaJ9vDiKC4PX+C4jE8QCtGJk4jY+PSVQxrteVwA5MVzA4J k4Hg6Rh6tMp6BVwb04JC5ZjNWDuo28DDx+Uk+pVDHSl42eOVzYf/h78600CQhdH+68wP EesKnQ+Q9c/4iIjcy8QePi2L7JO44Adws2XRcP1pu6jEPhl5NBMmhzVNftKFrjA78loA JnxQ== X-Forwarded-Encrypted: i=1; AJvYcCV2f3hgBk62zYcxXaRZc1F2yqxyObe1A7uGRs8z+Nljx3gCbsSOKV/qCimLcIxzXrzzduoBjwKbZw==@kvack.org X-Gm-Message-State: AOJu0YybRKD3Svej7VwKe0ZSTdblUJ9jhOATVZvb3bFvjJOh+ZKKAs+y WUN+AF2jlnnDSFC/AdQ/rsboVasw7FGOTKqVcOOS6dSRFLqnJE3Wv4XznA1E9OjtTrgZHxpb49x 1NlCemIuaXhBnT26Jsh7lkLsMfoaihCw5WSNqHr5B X-Gm-Gg: ASbGncujWpFdvde+gbGs6iU3Xa+dxHB/qlrdRhWWqP/WJuNDYsylyAO1jqOcLsQjHF0 0OCIsDYk60hHIc0dwjhlhIrMk5GrK3mb4lzzPddfLL5uhPUhiybLmq0SFdgNKfmceN99smI7Wjc KOUlRC2wi3EH9L8OEs2eBAnxmViSr56vhA5EmwMhLuiqg3tnLXJkx5DQh/CDyFFwo5ynCa5B+BF tsWCI+2qbJv X-Google-Smtp-Source: AGHT+IF8m5bDv4fa4b2+5QuiowqlyoSEs488hOK24HaBkXNb1gnvwEaGBWvrzHdlbSSiGkSaKVbK3yU98qWSVHvY+Qc= X-Received: by 2002:a05:622a:9010:b0:494:9777:4bd with SMTP id d75a77b69052e-4a7b153cbd6mr4073601cf.3.1750775499995; Tue, 24 Jun 2025 07:31:39 -0700 (PDT) MIME-Version: 1.0 References: <20250624-anon_name_cleanup-v2-0-600075462a11@suse.cz> <20250624-anon_name_cleanup-v2-2-600075462a11@suse.cz> <5f5b83ae-8482-4eea-9df0-55871c30375b@redhat.com> In-Reply-To: <5f5b83ae-8482-4eea-9df0-55871c30375b@redhat.com> From: Suren Baghdasaryan Date: Tue, 24 Jun 2025 07:31:29 -0700 X-Gm-Features: Ac12FXwHVOrDSDKjXlvP2rTZQM9CiZzwk-glg1sDoR3MmAbXFdWmo5SzGP5P17M Message-ID: Subject: Re: [PATCH v2 2/4] mm, madvise: extract mm code from prctl_set_vma() to mm/madvise.c To: David Hildenbrand Cc: Vlastimil Babka , Andrew Morton , "Liam R. Howlett" , Lorenzo Stoakes , Jann Horn , Mike Rapoport , Michal Hocko , Colin Cross , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 8205714000F X-Rspam-User: X-Rspamd-Server: rspam06 X-Stat-Signature: h3aipgm85qfkf9jyz94y9dqdxxtm55y3 X-HE-Tag: 1750775501-367728 X-HE-Meta: U2FsdGVkX18UVGK5L/q4o5VZhq0Q2qYEKV/lryUCB+ZVM77CZe1kgMYkC6CBIPE9w2FFRNIU6nKprF+IE9UC2VtDVfLLUp6bubPfbxpAft+D36guudJc1TaCzWUT9QHYmnx1d7nqT3rxYIRfn+H/ED3OBKZczyLtWnHlXMHluJN4S6JePHk4xDAGIeNBUJT5KiJ+UAY8mZbdrP8PPiIQLJDLHq8j8NsKANHlwcfc1QLqQhWwmbfRvcPAGXJxyK1Gv70rbW/RKW6jUQmCoULnVMATwpZj8uR86Ss/rXBVSalqph+94VJ9e67/8DVA4sZkgRw8KePy5RXjFrR/S6lfVhjHC9sUu4cizykBPJjnQwqxrMd/Kz970/HhKPA19TbKv0zgnFd9d769HM4TJO+54MZbWKQP5YBEaQOAvqlbJhvC17eVHY6wCO1hVTrjnKoXUzb7iM5nScZQ6RJsU++2j8U5RU0MNyTtRgWytA2KPIJbr/qjBdbN/uuBqQnX6N8tPsKCakgXwbJx3kirP16VKVMFZC1Dcm7TatMIJ0I6HZZxMpp5JrnhZiscT5xmBZH6kLKG/8eGHD6r7e9wtlPPSszxD6rvGkmOmI5tYpnvVl1oo1rSu/CYeOOnPJAH++gQU36sKN34ILUmKCw0a3YkX6WpVnDlOSHMgxywm2JOIsuIPpWOe1qAJiLFLVTpFWwur2ObKCGttw6cw5nd8W9DaFM8GQ/wbAKgtYKaeyNfVCQbEYQ9+6KOLyC2zKZxoiQTAfid2metaxgaRx5XgXJrE2Gnm3XAqJmTosZt3ZY9M3lubHuLfmprRgcmOJxSYrgOTmpI3njWbAtpbm6pfnaADmJUfHAEBGkNmJMcJVFfKoctzF8e+rIHnOQb4att+qn6WivEA8jbx7zRp3FDE542JOaN8YVWYEtF6r81krDBKZEjan23cmdS8tFKLzbbzK9Fo3LUF7dhqcaTmorm/er YOukzLsH yT/fXaLE9tX32/ipJbquA6ixXtD4rAXGphvtEavjKwEV1+GeZtNYQ5f0MdMgl4rKHUID1Z35mWDWjbIso9S5LFdSUmOrMqADaF1JeH9iPqZOKIp2ryjrH9QlvyK6jeGpopjt+RwQZZkpeJamB700bvvuUh/N8bEQeGCoSiZseiGF6CIb80fNyZFMeo+FjC39jdNxLx8Zp8yjm9p2UsivWQGFNYpgM9oCKUiNtPMXiZ6jrbUv0wJ8GbRR36ai7Kjs4CTkjLDy36GUSMzljMaEFn1zxTuLfUPi3K7IwJkfVQmIP9/397DKirOzZFXznQP/H5z6oArMy/7NhY28BN+HL+GOHLw== 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: List-Subscribe: List-Unsubscribe: On Tue, Jun 24, 2025 at 7:04=E2=80=AFAM David Hildenbrand wrote: > > On 24.06.25 15:03, Vlastimil Babka wrote: > > Setting anon_name is done via madvise_set_anon_name() and behaves a lot > > of like other madvise operations. However, apparently because madvise() > > has lacked the 4th argument and prctl() not, the userspace entry point > > has been implemented via prctl(PR_SET_VMA, ...) and handled first by > > prctl_set_vma(). > > > > Currently prctl_set_vma() lives in kernel/sys.c but setting the > > vma->anon_name is mm-specific code so extract it to a new > > set_anon_vma_name() function under mm. mm/madvise.c seems to be the mos= t > > straightforward place as that's where madvise_set_anon_name() lives. > > Stop declaring the latter in mm.h and instead declare > > set_anon_vma_name(). > > > > Signed-off-by: Vlastimil Babka > > --- > > include/linux/mm.h | 14 +++++++------- > > kernel/sys.c | 50 +--------------------------------------------= ----- > > mm/madvise.c | 52 +++++++++++++++++++++++++++++++++++++++++++++= +++++-- > > 3 files changed, 58 insertions(+), 58 deletions(-) > > > > diff --git a/include/linux/mm.h b/include/linux/mm.h > > index 0e0549f3d681f6c7a78e8dfa341a810e5a8f96c1..ef40f68c1183d4c95016575= a4ee0171e12df9ba4 100644 > > --- a/include/linux/mm.h > > +++ b/include/linux/mm.h > > @@ -4059,14 +4059,14 @@ unsigned long wp_shared_mapping_range(struct ad= dress_space *mapping, > > #endif > > > > #ifdef CONFIG_ANON_VMA_NAME > > -int madvise_set_anon_name(struct mm_struct *mm, unsigned long start, > > - unsigned long len_in, > > - struct anon_vma_name *anon_name); > > +int set_anon_vma_name(unsigned long addr, unsigned long size, > > + const char __user *uname); > > #else > > -static inline int > > -madvise_set_anon_name(struct mm_struct *mm, unsigned long start, > > - unsigned long len_in, struct anon_vma_name *anon_na= me) { > > - return 0; > > +static inline > > +int set_anon_vma_name(unsigned long addr, unsigned long size, > > + const char __user *uname) > > +{ > > + return -EINVAL; > > } > > #endif > > > > diff --git a/kernel/sys.c b/kernel/sys.c > > index adc0de0aa364aebb23999f621717a5d32599921c..b153fb345ada28ea1a33386= a32bcce9cb1b23475 100644 > > --- a/kernel/sys.c > > +++ b/kernel/sys.c > > @@ -2343,54 +2343,14 @@ int __weak arch_lock_shadow_stack_status(struct= task_struct *t, unsigned long st > > > > #define PR_IO_FLUSHER (PF_MEMALLOC_NOIO | PF_LOCAL_THROTTLE) > > > > -#ifdef CONFIG_ANON_VMA_NAME > > - > > -#define ANON_VMA_NAME_MAX_LEN 80 > > -#define ANON_VMA_NAME_INVALID_CHARS "\\`$[]" > > - > > -static inline bool is_valid_name_char(char ch) > > -{ > > - /* printable ascii characters, excluding ANON_VMA_NAME_INVALID_CH= ARS */ > > - return ch > 0x1f && ch < 0x7f && > > - !strchr(ANON_VMA_NAME_INVALID_CHARS, ch); > > -} > > - > > static int prctl_set_vma(unsigned long opt, unsigned long addr, > > unsigned long size, unsigned long arg) > > { > > - struct mm_struct *mm =3D current->mm; > > - const char __user *uname; > > - struct anon_vma_name *anon_name =3D NULL; > > int error; > > > > switch (opt) { > > case PR_SET_VMA_ANON_NAME: > > - uname =3D (const char __user *)arg; > > - if (uname) { > > - char *name, *pch; > > - > > - name =3D strndup_user(uname, ANON_VMA_NAME_MAX_LE= N); > > - if (IS_ERR(name)) > > - return PTR_ERR(name); > > - > > - for (pch =3D name; *pch !=3D '\0'; pch++) { > > - if (!is_valid_name_char(*pch)) { > > - kfree(name); > > - return -EINVAL; > > - } > > - } > > - /* anon_vma has its own copy */ > > - anon_name =3D anon_vma_name_alloc(name); > > - kfree(name); > > - if (!anon_name) > > - return -ENOMEM; > > - > > - } > > - > > - mmap_write_lock(mm); > > - error =3D madvise_set_anon_name(mm, addr, size, anon_name= ); > > - mmap_write_unlock(mm); > > - anon_vma_name_put(anon_name); > > + error =3D set_anon_vma_name(addr, size, (const char __use= r *)arg); > > At first I thought whether passing current->mm as an argument might make > it clearer on what we actually operate. But then, "anon_vma" might give > a good hint. > > Acked-by: David Hildenbrand Reviewed-by: Suren Baghdasaryan > > -- > Cheers, > > David / dhildenb >