On Thu, Nov 23, 2017 at 12:52:47PM +0100, Michal Hocko wrote: > @@ -503,12 +504,18 @@ struct super_block *sget_userns(struct file_system_type *type, > s = alloc_super(type, (flags & ~SB_SUBMOUNT), user_ns); > if (!s) > return ERR_PTR(-ENOMEM); > + if (register_shrinker(&s->s_shrink)) { > + spin_unlock(&sb_lock); > + destroy_unused_super(s); > + return ERR_PTR(-ENOMEM); Have you even tested that? What the hell is that spin_unlock() doing there?