git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
l2tp: Fix sendmsg() return value
[pandora-kernel.git]
/
net
/
l2tp
/
l2tp_ppp.c
diff --git
a/net/l2tp/l2tp_ppp.c
b/net/l2tp/l2tp_ppp.c
index
8a90d75
..
74410e6
100644
(file)
--- a/
net/l2tp/l2tp_ppp.c
+++ b/
net/l2tp/l2tp_ppp.c
@@
-350,18
+350,19
@@
static int pppol2tp_sendmsg(struct kiocb *iocb, struct socket *sock, struct msgh
skb_put(skb, 2);
/* Copy user data into skb */
skb_put(skb, 2);
/* Copy user data into skb */
- error = memcpy_fromiovec(skb->data, m->msg_iov, total_len);
+ error = memcpy_fromiovec(skb_put(skb, total_len), m->msg_iov,
+ total_len);
if (error < 0) {
kfree_skb(skb);
goto error_put_sess_tun;
}
if (error < 0) {
kfree_skb(skb);
goto error_put_sess_tun;
}
- skb_put(skb, total_len);
l2tp_xmit_skb(session, skb, session->hdr_len);
sock_put(ps->tunnel_sock);
l2tp_xmit_skb(session, skb, session->hdr_len);
sock_put(ps->tunnel_sock);
+ sock_put(sk);
- return
error
;
+ return
total_len
;
error_put_sess_tun:
sock_put(ps->tunnel_sock);
error_put_sess_tun:
sock_put(ps->tunnel_sock);
@@
-915,7
+916,7
@@
static int pppol2tp_getname(struct socket *sock, struct sockaddr *uaddr,
goto end_put_sess;
}
goto end_put_sess;
}
- inet = inet_sk(
s
k);
+ inet = inet_sk(
tunnel->soc
k);
if (tunnel->version == 2) {
struct sockaddr_pppol2tp sp;
len = sizeof(sp);
if (tunnel->version == 2) {
struct sockaddr_pppol2tp sp;
len = sizeof(sp);