rxrpc: Fix life check
authorDavid Howells <dhowells@redhat.com>
Mon, 12 Nov 2018 22:33:22 +0000 (22:33 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 15 Nov 2018 19:35:40 +0000 (11:35 -0800)
commit7150ceaacb27f7b3bf494e72cd4be4e11612dfff
treecdb1fb191dc649c0f1563045fe17ef0630690b2c
parentebcd210e93b2a984b7a7b82d45f7f0d21b7ec2d2
rxrpc: Fix life check

The life-checking function, which is used by kAFS to make sure that a call
is still live in the event of a pending signal, only samples the received
packet serial number counter; it doesn't actually provoke a change in the
counter, rather relying on the server to happen to give us a packet in the
time window.

Fix this by adding a function to force a ping to be transmitted.

kAFS then keeps track of whether there's been a stall, and if so, uses the
new function to ping the server, resetting the timeout to allow the reply
to come back.

If there's a stall, a ping and the call is *still* stalled in the same
place after another period, then the call will be aborted.

Fixes: bc5e3a546d55 ("rxrpc: Use MSG_WAITALL to tell sendmsg() to temporarily ignore signals")
Fixes: f4d15fb6f99a ("rxrpc: Provide functions for allowing cleaner handling of signals")
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/networking/rxrpc.txt
fs/afs/rxrpc.c
include/net/af_rxrpc.h
include/trace/events/rxrpc.h
net/rxrpc/af_rxrpc.c