Hi, Arnd, On Mon, Mar 21, 2022 at 5:48 PM Arnd Bergmann <arnd@xxxxxxxx> wrote: > > On Mon, Mar 21, 2022 at 10:41 AM Huacai Chen <chenhuacai@xxxxxxxxxx> wrote: > > On Mon, Mar 21, 2022 at 5:01 PM Arnd Bergmann <arnd@xxxxxxxx> wrote: > > > > > > On Sat, Mar 19, 2022 at 3:38 PM Huacai Chen <chenhuacai@xxxxxxxxxx> wrote: > > > > > > > > This patch adds system call support and related uaccess.h for LoongArch. > > > > > > > > Q: Why keep __ARCH_WANT_NEW_STAT definition while there is statx: > > > > A: Until the latest glibc release (2.34), statx is only used for 32-bit > > > > platforms, or 64-bit platforms with 32-bit timestamp. I.e., Most 64- > > > > bit platforms still use newstat now. > > > > > > > > Q: Why keep _ARCH_WANT_SYS_CLONE definition while there is clone3: > > > > A: The latest glibc release (2.34) has some basic support for clone3 but > > > > it isn't complete. E.g., pthread_create() and spawni() have converted > > > > to use clone3 but fork() will still use clone. Moreover, some seccomp > > > > related applications can still not work perfectly with clone3. > > > > > > Please leave those out of the mainline kernel support though: Any users > > > of existing glibc binaries can keep using patched kernels for the moment, > > > and then later drop those pages when the proper glibc support gets > > > merged. > > The glibc commit d8ea0d0168b190bdf138a20358293c939509367f ("Add an > > internal wrapper for clone, clone2 and clone3") modified nearly > > everything in order to move to clone3(), except arch_fork() which used > > by fork(). And I cannot find any submitted patches to solve it. So I > > don't think this is just a forget, maybe there are other fundamental > > problems? > > I don't think there are fundamental issues, they probably did not consider > it necessary because so far all architectures supported clone(). > > Adding Christian Brauner and H.J. Lu for clarificatoin. OK, wait a response, if arch_fork() will be moved to clone3(), then I will remove __ARCH_WANT_SYS_CLONE. Huacai > > > > > +#define __get_user(x, ptr) \ > > > > +({ \ > > > > + int __gu_err = 0; \ > > > > + \ > > > > + __chk_user_ptr(ptr); \ > > > > + __get_user_common((x), sizeof(*(ptr)), ptr); \ > > > > + __gu_err; \ > > > > +}) > > > > > > It would be good to also provide a > > > __kernel_kernel_nofault()/__put_kernel_nofault() > > > implementation, as the default based on __get_user()/__put_user is not > > > ideal. > > They are provided in this file below. > > Ok, I see them now, not sure what I did wrong when I looked earlier. > > Arnd