]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commitdd0d6dd4bbd3f26efc39f6fa957c95f4eaa6c0c9
treecdb1fb191dc649c0f1563045fe17ef0630690b2c
parente962e30e1ebe480f746c472627cc78d92c3a8a3a
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: 8d0c6fe295af ("rxrpc: Use MSG_WAITALL to tell sendmsg() to temporarily ignore signals")
Fixes: ba2c2c768647 ("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