diff options
Diffstat (limited to 'net/netrom/af_netrom.c')
| -rw-r--r-- | net/netrom/af_netrom.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index 06592d8b4a2..7261eb81974 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c @@ -601,7 +601,7 @@ static int nr_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)  		if (!capable(CAP_NET_BIND_SERVICE)) {  			dev_put(dev);  			release_sock(sk); -			return -EACCES; +			return -EPERM;  		}  		nr->user_addr   = addr->fsa_digipeater[0];  		nr->source_addr = addr->fsa_ax25.sax25_call; @@ -1169,7 +1169,12 @@ static int nr_recvmsg(struct kiocb *iocb, struct socket *sock,  		msg->msg_flags |= MSG_TRUNC;  	} -	skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); +	er = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); +	if (er < 0) { +		skb_free_datagram(sk, skb); +		release_sock(sk); +		return er; +	}  	if (sax != NULL) {  		sax->sax25_family = AF_NETROM;  |