From: Vincenzo Frascino <vincenzo.frascino@arm.com> To: Paul Burton <paul.burton@mips.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 15:20:42 +0100 Message-ID: <aef6a427-12af-a77e-994f-37c7a618377c@arm.com> (raw) In-Reply-To: <20190903134335.uxxf5kvp3afe7rfr@pburton-laptop> Hi Paul, thank you for your review. On 9/3/19 2:52 PM, Paul Burton wrote: > 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> > Please feel free to apply this to mips-next. Thanks, Vincenzo > 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 index Thread overview: 25+ 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 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 22:28 ` 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-16 19:43 ` [PATCH] MIPS: vdso: Define BUILD_VDSO32 when building a 32bit kernel Thomas Gleixner 2020-01-16 20:11 ` Paul Burton 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 2019-09-03 14:20 ` Vincenzo Frascino [this message] 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 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 2019-08-30 13:59 ` [PATCH v2 6/8] arm64: compat: vdso: Remove unused VDSO_HAS_32BIT_FALLBACK 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 2019-08-30 13:59 ` [PATCH v2 8/8] x86: " 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=aef6a427-12af-a77e-994f-37c7a618377c@arm.com \ --to=vincenzo.frascino@arm.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=paul.burton@mips.com \ --cc=salyzyn@android.com \ --cc=tglx@linutronix.de \ --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
Linux-MIPS Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-mips/0 linux-mips/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-mips linux-mips/ https://lore.kernel.org/linux-mips \ linux-mips@vger.kernel.org public-inbox-index linux-mips Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-mips AGPL code for this site: git clone https://public-inbox.org/public-inbox.git