linux/arch/x86/boot/compressed
Arvind Sankar a86255fe52 x86/boot/compressed/64: Use 32-bit (zero-extended) MOV for z_output_len
z_output_len is the size of the decompressed payload (i.e. vmlinux +
vmlinux.relocs) and is generated as an unsigned 32-bit quantity by
mkpiggy.c.

The current

  movq $z_output_len, %r9

instruction generates a sign-extended move to %r9. Using

  movl $z_output_len, %r9d

will instead zero-extend into %r9, which is appropriate for an unsigned
32-bit quantity. This is also what is already done for z_input_len, the
size of the compressed payload.

[ bp:

  Also, z_output_len cannot be a 64-bit quantity because it participates
  in:

  init_size:              .long INIT_SIZE         # kernel initialization size

  through INIT_SIZE which is a 32-bit quantity determined by the .long
  directive (vs .quad for 64-bit). Furthermore, if it really must be a
  64-bit quantity, then the insn must be MOVABS which can accommodate a
  64-bit immediate and which the toolchain does not generate automatically.
]

Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20200211173333.1722739-1-nivedita@alum.mit.edu
2020-02-12 11:15:31 +01:00
..
.gitignore
acpi.c x86/boot: Handle malformed SRAT tables during early ACPI parsing 2020-01-31 20:03:23 +01:00
cmdline.c x86/boot: Build the command line parsing code unconditionally 2019-02-01 11:51:01 +01:00
cpuflags.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
early_serial_console.c
eboot.c efi/libstub/x86: Fix EFI server boot failure 2020-01-25 10:14:36 +01:00
eboot.h efi/libstub: Annotate firmware routines as __efiapi 2019-12-25 10:49:19 +01:00
efi_thunk_64.S efi/libstub/x86: Use mandatory 16-byte stack alignment in mixed mode 2020-01-20 08:13:00 +01:00
error.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
error.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
head_32.S Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2020-01-28 11:08:13 -08:00
head_64.S x86/boot/compressed/64: Use 32-bit (zero-extended) MOV for z_output_len 2020-02-12 11:15:31 +01:00
kaslr_64.c x86/mm: Decouple dynamic __PHYSICAL_MASK from AMD SME 2018-06-06 13:38:01 +02:00
kaslr.c ACPI updates for 5.5-rc1 2019-11-26 19:25:25 -08:00
kernel_info.S x86/boot: Introduce setup_indirect 2019-11-12 16:21:15 +01:00
Makefile kbuild: rename hostprogs-y/always to hostprogs/always-y 2020-02-04 01:53:07 +09:00
mem_encrypt.S x86/asm: Change all ENTRY+ENDPROC to SYM_FUNC_* 2019-10-18 11:58:33 +02:00
misc.c x86/boot/64: Round memory hole size up to next PMD page 2019-10-11 18:47:23 +02:00
misc.h x86, boot: Remove multiple copy of static function sanitize_boot_params() 2019-07-18 21:41:57 +02:00
mkpiggy.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 268 2019-06-05 17:30:29 +02:00
pgtable_64.c x86/boot/compressed/64: Fix missing initialization in find_trampoline_placement() 2019-08-27 10:46:27 +02:00
pgtable.h x86/boot/compressed/64: Set EFER.LME=1 in 32-bit trampoline before returning to long mode 2019-01-29 21:58:59 +01:00
string.c x86/boot: Provide KASAN compatible aliases for string routines 2019-05-24 08:44:16 +02:00
vmlinux.lds.S x86/build: Use the single-argument OUTPUT_FORMAT() linker script command 2019-01-16 12:21:53 +01:00