mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 17:30:02 +00:00
![Soheil Hassas Yeganeh](/assets/img/avatar_default.png)
SOF_TIMESTAMPING_OPT_STATS can be enabled and disabled
while packets are collected on the error queue.
So, checking SOF_TIMESTAMPING_OPT_STATS in sk->sk_tsflags
is not enough to safely assume that the skb contains
OPT_STATS data.
Add a bit in sock_exterr_skb to indicate whether the
skb contains opt_stats data.
Fixes: 1c885808e4
("tcp: SOF_TIMESTAMPING_OPT_STATS option for SO_TIMESTAMPING")
Reported-by: JongHwan Kim <zzoru007@gmail.com>
Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
27 lines
485 B
C
27 lines
485 B
C
#ifndef _LINUX_ERRQUEUE_H
|
|
#define _LINUX_ERRQUEUE_H 1
|
|
|
|
|
|
#include <net/ip.h>
|
|
#if IS_ENABLED(CONFIG_IPV6)
|
|
#include <linux/ipv6.h>
|
|
#endif
|
|
#include <uapi/linux/errqueue.h>
|
|
|
|
#define SKB_EXT_ERR(skb) ((struct sock_exterr_skb *) ((skb)->cb))
|
|
|
|
struct sock_exterr_skb {
|
|
union {
|
|
struct inet_skb_parm h4;
|
|
#if IS_ENABLED(CONFIG_IPV6)
|
|
struct inet6_skb_parm h6;
|
|
#endif
|
|
} header;
|
|
struct sock_extended_err ee;
|
|
u16 addr_offset;
|
|
__be16 port;
|
|
u8 opt_stats:1,
|
|
unused:7;
|
|
};
|
|
|
|
#endif
|