hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/net/l2tp/l2tp_ppp.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*****************************************************************************
23 * Linux PPP over L2TP (PPPoX/PPPoL2TP) Sockets
34 *
....@@ -11,11 +12,6 @@
1112 * Based on original work by Martijn van Oosterhout <kleptog@svana.org>
1213 *
1314 * License:
14
- * This program is free software; you can redistribute it and/or
15
- * modify it under the terms of the GNU General Public License
16
- * as published by the Free Software Foundation; either version
17
- * 2 of the License, or (at your option) any later version.
18
- *
1915 */
2016
2117 /* This driver handles only L2TP data frames; control frames are handled by a
....@@ -121,8 +117,7 @@
121117 int owner; /* pid that opened the socket */
122118
123119 struct mutex sk_lock; /* Protects .sk */
124
- struct sock __rcu *sk; /* Pointer to the session
125
- * PPPoX socket */
120
+ struct sock __rcu *sk; /* Pointer to the session PPPoX socket */
126121 struct sock *__sk; /* Copy of .sk, for cleanup */
127122 struct rcu_head rcu; /* For asynchronous release */
128123 };
....@@ -159,17 +154,20 @@
159154 {
160155 struct l2tp_session *session;
161156
162
- if (sk == NULL)
157
+ if (!sk)
163158 return NULL;
164159
165160 sock_hold(sk);
166161 session = (struct l2tp_session *)(sk->sk_user_data);
167
- if (session == NULL) {
162
+ if (!session) {
168163 sock_put(sk);
169164 goto out;
170165 }
171
-
172
- BUG_ON(session->magic != L2TP_SESSION_MAGIC);
166
+ if (WARN_ON(session->magic != L2TP_SESSION_MAGIC)) {
167
+ session = NULL;
168
+ sock_put(sk);
169
+ goto out;
170
+ }
173171
174172 out:
175173 return session;
....@@ -222,7 +220,7 @@
222220 */
223221 rcu_read_lock();
224222 sk = rcu_dereference(ps->sk);
225
- if (sk == NULL)
223
+ if (!sk)
226224 goto no_sock;
227225
228226 /* If the first two bytes are 0xFF03, consider that it is the PPP's
....@@ -239,17 +237,9 @@
239237 if (sk->sk_state & PPPOX_BOUND) {
240238 struct pppox_sock *po;
241239
242
- l2tp_dbg(session, L2TP_MSG_DATA,
243
- "%s: recv %d byte data frame, passing to ppp\n",
244
- session->name, data_len);
245
-
246240 po = pppox_sk(sk);
247241 ppp_input(&po->chan, skb);
248242 } else {
249
- l2tp_dbg(session, L2TP_MSG_DATA,
250
- "%s: recv %d byte data frame, passing to L2TP socket\n",
251
- session->name, data_len);
252
-
253243 if (sock_queue_rcv_skb(sk, skb) < 0) {
254244 atomic_long_inc(&session->stats.rx_errors);
255245 kfree_skb(skb);
....@@ -261,7 +251,7 @@
261251
262252 no_sock:
263253 rcu_read_unlock();
264
- l2tp_info(session, L2TP_MSG_DATA, "%s: no socket\n", session->name);
254
+ pr_warn_ratelimited("%s: no socket in recv\n", session->name);
265255 kfree_skb(skb);
266256 }
267257
....@@ -290,7 +280,7 @@
290280 /* Get session and tunnel contexts */
291281 error = -EBADF;
292282 session = pppol2tp_sock_to_session(sk);
293
- if (session == NULL)
283
+ if (!session)
294284 goto error;
295285
296286 tunnel = session->tunnel;
....@@ -326,7 +316,7 @@
326316 }
327317
328318 local_bh_disable();
329
- l2tp_xmit_skb(session, skb, session->hdr_len);
319
+ l2tp_xmit_skb(session, skb);
330320 local_bh_enable();
331321
332322 sock_put(sk);
....@@ -355,7 +345,7 @@
355345 */
356346 static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
357347 {
358
- struct sock *sk = (struct sock *) chan->private;
348
+ struct sock *sk = (struct sock *)chan->private;
359349 struct l2tp_session *session;
360350 struct l2tp_tunnel *tunnel;
361351 int uhlen, headroom;
....@@ -365,7 +355,7 @@
365355
366356 /* Get session and tunnel contexts from the socket */
367357 session = pppol2tp_sock_to_session(sk);
368
- if (session == NULL)
358
+ if (!session)
369359 goto abort;
370360
371361 tunnel = session->tunnel;
....@@ -385,7 +375,7 @@
385375 skb->data[1] = PPP_UI;
386376
387377 local_bh_disable();
388
- l2tp_xmit_skb(session, skb, session->hdr_len);
378
+ l2tp_xmit_skb(session, skb);
389379 local_bh_enable();
390380
391381 sock_put(sk);
....@@ -424,7 +414,8 @@
424414
425415 if (session) {
426416 sk->sk_user_data = NULL;
427
- BUG_ON(session->magic != L2TP_SESSION_MAGIC);
417
+ if (WARN_ON(session->magic != L2TP_SESSION_MAGIC))
418
+ return;
428419 l2tp_session_dec_refcount(session);
429420 }
430421 }
....@@ -660,6 +651,65 @@
660651 return mtu - PPPOL2TP_HEADER_OVERHEAD;
661652 }
662653
654
+static struct l2tp_tunnel *pppol2tp_tunnel_get(struct net *net,
655
+ const struct l2tp_connect_info *info,
656
+ bool *new_tunnel)
657
+{
658
+ struct l2tp_tunnel *tunnel;
659
+ int error;
660
+
661
+ *new_tunnel = false;
662
+
663
+ tunnel = l2tp_tunnel_get(net, info->tunnel_id);
664
+
665
+ /* Special case: create tunnel context if session_id and
666
+ * peer_session_id is 0. Otherwise look up tunnel using supplied
667
+ * tunnel id.
668
+ */
669
+ if (!info->session_id && !info->peer_session_id) {
670
+ if (!tunnel) {
671
+ struct l2tp_tunnel_cfg tcfg = {
672
+ .encap = L2TP_ENCAPTYPE_UDP,
673
+ };
674
+
675
+ /* Prevent l2tp_tunnel_register() from trying to set up
676
+ * a kernel socket.
677
+ */
678
+ if (info->fd < 0)
679
+ return ERR_PTR(-EBADF);
680
+
681
+ error = l2tp_tunnel_create(info->fd,
682
+ info->version,
683
+ info->tunnel_id,
684
+ info->peer_tunnel_id, &tcfg,
685
+ &tunnel);
686
+ if (error < 0)
687
+ return ERR_PTR(error);
688
+
689
+ l2tp_tunnel_inc_refcount(tunnel);
690
+ error = l2tp_tunnel_register(tunnel, net, &tcfg);
691
+ if (error < 0) {
692
+ kfree(tunnel);
693
+ return ERR_PTR(error);
694
+ }
695
+
696
+ *new_tunnel = true;
697
+ }
698
+ } else {
699
+ /* Error if we can't find the tunnel */
700
+ if (!tunnel)
701
+ return ERR_PTR(-ENOENT);
702
+
703
+ /* Error if socket is not prepped */
704
+ if (!tunnel->sock) {
705
+ l2tp_tunnel_dec_refcount(tunnel);
706
+ return ERR_PTR(-ENOENT);
707
+ }
708
+ }
709
+
710
+ return tunnel;
711
+}
712
+
663713 /* connect() handler. Attach a PPPoX socket to a tunnel UDP socket
664714 */
665715 static int pppol2tp_connect(struct socket *sock, struct sockaddr *uservaddr,
....@@ -673,7 +723,6 @@
673723 struct pppol2tp_session *ps;
674724 struct l2tp_session_cfg cfg = { 0, };
675725 bool drop_refcnt = false;
676
- bool drop_tunnel = false;
677726 bool new_session = false;
678727 bool new_tunnel = false;
679728 int error;
....@@ -681,6 +730,14 @@
681730 error = pppol2tp_sockaddr_get_info(uservaddr, sockaddr_len, &info);
682731 if (error < 0)
683732 return error;
733
+
734
+ /* Don't bind if tunnel_id is 0 */
735
+ if (!info.tunnel_id)
736
+ return -EINVAL;
737
+
738
+ tunnel = pppol2tp_tunnel_get(sock_net(sk), &info, &new_tunnel);
739
+ if (IS_ERR(tunnel))
740
+ return PTR_ERR(tunnel);
684741
685742 lock_sock(sk);
686743
....@@ -693,63 +750,6 @@
693750 error = -EALREADY;
694751 if (sk->sk_user_data)
695752 goto end; /* socket is already attached */
696
-
697
- /* Don't bind if tunnel_id is 0 */
698
- error = -EINVAL;
699
- if (!info.tunnel_id)
700
- goto end;
701
-
702
- tunnel = l2tp_tunnel_get(sock_net(sk), info.tunnel_id);
703
- if (tunnel)
704
- drop_tunnel = true;
705
-
706
- /* Special case: create tunnel context if session_id and
707
- * peer_session_id is 0. Otherwise look up tunnel using supplied
708
- * tunnel id.
709
- */
710
- if (!info.session_id && !info.peer_session_id) {
711
- if (tunnel == NULL) {
712
- struct l2tp_tunnel_cfg tcfg = {
713
- .encap = L2TP_ENCAPTYPE_UDP,
714
- .debug = 0,
715
- };
716
-
717
- /* Prevent l2tp_tunnel_register() from trying to set up
718
- * a kernel socket.
719
- */
720
- if (info.fd < 0) {
721
- error = -EBADF;
722
- goto end;
723
- }
724
-
725
- error = l2tp_tunnel_create(sock_net(sk), info.fd,
726
- info.version,
727
- info.tunnel_id,
728
- info.peer_tunnel_id, &tcfg,
729
- &tunnel);
730
- if (error < 0)
731
- goto end;
732
-
733
- l2tp_tunnel_inc_refcount(tunnel);
734
- error = l2tp_tunnel_register(tunnel, sock_net(sk),
735
- &tcfg);
736
- if (error < 0) {
737
- kfree(tunnel);
738
- goto end;
739
- }
740
- drop_tunnel = true;
741
- new_tunnel = true;
742
- }
743
- } else {
744
- /* Error if we can't find the tunnel */
745
- error = -ENOENT;
746
- if (tunnel == NULL)
747
- goto end;
748
-
749
- /* Error if socket is not prepped */
750
- if (tunnel->sock == NULL)
751
- goto end;
752
- }
753753
754754 if (tunnel->peer_tunnel_id == 0)
755755 tunnel->peer_tunnel_id = info.peer_tunnel_id;
....@@ -807,8 +807,7 @@
807807 * the internal context for use by ioctl() and sockopt()
808808 * handlers.
809809 */
810
- if ((session->session_id == 0) &&
811
- (session->peer_session_id == 0)) {
810
+ if (session->session_id == 0 && session->peer_session_id == 0) {
812811 error = 0;
813812 goto out_no_ppp;
814813 }
....@@ -842,8 +841,6 @@
842841 drop_refcnt = false;
843842
844843 sk->sk_state = PPPOX_CONNECTED;
845
- l2tp_info(session, L2TP_MSG_CONTROL, "%s: created\n",
846
- session->name);
847844
848845 end:
849846 if (error) {
....@@ -854,8 +851,7 @@
854851 }
855852 if (drop_refcnt)
856853 l2tp_session_dec_refcount(session);
857
- if (drop_tunnel)
858
- l2tp_tunnel_dec_refcount(tunnel);
854
+ l2tp_tunnel_dec_refcount(tunnel);
859855 release_sock(sk);
860856
861857 return error;
....@@ -916,22 +912,23 @@
916912 struct pppol2tp_session *pls;
917913
918914 error = -ENOTCONN;
919
- if (sk == NULL)
915
+ if (!sk)
920916 goto end;
921917 if (!(sk->sk_state & PPPOX_CONNECTED))
922918 goto end;
923919
924920 error = -EBADF;
925921 session = pppol2tp_sock_to_session(sk);
926
- if (session == NULL)
922
+ if (!session)
927923 goto end;
928924
929925 pls = l2tp_session_priv(session);
930926 tunnel = session->tunnel;
931927
932928 inet = inet_sk(tunnel->sock);
933
- if ((tunnel->version == 2) && (tunnel->sock->sk_family == AF_INET)) {
929
+ if (tunnel->version == 2 && tunnel->sock->sk_family == AF_INET) {
934930 struct sockaddr_pppol2tp sp;
931
+
935932 len = sizeof(sp);
936933 memset(&sp, 0, len);
937934 sp.sa_family = AF_PPPOX;
....@@ -947,8 +944,7 @@
947944 sp.pppol2tp.addr.sin_addr.s_addr = inet->inet_daddr;
948945 memcpy(uaddr, &sp, len);
949946 #if IS_ENABLED(CONFIG_IPV6)
950
- } else if ((tunnel->version == 2) &&
951
- (tunnel->sock->sk_family == AF_INET6)) {
947
+ } else if (tunnel->version == 2 && tunnel->sock->sk_family == AF_INET6) {
952948 struct sockaddr_pppol2tpin6 sp;
953949
954950 len = sizeof(sp);
....@@ -966,8 +962,7 @@
966962 memcpy(&sp.pppol2tp.addr.sin6_addr, &tunnel->sock->sk_v6_daddr,
967963 sizeof(tunnel->sock->sk_v6_daddr));
968964 memcpy(uaddr, &sp, len);
969
- } else if ((tunnel->version == 3) &&
970
- (tunnel->sock->sk_family == AF_INET6)) {
965
+ } else if (tunnel->version == 3 && tunnel->sock->sk_family == AF_INET6) {
971966 struct sockaddr_pppol2tpv3in6 sp;
972967
973968 len = sizeof(sp);
....@@ -988,6 +983,7 @@
988983 #endif
989984 } else if (tunnel->version == 3) {
990985 struct sockaddr_pppol2tpv3 sp;
986
+
991987 len = sizeof(sp);
992988 memset(&sp, 0, len);
993989 sp.sa_family = AF_PPPOX;
....@@ -1070,7 +1066,6 @@
10701066 {
10711067 struct pppol2tp_ioc_stats stats;
10721068 struct l2tp_session *session;
1073
- int val;
10741069
10751070 switch (cmd) {
10761071 case PPPIOCGMRU:
....@@ -1078,6 +1073,9 @@
10781073 session = sock->sk->sk_user_data;
10791074 if (!session)
10801075 return -ENOTCONN;
1076
+
1077
+ if (WARN_ON(session->magic != L2TP_SESSION_MAGIC))
1078
+ return -EBADF;
10811079
10821080 /* Not defined for tunnels */
10831081 if (!session->session_id && !session->peer_session_id)
....@@ -1093,11 +1091,14 @@
10931091 if (!session)
10941092 return -ENOTCONN;
10951093
1094
+ if (WARN_ON(session->magic != L2TP_SESSION_MAGIC))
1095
+ return -EBADF;
1096
+
10961097 /* Not defined for tunnels */
10971098 if (!session->session_id && !session->peer_session_id)
10981099 return -ENOSYS;
10991100
1100
- if (get_user(val, (int __user *)arg))
1101
+ if (!access_ok((int __user *)arg, sizeof(int)))
11011102 return -EFAULT;
11021103 break;
11031104
....@@ -1105,6 +1106,9 @@
11051106 session = sock->sk->sk_user_data;
11061107 if (!session)
11071108 return -ENOTCONN;
1109
+
1110
+ if (WARN_ON(session->magic != L2TP_SESSION_MAGIC))
1111
+ return -EBADF;
11081112
11091113 /* Session 0 represents the parent tunnel */
11101114 if (!session->session_id && !session->peer_session_id) {
....@@ -1160,9 +1164,7 @@
11601164
11611165 switch (optname) {
11621166 case PPPOL2TP_SO_DEBUG:
1163
- tunnel->debug = val;
1164
- l2tp_info(tunnel, L2TP_MSG_CONTROL, "%s: set debug=%x\n",
1165
- tunnel->name, tunnel->debug);
1167
+ /* Tunnel debug flags option is deprecated */
11661168 break;
11671169
11681170 default:
....@@ -1183,18 +1185,15 @@
11831185
11841186 switch (optname) {
11851187 case PPPOL2TP_SO_RECVSEQ:
1186
- if ((val != 0) && (val != 1)) {
1188
+ if (val != 0 && val != 1) {
11871189 err = -EINVAL;
11881190 break;
11891191 }
11901192 session->recv_seq = !!val;
1191
- l2tp_info(session, L2TP_MSG_CONTROL,
1192
- "%s: set recv_seq=%d\n",
1193
- session->name, session->recv_seq);
11941193 break;
11951194
11961195 case PPPOL2TP_SO_SENDSEQ:
1197
- if ((val != 0) && (val != 1)) {
1196
+ if (val != 0 && val != 1) {
11981197 err = -EINVAL;
11991198 break;
12001199 }
....@@ -1206,33 +1205,22 @@
12061205 PPPOL2TP_L2TP_HDR_SIZE_NOSEQ;
12071206 }
12081207 l2tp_session_set_header_len(session, session->tunnel->version);
1209
- l2tp_info(session, L2TP_MSG_CONTROL,
1210
- "%s: set send_seq=%d\n",
1211
- session->name, session->send_seq);
12121208 break;
12131209
12141210 case PPPOL2TP_SO_LNSMODE:
1215
- if ((val != 0) && (val != 1)) {
1211
+ if (val != 0 && val != 1) {
12161212 err = -EINVAL;
12171213 break;
12181214 }
12191215 session->lns_mode = !!val;
1220
- l2tp_info(session, L2TP_MSG_CONTROL,
1221
- "%s: set lns_mode=%d\n",
1222
- session->name, session->lns_mode);
12231216 break;
12241217
12251218 case PPPOL2TP_SO_DEBUG:
1226
- session->debug = val;
1227
- l2tp_info(session, L2TP_MSG_CONTROL, "%s: set debug=%x\n",
1228
- session->name, session->debug);
1219
+ /* Session debug flags option is deprecated */
12291220 break;
12301221
12311222 case PPPOL2TP_SO_REORDERTO:
12321223 session->reorder_timeout = msecs_to_jiffies(val);
1233
- l2tp_info(session, L2TP_MSG_CONTROL,
1234
- "%s: set reorder_timeout=%d\n",
1235
- session->name, session->reorder_timeout);
12361224 break;
12371225
12381226 default:
....@@ -1249,7 +1237,7 @@
12491237 * session or the special tunnel type.
12501238 */
12511239 static int pppol2tp_setsockopt(struct socket *sock, int level, int optname,
1252
- char __user *optval, unsigned int optlen)
1240
+ sockptr_t optval, unsigned int optlen)
12531241 {
12541242 struct sock *sk = sock->sk;
12551243 struct l2tp_session *session;
....@@ -1263,23 +1251,22 @@
12631251 if (optlen < sizeof(int))
12641252 return -EINVAL;
12651253
1266
- if (get_user(val, (int __user *)optval))
1254
+ if (copy_from_sockptr(&val, optval, sizeof(int)))
12671255 return -EFAULT;
12681256
12691257 err = -ENOTCONN;
1270
- if (sk->sk_user_data == NULL)
1258
+ if (!sk->sk_user_data)
12711259 goto end;
12721260
12731261 /* Get session context from the socket */
12741262 err = -EBADF;
12751263 session = pppol2tp_sock_to_session(sk);
1276
- if (session == NULL)
1264
+ if (!session)
12771265 goto end;
12781266
12791267 /* Special case: if session_id == 0x0000, treat as operation on tunnel
12801268 */
1281
- if ((session->session_id == 0) &&
1282
- (session->peer_session_id == 0)) {
1269
+ if (session->session_id == 0 && session->peer_session_id == 0) {
12831270 tunnel = session->tunnel;
12841271 err = pppol2tp_tunnel_setsockopt(sk, tunnel, optname, val);
12851272 } else {
....@@ -1301,9 +1288,8 @@
13011288
13021289 switch (optname) {
13031290 case PPPOL2TP_SO_DEBUG:
1304
- *val = tunnel->debug;
1305
- l2tp_info(tunnel, L2TP_MSG_CONTROL, "%s: get debug=%x\n",
1306
- tunnel->name, tunnel->debug);
1291
+ /* Tunnel debug flags option is deprecated */
1292
+ *val = 0;
13071293 break;
13081294
13091295 default:
....@@ -1325,32 +1311,23 @@
13251311 switch (optname) {
13261312 case PPPOL2TP_SO_RECVSEQ:
13271313 *val = session->recv_seq;
1328
- l2tp_info(session, L2TP_MSG_CONTROL,
1329
- "%s: get recv_seq=%d\n", session->name, *val);
13301314 break;
13311315
13321316 case PPPOL2TP_SO_SENDSEQ:
13331317 *val = session->send_seq;
1334
- l2tp_info(session, L2TP_MSG_CONTROL,
1335
- "%s: get send_seq=%d\n", session->name, *val);
13361318 break;
13371319
13381320 case PPPOL2TP_SO_LNSMODE:
13391321 *val = session->lns_mode;
1340
- l2tp_info(session, L2TP_MSG_CONTROL,
1341
- "%s: get lns_mode=%d\n", session->name, *val);
13421322 break;
13431323
13441324 case PPPOL2TP_SO_DEBUG:
1345
- *val = session->debug;
1346
- l2tp_info(session, L2TP_MSG_CONTROL, "%s: get debug=%d\n",
1347
- session->name, *val);
1325
+ /* Session debug flags option is deprecated */
1326
+ *val = 0;
13481327 break;
13491328
13501329 case PPPOL2TP_SO_REORDERTO:
1351
- *val = (int) jiffies_to_msecs(session->reorder_timeout);
1352
- l2tp_info(session, L2TP_MSG_CONTROL,
1353
- "%s: get reorder_timeout=%d\n", session->name, *val);
1330
+ *val = (int)jiffies_to_msecs(session->reorder_timeout);
13541331 break;
13551332
13561333 default:
....@@ -1386,18 +1363,17 @@
13861363 return -EINVAL;
13871364
13881365 err = -ENOTCONN;
1389
- if (sk->sk_user_data == NULL)
1366
+ if (!sk->sk_user_data)
13901367 goto end;
13911368
13921369 /* Get the session context */
13931370 err = -EBADF;
13941371 session = pppol2tp_sock_to_session(sk);
1395
- if (session == NULL)
1372
+ if (!session)
13961373 goto end;
13971374
13981375 /* Special case: if session_id == 0x0000, treat as operation on tunnel */
1399
- if ((session->session_id == 0) &&
1400
- (session->peer_session_id == 0)) {
1376
+ if (session->session_id == 0 && session->peer_session_id == 0) {
14011377 tunnel = session->tunnel;
14021378 err = pppol2tp_tunnel_getsockopt(sk, tunnel, optname, &val);
14031379 if (err)
....@@ -1412,7 +1388,7 @@
14121388 if (put_user(len, optlen))
14131389 goto end_put_sess;
14141390
1415
- if (copy_to_user((void __user *) optval, &val, len))
1391
+ if (copy_to_user((void __user *)optval, &val, len))
14161392 goto end_put_sess;
14171393
14181394 err = 0;
....@@ -1468,7 +1444,7 @@
14681444 pd->session = l2tp_session_get_nth(pd->tunnel, pd->session_idx);
14691445 pd->session_idx++;
14701446
1471
- if (pd->session == NULL) {
1447
+ if (!pd->session) {
14721448 pd->session_idx = 0;
14731449 pppol2tp_next_tunnel(net, pd);
14741450 }
....@@ -1483,17 +1459,21 @@
14831459 if (!pos)
14841460 goto out;
14851461
1486
- BUG_ON(m->private == NULL);
1462
+ if (WARN_ON(!m->private)) {
1463
+ pd = NULL;
1464
+ goto out;
1465
+ }
1466
+
14871467 pd = m->private;
14881468 net = seq_file_net(m);
14891469
1490
- if (pd->tunnel == NULL)
1470
+ if (!pd->tunnel)
14911471 pppol2tp_next_tunnel(net, pd);
14921472 else
14931473 pppol2tp_next_session(net, pd);
14941474
14951475 /* NULL tunnel and session indicates end of list */
1496
- if ((pd->tunnel == NULL) && (pd->session == NULL))
1476
+ if (!pd->tunnel && !pd->session)
14971477 pd = NULL;
14981478
14991479 out:
....@@ -1535,7 +1515,7 @@
15351515 (tunnel == tunnel->sock->sk_user_data) ? 'Y' : 'N',
15361516 refcount_read(&tunnel->ref_count) - 1);
15371517 seq_printf(m, " %08x %ld/%ld/%ld %ld/%ld/%ld\n",
1538
- tunnel->debug,
1518
+ 0,
15391519 atomic_long_read(&tunnel->stats.tx_packets),
15401520 atomic_long_read(&tunnel->stats.tx_bytes),
15411521 atomic_long_read(&tunnel->stats.tx_errors),
....@@ -1556,6 +1536,7 @@
15561536
15571537 if (tunnel->sock) {
15581538 struct inet_sock *inet = inet_sk(tunnel->sock);
1539
+
15591540 ip = ntohl(inet->inet_saddr);
15601541 port = ntohs(inet->inet_sport);
15611542 }
....@@ -1569,8 +1550,7 @@
15691550 user_data_ok = 'N';
15701551 }
15711552
1572
- seq_printf(m, " SESSION '%s' %08X/%d %04X/%04X -> "
1573
- "%04X/%04X %d %c\n",
1553
+ seq_printf(m, " SESSION '%s' %08X/%d %04X/%04X -> %04X/%04X %d %c\n",
15741554 session->name, ip, port,
15751555 tunnel->tunnel_id,
15761556 session->session_id,
....@@ -1581,7 +1561,7 @@
15811561 session->recv_seq ? 'R' : '-',
15821562 session->send_seq ? 'S' : '-',
15831563 session->lns_mode ? "LNS" : "LAC",
1584
- session->debug,
1564
+ 0,
15851565 jiffies_to_msecs(session->reorder_timeout));
15861566 seq_printf(m, " %hu/%hu %ld/%ld/%ld %ld/%ld/%ld\n",
15871567 session->nr, session->ns,
....@@ -1609,8 +1589,7 @@
16091589 seq_puts(m, "PPPoL2TP driver info, " PPPOL2TP_DRV_VERSION "\n");
16101590 seq_puts(m, "TUNNEL name, user-data-ok session-count\n");
16111591 seq_puts(m, " debug tx-pkts/bytes/errs rx-pkts/bytes/errs\n");
1612
- seq_puts(m, " SESSION name, addr/port src-tid/sid "
1613
- "dest-tid/sid state user-data-ok\n");
1592
+ seq_puts(m, " SESSION name, addr/port src-tid/sid dest-tid/sid state user-data-ok\n");
16141593 seq_puts(m, " mtu/mru/rcvseq/sendseq/lns debug reorderto\n");
16151594 seq_puts(m, " nr/ns tx-pkts/bytes/errs rx-pkts/bytes/errs\n");
16161595 goto out;
....@@ -1643,7 +1622,7 @@
16431622 int err = 0;
16441623
16451624 pde = proc_create_net("pppol2tp", 0444, net->proc_net,
1646
- &pppol2tp_seq_ops, sizeof(struct pppol2tp_seq_data));
1625
+ &pppol2tp_seq_ops, sizeof(struct pppol2tp_seq_data));
16471626 if (!pde) {
16481627 err = -ENOMEM;
16491628 goto out;