alistair23-linux/net/sunrpc
NeilBrown 7715cde868 net/sunrpc: xpt_auth_cache should be ignored when expired.
commit d202cce896
    sunrpc: never return expired entries in sunrpc_cache_lookup

moved the 'entry is expired' test from cache_check to
sunrpc_cache_lookup, so that it happened early and some races could
safely be ignored.

However the ip_map (in svcauth_unix.c) has a separate single-item
cache which allows quick lookup without locking.  An entry in this
case would not be subject to the expiry test and so could be used
well after it has expired.

This is not normally a big problem because the first time it is used
after it is expired an up-call will be scheduled to refresh the entry
(if it hasn't been scheduled already) and the old entry will then
be invalidated.  So on the second attempt to use it after it has
expired, ip_map_cached_get will discard it.

However that is subtle and not ideal, so replace the "!cache_valid"
test with "cache_is_expired".
In doing this we drop the test on the "CACHE_VALID" bit.  This is
unnecessary as the bit is never cleared, and an entry will only
be cached if the bit is set.

Reported-by: Bodo Stroesser <bstroesser@ts.fujitsu.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
2013-07-01 17:53:28 -04:00
..
auth_gss svcrpc: store gss mech in svc_cred 2013-07-01 17:23:06 -04:00
xprtrdma Merge branch 'for-3.9' of git://linux-nfs.org/~bfields/linux 2013-02-28 18:02:55 -08:00
addr.c sunrpc: move address copy/cmp/convert routines and prototypes from clnt.h to addr.h 2013-02-05 09:41:14 -05:00
auth.c SUNRPC: Don't recognize RPC_AUTH_MAXFLAVOR 2013-04-04 17:01:00 -04:00
auth_generic.c sunrpc: Convert kuids and kgids to uids and gids for printing 2013-02-13 06:15:19 -08:00
auth_null.c
auth_unix.c sunrpc: Properly encode kuids and kgids in RPC_AUTH_UNIX credentials 2013-02-13 06:15:24 -08:00
backchannel_rqst.c SUNRPC: remove two BUG_ON asserts 2012-11-04 14:43:41 -05:00
bc_svc.c SUNRPC: remove BUG_ON from bc_send 2012-11-04 14:43:41 -05:00
cache.c net/sunrpc: xpt_auth_cache should be ignored when expired. 2013-07-01 17:53:28 -04:00
clnt.c More NFS client bugfixes for 3.10 2013-05-09 10:24:54 -07:00
Kconfig Merge branch 'rpcsec_gss-from_cel' into linux-next 2013-04-23 15:40:40 -04:00
Makefile
netns.h SUNRPC: Use gssproxy upcall for server RPCGSS authentication. 2013-04-26 11:41:28 -04:00
rpc_pipe.c fs: Readd the fs module aliases. 2013-03-12 18:55:21 -07:00
rpcb_clnt.c sunrpc: move address copy/cmp/convert routines and prototypes from clnt.h to addr.h 2013-02-05 09:41:14 -05:00
sched.c SUNRPC: Add barriers to ensure read ordering in rpc_wake_up_task_queue_locked 2013-03-25 11:23:40 -04:00
socklib.c sunrpc: remove the second argument of k[un]map_atomic() 2012-03-20 21:48:28 +08:00
stats.c procfs: new helper - PDE_DATA(inode) 2013-04-09 14:13:32 -04:00
sunrpc.h SUNRPC: subscribe RPC clients to pipefs notifications 2012-01-31 18:20:25 -05:00
sunrpc_syms.c SUNRPC: register PipeFS file system after pernet sybsystem 2012-04-18 11:05:48 -04:00
svc.c svcrpc: fix rpc server shutdown races 2013-02-17 10:53:51 -05:00
svc_xprt.c svcrpc: fix rpc server shutdown races 2013-02-17 10:53:51 -05:00
svcauth.c hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
svcauth_unix.c net/sunrpc: xpt_auth_cache should be ignored when expired. 2013-07-01 17:53:28 -04:00
svcsock.c svcrpc: don't error out on small tcp fragment 2013-07-01 17:32:04 -04:00
sysctl.c SUNRPC: make SUNPRC clients list per network namespace context 2012-01-31 18:20:25 -05:00
timer.c net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
xdr.c sunrpc: trim off trailing checksum before returning decrypted or integrity authenticated buffer 2013-02-08 15:19:10 -05:00
xprt.c SUNRPC: allow disabling idle timeout 2013-04-26 11:41:26 -04:00
xprtsock.c sunrpc: server back channel needs no rpcbind method 2013-05-15 09:27:02 -04:00