Messages in this thread Patch in this message | | | From | Andy Lutomirski <> | Subject | [PATCH 1/2] x86: Mark __vdso entries as asmlinkage | Date | Wed, 26 Feb 2014 17:02:13 -0800 |
| |
This makes no difference for 64-bit, bit it's critical for 32-bit code: these functions are called from outside the kernel, so they need to comply with the ABI.
Signed-off-by: Andy Lutomirski <luto@amacapital.net> --- arch/x86/vdso/vclock_gettime.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/arch/x86/vdso/vclock_gettime.c b/arch/x86/vdso/vclock_gettime.c index 828888e..260a422 100644 --- a/arch/x86/vdso/vclock_gettime.c +++ b/arch/x86/vdso/vclock_gettime.c @@ -25,9 +25,9 @@ #define gtod (&VVAR(vsyscall_gtod_data)) -extern int __vdso_clock_gettime(clockid_t clock, struct timespec *ts); -extern int __vdso_gettimeofday(struct timeval *tv, struct timezone *tz); -extern time_t __vdso_time(time_t *t); +extern asmlinkage int __vdso_clock_gettime(clockid_t clock, struct timespec *ts); +extern asmlinkage int __vdso_gettimeofday(struct timeval *tv, struct timezone *tz); +extern asmlinkage time_t __vdso_time(time_t *t); #ifdef CONFIG_HPET_TIMER static inline u32 read_hpet_counter(const volatile void *addr) @@ -304,7 +304,7 @@ notrace static void do_monotonic_coarse(struct timespec *ts) } while (unlikely(gtod_read_retry(gtod, seq))); } -notrace int __vdso_clock_gettime(clockid_t clock, struct timespec *ts) +notrace asmlinkage int __vdso_clock_gettime(clockid_t clock, struct timespec *ts) { switch (clock) { case CLOCK_REALTIME: @@ -332,7 +332,7 @@ fallback: int clock_gettime(clockid_t, struct timespec *) __attribute__((weak, alias("__vdso_clock_gettime"))); -notrace int __vdso_gettimeofday(struct timeval *tv, struct timezone *tz) +notrace asmlinkage int __vdso_gettimeofday(struct timeval *tv, struct timezone *tz) { if (likely(tv != NULL)) { if (unlikely(do_realtime((struct timespec *)tv) == VCLOCK_NONE)) @@ -353,7 +353,7 @@ int gettimeofday(struct timeval *, struct timezone *) * This will break when the xtime seconds get inaccurate, but that is * unlikely */ -notrace time_t __vdso_time(time_t *t) +notrace asmlinkage time_t __vdso_time(time_t *t) { /* This is atomic on x86 so we don't need any locks. */ time_t result = ACCESS_ONCE(gtod->wall_time_sec); -- 1.8.5.3
| |