mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-05 00:20:32 +00:00
can: merge error paths
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d8eb93078c
commit
ebad5c0984
1 changed files with 12 additions and 10 deletions
|
@ -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,
|
skb = sock_alloc_send_skb(sk, size, msg->msg_flags & MSG_DONTWAIT,
|
||||||
&err);
|
&err);
|
||||||
if (!skb) {
|
if (!skb)
|
||||||
dev_put(dev);
|
goto put_dev;
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size);
|
err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size);
|
||||||
if (err < 0) {
|
if (err < 0)
|
||||||
kfree_skb(skb);
|
goto free_skb;
|
||||||
dev_put(dev);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
skb->dev = dev;
|
skb->dev = dev;
|
||||||
skb->sk = sk;
|
skb->sk = sk;
|
||||||
|
|
||||||
|
@ -660,9 +655,16 @@ static int raw_sendmsg(struct kiocb *iocb, struct socket *sock,
|
||||||
dev_put(dev);
|
dev_put(dev);
|
||||||
|
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
goto send_failed;
|
||||||
|
|
||||||
return size;
|
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,
|
static int raw_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||||
|
|
Loading…
Reference in a new issue