SOCK_TSTAMP_NEW, /* Indicates 64 bit timestamps always */
        SOCK_RCVMARK, /* Receive SO_MARK  ancillary data with packet */
        SOCK_RCVPRIORITY, /* Receive SO_PRIORITY ancillary data with packet */
+       SOCK_TIMESTAMPING_ANY, /* Copy of sk_tsflags & TSFLAGS_ANY */
 };
 
 #define SK_FLAGS_TIMESTAMP ((1UL << SOCK_TIMESTAMP) | (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE))
 {
 #define FLAGS_RECV_CMSGS ((1UL << SOCK_RXQ_OVFL)                       | \
                           (1UL << SOCK_RCVTSTAMP)                      | \
-                          (1UL << SOCK_RCVMARK)                        |\
-                          (1UL << SOCK_RCVPRIORITY))
+                          (1UL << SOCK_RCVMARK)                        | \
+                          (1UL << SOCK_RCVPRIORITY)                    | \
+                          (1UL << SOCK_TIMESTAMPING_ANY))
 #define TSFLAGS_ANY      (SOF_TIMESTAMPING_SOFTWARE                    | \
                           SOF_TIMESTAMPING_RAW_HARDWARE)
 
-       if (sk->sk_flags & FLAGS_RECV_CMSGS ||
-           READ_ONCE(sk->sk_tsflags) & TSFLAGS_ANY)
+       if (READ_ONCE(sk->sk_flags) & FLAGS_RECV_CMSGS)
                __sock_recv_cmsgs(msg, sk, skb);
        else if (unlikely(sock_flag(sk, SOCK_TIMESTAMP)))
                sock_write_timestamp(sk, skb->tstamp);
 
 
        WRITE_ONCE(sk->sk_tsflags, val);
        sock_valbool_flag(sk, SOCK_TSTAMP_NEW, optname == SO_TIMESTAMPING_NEW);
+       sock_valbool_flag(sk, SOCK_TIMESTAMPING_ANY, !!(val & TSFLAGS_ANY));
 
        if (val & SOF_TIMESTAMPING_RX_SOFTWARE)
                sock_enable_timestamp(sk,