From: Vincenzo Frascino <vincenzo.frascino@arm.com>
To: linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Cc: Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>, Arnd Bergmann <arnd@arndb.de>,
Russell King <linux@armlinux.org.uk>,
Ralf Baechle <ralf@linux-mips.org>,
Paul Burton <paul.burton@mips.com>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Thomas Gleixner <tglx@linutronix.de>,
Mark Salyzyn <salyzyn@android.com>,
Peter Collingbourne <pcc@google.com>
Subject: [PATCH v3 07/24] arm64: compat: Refactor aarch32_alloc_vdso_pages()
Date: Thu, 13 Dec 2018 16:57:29 +0000 [thread overview]
Message-ID: <20181213165746.56930-8-vincenzo.frascino@arm.com> (raw)
Message-ID: <20181213165729.LpOpErx2PiVrxA3j7PPSM2YLWxMhx39VXVUjh3E9JkA@z> (raw)
In-Reply-To: <20181213165746.56930-1-vincenzo.frascino@arm.com>
aarch32_alloc_vdso_pages() needs to the refactored to make it
easier to disable kuser helpers.
This patch divides the function in aarch32_alloc_kuser_vdso_page() and
aarch32_alloc_sigreturn_vdso_page().
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
arch/arm64/kernel/vdso.c | 49 ++++++++++++++++++++++++++--------------
1 file changed, 32 insertions(+), 17 deletions(-)
diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c
index 5df7aeef324a..d438e65299a2 100644
--- a/arch/arm64/kernel/vdso.c
+++ b/arch/arm64/kernel/vdso.c
@@ -75,40 +75,55 @@ static const struct vm_special_mapping aarch32_vdso_spec[2] = {
},
};
-static int __init aarch32_alloc_vdso_pages(void)
+static int aarch32_alloc_kuser_vdso_page(void)
{
extern char __kuser_helper_start[], __kuser_helper_end[];
- extern char __aarch32_sigret_code_start[], __aarch32_sigret_code_end[];
-
int kuser_sz = __kuser_helper_end - __kuser_helper_start;
- int sigret_sz = __aarch32_sigret_code_end - __aarch32_sigret_code_start;
- unsigned long vdso_pages[2];
-
- vdso_pages[0] = get_zeroed_page(GFP_ATOMIC);
- if (!vdso_pages[0])
- return -ENOMEM;
+ unsigned long vdso_page;
- vdso_pages[1] = get_zeroed_page(GFP_ATOMIC);
- if (!vdso_pages[1])
+ vdso_page = get_zeroed_page(GFP_ATOMIC);
+ if (!vdso_page)
return -ENOMEM;
/* kuser helpers */
- memcpy((void *)(vdso_pages[0] + 0x1000 - kuser_sz),
+ memcpy((void *)(vdso_page + 0x1000 - kuser_sz),
__kuser_helper_start,
kuser_sz);
+ flush_icache_range(vdso_page, vdso_page + PAGE_SIZE);
+
+ aarch32_vdso_pages[0] = virt_to_page(vdso_page);
+
+ return 0;
+}
+
+static int aarch32_alloc_sigreturn_vdso_page(void)
+{
+ extern char __aarch32_sigret_code_start[], __aarch32_sigret_code_end[];
+ int sigret_sz = __aarch32_sigret_code_end - __aarch32_sigret_code_start;
+ unsigned long vdso_page;
+
+ vdso_page = get_zeroed_page(GFP_ATOMIC);
+ if (!vdso_page)
+ return -ENOMEM;
+
/* sigreturn code */
- memcpy((void *)vdso_pages[1],
+ memcpy((void *)vdso_page,
__aarch32_sigret_code_start,
sigret_sz);
- flush_icache_range(vdso_pages[0], vdso_pages[0] + PAGE_SIZE);
- flush_icache_range(vdso_pages[1], vdso_pages[1] + PAGE_SIZE);
+ flush_icache_range(vdso_page, vdso_page + PAGE_SIZE);
- aarch32_vdso_pages[0] = virt_to_page(vdso_pages[0]);
- aarch32_vdso_pages[1] = virt_to_page(vdso_pages[1]);
+ aarch32_vdso_pages[1] = virt_to_page(vdso_page);
return 0;
+
+}
+
+static int __init aarch32_alloc_vdso_pages(void)
+{
+ return aarch32_alloc_kuser_vdso_page() &
+ aarch32_alloc_sigreturn_vdso_page();
}
arch_initcall(aarch32_alloc_vdso_pages);
--
2.19.2
next prev parent reply other threads:[~2018-12-13 16:59 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-13 16:57 [PATCH v3 00/24] Unify vDSOs across more architectures Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 01/24] kernel: Standardize vdso_datapage Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 02/24] kernel: Define gettimeofday vdso common code Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-14 18:15 ` Mark Salyzyn
2018-12-14 18:15 ` Mark Salyzyn
2019-01-10 10:36 ` Vincenzo Frascino
2019-01-10 10:36 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 03/24] arm64: Build vDSO with -ffixed-x18 Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 04/24] arm64: Substitute gettimeofday with C implementation Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 05/24] arm64: compat: Alloc separate pages for vectors and sigpage Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 06/24] arm64: compat: Split kuser32 Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino [this message]
2018-12-13 16:57 ` [PATCH v3 07/24] arm64: compat: Refactor aarch32_alloc_vdso_pages() Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 08/24] arm64: compat: Add KUSER_HELPERS config option Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 09/24] arm64: compat: Add missing syscall numbers Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 10/24] arm64: compat: Expose signal related structures Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 11/24] arm64: compat: Generate asm offsets for signals Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 12/24] lib: vdso: Add compat support Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 13/24] arm64: compat: Add vDSO Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 14/24] arm64: Refactor vDSO code Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 15/24] arm64: compat: vDSO setup for compat layer Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 16/24] arm64: elf: vDSO code page discovery Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 17/24] arm64: compat: Get sigreturn trampolines from vDSO Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 18/24] arm64: Add vDSO compat support Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-17 15:26 ` Mark Salyzyn
2018-12-17 15:26 ` Mark Salyzyn
2019-01-10 10:39 ` Vincenzo Frascino
2019-01-10 10:39 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 19/24] arm64: Enable compat vDSO support Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 20/24] arm: Add support for generic vDSO Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 21/24] mips: Introduce vdso_direct Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 22/24] clock: csrc-4k: Add support for vdso_direct Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 23/24] clock: gic-timer: " Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 24/24] mips: Add support for generic vDSO Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181213165746.56930-8-vincenzo.frascino@arm.com \
--to=vincenzo.frascino@arm.com \
--cc=arnd@arndb.de \
--cc=catalin.marinas@arm.com \
--cc=daniel.lezcano@linaro.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux@armlinux.org.uk \
--cc=paul.burton@mips.com \
--cc=pcc@google.com \
--cc=ralf@linux-mips.org \
--cc=salyzyn@android.com \
--cc=tglx@linutronix.de \
--cc=will.deacon@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).