summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@redhat.com>2011-12-22 18:22:49 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2012-01-25 16:13:31 -0800
commitbcf641763cf916797543f032714e0478e48c2ef7 (patch)
tree224d3365303c33847f54c454ca0111c887c413d1 /include
parentb20b30d4d382e151daaee5466ce2427f653170af (diff)
svcrpc: fix double-free on shutdown of nfsd after changing pool mode
commit 61c8504c428edcebf23b97775a129c5b393a302b 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>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions