| From foo@baz Wed May 28 21:03:54 PDT 2014 |
| From: Dmitry Petukhov <dmgenp@gmail.com> |
| Date: Wed, 9 Apr 2014 02:23:20 +0600 |
| Subject: l2tp: take PMTU from tunnel UDP socket |
| |
| From: Dmitry Petukhov <dmgenp@gmail.com> |
| |
| [ Upstream commit f34c4a35d87949fbb0e0f31eba3c054e9f8199ba ] |
| |
| When l2tp driver tries to get PMTU for the tunnel destination, it uses |
| the pointer to struct sock that represents PPPoX socket, while it |
| should use the pointer that represents UDP socket of the tunnel. |
| |
| Signed-off-by: Dmitry Petukhov <dmgenp@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/l2tp/l2tp_ppp.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/net/l2tp/l2tp_ppp.c |
| +++ b/net/l2tp/l2tp_ppp.c |
| @@ -756,9 +756,9 @@ static int pppol2tp_connect(struct socke |
| session->deref = pppol2tp_session_sock_put; |
| |
| /* If PMTU discovery was enabled, use the MTU that was discovered */ |
| - dst = sk_dst_get(sk); |
| + dst = sk_dst_get(tunnel->sock); |
| if (dst != NULL) { |
| - u32 pmtu = dst_mtu(__sk_dst_get(sk)); |
| + u32 pmtu = dst_mtu(__sk_dst_get(tunnel->sock)); |
| if (pmtu != 0) |
| session->mtu = session->mru = pmtu - |
| PPPOL2TP_HEADER_OVERHEAD; |