12 Nov, 2018

2 commits

  • Pull x86 fixes from Thomas Gleixner:
    "A set of x86 fixes:

    - Cure the LDT remapping to user space on 5 level paging which ended
    up in the KASLR space

    - Remove LDT mapping before freeing the LDT pages

    - Make NFIT MCE handling more robust

    - Unbreak the VSMP build by removing the dependency on paravirt ops

    - Support broken PIT emulation on Microsoft hyperV

    - Don't trace vmware_sched_clock() to avoid tracer recursion

    - Remove -pipe from KBUILD CFLAGS which breaks clang and is also
    slower on GCC

    - Trivial coding style and typo fixes"

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/cpu/vmware: Do not trace vmware_sched_clock()
    x86/vsmp: Remove dependency on pv_irq_ops
    x86/ldt: Remove unused variable in map_ldt_struct()
    x86/ldt: Unmap PTEs for the slot before freeing LDT pages
    x86/mm: Move LDT remap out of KASLR region on 5-level paging
    acpi/nfit, x86/mce: Validate a MCE's address before using it
    acpi/nfit, x86/mce: Handle only uncorrectable machine checks
    x86/build: Remove -pipe from KBUILD_CFLAGS
    x86/hyper-v: Fix indentation in hv_do_fast_hypercall16()
    Documentation/x86: Fix typo in zero-page.txt
    x86/hyper-v: Enable PIT shutdown quirk
    clockevents/drivers/i8253: Add support for PIT shutdown quirk

    Linus Torvalds
     
  • Pull locking build fix from Thomas Gleixner:
    "A single fix for a build fail with CONFIG_PROFILE_ALL_BRANCHES=y in
    the qspinlock code"

    * 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/qspinlock: Fix compile error

    Linus Torvalds
     

11 Nov, 2018

1 commit

  • Pull tty/serial fixes from Greg KH:
    "Here are some small tty fixes for 4.20-rc2

    One of these missed the original 4.19-final release, I missed that I
    hadn't done a pull request for it as it was in linux-next and my
    branch for a long time, that's my fault.

    The others are small, fixing some reported issues and finally fixing
    the termios mess for alpha so that glibc has a chance to implement
    some missing functionality that has been pending for many years now.

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

    * tag 'tty-4.20-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
    serial: sh-sci: Fix could not remove dev_attr_rx_fifo_timeout
    arch/alpha, termios: implement BOTHER, IBSHIFT and termios2
    termios, tty/tty_baudrate.c: fix buffer overrun
    vt: fix broken display when running aptitude
    serial: sh-sci: Fix receive on SCIFA/SCIFB variants with DMA

    Linus Torvalds
     

10 Nov, 2018

5 commits

  • Pull xen fixes from Juergen Gross:
    "Several fixes, mostly for rather recent regressions when running under
    Xen"

    * tag 'for-linus-4.20a-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
    xen: remove size limit of privcmd-buf mapping interface
    xen: fix xen_qlock_wait()
    x86/xen: fix pv boot
    xen-blkfront: fix kernel panic with negotiate_mq error path
    xen/grant-table: Fix incorrect gnttab_dma_free_pages() pr_debug message
    CONFIG_XEN_PV breaks xen_create_contiguous_region on ARM

    Linus Torvalds
     
  • Pull arm64 fixes from Catalin Marinas:

    - Fix occasional page fault during boot due to memblock resizing before
    the linear map is up.

    - Define NET_IP_ALIGN to 0 to improve the DMA performance on some
    platforms.

    - lib/raid6 test build fix.

    - .mailmap update for Punit Agrawal

    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
    arm64: memblock: don't permit memblock resizing until linear mapping is up
    arm64: mm: define NET_IP_ALIGN to 0
    lib/raid6: Fix arm64 test build
    mailmap: Update email for Punit Agrawal

    Linus Torvalds
     
  • Pull block layer fixes from Jens Axboe:

    - Two fixes for an ubd regression, one for missing locking, and one for
    a missing initialization of a field. The latter was an old latent
    bug, but it's now visible and triggers (Me, Anton Ivanov)

    - Set of NVMe fixes via Christoph, but applied manually due to a git
    tree mixup (Christoph, Sagi)

    - Fix for a discard split regression, in three patches (Ming)

    - Update libata git trees (Geert)

    - SPDX identifier for sata_rcar (Kuninori Morimoto)

    - Virtual boundary merge fix (Johannes)

    - Preemptively clear memory we are going to pass to userspace, in case
    the driver does a short read (Keith)

    * tag 'for-linus-20181109' of git://git.kernel.dk/linux-block:
    block: make sure writesame bio is aligned with logical block size
    block: cleanup __blkdev_issue_discard()
    block: make sure discard bio is aligned with logical block size
    Revert "nvmet-rdma: use a private workqueue for delete"
    nvme: make sure ns head inherits underlying device limits
    nvmet: don't try to add ns to p2p map unless it actually uses it
    sata_rcar: convert to SPDX identifiers
    ubd: fix missing initialization of io_req
    block: Clear kernel memory before copying to user
    MAINTAINERS: Fix remaining pointers to obsolete libata.git
    ubd: fix missing lock around request issue
    block: respect virtual boundary mask in bvecs

    Linus Torvalds
     
  • Pull MIPS fixes from Paul Burton:
    "A couple of small MIPS fixes for 4.20:

    - Extend an array to avoid overruns on some Octeon hardware, fixing a
    bug introduced in 4.3.

    - Fix a coherent DMA regression for systems without cache-coherent
    DMA introduced in the 4.20 merge window"

    * tag 'mips_fixes_4.20_2' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux:
    MIPS: Fix `dma_alloc_coherent' returning a non-coherent allocation
    MIPS: OCTEON: fix out of bounds array access on CN68XX

    Linus Torvalds
     
  • When running function tracing on a Linux guest running on VMware
    Workstation, the guest would crash. This is due to tracing of the
    sched_clock internal call of the VMware vmware_sched_clock(), which
    causes an infinite recursion within the tracing code (clock calls must
    not be traced).

    Make vmware_sched_clock() not traced by ftrace.

    Fixes: 80e9a4f21fd7c ("x86/vmware: Add paravirt sched clock")
    Reported-by: GwanYeong Kim
    Signed-off-by: Steven Rostedt (VMware)
    Signed-off-by: Borislav Petkov
    CC: Alok Kataria
    CC: GwanYeong Kim
    CC: "H. Peter Anvin"
    CC: Ingo Molnar
    Cc: stable@vger.kernel.org
    CC: Thomas Gleixner
    CC: virtualization@lists.linux-foundation.org
    CC: x86-ml
    Link: http://lkml.kernel.org/r/20181109152207.4d3e7d70@gandalf.local.home

    Steven Rostedt (VMware)
     

09 Nov, 2018

5 commits

  • Commit a856531951dc80 ("xen: make xen_qlock_wait() nestable")
    introduced a regression for Xen guests running fully virtualized
    (HVM or PVH mode). The Xen hypervisor wouldn't return from the poll
    hypercall with interrupts disabled in case of an interrupt (for PV
    guests it does).

    So instead of disabling interrupts in xen_qlock_wait() use a nesting
    counter to avoid calling xen_clear_irq_pending() in case
    xen_qlock_wait() is nested.

    Fixes: a856531951dc80 ("xen: make xen_qlock_wait() nestable")
    Cc: stable@vger.kernel.org
    Reported-by: Sander Eikelenboom
    Signed-off-by: Juergen Gross
    Reviewed-by: Boris Ostrovsky
    Tested-by: Sander Eikelenboom
    Signed-off-by: Juergen Gross

    Juergen Gross
     
  • Pull s390 fixes from Martin Schwidefsky:

    - A fix for the pgtable_bytes misaccounting on s390. The patch changes
    common code part in regard to page table folding and adds extra
    checks to mm_[inc|dec]_nr_[pmds|puds].

    - Add FORCE for all build targets using if_changed

    - Use non-loadable phdr for the .vmlinux.info section to avoid a
    segment overlap that confuses kexec

    - Cleanup the attribute definition for the diagnostic sampling

    - Increase stack size for CONFIG_KASAN=y builds

    - Export __node_distance to fix a build error

    - Correct return code of a PMU event init function

    - An update for the default configs

    * tag 's390-4.20-2' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/perf: Change CPUM_CF return code in event init function
    s390: update defconfigs
    s390/mm: Fix ERROR: "__node_distance" undefined!
    s390/kasan: increase instrumented stack size to 64k
    s390/cpum_sf: Rework attribute definition for diagnostic sampling
    s390/mm: fix mis-accounting of pgtable_bytes
    mm: add mm_pxd_folded checks to pgtable_bytes accounting functions
    mm: introduce mm_[p4d|pud|pmd]_folded
    mm: make the __PAGETABLE_PxD_FOLDED defines non-empty
    s390: avoid vmlinux segments overlap
    s390/vdso: add missing FORCE to build targets
    s390/decompressor: add missing FORCE to build targets

    Linus Torvalds
     
  • Commit 9da3f2b7405440 ("x86/fault: BUG() when uaccess helpers fault on
    kernel addresses") introduced a regression for booting Xen PV guests.

    Xen PV guests are using __put_user() and __get_user() for accessing the
    p2m map (physical to machine frame number map) as accesses might fail
    in case of not populated areas of the map.

    With above commit using __put_user() and __get_user() for accessing
    kernel pages is no longer valid. So replace the Xen hack by adding
    appropriate p2m access functions using the default fixup handler.

    Fixes: 9da3f2b7405440 ("x86/fault: BUG() when uaccess helpers fault on kernel addresses")
    Signed-off-by: Juergen Gross
    Reviewed-by: Andrew Cooper
    Signed-off-by: Juergen Gross

    Juergen Gross
     
  • Bhupesh reports that having numerous memblock reservations at early
    boot may result in the following crash:

    Unable to handle kernel paging request at virtual address ffff80003ffe0000
    ...
    Call trace:
    __memcpy+0x110/0x180
    memblock_add_range+0x134/0x2e8
    memblock_reserve+0x70/0xb8
    memblock_alloc_base_nid+0x6c/0x88
    __memblock_alloc_base+0x3c/0x4c
    memblock_alloc_base+0x28/0x4c
    memblock_alloc+0x2c/0x38
    early_pgtable_alloc+0x20/0xb0
    paging_init+0x28/0x7f8

    This is caused by the fact that we permit memblock resizing before the
    linear mapping is up, and so the memblock_reserved() array is moved
    into memory that is not mapped yet.

    So let's ensure that this crash can no longer occur, by deferring to
    call to memblock_allow_resize() to after the linear mapping has been
    created.

    Reported-by: Bhupesh Sharma
    Acked-by: Will Deacon
    Tested-by: Marc Zyngier
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Catalin Marinas

    Ard Biesheuvel
     
  • On arm64, there is no need to add 2 bytes of padding to the start of
    each network buffer just to make the IP header appear 32-bit aligned.

    Since this might actually adversely affect DMA performance some
    platforms, let's override NET_IP_ALIGN to 0 to get rid of this
    padding.

    Acked-by: Ilias Apalodimas
    Tested-by: Ilias Apalodimas
    Acked-by: Mark Rutland
    Acked-by: Will Deacon
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Catalin Marinas

    Ard Biesheuvel
     

08 Nov, 2018

6 commits

  • The SYNC path doesn't initialize io_req->error, which can cause
    random errors. Before the conversion to blk-mq, we always
    completed requests with BLK_STS_OK status, but now we actually
    look at the error field and this issue becomes apparent.

    Signed-off-by: Anton Ivanov

    [axboe: fixed up commit message to explain what is actually going on]

    Signed-off-by: Jens Axboe

    Anton Ivanov
     
  • Alpha has had c_ispeed and c_ospeed, but still set speeds in c_cflags
    using arbitrary flags. Because BOTHER is not defined, the general
    Linux code doesn't allow setting arbitrary baud rates, and because
    CBAUDEX == 0, we can have an array overrun of the baud_rate[] table in
    drivers/tty/tty_baudrate.c if (c_cflags & CBAUD) == 037.

    Resolve both problems by #defining BOTHER to 037 on Alpha.

    However, userspace still needs to know if setting BOTHER is actually
    safe given legacy kernels (does anyone actually care about that on
    Alpha anymore?), so enable the TCGETS2/TCSETS*2 ioctls on Alpha, even
    though they use the same structure. Define struct termios2 just for
    compatibility; it is the exact same structure as struct termios. In a
    future patchset, this will be cleaned up so the uapi headers are
    usable from libc.

    Signed-off-by: H. Peter Anvin (Intel)
    Cc: Jiri Slaby
    Cc: Al Viro
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Matt Turner
    Cc: Thomas Gleixner
    Cc: Kate Stewart
    Cc: Philippe Ombredanne
    Cc: Eugene Syromiatnikov
    Cc:
    Cc:
    Cc: Johan Hovold
    Cc: Alan Cox
    Cc:
    Signed-off-by: Greg Kroah-Hartman

    H. Peter Anvin (Intel)
     
  • The function perf_init_event() creates a new event and
    assignes it to a PMU. This a done in a loop over all existing
    PMUs. For each listed PMU the event init function is called
    and if this function does return any other error than -ENOENT,
    the loop is terminated the creation of the event fails.

    If the event is invalid, return -ENOENT to try other PMUs.

    Signed-off-by: Thomas Richter
    Reviewed-by: Hendrik Brueckner
    Signed-off-by: Martin Schwidefsky

    Thomas Richter
     
  • We need to hold the device lock (and disable interrupts) while
    writing new commands, or we could be interrupted while that
    is happening and read invalid requests in the completion path.

    Fixes: 4e6da0fe8058 ("um: Convert ubd driver to blk-mq")
    Tested-by: Richard Weinberger
    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Pull ARM SoC fixes from Olof Johansson:
    "A few more fixes that have come in, and one revert of a previous fix.

    I was a bit too trigger happy to enable PREEMPT on multi_v7_defconfig,
    and it ended up regressing at least BeagleBone XM boards. While we get
    that debugged for next merge window, let's disable it again.

    Beyond that:

    - Stratix change to fix multicast filtering

    - Minor DT fixes for Renesas and i.MX

    - Ethernet fix for a Renesas board (switching main interfaces)

    - Ethernet phy regulator fix for i.MX6SX"

    * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    arm64: dts: stratix10: fix multicast filtering
    ARM: defconfig: Disable PREEMPT again on multi_v7
    arm64: dts: renesas: condor: switch from EtherAVB to GEther
    dt-bindings: arm: Fix RZ/G2E part number
    arm64: dts: renesas: r8a7795: add missing dma-names on hscif2
    ARM: dts: imx6sx-sdb: Fix enet phy regulator
    ARM: dts: fsl: Fix improperly quoted stdout-path values
    ARM: dts: imx6sll: fix typo for fsl,imx6sll-i2c node

    Linus Torvalds
     
  • …rnel/git/dinguyen/linux into fixes

    ARM: dts: stratix10: fix multicast filtering

    On Stratix 10, the EMAC has 256 hash buckets for multicast filtering. This
    needs to be specified in DTS, otherwise the stmmac driver defaults to 64
    buckets and initializes the filter incorrectly. As a result, e.g. valid
    IPv6 multicast traffic ends up being dropped.

    * tag 'stratix10_dts_fix_for_v4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux:
    arm64: dts: stratix10: fix multicast filtering

    Signed-off-by: Olof Johansson <olof@lixom.net>

    Olof Johansson
     

07 Nov, 2018

8 commits

  • …el/git/horms/renesas into fixes

    Renesas ARM Based SoC Fixes for v4.20

    * R-Car V3H (r8a77980) based Condor board
    - Switch from EtherAVB to GEther to match offical boards

    * RZ/G2E (ra8774c0) SoC: correct documentation of part number

    * R-Car H3 (r8a7795) SoC: reinstate all DMA channels on HSCIF2

    * tag 'renesas-fixes-for-v4.20' of https://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
    arm64: dts: renesas: condor: switch from EtherAVB to GEther
    dt-bindings: arm: Fix RZ/G2E part number
    arm64: dts: renesas: r8a7795: add missing dma-names on hscif2

    Signed-off-by: Olof Johansson <olof@lixom.net>

    Olof Johansson
     
  • vSMP dependency on pv_irq_ops has been removed some years ago, but the code
    still deals with pv_irq_ops.

    In short, "cap & ctl & (1 << 4)" is always returning 0, so all
    PARAVIRT/PARAVIRT_XXL code related to that can be removed.

    However, the rest of the code depends on CONFIG_PCI, so fix it accordingly.

    Rename set_vsmp_pv_ops to set_vsmp_ctl as the original name does not make
    sense anymore.

    Signed-off-by: Eial Czerwacki
    Signed-off-by: Thomas Gleixner
    Acked-by: Shai Fultheim
    Cc: Juergen Gross
    Link: https://lkml.kernel.org/r/1541439114-28297-1-git-send-email-eial@scalemp.com

    Eial Czerwacki
     
  • Splitting out the sanity check in map_ldt_struct() moved page table syncing
    into a separate function, which made the pgd variable unused. Remove it.

    [ tglx: Massaged changelog ]

    Fixes: 9bae3197e15d ("x86/ldt: Split out sanity check in map_ldt_struct()")
    Signed-off-by: Kirill A. Shutemov
    Signed-off-by: Thomas Gleixner
    Reviewed-by: Andy Lutomirski
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Cc: dave.hansen@linux.intel.com
    Cc: peterz@infradead.org
    Cc: boris.ostrovsky@oracle.com
    Cc: jgross@suse.com
    Cc: bhe@redhat.com
    Cc: willy@infradead.org
    Cc: linux-mm@kvack.org
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20181026122856.66224-4-kirill.shutemov@linux.intel.com

    Kirill A. Shutemov
     
  • modify_ldt(2) leaves the old LDT mapped after switching over to the new
    one. The old LDT gets freed and the pages can be re-used.

    Leaving the mapping in place can have security implications. The mapping is
    present in the userspace page tables and Meltdown-like attacks can read
    these freed and possibly reused pages.

    It's relatively simple to fix: unmap the old LDT and flush TLB before
    freeing the old LDT memory.

    This further allows to avoid flushing the TLB in map_ldt_struct() as the
    slot is unmapped and flushed by unmap_ldt_struct() or has never been mapped
    at all.

    [ tglx: Massaged changelog and removed the needless line breaks ]

    Fixes: f55f0501cbf6 ("x86/pti: Put the LDT in its own PGD if PTI is on")
    Signed-off-by: Kirill A. Shutemov
    Signed-off-by: Thomas Gleixner
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Cc: dave.hansen@linux.intel.com
    Cc: luto@kernel.org
    Cc: peterz@infradead.org
    Cc: boris.ostrovsky@oracle.com
    Cc: jgross@suse.com
    Cc: bhe@redhat.com
    Cc: willy@infradead.org
    Cc: linux-mm@kvack.org
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20181026122856.66224-3-kirill.shutemov@linux.intel.com

    Kirill A. Shutemov
     
  • On 5-level paging the LDT remap area is placed in the middle of the KASLR
    randomization region and it can overlap with the direct mapping, the
    vmalloc or the vmap area.

    The LDT mapping is per mm, so it cannot be moved into the P4D page table
    next to the CPU_ENTRY_AREA without complicating PGD table allocation for
    5-level paging.

    The 4 PGD slot gap just before the direct mapping is reserved for
    hypervisors, so it cannot be used.

    Move the direct mapping one slot deeper and use the resulting gap for the
    LDT remap area. The resulting layout is the same for 4 and 5 level paging.

    [ tglx: Massaged changelog ]

    Fixes: f55f0501cbf6 ("x86/pti: Put the LDT in its own PGD if PTI is on")
    Signed-off-by: Kirill A. Shutemov
    Signed-off-by: Thomas Gleixner
    Reviewed-by: Andy Lutomirski
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Cc: dave.hansen@linux.intel.com
    Cc: peterz@infradead.org
    Cc: boris.ostrovsky@oracle.com
    Cc: jgross@suse.com
    Cc: bhe@redhat.com
    Cc: willy@infradead.org
    Cc: linux-mm@kvack.org
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20181026122856.66224-2-kirill.shutemov@linux.intel.com

    Kirill A. Shutemov
     
  • The NFIT machine check handler uses the physical address from the mce
    structure, and compares it against information in the ACPI NFIT table
    to determine whether that location lies on an NVDIMM. The mce->addr
    field however may not always be valid, and this is indicated by the
    MCI_STATUS_ADDRV bit in the status field.

    Export mce_usable_address() which already performs validation for the
    address, and use it in the NFIT handler.

    Fixes: 6839a6d96f4e ("nfit: do an ARS scrub on hitting a latent media error")
    Reported-by: Robert Elliott
    Signed-off-by: Vishal Verma
    Signed-off-by: Borislav Petkov
    CC: Arnd Bergmann
    Cc: Dan Williams
    CC: Dave Jiang
    CC: elliott@hpe.com
    CC: "H. Peter Anvin"
    CC: Ingo Molnar
    CC: Len Brown
    CC: linux-acpi@vger.kernel.org
    CC: linux-edac
    CC: linux-nvdimm@lists.01.org
    CC: Qiuxu Zhuo
    CC: "Rafael J. Wysocki"
    CC: Ross Zwisler
    CC: stable
    CC: Thomas Gleixner
    CC: Tony Luck
    CC: x86-ml
    CC: Yazen Ghannam
    Link: http://lkml.kernel.org/r/20181026003729.8420-2-vishal.l.verma@intel.com

    Vishal Verma
     
  • The MCE handler for nfit devices is called for memory errors on a
    Non-Volatile DIMM and adds the error location to a 'badblocks' list.
    This list is used by the various NVDIMM drivers to avoid consuming known
    poison locations during IO.

    The MCE handler gets called for both corrected and uncorrectable errors.
    Until now, both kinds of errors have been added to the badblocks list.
    However, corrected memory errors indicate that the problem has already
    been fixed by hardware, and the resulting interrupt is merely a
    notification to Linux.

    As far as future accesses to that location are concerned, it is
    perfectly fine to use, and thus doesn't need to be included in the above
    badblocks list.

    Add a check in the nfit MCE handler to filter out corrected mce events,
    and only process uncorrectable errors.

    Fixes: 6839a6d96f4e ("nfit: do an ARS scrub on hitting a latent media error")
    Reported-by: Omar Avelar
    Signed-off-by: Vishal Verma
    Signed-off-by: Borislav Petkov
    CC: Arnd Bergmann
    CC: Dan Williams
    CC: Dave Jiang
    CC: elliott@hpe.com
    CC: "H. Peter Anvin"
    CC: Ingo Molnar
    CC: Len Brown
    CC: linux-acpi@vger.kernel.org
    CC: linux-edac
    CC: linux-nvdimm@lists.01.org
    CC: Qiuxu Zhuo
    CC: "Rafael J. Wysocki"
    CC: Ross Zwisler
    CC: stable
    CC: Thomas Gleixner
    CC: Tony Luck
    CC: x86-ml
    CC: Yazen Ghannam
    Link: http://lkml.kernel.org/r/20181026003729.8420-1-vishal.l.verma@intel.com

    Vishal Verma
     
  • Pull ARM fix from Russell King:
    "Ard spotted a typo in one of the assembly files which leads to a
    kernel oops when that code path is executed. Fix this"

    * 'spectre' of git://git.armlinux.org.uk/~rmk/linux-arm:
    ARM: 8809/1: proc-v7: fix Thumb annotation of cpu_v7_hvc_switch_mm

    Linus Torvalds
     

06 Nov, 2018

5 commits

  • Due to what appears to be a copy/paste error, the opening ENTRY()
    of cpu_v7_hvc_switch_mm() lacks a matching ENDPROC(), and instead,
    the one for cpu_v7_smc_switch_mm() is duplicated.

    Given that it is ENDPROC() that emits the Thumb annotation, the
    cpu_v7_hvc_switch_mm() routine will be called in ARM mode on a
    Thumb2 kernel, resulting in the following splat:

    Internal error: Oops - undefined instruction: 0 [#1] SMP THUMB2
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.18.0-rc1-00030-g4d28ad89189d-dirty #488
    Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
    PC is at cpu_v7_hvc_switch_mm+0x12/0x18
    LR is at flush_old_exec+0x31b/0x570
    pc : [] lr : [] psr: 00000013
    sp : ee899e50 ip : 00000000 fp : 00000001
    r10: eda28f34 r9 : eda31800 r8 : c12470e0
    r7 : eda1fc00 r6 : eda53000 r5 : 00000000 r4 : ee88c000
    r3 : c0316eec r2 : 00000001 r1 : eda53000 r0 : 6da6c000
    Flags: nzcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none

    Note the 'ISA ARM' in the last line.

    Fix this by using the correct name in ENDPROC().

    Cc:
    Fixes: 10115105cb3a ("ARM: spectre-v2: add firmware based hardening")
    Reviewed-by: Dave Martin
    Acked-by: Marc Zyngier
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Russell King

    Ard Biesheuvel
     
  • On Stratix 10, the EMAC has 256 hash buckets for multicast filtering. This
    needs to be specified in DTS, otherwise the stmmac driver defaults to 64
    buckets and initializes the filter incorrectly. As a result, e.g. valid
    IPv6 multicast traffic ends up being dropped.

    Fixes: 78cd6a9d8e15 ("arm64: dts: Add base stratix 10 dtsi")
    Cc: stable@vger.kernel.org
    Signed-off-by: Aaro Koskinen
    Signed-off-by: Dinh Nguyen

    Aaro Koskinen
     
  • Fix a MIPS `dma_alloc_coherent' regression from commit bc3ec75de545
    ("dma-mapping: merge direct and noncoherent ops") that causes a cached
    allocation to be returned on noncoherent cache systems.

    This is due to an inverted check now used in the MIPS implementation of
    `arch_dma_alloc' on the result from `dma_direct_alloc_pages' before
    doing the cached-to-uncached mapping of the allocation address obtained.
    The mapping has to be done for a non-NULL rather than NULL result,
    because a NULL result means the allocation has failed.

    Invert the check for correct operation then.

    Signed-off-by: Maciej W. Rozycki
    Signed-off-by: Paul Burton
    Reviewed-by: Christoph Hellwig
    Fixes: bc3ec75de545 ("dma-mapping: merge direct and noncoherent ops")
    Patchwork: https://patchwork.linux-mips.org/patch/20965/

    Maciej W. Rozycki
     
  • The maximum number of interfaces is returned by
    cvmx_helper_get_number_of_interfaces(), and the value is used to access
    interface_port_count[]. When CN68XX support was added, we forgot
    to increase the array size. Fix that.

    Fixes: 2c8c3f0201333 ("MIPS: Octeon: Support additional interfaces on CN68XX")
    Signed-off-by: Aaro Koskinen
    Signed-off-by: Paul Burton
    Patchwork: https://patchwork.linux-mips.org/patch/20949/
    Cc: Ralf Baechle
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Cc: stable@vger.kernel.org # v4.3+

    Aaro Koskinen
     
  • The __no_sanitize_address_or_inline and __no_kasan_or_inline defines
    are almost identical. The only difference is that __no_kasan_or_inline
    does not have the 'notrace' attribute.

    To be able to replace __no_sanitize_address_or_inline with the older
    definition, add 'notrace' to __no_kasan_or_inline and change to two
    users of __no_sanitize_address_or_inline in the s390 code.

    The 'notrace' option is necessary for e.g. the __load_psw_mask function
    in arch/s390/include/asm/processor.h. Without the option it is possible
    to trace __load_psw_mask which leads to kernel stack overflow.

    Signed-off-by: Martin Schwidefsky
    Pointed-out-by: Andrey Ryabinin
    Acked-by: Steven Rostedt (VMware)
    Signed-off-by: Linus Torvalds

    Martin Schwidefsky
     

05 Nov, 2018

8 commits

  • Commit 77b0bf55bc67 ("kbuild/Makefile: Prepare for using macros in
    inline assembly code to work around asm() related GCC inlining bugs")
    added -Wa,- to KBUILD_CFLAGS, which breaks compiling with Clang (hangs
    indefinitely at compiling init/main.o). This happens because while Clang
    accepts -pipe (and has it documented in its list of supported flags), it
    silently ignores it after this 2010 commit (thanks to Nick Desaulniers
    for tracking this down), meaning that gas just infinitely waits for
    stdin and never receives it.

    https://github.com/llvm-mirror/clang/commit/c19a12dc3d441bec62eed55e312b76c12d6d9022

    Initially, I had suggested just add -Wa,- to KBUILD_CFLAGS when GCC was
    being used but that was before realizing it is because Clang doesn't do
    anything with -pipe. H. Peter Anvin suggested checking to see if -pipe
    gives us any gains out of GCC. Turns out it might actually be hurting:

    With -pipe:

    real 3m40.813s
    real 3m44.449s
    real 3m39.648s

    Without -pipe:

    real 3m38.492s
    real 3m38.335s
    real 3m38.975s

    The issue of -Wa,- being passed along to gas without -pipe being
    supported should still probably be fixed on the LLVM side (open issue:
    https://bugs.llvm.org/show_bug.cgi?id=39410) but this is not as much of
    a workaround anymore since it helps both GCC and Clang.

    Suggested-by: H. Peter Anvin
    Signed-off-by: Nathan Chancellor
    Signed-off-by: Thomas Gleixner
    Tested-by: Nick Desaulniers
    Reviewed-by: Nadav Amit
    Reviewed-by: Nick Desaulniers
    Cc: Borislav Petkov
    Cc: Kees Cook
    Cc: Masahiro Yamada
    Link: https://github.com/ClangBuiltLinux/linux/issues/213
    Link: https://lkml.kernel.org/r/20181023231125.27976-1-natechancellor@gmail.com

    Nathan Chancellor
     
  • Remove the surplus TAB in hv_do_fast_hypercall16().

    Signed-off-by: Yi Wang
    Signed-off-by: Thomas Gleixner
    Cc: kys@microsoft.com
    Cc: haiyangz@microsoft.com
    Cc: sthemmin@microsoft.com
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Cc: devel@linuxdriverproject.org
    Cc: zhong.weidong@zte.com.cn
    Link: https://lkml.kernel.org/r/1540797451-2792-1-git-send-email-wang.yi59@zte.com.cn

    Yi Wang
     
  • …nguo/linux into fixes

    i.MX fixes for 4.20:
    - Add boot-on and always-on for imx6sx-sdb phy regulator to fix enet
    resume problem, which is exposed by commit ("regulator: fixed:
    Convert to use GPIO descriptor only").
    - Fix improperly quoted stdout-path values for imx53-ppd and
    vf610m4-colibri board.
    - Fix the typo of compatible string "fs,imx6sll-i2c" which should be
    "fsl,imx6sll-i2c".

    * tag 'imx-fixes-4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
    ARM: dts: imx6sx-sdb: Fix enet phy regulator
    ARM: dts: fsl: Fix improperly quoted stdout-path values
    ARM: dts: imx6sll: fix typo for fsl,imx6sll-i2c node

    Signed-off-by: Olof Johansson <olof@lixom.net>

    Olof Johansson
     
  • I should have let this soak for a while in linux-next, since we have at
    least one board that hit a regression from it. Revert from 4.20-rc, and
    we'll queue it for next merge window once regression is fixed.

    This reverts commit 513eb98595522bc0cb83831a9daee1d5738e66f1.

    Signed-off-by: Olof Johansson

    Olof Johansson
     
  • Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • The "official" Condor boards have always been wired to mount NFS via
    GEther, not EtherAVB -- the boards resoldered for EtherAVB were local
    to Cogent Embedded, so we've been having an unpleasant situation where
    a "normal" Condor board still can't mount NFS (unless an EtherAVB PHY
    extension board is plugged in). Switch from EtherAVB to GEther at last!

    Fixes: 8091788f3d38 ("arm64: dts: renesas: condor: add EtherAVB support")
    Signed-off-by: Sergei Shtylyov
    Signed-off-by: Simon Horman

    Sergei Shtylyov
     
  • hscif2 has 4 dmas, but has only 2 dma-names.
    This patch add missing dma-names.

    Signed-off-by: Kuninori Morimoto
    Reviewed-by: Geert Uytterhoeven
    Fixes: e0f0bda79337701a ("arm64: dts: renesas: r8a7795: sort subnodes
    of the soc node")
    Signed-off-by: Simon Horman

    Kuninori Morimoto
     
  • Bindings for "fixed-regulator" only explicitly support "gpio" property,
    not "gpios". Fix by correcting the property name.

    The enet PHYs on imx6sx-sdb needs to be explicitly reset after a power
    cycle, this can be handled by the phy-reset-gpios property. Sadly this
    is not handled on suspend: the fec driver turns phy-supply off but
    doesn't assert phy-reset-gpios again on resume.

    Since additional phy-level work is required to support powering off the
    phy in suspend fix the problem by just marking the regulator as
    "boot-on" "always-on" so that it's never turned off. This behavior is
    equivalent to older releases.

    Keep the phy-reset-gpios property on fec anyway because it is a correct
    description of board design.

    This issue was exposed by commit efdfeb079cc3 ("regulator: fixed:
    Convert to use GPIO descriptor only") which causes the "gpios" property
    to also be parsed. Before that commit the "gpios" property had no
    effect, PHY reset was only handled in the the bootloader.

    This fixes linux-next boot failures previously reported here:
    https://lore.kernel.org/patchwork/patch/982437/#1177900
    https://lore.kernel.org/patchwork/patch/994091/#1178304

    Signed-off-by: Leonard Crestez
    Signed-off-by: Shawn Guo

    Leonard Crestez