linux-sg2042/fs/afs
David Howells 4ac15ea536 afs: Handle EIO from delivery function
Fix afs_deliver_to_call() to handle -EIO being returned by the operation
delivery function, indicating that the call found itself in the wrong
state, by printing an error and aborting the call.

Currently, an assertion failure will occur.  This can happen, say, if the
delivery function falls off the end without calling afs_extract_data() with
the want_more parameter set to false to collect the end of the Rx phase of
a call.

The assertion failure looks like:

	AFS: Assertion failed
	4 == 7 is false
	0x4 == 0x7 is false
	------------[ cut here ]------------
	kernel BUG at fs/afs/rxrpc.c:462!

and is matched in the trace buffer by a line like:

kworker/7:3-3226 [007] ...1 85158.030203: afs_io_error: c=0003be0c r=-5 CM_REPLY

Fixes: 98bf40cd99 ("afs: Protect call->state changes against signals")
Reported-by: Marc Dionne <marc.dionne@auristor.com>
Signed-off-by: David Howells <dhowells@redhat.com>
2018-10-24 00:41:07 +01:00
..
Kconfig fs/afs: remove depends on CONFIG_EXPERIMENTAL 2013-01-21 14:39:04 -08:00
Makefile afs: Implement VL server rotation 2018-10-24 00:41:07 +01:00
addr_list.c afs: Implement VL server rotation 2018-10-24 00:41:07 +01:00
afs.h afs: Rearrange status mapping 2018-04-09 21:53:59 +01:00
afs_cm.h afs: support the CB.ProbeUuid RPC op 2008-04-29 08:06:26 -07:00
afs_fs.h afs: Prospectively look up extra files when doing a single lookup 2018-04-09 21:12:31 +01:00
afs_vl.h afs: Make use of the YFS service upgrade to fully support IPv6 2017-11-13 15:38:19 +00:00
cache.c fscache: Pass object size in rather than calling back for it 2018-04-06 14:05:14 +01:00
callback.c afs: Optimise callback breaking by not repeating volume lookup 2018-06-15 15:27:09 +01:00
cell.c afs: Fix TTL on VL server and address lists 2018-10-24 00:41:07 +01:00
cmservice.c afs: Set up the iov_iter before calling afs_extract_data() 2018-10-24 00:41:07 +01:00
dir.c afs_try_auto_mntpt(): return NULL instead of ERR_PTR(-ENOENT) 2018-08-05 15:50:59 -04:00
dir_edit.c afs: Locally edit directory data for mkdir/create/unlink/... 2018-04-09 21:54:48 +01:00
dynroot.c afs: Implement VL server rotation 2018-10-24 00:41:07 +01:00
file.c afs: Fix whole-volume callback handling 2018-05-14 15:15:18 +01:00
flock.c afs: Fix whole-volume callback handling 2018-05-14 15:15:18 +01:00
fsclient.c afs: Set up the iov_iter before calling afs_extract_data() 2018-10-24 00:41:07 +01:00
inode.c afs: Better tracing of protocol errors 2018-10-24 00:41:07 +01:00
internal.h afs: Implement VL server rotation 2018-10-24 00:41:07 +01:00
main.c afs: Fix cell proc list 2018-10-12 13:18:57 +02:00
misc.c afs: Consolidate abort_to_error translators 2017-11-13 15:38:17 +00:00
mntpt.c afs: Support the AFS dynamic root 2018-02-06 14:43:37 +00:00
netdevices.c afs: Implement network namespacing 2018-05-23 12:01:15 +01:00
proc.c afs: Fix TTL on VL server and address lists 2018-10-24 00:41:07 +01:00
rotate.c afs: Improve FS server rotation error handling 2018-10-24 00:41:07 +01:00
rxrpc.c afs: Handle EIO from delivery function 2018-10-24 00:41:07 +01:00
security.c afs: Fix directory permissions check 2018-05-16 21:35:23 +01:00
server.c afs: Implement VL server rotation 2018-10-24 00:41:07 +01:00
server_list.c afs: Fix refcounting in callback registration 2018-05-14 13:17:35 +01:00
super.c afs: Display manually added cells in dynamic root mount 2018-06-15 15:27:09 +01:00
vl_list.c afs: Implement VL server rotation 2018-10-24 00:41:07 +01:00
vl_rotate.c afs: Implement VL server rotation 2018-10-24 00:41:07 +01:00
vlclient.c afs: Implement VL server rotation 2018-10-24 00:41:07 +01:00
volume.c afs: Implement VL server rotation 2018-10-24 00:41:07 +01:00
write.c fs/afs: use new return type vm_fault_t 2018-08-23 18:48:43 -07:00
xattr.c afs: Overhaul volume and server record caching and fileserver rotation 2017-11-13 15:38:19 +00:00
xdr_fs.h afs: Adjust the directory XDR structures 2018-04-09 21:54:48 +01:00