On Tue, May 5, 2020 at 11:23 PM Christoph Hellwig <hch@xxxxxx> wrote: > > +#define arch_kernel_read(dst, src, type, err_label) \ > + __get_user_size(*((type *)dst), (__force type __user *)src, \ > + sizeof(type), __kr_err); \ .. > +#define arch_kernel_write(dst, src, type, err_label) \ > + __put_user_size(*((type *)(src)), (__force type __user *)(dst), \ > + sizeof(type), err_label) My private tree no longer has those __get/put_user_size() things, because "unsafe_get/put_user()" is the only thing that remains with my conversion to asm goto. And we're actively trying to get rid of the whole __get_user() mess. Admittedly "__get_user_size()" is just the internal helper that doesn't have the problem, but it really is an internal helper for a legacy operation, and the new op that uses it is that "unsafe_get_user()". Also, because you use __get_user_size(), you then have to duplicate the error handling logic that we already have in unsafe_get_user(). IOW - is there some reason why you didn't just make these use "unsafe_get/put_user()" directly, and avoid both of those issues? Linus