David Howells
e122d845a0
Revert "rxrpc: Allow failed client calls to be retried"
...
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 c038a58ccf . The two API
functions the original commit added aren't currently used. This makes
rxrpc_kernel_send_data() always return successfully if it queued the data
it was given.
Note that this doesn't affect synchronous calls since their Rx notification
function merely pokes a wait queue and does not refcounting. The
asynchronous call notification function *has* to do refcounting and pass a
ref over the work item to avoid the need to sync the workqueue in call
cleanup.
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-01-15 21:33:36 -08:00
..
9p
bluetooth
caif
iucv
netfilter
netfilter: nft_flow_offload: fix interaction with vrf slave device
2019-01-11 00:55:37 +01:00
netns
Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next
2018-12-20 18:20:26 -08:00
nfc
phonet
sctp
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2018-12-09 21:43:31 -08:00
tc_act
6lowpan.h
act_api.h
net/sched: Remove egdev mechanism
2018-12-10 15:54:34 -08:00
addrconf.h
net/ipv6: Add anycast addresses to a global hashtable
2018-11-02 23:54:56 -07:00
af_ieee802154.h
af_rxrpc.h
Revert "rxrpc: Allow failed client calls to be retried"
2019-01-15 21:33:36 -08:00
af_unix.h
net: drop a space before tabs
2018-10-31 12:37:12 -07:00
af_vsock.h
ah.h
arp.h
atmclip.h
ax25.h
ax88796.h
bond_3ad.h
bond_alb.h
bond_options.h
bonding.h
busy_poll.h
calipso.h
cfg80211-wext.h
cfg80211.h
cfg80211: clarify LCI/civic location documentation
2018-12-18 13:15:04 +01:00
cfg802154.h
checksum.h
Remove 'type' argument from access_ok() function
2019-01-03 18:57:57 -08:00
cipso_ipv4.h
cls_cgroup.h
codel.h
codel_impl.h
codel_qdisc.h
compat.h
datalink.h
dcbevent.h
dcbnl.h
devlink.h
devlink: Add 'fw_load_policy' generic parameter
2018-12-03 13:55:43 -08:00
dn.h
dn_dev.h
dn_fib.h
dn_neigh.h
dn_nsp.h
dn_route.h
dsa.h
net: dsa: ksz: Rename NET_DSA_TAG_KSZ to _KSZ9477
2018-12-16 14:23:33 -08:00
dsfield.h
dst.h
dst_cache.h
dst_metadata.h
dst_ops.h
erspan.h
esp.h
ethoc.h
failover.h
fib_notifier.h
fib_rules.h
firewire.h
flow.h
net: reorder flowi_common fields to avoid holes
2018-11-30 17:12:39 -08:00
flow_dissector.h
net/flow_dissector: correct comments on enum flow_dissector_key_id
2018-11-30 13:21:52 -08:00
fou.h
fq.h
fq_impl.h
garp.h
gen_stats.h
net: align gnet_stats_basic_cpu struct
2018-11-17 21:37:29 -08:00
genetlink.h
geneve.h
net: add netif_is_geneve()
2018-11-07 23:00:23 -08:00
gre.h
net: Add netif_is_gretap()/netif_is_ip6gretap()
2018-12-10 15:53:04 -08:00
gro_cells.h
gtp.h
gue.h
hwbm.h
icmp.h
net: Convert protocol error handlers from void to int
2018-11-08 17:13:08 -08:00
ieee80211_radiotap.h
ieee802154_netdev.h
if_inet6.h
net/ipv6: Add anycast addresses to a global hashtable
2018-11-02 23:54:56 -07:00
ife.h
ila.h
inet6_connection_sock.h
inet6_hashtables.h
net: allow binding socket in a VRF when there's an unbound socket
2018-11-07 16:12:38 -08:00
inet_common.h
net: use indirect call wrappers at GRO transport layer
2018-12-15 13:23:02 -08:00
inet_connection_sock.h
inet_ecn.h
inet_frag.h
inet_hashtables.h
net: dccp: fix kernel crash on module load
2018-12-24 15:27:56 -08:00
inet_sock.h
net: ensure unbound stream socket to be chosen when not in a VRF
2018-11-07 16:12:38 -08:00
inet_timewait_sock.h
inetpeer.h
ip.h
ip: factor out protocol delivery helper
2018-11-07 16:23:05 -08:00
ip6_checksum.h
ip6_fib.h
ip6_route.h
ip6_tunnel.h
udp: Support for error handlers of tunnels with arbitrary destination port
2018-11-08 17:13:08 -08:00
ip_fib.h
net: ipv4: Fix memory leak in network namespace dismantle
2019-01-15 13:33:44 -08:00
ip_tunnels.h
ip: validate header length on virtual device xmit
2019-01-01 12:05:02 -08:00
ip_vs.h
ipcomp.h
ipconfig.h
ipv6.h
ipv6: factor out protocol delivery helper
2018-11-07 16:23:05 -08:00
ipv6_frag.h
ipx.h
iw_handler.h
kcm.h
l3mdev.h
l3mdev: add function to retreive upper master
2018-12-03 14:15:26 -08:00
lag.h
lapb.h
lib80211.h
llc.h
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
llc_if.h
llc_pdu.h
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
lwtunnel.h
mac80211.h
mac80211: propagate the support for TWT to the driver
2018-12-18 14:18:49 +01:00
mac802154.h
mip6.h
mld.h
mpls.h
mpls_iptunnel.h
mrp.h
ncsi.h
ndisc.h
neighbour.h
neighbour: register rtnl doit handler
2018-12-19 13:37:34 -08:00
net_failover.h
net_namespace.h
net_ratelimit.h
netevent.h
netlabel.h
netlink.h
netprio_cgroup.h
netrom.h
nexthop.h
nl802154.h
nsh.h
p8022.h
page_pool.h
ping.h
pkt_cls.h
net_sched: fold tcf_block_cb_call() into tc_setup_cb_call()
2018-12-14 15:32:19 -08:00
pkt_sched.h
pptp.h
protocol.h
net: Convert protocol error handlers from void to int
2018-11-08 17:13:08 -08:00
psample.h
psnap.h
raw.h
net: fix raw socket lookup device bind matching with VRFs
2018-11-07 16:12:39 -08:00
rawv6.h
red.h
regulatory.h
request_sock.h
rose.h
route.h
rsi_91x.h
rtnetlink.h
net: Add extack argument to rtnl_create_link
2018-11-06 15:00:45 -08:00
sch_generic.h
net: sched: register callbacks for indirect tc block binds
2018-11-11 09:54:52 -08:00
scm.h
secure_seq.h
seg6.h
net: seg6.h: remove an unused #include
2018-12-20 16:56:04 -08:00
seg6_hmac.h
seg6_local.h
slhc_vj.h
smc.h
snmp.h
sock.h
sock: Make sock->sk_stamp thread-safe
2019-01-01 09:47:59 -08:00
sock_reuseport.h
Space.h
stp.h
strparser.h
switchdev.h
net: switchdev: Add extack to switchdev_handle_port_obj_add() callback
2018-12-12 16:34:22 -08:00
tcp.h
tcp: reduce POLLOUT events caused by TCP_NOTSENT_LOWAT
2018-12-04 21:21:18 -08:00
tcp_states.h
timewait_sock.h
tipc.h
tls.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next
2018-12-20 17:31:36 -08:00
transp_v6.h
tso.h
tun_proto.h
udp.h
net: Convert protocol error handlers from void to int
2018-11-08 17:13:08 -08:00
udp_tunnel.h
udp_tunnel: add config option to bind to a device
2018-12-03 14:15:26 -08:00
udplite.h
vsock_addr.h
vxlan.h
vxlan: Add vxlan_fdb_clear_offload()
2018-12-07 12:59:08 -08:00
wext.h
wimax.h
x25.h
x25device.h
xdp.h
xdp_sock.h
xfrm.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2018-12-20 11:53:36 -08:00