|
@@ -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;
|