From patchwork Fri Dec 9 13:10:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xander X-Patchwork-Id: 13069555 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 94A23C4332F for ; Fri, 9 Dec 2022 13:11:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CF5828E0003; Fri, 9 Dec 2022 08:11:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id CA5708E0001; Fri, 9 Dec 2022 08:11:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B940E8E0003; Fri, 9 Dec 2022 08:11:05 -0500 (EST) 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 A93058E0001 for ; Fri, 9 Dec 2022 08:11:05 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 791B91A088B for ; Fri, 9 Dec 2022 13:11:05 +0000 (UTC) X-FDA: 80222803290.03.014594B Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by imf15.hostedemail.com (Postfix) with ESMTP id ADE01A0015 for ; Fri, 9 Dec 2022 13:11:03 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=WgeyFirO; spf=pass (imf15.hostedemail.com: domain of xandermoerkerken@gmail.com designates 209.85.218.41 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=1670591463; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=U901euThR5untsgYtFHZfHgDIGt0xE8cuFMyPlg2kds=; b=691VD6CxsiohOmA0NmM1rk6ZoC4Sj05uGH3z77lyYTohZM8zFdUQsGfquzDsTaOMiZmm77 OHjV3x32hP5eAOOPvTb0bv5ZKjeCqrIQjPT9G9tW0k+P6cHcoZwqH4UlOmMZrczw8TXAbS uzqaEYZ5iyX+ICqRPDqEDCcJt2lzpDI= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=WgeyFirO; spf=pass (imf15.hostedemail.com: domain of xandermoerkerken@gmail.com designates 209.85.218.41 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=1670591463; a=rsa-sha256; cv=none; b=E4+pzAghHo5zh/XO0rYROUAPXKo72B/BqhjTKoyhBi+USZJPCxup8Brr9dgpQFWHDe9qpr lviIDcgNERvR6GKxxsNE7p0hML8dkQl6fOwjdzt47BANnnyiZwtAGbZL35DKPnp27BffQs uVfXKFr7fVuKSLofys6uyCykPwg0V70= Received: by mail-ej1-f41.google.com with SMTP id t17so11432593eju.1 for ; Fri, 09 Dec 2022 05:11:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=U901euThR5untsgYtFHZfHgDIGt0xE8cuFMyPlg2kds=; b=WgeyFirOBzBp8wF9QFLi9BH5avruBvdwcR/yXqYZtzFBdz5IOP2xTrro2UrOM43EmZ o9M4NoukF5N7khWoLSzOCevOm15Qc7OwLhz9SlfBE7X8m4kvunrP7MJbaB7+ykMbQhrG AngniuLsrg/77AovobEP4dTy4O/GDT8Jx+9omsuHHQzRG0SXQoanMq7iqBKJZfsiI64U 5Rsd+UM0DQYyS120lUwXJfX8r/EtN6Z3npqyCKBQFRRtR1ziqms1lFCXhXnVXWcyzoAa HHVi0pwDqZsXyoE7kG2JLjpCXWCO8up5OmKuQpe/y4QJBD9C4bDv41GgSeqfsH4FF0N1 Nicw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=U901euThR5untsgYtFHZfHgDIGt0xE8cuFMyPlg2kds=; b=uwQ0aS5iuHRvgPtyNZPoqIJqyZuZ0rzo7ETWa2/IaeZn+XibqZHVOcCyTi74T+afSO /0Ba18Ogl+ekZ2Y1IyNkY6tWl2CjUpjMn2pd3995QoXheD/y7Xp0D5Su+M48LPHnT5Zy dv+Rj7ESJksOq68Mcj98/fex5QGhWa0Q79biNu6jhJNm8TtGE/m9f0X9zXpmeDEiZNZ9 yqm0lHRer1B0IK9xNOO4MQCHj7+IFJj5MO5Y9zPNCxi6jnE87gD3kxzqoLljL/nhv/V7 p+9EFeCLI/SOgqvpQZYs6Z5ckwOa/FsBRvtmywjLhMOsMA9nyka6BySVuj8W5Tx9iP3x Hi8w== X-Gm-Message-State: ANoB5pnlWj+luLWRM4S8PHW2B5JIiPYobYcK4yzYfE4+BeoSh3usgWTC Z4PRh/C9I1K5r+hNrWJMBVU= X-Google-Smtp-Source: AA0mqf6COmty50XK6Vx8fIPwXwxIg8jO2cDSmzUEk2chTzX8e4k2nPgvb/yh1dsdgusCMjlWwijoDw== X-Received: by 2002:a17:907:8746:b0:7bc:1e7e:6b8e with SMTP id qo6-20020a170907874600b007bc1e7e6b8emr5411751ejc.43.1670591462028; Fri, 09 Dec 2022 05:11:02 -0800 (PST) Received: from omron.. (86-94-137-163.fixed.kpn.net. [86.94.137.163]) by smtp.gmail.com with ESMTPSA id gq22-20020a170906e25600b007c10ad73927sm550855ejb.28.2022.12.09.05.11.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Dec 2022 05:11:01 -0800 (PST) From: Xander Moerkerken X-Google-Original-From: Xander Moerkerken To: akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Xander Moerkerken , Xander Moerkerken Subject: [PATCH] Added ability to vmalloc executable memory Date: Fri, 9 Dec 2022 14:10:52 +0100 Message-Id: <20221209131052.64235-1-xander.moerkerken@omron.com> X-Mailer: git-send-email 2.37.2 MIME-Version: 1.0 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: ADE01A0015 X-Stat-Signature: 984f4h9wmn38cq18afcssubojnghryuk X-Rspam-User: X-HE-Tag: 1670591463-4086 X-HE-Meta: U2FsdGVkX19RCy0v0ifnAnDhpoJUf8qbX71v5x+MJmGYZcHFfgzbgW7RXH634/XKn3KFpe2RDjwpHXtzyaXoi2WKhqjQ3abOXpv8ZfzANPmwF0MnWY0SWtQB5nF9U/S25baCbSS05rsE2teO7oILhoG8b+l6wq/4puyS+ZOBV42C4XeQ642eVNKDF4XimQQTbJ4B+S1tioJfme3i/aLRxvVsK0H6aIWpbjR3AMxG+XgoxtzSyZHCNfgDk6a4biLwc22jmgFUDrclS4chRLLs0EUDmQYoFsMCi9QEqkibCqpC0tqHdfHMqUz4ksw1PbCauY15z5RMfqW24btL2Z25hHOBXk0jzDPbF2jTT3jlg1nA8pr/PKzS40Pa3+AwNz5MzeFSGL7WjFOfgyNgXUDk/QhjJS5uO3qhsGQS9X6qhqj0sjRgs48F2jf3IyRxcScPru2cw7dzYV4krxrBAWnzgCBcvSnWnFjX1Z5tRaKiazSXsLK6fHUWoD9Rxa8TCp+iRi8JxKabI9NE/UONNYLUKJlS+KQCBZvpKnte16jFNspsaz2HG3BxeD44NmhSVxt7p2xoZLOh+9L3o+0YerC33HiZ7Nn/H2Ngpz5sEcIjncDWL5Dv0UwBAZOrOYzI0MTcjDU3C/uSuC51s0m1NFt8XIRXMZNYlICVPeH3WaGXshFpCQ5AhlFpc/Xl2IonQQTbDrKfYGU0yqP/qqkAYI13wSuUfz4Vu9im73iuwSE9xgyoqkVAMN2M5weeW9uVgWoyNF6FOOG8dXt0BStGQ8FCvIIo6MX9AdLvY4Uz826GMbPnaizdRXyLTZJIjN0E+QsN8kJUERRKI8bTTi5VvYMC360x1aW6/U/betGN3/HwBnc4g8G6D8KYiF5thyONXY6qw0s7cdkvLw2NblsqzPr0ekTEOx4sgUEt3DxwUsqbSWloJrSG8XmhaOFh3BwTSoISq/BrUo2McJf1t5CaqhO BPxklnIm FPKwjsHM+o1xoNodmyUU8A5aq5wXKNoOyEjtVynacSFqRY3B0nERv/JK6o1AhyShY/xKHlMdWGhRLnkKr3s/vgmv4QzO06mHu2c77Q0LbVjWzN00KB//wi8x2xEPvtB9E+ruc0bl4vo9OVanZgnejRdeCFzTIQB7KLaTl 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: 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 --- 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