diff options
Diffstat (limited to 'net/ipv4/udp.c')
| -rw-r--r-- | net/ipv4/udp.c | 15 | 
1 files changed, 12 insertions, 3 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 7d96dc2d3d08..d123d68f4d1d 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -1322,7 +1322,7 @@ try_again:  		*addr_len = sizeof(*sin);  	}  	if (inet->cmsg_flags) -		ip_cmsg_recv_offset(msg, skb, sizeof(struct udphdr) + off); +		ip_cmsg_recv_offset(msg, skb, sizeof(struct udphdr), off);  	err = copied;  	if (flags & MSG_TRUNC) @@ -1345,7 +1345,7 @@ csum_copy_err:  	goto try_again;  } -int udp_disconnect(struct sock *sk, int flags) +int __udp_disconnect(struct sock *sk, int flags)  {  	struct inet_sock *inet = inet_sk(sk);  	/* @@ -1367,6 +1367,15 @@ int udp_disconnect(struct sock *sk, int flags)  	sk_dst_reset(sk);  	return 0;  } +EXPORT_SYMBOL(__udp_disconnect); + +int udp_disconnect(struct sock *sk, int flags) +{ +	lock_sock(sk); +	__udp_disconnect(sk, flags); +	release_sock(sk); +	return 0; +}  EXPORT_SYMBOL(udp_disconnect);  void udp_lib_unhash(struct sock *sk) @@ -2193,7 +2202,7 @@ int udp_abort(struct sock *sk, int err)  	sk->sk_err = err;  	sk->sk_error_report(sk); -	udp_disconnect(sk, 0); +	__udp_disconnect(sk, 0);  	release_sock(sk);  | 
