sk_buff_data_t old_tail = inst->skb->tail;
        struct sock *sk;
        const unsigned char *hwhdrp;
+       ktime_t tstamp;
 
        nlh = nfnl_msg_put(inst->skb, 0, 0,
                           nfnl_msg_type(NFNL_SUBSYS_ULOG, NFULNL_MSG_PACKET),
                        goto nla_put_failure;
        }
 
-       if (hooknum <= NF_INET_FORWARD && skb->tstamp) {
+       tstamp = skb_tstamp_cond(skb, false);
+       if (hooknum <= NF_INET_FORWARD && tstamp) {
                struct nfulnl_msg_packet_timestamp ts;
-               struct timespec64 kts = ktime_to_timespec64(skb->tstamp);
+               struct timespec64 kts = ktime_to_timespec64(tstamp);
                ts.sec = cpu_to_be64(kts.tv_sec);
                ts.usec = cpu_to_be64(kts.tv_nsec / NSEC_PER_USEC);
 
 
        bool csum_verify;
        char *secdata = NULL;
        u32 seclen = 0;
+       ktime_t tstamp;
 
        size = nlmsg_total_size(sizeof(struct nfgenmsg))
                + nla_total_size(sizeof(struct nfqnl_msg_packet_hdr))
                + nla_total_size(sizeof(u_int32_t))     /* skbinfo */
                + nla_total_size(sizeof(u_int32_t));    /* cap_len */
 
-       if (entskb->tstamp)
+       tstamp = skb_tstamp_cond(entskb, false);
+       if (tstamp)
                size += nla_total_size(sizeof(struct nfqnl_msg_packet_timestamp));
 
        size += nfqnl_get_bridge_size(entry);
        if (nfqnl_put_bridge(entry, skb) < 0)
                goto nla_put_failure;
 
-       if (entry->state.hook <= NF_INET_FORWARD && entskb->tstamp) {
+       if (entry->state.hook <= NF_INET_FORWARD && tstamp) {
                struct nfqnl_msg_packet_timestamp ts;
-               struct timespec64 kts = ktime_to_timespec64(entskb->tstamp);
+               struct timespec64 kts = ktime_to_timespec64(tstamp);
 
                ts.sec = cpu_to_be64(kts.tv_sec);
                ts.usec = cpu_to_be64(kts.tv_nsec / NSEC_PER_USEC);