Message ID | 20200320145351.32292-19-vincenzo.frascino@arm.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 94d0f5be885ce1e6ca2886af1543165c16745d13 |
Headers | show |
Series | Introduce common headers for vDSO | expand |
On Fri, Mar 20, 2020 at 02:53:43PM +0000, Vincenzo Frascino wrote: > The compat vdso library had some checks that are not anymore relevant. > > Remove the unused code from the compat vDSO library. > > Note: This patch is preparatory for a future one that will introduce > asm/vdso/processor.h on arm64. > > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will@kernel.org> > Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> > Link: https://lore.kernel.org/lkml/20200317122220.30393-19-vincenzo.frascino@arm.com Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Quoting Vincenzo Frascino (2020-03-20 07:53:43) > The compat vdso library had some checks that are not anymore relevant. Can we get the information on why they aren't relevant anymore in the commit text? I'd rather not find this commit three years from now and have no idea why it was applied. > > Remove the unused code from the compat vDSO library. > > Note: This patch is preparatory for a future one that will introduce > asm/vdso/processor.h on arm64. > > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will@kernel.org> > Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> > Link: https://lore.kernel.org/lkml/20200317122220.30393-19-vincenzo.frascino@arm.com
On Fri, Mar 20, 2020 at 04:21:06PM -0700, Stephen Boyd wrote: > Quoting Vincenzo Frascino (2020-03-20 07:53:43) > > The compat vdso library had some checks that are not anymore relevant. > > Can we get the information on why they aren't relevant anymore in the > commit text? I'd rather not find this commit three years from now and > have no idea why it was applied. Good point. But I'd rather say that the original reason for adding them was bogus (ABI compatibility between arm64 compat and arm32, when arm32 vdso never got them). There may be some (very hard to justify) reason to add them if we want compatibility between vdso and syscall fallback on addresses greater than TASK_SIZE. The vdso code generates a SIGSEGV or SIGBUS while the syscall returns -EFAULT. However, you'd have similar mismatch on unmapped addresses below TASK_SIZE which cannot be handled by the vdso (not a simple comparison). I think the vdsotest code should be adjusted accordingly.
diff --git a/arch/arm64/include/asm/vdso/compat_gettimeofday.h b/arch/arm64/include/asm/vdso/compat_gettimeofday.h index 81b0c394f1d8..401df2bcd741 100644 --- a/arch/arm64/include/asm/vdso/compat_gettimeofday.h +++ b/arch/arm64/include/asm/vdso/compat_gettimeofday.h @@ -76,10 +76,6 @@ int clock_getres_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) register long ret asm ("r0"); register long nr asm("r7") = __NR_compat_clock_getres_time64; - /* The checks below are required for ABI consistency with arm */ - if ((_clkid >= MAX_CLOCKS) && (_ts == NULL)) - return -EINVAL; - asm volatile( " swi #0\n" : "=r" (ret) @@ -97,10 +93,6 @@ int clock_getres32_fallback(clockid_t _clkid, struct old_timespec32 *_ts) register long ret asm ("r0"); register long nr asm("r7") = __NR_compat_clock_getres; - /* The checks below are required for ABI consistency with arm */ - if ((_clkid >= MAX_CLOCKS) && (_ts == NULL)) - return -EINVAL; - asm volatile( " swi #0\n" : "=r" (ret) diff --git a/arch/arm64/kernel/vdso32/vgettimeofday.c b/arch/arm64/kernel/vdso32/vgettimeofday.c index 54fc1c2ce93f..ddbad47efaa4 100644 --- a/arch/arm64/kernel/vdso32/vgettimeofday.c +++ b/arch/arm64/kernel/vdso32/vgettimeofday.c @@ -11,20 +11,12 @@ int __vdso_clock_gettime(clockid_t clock, struct old_timespec32 *ts) { - /* The checks below are required for ABI consistency with arm */ - if ((u32)ts >= TASK_SIZE_32) - return -EFAULT; - return __cvdso_clock_gettime32(clock, ts); } int __vdso_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts) { - /* The checks below are required for ABI consistency with arm */ - if ((u32)ts >= TASK_SIZE_32) - return -EFAULT; - return __cvdso_clock_gettime(clock, ts); } @@ -37,10 +29,6 @@ int __vdso_gettimeofday(struct __kernel_old_timeval *tv, int __vdso_clock_getres(clockid_t clock_id, struct old_timespec32 *res) { - /* The checks below are required for ABI consistency with arm */ - if ((u32)res >= TASK_SIZE_32) - return -EFAULT; - return __cvdso_clock_getres_time32(clock_id, res); }
The compat vdso library had some checks that are not anymore relevant. Remove the unused code from the compat vDSO library. Note: This patch is preparatory for a future one that will introduce asm/vdso/processor.h on arm64. Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Link: https://lore.kernel.org/lkml/20200317122220.30393-19-vincenzo.frascino@arm.com --- arch/arm64/include/asm/vdso/compat_gettimeofday.h | 8 -------- arch/arm64/kernel/vdso32/vgettimeofday.c | 12 ------------ 2 files changed, 20 deletions(-)