diff options
Diffstat (limited to 'net/ipv4/raw.c')
| -rw-r--r-- | net/ipv4/raw.c | 5 | 
1 files changed, 4 insertions, 1 deletions
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c index 9eb5fc247868..9f97b9cbf7b3 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c @@ -722,6 +722,7 @@ static int raw_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len)  	int ret = -EINVAL;  	int chk_addr_ret; +	lock_sock(sk);  	if (sk->sk_state != TCP_CLOSE || addr_len < sizeof(struct sockaddr_in))  		goto out; @@ -741,7 +742,9 @@ static int raw_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len)  		inet->inet_saddr = 0;  /* Use device */  	sk_dst_reset(sk);  	ret = 0; -out:	return ret; +out: +	release_sock(sk); +	return ret;  }  /*  | 
