14 Nov, 2016

1 commit


23 Mar, 2016

1 commit


18 Mar, 2016

1 commit

  • Pull arm64 updates from Catalin Marinas:
    "Here are the main arm64 updates for 4.6. There are some relatively
    intrusive changes to support KASLR, the reworking of the kernel
    virtual memory layout and initial page table creation.

    Summary:

    - Initial page table creation reworked to avoid breaking large block
    mappings (huge pages) into smaller ones. The ARM architecture
    requires break-before-make in such cases to avoid TLB conflicts but
    that's not always possible on live page tables

    - Kernel virtual memory layout: the kernel image is no longer linked
    to the bottom of the linear mapping (PAGE_OFFSET) but at the bottom
    of the vmalloc space, allowing the kernel to be loaded (nearly)
    anywhere in physical RAM

    - Kernel ASLR: position independent kernel Image and modules being
    randomly mapped in the vmalloc space with the randomness is
    provided by UEFI (efi_get_random_bytes() patches merged via the
    arm64 tree, acked by Matt Fleming)

    - Implement relative exception tables for arm64, required by KASLR
    (initial code for ARCH_HAS_RELATIVE_EXTABLE added to lib/extable.c
    but actual x86 conversion to deferred to 4.7 because of the merge
    dependencies)

    - Support for the User Access Override feature of ARMv8.2: this
    allows uaccess functions (get_user etc.) to be implemented using
    LDTR/STTR instructions. Such instructions, when run by the kernel,
    perform unprivileged accesses adding an extra level of protection.
    The set_fs() macro is used to "upgrade" such instruction to
    privileged accesses via the UAO bit

    - Half-precision floating point support (part of ARMv8.2)

    - Optimisations for CPUs with or without a hardware prefetcher (using
    run-time code patching)

    - copy_page performance improvement to deal with 128 bytes at a time

    - Sanity checks on the CPU capabilities (via CPUID) to prevent
    incompatible secondary CPUs from being brought up (e.g. weird
    big.LITTLE configurations)

    - valid_user_regs() reworked for better sanity check of the
    sigcontext information (restored pstate information)

    - ACPI parking protocol implementation

    - CONFIG_DEBUG_RODATA enabled by default

    - VDSO code marked as read-only

    - DEBUG_PAGEALLOC support

    - ARCH_HAS_UBSAN_SANITIZE_ALL enabled

    - Erratum workaround Cavium ThunderX SoC

    - set_pte_at() fix for PROT_NONE mappings

    - Code clean-ups"

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (99 commits)
    arm64: kasan: Fix zero shadow mapping overriding kernel image shadow
    arm64: kasan: Use actual memory node when populating the kernel image shadow
    arm64: Update PTE_RDONLY in set_pte_at() for PROT_NONE permission
    arm64: Fix misspellings in comments.
    arm64: efi: add missing frame pointer assignment
    arm64: make mrs_s prefixing implicit in read_cpuid
    arm64: enable CONFIG_DEBUG_RODATA by default
    arm64: Rework valid_user_regs
    arm64: mm: check at build time that PAGE_OFFSET divides the VA space evenly
    arm64: KVM: Move kvm_call_hyp back to its original localtion
    arm64: mm: treat memstart_addr as a signed quantity
    arm64: mm: list kernel sections in order
    arm64: lse: deal with clobbered IP registers after branch via PLT
    arm64: mm: dump: Use VA_START directly instead of private LOWEST_ADDR
    arm64: kconfig: add submenu for 8.2 architectural features
    arm64: kernel: acpi: fix ioremap in ACPI parking protocol cpu_postboot
    arm64: Add support for Half precision floating point
    arm64: Remove fixmap include fragility
    arm64: Add workaround for Cavium erratum 27456
    arm64: mm: Mark .rodata as RO
    ...

    Linus Torvalds
     

24 Feb, 2016

2 commits

  • Instead of using absolute addresses for both the exception location
    and the fixup, use offsets relative to the exception table entry values.
    Not only does this cut the size of the exception table in half, it is
    also a prerequisite for KASLR, since absolute exception table entries
    are subject to dynamic relocation, which is incompatible with the sorting
    of the exception table that occurs at build time.

    This patch also introduces the _ASM_EXTABLE preprocessor macro (which
    exists on x86 as well) and its _asm_extable assembly counterpart, as
    shorthands to emit exception table entries.

    Acked-by: Will Deacon
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Catalin Marinas

    Ard Biesheuvel
     
  • Add support to scripts/sortextable for handling relocatable (PIE)
    executables, whose ELF type is ET_DYN, not ET_EXEC. Other than adding
    support for the new type, no changes are needed.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Catalin Marinas

    Ard Biesheuvel
     

18 Feb, 2016

1 commit

  • Huge amounts of help from Andy Lutomirski and Borislav Petkov to
    produce this. Andy provided the inspiration to add classes to the
    exception table with a clever bit-squeezing trick, Boris pointed
    out how much cleaner it would all be if we just had a new field.

    Linus Torvalds blessed the expansion with:

    ' I'd rather not be clever in order to save just a tiny amount of space
    in the exception table, which isn't really criticial for anybody. '

    The third field is another relative function pointer, this one to a
    handler that executes the actions.

    We start out with three handlers:

    1: Legacy - just jumps the to fixup IP
    2: Fault - provide the trap number in %ax to the fixup code
    3: Cleaned up legacy for the uaccess error hack

    Signed-off-by: Tony Luck
    Reviewed-by: Borislav Petkov
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/f6af78fcbd348cf4939875cfda9c19689b5e50b8.1455732970.git.tony.luck@intel.com
    Signed-off-by: Ingo Molnar

    Tony Luck
     

22 Jun, 2015

1 commit


02 Apr, 2014

1 commit


24 Jan, 2014

1 commit

  • Sort the exception table at build-time rather than during boot.

    Microblaze is the same case as AARCH64 that's why EM_MICROBLAZE
    conditional check was added to allow cross-compilation on machines which
    are not running the latest libc-dev.

    Inspired by AARCH64 commit adace89562c7 ("arm64: extable: sort the
    exception table at build time").

    Signed-off-by: Michal Simek
    Acked-by: David Daney
    Cc: Catalin Marinas
    Cc: Will Deacon
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Simek
     

25 Nov, 2013

1 commit


13 Nov, 2013

1 commit


25 Jul, 2013

1 commit


12 Jun, 2013

1 commit

  • As is done for other architectures, sort the exception table at
    build-time rather than during boot.

    Since sortextable appears to be a standalone C program relying on the
    host elf.h to provide EM_AARCH64, I've had to add a conditional check in
    order to allow cross-compilation on machines that aren't running a
    bleeding-edge libc-dev.

    Signed-off-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Will Deacon
     

04 Nov, 2012

1 commit

  • Add the ARM machine identifier to sortextable and select the
    config option so that we can sort the exception table at compile
    time. sortextable relies on a section named __ex_table existing
    in the vmlinux, but ARM's linker script places the exception
    table in the data section. Give the exception table its own
    section so that sortextable can find it.

    This allows us to skip the sorting step during boot.

    Cc: David Daney
    Signed-off-by: Stephen Boyd
    Tested-by: Will Deacon
    Signed-off-by: Russell King

    Stephen Boyd
     

26 Sep, 2012

1 commit


26 Jul, 2012

1 commit


25 Apr, 2012

1 commit

  • x86 is now using relative rather than absolute addresses in its
    exception table, so we add a sorter for these. If there are
    relocations on the __ex_table section, they are redundant and probably
    incorrect after the sort, so they are zeroed out leaving them valid
    and consistent.

    Also use the unaligned safe accessors from tools/{be,le}_byteshift.h

    Signed-off-by: David Daney
    Link: http://lkml.kernel.org/r/1335291795-26693-2-git-send-email-ddaney.cavm@gmail.com
    Signed-off-by: H. Peter Anvin

    David Daney
     

20 Apr, 2012

1 commit