always_inline timespec_add_ns
PATCH 3/3 always_inline timespec_add_ns
timespec_add_ns is used from the x86-64 vdso, which cannot call out to other kernel code. Make sure that timespec_add_ns is always inlined (and only uses always_inlined functions) to make sure there are no unexpected calls.
Signed-off-by Jeremy Fitzhardinge <[email protected]>
---include/linux/time.h | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
===================================================================
include/linux/time.h +4 -1
@@ -170,10 +170,13 @@* timespec_add_ns - Adds nanoseconds to a timespec * @a: pointer to timespec to be incremented * @ns: unsigned nanoseconds value to be added +* +* This must always be inlined because its used from the x86-64 vdso, +* which cannot call other kernel functions. */ -static inline void timespec_add_ns (struct timespec *a,u64 ns) +static __always_inline void timespec_add_ns(struct timespec *a, u64 ns)
{
- a->tv_sec += iter_div_u64_rem(a->tv_nsec + ns, NSEC_PER_SEC, &ns);
+ a->tv_sec += __iter_div_u64_rem(a->tv_nsec + ns, NSEC_PER_SEC, &ns); a->tv_nsec = ns; }
#endif /* __KERNEL__ */