afs: Check for fatal error when in waiting for ack state
authorDavid Howells <dhowells@redhat.com>
Thu, 6 Oct 2016 07:11:50 +0000 (08:11 +0100)
committerDavid Howells <dhowells@redhat.com>
Thu, 6 Oct 2016 07:11:50 +0000 (08:11 +0100)
When it's in the waiting-for-ACK state, the AFS filesystem needs to check
the result of rxrpc_kernel_recv_data() any time it is notified to see if it
is indicating a fatal error.  If this is the case, it needs to mark the
call completed otherwise the call just sits there and never goes away.

Signed-off-by: David Howells <dhowells@redhat.com>
fs/afs/rxrpc.c

index 59bdaa7527b650736aee94832285ebf95d81f422..477928b259400a33bef35b0ab40608eba6d8b4e5 100644 (file)
@@ -418,7 +418,7 @@ static void afs_deliver_to_call(struct afs_call *call)
                                                     &call->abort_code);
                        if (ret == -EINPROGRESS || ret == -EAGAIN)
                                return;
-                       if (ret == 1) {
+                       if (ret == 1 || ret < 0) {
                                call->state = AFS_CALL_COMPLETE;
                                goto done;
                        }