On Wed, 4 Aug 2021 06:55:13 +0800 kernel test robot <lkp@xxxxxxxxx> wrote: > tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master > head: c3f7b3be172b39d90b4c5cb87a2231cc6c2c8dcf > commit: e75b894778116889e88995d0e5029c2e9f6d847c [5063/5087] fs/epoll: use a per-cpu counter for user's watches count > > ... > > kernel/user.c: In function 'free_user': > >> kernel/user.c:141:28: error: 'struct user_struct' has no member named 'epoll_watches' > 141 | percpu_counter_destroy(&up->epoll_watches); > | ^~ not pretty, but... --- a/kernel/user.c~fs-epoll-use-a-per-cpu-counter-for-users-watches-count-fix +++ a/kernel/user.c @@ -138,7 +138,9 @@ static void free_user(struct user_struct { uid_hash_remove(up); spin_unlock_irqrestore(&uidhash_lock, flags); +#ifdef CONFIG_EPOLL percpu_counter_destroy(&up->epoll_watches); +#endif kmem_cache_free(uid_cachep, up); } @@ -186,10 +188,12 @@ struct user_struct *alloc_uid(kuid_t uid new->uid = uid; refcount_set(&new->__count, 1); +#ifdef CONFIG_EPOLL if (percpu_counter_init(&new->epoll_watches, 0, GFP_KERNEL)) { kmem_cache_free(uid_cachep, new); return NULL; } +#endif ratelimit_state_init(&new->ratelimit, HZ, 100); ratelimit_set_flags(&new->ratelimit, RATELIMIT_MSG_ON_RELEASE); @@ -200,7 +204,9 @@ struct user_struct *alloc_uid(kuid_t uid spin_lock_irq(&uidhash_lock); up = uid_hash_find(uid, hashent); if (up) { +#ifdef CONFIG_EPOLL percpu_counter_destroy(&new->epoll_watches); +#endif kmem_cache_free(uid_cachep, new); } else { uid_hash_insert(new, hashent); @@ -222,8 +228,10 @@ static int __init uid_cache_init(void) for(n = 0; n < UIDHASH_SZ; ++n) INIT_HLIST_HEAD(uidhash_table + n); +#ifdef CONFIG_EPOLL if (percpu_counter_init(&root_user.epoll_watches, 0, GFP_KERNEL)) - panic("percpu cpunter alloc failed"); + panic("percpu counter alloc failed"); +#endif /* Insert the root user immediately (init already runs as root) */ spin_lock_irq(&uidhash_lock); _