From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Gleixner Subject: Re: [RFC PATCH v2 1/3] getcpu_cache system call: cache CPU number of running thread Date: Wed, 27 Jan 2016 18:22:04 +0100 (CET) Message-ID: References: <1453913683-28915-1-git-send-email-mathieu.desnoyers@efficios.com> <1453913683-28915-2-git-send-email-mathieu.desnoyers@efficios.com> Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Return-path: In-Reply-To: <1453913683-28915-2-git-send-email-mathieu.desnoyers-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org> Sender: linux-api-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Mathieu Desnoyers Cc: Paul Turner , Andrew Hunter , Peter Zijlstra , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Andy Lutomirski , Andi Kleen , Dave Watson , Chris Lameter , Ingo Molnar , Ben Maurer , Steven Rostedt , "Paul E. McKenney" , Josh Triplett , Linus Torvalds , Andrew Morton , Russell King , Catalin Marinas , Will Deacon , Michael Kerrisk List-Id: linux-api@vger.kernel.org On Wed, 27 Jan 2016, Mathieu Desnoyers wrote: > +/* > + * sys_getcpu_cache - setup getcpu cache for caller thread > + */ > +SYSCALL_DEFINE2(getcpu_cache, int32_t __user **, cpu_cachep, int, flags) > +{ > + int32_t __user *cpu_cache; > + > + if (unlikely(flags)) > + return -EINVAL; > + /* Check if cpu_cache is already registered. */ > + if (current->cpu_cache) { > + if (put_user(current->cpu_cache, cpu_cachep)) > + return -EFAULT; > + return 0; > + } This is really odd. How is the caller supposed to differentiate between: 1) Get the installed cpucache pointer 2) Set the cpucache pointer We really want clearly seperated functionality here. getcpu_cache(ptr, GET_CACHEP); and getcpu_cache(ptr, SET_CACHEP); Returns -EBUSY if current->cpu_cache is already set, except we allow replacing the pointer. Thanks, tglx