Files
linux/net
J. Bruce Fields b09577ca66 svcrpc: fix double-free on shutdown of nfsd after changing pool mode
commit 61c8504c42 upstream.

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.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2012-01-25 17:24:47 -08:00
..
2011-05-23 16:29:24 -04:00
2011-04-17 00:48:31 -07:00
2011-11-11 09:36:45 -08:00
2011-07-19 11:25:04 -07:00
2011-03-14 17:02:42 -07:00
2011-03-17 11:59:32 +11:00
2011-03-21 18:16:39 -07:00
2011-05-24 01:13:12 -04:00
2011-05-24 01:13:12 -04:00
2011-05-24 01:13:12 -04:00
2011-05-24 01:13:12 -04:00
2011-03-31 11:26:23 -03:00
2011-05-05 11:10:14 -07:00
2011-04-29 10:20:53 -07:00
2010-10-15 15:53:27 +02:00