loongarch.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: "xtex" <xtex@envs.net>
To: xry111@xry111.site
Cc: chenhuacai@kernel.org, kernel@xen0n.name, guoren@kernel.org,
	jiaxun.yang@flygoat.com, loongarch@lists.linux.dev,
	linux-kernel@vger.kernel.org, xtex@astrafall.org
Subject: Re: [PATCH] LoongArch: Increase default mmap randomization bits
Date: Mon, 13 Apr 2026 02:05:26 -0000	[thread overview]
Message-ID: <177604592650.1255.8930268562622890190@mail.envs.net> (raw)
In-Reply-To: <b04efb5af4f5019adbb0adb8543bd84b8157e8e1.camel@xry111.site>

Xi Ruoyao <xry111@xry111.site> wrote:
>On Sun, 2026-04-12 at 20:32 +0800, Xi Ruoyao wrote:
>&gt; On Sun, 2026-04-12 at 20:24 +0800, Huacai Chen wrote:
>&gt; &gt; On Sun, Apr 12, 2026 at 11:49 AM Bingwu Zhang &lt;xtex@envs.net&gt; wrote:
>&gt; &gt; &gt; 
>&gt; &gt; &gt; On Sunday, March 29, 2026 11:48:02 AM China Standard Time Huacai
>&gt; &gt; &gt; Chen wrote:
>&gt; &gt; &gt; &gt; Hi, Bingwu,
>&gt; &gt; &gt; &gt; 
>&gt; &gt; &gt; &gt; On Sun, Mar 29, 2026 at 6:59 AM Bingwu Zhang &lt;xtex@envs.net&gt;
>&gt; &gt; &gt; &gt; wrote:
>&gt; &gt; &gt; &gt; &gt; From: Bingwu Zhang &lt;xtex@astrafall.org&gt;
>&gt; &gt; &gt; &gt; &gt; 
>&gt; &gt; &gt; &gt; &gt; Increase default mmap randomization bits from 12 to 18 on 64-
>&gt; &gt; &gt; &gt; &gt; bit
>&gt; &gt; &gt; &gt; &gt; platforms for better strength.
>&gt; &gt; &gt; &gt; &gt; 
>&gt; &gt; &gt; &gt; &gt; The original default, 12, means that ASLR offset has only (1
>&gt; &gt; &gt; &gt; &gt; &lt;&lt; 12) =
>&gt; &gt; &gt; &gt; &gt; 4096 possibilities. On average, it can be brute-forced in 2048
>&gt; &gt; &gt; &gt; &gt; attempts.
>&gt; &gt; &gt; &gt; &gt; If a service is configured to restart automatically or can be
>&gt; &gt; &gt; &gt; &gt; started
>&gt; &gt; &gt; &gt; &gt; easily (e.g. execve a suid program), then trying for 4k times
>&gt; &gt; &gt; &gt; &gt; can be
>&gt; &gt; &gt; &gt; &gt; done in one day even when each attempt takes 20s.
>&gt; &gt; &gt; &gt; &gt; Increasing it to 18 makes brute-force much more difficult and
>&gt; &gt; &gt; &gt; &gt; leaves
>&gt; &gt; &gt; &gt; &gt; more time for operators to find out attacks.
>&gt; &gt; &gt; &gt; &gt; 
>&gt; &gt; &gt; &gt; &gt; On 64-bit platforms, virtual address space is cheap, so the
>&gt; &gt; &gt; &gt; &gt; randomization bits can be increased safely without disturbing
>&gt; &gt; &gt; &gt; &gt; userland
>&gt; &gt; &gt; &gt; &gt; much and security comes first instead of availability.
>&gt; &gt; &gt; &gt; 
>&gt; &gt; &gt; &gt; Don&#x27;t change ARCH_MMAP_RND_BITS_MIN because it may compact
>&gt; &gt; &gt; &gt; performance, and you cannot blindly increase
>&gt; &gt; &gt; &gt; ARCH_MMAP_RND_BITS_MAX
>&gt; &gt; &gt; &gt; because it should no more than &quot;VA_BITS - PAGE_SHIFT - 3&quot; (see
>&gt; &gt; &gt; &gt; arch/riscv/Kconfig and arch/csky/Kconfig). For LoongArch,
>&gt; &gt; &gt; &gt; VA_BITS can
>&gt; &gt; &gt; &gt; be 39 (half of VA40), PAGE_SHIFT can be 16 (64KB page), so
>&gt; &gt; &gt; &gt; ARCH_MMAP_RND_BITS_MAX can only increase up to 20 (39 - 16 - 3
>&gt; &gt; &gt; &gt; =20).
>&gt; &gt; &gt; 
>&gt; &gt; &gt; Sorry for the late reply.
>&gt; &gt; &gt; 
>&gt; &gt; &gt; It was my mistake that I didn&#x27;t notice the upper bound of MAX.
>&gt; &gt; &gt; Thank you for
>&gt; &gt; &gt; pointing out!
>&gt; &gt; &gt; 
>&gt; &gt; &gt; However, I didn&#x27;t get where increasing MIN could compact
>&gt; &gt; &gt; performance.
>&gt; &gt; &gt; Theoretically, the only difference is that the gap between heaps
>&gt; &gt; &gt; and stacks
>&gt; &gt; &gt; are larger, from [128, 128+64]M to [128, 128+4096]M. This
>&gt; &gt; &gt; shouldn&#x27;t affect
>&gt; &gt; &gt; performance much. MIPS once used MIN=16, RISC-V 64 and PowerPC and
>&gt; &gt; &gt; ARM 64 are
>&gt; &gt; &gt; using 18, and x86-64 is using 28, but I hadn&#x27;t heard anyone
>&gt; &gt; &gt; complaining about
>&gt; &gt; &gt; the performance.
>&gt; &gt; &gt; 
>&gt; &gt; &gt; I ran some benchmarks last weekend using the LLVM build benchmark
>&gt; &gt; &gt; of AOSC OS
>&gt; &gt; &gt; https://github.com/AOSC-Dev/buildbot-benchmark/blob/master/buildbot-benchmark.bash
>&gt; &gt; &gt; and here are the results
>&gt; &gt; &gt; 
>&gt; &gt; &gt; Processor       Rand bits       Time/secs
>&gt; &gt; &gt; Average Variance        Range
>&gt; &gt; &gt; 3C6000/S        18      612.927 614.394 614.513 613.343 614.76
>&gt; &gt; &gt; 613.9874        0.515637840000006       1.83299999999997
>&gt; &gt; &gt; 3C6000/S        12      614.322 613.93  614.825 613.859
>&gt; &gt; &gt; 615.875 614.5622        0.548874160000007       2.01599999999996
>&gt; &gt; &gt; 3A5000  18      3547.165        3548.764        3552.192       
>&gt; &gt; &gt; 3545.697
>&gt; &gt; &gt; 3547.567        3548.277        4.79228759999993       
>&gt; &gt; &gt; 6.49499999999989
>&gt; &gt; &gt; 3A5000  12      3549.029        3551.894        3549.191       
>&gt; &gt; &gt; 3567.869
>&gt; &gt; &gt; 3587.409        3561.0784       222.052853440003       
>&gt; &gt; &gt; 38.3800000000001
>&gt; &gt; &gt; 
>&gt; &gt; &gt; I didn&#x27;t see any statistically meaningful performance defect.
>&gt; &gt; OK, then we can increase ARCH_MMAP_RND_BITS_MIN, but the range 18~20
>&gt; &gt; seems too small and then useless, can we consider using 15~20?
>&gt; 
>&gt; IMO ARCH_MMAP_RND_BITS_MIN should be just the minimal that the
>&gt; architecture can support, not related to security.  If you want to
>&gt; recommend a value for increasing security you&#x27;d set
>&gt; ARCH_MMAP_RND_BITS_DEFAULT a larger value instead.

okay, I agree to abandon this patch. But,
Isn't the minimum supported value 0 (i.e. mmap ASLR disabled)? There is always a fixed 128M gap between heaps and stack tops so 0 should work.

>
>I.e. for example if someone is building a distro running on an embedded
>system where avoiding addr space fragmentation is more important than
>security we shouldn&#x27;t be stopping him to decrease ARCH_MMAP_RND_BITS
>unless he reaches the architecture minimum.  Instead we should increase
>ARCH_MMAP_RND_BITS_DEFAULT so the &quot;typical&quot; systems get a larger
>ARCH_MMAP_RND_BITS.

Is address space fragmentation that important on embedded systems? Isn't it obvious that you will never have 300G RAM on embedded systems?

>
>-- 
>Xi Ruoyao &lt;xry111@xry111.site&gt;

Bingwu Zhang

  parent reply	other threads:[~2026-04-13  2:05 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-28 22:59 [PATCH] LoongArch: Increase default mmap randomization bits Bingwu Zhang
2026-03-29  3:48 ` Huacai Chen
2026-04-12  3:49   ` Bingwu Zhang
2026-04-12 12:24     ` Huacai Chen
2026-04-12 12:32       ` Xi Ruoyao
2026-04-12 12:36         ` Huacai Chen
2026-04-12 12:37         ` Xi Ruoyao
2026-04-12 12:42           ` Huacai Chen
2026-04-13  2:05           ` xtex [this message]
2026-04-13  2:05           ` xtex
2026-04-13  2:38             ` Huacai Chen

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=177604592650.1255.8930268562622890190@mail.envs.net \
    --to=xtex@envs.net \
    --cc=chenhuacai@kernel.org \
    --cc=guoren@kernel.org \
    --cc=jiaxun.yang@flygoat.com \
    --cc=kernel@xen0n.name \
    --cc=linux-kernel@vger.kernel.org \
    --cc=loongarch@lists.linux.dev \
    --cc=xry111@xry111.site \
    --cc=xtex@astrafall.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 read-only IMAP folder(s) and NNTP newsgroup(s).