tmp_suning_uos_patched/net/sunrpc
J. Bruce Fields 61c8504c42 svcrpc: fix double-free on shutdown of nfsd after changing pool mode
The pool_to and to_pool fields of the global svc_pool_map are freed on
shutdown, but are initialized in nfsd startup only in the
SVC_POOL_PERCPU and SVC_POOL_PERNODE cases.

They *are* initialized to zero on kernel startup.  So as long as you use
only SVC_POOL_GLOBAL (the default), this will never be a problem.

You're also OK if you only ever use SVC_POOL_PERCPU or SVC_POOL_PERNODE.

However, the following sequence events leads to a double-free:

	1. set SVC_POOL_PERCPU or SVC_POOL_PERNODE
	2. start nfsd: both fields are initialized.
	3. shutdown nfsd: both fields are freed.
	4. set SVC_POOL_GLOBAL
	5. start nfsd: the fields are left untouched.
	6. shutdown nfsd: now we try to free them again.

Step 4 is actually unnecessary, since (for some bizarre reason), nfsd
automatically resets the pool mode to SVC_POOL_GLOBAL on shutdown.

Cc: stable@kernel.org
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
2012-01-05 15:35:55 -05:00
..
auth_gss Merge branch 'nfs-for-3.2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs 2011-10-25 15:44:06 +02:00
xprtrdma SUNRPC: create svc_xprt in proper network namespace 2011-12-06 16:20:42 -05:00
addr.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
auth_generic.c
auth_null.c
auth_unix.c NFS/sunrpc: don't use a credential with extra groups. 2011-10-25 11:20:58 +02:00
auth.c net: Remove unnecessary semicolons 2011-06-05 14:33:39 -07:00
backchannel_rqst.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
bc_svc.c SUNRPC: sunrpc should not explicitly depend on NFS config options 2011-07-15 09:12:23 -04:00
cache.c NFSd: use network-namespace-aware cache registering routines 2011-12-07 15:27:46 -05:00
clnt.c NFS: Get rid of nfs_restart_rpc() 2011-10-19 13:58:30 -07:00
Kconfig SUNRPC: sunrpc should not explicitly depend on NFS config options 2011-07-15 09:12:23 -04:00
Makefile SUNRPC: sunrpc should not explicitly depend on NFS config options 2011-07-15 09:12:23 -04:00
netns.h
rpc_pipe.c Merge branch 'nfs-for-3.2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs 2011-10-25 15:44:06 +02:00
rpcb_clnt.c SUNRPC: remove rpcbind clients destruction on module cleanup 2011-10-25 13:20:50 +02:00
sched.c SUNRPC: Allow caller of rpc_sleep_on() to select priority levels 2011-07-17 18:11:34 -04:00
socklib.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
stats.c
sunrpc_syms.c SUNRPC: remove rpcbind clients destruction on module cleanup 2011-10-25 13:20:50 +02:00
sunrpc.h
svc_xprt.c SUNRPC: create svc_xprt in proper network namespace 2011-12-06 16:20:42 -05:00
svc.c svcrpc: fix double-free on shutdown of nfsd after changing pool mode 2012-01-05 15:35:55 -05:00
svcauth_unix.c svcauth_unix.c: quiet sparse noise 2011-07-15 18:58:44 -04:00
svcauth.c
svcsock.c SUNRPC: create svc_xprt in proper network namespace 2011-12-06 16:20:42 -05:00
sysctl.c
timer.c
xdr.c SUNRPC: Convert the backchannel exports to EXPORT_SYMBOL_GPL 2011-07-15 09:12:23 -04:00
xprt.c net: fix new sunrpc kernel-doc warning 2011-07-28 18:20:21 -07:00
xprtsock.c SUNRPC: Support dynamic slot allocation for TCP connections 2011-07-17 18:11:30 -04:00