mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-26 18:43:33 -05:00
e122d845a0
The changes introduced to allow rxrpc calls to be retried creates an issue
when it comes to refcounting afs_call structs. The problem is that when
rxrpc_send_data() queues the last packet for an asynchronous call, the
following sequence can occur:
(1) The notify_end_tx callback is invoked which causes the state in the
afs_call to be changed from AFS_CALL_CL_REQUESTING or
AFS_CALL_SV_REPLYING.
(2) afs_deliver_to_call() can then process event notifications from rxrpc
on the async_work queue.
(3) Delivery of events, such as an abort from the server, can cause the
afs_call state to be changed to AFS_CALL_COMPLETE on async_work.
(4) For an asynchronous call, afs_process_async_call() notes that the call
is complete and tried to clean up all the refs on async_work.
(5) rxrpc_send_data() might return the amount of data transferred
(success) or an error - which could in turn reflect a local error or a
received error.
Synchronising the clean up after rxrpc_kernel_send_data() returns an error
with the asynchronous cleanup is then tricky to get right.
Mostly revert commit
|
||
---|---|---|
.. | ||
caif | ||
device_drivers | ||
dsa | ||
mac80211_hwsim | ||
6lowpan.txt | ||
6pack.txt | ||
af_xdp.rst | ||
alias.rst | ||
altera_tse.txt | ||
arcnet-hardware.txt | ||
arcnet.txt | ||
atm.txt | ||
ax25.txt | ||
batman-adv.rst | ||
baycom.txt | ||
bonding.txt | ||
bridge.rst | ||
can.rst | ||
can_ucan_protocol.rst | ||
cdc_mbim.txt | ||
checksum-offloads.txt | ||
conf.py | ||
cops.txt | ||
cxacru-cf.py | ||
cxacru.txt | ||
dccp.txt | ||
dctcp.txt | ||
decnet.txt | ||
defza.txt | ||
devlink-params-bnxt.txt | ||
devlink-params.txt | ||
dns_resolver.txt | ||
driver.txt | ||
eql.txt | ||
failover.rst | ||
fib_trie.txt | ||
filter.txt | ||
fore200e.txt | ||
framerelay.txt | ||
gen_stats.txt | ||
generic-hdlc.txt | ||
generic_netlink.txt | ||
gtp.txt | ||
hinic.txt | ||
ieee802154.txt | ||
ila.txt | ||
index.rst | ||
ip-sysctl.txt | ||
ip_dynaddr.txt | ||
ipddp.txt | ||
iphase.txt | ||
ipsec.txt | ||
ipv6.txt | ||
ipvlan.txt | ||
ipvs-sysctl.txt | ||
kapi.rst | ||
kcm.txt | ||
l2tp.txt | ||
lapb-module.txt | ||
ltpc.txt | ||
mac80211-auth-assoc-deauth.txt | ||
mac80211-injection.txt | ||
mpls-sysctl.txt | ||
msg_zerocopy.rst | ||
multiqueue.txt | ||
net_dim.txt | ||
net_failover.rst | ||
netconsole.txt | ||
netdev-FAQ.rst | ||
netdev-features.txt | ||
netdevices.txt | ||
netfilter-sysctl.txt | ||
netif-msg.txt | ||
nf_conntrack-sysctl.txt | ||
nf_flowtable.txt | ||
nfc.txt | ||
openvswitch.txt | ||
operstates.txt | ||
packet_mmap.txt | ||
phonet.txt | ||
phy.txt | ||
pktgen.txt | ||
PLIP.txt | ||
ppp_generic.txt | ||
proc_net_tcp.txt | ||
radiotap-headers.txt | ||
ray_cs.txt | ||
rds.txt | ||
regulatory.txt | ||
rxrpc.txt | ||
scaling.txt | ||
sctp.txt | ||
secid.txt | ||
seg6-sysctl.txt | ||
segmentation-offloads.txt | ||
skfp.txt | ||
snmp_counter.rst | ||
strparser.txt | ||
switchdev.txt | ||
tc-actions-env-rules.txt | ||
tcp-thin.txt | ||
team.txt | ||
timestamping.txt | ||
tls.txt | ||
tproxy.txt | ||
tuntap.txt | ||
udplite.txt | ||
vrf.txt | ||
vxlan.txt | ||
x25-iface.txt | ||
x25.txt | ||
xfrm_device.txt | ||
xfrm_proc.txt | ||
xfrm_sync.txt | ||
xfrm_sysctl.txt | ||
z8530book.rst | ||
z8530drv.txt |