diff options
| author | David S. Miller <davem@davemloft.net> | 2018-04-24 23:59:11 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2018-04-24 23:59:11 -0400 |
| commit | c749fa181bd5848be78691d23168ec61ce691b95 (patch) | |
| tree | d037dc016bd880d9d5b393a30f3907ef5e98124d /net/l2tp | |
| parent | 16f4faa4f06ff3b4e214922d55ac33ab6e2bdbdc (diff) | |
| parent | 3be4aaf4e2d3eb95cce7835e8df797ae65ae5ac1 (diff) | |
| download | blackbird-op-linux-c749fa181bd5848be78691d23168ec61ce691b95.tar.gz blackbird-op-linux-c749fa181bd5848be78691d23168ec61ce691b95.zip | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'net/l2tp')
| -rw-r--r-- | net/l2tp/l2tp_debugfs.c | 5 | ||||
| -rw-r--r-- | net/l2tp/l2tp_ppp.c | 12 |
2 files changed, 15 insertions, 2 deletions
diff --git a/net/l2tp/l2tp_debugfs.c b/net/l2tp/l2tp_debugfs.c index b8f9d45bfeb1..7f1e842ef05a 100644 --- a/net/l2tp/l2tp_debugfs.c +++ b/net/l2tp/l2tp_debugfs.c @@ -106,8 +106,11 @@ static void l2tp_dfs_seq_stop(struct seq_file *p, void *v) return; /* Drop reference taken by last invocation of l2tp_dfs_next_tunnel() */ - if (pd->tunnel) + if (pd->tunnel) { l2tp_tunnel_dec_refcount(pd->tunnel); + pd->tunnel = NULL; + pd->session = NULL; + } } static void l2tp_dfs_seq_tunnel_show(struct seq_file *m, void *v) diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c index 7d0c963680e6..1fd9e145076a 100644 --- a/net/l2tp/l2tp_ppp.c +++ b/net/l2tp/l2tp_ppp.c @@ -619,6 +619,13 @@ static int pppol2tp_connect(struct socket *sock, struct sockaddr *uservaddr, lock_sock(sk); error = -EINVAL; + + if (sockaddr_len != sizeof(struct sockaddr_pppol2tp) && + sockaddr_len != sizeof(struct sockaddr_pppol2tpv3) && + sockaddr_len != sizeof(struct sockaddr_pppol2tpin6) && + sockaddr_len != sizeof(struct sockaddr_pppol2tpv3in6)) + goto end; + if (sp->sa_protocol != PX_PROTO_OL2TP) goto end; @@ -1618,8 +1625,11 @@ static void pppol2tp_seq_stop(struct seq_file *p, void *v) return; /* Drop reference taken by last invocation of pppol2tp_next_tunnel() */ - if (pd->tunnel) + if (pd->tunnel) { l2tp_tunnel_dec_refcount(pd->tunnel); + pd->tunnel = NULL; + pd->session = NULL; + } } static void pppol2tp_seq_tunnel_show(struct seq_file *m, void *v) |

