diff options
author | Alan Cox <alan@linux.intel.com> | 2012-09-04 04:13:18 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-10-13 05:38:45 +0900 |
commit | 782d596c84bf4239b24906132ba6367ca7dca865 (patch) | |
tree | 587642f6042dae960cd15cbf79ecf0bd6badaa74 /net | |
parent | bc0b2168aed1ecf0d71975af12d4f0ffecb92bfc (diff) | |
download | lwn-782d596c84bf4239b24906132ba6367ca7dca865.tar.gz lwn-782d596c84bf4239b24906132ba6367ca7dca865.zip |
netrom: copy_datagram_iovec can fail
[ Upstream commit 6cf5c951175abcec4da470c50565cc0afe6cd11d ]
Check for an error from this and if so bail properly.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/netrom/af_netrom.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index 06592d8b4a2b..1b9024ee963c 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c @@ -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; |