linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Russell King - ARM Linux admin <linux@armlinux.org.uk>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Florian Fainelli <f.fainelli@gmail.com>,
	Ard Biesheuvel <ardb@kernel.org>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2] ARM: mm: make act_mm() respect THREAD_SIZE
Date: Thu, 21 May 2020 12:56:39 +0100	[thread overview]
Message-ID: <20200521115639.GQ1551@shell.armlinux.org.uk> (raw)
In-Reply-To: <20200515124808.213538-1-linus.walleij@linaro.org>

On Fri, May 15, 2020 at 02:48:08PM +0200, Linus Walleij wrote:
> Recent work with KASan exposed the folling hard-coded bitmask
> in arch/arm/mm/proc-macros.S:
> 
>   bic     \rd, sp, #8128
>   bic     \rd, \rd, #63
> 
> This forms the bitmask 0x1FFF that is coinciding with
> (PAGE_SIZE << THREAD_SIZE_ORDER) - 1, this code was assuming
> that THREAD_SIZE is always 8K (8192).
> 
> As KASan was increasing THREAD_SIZE_ORDER to 2, I ran into
> this bug.
> 
> Fix it by this little oneline suggested by Ard:
> 
>   bic     \rd, sp, #(THREAD_SIZE - 1) & ~63
> 
> Where THREAD_SIZE is defined using THREAD_SIZE_ORDER.
> 
> We have to also include <linux/const.h> since the THREAD_SIZE
> expands to use the _AC() macro.
> 
> Cc: Ard Biesheuvel <ardb@kernel.org>
> Cc: Florian Fainelli <f.fainelli@gmail.com>
> Suggested-by: Ard Biesheuvel <ardb@kernel.org>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> ChangeLog v1->v2:
> - Change from using THREAD_SIZE_ORDER with a hardcoded
>   page size constant to just using THREAD_SIZE - 1
>   for the mask.
> ---
>  arch/arm/mm/proc-macros.S | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/mm/proc-macros.S b/arch/arm/mm/proc-macros.S
> index 5461d589a1e2..60ac7c5999a9 100644
> --- a/arch/arm/mm/proc-macros.S
> +++ b/arch/arm/mm/proc-macros.S
> @@ -5,6 +5,7 @@
>   *  VMA_VM_FLAGS
>   *  VM_EXEC
>   */
> +#include <linux/const.h>
>  #include <asm/asm-offsets.h>
>  #include <asm/thread_info.h>
>  
> @@ -30,7 +31,7 @@
>   * act_mm - get current->active_mm
>   */
>  	.macro	act_mm, rd
> -	bic	\rd, sp, #8128
> +	bic	\rd, sp, #(THREAD_SIZE - 1) & ~63
>  	bic	\rd, \rd, #63

We have a get_thread_info macro in asm/assembler that performs the same
task.  Maybe this should be converted to use that, and maybe the macro
should be updated to use bic, since this seems to be acceptable for
Thumb and is one instruction shorter.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTC for 0.8m (est. 1762m) line in suburbia: sync at 13.1Mbps down 424kbps up

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

      reply	other threads:[~2020-05-21 11:56 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-15 12:48 [PATCH v2] ARM: mm: make act_mm() respect THREAD_SIZE Linus Walleij
2020-05-21 11:56 ` Russell King - ARM Linux admin [this message]

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=20200521115639.GQ1551@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=ardb@kernel.org \
    --cc=f.fainelli@gmail.com \
    --cc=linus.walleij@linaro.org \
    --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).