11 Sep, 2016

1 commit

  • Pull libnvdimm fixes from Dan Williams:
    "nvdimm fixes for v4.8, two of them are tagged for -stable:

    - Fix devm_memremap_pages() to use track_pfn_insert(). Otherwise,
    DAX pmd mappings end up with an uncached pgprot, and unusable
    performance for the device-dax interface. The device-dax interface
    appeared in 4.7 so this is tagged for -stable.

    - Fix a couple VM_BUG_ON() checks in the show_smaps() path to
    understand DAX pmd entries. This fix is tagged for -stable.

    - Fix a mis-merge of the nfit machine-check handler to flip the
    polarity of an if() to match the final version of the patch that
    Vishal sent for 4.8-rc1. Without this the nfit machine check
    handler never detects / inserts new 'badblocks' entries which
    applications use to identify lost portions of files.

    - For test purposes, fix the nvdimm_clear_poison() path to operate on
    legacy / simulated nvdimm memory ranges. Without this fix a test
    can set badblocks, but never clear them on these ranges.

    - Fix the range checking done by dax_dev_pmd_fault(). This is not
    tagged for -stable since this problem is mitigated by specifying
    aligned resources at device-dax setup time.

    These patches have appeared in a next release over the past week. The
    recent rebase you can see in the timestamps was to drop an invalid fix
    as identified by the updated device-dax unit tests [1]. The -mm
    touches have an ack from Andrew"

    [1]: "[ndctl PATCH 0/3] device-dax test for recent kernel bugs"
    https://lists.01.org/pipermail/linux-nvdimm/2016-September/006855.html

    * 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
    libnvdimm: allow legacy (e820) pmem region to clear bad blocks
    nfit, mce: Fix SPA matching logic in MCE handler
    mm: fix cache mode of dax pmd mappings
    mm: fix show_smap() for zone_device-pmd ranges
    dax: fix mapping size check

    Linus Torvalds
     

10 Sep, 2016

2 commits

  • track_pfn_insert() in vmf_insert_pfn_pmd() is marking dax mappings as
    uncacheable rendering them impractical for application usage. DAX-pte
    mappings are cached and the goal of establishing DAX-pmd mappings is to
    attain more performance, not dramatically less (3 orders of magnitude).

    track_pfn_insert() relies on a previous call to reserve_memtype() to
    establish the expected page_cache_mode for the range. While memremap()
    arranges for reserve_memtype() to be called, devm_memremap_pages() does
    not. So, teach track_pfn_insert() and untrack_pfn() how to handle
    tracking without a vma, and arrange for devm_memremap_pages() to
    establish the write-back-cache reservation in the memtype tree.

    Cc:
    Cc: Matthew Wilcox
    Cc: Ross Zwisler
    Cc: Nilesh Choudhury
    Cc: Kirill A. Shutemov
    Reported-by: Toshi Kani
    Reported-by: Kai Zhang
    Acked-by: Andrew Morton
    Signed-off-by: Dan Williams

    Dan Williams
     
  • Pull arm64 fixes from Catalin Marinas:

    - smp_mb__before_spinlock() changed to smp_mb() on arm64 since the
    generic definition to smp_wmb() is not sufficient

    - avoid a recursive loop with the graph tracer by using using
    preempt_(enable|disable)_notrace in _percpu_(read|write)

    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
    arm64: use preempt_disable_notrace in _percpu_read/write
    arm64: spinlocks: implement smp_mb__before_spinlock() as smp_mb()

    Linus Torvalds
     

09 Sep, 2016

5 commits

  • Pull powerpc fixes from Michael Ellerman:
    "Fixes marked for stable:
    - Don't alias user region to other regions below PAGE_OFFSET from
    Paul Mackerras
    - Fix again csum_partial_copy_generic() on 32-bit from Christophe
    Leroy
    - Fix corrupted PE allocation bitmap on releasing PE from Gavin Shan

    Fixes for code merged this cycle:
    - Fix crash on releasing compound PE from Gavin Shan
    - Fix processor numbers in OPAL ICP from Benjamin Herrenschmidt
    - Fix little endian build with CONFIG_KEXEC=n from Thiago Jung
    Bauermann"

    * tag 'powerpc-4.8-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/mm: Don't alias user region to other regions below PAGE_OFFSET
    powerpc/32: Fix again csum_partial_copy_generic()
    powerpc/powernv: Fix corrupted PE allocation bitmap on releasing PE
    powerpc/powernv: Fix crash on releasing compound PE
    powerpc/xics/opal: Fix processor numbers in OPAL ICP
    powerpc/pseries: Fix little endian build with CONFIG_KEXEC=n

    Linus Torvalds
     
  • Pull ARM fixes from Russell King:
    "A few ARM fixes:

    - Robin Murphy noticed that the non-secure privileged entry was
    relying on undefined behaviour, which needed to be fixed.

    - Vladimir Murzin noticed that prov-v7 fails to build for MMUless
    configurations because a required header file wasn't included.

    - A bunch of fixes for StrongARM regressions found while testing
    4.8-rc on such platforms"

    * 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm:
    ARM: sa1100: clear reset status prior to reboot
    ARM: 8600/1: Enforce some NS-SVC initialisation
    ARM: 8599/1: mm: pull asm/memory.h explicitly
    ARM: sa1100: register clocks early
    ARM: sa1100: fix 3.6864MHz clock

    Linus Torvalds
     
  • When debug preempt or preempt tracer is enabled, preempt_count_add/sub()
    can be traced by function and function graph tracing, and
    preempt_disable/enable() would call preempt_count_add/sub(), so in Ftrace
    subsystem we should use preempt_disable/enable_notrace instead.

    In the commit 345ddcc882d8 ("ftrace: Have set_ftrace_pid use the bitmap
    like events do") the function this_cpu_read() was added to
    trace_graph_entry(), and if this_cpu_read() calls preempt_disable(), graph
    tracer will go into a recursive loop, even if the tracing_on is
    disabled.

    So this patch change to use preempt_enable/disable_notrace instead in
    this_cpu_read().

    Since Yonghui Yang helped a lot to find the root cause of this problem,
    so also add his SOB.

    Signed-off-by: Yonghui Yang
    Signed-off-by: Chunyan Zhang
    Acked-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Chunyan Zhang
     
  • smp_mb__before_spinlock() is intended to upgrade a spin_lock() operation
    to a full barrier, such that prior stores are ordered with respect to
    loads and stores occuring inside the critical section.

    Unfortunately, the core code defines the barrier as smp_wmb(), which
    is insufficient to provide the required ordering guarantees when used in
    conjunction with our load-acquire-based spinlock implementation.

    This patch overrides the arm64 definition of smp_mb__before_spinlock()
    to map to a full smp_mb().

    Cc:
    Cc: Peter Zijlstra
    Reported-by: Alan Stern
    Signed-off-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Will Deacon
     
  • Pull ARM SoC fixes from Olof Johansson:
    "This is a slightly larger batch of fixes that we've been sitting on a
    few -rcs. Most of them are simple oneliners, but there are two sets
    that are slightly larger and worth pointing out:

    - A set of patches to OMAP to deal with hwmod for RTC on am33xx
    (beaglebone SoC, among others). It's the only clock that ever has
    a valid offset of 0, so a new flag needed introduction once this
    problem was discovered.

    - A collection of CCI fixes for performance counters discovered once
    people started using it on X-Gene CPUs"

    * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (37 commits)
    arm-cci: pmu: Fix typo in event name
    Revert "ARM: tegra: fix erroneous address in dts"
    ARM: dts: imx6qdl: Fix SPDIF regression
    ARM: imx6: add missing BM_CLPCR_BYPASS_PMIC_READY setting for imx6sx
    ARM: dts: imx7d-sdb: fix ti,x-plate-ohms property name
    ARM: dts: kirkwood: Fix PCIe label on OpenRD
    ARM: kirkwood: ib62x0: fix size of u-boot environment partition
    bus: arm-ccn: make event groups reliable
    bus: arm-ccn: fix hrtimer registration
    bus: arm-ccn: fix PMU interrupt flags
    ARM: tegra: Correct polarity for Tegra114 PMIC interrupt
    MAINTAINERS: add tree entry for ARM/UniPhier architecture
    ARM: sun5i: Fix typo in trip point temperature
    MAINTAINERS: Switch to kernel.org account for Krzysztof Kozlowski
    ARM: imx6ul: populates platform device at .init_machine
    bus: arm-ccn: Add missing event attribute exclusions for host/guest
    bus: arm-ccn: Correct required arguments for XP PMU events
    bus: arm-ccn: Fix XP watchpoint settings bitmask
    bus: arm-ccn: Do not attempt to configure XPs for cycle counter
    bus: arm-ccn: Fix PMU handling of MN
    ...

    Linus Torvalds
     

08 Sep, 2016

10 commits

  • …it/mripard/linux into fixes

    Allwinner fixes for 4.8

    A single patch fixing a typo in the temperature trip points in the A13
    DTSI.

    * tag 'sunxi-fixes-for-4.8' of https://git.kernel.org/pub/scm/linux/kernel/git/mripard/linux:
    ARM: sun5i: Fix typo in trip point temperature

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

    Olof Johansson
     
  • …wnguo/linux into fixes

    i.MX fixes for 4.8, 2nd round:
    - Fix misspelled "ti,x-plate-ohms" property name of touchscreen
    controller for imx7d-sdb DTS.
    - Add missing BM_CLPCR_BYPASS_PMIC_READY setting for i.MX6SX to get
    suspend/resume work properly.
    - Fix SPDIF regression on imx6qdl which caused by a clock update on
    spdif device node.

    * tag 'imx-fixes-4.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
    ARM: dts: imx6qdl: Fix SPDIF regression
    ARM: imx6: add missing BM_CLPCR_BYPASS_PMIC_READY setting for imx6sx
    ARM: dts: imx7d-sdb: fix ti,x-plate-ohms property name

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

    Olof Johansson
     
  • This reverts commit b5c86b7496d74f6e454bcab5166efa023e1f0459.

    This is no longer needed due to other changes going into 4.8 to rename
    the unit addresses on a large number of device nodes. So it was picked up
    for v4.8-rc1 in error.

    Reported-by: Ralf Ramsauer
    Signed-off-by: Olof Johansson

    Olof Johansson
     
  • In commit c60ac5693c47 ("powerpc: Update kernel VSID range", 2013-03-13)
    we lost a check on the region number (the top four bits of the effective
    address) for addresses below PAGE_OFFSET. That commit replaced a check
    that the top 18 bits were all zero with a check that bits 46 - 59 were
    zero (performed for all addresses, not just user addresses).

    This means that userspace can access an address like 0x1000_0xxx_xxxx_xxxx
    and we will insert a valid SLB entry for it. The VSID used will be the
    same as if the top 4 bits were 0, but the page size will be some random
    value obtained by indexing beyond the end of the mm_ctx_high_slices_psize
    array in the paca. If that page size is the same as would be used for
    region 0, then userspace just has an alias of the region 0 space. If the
    page size is different, then no HPTE will be found for the access, and
    the process will get a SIGSEGV (since hash_page_mm() will refuse to create
    a HPTE for the bogus address).

    The access beyond the end of the mm_ctx_high_slices_psize can be at most
    5.5MB past the array, and so will be in RAM somewhere. Since the access
    is a load performed in real mode, it won't fault or crash the kernel.
    At most this bug could perhaps leak a little bit of information about
    blocks of 32 bytes of memory located at offsets of i * 512kB past the
    paca->mm_ctx_high_slices_psize array, for 1
    Reviewed-by: Aneesh Kumar K.V
    Signed-off-by: Michael Ellerman

    Paul Mackerras
     
  • Commit 7aef4136566b0 ("powerpc32: rewrite csum_partial_copy_generic()
    based on copy_tofrom_user()") introduced a bug when destination address
    is odd and len is lower than cacheline size.

    In that case the resulting csum value doesn't have to be rotated one
    byte because the cache-aligned copy part is skipped so no alignment
    is performed.

    Fixes: 7aef4136566b0 ("powerpc32: rewrite csum_partial_copy_generic() based on copy_tofrom_user()")
    Cc: stable@vger.kernel.org # v4.6+
    Reported-by: Alessio Igor Bogani
    Signed-off-by: Christophe Leroy
    Tested-by: Alessio Igor Bogani
    Signed-off-by: Michael Ellerman

    Christophe Leroy
     
  • In pnv_ioda_free_pe(), the PE object (including the associated PE
    number) is cleared before resetting the corresponding bit in the
    PE allocation bitmap. It means PE#0 is always released to the bitmap
    wrongly.

    This fixes above issue by caching the PE number before the PE object
    is cleared.

    Fixes: 1e9167726c41 ("powerpc/powernv: Use PE instead of number during setup and release"
    Cc: stable@vger.kernel.org # v4.7+
    Signed-off-by: Gavin Shan
    Signed-off-by: Michael Ellerman

    Gavin Shan
     
  • Pull seccomp fixes from Kees Cook:
    "Fix UM seccomp vs ptrace, after reordering landed"

    * tag 'seccomp-v4.8-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
    seccomp: Remove 2-phase API documentation
    um/ptrace: Fix the syscall number update after a ptrace
    um/ptrace: Fix the syscall_trace_leave call

    Linus Torvalds
     
  • Fixes: 8112c4f140fa ("seccomp: remove 2-phase API")

    Signed-off-by: Mickaël Salaün
    Acked-by: Kees Cook
    Cc: Andy Lutomirski
    Cc: James Morris
    Signed-off-by: James Morris
    Signed-off-by: Kees Cook

    Mickaël Salaün
     
  • Update the syscall number after each PTRACE_SETREGS on ORIG_*AX.

    This is needed to get the potentially altered syscall number in the
    seccomp filters after RET_TRACE.

    This fix four seccomp_bpf tests:
    > [ RUN ] TRACE_syscall.skip_after_RET_TRACE
    > seccomp_bpf.c:1560:TRACE_syscall.skip_after_RET_TRACE:Expected -1 (18446744073709551615) == syscall(39) (26)
    > seccomp_bpf.c:1561:TRACE_syscall.skip_after_RET_TRACE:Expected 1 (1) == (*__errno_location ()) (22)
    > [ FAIL ] TRACE_syscall.skip_after_RET_TRACE
    > [ RUN ] TRACE_syscall.kill_after_RET_TRACE
    > TRACE_syscall.kill_after_RET_TRACE: Test exited normally instead of by signal (code: 1)
    > [ FAIL ] TRACE_syscall.kill_after_RET_TRACE
    > [ RUN ] TRACE_syscall.skip_after_ptrace
    > seccomp_bpf.c:1622:TRACE_syscall.skip_after_ptrace:Expected -1 (18446744073709551615) == syscall(39) (26)
    > seccomp_bpf.c:1623:TRACE_syscall.skip_after_ptrace:Expected 1 (1) == (*__errno_location ()) (22)
    > [ FAIL ] TRACE_syscall.skip_after_ptrace
    > [ RUN ] TRACE_syscall.kill_after_ptrace
    > TRACE_syscall.kill_after_ptrace: Test exited normally instead of by signal (code: 1)
    > [ FAIL ] TRACE_syscall.kill_after_ptrace

    Fixes: 26703c636c1f ("um/ptrace: run seccomp after ptrace")

    Signed-off-by: Mickaël Salaün
    Acked-by: Kees Cook
    Cc: Jeff Dike
    Cc: Richard Weinberger
    Cc: James Morris
    Cc: user-mode-linux-devel@lists.sourceforge.net
    Signed-off-by: James Morris
    Signed-off-by: Kees Cook

    Mickaël Salaün
     
  • Keep the same semantic as before the commit 26703c636c1f: deallocate
    audit context and fake a proper syscall exit.

    This fix a kernel panic triggered by the seccomp_bpf test:
    > [ RUN ] global.ERRNO_valid
    > BUG: failure at kernel/auditsc.c:1504/__audit_syscall_entry()!
    > Kernel panic - not syncing: BUG!

    Fixes: 26703c636c1f ("um/ptrace: run seccomp after ptrace")

    Signed-off-by: Mickaël Salaün
    Acked-by: Kees Cook
    Cc: Jeff Dike
    Cc: Richard Weinberger
    Cc: James Morris
    Cc: user-mode-linux-devel@lists.sourceforge.net
    Signed-off-by: James Morris
    Signed-off-by: Kees Cook

    Mickaël Salaün
     

07 Sep, 2016

2 commits

  • Instead of having each caller of check_object_size() need to remember to
    check for a const size parameter, move the check into check_object_size()
    itself. This actually matches the original implementation in PaX, though
    this commit cleans up the now-redundant builtin_const() calls in the
    various architectures.

    Signed-off-by: Kees Cook

    Kees Cook
     
  • As already done with __copy_*_user(), mark copy_*_user() as __always_inline.
    Without this, the checks for things like __builtin_const_p() won't work
    consistently in either hardened usercopy nor the recent adjustments for
    detecting usercopy overflows at compile time.

    The change in kernel text size is detectable, but very small:

    text data bss dec hex filename
    12118735 5768608 14229504 32116847 1ea106f vmlinux.before
    12120207 5768608 14229504 32118319 1ea162f vmlinux.after

    Signed-off-by: Kees Cook

    Kees Cook
     

06 Sep, 2016

3 commits

  • The compound PE is created to accommodate the devices attached to
    one specific PCI bus that consume multiple M64 segments. The compound
    PE is made up of one master PE and possibly multiple slave PEs. The
    slave PEs should be destroyed when releasing the master PE. A kernel
    crash happens when derferencing @pe->pdev on releasing the slave PE
    in pnv_ioda_deconfigure_pe().

    # echo 0 > /sys/bus/pci/slots/C7/power
    iommu: Removing device 0000:01:00.1 from group 0
    iommu: Removing device 0000:01:00.0 from group 0
    Unable to handle kernel paging request for data at address 0x00000010
    Faulting instruction address: 0xc00000000005d898
    cpu 0x1: Vector: 300 (Data Access) at [c000000fe8217620]
    pc: c00000000005d898: pnv_ioda_release_pe+0x288/0x610
    lr: c00000000005dbdc: pnv_ioda_release_pe+0x5cc/0x610
    sp: c000000fe82178a0
    msr: 9000000000009033
    dar: 10
    dsisr: 40000000
    current = 0xc000000fe815ab80
    paca = 0xc00000000ff00400 softe: 0 irq_happened: 0x01
    pid = 2709, comm = sh
    Linux version 4.8.0-rc5-gavin-00006-g745efdb (gwshan@gwshan) \
    (gcc version 4.9.3 (Buildroot 2016.02-rc2-00093-g5ea3bce) ) #586 SMP \
    Tue Sep 6 13:37:29 AEST 2016
    enter ? for help
    [c000000fe8217940] c00000000005d684 pnv_ioda_release_pe+0x74/0x610
    [c000000fe82179e0] c000000000034460 pcibios_release_device+0x50/0x70
    [c000000fe8217a10] c0000000004aba80 pci_release_dev+0x50/0xa0
    [c000000fe8217a40] c000000000704898 device_release+0x58/0xf0
    [c000000fe8217ac0] c000000000470510 kobject_release+0x80/0xf0
    [c000000fe8217b00] c000000000704dd4 put_device+0x24/0x40
    [c000000fe8217b20] c0000000004af94c pci_remove_bus_device+0x12c/0x150
    [c000000fe8217b60] c000000000034244 pci_hp_remove_devices+0x94/0xd0
    [c000000fe8217ba0] c0000000004ca444 pnv_php_disable_slot+0x64/0xb0
    [c000000fe8217bd0] c0000000004c88c0 power_write_file+0xa0/0x190
    [c000000fe8217c50] c0000000004c248c pci_slot_attr_store+0x3c/0x60
    [c000000fe8217c70] c0000000002d6494 sysfs_kf_write+0x94/0xc0
    [c000000fe8217cb0] c0000000002d50f0 kernfs_fop_write+0x180/0x260
    [c000000fe8217d00] c0000000002334a0 __vfs_write+0x40/0x190
    [c000000fe8217d90] c000000000234738 vfs_write+0xc8/0x240
    [c000000fe8217de0] c000000000236250 SyS_write+0x60/0x110
    [c000000fe8217e30] c000000000009524 system_call+0x38/0x108

    It fixes the kernel crash by bypassing releasing resources (DMA,
    IO and memory segments, PELTM) because there are no resources assigned
    to the slave PE.

    Fixes: c5f7700bbd2e ("powerpc/powernv: Dynamically release PE")
    Reported-by: Frederic Barrat
    Signed-off-by: Gavin Shan
    Signed-off-by: Michael Ellerman

    Gavin Shan
     
  • When using the OPAL ICP backend we incorrectly pass Linux CPU numbers
    rather than HW CPU numbers to OPAL.

    Fixes: d74361881f0d ("powerpc/xics: Add ICP OPAL backend")
    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Michael Ellerman

    Benjamin Herrenschmidt
     
  • On ppc64le, builds with CONFIG_KEXEC=n fail with:

    arch/powerpc/platforms/pseries/setup.c: In function ‘pseries_big_endian_exceptions’:
    arch/powerpc/platforms/pseries/setup.c:403:13: error: implicit declaration of function ‘kdump_in_progress’
    if (rc && !kdump_in_progress())

    This is because pseries/setup.c includes , but
    kdump_in_progress() is defined in . This is a problem
    because the former only includes the latter if CONFIG_KEXEC_CORE=y.

    Fix it by including directly, as is done in powernv/setup.c.

    Fixes: d3cbff1b5a90 ("powerpc: Put exception configuration in a common place")
    Signed-off-by: Thiago Jung Bauermann
    Signed-off-by: Michael Ellerman

    Thiago Jung Bauermann
     

05 Sep, 2016

1 commit

  • Commit 833f2cbf7091 ("ARM: dts: imx6: change the core clock of spdif")
    changed many more clocks than only the SPDIF core clock as stated in
    the commit message.

    The MLB clock has been added and this causes SPDIF regression as
    reported by Xavi Drudis Ferran and also in this forum post:
    https://forum.digikey.com/thread/34240

    The MX6Q Reference Manual does not mention that MLB is a clock related
    to SPDIF, so change it back to a dummy clock to restore SPDIF
    functionality.

    Thanks to Ambika for providing the fix at:
    https://community.nxp.com/thread/387131

    Fixes: 833f2cbf7091 ("ARM: dts: imx6: change the core clock of spdif")
    Cc: # 4.4.x
    Reported-by: Xavi Drudis Ferran
    Signed-off-by: Fabio Estevam
    Tested-by: Xavi Drudis Ferran
    Signed-off-by: Shawn Guo

    Fabio Estevam
     

04 Sep, 2016

3 commits

  • Pull x86 fix from Thomas Gleixner:
    "A single fix for an AMD erratum so machines without a BIOS fix work"

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/AMD: Apply erratum 665 on machines without a BIOS fix

    Linus Torvalds
     
  • Pull arm64 fixes from Catalin Marinas:
    "arm64 and arm/perf fixes:

    - arm64 fix: debug exception unmasking on the CPU resume path

    - ARM PMU fixes: memory leak on error path and NULL pointer
    dereference"

    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
    arm64: kernel: Fix unmasked debug exceptions when restoring mdscr_el1
    drivers/perf: arm_pmu: Fix NULL pointer dereference during probe
    drivers/perf: arm_pmu: Fix leak in error path

    Linus Torvalds
     
  • Pull staging/IIO driver fixes from Greg KH:
    "Here are a number of small fixes for staging and IIO drivers that
    resolve reported problems.

    Full details are in the shortlog. All of these have been in
    linux-next with no reported issues"

    * tag 'staging-4.8-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (35 commits)
    arm: dts: rockchip: add reset node for the exist saradc SoCs
    arm64: dts: rockchip: add reset saradc node for rk3368 SoCs
    iio: adc: rockchip_saradc: reset saradc controller before programming it
    iio: accel: kxsd9: Fix raw read return
    iio: adc: ti_am335x_adc: Increase timeout value waiting for ADC sample
    iio: adc: ti_am335x_adc: Protect FIFO1 from concurrent access
    include/linux: fix excess fence.h kernel-doc notation
    staging: wilc1000: correctly check if associatedsta has not been found
    staging: wilc1000: NULL dereference on error
    staging: wilc1000: txq_event: Fix coding error
    MAINTAINERS: Add file patterns for ion device tree bindings
    MAINTAINERS: Update maintainer entry for wilc1000
    iio: chemical: atlas-ph-sensor: fix typo in val assignment
    iio: fix sched WARNING "do not call blocking ops when !TASK_RUNNING"
    staging: comedi: ni_mio_common: fix AO inttrig backwards compatibility
    staging: comedi: dt2811: fix a precedence bug
    staging: comedi: adv_pci1760: Do not return EINVAL for CMDF_ROUND_DOWN.
    staging: comedi: ni_mio_common: fix wrong insn_write handler
    staging: comedi: comedi_test: fix timer race conditions
    staging: comedi: daqboard2000: bug fix board type matching code
    ...

    Linus Torvalds
     

03 Sep, 2016

3 commits

  • AMD F12h machines have an erratum which can cause DIV/IDIV to behave
    unpredictably. The workaround is to set MSRC001_1029[31] but sometimes
    there is no BIOS update containing that workaround so let's do it
    ourselves unconditionally. It is simple enough.

    [ Borislav: Wrote commit message. ]

    Signed-off-by: Emanuel Czirai
    Signed-off-by: Borislav Petkov
    Cc: Yaowu Xu
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20160902053550.18097-1-bp@alien8.de
    Signed-off-by: Thomas Gleixner

    Emanuel Czirai
     
  • Łukasz Daniluk reported that on a RHEL kernel that his machine would lock up
    after enabling function tracer. I asked him to bisect the functions within
    available_filter_functions, which he did and it came down to three:

    _paravirt_nop(), _paravirt_ident_32() and _paravirt_ident_64()

    It was found that this is only an issue when noreplace-paravirt is added
    to the kernel command line.

    This means that those functions are most likely called within critical
    sections of the funtion tracer, and must not be traced.

    In newer kenels _paravirt_nop() is defined within gcc asm(), and is no
    longer an issue. But both _paravirt_ident_{32,64}() causes the
    following splat when they are traced:

    mm/pgtable-generic.c:33: bad pmd ffff8800d2435150(0000000001d00054)
    mm/pgtable-generic.c:33: bad pmd ffff8800d3624190(0000000001d00070)
    mm/pgtable-generic.c:33: bad pmd ffff8800d36a5110(0000000001d00054)
    mm/pgtable-generic.c:33: bad pmd ffff880118eb1450(0000000001d00054)
    NMI watchdog: BUG: soft lockup - CPU#2 stuck for 22s! [systemd-journal:469]
    Modules linked in: e1000e
    CPU: 2 PID: 469 Comm: systemd-journal Not tainted 4.6.0-rc4-test+ #513
    Hardware name: Hewlett-Packard HP Compaq Pro 6300 SFF/339A, BIOS K01 v02.05 05/07/2012
    task: ffff880118f740c0 ti: ffff8800d4aec000 task.ti: ffff8800d4aec000
    RIP: 0010:[] [] queued_spin_lock_slowpath+0x118/0x1a0
    RSP: 0018:ffff8800d4aefb90 EFLAGS: 00000246
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff88011eb16d40
    RDX: ffffffff82485760 RSI: 000000001f288820 RDI: ffffea0000008030
    RBP: ffff8800d4aefb90 R08: 00000000000c0000 R09: 0000000000000000
    R10: ffffffff821c8e0e R11: 0000000000000000 R12: ffff880000200fb8
    R13: 00007f7a4e3f7000 R14: ffffea000303f600 R15: ffff8800d4b562e0
    FS: 00007f7a4e3d7840(0000) GS:ffff88011eb00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f7a4e3f7000 CR3: 00000000d3e71000 CR4: 00000000001406e0
    Call Trace:
    _raw_spin_lock+0x27/0x30
    handle_pte_fault+0x13db/0x16b0
    handle_mm_fault+0x312/0x670
    __do_page_fault+0x1b1/0x4e0
    do_page_fault+0x22/0x30
    page_fault+0x28/0x30
    __vfs_read+0x28/0xe0
    vfs_read+0x86/0x130
    SyS_read+0x46/0xa0
    entry_SYSCALL_64_fastpath+0x1e/0xa8
    Code: 12 48 c1 ea 0c 83 e8 01 83 e2 30 48 98 48 81 c2 40 6d 01 00 48 03 14 c5 80 6a 5d 82 48 89 0a 8b 41 08 85 c0 75 09 f3 90 8b 41 08 c0 74 f7 4c 8b 09 4d 85 c9 74 08 41 0f 18 09 eb 02 f3 90 8b

    Reported-by: Łukasz Daniluk
    Signed-off-by: Steven Rostedt
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds

    Steven Rostedt
     
  • Changes to make the resume from cpu_suspend() code behave more like
    secondary boot caused debug exceptions to be unmasked early by
    __cpu_setup(). We then go on to restore mdscr_el1 in cpu_do_resume(),
    potentially taking break or watch points based on uninitialised registers.

    Mask debug exceptions in cpu_do_resume(), which is specific to resume
    from cpu_suspend(). Debug exceptions will be restored to their original
    state by local_dbg_restore() in cpu_suspend(), which runs after
    hw_breakpoint_restore() has re-initialised the other registers.

    Reported-by: Lorenzo Pieralisi
    Fixes: cabe1c81ea5b ("arm64: Change cpu_resume() to enable mmu early then access sleep_sp by va")
    Cc: # 4.7+
    Signed-off-by: James Morse
    Acked-by: Will Deacon
    Signed-off-by: Catalin Marinas

    James Morse
     

02 Sep, 2016

2 commits

  • Merge "mvebu fixes for 4.8 (part 1)" from Gregory CLEMENT:

    Few device tree fix on kirkwood:
    - enable PCIe on OpenRD
    - use correct u-boot environment partition size on ib62x0

    * tag 'mvebu-fixes-4.8-2' of git://git.infradead.org/linux-mvebu:
    ARM: dts: kirkwood: Fix PCIe label on OpenRD
    ARM: kirkwood: ib62x0: fix size of u-boot environment partition

    Arnd Bergmann
     
  • Using "make tinyconfig" produces a couple of annoying warnings that show
    up for build test machines all the time:

    .config:966:warning: override: NOHIGHMEM changes choice state
    .config:965:warning: override: SLOB changes choice state
    .config:963:warning: override: KERNEL_XZ changes choice state
    .config:962:warning: override: CC_OPTIMIZE_FOR_SIZE changes choice state
    .config:933:warning: override: SLOB changes choice state
    .config:930:warning: override: CC_OPTIMIZE_FOR_SIZE changes choice state
    .config:870:warning: override: SLOB changes choice state
    .config:868:warning: override: KERNEL_XZ changes choice state
    .config:867:warning: override: CC_OPTIMIZE_FOR_SIZE changes choice state

    I've made a previous attempt at fixing them and we discussed a number of
    alternatives.

    I tried changing the Makefile to use "merge_config.sh -n
    $(fragment-list)" but couldn't get that to work properly.

    This is yet another approach, based on the observation that we do want
    to see a warning for conflicting 'choice' options, and that we can
    simply make them non-conflicting by listing all other options as
    disabled. This is a trivial patch that we can apply independent of
    plans for other changes.

    Link: http://lkml.kernel.org/r/20160829214952.1334674-2-arnd@arndb.de
    Link: https://storage.kernelci.org/mainline/v4.7-rc6/x86-tinyconfig/build.log
    https://patchwork.kernel.org/patch/9212749/
    Signed-off-by: Arnd Bergmann
    Reviewed-by: Josh Triplett
    Reviewed-by: Masahiro Yamada
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arnd Bergmann
     

31 Aug, 2016

1 commit

  • There are three usercopy warnings which are currently being silenced for
    gcc 4.6 and newer:

    1) "copy_from_user() buffer size is too small" compile warning/error

    This is a static warning which happens when object size and copy size
    are both const, and copy size > object size. I didn't see any false
    positives for this one. So the function warning attribute seems to
    be working fine here.

    Note this scenario is always a bug and so I think it should be
    changed to *always* be an error, regardless of
    CONFIG_DEBUG_STRICT_USER_COPY_CHECKS.

    2) "copy_from_user() buffer size is not provably correct" compile warning

    This is another static warning which happens when I enable
    __compiletime_object_size() for new compilers (and
    CONFIG_DEBUG_STRICT_USER_COPY_CHECKS). It happens when object size
    is const, but copy size is *not*. In this case there's no way to
    compare the two at build time, so it gives the warning. (Note the
    warning is a byproduct of the fact that gcc has no way of knowing
    whether the overflow function will be called, so the call isn't dead
    code and the warning attribute is activated.)

    So this warning seems to only indicate "this is an unusual pattern,
    maybe you should check it out" rather than "this is a bug".

    I get 102(!) of these warnings with allyesconfig and the
    __compiletime_object_size() gcc check removed. I don't know if there
    are any real bugs hiding in there, but from looking at a small
    sample, I didn't see any. According to Kees, it does sometimes find
    real bugs. But the false positive rate seems high.

    3) "Buffer overflow detected" runtime warning

    This is a runtime warning where object size is const, and copy size >
    object size.

    All three warnings (both static and runtime) were completely disabled
    for gcc 4.6 with the following commit:

    2fb0815c9ee6 ("gcc4: disable __compiletime_object_size for GCC 4.6+")

    That commit mistakenly assumed that the false positives were caused by a
    gcc bug in __compiletime_object_size(). But in fact,
    __compiletime_object_size() seems to be working fine. The false
    positives were instead triggered by #2 above. (Though I don't have an
    explanation for why the warnings supposedly only started showing up in
    gcc 4.6.)

    So remove warning #2 to get rid of all the false positives, and re-enable
    warnings #1 and #3 by reverting the above commit.

    Furthermore, since #1 is a real bug which is detected at compile time,
    upgrade it to always be an error.

    Having done all that, CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is no longer
    needed.

    Signed-off-by: Josh Poimboeuf
    Cc: Kees Cook
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: "H . Peter Anvin"
    Cc: Andy Lutomirski
    Cc: Steven Rostedt
    Cc: Brian Gerst
    Cc: Peter Zijlstra
    Cc: Frederic Weisbecker
    Cc: Byungchul Park
    Cc: Nilay Vaish
    Signed-off-by: Linus Torvalds

    Josh Poimboeuf
     

30 Aug, 2016

3 commits

  • i.MX6SX has bypass PMIC ready function, as this function
    is normally NOT enabled on the board design, so we need
    to bypass the PMIC ready pin check during DSM mode resume
    flow, otherwise, the internal DSM resume logic will be
    waiting for this signal to be ready forever and cause
    resume fail.

    Signed-off-by: Anson Huang
    Fixes: ff843d621bfc ("ARM: imx: add suspend support for i.mx6sx")
    Cc:
    Tested-by: Peter Chen
    Signed-off-by: Shawn Guo

    Anson Huang
     
  • Pull networking fixes from David Miller:

    1) Segregate namespaces properly in conntrack dumps, from Liping Zhang.

    2) tcp listener refcount fix in netfilter tproxy, from Eric Dumazet.

    3) Fix timeouts in qed driver due to xmit_more, from Yuval Mintz.

    4) Fix use-after-free in tcp_xmit_retransmit_queue().

    5) Userspace header fixups (use of __u32, missing includes, etc.) from
    Mikko Rapeli.

    6) Further refinements to fragmentation wrt gso and tunnels, from
    Shmulik Ladkani.

    7) Trigger poll correctly for zero length UDP packets, from Eric
    Dumazet.

    8) TCP window scaling fix, also from Eric Dumazet.

    9) SLAB_DESTROY_BY_RCU is not relevant any more for UDP sockets.

    10) Module refcount leak in qdisc_create_dflt(), from Eric Dumazet.

    11) Fix deadlock in cp_rx_poll() of 8139cp driver, from Gao Feng.

    12) Memory leak in rhashtable's alloc_bucket_locks(), from Eric Dumazet.

    13) Add new device ID to alx driver, from Owen Lin.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (83 commits)
    Add Killer E2500 device ID in alx driver.
    net: smc91x: fix SMC accesses
    Documentation: networking: dsa: Remove platform device TODO
    net/mlx5: Increase number of ethtool steering priorities
    net/mlx5: Add error prints when validate ETS failed
    net/mlx5e: Fix memory leak if refreshing TIRs fails
    net/mlx5e: Add ethtool counter for TX xmit_more
    net/mlx5e: Fix ethtool -g/G rx ring parameter report with striding RQ
    net/mlx5e: Don't wait for SQ completions on close
    net/mlx5e: Don't post fragmented MPWQE when RQ is disabled
    net/mlx5e: Don't wait for RQ completions on close
    net/mlx5e: Limit UMR length to the device's limitation
    rhashtable: fix a memory leak in alloc_bucket_locks()
    sfc: fix potential stack corruption from running past stat bitmask
    team: loadbalance: push lacpdus to exact delivery
    net: hns: dereference ppe_cb->ppe_common_cb if it is non-null
    8139cp: Fix one possible deadloop in cp_rx_poll
    i40e: Change some init flow for the client
    Revert "phy: IRQ cannot be shared"
    net: dsa: bcm_sf2: Fix race condition while unmasking interrupts
    ...

    Linus Torvalds
     
  • Pull powerpc fixes from Ben Herrenschmidt:
    "This was meant to be sent early last week, but I has a change pending
    on one of the fixes and other things made me forget all about. Ugh.

    We have some misc fixes for powerpc 4.8. Some trivial bits and some
    regressions, and a trivial cleanup or two that I saw no point in
    letting rot in patchwork"

    * tag 'powerpc-4.8-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc: signals: Discard transaction state from signal frames
    powerpc/powernv : Drop reference added by kset_find_obj()
    powerpc/tm: do not use r13 for tabort_syscall
    powerpc: move hmi.c to arch/powerpc/kvm/
    powerpc: sysdev: cpm: fix gpio save_regs functions
    powerpc/pseries: PACA save area fix for MCE vs MCE
    powerpc/pseries: PACA save area fix for general exception vs MCE
    powerpc/prom: Fix sub-processor option passed to ibm, client-architecture-support
    powerpc, hotplug: Avoid to touch non-existent cpumasks.
    powerpc: migrate exception table users off module.h and onto extable.h
    powerpc/powernv/pci: fix iterator signedness
    powerpc/pseries: use pci_host_bridge.release_fn() to kfree(phb)
    cxl: use pcibios_free_controller_deferred() when removing vPHBs
    powerpc: mpc8349emitx: Delete unnecessary assignment for the field "owner"
    powerpc/512x: Delete unnecessary assignment for the field "owner"
    drivers/macintosh: Delete owner assignment
    powerpc: cputhreads: Add missing include file

    Linus Torvalds
     

29 Aug, 2016

4 commits

  • Fix misspelled "ti,x-plate-ohms" property name of TI TSC2046
    touchscreen controller.

    Fixes: d09e6beafa23 ("ARM: dts: imx7d-sdb: Add support for touchscreen")
    Signed-off-by: Vladimir Zapolskiy
    Signed-off-by: Shawn Guo

    Vladimir Zapolskiy
     
  • Commit b70661c70830 ("net: smc91x: use run-time configuration on all ARM
    machines") broke some ARM platforms through several mistakes. Firstly,
    the access size must correspond to the following rule:

    (a) at least one of 16-bit or 8-bit access size must be supported
    (b) 32-bit accesses are optional, and may be enabled in addition to
    the above.

    Secondly, it provides no emulation of 16-bit accesses, instead blindly
    making 16-bit accesses even when the platform specifies that only 8-bit
    is supported.

    Reorganise smc91x.h so we can make use of the existing 16-bit access
    emulation already provided - if 16-bit accesses are supported, use
    16-bit accesses directly, otherwise if 8-bit accesses are supported,
    use the provided 16-bit access emulation. If neither, BUG(). This
    exactly reflects the driver behaviour prior to the commit being fixed.

    Since the conversion incorrectly cut down the available access sizes on
    several platforms, we also need to go through every platform and fix up
    the overly-restrictive access size: Arnd assumed that if a platform can
    perform 32-bit, 16-bit and 8-bit accesses, then only a 32-bit access
    size needed to be specified - not so, all available access sizes must
    be specified.

    This likely fixes some performance regressions in doing this: if a
    platform does not support 8-bit accesses, 8-bit accesses have been
    emulated by performing a 16-bit read-modify-write access.

    Tested on the Intel Assabet/Neponset platform, which supports only 8-bit
    accesses, which was broken by the original commit.

    Fixes: b70661c70830 ("net: smc91x: use run-time configuration on all ARM machines")
    Signed-off-by: Russell King
    Tested-by: Robert Jarzmik
    Signed-off-by: David S. Miller

    Russell King
     
  • Userspace can begin and suspend a transaction within the signal
    handler which means they might enter sys_rt_sigreturn() with the
    processor in suspended state.

    sys_rt_sigreturn() wants to restore process context (which may have
    been in a transaction before signal delivery). To do this it must
    restore TM SPRS. To achieve this, any transaction initiated within the
    signal frame must be discarded in order to be able to restore TM SPRs
    as TM SPRs can only be manipulated non-transactionally..
    >From the PowerPC ISA:
    TM Bad Thing Exception [Category: Transactional Memory]
    An attempt is made to execute a mtspr targeting a TM register in
    other than Non-transactional state.

    Not doing so results in a TM Bad Thing:
    [12045.221359] Kernel BUG at c000000000050a40 [verbose debug info unavailable]
    [12045.221470] Unexpected TM Bad Thing exception at c000000000050a40 (msr 0x201033)
    [12045.221540] Oops: Unrecoverable exception, sig: 6 [#1]
    [12045.221586] SMP NR_CPUS=2048 NUMA PowerNV
    [12045.221634] Modules linked in: xt_CHECKSUM iptable_mangle ipt_MASQUERADE
    nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4
    xt_conntrack nf_conntrack ipt_REJECT nf_reject_ipv4 xt_tcpudp bridge stp llc ebtable_filter
    ebtables ip6table_filter ip6_tables iptable_filter ip_tables x_tables kvm_hv kvm
    uio_pdrv_genirq ipmi_powernv uio powernv_rng ipmi_msghandler autofs4 ses enclosure
    scsi_transport_sas bnx2x ipr mdio libcrc32c
    [12045.222167] CPU: 68 PID: 6178 Comm: sigreturnpanic Not tainted 4.7.0 #34
    [12045.222224] task: c0000000fce38600 ti: c0000000fceb4000 task.ti: c0000000fceb4000
    [12045.222293] NIP: c000000000050a40 LR: c0000000000163bc CTR: 0000000000000000
    [12045.222361] REGS: c0000000fceb7ac0 TRAP: 0700 Not tainted (4.7.0)
    [12045.222418] MSR: 9000000300201033 CR: 28444280 XER: 20000000
    [12045.222625] CFAR: c0000000000163b8 SOFTE: 0 PACATMSCRATCH: 900000014280f033
    GPR00: 01100000b8000001 c0000000fceb7d40 c00000000139c100 c0000000fce390d0
    GPR04: 900000034280f033 0000000000000000 0000000000000000 0000000000000000
    GPR08: 0000000000000000 b000000000001033 0000000000000001 0000000000000000
    GPR12: 0000000000000000 c000000002926400 0000000000000000 0000000000000000
    GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    GPR20: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    GPR24: 0000000000000000 00003ffff98cadd0 00003ffff98cb470 0000000000000000
    GPR28: 900000034280f033 c0000000fceb7ea0 0000000000000001 c0000000fce390d0
    [12045.223535] NIP [c000000000050a40] tm_restore_sprs+0xc/0x1c
    [12045.223584] LR [c0000000000163bc] tm_recheckpoint+0x5c/0xa0
    [12045.223630] Call Trace:
    [12045.223655] [c0000000fceb7d80] [c000000000026e74] sys_rt_sigreturn+0x494/0x6c0
    [12045.223738] [c0000000fceb7e30] [c0000000000092e0] system_call+0x38/0x108
    [12045.223806] Instruction dump:
    [12045.223841] 7c800164 4e800020 7c0022a6 f80304a8 7c0222a6 f80304b0 7c0122a6 f80304b8
    [12045.223955] 4e800020 e80304a8 7c0023a6 e80304b0 e80304b8 7c0123a6 4e800020
    [12045.224074] ---[ end trace cb8002ee240bae76 ]---

    It isn't clear exactly if there is really a use case for userspace
    returning with a suspended transaction, however, doing so doesn't (on
    its own) constitute a bad frame. As such, this patch simply discards
    the transactional state of the context calling the sigreturn and
    continues.

    Reported-by: Laurent Dufour
    Signed-off-by: Cyril Bur
    Tested-by: Laurent Dufour
    Reviewed-by: Laurent Dufour
    Acked-by: Simon Guo
    Signed-off-by: Benjamin Herrenschmidt

    Cyril Bur
     
  • In a situation, where Linux kernel gets notified about duplicate error log
    from OPAL, it is been observed that kernel fails to remove sysfs entries
    (/sys/firmware/opal/elog/0xXXXXXXXX) of such error logs. This is because,
    we currently search the error log/dump kobject in the kset list via
    'kset_find_obj()' routine. Which eventually increment the reference count
    by one, once it founds the kobject.

    So, unless we decrement the reference count by one after it found the kobject,
    we would not be able to release the kobject properly later.

    This patch adds the 'kobject_put()' which was missing earlier.

    Signed-off-by: Mukesh Ojha
    Cc: stable@vger.kernel.org
    Reviewed-by: Vasant Hegde
    Signed-off-by: Benjamin Herrenschmidt

    Mukesh Ojha