Skip to content

x86, boot: kaslr cleanup and 64bit kaslr support

Yinghai Lu linux-efi lkml 2 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v5 Latest19 patches 3 repliesIn review
  2. v41 patch 2 repliesSuperseded

Patches in v5 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/19x86, boot: Make data from decompress_kernel stage live longerarch/x86/boot/Makefile arch/x86/boot/compressed/head_32.S arch/x86/boot/compressed/head_64.S +5 more+34 -120 replies
2/19x86, kaslr: Propagate base load address calculation v2arch/x86/boot/compressed/aslr.c arch/x86/include/asm/aslr.h arch/x86/include/asm/page_types.h +3 more+63 -130 replies
3/19x86, boot: Simplify run_size calculationarch/x86/boot/Makefile arch/x86/boot/compressed/Makefile arch/x86/boot/compressed/misc.c+16 -102 replies
4/19x86, kaslr: Kill not used run_size related code.arch/x86/boot/compressed/Makefile arch/x86/boot/compressed/head_32.S arch/x86/boot/compressed/head_64.S +3 more+6 -610 replies
5/19x86, kaslr: Use output_run_sizearch/x86/boot/compressed/aslr.c arch/x86/boot/compressed/misc.c arch/x86/boot/compressed/misc.h+11 -90 replies
6/19x86, kaslr: Consolidate mem_avoid array fillingarch/x86/boot/compressed/aslr.c+13 -160 replies
7/19x86, boot: Move z_extract_offset calculation to header.Sarch/x86/boot/Makefile arch/x86/boot/compressed/misc.c arch/x86/boot/compressed/mkpiggy.c +1 more+32 -200 replies
8/19x86, kaslr: Get correct max_addr for relocs pointerarch/x86/boot/compressed/Makefile arch/x86/boot/compressed/misc.c+2 -20 replies
9/19x86, boot: Split kernel_ident_mapping_init to another filearch/x86/include/asm/page.h arch/x86/mm/ident_map.c arch/x86/mm/init_64.c+80 -730 replies
10/19x86, 64bit: Set ident_mapping for kaslrarch/x86/boot/compressed/Makefile arch/x86/boot/compressed/aslr.c arch/x86/boot/compressed/head_64.S +3 more+140 -20 replies
11/19x86, boot: Add checking for memcpyarch/x86/boot/compressed/misc.c arch/x86/boot/compressed/misc.h arch/x86/boot/compressed/string.c+35 -90 replies
12/19x86, kaslr: Fix a bug that relocation can not be handled when kernel is loaded above 2Garch/x86/boot/compressed/misc.c+1 -10 replies
13/19x86, kaslr: Introduce struct slot_area to manage randomization slot infoarch/x86/boot/compressed/aslr.c+12 -00 replies
14/19x86, kaslr: Add two functions which will be used laterarch/x86/boot/compressed/aslr.c+51 -00 replies
15/19x86, kaslr: Introduce fetch_random_virt_offset to randomize the kernel text mapping addressarch/x86/boot/compressed/aslr.c+21 -00 replies
16/19x86, kaslr: Randomize physical and virtual address of kernel separatelyarch/x86/boot/compressed/aslr.c arch/x86/boot/compressed/misc.c arch/x86/boot/compressed/misc.h+58 -460 replies
17/19x86, kaslr: Add support of kernel physical address randomization above 4Garch/x86/boot/compressed/aslr.c+51 -170 replies
18/19x86, kaslr: Remove useless codesarch/x86/boot/compressed/aslr.c+0 -240 replies
19/19x86, kaslr: Allow random address could be below loaded addressarch/x86/boot/compressed/aslr.c+8 -20 replies

Reviews trailers per patch

1 of 19 patches has a Reviewed-by or Acked-by.

PatchKees Cook
1/19
2/19
3/19
4/19
5/19
6/19
7/19
8/19
9/19R-b
10/19
11/19
12/19
13/19
14/19
15/19
16/19
17/19
18/19
19/19

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v5 thread

Cover letter [PATCH v5 00/19] x86, boot: kaslr cleanup and 64bit kaslr support

First make ZO (arch/x86/boot/compressed/vmlinux) data region is not overwritten by VO (vmlinux) after decompress. So could pass data from ZO to VO.

Second one is second try for kaslr_setup_data support.

Patch 3-11, are kaslr clean up and enable ident mapping for He's patches.
kill run_size calculation shell scripts.
create new ident mapping for kasl 64bit, so we can cover
above 4G random kernel base, also don't need to track pagetable for 64bit bootloader (patched grub2 or kexec).
that will make mem_avoid handling simple.

Also put 7 patches from He that support random random, as I already used his patches to test the ident mapping code, and could save some rebase work for him.

also at:
git://git.kernel.org/pub/scm/linux/kernel/git/yinghai/linux-yinghai.git for-x86-4.0-rc5-aslr

Thanks

Yinghai

Baoquan He (7):
x86, kaslr: Fix a bug that relocation can not be handled when kernel is loaded above 2G x86, kaslr: Introduce struct slot_area to manage randomization slot info x86, kaslr: Add two functions which will be used later
x86, kaslr: Introduce fetch_random_virt_offset to randomize the kernel text mapping address x86, kaslr: Randomize physical and virtual address of kernel separately
x86, kaslr: Add support of kernel physical address randomization above 4G x86, kaslr: Remove useless codes

Jiri Kosina (1):
x86, kaslr: Propagate base load address calculation v2

Yinghai Lu (11):
x86, boot: Make data from decompress_kernel stage live longer x86, boot: Simplify run_size calculation
x86, kaslr: Kill not used run_size related code. x86, kaslr: Use output_run_size
x86, kaslr: Consolidate mem_avoid array filling
x86, boot: Move z_extract_offset calculation to header.S x86, kaslr: Get correct max_addr for relocs pointer x86, boot: Split kernel_ident_mapping_init to another file x86, 64bit: Set ident_mapping for kaslr
x86, boot: Add checking for memcpy
x86, kaslr: Allow random address could be below loaded address

 arch/x86/boot/Makefile                 |  13 +-
 arch/x86/boot/compressed/Makefile      |  19 ++-
 arch/x86/boot/compressed/aslr.c        | 281 ++++++++++++++++++++++++---------
 arch/x86/boot/compressed/head_32.S     |  14 +-
 arch/x86/boot/compressed/head_64.S     |  15 +-
 arch/x86/boot/compressed/misc.c        |  71 +++++----
 arch/x86/boot/compressed/misc.h        |  32 ++--
 arch/x86/boot/compressed/misc_pgt.c    |  91 +++++++++++
 arch/x86/boot/compressed/mkpiggy.c     |  28 +---
 arch/x86/boot/compressed/string.c      |  28 +++-
 arch/x86/boot/compressed/vmlinux.lds.S |   2 +
 arch/x86/boot/header.S                 |  43 ++++-
 arch/x86/include/asm/aslr.h            |  10 ++
 arch/x86/include/asm/boot.h            |  19 +++
 arch/x86/include/asm/page.h            |   5 +
 arch/x86/include/asm/page_types.h      |   2 +
 arch/x86/include/uapi/asm/bootparam.h  |   1 +
 arch/x86/kernel/asm-offsets.c          |   1 +
 arch/x86/kernel/module.c               |  10 +-
 arch/x86/kernel/setup.c                |  27 +++-
 arch/x86/kernel/vmlinux.lds.S          |   1 +
 arch/x86/mm/ident_map.c                |  74 +++++++++
 arch/x86/mm/init_64.c                  |  74 +--------
 arch/x86/tools/calc_run_size.sh        |  42 -----
 24 files changed, 610 insertions(+), 293 deletions(-)
 create mode 100644 arch/x86/boot/compressed/misc_pgt.c
 create mode 100644 arch/x86/include/asm/aslr.h
 create mode 100644 arch/x86/mm/ident_map.c
 delete mode 100644 arch/x86/tools/calc_run_size.sh
Signature · 1 line
1.8.4.5