linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: liuwenliang@huawei.com (Liuwenliang (Lamb))
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 04/11] Define the virtual space of KASan's shadow region
Date: Sun, 22 Oct 2017 12:12:58 +0000	[thread overview]
Message-ID: <B8AC3E80E903784988AB3003E3E97330C005CED4@dggemm510-mbx.china.huawei.com> (raw)
In-Reply-To: <20171019124357.GY20805@n2100.armlinux.org.uk>

On Tue, Oct 19, 2017 at 20:41 17PM +0000, Russell King - ARM Linux:
>On Mon, Oct 16, 2017 at 11:42:05AM +0000, Liuwenliang (Lamb) wrote:
>> On 10/16/2017 07:03 PM, Abbott Liu wrote:
> >arch/arm/kernel/entry-armv.S:348: Error: selected processor does not support `movw r1,
>>   #:lower16:((((0xC0000000-0x01000000)>>3)+((0xC0000000-0x01000000)-(1<<29))))' in ARM mode
>> >arch/arm/kernel/entry-armv.S:348: Error: selected processor does not support `movt r1,
>>   #:upper16:((((0xC0000000-0x01000000)>>3)+((0xC0000000-0x01000000)-(1<<29))))' in ARM mode
>> 
>> Thanks for building test. This error can be solved by following code:
>> --- a/arch/arm/kernel/entry-armv.S
>> +++ b/arch/arm/kernel/entry-armv.S
>> @@ -188,8 +188,7 @@ ENDPROC(__und_invalid)
>>         get_thread_info tsk
>>         ldr     r0, [tsk, #TI_ADDR_LIMIT]
>>  #ifdef CONFIG_KASAN
>> -   movw r1, #:lower16:TASK_SIZE
>> -   movt r1, #:upper16:TASK_SIZE
>> + ldr r1, =TASK_SIZE
>>  #else
>>         mov r1, #TASK_SIZE
>>  #endif
>
>We can surely do better than this with macros and condition support -
>we can build-time test in the assembler whether TASK_SIZE can fit in a
>normal "mov", whether we can use the movw/movt instructions, or fall
>back to ldr if necessary.  I'd rather we avoided "ldr" here where
>possible.

Thanks for your review.
I don't know why we need to avoided "ldr". The "ldr" maybe cause the 
performance fall down, but it will be very limited, and as we know the 
performance of kasan version is lower than the normal version. And usually
we don't use kasan version in our product, we only use kasan version when 
we want to debug some memory corruption problem in laboratory(not not in
commercial product) because the performance of kasan version is lower than
normal version.

So I think we can accept the influence of the performance by using "ldr" here. 




On Tue, Oct 19, 2017 at 20:44 17PM +0000, Russell King - ARM Linux:
>On Tue, Oct 17, 2017 at 11:27:19AM +0000, Liuwenliang (Lamb) wrote:
>> ---c0a3b198:       b6e00000        .word   0xb6e00000   //TASK_SIZE:0xb6e00000
>
>It's probably going to be better all round to round TASK_SIZE down
>to something that fits in an 8-bit rotated constant anyway (like
>we already guarantee) which would mean this patch is not necessary.

Thanks for you review.
If we enable CONFIG_KASAN, we need steal 130MByte(0xb6e00000 ~ 0xbf000000) from user space.
If we change to steal 130MByte(0xb6000000 ~ 0xbe200000) , the 14MB of user space is going to be 
wasted. I think it is better to to use "ldr" whose influence to the system are very limited than to waste 
14MB user space by chaned TASK_SIZE from 0xb6e00000 from 0xb6000000.


If TASK_SIZE is an 8-bit rotated constant, the compiler can convert "ldr rx,=TASK_SIZE" into mov rx, #TASK_SIZE
If TASK_SIZE is not an 8-bit rotated constant, the compiler can convert "ldr rx,=TASK_SIZE" into ldr rx, [pc,xxx],
So we can use ldr to replace mov. Here is the code which is tested by me:

diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index f9efea3..00a1833 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -187,12 +187,7 @@ ENDPROC(__und_invalid)

        get_thread_info tsk
        ldr     r0, [tsk, #TI_ADDR_LIMIT]
-#ifdef CONFIG_KASAN
-   movw r1, #:lower16:TASK_SIZE
-   movt r1, #:upper16:TASK_SIZE
-#else
-   mov r1, #TASK_SIZE
-#endif
+ ldr r1, =TASK_SIZE
        str     r1, [tsk, #TI_ADDR_LIMIT]
        str     r0, [sp, #SVC_ADDR_LIMIT]

@@ -446,7 +441,8 @@ ENDPROC(__fiq_abt)
        @ if it was interrupted in a critical region.  Here we
        @ perform a quick test inline since it should be false
        @ 99.9999% of the time.  The rest is done out of line.
-   cmp     r4, #TASK_SIZE
+ ldr r0, =TASK_SIZE
+ cmp r4, r0
        blhs    kuser_cmpxchg64_fixup
 #endif
 #endif

  reply	other threads:[~2017-10-22 12:12 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-11  8:22 [PATCH 00/11] KASan for arm Abbott Liu
2017-10-11  8:22 ` [PATCH 01/11] Initialize the mapping of KASan shadow memory Abbott Liu
2017-10-11 19:39   ` Florian Fainelli
2017-10-11 21:41     ` Russell King - ARM Linux
2017-10-17 13:28       ` Liuwenliang (Lamb)
2017-10-11 23:42   ` Dmitry Osipenko
2017-10-19  6:52     ` Liuwenliang (Lamb)
2017-10-19 12:01     ` Russell King - ARM Linux
2018-02-26 13:09       ` 答复: " Liuwenliang (Abbott Liu)
2017-10-12  7:58   ` Marc Zyngier
2017-11-09  7:46     ` Liuwenliang (Abbott Liu)
2017-11-09 10:10       ` Marc Zyngier
2017-11-15 10:20         ` Liuwenliang (Abbott Liu)
2017-11-15 10:35           ` Marc Zyngier
2017-11-15 13:16             ` Liuwenliang (Abbott Liu)
2017-11-15 13:54               ` Marc Zyngier
2017-11-16  3:07                 ` Liuwenliang (Abbott Liu)
2017-11-16  9:54                   ` Marc Zyngier
2017-11-16 14:24                     ` Liuwenliang (Abbott Liu)
2017-11-16 14:40                       ` Marc Zyngier
2017-11-17  1:39                         ` 答复: " Liuwenliang (Abbott Liu)
2017-11-17  7:18                         ` Liuwenliang (Abbott Liu)
2017-11-17  7:35                           ` Christoffer Dall
2017-11-18 10:40                             ` Liuwenliang (Abbott Liu)
2017-11-18 13:48                               ` Marc Zyngier
2017-11-21  7:59                                 ` 答复: " Liuwenliang (Abbott Liu)
2017-11-21  9:40                                   ` Russell King - ARM Linux
2017-11-21  9:46                                   ` Marc Zyngier
2017-11-21 12:29                                   ` Mark Rutland
2017-11-22 12:56                                     ` Liuwenliang (Abbott Liu)
2017-11-22 13:06                                       ` Marc Zyngier
2017-11-23  1:54                                         ` Liuwenliang (Abbott Liu)
2017-11-23 15:22                                           ` Russell King - ARM Linux
2017-11-27  1:23                                             ` Liuwenliang (Abbott Liu)
2017-11-23 15:31                                       ` Mark Rutland
2017-11-27  1:26                                         ` 答复: " Liuwenliang (Abbott Liu)
2017-10-19 11:09   ` Russell King - ARM Linux
2018-02-24 14:28     ` Liuwenliang (Abbott Liu)
2017-10-11  8:22 ` [PATCH 02/11] replace memory function Abbott Liu
2017-10-19 12:05   ` Russell King - ARM Linux
2017-10-22 12:42     ` 答复: " Liuwenliang (Lamb)
2017-10-11  8:22 ` [PATCH 03/11] arm: Kconfig: enable KASan Abbott Liu
2017-10-11 19:15   ` Florian Fainelli
2017-10-19 12:34     ` Russell King - ARM Linux
2017-10-22 12:27       ` Liuwenliang (Lamb)
2017-10-11  8:22 ` [PATCH 04/11] Define the virtual space of KASan's shadow region Abbott Liu
2017-10-14 11:41   ` kbuild test robot
2017-10-16 11:42     ` Liuwenliang (Lamb)
2017-10-16 12:14       ` Ard Biesheuvel
2017-10-17 11:27         ` Liuwenliang (Lamb)
2017-10-17 11:52           ` Ard Biesheuvel
2017-10-17 13:02             ` Liuwenliang (Lamb)
2017-10-19 12:43           ` Russell King - ARM Linux
2017-10-22 12:12             ` Liuwenliang (Lamb) [this message]
2017-10-19 12:41         ` Russell King - ARM Linux
2017-10-19 12:40       ` Russell King - ARM Linux
2017-10-11  8:22 ` [PATCH 05/11] Disable kasan's instrumentation Abbott Liu
2017-10-11 19:16   ` Florian Fainelli
2017-10-19 12:47   ` Russell King - ARM Linux
2017-11-15 10:19     ` Liuwenliang (Abbott Liu)
2017-10-11  8:22 ` [PATCH 06/11] change memory_is_poisoned_16 for aligned error Abbott Liu
2017-10-11 23:23   ` Andrew Morton
2017-10-12  7:16     ` Dmitry Vyukov
2017-10-12 11:27       ` Liuwenliang (Lamb)
2017-10-19 12:51         ` Russell King - ARM Linux
2017-12-05 14:19           ` Liuwenliang (Abbott Liu)
2017-12-05 17:08             ` Ard Biesheuvel
2017-10-11  8:22 ` [PATCH 07/11] Avoid cleaning the KASan shadow area's mapping table Abbott Liu
2017-10-11  8:22 ` [PATCH 08/11] Add support arm LPAE Abbott Liu
2017-10-11  8:22 ` [PATCH 09/11] Don't need to map the shadow of KASan's shadow memory Abbott Liu
2017-10-19 12:55   ` Russell King - ARM Linux
2017-10-22 12:31     ` Liuwenliang (Lamb)
2017-10-11  8:22 ` [PATCH 10/11] Change mapping of kasan_zero_page int readonly Abbott Liu
2017-10-11 19:19   ` Florian Fainelli
2017-10-11  8:22 ` [PATCH 11/11] Add KASan layout Abbott Liu
2017-10-11 19:13 ` [PATCH 00/11] KASan for arm Florian Fainelli
2017-10-11 19:50   ` Florian Fainelli
     [not found]     ` <44c86924-930b-3eff-55b8-b02c9060ebe3@gmail.com>
2017-10-11 22:10       ` Laura Abbott
2017-10-11 22:58         ` Russell King - ARM Linux
2017-10-17 12:41           ` Liuwenliang (Lamb)
2017-10-12  4:55       ` Liuwenliang (Lamb)
2017-10-12  7:38 ` Arnd Bergmann
2017-10-17  1:04   ` 答复: " Liuwenliang (Lamb)
2018-02-13 18:40 ` Florian Fainelli
2018-02-23  2:10   ` Liuwenliang (Abbott Liu)

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=B8AC3E80E903784988AB3003E3E97330C005CED4@dggemm510-mbx.china.huawei.com \
    --to=liuwenliang@huawei.com \
    --cc=linux-arm-kernel@lists.infradead.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;
as well as URLs for NNTP newsgroup(s).