nfnetlink: use y2038 safe timestamp
The __build_packet_message function fills a nfulnl_msg_packet_timestamp structure that uses 64-bit seconds and is therefore y2038 safe, but it uses an intermediate 'struct timespec' which is not. This trivially changes the code to use 'struct timespec64' instead, to correct the result on 32-bit architectures. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Pablo Neira Ayuso <pablo@netfilter.org> Cc: Patrick McHardy <kaber@trash.net> Cc: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> Cc: netfilter-devel@vger.kernel.org Cc: coreteam@netfilter.org Acked-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
70ba07b675
Коммит
f6389ecbc5
|
@ -538,9 +538,9 @@ __build_packet_message(struct nfnl_log_net *log,
|
|||
|
||||
if (skb->tstamp.tv64) {
|
||||
struct nfulnl_msg_packet_timestamp ts;
|
||||
struct timeval tv = ktime_to_timeval(skb->tstamp);
|
||||
ts.sec = cpu_to_be64(tv.tv_sec);
|
||||
ts.usec = cpu_to_be64(tv.tv_usec);
|
||||
struct timespec64 kts = ktime_to_timespec64(skb->tstamp);
|
||||
ts.sec = cpu_to_be64(kts.tv_sec);
|
||||
ts.usec = cpu_to_be64(kts.tv_nsec / NSEC_PER_USEC);
|
||||
|
||||
if (nla_put(inst->skb, NFULA_TIMESTAMP, sizeof(ts), &ts))
|
||||
goto nla_put_failure;
|
||||
|
|
Загрузка…
Ссылка в новой задаче