Linux-kselftest Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v2 0/8] vdso: Complete the conversion to 32bit syscalls
@ 2019-08-30 13:58 Vincenzo Frascino
  2019-08-30 13:58 ` [PATCH v2 1/8] arm64: compat: vdso: Expose BUILD_VDSO32 Vincenzo Frascino
                   ` (7 more replies)
  0 siblings, 8 replies; 17+ messages in thread
From: Vincenzo Frascino @ 2019-08-30 13:58 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, linux-mips, linux-kselftest
  Cc: catalin.marinas, will, paul.burton, tglx, salyzyn, 0x7f454c46, luto

This patch series is a follow up to "lib/vdso, x86/vdso: Fix fallout
from generic VDSO conversion" [1].

The main purpose is to complete the 32bit vDSOs conversion to use the
legacy 32bit syscalls as a fallback. With the conversion of all the
architectures present in -next complete, this patch series removes as
well the conditional choice in between 32 and 64 bit for 32bit vDSOs.

This series has been rebased on linux-next/master.

[1] https://lkml.org/lkml/2019/7/28/86

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Paul Burton <paul.burton@mips.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Dmitry Safonov <0x7f454c46@gmail.com>
Cc: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>

Vincenzo Frascino (8):
  arm64: compat: vdso: Expose BUILD_VDSO32
  lib: vdso: Build 32 bit specific functions in the right context
  mips: compat: vdso: Use legacy syscalls as fallback
  lib: vdso: Remove VDSO_HAS_32BIT_FALLBACK
  lib: vdso: Remove checks on return value for 32 bit vDSO
  arm64: compat: vdso: Remove unused VDSO_HAS_32BIT_FALLBACK
  mips: vdso: Remove unused VDSO_HAS_32BIT_FALLBACK
  x86: vdso: Remove unused VDSO_HAS_32BIT_FALLBACK

 .../include/asm/vdso/compat_gettimeofday.h    |  2 +-
 arch/mips/include/asm/vdso/gettimeofday.h     | 43 +++++++++++++++++++
 arch/mips/vdso/config-n32-o32-env.c           |  1 +
 arch/x86/include/asm/vdso/gettimeofday.h      |  2 -
 lib/vdso/gettimeofday.c                       | 30 ++++++-------
 5 files changed, 57 insertions(+), 21 deletions(-)

-- 
2.23.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 1/8] arm64: compat: vdso: Expose BUILD_VDSO32
  2019-08-30 13:58 [PATCH v2 0/8] vdso: Complete the conversion to 32bit syscalls Vincenzo Frascino
@ 2019-08-30 13:58 ` Vincenzo Frascino
  2019-09-03 14:36   ` Vincenzo Frascino
  2019-08-30 13:58 ` [PATCH v2 2/8] lib: vdso: Build 32 bit specific functions in the right context Vincenzo Frascino
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 17+ messages in thread
From: Vincenzo Frascino @ 2019-08-30 13:58 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, linux-mips, linux-kselftest
  Cc: catalin.marinas, will, paul.burton, tglx, salyzyn, 0x7f454c46, luto

clock_gettime32 and clock_getres_time32 should be compiled only with the
32 bit vdso library.

Expose BUILD_VDSO32 when arm64 compat is compiled, to provide an
indication to the generic library to include these symbols.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
---
 arch/arm64/include/asm/vdso/compat_gettimeofday.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm64/include/asm/vdso/compat_gettimeofday.h b/arch/arm64/include/asm/vdso/compat_gettimeofday.h
index c50ee1b7d5cd..fe7afe0f1a3d 100644
--- a/arch/arm64/include/asm/vdso/compat_gettimeofday.h
+++ b/arch/arm64/include/asm/vdso/compat_gettimeofday.h
@@ -17,6 +17,7 @@
 #define VDSO_HAS_CLOCK_GETRES		1
 
 #define VDSO_HAS_32BIT_FALLBACK		1
+#define BUILD_VDSO32			1
 
 static __always_inline
 int gettimeofday_fallback(struct __kernel_old_timeval *_tv,
-- 
2.23.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 2/8] lib: vdso: Build 32 bit specific functions in the right context
  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-08-30 13:58 ` Vincenzo Frascino
  2019-08-30 13:58 ` [PATCH v2 3/8] mips: compat: vdso: Use legacy syscalls as fallback Vincenzo Frascino
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 17+ messages in thread
From: Vincenzo Frascino @ 2019-08-30 13:58 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, linux-mips, linux-kselftest
  Cc: catalin.marinas, will, paul.burton, tglx, salyzyn, 0x7f454c46, luto

clock_gettime32 and clock_getres_time32 should be compiled only with a
32 bit vdso library.

Exclude these symbols when BUILD_VDSO32 is not defined.

Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Reviewed-by: Andy Lutomirski <luto@kernel.org>
---
 lib/vdso/gettimeofday.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/vdso/gettimeofday.c b/lib/vdso/gettimeofday.c
index e630e7ff57f1..a86e89e6dedc 100644
--- a/lib/vdso/gettimeofday.c
+++ b/lib/vdso/gettimeofday.c
@@ -117,6 +117,7 @@ __cvdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts)
 	return 0;
 }
 
+#ifdef BUILD_VDSO32
 static __maybe_unused int
 __cvdso_clock_gettime32(clockid_t clock, struct old_timespec32 *res)
 {
@@ -139,6 +140,7 @@ __cvdso_clock_gettime32(clockid_t clock, struct old_timespec32 *res)
 	}
 	return ret;
 }
+#endif /* BUILD_VDSO32 */
 
 static __maybe_unused int
 __cvdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz)
@@ -229,6 +231,7 @@ int __cvdso_clock_getres(clockid_t clock, struct __kernel_timespec *res)
 	return 0;
 }
 
+#ifdef BUILD_VDSO32
 static __maybe_unused int
 __cvdso_clock_getres_time32(clockid_t clock, struct old_timespec32 *res)
 {
@@ -251,4 +254,5 @@ __cvdso_clock_getres_time32(clockid_t clock, struct old_timespec32 *res)
 	}
 	return ret;
 }
+#endif /* BUILD_VDSO32 */
 #endif /* VDSO_HAS_CLOCK_GETRES */
-- 
2.23.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 3/8] mips: compat: vdso: Use legacy syscalls as fallback
  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-08-30 13:58 ` [PATCH v2 2/8] lib: vdso: Build 32 bit specific functions in the right context Vincenzo Frascino
@ 2019-08-30 13:58 ` Vincenzo Frascino
  2019-09-03 13:52   ` Paul Burton
  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
                   ` (4 subsequent siblings)
  7 siblings, 2 replies; 17+ messages in thread
From: Vincenzo Frascino @ 2019-08-30 13:58 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, linux-mips, linux-kselftest
  Cc: catalin.marinas, will, paul.burton, tglx, salyzyn, 0x7f454c46, luto

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>
---
 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


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 4/8] lib: vdso: Remove VDSO_HAS_32BIT_FALLBACK
  2019-08-30 13:58 [PATCH v2 0/8] vdso: Complete the conversion to 32bit syscalls Vincenzo Frascino
                   ` (2 preceding siblings ...)
  2019-08-30 13:58 ` [PATCH v2 3/8] mips: compat: vdso: Use legacy syscalls as fallback Vincenzo Frascino
@ 2019-08-30 13:58 ` Vincenzo Frascino
  2019-08-30 13:58 ` [PATCH v2 5/8] lib: vdso: Remove checks on return value for 32 bit vDSO Vincenzo Frascino
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 17+ messages in thread
From: Vincenzo Frascino @ 2019-08-30 13:58 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, linux-mips, linux-kselftest
  Cc: catalin.marinas, will, paul.burton, tglx, salyzyn, 0x7f454c46, luto

VDSO_HAS_32BIT_FALLBACK was introduced to address a regression which
caused seccomp to deny access to the applications to clock_gettime64()
and clock_getres64() because they are not enabled in the existing
filters.

The purpose of VDSO_HAS_32BIT_FALLBACK was to simplify the conditional
implementation of __cvdso_clock_get*time32() variants.

Now that all the architectures that support the generic vDSO library
have been converted to support the 32 bit fallbacks the conditional
can be removed.

Cc: Thomas Gleixner <tglx@linutronix.de>
CC: Andy Lutomirski <luto@kernel.org>
References: c60a32ea4f45 ("lib/vdso/32: Provide legacy syscall fallbacks")
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 lib/vdso/gettimeofday.c | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/lib/vdso/gettimeofday.c b/lib/vdso/gettimeofday.c
index a86e89e6dedc..2c4b311c226d 100644
--- a/lib/vdso/gettimeofday.c
+++ b/lib/vdso/gettimeofday.c
@@ -126,13 +126,8 @@ __cvdso_clock_gettime32(clockid_t clock, struct old_timespec32 *res)
 
 	ret = __cvdso_clock_gettime_common(clock, &ts);
 
-#ifdef VDSO_HAS_32BIT_FALLBACK
 	if (unlikely(ret))
 		return clock_gettime32_fallback(clock, res);
-#else
-	if (unlikely(ret))
-		ret = clock_gettime_fallback(clock, &ts);
-#endif
 
 	if (likely(!ret)) {
 		res->tv_sec = ts.tv_sec;
@@ -240,13 +235,8 @@ __cvdso_clock_getres_time32(clockid_t clock, struct old_timespec32 *res)
 
 	ret = __cvdso_clock_getres_common(clock, &ts);
 
-#ifdef VDSO_HAS_32BIT_FALLBACK
 	if (unlikely(ret))
 		return clock_getres32_fallback(clock, res);
-#else
-	if (unlikely(ret))
-		ret = clock_getres_fallback(clock, &ts);
-#endif
 
 	if (likely(!ret)) {
 		res->tv_sec = ts.tv_sec;
-- 
2.23.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 5/8] lib: vdso: Remove checks on return value for 32 bit vDSO
  2019-08-30 13:58 [PATCH v2 0/8] vdso: Complete the conversion to 32bit syscalls Vincenzo Frascino
                   ` (3 preceding siblings ...)
  2019-08-30 13:58 ` [PATCH v2 4/8] lib: vdso: Remove VDSO_HAS_32BIT_FALLBACK Vincenzo Frascino
@ 2019-08-30 13:58 ` 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
                   ` (2 subsequent siblings)
  7 siblings, 1 reply; 17+ messages in thread
From: Vincenzo Frascino @ 2019-08-30 13:58 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, linux-mips, linux-kselftest
  Cc: catalin.marinas, will, paul.burton, tglx, salyzyn, 0x7f454c46, luto

Since all the architectures that support the generic vDSO library have
been converted to support the 32 bit fallbacks it is not required
anymore to check the return value of __cvdso_clock_get*time32_common()
before updating the old_timespec fields.

Remove the related checks from the generic vdso library.

Cc: Thomas Gleixner <tglx@linutronix.de>
CC: Andy Lutomirski <luto@kernel.org>
References: c60a32ea4f45 ("lib/vdso/32: Provide legacy syscall fallbacks")
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 lib/vdso/gettimeofday.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/lib/vdso/gettimeofday.c b/lib/vdso/gettimeofday.c
index 2c4b311c226d..d5bc16748f81 100644
--- a/lib/vdso/gettimeofday.c
+++ b/lib/vdso/gettimeofday.c
@@ -129,10 +129,10 @@ __cvdso_clock_gettime32(clockid_t clock, struct old_timespec32 *res)
 	if (unlikely(ret))
 		return clock_gettime32_fallback(clock, res);
 
-	if (likely(!ret)) {
-		res->tv_sec = ts.tv_sec;
-		res->tv_nsec = ts.tv_nsec;
-	}
+	/* For ret == 0 */
+	res->tv_sec = ts.tv_sec;
+	res->tv_nsec = ts.tv_nsec;
+
 	return ret;
 }
 #endif /* BUILD_VDSO32 */
@@ -238,10 +238,10 @@ __cvdso_clock_getres_time32(clockid_t clock, struct old_timespec32 *res)
 	if (unlikely(ret))
 		return clock_getres32_fallback(clock, res);
 
-	if (likely(!ret)) {
-		res->tv_sec = ts.tv_sec;
-		res->tv_nsec = ts.tv_nsec;
-	}
+	/* For ret == 0 */
+	res->tv_sec = ts.tv_sec;
+	res->tv_nsec = ts.tv_nsec;
+
 	return ret;
 }
 #endif /* BUILD_VDSO32 */
-- 
2.23.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 6/8] arm64: compat: vdso: Remove unused VDSO_HAS_32BIT_FALLBACK
  2019-08-30 13:58 [PATCH v2 0/8] vdso: Complete the conversion to 32bit syscalls Vincenzo Frascino
                   ` (4 preceding siblings ...)
  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 13:59 ` Vincenzo Frascino
  2019-08-30 13:59 ` [PATCH v2 7/8] mips: " Vincenzo Frascino
  2019-08-30 13:59 ` [PATCH v2 8/8] x86: " Vincenzo Frascino
  7 siblings, 0 replies; 17+ messages in thread
From: Vincenzo Frascino @ 2019-08-30 13:59 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, linux-mips, linux-kselftest
  Cc: catalin.marinas, will, paul.burton, tglx, salyzyn, 0x7f454c46, luto

VDSO_HAS_32BIT_FALLBACK has been removed from the core since
the architectures that support the generic vDSO library have
been converted to support the 32 bit fallbacks.

Remove unused VDSO_HAS_32BIT_FALLBACK from arm64 compat vdso.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
---
 arch/arm64/include/asm/vdso/compat_gettimeofday.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/arch/arm64/include/asm/vdso/compat_gettimeofday.h b/arch/arm64/include/asm/vdso/compat_gettimeofday.h
index fe7afe0f1a3d..537b1e695365 100644
--- a/arch/arm64/include/asm/vdso/compat_gettimeofday.h
+++ b/arch/arm64/include/asm/vdso/compat_gettimeofday.h
@@ -16,7 +16,6 @@
 
 #define VDSO_HAS_CLOCK_GETRES		1
 
-#define VDSO_HAS_32BIT_FALLBACK		1
 #define BUILD_VDSO32			1
 
 static __always_inline
-- 
2.23.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 7/8] mips: vdso: Remove unused VDSO_HAS_32BIT_FALLBACK
  2019-08-30 13:58 [PATCH v2 0/8] vdso: Complete the conversion to 32bit syscalls Vincenzo Frascino
                   ` (5 preceding siblings ...)
  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 ` " Vincenzo Frascino
  2019-09-03 14:46   ` Paul Burton
  2019-08-30 13:59 ` [PATCH v2 8/8] x86: " Vincenzo Frascino
  7 siblings, 1 reply; 17+ messages in thread
From: Vincenzo Frascino @ 2019-08-30 13:59 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, linux-mips, linux-kselftest
  Cc: catalin.marinas, will, paul.burton, tglx, salyzyn, 0x7f454c46, luto

VDSO_HAS_32BIT_FALLBACK has been removed from the core since
the architectures that support the generic vDSO library have
been converted to support the 32 bit fallbacks.

Remove unused VDSO_HAS_32BIT_FALLBACK from mips vdso.

Cc: Paul Burton <paul.burton@mips.com>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 arch/mips/include/asm/vdso/gettimeofday.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/arch/mips/include/asm/vdso/gettimeofday.h b/arch/mips/include/asm/vdso/gettimeofday.h
index e78462e8ca2e..5ad2b086626d 100644
--- a/arch/mips/include/asm/vdso/gettimeofday.h
+++ b/arch/mips/include/asm/vdso/gettimeofday.h
@@ -107,8 +107,6 @@ static __always_inline int clock_getres_fallback(
 
 #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)
-- 
2.23.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 8/8] x86: vdso: Remove unused VDSO_HAS_32BIT_FALLBACK
  2019-08-30 13:58 [PATCH v2 0/8] vdso: Complete the conversion to 32bit syscalls Vincenzo Frascino
                   ` (6 preceding siblings ...)
  2019-08-30 13:59 ` [PATCH v2 7/8] mips: " Vincenzo Frascino
@ 2019-08-30 13:59 ` " Vincenzo Frascino
  7 siblings, 0 replies; 17+ messages in thread
From: Vincenzo Frascino @ 2019-08-30 13:59 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, linux-mips, linux-kselftest
  Cc: catalin.marinas, will, paul.burton, tglx, salyzyn, 0x7f454c46, luto

VDSO_HAS_32BIT_FALLBACK has been removed from the core since
the architectures that support the generic vDSO library have
been converted to support the 32 bit fallbacks.

Remove unused VDSO_HAS_32BIT_FALLBACK from x86 vdso.

Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 arch/x86/include/asm/vdso/gettimeofday.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/arch/x86/include/asm/vdso/gettimeofday.h b/arch/x86/include/asm/vdso/gettimeofday.h
index ba71a63cdac4..6aa8e3eda31d 100644
--- a/arch/x86/include/asm/vdso/gettimeofday.h
+++ b/arch/x86/include/asm/vdso/gettimeofday.h
@@ -96,8 +96,6 @@ long clock_getres_fallback(clockid_t _clkid, struct __kernel_timespec *_ts)
 
 #else
 
-#define VDSO_HAS_32BIT_FALLBACK	1
-
 static __always_inline
 long clock_gettime_fallback(clockid_t _clkid, struct __kernel_timespec *_ts)
 {
-- 
2.23.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 5/8] lib: vdso: Remove checks on return value for 32 bit vDSO
  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
  0 siblings, 0 replies; 17+ messages in thread
From: Vincenzo Frascino @ 2019-08-30 14:16 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, linux-mips, linux-kselftest
  Cc: catalin.marinas, 0x7f454c46, salyzyn, paul.burton, luto, tglx, will

On 30/08/2019 14:58, Vincenzo Frascino wrote:
> Since all the architectures that support the generic vDSO library have
> been converted to support the 32 bit fallbacks it is not required
> anymore to check the return value of __cvdso_clock_get*time32_common()
> before updating the old_timespec fields.
> 
> Remove the related checks from the generic vdso library.
> 
> Cc: Thomas Gleixner <tglx@linutronix.de>
> CC: Andy Lutomirski <luto@kernel.org>

Forgot to add to this patch:

Suggested-by: Andy Lutomirski <luto@kernel.org>

> References: c60a32ea4f45 ("lib/vdso/32: Provide legacy syscall fallbacks")
> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
> ---
>  lib/vdso/gettimeofday.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/lib/vdso/gettimeofday.c b/lib/vdso/gettimeofday.c
> index 2c4b311c226d..d5bc16748f81 100644
> --- a/lib/vdso/gettimeofday.c
> +++ b/lib/vdso/gettimeofday.c
> @@ -129,10 +129,10 @@ __cvdso_clock_gettime32(clockid_t clock, struct old_timespec32 *res)
>  	if (unlikely(ret))
>  		return clock_gettime32_fallback(clock, res);
>  
> -	if (likely(!ret)) {
> -		res->tv_sec = ts.tv_sec;
> -		res->tv_nsec = ts.tv_nsec;
> -	}
> +	/* For ret == 0 */
> +	res->tv_sec = ts.tv_sec;
> +	res->tv_nsec = ts.tv_nsec;
> +
>  	return ret;
>  }
>  #endif /* BUILD_VDSO32 */
> @@ -238,10 +238,10 @@ __cvdso_clock_getres_time32(clockid_t clock, struct old_timespec32 *res)
>  	if (unlikely(ret))
>  		return clock_getres32_fallback(clock, res);
>  
> -	if (likely(!ret)) {
> -		res->tv_sec = ts.tv_sec;
> -		res->tv_nsec = ts.tv_nsec;
> -	}
> +	/* For ret == 0 */
> +	res->tv_sec = ts.tv_sec;
> +	res->tv_nsec = ts.tv_nsec;
> +
>  	return ret;
>  }
>  #endif /* BUILD_VDSO32 */
> 

-- 
Regards,
Vincenzo

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 3/8] mips: compat: vdso: Use legacy syscalls as fallback
  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
  2019-09-03 21:00   ` Paul Burton
  1 sibling, 1 reply; 17+ messages in thread
From: Paul Burton @ 2019-09-03 13:52 UTC (permalink / raw)
  To: Vincenzo Frascino
  Cc: linux-arch, linux-arm-kernel, linux-kernel, linux-mips,
	linux-kselftest, catalin.marinas, will, tglx, salyzyn,
	0x7f454c46, luto

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
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 3/8] mips: compat: vdso: Use legacy syscalls as fallback
  2019-09-03 13:52   ` Paul Burton
@ 2019-09-03 14:20     ` Vincenzo Frascino
  0 siblings, 0 replies; 17+ messages in thread
From: Vincenzo Frascino @ 2019-09-03 14:20 UTC (permalink / raw)
  To: Paul Burton
  Cc: linux-arch, linux-arm-kernel, linux-kernel, linux-mips,
	linux-kselftest, catalin.marinas, will, tglx, salyzyn,
	0x7f454c46, luto

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
>>

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 1/8] arm64: compat: vdso: Expose BUILD_VDSO32
  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
  0 siblings, 1 reply; 17+ messages in thread
From: Vincenzo Frascino @ 2019-09-03 14:36 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, linux-mips, linux-kselftest
  Cc: catalin.marinas, 0x7f454c46, salyzyn, paul.burton, luto, tglx, will

Hi Catalin and Will,

On 8/30/19 2:58 PM, Vincenzo Frascino wrote:
> clock_gettime32 and clock_getres_time32 should be compiled only with the
> 32 bit vdso library.
> 
> Expose BUILD_VDSO32 when arm64 compat is compiled, to provide an
> indication to the generic library to include these symbols.
> 
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will@kernel.org>
> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
> Acked-by: Catalin Marinas <catalin.marinas@arm.com>
> ---
>  arch/arm64/include/asm/vdso/compat_gettimeofday.h | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/arm64/include/asm/vdso/compat_gettimeofday.h b/arch/arm64/include/asm/vdso/compat_gettimeofday.h
> index c50ee1b7d5cd..fe7afe0f1a3d 100644
> --- a/arch/arm64/include/asm/vdso/compat_gettimeofday.h
> +++ b/arch/arm64/include/asm/vdso/compat_gettimeofday.h
> @@ -17,6 +17,7 @@
>  #define VDSO_HAS_CLOCK_GETRES		1
>  
>  #define VDSO_HAS_32BIT_FALLBACK		1
> +#define BUILD_VDSO32			1
>  
>  static __always_inline
>  int gettimeofday_fallback(struct __kernel_old_timeval *_tv,
> 

This patch is independent from the rest and touches only arch code. Can it go in
via the arm64 tree?

-- 
Regards,
Vincenzo

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 1/8] arm64: compat: vdso: Expose BUILD_VDSO32
  2019-09-03 14:36   ` Vincenzo Frascino
@ 2019-09-03 14:38     ` Will Deacon
  0 siblings, 0 replies; 17+ messages in thread
From: Will Deacon @ 2019-09-03 14:38 UTC (permalink / raw)
  To: Vincenzo Frascino
  Cc: linux-arch, linux-arm-kernel, linux-kernel, linux-mips,
	linux-kselftest, catalin.marinas, 0x7f454c46, salyzyn,
	paul.burton, luto, tglx

On Tue, Sep 03, 2019 at 03:36:16PM +0100, Vincenzo Frascino wrote:
> On 8/30/19 2:58 PM, Vincenzo Frascino wrote:
> > clock_gettime32 and clock_getres_time32 should be compiled only with the
> > 32 bit vdso library.
> > 
> > Expose BUILD_VDSO32 when arm64 compat is compiled, to provide an
> > indication to the generic library to include these symbols.
> > 
> > Cc: Catalin Marinas <catalin.marinas@arm.com>
> > Cc: Will Deacon <will@kernel.org>
> > Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
> > Acked-by: Catalin Marinas <catalin.marinas@arm.com>
> > ---
> >  arch/arm64/include/asm/vdso/compat_gettimeofday.h | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/arch/arm64/include/asm/vdso/compat_gettimeofday.h b/arch/arm64/include/asm/vdso/compat_gettimeofday.h
> > index c50ee1b7d5cd..fe7afe0f1a3d 100644
> > --- a/arch/arm64/include/asm/vdso/compat_gettimeofday.h
> > +++ b/arch/arm64/include/asm/vdso/compat_gettimeofday.h
> > @@ -17,6 +17,7 @@
> >  #define VDSO_HAS_CLOCK_GETRES		1
> >  
> >  #define VDSO_HAS_32BIT_FALLBACK		1
> > +#define BUILD_VDSO32			1
> >  
> >  static __always_inline
> >  int gettimeofday_fallback(struct __kernel_old_timeval *_tv,
> > 
> 
> This patch is independent from the rest and touches only arch code. Can it go in
> via the arm64 tree?

Why not take it via -tip along with patch 6? Otherwise we'll get a silly
conflict. I'd assumed this series was going in as one thing.

Will

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 7/8] mips: vdso: Remove unused VDSO_HAS_32BIT_FALLBACK
  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
  0 siblings, 1 reply; 17+ messages in thread
From: Paul Burton @ 2019-09-03 14:46 UTC (permalink / raw)
  To: Vincenzo Frascino
  Cc: linux-arch, linux-arm-kernel, linux-kernel, linux-mips,
	linux-kselftest, catalin.marinas, will, tglx, salyzyn,
	0x7f454c46, luto

Hi Vincenzo,

On Fri, Aug 30, 2019 at 02:59:01PM +0100, Vincenzo Frascino wrote:
> VDSO_HAS_32BIT_FALLBACK has been removed from the core since
> the architectures that support the generic vDSO library have
> been converted to support the 32 bit fallbacks.
> 
> Remove unused VDSO_HAS_32BIT_FALLBACK from mips vdso.
> 
> Cc: Paul Burton <paul.burton@mips.com>
> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>

Do you want this one in mips-next too, or applied somewhere else along
with the rest of the series? If the latter:

    Acked-by: Paul Burton <paul.burton@mips.com>

Thanks,
    Paul

> ---
>  arch/mips/include/asm/vdso/gettimeofday.h | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/arch/mips/include/asm/vdso/gettimeofday.h b/arch/mips/include/asm/vdso/gettimeofday.h
> index e78462e8ca2e..5ad2b086626d 100644
> --- a/arch/mips/include/asm/vdso/gettimeofday.h
> +++ b/arch/mips/include/asm/vdso/gettimeofday.h
> @@ -107,8 +107,6 @@ static __always_inline int clock_getres_fallback(
>  
>  #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)
> -- 
> 2.23.0
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 7/8] mips: vdso: Remove unused VDSO_HAS_32BIT_FALLBACK
  2019-09-03 14:46   ` Paul Burton
@ 2019-09-03 14:51     ` Vincenzo Frascino
  0 siblings, 0 replies; 17+ messages in thread
From: Vincenzo Frascino @ 2019-09-03 14:51 UTC (permalink / raw)
  To: Paul Burton
  Cc: linux-arch, linux-arm-kernel, linux-kernel, linux-mips,
	linux-kselftest, catalin.marinas, will, tglx, salyzyn,
	0x7f454c46, luto

Hi Paul,

On 9/3/19 3:46 PM, Paul Burton wrote:
> Hi Vincenzo,
> 
> On Fri, Aug 30, 2019 at 02:59:01PM +0100, Vincenzo Frascino wrote:
>> VDSO_HAS_32BIT_FALLBACK has been removed from the core since
>> the architectures that support the generic vDSO library have
>> been converted to support the 32 bit fallbacks.
>>
>> Remove unused VDSO_HAS_32BIT_FALLBACK from mips vdso.
>>
>> Cc: Paul Burton <paul.burton@mips.com>
>> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
> 
> Do you want this one in mips-next too, or applied somewhere else along
> with the rest of the series? If the latter:
> 
>     Acked-by: Paul Burton <paul.burton@mips.com>
> 

This patch has a dependency on patch n5 hence can not be applied independently.

Thanks,
Vincenzo

> Thanks,
>     Paul
> 
>> ---
>>  arch/mips/include/asm/vdso/gettimeofday.h | 2 --
>>  1 file changed, 2 deletions(-)
>>
>> diff --git a/arch/mips/include/asm/vdso/gettimeofday.h b/arch/mips/include/asm/vdso/gettimeofday.h
>> index e78462e8ca2e..5ad2b086626d 100644
>> --- a/arch/mips/include/asm/vdso/gettimeofday.h
>> +++ b/arch/mips/include/asm/vdso/gettimeofday.h
>> @@ -107,8 +107,6 @@ static __always_inline int clock_getres_fallback(
>>  
>>  #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)
>> -- 
>> 2.23.0
>>


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 3/8] mips: compat: vdso: Use legacy syscalls as fallback
  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 21:00   ` Paul Burton
  1 sibling, 0 replies; 17+ messages in thread
From: Paul Burton @ 2019-09-03 21:00 UTC (permalink / raw)
  To: Vincenzo Frascino
  Cc: linux-arch, linux-arm-kernel, linux-kernel, linux-mips,
	linux-kselftest, catalin.marinas, will, Paul Burton, tglx,
	salyzyn, 0x7f454c46, luto, linux-mips

Hello,

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.

Applied to mips-next.

> commit 932bb934ed4d
> https://git.kernel.org/mips/c/932bb934ed4d
> 
> Fixes: 00b26474c2f1 ("lib/vdso: Provide generic VDSO implementation")
> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
> Signed-off-by: Paul Burton <paul.burton@mips.com>

Thanks,
    Paul

[ This message was auto-generated; if you believe anything is incorrect
  then please email paul.burton@mips.com to report it. ]

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, back to index

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
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
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

Linux-kselftest Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-kselftest/0 linux-kselftest/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-kselftest linux-kselftest/ https://lore.kernel.org/linux-kselftest \
		linux-kselftest@vger.kernel.org linux-kselftest@archiver.kernel.org
	public-inbox-index linux-kselftest

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kselftest


AGPL code for this site: git clone https://public-inbox.org/ public-inbox