From 806fcfc9354bd16f99a076275a254feaf0c217ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Date: Sun, 14 Dec 2008 23:16:58 -0800 Subject: [PATCH] --- yaml --- r: 122701 b: refs/heads/master c: ebad5c0984e06f4036d2eb2741b9afce736b8a06 h: refs/heads/master i: 122699: 430c0367c8e38f6887cc2b4680b0d1a516a215bc v: v3 --- [refs] | 2 +- trunk/net/can/raw.c | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index a6760acfd79d..0214b0779a7d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d8eb93078cedbbf4b7e18e1d7054171c7b70b442 +refs/heads/master: ebad5c0984e06f4036d2eb2741b9afce736b8a06 diff --git a/trunk/net/can/raw.c b/trunk/net/can/raw.c index 6e0663faaf9f..27aab63df467 100644 --- a/trunk/net/can/raw.c +++ b/trunk/net/can/raw.c @@ -641,17 +641,12 @@ static int raw_sendmsg(struct kiocb *iocb, struct socket *sock, skb = sock_alloc_send_skb(sk, size, msg->msg_flags & MSG_DONTWAIT, &err); - if (!skb) { - dev_put(dev); - return err; - } + if (!skb) + goto put_dev; err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size); - if (err < 0) { - kfree_skb(skb); - dev_put(dev); - return err; - } + if (err < 0) + goto free_skb; skb->dev = dev; skb->sk = sk; @@ -660,9 +655,16 @@ static int raw_sendmsg(struct kiocb *iocb, struct socket *sock, dev_put(dev); if (err) - return err; + goto send_failed; return size; + +free_skb: + kfree_skb(skb); +put_dev: + dev_put(dev); +send_failed: + return err; } static int raw_recvmsg(struct kiocb *iocb, struct socket *sock,