diff options
Diffstat (limited to 'include/net/inet_sock.h')
| -rw-r--r-- | include/net/inet_sock.h | 8 | 
1 files changed, 7 insertions, 1 deletions
| diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h index aa95053dfc78..db8162dd8c0b 100644 --- a/include/net/inet_sock.h +++ b/include/net/inet_sock.h @@ -96,7 +96,7 @@ struct inet_request_sock {  	kmemcheck_bitfield_end(flags);  	u32                     ir_mark;  	union { -		struct ip_options_rcu	*opt; +		struct ip_options_rcu __rcu	*ireq_opt;  #if IS_ENABLED(CONFIG_IPV6)  		struct {  			struct ipv6_txoptions	*ipv6_opt; @@ -132,6 +132,12 @@ static inline int inet_request_bound_dev_if(const struct sock *sk,  	return sk->sk_bound_dev_if;  } +static inline struct ip_options_rcu *ireq_opt_deref(const struct inet_request_sock *ireq) +{ +	return rcu_dereference_check(ireq->ireq_opt, +				     refcount_read(&ireq->req.rsk_refcnt) > 0); +} +  struct inet_cork {  	unsigned int		flags;  	__be32			addr; |