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 C8433C4332F for ; Fri, 9 Dec 2022 13:38:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1E3F48E0003; Fri, 9 Dec 2022 08:38:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 194F48E0001; Fri, 9 Dec 2022 08:38:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 05D108E0003; Fri, 9 Dec 2022 08:38:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id EDF608E0001 for ; Fri, 9 Dec 2022 08:38:44 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id BD6A3ABA69 for ; Fri, 9 Dec 2022 13:38:44 +0000 (UTC) X-FDA: 80222872968.24.3130FA1 Received: from mail-oa1-f50.google.com (mail-oa1-f50.google.com [209.85.160.50]) by imf14.hostedemail.com (Postfix) with ESMTP id 4639F10000D for ; Fri, 9 Dec 2022 13:38:43 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=GcqXZtaQ; spf=pass (imf14.hostedemail.com: domain of xandermoerkerken@gmail.com designates 209.85.160.50 as permitted sender) smtp.mailfrom=xandermoerkerken@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1670593123; 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=w+ZulY4Wcjp7eCXZtIOpKjosA8sRXxdpjuTnsmhEuzQ=; b=uRE/riVADk8M1GINNTO6rycFL60shZGE2wRaIv1Y3hOyZ+zoTtY4Iijp5HAyxis6ToT59D tB7ZwmswsIfp+DqRy5PIlqqAWwKxS1/+RCc6hWGWhT8iIcsbN+gCjJE7iS+QN2KNaa+DQA zmEZRqMkOCkOktAsVEdin4jUYwrA62U= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=GcqXZtaQ; spf=pass (imf14.hostedemail.com: domain of xandermoerkerken@gmail.com designates 209.85.160.50 as permitted sender) smtp.mailfrom=xandermoerkerken@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1670593123; a=rsa-sha256; cv=none; b=1puePmlqeAd8Pjmg+ibDG+0tAdkVQ0ECRWwC2jIZ4OjW66QUl72QrV1kv+z+2yNg9g7bto aRffZA4rqxrSpeMfyBa0Dd7q7r4m1fw8t7qw+tmADcogdBQ1OXQPOFWre62qIPpemBERkQ vj4J0zKcG81m3v/fzedWoKOenBF7iG0= Received: by mail-oa1-f50.google.com with SMTP id 586e51a60fabf-1447c7aa004so5633231fac.11 for ; Fri, 09 Dec 2022 05:38:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.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=w+ZulY4Wcjp7eCXZtIOpKjosA8sRXxdpjuTnsmhEuzQ=; b=GcqXZtaQn7iHtPSMIq3iAw46av4vVS0S1tEzUtJbiC++Q456kbDnygfD/lDS30+WmE 3244RngEhd98NjPmr58OdPtDp3fkA7DZil8doZbg/Mwt9yMJCQ/cifnoXH/pApLVFyB/ Tzuntn2If2hVfzyrWU20ilxfovhi3QsFH01iilRf1QR6eLBUqN9dPVl1efallqYTFwMy 77Yz34cFWsz31KTWm9m3imlKD0wOfBl3RU2jYsS+lzkCE5UWX48OknUID96qpmFQXmkX Q1d/HBaeuMxASk+KrsfEH+BXOeioxumwL2/CZ8TM5dkAFdOINE3vs5LtVvYRwnWOLeJ+ 5YOA== 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=w+ZulY4Wcjp7eCXZtIOpKjosA8sRXxdpjuTnsmhEuzQ=; b=mGPt8ibid0OjpL7H3qJKDtZFS7bqO+otayRXReBRN5MxVPAG14nJdHh8fvQ+3B+9W6 D53vCX7ySS5irCFXhVpAB/nbbdRM1SRZLXympP9mVRD2DYT30JTSRJlQUXHJx3QfKHnf smF2lhgITDPX8Qy87kdbr9O85GyDGVFWx20k6qJn758QbElqrFgYd7V9meEKWgp0/6UJ Fu2QO2q1dI4S3Em9mbcY0mZ7Q6FanS5SuZf20FLlLMFgjW9hirGAEgzKEYmTsD78OTK7 xuLkBg1DdVYr3DzdQbLBx9p4P72hJW9SafNaP251+jK4B93jTXctx7gHloSrHwzHnrkn OhYw== X-Gm-Message-State: ANoB5pkfJanOfxcmbaQZBL1WzzVMMwRyFBqrMg2PxmUG9dQcM+RaYxsQ tmV1OS4VkSd64q/PKMgBKP5K9HQ3CgUf6+WKILo= X-Google-Smtp-Source: AA0mqf7fALIm4X5GLSCV8BysF8NmHPbqNcE1pu+iayM8P4TrRrBU2uFB4ujZnrjbazm6YfTmWGUk9LnnPnWIEK3L6Sc= X-Received: by 2002:a05:6870:f592:b0:144:543:c801 with SMTP id eh18-20020a056870f59200b001440543c801mr20731113oab.201.1670593122332; Fri, 09 Dec 2022 05:38:42 -0800 (PST) MIME-Version: 1.0 References: <20221209131052.64235-1-xander.moerkerken@omron.com> In-Reply-To: From: Xander Date: Fri, 9 Dec 2022 14:38:16 +0100 Message-ID: Subject: Re: [PATCH] Added ability to vmalloc executable memory To: Mark Rutland Cc: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Xander Moerkerken Content-Type: multipart/alternative; boundary="0000000000009ef64805ef65457d" X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 4639F10000D X-Stat-Signature: tuku4t3cezfw6t77ze44ygxo8jmxg8hu X-HE-Tag: 1670593123-670666 X-HE-Meta: U2FsdGVkX1/RMR/QpS0DDa35YSY9FS1lPmIuTd+sy6nZJ93EiBu3CSlb7gkXmVGwGHzeKHXZ9mkvBpApy20r9mGgoOtQItTg/+ae5W8udF6jOpe2DEpUFNAEsekW1N2vblBGEaxwPctnB750nv3U3x/09V0b6hdBc75PA0K0gZwOlBe37MYgCInUubdVszjA+0W3VAjsDVfnpdBkynfPzcZXbPI9BLZr1mOt+No6DIoZQWDHSQ4kgqCStOn3pLAjMBoB2yM9q4mooCQ0XVCz1FzBoupdlsr3fXFEHty96kK9dUubUsQfHFJA4DdnTixU/w+RK5dPm77O5uFo91/8oc8DsnEpSNCfKc3cQGmr1J98x3pxC1V5FhXaVBX9A7C9t55Cn+zu/r8I6rF44qGB67kd5kQMBv1AbMZYRxRh7U3KznKKC4LXlLWFi9WZYg/qkVU2xKnxh0Z7Ne4GRV0jcsI+ucsGyocA8B4F6xLRsRIkFuILWLiexpDWmQP33PUG29Yv47P6DfdE56ZTHeCZTrzqPbJFirp/dvysdhhhJWwUw4NA/Uvtv3s/AGvi33gH8K/zN2SHTZ8CR2Z+yKEwYCUDkPI13lUvomefQry+mGFIoUllod3BzILLV9vHt9xb7ITsbIkk2oTVQMdp3jf29Yon4zv8io7UQC+wS5FO/XUZ3y093LF+B/eZBvrlJ9nRsA8qikQBJQQerwN9CNXfvo4AAJZIBn9oGtI7P3ScJ4YHVVWzUpgpMik0B8aZRe079ZOewHSJOnBJ2tdMtdxo8aWi557BS/nb5frQ/OE3FSBpZXyYEaIN3GlKOpvdsRwfvvhc1NRn7uu+rRmeDbXPjwo6pzvq66dykwhqdhtSqLt6dF2sFb5idJ0K3Bt6fujgSvmg0aV3+bdlAoovOmp/+7T3QnFtKLocaEMkKsL1uqGSwi+HtF8PpTy7/zR+8sB7XiN8IwLS64F3G05/N43 r58i3Afc QN5HtkATD/FQHRDdjzZaHvn8D/nxr6ycdj0Zr+SnrnAOLlLqljoQ4EyDhTueT06aacF+v4d/fepmZHFWj+Qr18MAS+g== 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: --0000000000009ef64805ef65457d Content-Type: text/plain; charset="UTF-8" The pgprot parameter got removed because, according to the commit log, for no other apparent reason than it being called with 'PAGE_KERNEL' as an argument in the whole kernel. Therefore it got removed. This removed the ability to allocate virtual memory with executing rights. My use case comes from ioremap(). I think this is useful for others too. I don't see why this pgprot parameter got removed but this is the alternative to reverting it to the older 5.7 function. On Fri, 9 Dec 2022 at 14:17, Mark Rutland wrote: > On Fri, Dec 09, 2022 at 02:10:52PM +0100, Xander Moerkerken wrote: > > From: Xander Moerkerken > > > > Since release 5.8-rc1 the pgprot got removed from __vmalloc > > because the only usage was PAGE_KERNEL as argument. > > However, this removes the ability to input other arguments > > such as 'PAGE_KERNEL_EXEC', which can be used to allocate > > memory in which you can execute. For this reason a new > > function is introduced called '__vmalloc_exec'. > > > > Signed-off-by: Xander Moerkerken > > What is this going to be used for? There's no user from this patch alone, > as a > module or otherwise. > > Mark. > > > --- > > include/linux/vmalloc.h | 1 + > > mm/vmalloc.c | 8 ++++++++ > > 2 files changed, 9 insertions(+) > > > > diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h > > index 096d48aa3437..10c46513b6b2 100644 > > --- a/include/linux/vmalloc.h > > +++ b/include/linux/vmalloc.h > > @@ -147,6 +147,7 @@ extern void *vzalloc_node(unsigned long size, int > node) __alloc_size(1); > > extern void *vmalloc_32(unsigned long size) __alloc_size(1); > > extern void *vmalloc_32_user(unsigned long size) __alloc_size(1); > > extern void *__vmalloc(unsigned long size, gfp_t gfp_mask) > __alloc_size(1); > > +extern void *__vmalloc_exec(unsigned long size, gfp_t gfp_mask) > __alloc_size(1); > > extern void *__vmalloc_node_range(unsigned long size, unsigned long > align, > > unsigned long start, unsigned long end, gfp_t > gfp_mask, > > pgprot_t prot, unsigned long vm_flags, int node, > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > > index ccaa461998f3..8fd01ed7082b 100644 > > --- a/mm/vmalloc.c > > +++ b/mm/vmalloc.c > > @@ -3294,6 +3294,14 @@ void *__vmalloc(unsigned long size, gfp_t > gfp_mask) > > } > > EXPORT_SYMBOL(__vmalloc); > > > > + > > +void *__vmalloc_exec(unsigned long size, gfp_t gfp_mask) > > +{ > > + return __vmalloc_node_prot(size, 1, gfp_mask, PAGE_KERNEL_EXEC, > > + NUMA_NO_NODE, > __builtin_return_address(0)); > > +} > > +EXPORT_SYMBOL(__vmalloc_exec); > > + > > /** > > * vmalloc - allocate virtually contiguous memory > > * @size: allocation size > > -- > > 2.37.2 > > > --0000000000009ef64805ef65457d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
The pgprot parameter got removed b= ecause, according to the commit log, for no other apparent reason than it b= eing called with 'PAGE_KERNEL' as an argument in the whole kernel. = Therefore it got removed.
This removed the ability = to allocate virtual memory with executing rights.
My use case comes from ioremap().
I t= hink this is useful for others too.

I don't see why this pgprot parameter got removed but thi= s is the alternative to reverting it to the older 5.7 function.
On Fri, 9 Dec 2022 at 14:17, Mark Rutland <mark.rutland@arm.com> wrote:
On Fri, Dec 09, 2022 a= t 02:10:52PM +0100, Xander Moerkerken wrote:
> From: Xander Moerkerken <xander.moerkerken@gmail.com>
>
> Since release 5.8-rc1 the pgprot got removed from __vmalloc
> because the only usage was PAGE_KERNEL as argument.
> However, this removes the ability to input other arguments
> such as 'PAGE_KERNEL_EXEC', which can be used to allocate
> memory in which you can execute. For this reason a new
> function is introduced called '__vmalloc_exec'.
>
> Signed-off-by: Xander Moerkerken <xander.moerkerken@omron.com>

What is this going to be used for? There's no user from this patch alon= e, as a
module or otherwise.

Mark.

> ---
>=C2=A0 include/linux/vmalloc.h | 1 +
>=C2=A0 mm/vmalloc.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 8 ++++++= ++
>=C2=A0 2 files changed, 9 insertions(+)
>
> diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h
> index 096d48aa3437..10c46513b6b2 100644
> --- a/include/linux/vmalloc.h
> +++ b/include/linux/vmalloc.h
> @@ -147,6 +147,7 @@ extern void *vzalloc_node(unsigned long size, int = node) __alloc_size(1);
>=C2=A0 extern void *vmalloc_32(unsigned long size) __alloc_size(1);
>=C2=A0 extern void *vmalloc_32_user(unsigned long size) __alloc_size(1)= ;
>=C2=A0 extern void *__vmalloc(unsigned long size, gfp_t gfp_mask) __all= oc_size(1);
> +extern void *__vmalloc_exec(unsigned long size, gfp_t gfp_mask) __all= oc_size(1);
>=C2=A0 extern void *__vmalloc_node_range(unsigned long size, unsigned l= ong align,
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0unsigned long start, unsigned long end, gfp_t gfp_mask,
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0pgprot_t prot, unsigned long vm_flags, int node,
> diff --git a/mm/vmalloc.c b/mm/vmalloc.c
> index ccaa461998f3..8fd01ed7082b 100644
> --- a/mm/vmalloc.c
> +++ b/mm/vmalloc.c
> @@ -3294,6 +3294,14 @@ void *__vmalloc(unsigned long size, gfp_t gfp_m= ask)
>=C2=A0 }
>=C2=A0 EXPORT_SYMBOL(__vmalloc);
>=C2=A0
> +
> +void *__vmalloc_exec(unsigned long size, gfp_t gfp_mask)
> +{
> +=C2=A0 =C2=A0 =C2=A0return __vmalloc_node_prot(size, 1, gfp_mask, PAG= E_KERNEL_EXEC,
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0NUMA_NO_NODE, __builtin_return_ad= dress(0));
> +}
> +EXPORT_SYMBOL(__vmalloc_exec);
> +
>=C2=A0 /**
>=C2=A0 =C2=A0* vmalloc - allocate virtually contiguous memory
>=C2=A0 =C2=A0* @size:=C2=A0 =C2=A0 allocation size
> --
> 2.37.2
>
--0000000000009ef64805ef65457d--