NFSv4.2: fix failure to unregister shrinker
We forgot to unregister the nfs4_xattr_large_entry_shrinker.
That leaves the global list of shrinkers corrupted after unload of the
nfs module, after which possibly unrelated code that calls
register_shrinker() or unregister_shrinker() gets a BUG() with
"supervisor write access in kernel mode".
And similarly for the nfs4_xattr_large_entry_lru.
Reported-by: Kris Karas <bugs-a17@moonlit-rail.com>
Tested-By: Kris Karas <bugs-a17@moonlit-rail.com>
Fixes: 95ad37f90c
"NFSv4.2: add client side xattr caching."
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
CC: stable@vger.kernel.org
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
3fc2bfa365
commit
70438afbf1
|
@ -1047,8 +1047,10 @@ out4:
|
||||||
|
|
||||||
void nfs4_xattr_cache_exit(void)
|
void nfs4_xattr_cache_exit(void)
|
||||||
{
|
{
|
||||||
|
unregister_shrinker(&nfs4_xattr_large_entry_shrinker);
|
||||||
unregister_shrinker(&nfs4_xattr_entry_shrinker);
|
unregister_shrinker(&nfs4_xattr_entry_shrinker);
|
||||||
unregister_shrinker(&nfs4_xattr_cache_shrinker);
|
unregister_shrinker(&nfs4_xattr_cache_shrinker);
|
||||||
|
list_lru_destroy(&nfs4_xattr_large_entry_lru);
|
||||||
list_lru_destroy(&nfs4_xattr_entry_lru);
|
list_lru_destroy(&nfs4_xattr_entry_lru);
|
||||||
list_lru_destroy(&nfs4_xattr_cache_lru);
|
list_lru_destroy(&nfs4_xattr_cache_lru);
|
||||||
kmem_cache_destroy(nfs4_xattr_cache_cachep);
|
kmem_cache_destroy(nfs4_xattr_cache_cachep);
|
||||||
|
|
Loading…
Reference in New Issue