Message ID | c9fa9eb25a5c0b1f733494dfd439f056c6e938fd.1570514544.git.nickhu@andestech.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KASAN support for RISC-V | expand |
On Mon, 07 Oct 2019 23:11:51 PDT (-0700), nickhu@andestech.com wrote: > Skip the memmove checking for those archs who don't support it. > > Signed-off-by: Nick Hu <nickhu@andestech.com> > --- > mm/kasan/common.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/mm/kasan/common.c b/mm/kasan/common.c > index 6814d6d6a023..897f9520bab3 100644 > --- a/mm/kasan/common.c > +++ b/mm/kasan/common.c > @@ -107,6 +107,7 @@ void *memset(void *addr, int c, size_t len) > return __memset(addr, c, len); > } > > +#ifdef __HAVE_ARCH_MEMMOVE > #undef memmove > void *memmove(void *dest, const void *src, size_t len) > { > @@ -115,6 +116,7 @@ void *memmove(void *dest, const void *src, size_t len) > > return __memmove(dest, src, len); > } > +#endif > > #undef memcpy > void *memcpy(void *dest, const void *src, size_t len) I think this is backwards: we shouldn't be defining an arch-specific memmove symbol when KASAN is enabled. If we do it this way then we're defeating the memmove checks, which doesn't seem like the right way to go.
On 10/8/19 9:11 AM, Nick Hu wrote: > Skip the memmove checking for those archs who don't support it. The patch is fine but the changelog sounds misleading. We don't skip memmove checking. If arch don't have memmove than the C implementation from lib/string.c used. It's instrumented by compiler so it's checked and we simply don't need that KASAN's memmove with manual checks. > Signed-off-by: Nick Hu <nickhu@andestech.com> > --- > mm/kasan/common.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/mm/kasan/common.c b/mm/kasan/common.c > index 6814d6d6a023..897f9520bab3 100644 > --- a/mm/kasan/common.c > +++ b/mm/kasan/common.c > @@ -107,6 +107,7 @@ void *memset(void *addr, int c, size_t len) > return __memset(addr, c, len); > } > > +#ifdef __HAVE_ARCH_MEMMOVE > #undef memmove > void *memmove(void *dest, const void *src, size_t len) > { > @@ -115,6 +116,7 @@ void *memmove(void *dest, const void *src, size_t len) > > return __memmove(dest, src, len); > } > +#endif > > #undef memcpy > void *memcpy(void *dest, const void *src, size_t len) >
On Thu, 17 Oct 2019, Andrey Ryabinin wrote: > On 10/8/19 9:11 AM, Nick Hu wrote: > > Skip the memmove checking for those archs who don't support it. > > The patch is fine but the changelog sounds misleading. We don't skip memmove checking. > If arch don't have memmove than the C implementation from lib/string.c used. > It's instrumented by compiler so it's checked and we simply don't need that KASAN's memmove with > manual checks. Thanks Andrey. Nick, could you please update the patch description? - Paul
On Thu, Oct 17, 2019 at 07:58:04PM -0700, Paul Walmsley wrote: > On Thu, 17 Oct 2019, Andrey Ryabinin wrote: > > > On 10/8/19 9:11 AM, Nick Hu wrote: > > > Skip the memmove checking for those archs who don't support it. > > > > The patch is fine but the changelog sounds misleading. We don't skip memmove checking. > > If arch don't have memmove than the C implementation from lib/string.c used. > > It's instrumented by compiler so it's checked and we simply don't need that KASAN's memmove with > > manual checks. > > Thanks Andrey. Nick, could you please update the patch description? > > - Paul > Thanks! I would update the description in v4 patch. Nick
diff --git a/mm/kasan/common.c b/mm/kasan/common.c index 6814d6d6a023..897f9520bab3 100644 --- a/mm/kasan/common.c +++ b/mm/kasan/common.c @@ -107,6 +107,7 @@ void *memset(void *addr, int c, size_t len) return __memset(addr, c, len); } +#ifdef __HAVE_ARCH_MEMMOVE #undef memmove void *memmove(void *dest, const void *src, size_t len) { @@ -115,6 +116,7 @@ void *memmove(void *dest, const void *src, size_t len) return __memmove(dest, src, len); } +#endif #undef memcpy void *memcpy(void *dest, const void *src, size_t len)
Skip the memmove checking for those archs who don't support it. Signed-off-by: Nick Hu <nickhu@andestech.com> --- mm/kasan/common.c | 2 ++ 1 file changed, 2 insertions(+)