android_kernel_oneplus_msm8998/net/tipc
Xin Long b9eeaa30e4 tipc: add NULL pointer check before calling kfree_rcu
[ Upstream commit 42dec1dbe38239cf91cc1f4df7830c66276ced37 ]

Unlike kfree(p), kfree_rcu(p, rcu) won't do NULL pointer check. When
tipc_nametbl_remove_publ returns NULL, the panic below happens:

   BUG: unable to handle kernel NULL pointer dereference at 0000000000000068
   RIP: 0010:__call_rcu+0x1d/0x290
   Call Trace:
    <IRQ>
    tipc_publ_notify+0xa9/0x170 [tipc]
    tipc_node_write_unlock+0x8d/0x100 [tipc]
    tipc_node_link_down+0xae/0x1d0 [tipc]
    tipc_node_check_dest+0x3ea/0x8f0 [tipc]
    ? tipc_disc_rcv+0x2c7/0x430 [tipc]
    tipc_disc_rcv+0x2c7/0x430 [tipc]
    ? tipc_rcv+0x6bb/0xf20 [tipc]
    tipc_rcv+0x6bb/0xf20 [tipc]
    ? ip_route_input_slow+0x9cf/0xb10
    tipc_udp_recv+0x195/0x1e0 [tipc]
    ? tipc_udp_is_known_peer+0x80/0x80 [tipc]
    udp_queue_rcv_skb+0x180/0x460
    udp_unicast_rcv_skb.isra.56+0x75/0x90
    __udp4_lib_rcv+0x4ce/0xb90
    ip_local_deliver_finish+0x11c/0x210
    ip_local_deliver+0x6b/0xe0
    ? ip_rcv_finish+0xa9/0x410
    ip_rcv+0x273/0x362

Fixes: 97ede29e80 ("tipc: convert name table read-write lock to RCU")
Reported-by: Li Shuang <shuali@redhat.com>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-09-21 07:12:41 +02:00
..
addr.c
addr.h
bcast.c
bcast.h
bearer.c
bearer.h
core.c tipc: change to use register_pernet_device 2019-07-10 09:56:37 +02:00
core.h
discover.c
discover.h
eth_media.c
ib_media.c
Kconfig
link.c
link.h
Makefile
msg.c
msg.h
name_distr.c tipc: add NULL pointer check before calling kfree_rcu 2019-09-21 07:12:41 +02:00
name_distr.h
name_table.c
name_table.h
net.c
net.h
netlink.c
netlink.h
netlink_compat.c tipc: compat: allow tipc commands without arguments 2019-08-11 12:20:45 +02:00
node.c
node.h
server.c
server.h
socket.c
socket.h
subscr.c tipc: fix modprobe tipc failed after switch order of device registration -v2 2019-06-11 12:24:07 +02:00
subscr.h tipc: fix modprobe tipc failed after switch order of device registration -v2 2019-06-11 12:24:07 +02:00
sysctl.c
udp_media.c