[ovs-dev] [PATCH 18/20] datapath: use ktime_get_ts64() instead of ktime_get_ts()
Pravin Shelar
pshelar at ovn.org
Fri Feb 2 18:18:43 UTC 2018
On Tue, Jan 30, 2018 at 4:40 PM, Gregory Rose <gvrose8192 at gmail.com> wrote:
> On 1/30/2018 3:40 PM, Greg Rose wrote:
>>
>> From: Arnd Bergmann <arnd at arndb.de>
>>
>> Upstream commit:
>> commit 311af51dcb5629f04976a8e451673f77e3301041
>> Author: Arnd Bergmann <arnd at arndb.de>
>> Date: Mon Nov 27 12:41:38 2017 +0100
>>
>> openvswitch: use ktime_get_ts64() instead of ktime_get_ts()
>>
>> timespec is deprecated because of the y2038 overflow, so let's
>> convert
>> this one to ktime_get_ts64(). The code is already safe even on 32-bit
>> architectures, since it uses monotonic times. On 64-bit
>> architectures,
>> nothing changes, while on 32-bit architectures this avoids one
>> type conversion.
>>
>> Signed-off-by: Arnd Bergmann <arnd at arndb.de>
>> Signed-off-by: David S. Miller <davem at davemloft.net>
>>
>> Additional compatability check for ktime_get_ts64() exists or not.
>> If not, then just continue using ktime_get_ts().
>>
>> Cc: Arnd Bergmann <arnd at arndb.de>
>> Signed-off-by: Greg Rose <gvrose8192 at gmail.com>
>
>
> Oops, I screwed this up. ktime_get_ts64 isn't a macro. We'll need this
> incremental...
>
> diff --git a/acinclude.m4 b/acinclude.m4
> index bc1ec72..5c63222 100644
> --- a/acinclude.m4
> +++ b/acinclude.m4
> @@ -807,6 +807,9 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
> OVS_GREP_IFELSE([$KSRC/include/linux/timekeeping.h],
> [ktime_get_ns],
> [OVS_DEFINE([HAVE_KTIME_GET_NS])])
> + OVS_GREP_IFELSE([$KSRC/include/linux/timekeeping.h],
> + [ktime_get_ts64],
> + [OVS_DEFINE([HAVE_KTIME_GET_TS64])])
>
> if cmp -s datapath/linux/kcompat.h.new \
> datapath/linux/kcompat.h >/dev/null 2>&1; then
> diff --git a/datapath/flow.c b/datapath/flow.c
> index 385e481..cd8d422 100644
> --- a/datapath/flow.c
> +++ b/datapath/flow.c
> @@ -52,7 +52,7 @@
> #include "flow_netlink.h"
> #include "vport.h"
>
> -#ifndef ktime_get_ts64
> +#ifndef HAVE_KTIME_GET_TS64
> #define ktime_get_ts64 ktime_get_ts
> #define timespec64 timespec
> #endif
>
>
>
>> ---
>> datapath/flow.c | 11 ++++++++---
>> 1 file changed, 8 insertions(+), 3 deletions(-)
>>
>> diff --git a/datapath/flow.c b/datapath/flow.c
>> index 5da7e3e..385e481 100644
>> --- a/datapath/flow.c
>> +++ b/datapath/flow.c
>> @@ -52,14 +52,19 @@
>> #include "flow_netlink.h"
>> #include "vport.h"
>> +#ifndef ktime_get_ts64
>> +#define ktime_get_ts64 ktime_get_ts
>> +#define timespec64 timespec
>> +#endif
>> +
This is done in compat code, can you move it to respective header file?
>> u64 ovs_flow_used_time(unsigned long flow_jiffies)
>> {
>> - struct timespec cur_ts;
>> + struct timespec64 cur_ts;
>> u64 cur_ms, idle_ms;
>> - ktime_get_ts(&cur_ts);
>> + ktime_get_ts64(&cur_ts);
>> idle_ms = jiffies_to_msecs(jiffies - flow_jiffies);
>> - cur_ms = (u64)cur_ts.tv_sec * MSEC_PER_SEC +
>> + cur_ms = (u64)(u32)cur_ts.tv_sec * MSEC_PER_SEC +
>> cur_ts.tv_nsec / NSEC_PER_MSEC;
>> return cur_ms - idle_ms;
>
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
More information about the dev
mailing list