Xin Long
7de5d0c7e7
tipc: add NULL pointer check before calling kfree_rcu
...
[ Upstream commit 42dec1dbe3
]
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-19 09:08:02 +02:00
..
2016-07-26 14:26:42 -07:00
2017-10-08 21:13:23 -07:00
2017-01-20 12:10:17 -05:00
2018-03-03 10:24:30 +01:00
2017-09-01 17:42:05 -07:00
2019-07-03 13:16:02 +02:00
2016-11-18 10:59:15 -05:00
2017-01-16 13:31:53 -05:00
2017-08-21 13:37:45 -07:00
2016-09-02 17:10:24 -07:00
2017-11-02 11:10:55 +01:00
2018-06-21 04:02:43 +09:00
2016-07-26 14:26:42 -07:00
2017-10-08 21:13:23 -07:00
2017-01-20 12:10:17 -05:00
2019-09-19 09:08:02 +02:00
2017-03-28 18:03:33 -07:00
2017-01-20 12:10:16 -05:00
2017-04-13 13:58:22 -04:00
2016-08-18 23:36:07 -07:00
2019-08-09 17:53:35 +02:00
2018-04-29 11:33:12 +02:00
2016-07-26 14:26:42 -07:00
2018-06-21 04:02:56 +09:00
2017-01-20 12:10:17 -05:00
2017-12-17 15:07:56 +01:00
2019-05-16 19:42:35 +02:00
2016-05-03 15:51:16 -04:00
2019-06-09 09:18:12 +02:00
2019-06-09 09:18:12 +02:00
2019-07-03 13:16:03 +02:00
2016-08-26 21:38:41 -07:00