X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=drivers%2Fnet%2Fpppol2tp.c;h=449a9825200d5775d8bf221a36657ec87588f8fc;hb=dd0daf2a6fb6bec436a3ef68bd585ea09a2a54b7;hp=5861ee9599a2ff9a34ee0ed65590e1f538b6601d;hpb=3feec9095d12e311b7d4eb7fe7e5dfa75d4a72a5;p=safe%2Fjmp%2Flinux-2.6 diff --git a/drivers/net/pppol2tp.c b/drivers/net/pppol2tp.c index 5861ee9..449a982 100644 --- a/drivers/net/pppol2tp.c +++ b/drivers/net/pppol2tp.c @@ -756,6 +756,7 @@ static int pppol2tp_recv_core(struct sock *sock, struct sk_buff *skb) /* Try to dequeue as many skbs from reorder_q as we can. */ pppol2tp_recv_dequeue(session); + sock_put(sock); return 0; @@ -772,6 +773,7 @@ discard_bad_csum: UDP_INC_STATS_USER(&init_net, UDP_MIB_INERRORS, 0); tunnel->stats.rx_errors++; kfree_skb(skb); + sock_put(sock); return 0; @@ -1662,6 +1664,7 @@ static int pppol2tp_connect(struct socket *sock, struct sockaddr *uservaddr, if (tunnel_sock == NULL) goto end; + sock_hold(tunnel_sock); tunnel = tunnel_sock->sk_user_data; } else { tunnel = pppol2tp_tunnel_find(sock_net(sk), sp->pppol2tp.s_tunnel);