On Mon, May 17, 2021 at 8:20 AM Christoph Hellwig <hch@xxxxxx> wrote: > > On Sat, May 15, 2021 at 12:18:02PM +0200, Arnd Bergmann wrote: > > From: Arnd Bergmann <arnd@xxxxxxxx> > > > > Consolidate the asm-generic implementation with the library version > > that is used everywhere else. > > > > These are the three versions for NOMMU kernels, > > I don't get the three versions part? Right, that was confusing. Rewording to | The inline version is used on three NOMMU architectures and is | particularly inefficient when it scans the string one byte at a time | twice. It also lacks a check for user_addr_max(), but this is | probably ok on NOMMU targets. | | Consolidate the asm-generic implementation with the library version | that is used everywhere else. This version is generalized enough to | work efficiently on both MMU and NOMMU targets, and using the | same code everywhere reduces the potential for subtle bugs. > > + select GENERIC_STRNCPY_FROM_USER > > + select GENERIC_STRNLEN_USER > > Given that most architetures select the generic version I wonder > if it might be worth to add another patch to invert the logic so > that architectures with their own implementation need to sekect a symbol. Done now, using 'CONFIG_ARCH_HAS_{STRNCPY_FROM,STRNLEN}_USER'. There are still seven or eight architectures that provide their own though. > > +extern long strncpy_from_user(char *dst, const char __user *src, long count); > > +extern long strnlen_user(const char __user *src, long n); > > No need for the extern here. Removed. Arnd