26 Sep, 2018

2 commits

  • [ Upstream commit 61f0d55569463a1af897117ff47d202b0ccb2e24 ]

    The following commit:

    7e1550b8f208 ("efi: Drop type and attribute checks in efi_mem_desc_lookup()")

    refactored the implementation of efi_mem_desc_lookup() so that the type
    check is moved to the callers, one of which is the x86 version of
    efi_arch_mem_reserve(), where we added a modified check that only takes
    EFI_BOOT_SERVICES_DATA regions into account.

    This is reasonable, since it is the only memory type that requires this,
    but doing so uncovered some unexpected behavior in the ESRT code, which
    permits the ESRT table to reside in other types of memory than what the
    UEFI spec mandates (i.e., EFI_BOOT_SERVICES_DATA), and unconditionally
    calls efi_mem_reserve() on the region in question. This may result in
    errors such as

    esrt: Reserving ESRT space from 0x000000009c810318 to 0x000000009c810350.
    efi: Failed to lookup EFI memory descriptor for 0x000000009c810318

    when the ESRT table is not in EFI_BOOT_SERVICES_DATA memory, but we try
    to reserve it nonetheless.

    So make the call to efi_mem_reserve() conditional on the memory type.

    Signed-off-by: Ard Biesheuvel
    Cc: Linus Torvalds
    Cc: Peter Jones
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Ard Biesheuvel
     
  • [ Upstream commit 3ea86495aef2f6de26b7cb1599ba350dd6a0c521 ]

    The BGRT code validates the contents of the table against the UEFI
    memory map, and so it expects it to be mapped when the code runs.

    On ARM, this is currently not the case, since we tear down the early
    mapping after efi_init() completes, and only create the permanent
    mapping in arm_enable_runtime_services(), which executes as an early
    initcall, but still leaves a window where the UEFI memory map is not
    mapped.

    So move the call to efi_memmap_unmap() from efi_init() to
    arm_enable_runtime_services().

    Signed-off-by: Ard Biesheuvel
    [will: fold in EFI_MEMMAP attribute check from Ard]
    Signed-off-by: Will Deacon
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Ard Biesheuvel
     

20 Sep, 2018

1 commit

  • [ Upstream commit 45ca3f76de0507ecf143f770570af2942f263812 ]

    static struct ro_vpd and rw_vpd are initialized by vpd_sections_init()
    in vpd_probe() based on header's ro and rw sizes.
    In vpd_remove() vpd_section_destroy() performs deinitialization based
    on enabled flag, which is set to true by vpd_sections_init().
    This leads to call of vpd_section_destroy() on already destroyed section
    for probe-release-probe-release sequence if first probe performs
    ro_vpd initialization and second probe does not initialize it.

    The patch adds changing enabled flag on vpd_section_destroy and adds
    cleanup on the error path of vpd_sections_init.

    Found by Linux Driver Verification project (linuxtesting.org).

    Signed-off-by: Anton Vasilyev
    Reviewed-by: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Anton Vasilyev
     

18 Aug, 2018

1 commit

  • commit 23f1b8d938c861ee0bbb786162f7ce0685f722ec upstream.

    On driver remove(), all objects created during probe() should be
    removed, but sysfs qemu_fw_cfg/rev file was left. Also reorder
    functions to match probe() error cleanup code.

    Cc: stable@vger.kernel.org
    Signed-off-by: Marc-André Lureau
    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Sudip Mukherjee
    Signed-off-by: Greg Kroah-Hartman

    Marc-André Lureau
     

21 Jun, 2018

1 commit

  • [ Upstream commit 4f74d72aa7067e75af92fbab077e6d7d0210be66 ]

    When CONFIG_RANDOMIZE_TEXT_OFFSET=y, TEXT_OFFSET is an arbitrary
    multiple of PAGE_SIZE in the interval [0, 2MB).

    The EFI stub does not account for the potential misalignment of
    TEXT_OFFSET relative to EFI_KIMG_ALIGN, and produces a randomized
    physical offset which is always a round multiple of EFI_KIMG_ALIGN.
    This may result in statically allocated objects whose alignment exceeds
    PAGE_SIZE to appear misaligned in memory. This has been observed to
    result in spurious stack overflow reports and failure to make use of
    the IRQ stacks, and theoretically could result in a number of other
    issues.

    We can OR in the low bits of TEXT_OFFSET to ensure that we have the
    necessary offset (and hence preserve the misalignment of TEXT_OFFSET
    relative to EFI_KIMG_ALIGN), so let's do that.

    Reported-by: Kim Phillips
    Tested-by: Kim Phillips
    [ardb: clarify comment and commit log, drop unneeded parens]
    Signed-off-by: Mark Rutland
    Signed-off-by: Ard Biesheuvel
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Fixes: 6f26b3671184c36d ("arm64: kaslr: increase randomization granularity")
    Link: http://lkml.kernel.org/r/20180518140841.9731-2-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Mark Rutland
     

30 May, 2018

2 commits

  • [ Upstream commit 6b31a2fa1e8f7bc6c2a474b4a12dad7a145cf83d ]

    Currently the arm/arm64 runtime code registers the runtime servies
    pagetables with ptdump regardless of whether runtime services page
    tables have been created.

    As efi_mm.pgd is NULL in these cases, attempting to dump the efi page
    tables results in a NULL pointer dereference in the ptdump code:

    /sys/kernel/debug# cat efi_page_tables
    [ 479.522600] Unable to handle kernel NULL pointer dereference at virtual address 00000000
    [ 479.522715] Mem abort info:
    [ 479.522764] ESR = 0x96000006
    [ 479.522850] Exception class = DABT (current EL), IL = 32 bits
    [ 479.522899] SET = 0, FnV = 0
    [ 479.522937] EA = 0, S1PTW = 0
    [ 479.528200] Data abort info:
    [ 479.528230] ISV = 0, ISS = 0x00000006
    [ 479.528317] CM = 0, WnR = 0
    [ 479.528317] user pgtable: 4k pages, 48-bit VAs, pgd = 0000000064ab0cb0
    [ 479.528449] [0000000000000000] *pgd=00000000fbbe4003, *pud=00000000fb66e003, *pmd=0000000000000000
    [ 479.528600] Internal error: Oops: 96000006 [#1] PREEMPT SMP
    [ 479.528664] Modules linked in:
    [ 479.528699] CPU: 0 PID: 2457 Comm: cat Not tainted 4.15.0-rc3-00065-g2ad2ee7ecb5c-dirty #7
    [ 479.528799] Hardware name: FVP Base (DT)
    [ 479.528899] pstate: 00400009 (nzcv daif +PAN -UAO)
    [ 479.528941] pc : walk_pgd.isra.1+0x20/0x1d0
    [ 479.529011] lr : ptdump_walk_pgd+0x30/0x50
    [ 479.529105] sp : ffff00000bf4bc20
    [ 479.529185] x29: ffff00000bf4bc20 x28: 0000ffff9d22e000
    [ 479.529271] x27: 0000000000020000 x26: ffff80007b4c63c0
    [ 479.529358] x25: 00000000014000c0 x24: ffff80007c098900
    [ 479.529445] x23: ffff00000bf4beb8 x22: 0000000000000000
    [ 479.529532] x21: ffff00000bf4bd70 x20: 0000000000000001
    [ 479.529618] x19: ffff00000bf4bcb0 x18: 0000000000000000
    [ 479.529760] x17: 000000000041a1c8 x16: ffff0000082139d8
    [ 479.529800] x15: 0000ffff9d3c6030 x14: 0000ffff9d2527f4
    [ 479.529924] x13: 00000000000003f3 x12: 0000000000000038
    [ 479.530000] x11: 0000000000000003 x10: 0101010101010101
    [ 479.530099] x9 : 0000000017e94050 x8 : 000000000000003f
    [ 479.530226] x7 : 0000000000000000 x6 : 0000000000000000
    [ 479.530313] x5 : 0000000000000001 x4 : 0000000000000000
    [ 479.530416] x3 : ffff000009069fd8 x2 : 0000000000000000
    [ 479.530500] x1 : 0000000000000000 x0 : 0000000000000000
    [ 479.530599] Process cat (pid: 2457, stack limit = 0x000000005d1b0e6f)
    [ 479.530660] Call trace:
    [ 479.530746] walk_pgd.isra.1+0x20/0x1d0
    [ 479.530833] ptdump_walk_pgd+0x30/0x50
    [ 479.530907] ptdump_show+0x10/0x20
    [ 479.530920] seq_read+0xc8/0x470
    [ 479.531023] full_proxy_read+0x60/0x90
    [ 479.531100] __vfs_read+0x18/0x100
    [ 479.531180] vfs_read+0x88/0x160
    [ 479.531267] SyS_read+0x48/0xb0
    [ 479.531299] el0_svc_naked+0x20/0x24
    [ 479.531400] Code: 91400420 f90033a0 a90707a2 f9403fa0 (f9400000)
    [ 479.531499] ---[ end trace bfe8e28d8acb2b67 ]---
    Segmentation fault

    Let's avoid this problem by only registering the tables after their
    successful creation, which is also less confusing when EFI runtime
    services are not in use.

    Reported-by: Will Deacon
    Signed-off-by: Mark Rutland
    Signed-off-by: Ard Biesheuvel
    Acked-by: Will Deacon
    Cc: Linus Torvalds
    Cc: Matt Fleming
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20180308080020.22828-2-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Mark Rutland
     
  • [ Upstream commit 90fe6f8ff00a07641ca893d64f75ca22ce77cca2 ]

    The test which ensures that the DMI type 1 structure is long enough
    to hold the UUID is off by one. It would fail if the structure is
    exactly 24 bytes long, while that's sufficient to hold the UUID.

    I don't expect this bug to cause problem in practice because all
    implementations I have seen had length 8, 25 or 27 bytes, in line
    with the SMBIOS specifications. But let's fix it still.

    Signed-off-by: Jean Delvare
    Fixes: a814c3597a6b ("firmware: dmi_scan: Check DMI structure length")
    Reviewed-by: Mika Westerberg
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Jean Delvare
     

26 Apr, 2018

1 commit

  • [ Upstream commit a7770ae194569e96a93c48aceb304edded9cc648 ]

    The handling of empty DMI strings looks quite broken to me:
    * Strings from 1 to 7 spaces are not considered empty.
    * True empty DMI strings (string index set to 0) are not considered
    empty, and result in allocating a 0-char string.
    * Strings with invalid index also result in allocating a 0-char
    string.
    * Strings starting with 8 spaces are all considered empty, even if
    non-space characters follow (sounds like a weird thing to do, but
    I have actually seen occurrences of this in DMI tables before.)
    * Strings which are considered empty are reported as 8 spaces,
    instead of being actually empty.

    Some of these issues are the result of an off-by-one error in memcmp,
    the rest is incorrect by design.

    So let's get it square: missing strings and strings made of only
    spaces, regardless of their length, should be treated as empty and
    no memory should be allocated for them. All other strings are
    non-empty and should be allocated.

    Signed-off-by: Jean Delvare
    Fixes: 79da4721117f ("x86: fix DMI out of memory problems")
    Cc: Parag Warudkar
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Jean Delvare
     

17 Feb, 2018

3 commits

  • Commit e78eef554a91 upstream.

    Since PSCI 1.0 allows the SMCCC version to be (indirectly) probed,
    let's do that at boot time, and expose the version of the calling
    convention as part of the psci_ops structure.

    Acked-by: Lorenzo Pieralisi
    Reviewed-by: Robin Murphy
    Tested-by: Ard Biesheuvel
    Signed-off-by: Marc Zyngier
    Signed-off-by: Catalin Marinas
    Signed-off-by: Will Deacon
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Greg Kroah-Hartman

    Marc Zyngier
     
  • Commit 09a8d6d48499 upstream.

    In order to call into the firmware to apply workarounds, it is
    useful to find out whether we're using HVC or SMC. Let's expose
    this through the psci_ops.

    Acked-by: Lorenzo Pieralisi
    Reviewed-by: Robin Murphy
    Tested-by: Ard Biesheuvel
    Signed-off-by: Marc Zyngier
    Signed-off-by: Catalin Marinas
    Signed-off-by: Will Deacon
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Greg Kroah-Hartman

    Marc Zyngier
     
  • Commit d68e3ba5303f upstream.

    Entry into recent versions of ARM Trusted Firmware will invalidate the CPU
    branch predictor state in order to protect against aliasing attacks.

    This patch exposes the PSCI "VERSION" function via psci_ops, so that it
    can be invoked outside of the PSCI driver where necessary.

    Acked-by: Lorenzo Pieralisi
    Signed-off-by: Will Deacon
    Signed-off-by: Catalin Marinas
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Greg Kroah-Hartman

    Will Deacon
     

04 Feb, 2018

1 commit

  • commit a5c03c31af2291f13689d11760c0b59fb70c9a5a upstream.

    Some distributions have turned on the reset attack mitigation feature,
    which is designed to force the platform to clear the contents of RAM if
    the machine is shut down uncleanly. However, in order for the platform
    to be able to determine whether the shutdown was clean or not, userspace
    has to be configured to clear the MemoryOverwriteRequest flag on
    shutdown - otherwise the firmware will end up clearing RAM on every
    reboot, which is unnecessarily time consuming. Add some additional
    clarity to the kconfig text to reduce the risk of systems being
    configured this way.

    Signed-off-by: Matthew Garrett
    Acked-by: Ard Biesheuvel
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar
    Signed-off-by: Greg Kroah-Hartman

    Matthew Garrett
     

10 Jan, 2018

1 commit

  • commit f24c4d478013d82bd1b943df566fff3561d52864 upstream.

    Commit:

    82c3768b8d68 ("efi/capsule-loader: Use a cached copy of the capsule header")

    ... refactored the capsule loading code that maps the capsule header,
    to avoid having to map it several times.

    However, as it turns out, the vmap() call we ended up removing did not
    just map the header, but the entire capsule image, and dropping this
    virtual mapping breaks capsules that are processed by the firmware
    immediately (i.e., without a reboot).

    Unfortunately, that change was part of a larger refactor that allowed
    a quirk to be implemented for Quark, which has a non-standard memory
    layout for capsules, and we have slightly painted ourselves into a
    corner by allowing quirk code to mangle the capsule header and memory
    layout.

    So we need to fix this without breaking Quark. Fortunately, Quark does
    not appear to care about the virtual mapping, and so we can simply
    do a partial revert of commit:

    2a457fb31df6 ("efi/capsule-loader: Use page addresses rather than struct page pointers")

    ... and create a vmap() mapping of the entire capsule (including header)
    based on the reinstated struct page array, unless running on Quark, in
    which case we pass the capsule header copy as before.

    Reported-by: Ge Song
    Tested-by: Bryan O'Donoghue
    Tested-by: Ge Song
    Signed-off-by: Ard Biesheuvel
    Cc: Dave Young
    Cc: Linus Torvalds
    Cc: Matt Fleming
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Fixes: 82c3768b8d68 ("efi/capsule-loader: Use a cached copy of the capsule header")
    Link: http://lkml.kernel.org/r/20180102172110.17018-3-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar
    Signed-off-by: Greg Kroah-Hartman

    Ard Biesheuvel
     

14 Dec, 2017

5 commits

  • commit 89c5a2d34bda58319e3075e8e7dd727ea25a435c upstream.

    The remapping result of memremap() should be freed with memunmap(), not kfree().

    Signed-off-by: Pan Bian
    Signed-off-by: Ard Biesheuvel
    Cc: H. Peter Anvin
    Cc: Linus Torvalds
    Cc: Matt Fleming
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20171206095010.24170-3-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar
    Signed-off-by: Greg Kroah-Hartman

    Pan Bian
     
  • commit af97a77bc01ce49a466f9d4c0125479e2e2230b6 upstream.

    Thanks to the scripts/leaking_addresses.pl script, it was found that
    some EFI values should not be readable by non-root users.

    So make them root-only, and to do that, add a __ATTR_RO_MODE() macro to
    make this easier, and use it in other places at the same time.

    Reported-by: Linus Torvalds
    Tested-by: Dave Young
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Ard Biesheuvel
    Cc: H. Peter Anvin
    Cc: Matt Fleming
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20171206095010.24170-2-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • commit 0631fb8b027f5968c2f5031f0b3ff7be3e4bebcc upstream.

    The driver exit function needs to unregister both platform device and
    driver. Also, during registration, register driver first and perform
    error checks.

    Fixes: 049a59db34eb ("firmware: Google VPD sysfs driver")
    Signed-off-by: Guenter Roeck
    Tested-by: Randy Dunlap
    Reviewed-by: Dmitry Torokhov
    Signed-off-by: Greg Kroah-Hartman

    Guenter Roeck
     
  • commit e4b28b3c3a405b251fa25db58abe1512814a680a upstream.

    It doesn't make sense to have /sys/firmware/vpd if the device is not
    instantiated, so tie its lifetime to the device.

    Fixes: 049a59db34eb ("firmware: Google VPD sysfs driver")
    Signed-off-by: Guenter Roeck
    Reviewed-by: Dmitry Torokhov
    Tested-by: Randy Dunlap
    Signed-off-by: Greg Kroah-Hartman

    Guenter Roeck
     
  • commit 811d7e0215fb738fb9a9f0bcb1276516ad161ed1 upstream.

    vpd sections are initialized during probe and thus should be destroyed
    in the remove function.

    Fixes: 049a59db34eb ("firmware: Google VPD sysfs driver")
    Signed-off-by: Guenter Roeck
    Reviewed-by: Dmitry Torokhov
    Tested-by: Randy Dunlap
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Greg Kroah-Hartman

    Guenter Roeck
     

05 Nov, 2017

1 commit

  • Pull ARM fixes from Russell King:

    - omit EFI memory map sorting, which was recently introduced, but
    caused problems with the decompressor due to additional sections
    being emitted.

    - avoid unaligned load fault-generating instructions in the
    decompressor by switching to a private unaligned implementation.

    - add a symbol into the decompressor to further debug non-boot
    situations (ld's documentation is extremely poor for how "." works,
    ld doesn't seem to follow its own documentation!)

    - parse endian information to sparse

    * 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm:
    ARM: add debug ".edata_real" symbol
    ARM: 8716/1: pass endianness info to sparse
    efi/libstub: arm: omit sorting of the UEFI memory map
    ARM: 8715/1: add a private asm/unaligned.h

    Linus Torvalds
     

03 Nov, 2017

1 commit

  • …el/git/gregkh/driver-core

    Pull initial SPDX identifiers from Greg KH:
    "License cleanup: add SPDX license identifiers to some files

    Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the
    'GPL-2.0' SPDX license identifier. The SPDX identifier is a legally
    binding shorthand, which can be used instead of the full boiler plate
    text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart
    and Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset
    of the use cases:

    - file had no licensing information it it.

    - file was a */uapi/* one with no licensing information in it,

    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to
    license had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied
    to a file was done in a spreadsheet of side by side results from of
    the output of two independent scanners (ScanCode & Windriver)
    producing SPDX tag:value files created by Philippe Ombredanne.
    Philippe prepared the base worksheet, and did an initial spot review
    of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537
    files assessed. Kate Stewart did a file by file comparison of the
    scanner results in the spreadsheet to determine which SPDX license
    identifier(s) to be applied to the file. She confirmed any
    determination that was not immediately clear with lawyers working with
    the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:

    - Files considered eligible had to be source code files.

    - Make and config files were included as candidates if they contained
    >5 lines of source

    - File already had some variant of a license header in it (even if <5
    lines).

    All documentation files were explicitly excluded.

    The following heuristics were used to determine which SPDX license
    identifiers to apply.

    - when both scanners couldn't find any license traces, file was
    considered to have no license information in it, and the top level
    COPYING file license applied.

    For non */uapi/* files that summary was:

    SPDX license identifier # files
    ---------------------------------------------------|-------
    GPL-2.0 11139

    and resulted in the first patch in this series.

    If that file was a */uapi/* path one, it was "GPL-2.0 WITH
    Linux-syscall-note" otherwise it was "GPL-2.0". Results of that
    was:

    SPDX license identifier # files
    ---------------------------------------------------|-------
    GPL-2.0 WITH Linux-syscall-note 930

    and resulted in the second patch in this series.

    - if a file had some form of licensing information in it, and was one
    of the */uapi/* ones, it was denoted with the Linux-syscall-note if
    any GPL family license was found in the file or had no licensing in
    it (per prior point). Results summary:

    SPDX license identifier # files
    ---------------------------------------------------|------
    GPL-2.0 WITH Linux-syscall-note 270
    GPL-2.0+ WITH Linux-syscall-note 169
    ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) 21
    ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 17
    LGPL-2.1+ WITH Linux-syscall-note 15
    GPL-1.0+ WITH Linux-syscall-note 14
    ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) 5
    LGPL-2.0+ WITH Linux-syscall-note 4
    LGPL-2.1 WITH Linux-syscall-note 3
    ((GPL-2.0 WITH Linux-syscall-note) OR MIT) 3
    ((GPL-2.0 WITH Linux-syscall-note) AND MIT) 1

    and that resulted in the third patch in this series.

    - when the two scanners agreed on the detected license(s), that
    became the concluded license(s).

    - when there was disagreement between the two scanners (one detected
    a license but the other didn't, or they both detected different
    licenses) a manual inspection of the file occurred.

    - In most cases a manual inspection of the information in the file
    resulted in a clear resolution of the license that should apply
    (and which scanner probably needed to revisit its heuristics).

    - When it was not immediately clear, the license identifier was
    confirmed with lawyers working with the Linux Foundation.

    - If there was any question as to the appropriate license identifier,
    the file was flagged for further research and to be revisited later
    in time.

    In total, over 70 hours of logged manual review was done on the
    spreadsheet to determine the SPDX license identifiers to apply to the
    source files by Kate, Philippe, Thomas and, in some cases,
    confirmation by lawyers working with the Linux Foundation.

    Kate also obtained a third independent scan of the 4.13 code base from
    FOSSology, and compared selected files where the other two scanners
    disagreed against that SPDX file, to see if there was new insights.
    The Windriver scanner is based on an older version of FOSSology in
    part, so they are related.

    Thomas did random spot checks in about 500 files from the spreadsheets
    for the uapi headers and agreed with SPDX license identifier in the
    files he inspected. For the non-uapi files Thomas did random spot
    checks in about 15000 files.

    In initial set of patches against 4.14-rc6, 3 files were found to have
    copy/paste license identifier errors, and have been fixed to reflect
    the correct identifier.

    Additionally Philippe spent 10 hours this week doing a detailed manual
    inspection and review of the 12,461 patched files from the initial
    patch version early this week with:

    - a full scancode scan run, collecting the matched texts, detected
    license ids and scores

    - reviewing anything where there was a license detected (about 500+
    files) to ensure that the applied SPDX license was correct

    - reviewing anything where there was no detection but the patch
    license was not GPL-2.0 WITH Linux-syscall-note to ensure that the
    applied SPDX license was correct

    This produced a worksheet with 20 files needing minor correction. This
    worksheet was then exported into 3 different .csv files for the
    different types of files to be modified.

    These .csv files were then reviewed by Greg. Thomas wrote a script to
    parse the csv files and add the proper SPDX tag to the file, in the
    format that the file expected. This script was further refined by Greg
    based on the output to detect more types of files automatically and to
    distinguish between header and source .c files (which need different
    comment types.) Finally Greg ran the script using the .csv files to
    generate the patches.

    Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org>
    Reviewed-by: Philippe Ombredanne <pombredanne@nexb.com>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"

    * tag 'spdx_identifiers-4.14-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    License cleanup: add SPDX license identifier to uapi header files with a license
    License cleanup: add SPDX license identifier to uapi header files with no license
    License cleanup: add SPDX GPL-2.0 license identifier to files with no license

    Linus Torvalds
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

28 Oct, 2017

1 commit

  • ARM shares its EFI stub implementation with arm64, which has some
    special handling in the virtual remapping code to
    a) make sure that we can map everything even if the OS executes
    with 64k page size, and
    b) make sure that adjacent regions with the same attributes are not
    reordered or moved apart in memory.

    The latter is a workaround for a 'feature' that was shortly recommended
    by UEFI spec v2.5, but deprecated shortly after, due to the fact that
    it broke many OS installers, including non-Linux ones, and it was never
    widely implemented for ARM systems. Before implementing b), the arm64
    code simply rounded up all regions to 64 KB granularity, but given that
    that results in moving adjacent regions apart, it had to be refined when
    b) was implemented.

    The adjacency check requires a sort() pass, due to the fact that the
    UEFI spec does not mandate any ordering, and the inclusion of the
    lib/sort.c code into the ARM EFI stub is causing some trouble with
    the decompressor build due to the fact that its EXPORT_SYMBOL() call
    triggers the creation of ksymtab/kcrctab sections.

    So let's simply do away with the adjacency check for ARM, and simply put
    all UEFI runtime regions together if they have the same memory attributes.
    This is guaranteed to work, given that ARM only supports 4 KB pages,
    and allows us to remove the sort() call entirely.

    Signed-off-by: Ard Biesheuvel
    Acked-by: Will Deacon
    Tested-by: Jeffy Chen
    Tested-by: Gregory CLEMENT
    Tested-by: Matthias Brugger
    Signed-off-by: Russell King

    Ard Biesheuvel
     

25 Oct, 2017

2 commits

  • Commit:

    e69176d68d26 ("ef/libstub/arm/arm64: Randomize the base of the UEFI rt services region")

    implemented randomization of the virtual mapping that the OS chooses for
    the UEFI runtime services. This was motivated by the fact that UEFI usually
    does not bother to specify any permission restrictions for those regions,
    making them prime real estate for exploitation now that the OS is getting
    more and more careful not to leave any R+W+X mapped regions lying around.

    However, this randomization breaks assumptions in the resume from
    hibernation code, which expects all memory regions populated by UEFI to
    remain in the same place, including their virtual mapping into the OS
    memory space. While this assumption may not be entirely reasonable in the
    first place, breaking it deliberately does not make a lot of sense either.
    So let's refrain from this randomization pass if CONFIG_HIBERNATION=y.

    Signed-off-by: Ard Biesheuvel
    Cc: James Morse
    Cc: Linus Torvalds
    Cc: Matt Fleming
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20171025100448.26056-3-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar

    Ard Biesheuvel
     
  • If "qcaps.capsule_count" is ULONG_MAX then "qcaps.capsule_count + 1"
    will overflow to zero and kcalloc() will return the ZERO_SIZE_PTR. We
    try to dereference it inside the loop and crash.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Matt Fleming
    Signed-off-by: Ard Biesheuvel
    Acked-by: Ivan Hu
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Fixes: ff6301dabc3c ("efi: Add efi_test driver for exporting UEFI runtime service interfaces")
    Link: http://lkml.kernel.org/r/20171025100448.26056-2-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar

    Dan Carpenter
     

14 Sep, 2017

1 commit


13 Sep, 2017

1 commit


11 Sep, 2017

1 commit

  • Pull ARM SoC driver updates from Olof Johansson:
    "This branch contains platform-related driver updates for ARM and ARM64.

    Among them:

    - Reset driver updates:
    + New API for dealing with arrays of resets
    + Make unimplemented {de,}assert return success on shared resets
    + MSDKv1 driver
    + Removal of obsolete Gemini reset driver
    + Misc updates for sunxi and Uniphier

    - SoC drivers:
    + Platform SoC driver registration on Tegra
    + Shuffle of Qualcomm drivers into a submenu
    + Allwinner A64 support for SRAM
    + Renesas R-Car R3 support
    + Power domains for Rockchip RK3366

    - Misc updates and smaller fixes for TEE and memory driver
    subsystems"

    * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (54 commits)
    firmware: arm_scpi: fix endianness of dev_id in struct dev_pstate_set
    soc/tegra: fuse: Add missing semi-colon
    soc/tegra: Restrict SoC device registration to Tegra
    drivers: soc: sunxi: add support for A64 and its SRAM C
    drivers: soc: sunxi: add support for remapping func value to reg value
    drivers: soc: sunxi: fix error processing on base address when claiming
    dt-bindings: add binding for Allwinner A64 SRAM controller and SRAM C
    bus: sunxi-rsb: Enable by default for ARM64
    soc/tegra: Register SoC device
    firmware: tegra: set drvdata earlier
    memory: Convert to using %pOF instead of full_name
    soc: Convert to using %pOF instead of full_name
    bus: Convert to using %pOF instead of full_name
    firmware: Convert to using %pOF instead of full_name
    soc: mediatek: add SCPSYS power domain driver for MediaTek MT7622 SoC
    soc: mediatek: add header files required for MT7622 SCPSYS dt-binding
    soc: mediatek: reduce code duplication of scpsys_probe across all SoCs
    dt-bindings: soc: update the binding document for SCPSYS on MediaTek MT7622 SoC
    reset: uniphier: add analog amplifiers reset control
    reset: uniphier: add video input subsystem reset control
    ...

    Linus Torvalds
     

08 Sep, 2017

1 commit

  • Pull EFI updates from Ingo Molnar:
    "The main changes in this cycle were:

    - Transparently fall back to other poweroff method(s) if EFI poweroff
    fails (and returns)

    - Use separate PE/COFF section headers for the RX and RW parts of the
    ARM stub loader so that the firmware can use strict mapping
    permissions

    - Add support for requesting the firmware to wipe RAM at warm reboot

    - Increase the size of the random seed obtained from UEFI so CRNG
    fast init can complete earlier

    - Update the EFI framebuffer address if it points to a BAR that gets
    moved by the PCI resource allocation code

    - Enable "reset attack mitigation" of TPM environments: this is
    enabled if the kernel is configured with
    CONFIG_RESET_ATTACK_MITIGATION=y.

    - Clang related fixes

    - Misc cleanups, constification, refactoring, etc"

    * 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    efi/bgrt: Use efi_mem_type()
    efi: Move efi_mem_type() to common code
    efi/reboot: Make function pointer orig_pm_power_off static
    efi/random: Increase size of firmware supplied randomness
    efi/libstub: Enable reset attack mitigation
    firmware/efi/esrt: Constify attribute_group structures
    firmware/efi: Constify attribute_group structures
    firmware/dcdbas: Constify attribute_group structures
    arm/efi: Split zImage code and data into separate PE/COFF sections
    arm/efi: Replace open coded constants with symbolic ones
    arm/efi: Remove pointless dummy .reloc section
    arm/efi: Remove forbidden values from the PE/COFF header
    drivers/fbdev/efifb: Allow BAR to be moved instead of claiming it
    efi/reboot: Fall back to original power-off method if EFI_RESET_SHUTDOWN returns
    efi/arm/arm64: Add missing assignment of efi.config_table
    efi/libstub/arm64: Set -fpie when building the EFI stub
    efi/libstub/arm64: Force 'hidden' visibility for section markers
    efi/libstub/arm64: Use hidden attribute for struct screen_info reference
    efi/arm: Don't mark ACPI reclaim memory as MEMBLOCK_NOMAP

    Linus Torvalds
     

06 Sep, 2017

3 commits

  • Pull ACPI updates from Rafael Wysocki:
    "These include a usual ACPICA code update (this time to upstream
    revision 20170728), a fix for a boot crash on some systems with
    Thunderbolt devices connected at boot time, a rework of the handling
    of PCI bridges when setting up device wakeup, new support for Apple
    device properties, support for DMA configurations reported via ACPI on
    ARM64, APEI-related updates, ACPI EC driver updates and assorted minor
    modifications in several places.

    Specifics:

    - Update the ACPICA code in the kernel to upstream revision 20170728
    including:
    * Alias operator handling update (Bob Moore).
    * Deferred resolution of reference package elements (Bob Moore).
    * Support for the _DMA method in walk resources (Bob Moore).
    * Tables handling update and support for deferred table
    verification (Lv Zheng).
    * Update of SMMU models for IORT (Robin Murphy).
    * Compiler and disassembler updates (Alex James, Erik Schmauss,
    Ganapatrao Kulkarni, James Morse).
    * Tools updates (Erik Schmauss, Lv Zheng).
    * Assorted minor fixes and cleanups (Bob Moore, Kees Cook, Lv
    Zheng, Shao Ming).

    - Rework the initialization of non-wakeup GPEs with method handlers
    in order to address a boot crash on some systems with Thunderbolt
    devices connected at boot time where we miss an early hotplug event
    due to a delay in GPE enabling (Rafael Wysocki).

    - Rework the handling of PCI bridges when setting up ACPI-based
    device wakeup in order to avoid disabling wakeup for bridges
    prematurely (Rafael Wysocki).

    - Consolidate Apple DMI checks throughout the tree, add support for
    Apple device properties to the device properties framework and use
    these properties for the handling of I2C and SPI devices on Apple
    systems (Lukas Wunner).

    - Add support for _DMA to the ACPI-based device properties lookup
    code and make it possible to use the information from there to
    configure DMA regions on ARM64 systems (Lorenzo Pieralisi).

    - Fix several issues in the APEI code, add support for exporting the
    BERT error region over sysfs and update APEI MAINTAINERS entry with
    reviewers information (Borislav Petkov, Dongjiu Geng, Loc Ho, Punit
    Agrawal, Tony Luck, Yazen Ghannam).

    - Fix a potential initialization ordering issue in the ACPI EC driver
    and clean it up somewhat (Lv Zheng).

    - Update the ACPI SPCR driver to extend the existing XGENE 8250
    workaround in it to a new platform (m400) and to work around an
    Xgene UART clock issue (Graeme Gregory).

    - Add a new utility function to the ACPI core to support using ACPI
    OEM ID / OEM Table ID / Revision for system identification in
    blacklisting or similar and switch over the existing code already
    using this information to this new interface (Toshi Kani).

    - Fix an xpower PMIC issue related to GPADC reads that always return
    0 without extra pin manipulations (Hans de Goede).

    - Add statements to print debug messages in a couple of places in the
    ACPI core for easier diagnostics (Rafael Wysocki).

    - Clean up the ACPI processor driver slightly (Colin Ian King, Hanjun
    Guo).

    - Clean up the ACPI x86 boot code somewhat (Andy Shevchenko).

    - Add a quirk for Dell OptiPlex 9020M to the ACPI backlight driver
    (Alex Hung).

    - Assorted fixes, cleanups and updates related to ACPI (Amitoj Kaur
    Chawla, Bhumika Goyal, Frank Rowand, Jean Delvare, Punit Agrawal,
    Ronald Tschalär, Sumeet Pawnikar)"

    * tag 'acpi-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (75 commits)
    ACPI / APEI: Suppress message if HEST not present
    intel_pstate: convert to use acpi_match_platform_list()
    ACPI / blacklist: add acpi_match_platform_list()
    ACPI, APEI, EINJ: Subtract any matching Register Region from Trigger resources
    ACPI: make device_attribute const
    ACPI / sysfs: Extend ACPI sysfs to provide access to boot error region
    ACPI: APEI: fix the wrong iteration of generic error status block
    ACPI / processor: make function acpi_processor_check_duplicates() static
    ACPI / EC: Clean up EC GPE mask flag
    ACPI: EC: Fix possible issues related to EC initialization order
    ACPI / PM: Add debug statements to acpi_pm_notify_handler()
    ACPI: Add debug statements to acpi_global_event_handler()
    ACPI / scan: Enable GPEs before scanning the namespace
    ACPICA: Make it possible to enable runtime GPEs earlier
    ACPICA: Dispatch active GPEs at init time
    ACPI: SPCR: work around clock issue on xgene UART
    ACPI: SPCR: extend XGENE 8250 workaround to m400
    ACPI / LPSS: Don't abort ACPI scan on missing mem resource
    mailbox: pcc: Drop uninformative output during boot
    ACPI/IORT: Add IORT named component memory address limits
    ...

    Linus Torvalds
     
  • Pull char/misc driver updates from Greg KH:
    "Here is the big char/misc driver update for 4.14-rc1.

    Lots of different stuff in here, it's been an active development cycle
    for some reason. Highlights are:

    - updated binder driver, this brings binder up to date with what
    shipped in the Android O release, plus some more changes that
    happened since then that are in the Android development trees.

    - coresight updates and fixes

    - mux driver file renames to be a bit "nicer"

    - intel_th driver updates

    - normal set of hyper-v updates and changes

    - small fpga subsystem and driver updates

    - lots of const code changes all over the driver trees

    - extcon driver updates

    - fmc driver subsystem upadates

    - w1 subsystem minor reworks and new features and drivers added

    - spmi driver updates

    Plus a smattering of other minor driver updates and fixes.

    All of these have been in linux-next with no reported issues for a
    while"

    * tag 'char-misc-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (244 commits)
    ANDROID: binder: don't queue async transactions to thread.
    ANDROID: binder: don't enqueue death notifications to thread todo.
    ANDROID: binder: Don't BUG_ON(!spin_is_locked()).
    ANDROID: binder: Add BINDER_GET_NODE_DEBUG_INFO ioctl
    ANDROID: binder: push new transactions to waiting threads.
    ANDROID: binder: remove proc waitqueue
    android: binder: Add page usage in binder stats
    android: binder: fixup crash introduced by moving buffer hdr
    drivers: w1: add hwmon temp support for w1_therm
    drivers: w1: refactor w1_slave_show to make the temp reading functionality separate
    drivers: w1: add hwmon support structures
    eeprom: idt_89hpesx: Support both ACPI and OF probing
    mcb: Fix an error handling path in 'chameleon_parse_cells()'
    MCB: add support for SC31 to mcb-lpc
    mux: make device_type const
    char: virtio: constify attribute_group structures.
    Documentation/ABI: document the nvmem sysfs files
    lkdtm: fix spelling mistake: "incremeted" -> "incremented"
    perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file
    nvmem: include linux/err.h from header
    ...

    Linus Torvalds
     
  • Pull arm64 updates from Catalin Marinas:

    - VMAP_STACK support, allowing the kernel stacks to be allocated in the
    vmalloc space with a guard page for trapping stack overflows. One of
    the patches introduces THREAD_ALIGN and changes the generic
    alloc_thread_stack_node() to use this instead of THREAD_SIZE (no
    functional change for other architectures)

    - Contiguous PTE hugetlb support re-enabled (after being reverted a
    couple of times). We now have the semantics agreed in the generic mm
    layer together with API improvements so that the architecture code
    can detect between contiguous and non-contiguous huge PTEs

    - Initial support for persistent memory on ARM: DC CVAP instruction
    exposed to user space (HWCAP) and the in-kernel pmem API implemented

    - raid6 improvements for arm64: faster algorithm for the delta syndrome
    and implementation of the recovery routines using Neon

    - FP/SIMD refactoring and removal of support for Neon in interrupt
    context. This is in preparation for full SVE support

    - PTE accessors converted from inline asm to cmpxchg so that we can use
    LSE atomics if available (ARMv8.1)

    - Perf support for Cortex-A35 and A73

    - Non-urgent fixes and cleanups

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (75 commits)
    arm64: cleanup {COMPAT_,}SET_PERSONALITY() macro
    arm64: introduce separated bits for mm_context_t flags
    arm64: hugetlb: Cleanup setup_hugepagesz
    arm64: Re-enable support for contiguous hugepages
    arm64: hugetlb: Override set_huge_swap_pte_at() to support contiguous hugepages
    arm64: hugetlb: Override huge_pte_clear() to support contiguous hugepages
    arm64: hugetlb: Handle swap entries in huge_pte_offset() for contiguous hugepages
    arm64: hugetlb: Add break-before-make logic for contiguous entries
    arm64: hugetlb: Spring clean huge pte accessors
    arm64: hugetlb: Introduce pte_pgprot helper
    arm64: hugetlb: set_huge_pte_at Add WARN_ON on !pte_present
    arm64: kexec: have own crash_smp_send_stop() for crash dump for nonpanic cores
    arm64: dma-mapping: Mark atomic_pool as __ro_after_init
    arm64: dma-mapping: Do not pass data to gen_pool_set_algo()
    arm64: Remove the !CONFIG_ARM64_HW_AFDBM alternative code paths
    arm64: Ignore hardware dirty bit updates in ptep_set_wrprotect()
    arm64: Move PTE_RDONLY bit handling out of set_pte_at()
    kvm: arm64: Convert kvm_set_s2pte_readonly() from inline asm to cmpxchg()
    arm64: Convert pte handling from inline asm to using (cmp)xchg
    arm64: neon/efi: Make EFI fpsimd save/restore variables static
    ...

    Linus Torvalds
     

05 Sep, 2017

1 commit

  • Pull x86 mm changes from Ingo Molnar:
    "PCID support, 5-level paging support, Secure Memory Encryption support

    The main changes in this cycle are support for three new, complex
    hardware features of x86 CPUs:

    - Add 5-level paging support, which is a new hardware feature on
    upcoming Intel CPUs allowing up to 128 PB of virtual address space
    and 4 PB of physical RAM space - a 512-fold increase over the old
    limits. (Supercomputers of the future forecasting hurricanes on an
    ever warming planet can certainly make good use of more RAM.)

    Many of the necessary changes went upstream in previous cycles,
    v4.14 is the first kernel that can enable 5-level paging.

    This feature is activated via CONFIG_X86_5LEVEL=y - disabled by
    default.

    (By Kirill A. Shutemov)

    - Add 'encrypted memory' support, which is a new hardware feature on
    upcoming AMD CPUs ('Secure Memory Encryption', SME) allowing system
    RAM to be encrypted and decrypted (mostly) transparently by the
    CPU, with a little help from the kernel to transition to/from
    encrypted RAM. Such RAM should be more secure against various
    attacks like RAM access via the memory bus and should make the
    radio signature of memory bus traffic harder to intercept (and
    decrypt) as well.

    This feature is activated via CONFIG_AMD_MEM_ENCRYPT=y - disabled
    by default.

    (By Tom Lendacky)

    - Enable PCID optimized TLB flushing on newer Intel CPUs: PCID is a
    hardware feature that attaches an address space tag to TLB entries
    and thus allows to skip TLB flushing in many cases, even if we
    switch mm's.

    (By Andy Lutomirski)

    All three of these features were in the works for a long time, and
    it's coincidence of the three independent development paths that they
    are all enabled in v4.14 at once"

    * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (65 commits)
    x86/mm: Enable RCU based page table freeing (CONFIG_HAVE_RCU_TABLE_FREE=y)
    x86/mm: Use pr_cont() in dump_pagetable()
    x86/mm: Fix SME encryption stack ptr handling
    kvm/x86: Avoid clearing the C-bit in rsvd_bits()
    x86/CPU: Align CR3 defines
    x86/mm, mm/hwpoison: Clear PRESENT bit for kernel 1:1 mappings of poison pages
    acpi, x86/mm: Remove encryption mask from ACPI page protection type
    x86/mm, kexec: Fix memory corruption with SME on successive kexecs
    x86/mm/pkeys: Fix typo in Documentation/x86/protection-keys.txt
    x86/mm/dump_pagetables: Speed up page tables dump for CONFIG_KASAN=y
    x86/mm: Implement PCID based optimization: try to preserve old TLB entries using PCID
    x86: Enable 5-level paging support via CONFIG_X86_5LEVEL=y
    x86/mm: Allow userspace have mappings above 47-bit
    x86/mm: Prepare to expose larger address space to userspace
    x86/mpx: Do not allow MPX if we have mappings above 47-bit
    x86/mm: Rename tasksize_32bit/64bit to task_size_32bit/64bit()
    x86/xen: Redefine XEN_ELFNOTE_INIT_P2M using PUD_SIZE * PTRS_PER_PUD
    x86/mm/dump_pagetables: Fix printout of p4d level
    x86/mm/dump_pagetables: Generalize address normalization
    x86/boot: Fix memremap() related build failure
    ...

    Linus Torvalds
     

04 Sep, 2017

1 commit

  • * acpi-sysfs:
    ACPI / sysfs: Extend ACPI sysfs to provide access to boot error region

    * acpi-apei:
    ACPI / APEI: Suppress message if HEST not present
    ACPI, APEI, EINJ: Subtract any matching Register Region from Trigger resources
    ACPI: APEI: fix the wrong iteration of generic error status block
    ACPI: APEI: Enable APEI multiple GHES source to share a single external IRQ

    * acpi-blacklist:
    intel_pstate: convert to use acpi_match_platform_list()
    ACPI / blacklist: add acpi_match_platform_list()

    Rafael J. Wysocki
     

30 Aug, 2017

1 commit


28 Aug, 2017

1 commit


26 Aug, 2017

5 commits

  • Avoid effectively open-coding the function.

    Signed-off-by: Jan Beulich
    Signed-off-by: Ard Biesheuvel
    Cc: Jan Beulich
    Cc: Linus Torvalds
    Cc: Matt Fleming
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20170825155019.6740-6-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar

    Jan Beulich
     
  • This follows efi_mem_attributes(), as it's similarly generic. Drop
    __weak from that one though (and don't introduce it for efi_mem_type()
    in the first place) to make clear that other overrides to these
    functions are really not intended.

    Signed-off-by: Jan Beulich
    Signed-off-by: Ard Biesheuvel
    Cc: Jan Beulich
    Cc: Linus Torvalds
    Cc: Matt Fleming
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20170825155019.6740-5-ard.biesheuvel@linaro.org
    [ Resolved conflict with: f99afd08a45f: (efi: Update efi_mem_type() to return an error rather than 0) ]
    Signed-off-by: Ingo Molnar

    Jan Beulich
     
  • The function pointer orig_pm_power_off is local to the source and does
    not need to be in global scope, so make it static.

    Cleans up sparse warning:
    symbol 'orig_pm_power_off' was not declared. Should it be static?

    Signed-off-by: Colin Ian King
    Signed-off-by: Ard Biesheuvel
    Cc: Linus Torvalds
    Cc: Matt Fleming
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20170825155019.6740-4-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar

    Colin Ian King
     
  • The crng code requires at least 64 bytes (2 * CHACHA20_BLOCK_SIZE)
    to complete the fast boot-time init, so provide that many bytes
    when invoking UEFI protocols to seed the entropy pool. Also, add
    a notice so we can tell from the boot log when the seeding actually
    took place.

    Signed-off-by: Ard Biesheuvel
    Cc: Linus Torvalds
    Cc: Matt Fleming
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20170825155019.6740-3-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar

    Ard Biesheuvel
     
  • If a machine is reset while secrets are present in RAM, it may be
    possible for code executed after the reboot to extract those secrets
    from untouched memory. The Trusted Computing Group specified a mechanism
    for requesting that the firmware clear all RAM on reset before booting
    another OS. This is done by setting the MemoryOverwriteRequestControl
    variable at startup. If userspace can ensure that all secrets are
    removed as part of a controlled shutdown, it can reset this variable to
    0 before triggering a hardware reboot.

    Signed-off-by: Matthew Garrett
    Signed-off-by: Ard Biesheuvel
    Cc: Linus Torvalds
    Cc: Matt Fleming
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20170825155019.6740-2-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar

    Matthew Garrett