On Mon, Apr 27, 2026 at 08:20:38PM +0200, Christophe Leroy (CS GROUP) wrote: > > > Le 27/04/2026 à 19:58, Yury Norov a écrit : > > On Mon, Apr 27, 2026 at 07:13:48PM +0200, Christophe Leroy (CS GROUP) wrote: > > > At the time being, x86 and arm64 are missing unsafe_copy_from_user(). > > > > No, they don't. They (should) rely on a generic implementation from > > linux/uaccess.h, like every other arch, except for PPC and RISCV. > > > > But they #define arch_unsafe_get_user, and the unsafe_copy_from_user() > > becomes undefined conditionally on that. > > > > So please, fix that bug instead of introducing another arch flavor. > > We'd always choose generic version, unless there's strong evidence > > that arch one is better. > > But they both implement the exact same unsafe_copy_to_user(). What is the > difference here ? > > Should that function become generic too ?
This is what Linus said when added x86 implementation for copy_from_user() in c512c69187197: Note that it only does this [arch version] for the copying _to_ user space, and we still don't have a unsafe version of copy_from_user(). That's partly because we have no current users of it, but also partly because the copy_from_user() case is slightly different and cannot efficiently be implemented in terms of a unsafe_get_user() loop (because gcc can't do asm goto with outputs). In the unsafe_copy_to_user case, arch versions were justified. Just as said, I'm not against arch version for unsafe_copy_from_user(), but it should be explained very well.
