forked from mirrors/linux
		
	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
 |