* [PATCH] x86: vdso: change time() prototype to match __vdso_time()
@ 2017-12-04 15:01 Arnd Bergmann
2017-12-06 21:21 ` [tip:x86/urgent] x86/vdso: Change " tip-bot for Arnd Bergmann
0 siblings, 1 reply; 2+ messages in thread
From: Arnd Bergmann @ 2017-12-04 15:01 UTC (permalink / raw)
To: Andy Lutomirski, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86
Cc: Arnd Bergmann, Mark Rutland, Paul E. McKenney, Vitaly Kuznetsov,
linux-kernel
gcc-8 warns that time() is an alias for __vdso_time() but the two
have different prototypes:
arch/x86/entry/vdso/vclock_gettime.c:327:5: error: 'time' alias between functions of incompatible types 'int(time_t *)' {aka 'int(long int *)'} and 'time_t(time_t *)' {aka 'long int(long int *)'} [-Werror=attribute-alias]
int time(time_t *t)
^~~~
arch/x86/entry/vdso/vclock_gettime.c:318:16: note: aliased declaration here
I could not figure out whether this is intentional, but I see that
changing it to return time_t avoids the warning.
Returning 'int' from time() is also a bit questionable, as it causes an
overflow in y2038 even on 64-bit architectures that use a 64-bit time_t
type. On 32-bit architecture with 64-bit time_t, time() should always
be implement by the C library by calling a (to be added) clock_gettime()
variant that takes a sufficiently wide argument.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
arch/x86/entry/vdso/vclock_gettime.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/entry/vdso/vclock_gettime.c b/arch/x86/entry/vdso/vclock_gettime.c
index b179d73c53bf..ebd1ab0b21a2 100644
--- a/arch/x86/entry/vdso/vclock_gettime.c
+++ b/arch/x86/entry/vdso/vclock_gettime.c
@@ -324,5 +324,5 @@ notrace time_t __vdso_time(time_t *t)
*t = result;
return result;
}
-int time(time_t *t)
+time_t time(time_t *t)
__attribute__((weak, alias("__vdso_time")));
--
2.9.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [tip:x86/urgent] x86/vdso: Change time() prototype to match __vdso_time()
2017-12-04 15:01 [PATCH] x86: vdso: change time() prototype to match __vdso_time() Arnd Bergmann
@ 2017-12-06 21:21 ` tip-bot for Arnd Bergmann
0 siblings, 0 replies; 2+ messages in thread
From: tip-bot for Arnd Bergmann @ 2017-12-06 21:21 UTC (permalink / raw)
To: linux-tip-commits
Cc: paulmck, peterz, mark.rutland, hpa, linux-kernel, tglx, vkuznets,
torvalds, luto, mingo, arnd
Commit-ID: 88edb57d1e0b262e669c5cad36646dcf5a7f37f5
Gitweb: https://git.kernel.org/tip/88edb57d1e0b262e669c5cad36646dcf5a7f37f5
Author: Arnd Bergmann <arnd@arndb.de>
AuthorDate: Mon, 4 Dec 2017 16:01:55 +0100
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Wed, 6 Dec 2017 21:31:46 +0100
x86/vdso: Change time() prototype to match __vdso_time()
gcc-8 warns that time() is an alias for __vdso_time() but the two
have different prototypes:
arch/x86/entry/vdso/vclock_gettime.c:327:5: error: 'time' alias between functions of incompatible types 'int(time_t *)' {aka 'int(long int *)'} and 'time_t(time_t *)' {aka 'long int(long int *)'} [-Werror=attribute-alias]
int time(time_t *t)
^~~~
arch/x86/entry/vdso/vclock_gettime.c:318:16: note: aliased declaration here
I could not figure out whether this is intentional, but I see that
changing it to return time_t avoids the warning.
Returning 'int' from time() is also a bit questionable, as it causes an
overflow in y2038 even on 64-bit architectures that use a 64-bit time_t
type. On 32-bit architecture with 64-bit time_t, time() should always
be implement by the C library by calling a (to be added) clock_gettime()
variant that takes a sufficiently wide argument.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
Link: http://lkml.kernel.org/r/20171204150203.852959-1-arnd@arndb.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/entry/vdso/vclock_gettime.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/entry/vdso/vclock_gettime.c b/arch/x86/entry/vdso/vclock_gettime.c
index 11b13c4..f19856d 100644
--- a/arch/x86/entry/vdso/vclock_gettime.c
+++ b/arch/x86/entry/vdso/vclock_gettime.c
@@ -324,5 +324,5 @@ notrace time_t __vdso_time(time_t *t)
*t = result;
return result;
}
-int time(time_t *t)
+time_t time(time_t *t)
__attribute__((weak, alias("__vdso_time")));
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-12-06 21:26 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-04 15:01 [PATCH] x86: vdso: change time() prototype to match __vdso_time() Arnd Bergmann
2017-12-06 21:21 ` [tip:x86/urgent] x86/vdso: Change " tip-bot for Arnd Bergmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).