linux-uconsole/drivers/net/ppp
WANG Cong 0e1b4ef27e UPSTREAM: ppp: defer netns reference release for ppp channel
(cherry pick from commit 205e1e255c)

Matt reported that we have a NULL pointer dereference
in ppp_pernet() from ppp_connect_channel(),
i.e. pch->chan_net is NULL.

This is due to that a parallel ppp_unregister_channel()
could happen while we are in ppp_connect_channel(), during
which pch->chan_net set to NULL. Since we need a reference
to net per channel, it makes sense to sync the refcnt
with the life time of the channel, therefore we should
release this reference when we destroy it.

Fixes: 1f461dcdd2 ("ppp: take reference on channels netns")
Reported-by: Matt Bennett <Matt.Bennett@alliedtelesis.co.nz>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linux-ppp@vger.kernel.org
Cc: Guillaume Nault <g.nault@alphalink.fr>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Reviewed-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

Fixes: Change-Id: Iee0015eca5bd181954bb4896a3720f7549c5ed0b ("UPSTREAM:
ppp: take reference on channels netns")
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Change-Id: I24d0bb6f349ab3829f63cfe935ed97b6913a3508
2016-08-18 18:56:03 +05:30
..
bsd_comp.c
Kconfig net: ppp: Fix modular build for PPPOLAC and PPPOPNS 2016-04-07 16:49:56 +05:30
Makefile net: add PPP on PPTP Network Server (PPPoPNS) driver. 2016-02-16 13:51:18 -08:00
ppp_async.c tty: Fix recursive deadlock in tty_perform_flush() 2013-03-18 16:52:24 -07:00
ppp_deflate.c ppp: deflate: never return len larger than output buffer 2015-01-29 14:50:01 -08:00
ppp_generic.c UPSTREAM: ppp: defer netns reference release for ppp channel 2016-08-18 18:56:03 +05:30
ppp_mppe.c ppp: mppe: discard late packet in stateless mode 2015-04-26 23:25:13 -04:00
ppp_mppe.h
ppp_synctty.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-05-01 14:08:52 -07:00
pppoe.c pppoe: fix reference counting in PPPoE proxy 2016-03-03 15:07:07 -08:00
pppolac.c net: pppolac/pppopns: Replace msg.msg_iov with iov_iter_kvec() 2016-04-07 16:49:56 +05:30
pppopns.c net: pppolac/pppopns: Replace msg.msg_iov with iov_iter_kvec() 2016-04-07 16:49:56 +05:30
pppox.c net: Pass kern from net_proto_family.create to sk_alloc 2015-05-11 10:50:17 -04:00
pptp.c pptp: fix illegal memory access caused by multiple bind()s 2016-03-03 15:07:04 -08:00