linux/net
David Howells 0f51165c22 rxrpc: Fix service call disconnection
[ Upstream commit b39a934ec7 ]

The recent patch that substituted a flag on an rxrpc_call for the
connection pointer being NULL as an indication that a call was disconnected
puts the set_bit in the wrong place for service calls.  This is only a
problem if a call is implicitly terminated by a new call coming in on the
same connection channel instead of a terminating ACK packet.

In such a case, rxrpc_input_implicit_end_call() calls
__rxrpc_disconnect_call(), which is now (incorrectly) setting the
disconnection bit, meaning that when rxrpc_release_call() is later called,
it doesn't call rxrpc_disconnect_call() and so the call isn't removed from
the peer's error distribution list and the list gets corrupted.

KASAN finds the issue as an access after release on a call, but the
position at which it occurs is confusing as it appears to be related to a
different call (the call site is where the latter call is being removed
from the error distribution list and either the next or pprev pointer
points to a previously released call).

Fix this by moving the setting of the flag from __rxrpc_disconnect_call()
to rxrpc_disconnect_call() in the same place that the connection pointer
was being cleared.

Fixes: 5273a191dc ("rxrpc: Fix NULL pointer deref due to call->conn being cleared on disconnect")
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-02-11 04:35:55 -08:00
..
6lowpan
9p
802
8021q vlan: vlan_changelink() should propagate errors 2020-01-12 12:21:50 +01:00
appletalk
atm
ax25
batman-adv batman-adv: Fix DAT candidate selection on little endian systems 2020-01-23 08:22:49 +01:00
bluetooth Bluetooth: Fix race condition in hci_release_sock() 2020-02-05 21:22:42 +00:00
bpf
bpfilter
bridge
caif
can
ceph
core drop_monitor: Do not cancel uninitialized work item 2020-02-11 04:35:51 -08:00
dcb
dccp
decnet
dns_resolver
dsa net: dsa: tag_gswip: fix typo in tagger name 2020-01-23 08:22:52 +01:00
ethernet
hsr net: hsr: fix possible NULL deref in hsr_handle_frame() 2020-02-11 04:35:04 -08:00
ieee802154
ife
ipv4 tcp: clear tp->segs_{in|out} in tcp_disconnect() 2020-02-11 04:35:06 -08:00
ipv6 ipv6/addrconf: fix potential NULL deref in inet6_set_link_af() 2020-02-11 04:35:51 -08:00
iucv
kcm
key
l2tp l2tp: Allow duplicate session creation with UDP 2020-02-11 04:35:04 -08:00
l3mdev
lapb
llc llc2: Fix return statement of llc_stat_ev_rx_null_dsap_xid_c (and _test_c) 2020-01-12 12:21:45 +01:00
mac80211 mac80211: Fix TKIP replay protection immediately after key setup 2020-02-05 21:22:46 +00:00
mac802154
mpls
ncsi
netfilter netfilter: ipset: fix suspicious RCU usage in find_set_and_id 2020-02-11 04:35:07 -08:00
netlabel
netlink
netrom
nfc
nsh
openvswitch net: openvswitch: don't unlock mutex when changing the user_features fails 2020-01-26 10:01:05 +01:00
packet packet: fix data-race in fanout_flow_is_huge() 2020-01-26 10:01:06 +01:00
phonet
psample
qrtr
rds
rfkill rfkill: Fix incorrect check to avoid NULL pointer dereference 2020-01-12 12:21:33 +01:00
rose
rxrpc rxrpc: Fix service call disconnection 2020-02-11 04:35:55 -08:00
sched taprio: Fix dropping packets when using taprio + ETF offloading 2020-02-11 04:35:51 -08:00
sctp sctp: free cmd->obj.chunk for the unprocessed SCTP_CMD_REPLY 2020-01-12 12:21:48 +01:00
smc
strparser
sunrpc sunrpc: expiry_time should be seconds not timeval 2020-02-11 04:35:35 -08:00
switchdev
tipc tipc: fix wrong timeout input for tipc_wait_for_cond() 2020-01-26 10:01:00 +01:00
tls net/tls: fix async operation 2020-01-29 16:45:28 +01:00
unix af_unix: add compat_ioctl support 2020-01-17 19:48:52 +01:00
vmw_vsock
wimax
wireless wireless: wext: avoid gcc -O3 warning 2020-02-05 21:22:47 +00:00
x25 net/x25: fix nonblocking connect 2020-01-29 16:45:33 +01:00
xdp xsk: Add rcu_read_lock around the XSK wakeup 2020-01-12 12:21:41 +01:00
xfrm xfrm: interface: do not confirm neighbor when do pmtu update 2020-02-05 21:22:48 +00:00
Kconfig
Makefile
compat.c
socket.c compat_ioctl: handle SIOCOUTQNSD 2020-01-17 19:48:52 +01:00
sysctl_net.c