Files
kernel/include/linux
Jeff Layton cd123012d9 RPC: add wrapper for svc_reserve to account for checksum
When the kernel calls svc_reserve to downsize the expected size of an RPC
reply, it fails to account for the possibility of a checksum at the end of
the packet.  If a client mounts a NFSv2/3 with sec=krb5i/p, and does I/O
then you'll generally see messages similar to this in the server's ring
buffer:

RPC request reserved 164 but used 208

While I was never able to verify it, I suspect that this problem is also
the root cause of some oopses I've seen under these conditions:

https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=227726

This is probably also a problem for other sec= types and for NFSv4.  The
large reserved size for NFSv4 compound packets seems to generally paper
over the problem, however.

This patch adds a wrapper for svc_reserve that accounts for the possibility
of a checksum.  It also fixes up the appropriate callers of svc_reserve to
call the wrapper.  For now, it just uses a hardcoded value that I
determined via testing.  That value may need to be revised upward as things
change, or we may want to eventually add a new auth_op that attempts to
calculate this somehow.

Unfortunately, there doesn't seem to be a good way to reliably determine
the expected checksum length prior to actually calculating it, particularly
with schemes like spkm3.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Acked-by: Neil Brown <neilb@suse.de>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Acked-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-09 12:30:54 -07:00
..
2007-05-01 16:11:57 +02:00
2007-05-08 11:15:16 -07:00
2007-05-09 12:30:51 -07:00
2007-05-07 12:12:55 -07:00
2007-05-08 11:15:15 -07:00
2007-05-09 12:30:44 -07:00
2007-05-07 12:13:00 -07:00
2007-05-07 12:13:00 -07:00
2007-05-08 11:15:25 -07:00
2007-04-27 10:57:31 -07:00
2007-05-08 11:15:26 -07:00
2007-05-01 09:11:12 +01:00
2007-05-07 12:12:58 -07:00
2007-05-03 13:17:25 -07:00
2007-03-27 09:05:15 -07:00
2007-05-06 20:38:28 -04:00
2007-05-08 11:15:04 -07:00
2007-04-28 11:01:07 -04:00
2007-04-19 14:56:12 +02:00
2007-03-16 00:59:29 -04:00
2007-04-07 10:03:43 -07:00
2007-05-01 23:26:34 +02:00
2007-05-05 22:03:49 +02:00
2007-04-25 22:30:01 -07:00
2007-04-25 22:29:10 -07:00
2007-04-25 22:24:41 -07:00
2007-04-25 22:29:10 -07:00
2007-05-08 11:15:09 -07:00
2007-04-25 22:25:52 -07:00
2007-05-07 12:13:00 -07:00
2007-05-09 12:30:53 -07:00
2007-04-25 22:29:49 -07:00
2007-05-03 10:52:32 +03:00
2007-05-01 07:49:54 -04:00
2007-05-08 11:15:18 -07:00
2007-05-09 12:30:49 -07:00
2007-05-03 10:52:22 +03:00
2007-05-07 12:12:53 -07:00
2007-05-09 12:30:54 -07:00
2007-05-04 17:59:07 -07:00
2007-05-07 12:12:59 -07:00
2007-05-08 11:15:05 -07:00
2007-05-08 11:15:05 -07:00
2007-05-05 14:15:32 -07:00
2007-03-12 16:31:50 -07:00
2007-05-08 11:15:14 -07:00
2007-03-27 08:55:47 +02:00
2007-04-17 16:36:26 -07:00
2007-05-08 11:14:57 -07:00
2007-05-07 12:12:54 -07:00
2007-05-08 11:15:18 -07:00
2007-05-07 12:12:58 -07:00
2007-05-07 12:12:50 -07:00
2007-05-03 03:16:20 -07:00
2007-05-07 12:12:54 -07:00
2007-05-08 11:14:58 -07:00
2007-05-08 11:15:18 -07:00
2007-05-08 11:15:33 -07:00
2007-05-09 12:30:44 -07:00
2007-05-08 11:15:18 -07:00
2007-05-08 11:15:05 -07:00
2007-03-05 07:57:51 -08:00
2007-05-03 00:55:34 -04:00
2007-05-07 12:12:58 -07:00
2007-05-04 12:55:39 -07:00