diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-10-19 09:15:12 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-10-19 09:15:12 +0200 |
commit | 2a96661054452c3016c377d72a38c6d4948ea6ae (patch) | |
tree | 4319eb265b72589cf58e076de58f1a9a1a76c278 | |
parent | 7555c5d5a87973fbdee201ff63d2edd748933177 (diff) | |
parent | 27faeebd00813cd52a140e8944b6b32729b50e61 (diff) | |
download | linux-exynos-2a96661054452c3016c377d72a38c6d4948ea6ae.tar.gz linux-exynos-2a96661054452c3016c377d72a38c6d4948ea6ae.tar.bz2 linux-exynos-2a96661054452c3016c377d72a38c6d4948ea6ae.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
David writes:
"Sparc fixes:
The main bit here is fixing how fallback system calls are handled in
the sparc vDSO.
Unfortunately, I fat fingered the commit and some perf debugging
hacks slipped into the vDSO fix, which I revert in the very next
commit."
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
sparc: Revert unintended perf changes.
sparc: vDSO: Silence an uninitialized variable warning
sparc: Fix syscall fallback bugs in VDSO.
-rw-r--r-- | arch/sparc/vdso/vclock_gettime.c | 12 | ||||
-rw-r--r-- | arch/sparc/vdso/vma.c | 4 |
2 files changed, 14 insertions, 2 deletions
diff --git a/arch/sparc/vdso/vclock_gettime.c b/arch/sparc/vdso/vclock_gettime.c index 3feb3d960ca5..75dca9aab737 100644 --- a/arch/sparc/vdso/vclock_gettime.c +++ b/arch/sparc/vdso/vclock_gettime.c @@ -33,9 +33,19 @@ #define TICK_PRIV_BIT (1ULL << 63) #endif +#ifdef CONFIG_SPARC64 #define SYSCALL_STRING \ "ta 0x6d;" \ - "sub %%g0, %%o0, %%o0;" \ + "bcs,a 1f;" \ + " sub %%g0, %%o0, %%o0;" \ + "1:" +#else +#define SYSCALL_STRING \ + "ta 0x10;" \ + "bcs,a 1f;" \ + " sub %%g0, %%o0, %%o0;" \ + "1:" +#endif #define SYSCALL_CLOBBERS \ "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ diff --git a/arch/sparc/vdso/vma.c b/arch/sparc/vdso/vma.c index f51595f861b8..5eaff3c1aa0c 100644 --- a/arch/sparc/vdso/vma.c +++ b/arch/sparc/vdso/vma.c @@ -262,7 +262,9 @@ static __init int vdso_setup(char *s) unsigned long val; err = kstrtoul(s, 10, &val); + if (err) + return err; vdso_enabled = val; - return err; + return 0; } __setup("vdso=", vdso_setup); |