On Fri, Sep 17, 2021 at 5:57 AM Huacai Chen <chenhuacai@xxxxxxxxxxx> wrote: > > diff --git a/arch/loongarch/lib/strncpy_user.S b/arch/loongarch/lib/strncpy_user.S > new file mode 100644 > index 000000000000..b42d81045929 > --- /dev/null > +++ b/arch/loongarch/lib/strncpy_user.S > @@ -0,0 +1,51 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * Copyright (C) 2020-2021 Loongson Technology Corporation Limited > + */ > +#include <linux/errno.h> > +#include <asm/asm.h> > +#include <asm/asmmacro.h> > +#include <asm/export.h> > +#include <asm/regdef.h> > + > +#define _ASM_EXTABLE(from, to) \ > + .section __ex_table, "a"; \ > + PTR from, to; \ > + .previous > + > +/* > + * long __strncpy_from_user(char *to, const char *from, long len) > + * > + * a0: to > + * a1: from > + * a2: len > + */ > +SYM_FUNC_START(__strncpy_from_user) > + move a3, zero > + I just removed most custom __strncpy_from_user/__strnlen_user implementations from architectures, and I think you should remove these as well. Your current version probably does not work any more with v5.15-rc1, and it is neither efficient nor robust. Arnd