From: Xiongwei Song <sxwjean@me.com>
To: linux-mm@kvack.org, x86@kernel.org
Cc: Xiongwei Song <sxwjean@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Kees Cook <keescook@chromium.org>,
"H. Peter Anvin" <hpa@zytor.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
Andy Lutomirski <luto@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Andrew Morton <akpm@linux-foundation.org>,
Arnd Bergmann <arnd@arndb.de>, Al Viro <viro@zeniv.linux.org.uk>,
Gabriel Krisman Bertazi <krisman@collabora.com>,
Lai Jiangshan <laijs@linux.alibaba.com>,
Huang Rui <ray.huang@amd.com>,
Yazen Ghannam <yazen.ghannam@amd.com>,
Kim Phillips <kim.phillips@amd.com>,
Oleg Nesterov <oleg@redhat.com>, Balbir Singh <sblbir@amazon.com>,
"David S. Miller" <davem@davemloft.net>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 0/6] Use generic code for randomization of virtual address of x86
Date: Mon, 11 Oct 2021 22:43:17 +0800 [thread overview]
Message-ID: <23A70A75-8016-4A80-9AEC-89B41F155104@me.com> (raw)
In-Reply-To: <20211011143150.318239-1-sxwjean@me.com>
> On Oct 11, 2021, at 10:31 PM, sxwjean@me.com wrote:
>
> From: Xiongwei Song <sxwjean@gmail.com>
>
> Hello,
>
> This patchset are to use generic code for randomization of virtual address
> of x86. Since the basic code logic of x86 is same as generic code, so no
> need to implement these functions on x86.
>
> Patch 1~3 are prepared to change the generic code to apply to x86.
>
> Patch 4 is to switch to generic arch_pick_mmap_layout() with
> ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT enabled. Also provided basically
> test and the result was put in commit message too.
>
> Patch 5~6 are used to handle the legacy things.
>
> Test programs(to verify if the entropy of return value of mmap is kept
> after applying the patchset):
> - C code for mmap test:
> #include <stdio.h>
> #include <stdlib.h>
> #include <sys/mman.h>
>
> int main(int argc, char *argv[])
> {
> unsigned long *addr;
>
> addr = mmap(NULL, 4096, PROT_READ, MAP_SHARED|MAP_ANONYMOUS, -1, 0);
> if (addr == MAP_FAILED) {
> printf("NULL\n");
> } else {
> printf("%lx\n", (unsigned long)addr);
> munmap(addr, 4096);
> }
>
> return 0;
> }
>
> - Shell script for collecting output of C progarm above and give a
> statistics:
> #!/bin/bash
> declare -a COUNT
>
> if [ "$1" == "" ]; then
> echo "Please give a test number!"
> exit 1
> fi
> number=$1
>
> for ((i=0; i<$number; i++))
> do
> addr=$(mmaptest)
> addr=$(((16#$addr&0xf000000000)>>36))
> COUNT[$addr]=$((COUNT[$addr]+1))
> done
>
> echo " Virtual Address Range | hit times "
> echo "----------------------------------------"
> for ((i=0; i<16; i++))
> do
> j=`echo "obase=16; $i" | bc`
> echo "0x7f${j,,}000000000 - 0x7f${j,,}ffffff000 | ${COUNT[i]}"
> done
>
> Run 10 thousands times C progam, collect the output with shell script, get
> the test results below:
> Before the patchset:
> Virtual Address Range | hit times
> ----------------------------------------
> 0x7f0000000000 - 0x7f0ffffff000 | 655
> 0x7f1000000000 - 0x7f1ffffff000 | 617
> 0x7f2000000000 - 0x7f2ffffff000 | 636
> 0x7f3000000000 - 0x7f3ffffff000 | 625
> 0x7f4000000000 - 0x7f4ffffff000 | 651
> 0x7f5000000000 - 0x7f5ffffff000 | 591
> 0x7f6000000000 - 0x7f6ffffff000 | 623
> 0x7f7000000000 - 0x7f7ffffff000 | 627
> 0x7f8000000000 - 0x7f8ffffff000 | 638
> 0x7f9000000000 - 0x7f9ffffff000 | 586
> 0x7fa000000000 - 0x7faffffff000 | 637
> 0x7fb000000000 - 0x7fbffffff000 | 607
> 0x7fc000000000 - 0x7fcffffff000 | 618
> 0x7fd000000000 - 0x7fdffffff000 | 656
> 0x7fe000000000 - 0x7feffffff000 | 614
> 0x7ff000000000 - 0x7ffffffff000 | 619
>
> After the patchset:
> Virtual Address Range | hit times
> ----------------------------------------
> 0x7f0000000000 - 0x7f0ffffff000 | 661
> 0x7f1000000000 - 0x7f1ffffff000 | 645
> 0x7f2000000000 - 0x7f2ffffff000 | 609
> 0x7f3000000000 - 0x7f3ffffff000 | 594
> 0x7f4000000000 - 0x7f4ffffff000 | 616
> 0x7f5000000000 - 0x7f5ffffff000 | 622
> 0x7f6000000000 - 0x7f6ffffff000 | 617
> 0x7f7000000000 - 0x7f7ffffff000 | 582
> 0x7f8000000000 - 0x7f8ffffff000 | 618
> 0x7f9000000000 - 0x7f9ffffff000 | 629
> 0x7fa000000000 - 0x7faffffff000 | 635
> 0x7fb000000000 - 0x7fbffffff000 | 625
> 0x7fc000000000 - 0x7fcffffff000 | 614
> 0x7fd000000000 - 0x7fdffffff000 | 610
> 0x7fe000000000 - 0x7feffffff000 | 648
> 0x7ff000000000 - 0x7ffffffff000 | 675
Hi Kees,
Sorry, I have no idea about the entropy measure tools, so I designed a test program
myself. I’m not sure if my test is enough. Or could you please share a better method to
measure entropy?
Regards,
Xiongwei
next prev parent reply other threads:[~2021-10-11 14:43 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-11 14:31 [PATCH v2 0/6] Use generic code for randomization of virtual address of x86 sxwjean
2021-10-11 14:31 ` [PATCH v2 1/6] mm/util: Assign a meaningful value to mmap_legacy_base sxwjean
2021-10-11 14:31 ` [PATCH v2 2/6] mm/util: Allow to pass a specific task size when getting mmapping base sxwjean
2021-10-11 14:31 ` [PATCH v2 3/6] mm/util: Support CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES sxwjean
2021-10-11 14:31 ` [PATCH v2 4/6] x86/mm: Randomize VA with generic arch_pick_mmap_layout() sxwjean
2021-10-11 14:31 ` [PATCH v2 5/6] x86/mm: Discard the defination of HAVE_ARCH_PICK_MMAP_LAYOUT sxwjean
2021-10-11 14:31 ` [PATCH v2 6/6] x86/elf: Discard ARCH_HAS_ELF_RANDOMIZE selection sxwjean
2021-10-11 14:43 ` Xiongwei Song [this message]
2021-10-15 13:47 ` [PATCH v2 0/6] Use generic code for randomization of virtual address of x86 Xiongwei Song
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=23A70A75-8016-4A80-9AEC-89B41F155104@me.com \
--to=sxwjean@me.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=davem@davemloft.net \
--cc=hpa@zytor.com \
--cc=keescook@chromium.org \
--cc=kim.phillips@amd.com \
--cc=krisman@collabora.com \
--cc=laijs@linux.alibaba.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=ray.huang@amd.com \
--cc=sblbir@amazon.com \
--cc=sxwjean@gmail.com \
--cc=tglx@linutronix.de \
--cc=viro@zeniv.linux.org.uk \
--cc=x86@kernel.org \
--cc=yazen.ghannam@amd.com \
/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).