From: Paul Burton <paul.burton@mips.com>
To: Vincenzo Frascino <vincenzo.frascino@arm.com>
Cc: "linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>,
"linux-kselftest@vger.kernel.org"
<linux-kselftest@vger.kernel.org>,
"catalin.marinas@arm.com" <catalin.marinas@arm.com>,
"will@kernel.org" <will@kernel.org>,
"tglx@linutronix.de" <tglx@linutronix.de>,
"salyzyn@android.com" <salyzyn@android.com>,
"0x7f454c46@gmail.com" <0x7f454c46@gmail.com>,
"luto@kernel.org" <luto@kernel.org>
Subject: Re: [PATCH v2 3/8] mips: compat: vdso: Use legacy syscalls as fallback
Date: Tue, 3 Sep 2019 13:52:19 +0000 [thread overview]
Message-ID: <20190903134335.uxxf5kvp3afe7rfr@pburton-laptop> (raw)
In-Reply-To: <20190830135902.20861-4-vincenzo.frascino@arm.com>
Hi Vincenzo,
On Fri, Aug 30, 2019 at 02:58:57PM +0100, Vincenzo Frascino wrote:
> The generic VDSO implementation uses the Y2038 safe clock_gettime64() and
> clock_getres_time64() syscalls as fallback for 32bit VDSO. This breaks
> seccomp setups because these syscalls might be not (yet) allowed.
>
> Implement the 32bit variants which use the legacy syscalls and select the
> variant in the core library.
>
> The 64bit time variants are not removed because they are required for the
> time64 based vdso accessors.
>
> Cc: Paul Burton <paul.burton@mips.com>
> Fixes: 00b26474c2f1 ("lib/vdso: Provide generic VDSO implementation")
> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
How would you like this to be applied? I'd be happy to apply this one to
mips-next, where commit 24640f233b46 ("mips: Add support for generic
vDSO") added the file being modified here. Otherwise:
Acked-by: Paul Burton <paul.burton@mips.com>
Thanks,
Paul
> ---
> arch/mips/include/asm/vdso/gettimeofday.h | 45 +++++++++++++++++++++++
> arch/mips/vdso/config-n32-o32-env.c | 1 +
> 2 files changed, 46 insertions(+)
>
> diff --git a/arch/mips/include/asm/vdso/gettimeofday.h b/arch/mips/include/asm/vdso/gettimeofday.h
> index c59fe08b0347..e78462e8ca2e 100644
> --- a/arch/mips/include/asm/vdso/gettimeofday.h
> +++ b/arch/mips/include/asm/vdso/gettimeofday.h
> @@ -105,6 +105,51 @@ static __always_inline int clock_getres_fallback(
> return error ? -ret : ret;
> }
>
> +#if _MIPS_SIM != _MIPS_SIM_ABI64
> +
> +#define VDSO_HAS_32BIT_FALLBACK 1
> +
> +static __always_inline long clock_gettime32_fallback(
> + clockid_t _clkid,
> + struct old_timespec32 *_ts)
> +{
> + register struct old_timespec32 *ts asm("a1") = _ts;
> + register clockid_t clkid asm("a0") = _clkid;
> + register long ret asm("v0");
> + register long nr asm("v0") = __NR_clock_gettime;
> + register long error asm("a3");
> +
> + asm volatile(
> + " syscall\n"
> + : "=r" (ret), "=r" (error)
> + : "r" (clkid), "r" (ts), "r" (nr)
> + : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13",
> + "$14", "$15", "$24", "$25", "hi", "lo", "memory");
> +
> + return error ? -ret : ret;
> +}
> +
> +static __always_inline int clock_getres32_fallback(
> + clockid_t _clkid,
> + struct old_timespec32 *_ts)
> +{
> + register struct old_timespec32 *ts asm("a1") = _ts;
> + register clockid_t clkid asm("a0") = _clkid;
> + register long ret asm("v0");
> + register long nr asm("v0") = __NR_clock_getres;
> + register long error asm("a3");
> +
> + asm volatile(
> + " syscall\n"
> + : "=r" (ret), "=r" (error)
> + : "r" (clkid), "r" (ts), "r" (nr)
> + : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13",
> + "$14", "$15", "$24", "$25", "hi", "lo", "memory");
> +
> + return error ? -ret : ret;
> +}
> +#endif
> +
> #ifdef CONFIG_CSRC_R4K
>
> static __always_inline u64 read_r4k_count(void)
> diff --git a/arch/mips/vdso/config-n32-o32-env.c b/arch/mips/vdso/config-n32-o32-env.c
> index 7f8d957abd4a..0011a632aef2 100644
> --- a/arch/mips/vdso/config-n32-o32-env.c
> +++ b/arch/mips/vdso/config-n32-o32-env.c
> @@ -10,6 +10,7 @@
> */
> #undef CONFIG_64BIT
>
> +#define BUILD_VDSO32
> #define CONFIG_32BIT 1
> #define CONFIG_GENERIC_ATOMIC64 1
> #define BUILD_VDSO32_64
> --
> 2.23.0
>
next prev parent reply other threads:[~2019-09-03 13:52 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-30 13:58 [PATCH v2 0/8] vdso: Complete the conversion to 32bit syscalls Vincenzo Frascino
2019-08-30 13:58 ` [PATCH v2 1/8] arm64: compat: vdso: Expose BUILD_VDSO32 Vincenzo Frascino
2019-09-03 14:36 ` Vincenzo Frascino
2019-09-03 14:38 ` Will Deacon
2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-01-14 13:02 ` tip-bot2 for Vincenzo Frascino
2019-08-30 13:58 ` [PATCH v2 2/8] lib: vdso: Build 32 bit specific functions in the right context Vincenzo Frascino
2020-01-13 19:09 ` [tip: timers/core] lib/vdso: " tip-bot2 for Vincenzo Frascino
2020-01-13 22:28 ` [PATCH v2 2/8] lib: vdso: " Thomas Gleixner
2020-01-14 9:33 ` Thomas Gleixner
2020-01-14 10:15 ` Vincenzo Frascino
2020-01-14 10:37 ` Thomas Gleixner
2020-01-14 10:41 ` Vincenzo Frascino
2020-01-14 11:15 ` Vincenzo Frascino
2020-01-14 13:02 ` [tip: timers/core] ARM: vdso: Set BUILD_VDSO32 and provide 32bit fallbacks tip-bot2 for Thomas Gleixner
2020-01-14 13:02 ` [tip: timers/core] lib/vdso: Build 32 bit specific functions in the right context tip-bot2 for Vincenzo Frascino
2020-01-16 19:43 ` [PATCH] MIPS: vdso: Define BUILD_VDSO32 when building a 32bit kernel Thomas Gleixner
2020-01-16 20:11 ` Paul Burton
2020-01-16 20:28 ` [tip: timers/core] " tip-bot2 for Thomas Gleixner
2019-08-30 13:58 ` [PATCH v2 3/8] mips: compat: vdso: Use legacy syscalls as fallback Vincenzo Frascino
2019-09-03 13:52 ` Paul Burton [this message]
2019-09-03 14:20 ` Vincenzo Frascino
2019-09-03 21:00 ` Paul Burton
2019-08-30 13:58 ` [PATCH v2 4/8] lib: vdso: Remove VDSO_HAS_32BIT_FALLBACK Vincenzo Frascino
2020-01-13 19:09 ` [tip: timers/core] lib/vdso: " tip-bot2 for Vincenzo Frascino
2020-01-14 13:02 ` tip-bot2 for Vincenzo Frascino
2019-08-30 13:58 ` [PATCH v2 5/8] lib: vdso: Remove checks on return value for 32 bit vDSO Vincenzo Frascino
2019-08-30 14:16 ` Vincenzo Frascino
2020-01-13 19:09 ` [tip: timers/core] lib/vdso: " tip-bot2 for Vincenzo Frascino
2020-01-14 13:02 ` tip-bot2 for Vincenzo Frascino
2019-08-30 13:59 ` [PATCH v2 6/8] arm64: compat: vdso: Remove unused VDSO_HAS_32BIT_FALLBACK Vincenzo Frascino
2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-01-14 13:02 ` tip-bot2 for Vincenzo Frascino
2019-08-30 13:59 ` [PATCH v2 7/8] mips: " Vincenzo Frascino
2019-09-03 14:46 ` Paul Burton
2019-09-03 14:51 ` Vincenzo Frascino
2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-01-14 13:02 ` tip-bot2 for Vincenzo Frascino
2019-08-30 13:59 ` [PATCH v2 8/8] x86: " Vincenzo Frascino
2020-01-13 19:09 ` [tip: timers/core] x86/vdso: " tip-bot2 for Vincenzo Frascino
2020-01-14 13:02 ` tip-bot2 for 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=20190903134335.uxxf5kvp3afe7rfr@pburton-laptop \
--to=paul.burton@mips.com \
--cc=0x7f454c46@gmail.com \
--cc=catalin.marinas@arm.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=luto@kernel.org \
--cc=salyzyn@android.com \
--cc=tglx@linutronix.de \
--cc=vincenzo.frascino@arm.com \
--cc=will@kernel.org \
/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).