Looks like this patch got lost, do you need me to resend? I should also have added a stable cc and a Fixes: 95ad37f90c33 "NFSv4.2: add client side xattr caching." --b. On Wed, Oct 21, 2020 at 10:34:15AM -0400, bfields wrote: > From: "J. Bruce Fields" <bfields@xxxxxxxxxx> > > 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@xxxxxxxxxxxxxxxx> > Tested-By: Kris Karas <bugs-a17@xxxxxxxxxxxxxxxx> > Signed-off-by: J. Bruce Fields <bfields@xxxxxxxxxx> > --- > fs/nfs/nfs42xattr.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/fs/nfs/nfs42xattr.c b/fs/nfs/nfs42xattr.c > index 86777996cfec..55b44a42d625 100644 > --- a/fs/nfs/nfs42xattr.c > +++ b/fs/nfs/nfs42xattr.c > @@ -1048,8 +1048,10 @@ int __init nfs4_xattr_cache_init(void) > > void nfs4_xattr_cache_exit(void) > { > + unregister_shrinker(&nfs4_xattr_large_entry_shrinker); > unregister_shrinker(&nfs4_xattr_entry_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_cache_lru); > kmem_cache_destroy(nfs4_xattr_cache_cachep); > -- > 2.26.2 >