From: Mark Rutland <mark.rutland@arm.com>
To: "Shi, Yang" <yang.shi@linaro.org>
Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>,
will.deacon@arm.com, catalin.marinas@arm.com, linux-mm@kvack.org,
linaro-kernel@lists.linaro.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] arm64: kasan: instrument user memory access API
Date: Fri, 27 May 2016 18:46:36 +0100 [thread overview]
Message-ID: <20160527174635.GL24469@leverpostej> (raw)
In-Reply-To: <cea39367-65b6-62df-7e4c-57ae1ce36dcc@linaro.org>
On Fri, May 27, 2016 at 09:34:03AM -0700, Shi, Yang wrote:
> On 5/27/2016 4:02 AM, Andrey Ryabinin wrote:
> >
> >
> >On 05/26/2016 09:43 PM, Yang Shi wrote:
> >>The upstream commit 1771c6e1a567ea0ba2cccc0a4ffe68a1419fd8ef
> >>("x86/kasan: instrument user memory access API") added KASAN instrument to
> >>x86 user memory access API, so added such instrument to ARM64 too.
> >>
> >>Tested by test_kasan module.
> >>
> >>Signed-off-by: Yang Shi <yang.shi@linaro.org>
> >>---
> >> arch/arm64/include/asm/uaccess.h | 18 ++++++++++++++++--
> >> 1 file changed, 16 insertions(+), 2 deletions(-)
> >
> >Please, cover __copy_from_user() and __copy_to_user() too.
> >Unlike x86, your patch doesn't instrument these two.
Argh, I missed those when reviewing. My bad.
> I should elaborated this in my review. Yes, I did think about it,
> but unlike x86, __copy_to/from_user are implemented by asm code on
> ARM64. If I add kasan_check_read/write into them, I have to move the
> registers around to prepare the parameters for kasan calls, then
> restore them after the call, for example the below code for
> __copy_to_user:
>
> mov x9, x0
> mov x10, x1
> mov x11, x2
> mov x0, x10
> mov x1, x11
> bl kasan_check_read
> mov x0, x9
> mov x1, x10
There's no need to alter the assembly.
Rename the functions (e.g. have __arch_raw_copy_from_user), and add
static inline wrappers in uaccess.h that do the kasan calls before
calling the assembly functions.
That gives the compiler the freedom to do the right thing, and avoids
horrible ifdeffery in the assembly code.
> So, I'm wondering if it is worth or not since __copy_to/from_user
> are just called at a couple of places, i.e. sctp, a couple of
> drivers, etc and not used too much.
[mark@leverpostej:~/src/linux]% git grep -w __copy_to_user -- ^arch | wc -l
63
[mark@leverpostej:~/src/linux]% git grep -w __copy_from_user -- ^arch | wc -l
47
That's a reasonable number of callsites.
If we're going to bother adding this, it should be complete. So please
do update __copy_from_user and __copy_to_user.
> Actually, I think some of them
> could be replaced by __copy_to/from_user_inatomic.
Given the number of existing callers outside of arch code, I think we'll
get far more traction reworking the arm64 parts for now.
Thanks,
Mark.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2016-05-27 17:46 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-26 18:43 Yang Shi
2016-05-27 11:02 ` Andrey Ryabinin
2016-05-27 16:34 ` Shi, Yang
2016-05-27 17:46 ` Mark Rutland [this message]
2016-05-27 18:05 ` Shi, Yang
2016-05-27 12:38 ` Mark Rutland
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160527174635.GL24469@leverpostej \
--to=mark.rutland@arm.com \
--cc=aryabinin@virtuozzo.com \
--cc=catalin.marinas@arm.com \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=will.deacon@arm.com \
--cc=yang.shi@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox