| From c1c18dd841e1acb901844e73e4a419e6d5e94318 Mon Sep 17 00:00:00 2001 |
| From: Benjamin LaHaise <bcrl@kvack.org> |
| Date: Tue, 20 Mar 2012 03:57:54 +0000 |
| Subject: Fix pppol2tp getsockname() |
| |
| |
| From: Benjamin LaHaise <bcrl@kvack.org> |
| |
| [ Upstream commit bbdb32cb5b73597386913d052165423b9d736145 ] |
| |
| While testing L2TP functionality, I came across a bug in getsockname(). The |
| IP address returned within the pppol2tp_addr's addr memember was not being |
| set to the IP address in use. This bug is caused by using inet_sk() on the |
| wrong socket (the L2TP socket rather than the underlying UDP socket), and was |
| likely introduced during the addition of L2TPv3 support. |
| |
| Signed-off-by: Benjamin LaHaise <bcrl@kvack.org> |
| Signed-off-by: James Chapman <jchapman@katalix.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/l2tp/l2tp_ppp.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/net/l2tp/l2tp_ppp.c |
| +++ b/net/l2tp/l2tp_ppp.c |
| @@ -915,7 +915,7 @@ static int pppol2tp_getname(struct socke |
| goto end_put_sess; |
| } |
| |
| - inet = inet_sk(sk); |
| + inet = inet_sk(tunnel->sock); |
| if (tunnel->version == 2) { |
| struct sockaddr_pppol2tp sp; |
| len = sizeof(sp); |