commit db3fd4527ed32be44cbd8ffa6dd6a301c89d0d6d
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu May 25 15:45:05 2017 +0200

    Linux 4.9.30

commit 5a597b225d48023bb10e38ea64adb277fc559247
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Wed Nov 9 10:39:05 2016 +0000

    drm/i915/gvt: Disable access to stolen memory as a guest
    
    commit 04a68a35ce6d7b54749989f943993020f48fed62 upstream.
    
    Explicitly disable stolen memory when running as a guest in a virtual
    machine, since the memory is not mediated between clients and reserved
    entirely for the host. The actual size should be reported as zero, but
    like every other quirk we want to tell the user what is happening.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99028
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20161109103905.17860-1-chris@chris-wilson.co.uk
    Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1489183c2005676b2231fec00aced800093008ed
Author: Julius Werner <jwerner@chromium.org>
Date:   Fri May 12 14:42:58 2017 -0700

    drivers: char: mem: Check for address space wraparound with mmap()
    
    commit b299cde245b0b76c977f4291162cf668e087b408 upstream.
    
    /dev/mem currently allows mmap() mappings that wrap around the end of
    the physical address space, which should probably be illegal. It
    circumvents the existing STRICT_DEVMEM permission check because the loop
    immediately terminates (as the start address is already higher than the
    end address). On the x86_64 architecture it will then cause a panic
    (from the BUG(start >= end) in arch/x86/mm/pat.c:reserve_memtype()).
    
    This patch adds an explicit check to make sure offset + size will not
    wrap around in the physical address type.
    
    Signed-off-by: Julius Werner <jwerner@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51d9c51523ec6927a068ee54280b5a4ff3bf401d
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Fri May 5 16:17:57 2017 -0400

    nfsd: encoders mustn't use unitialized values in error cases
    
    commit f961e3f2acae94b727380c0b74e2d3954d0edf79 upstream.
    
    In error cases, lgp->lg_layout_type may be out of bounds; so we
    shouldn't be using it until after the check of nfserr.
    
    This was seen to crash nfsd threads when the server receives a LAYOUTGET
    request with a large layout type.
    
    GETDEVICEINFO has the same problem.
    
    Reported-by: Ari Kauppi <Ari.Kauppi@synopsys.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea465551af30146efea215da58786ff732da70fb
Author: Ari Kauppi <ari@synopsys.com>
Date:   Fri May 5 16:07:55 2017 -0400

    nfsd: fix undefined behavior in nfsd4_layout_verify
    
    commit b550a32e60a4941994b437a8d662432a486235a5 upstream.
    
      UBSAN: Undefined behaviour in fs/nfsd/nfs4proc.c:1262:34
      shift exponent 128 is too large for 32-bit type 'int'
    
    Depending on compiler+architecture, this may cause the check for
    layout_type to succeed for overly large values (which seems to be the
    case with amd64). The large value will be later used in de-referencing
    nfsd4_layout_ops for function pointers.
    
    Reported-by: Jani Tuovila <tuovila@synopsys.com>
    Signed-off-by: Ari Kauppi <ari@synopsys.com>
    [colin.king@canonical.com: use LAYOUT_TYPE_MAX instead of 32]
    Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2b6f508c5417bc5f2a5a30268b5b75ae3b4a754
Author: Benjamin Coddington <bcodding@redhat.com>
Date:   Wed Apr 19 10:11:33 2017 -0400

    NFS: Use GFP_NOIO for two allocations in writeback
    
    commit ae97aa524ef495b6276fd26f5d5449fb22975d7c upstream.
    
    Prevent a deadlock that can occur if we wait on allocations
    that try to write back our pages.
    
    Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
    Fixes: 00bfa30abe869 ("NFS: Create a common pgio_alloc and pgio_release...")
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8c35e5c88def2c07cd0ff1aca1af2b06363b293
Author: Fred Isaman <fred.isaman@gmail.com>
Date:   Fri Apr 14 14:24:28 2017 -0400

    NFS: Fix use after free in write error path
    
    commit 1f84ccdf37d0db3a70714d02d51b0b6d45887fb8 upstream.
    
    Signed-off-by: Fred Isaman <fred.isaman@gmail.com>
    Fixes: 0bcbf039f6b2b ("nfs: handle request add failure properly")
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88ac6b7e0c82b4d825e560d3c4512d540fe4231d
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Sat Apr 15 19:20:01 2017 -0400

    NFSv4: Fix a hang in OPEN related to server reboot
    
    commit 56e0d71ef12f026d96213e45a662bde6bbff4676 upstream.
    
    If the server fails to return the attributes as part of an OPEN
    reply, and then reboots, we can end up hanging. The reason is that
    the client attempts to send a GETATTR in order to pick up the
    missing OPEN call, but fails to release the slot first, causing
    reboot recovery to deadlock.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Fixes: 2e80dbe7ac51a ("NFSv4.1: Close callback races for OPEN, LAYOUTGET...")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5438f89529065a936f31803e263adfd843f09bf8
Author: Mario Kleiner <mario.kleiner.de@gmail.com>
Date:   Fri Apr 21 17:05:08 2017 +0200

    drm/edid: Add 10 bpc quirk for LGD 764 panel in HP zBook 17 G2
    
    commit e345da82bd6bdfa8492f80b3ce4370acfd868d95 upstream.
    
    The builtin eDP panel in the HP zBook 17 G2 supports 10 bpc,
    as advertised by the Laptops product specs and verified via
    injecting a fixed edid + photometer measurements, but edid
    reports unknown depth, so drivers fall back to 6 bpc.
    
    Add a quirk to get the full 10 bpc.
    
    Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
    Acked-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/1492787108-23959-1-git-send-email-mario.kleiner.de@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5956b2815f90e0749d98ea0baedc49b1792f598b
Author: Alexander Couzens <lynxis@fe80.eu>
Date:   Tue May 2 12:19:00 2017 +0200

    mtd: nand: add ooblayout for old hamming layout
    
    commit 6a623e07694437ad09f382a13f76cffc32239a7f upstream.
    
    The old 1-bit hamming layout requires ECC data to be placed at a
    fixed offset, and not necessarily at the end of the OOB area.
    Add this old layout back in order to fix legacy setups.
    
    Fixes: 41b207a70d3a ("mtd: nand: implement the default mtd_ooblayout_ops")
    Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
    Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6639b27f5a4c5425a46b2f1039d390dd1ad7b94f
Author: Roger Quadros <rogerq@ti.com>
Date:   Thu Mar 30 10:37:50 2017 +0300

    mtd: nand: omap2: Fix partition creation via cmdline mtdparts
    
    commit 2d283ede59869159f4bb84ae689258c5caffce54 upstream.
    
    commit c9711ec5250b ("mtd: nand: omap: Clean up device tree support")
    caused the parent device name to be changed from "omap2-nand.0"
    to "<base address>.nand"  (e.g. 30000000.nand on omap3 platforms).
    This caused mtd->name to be changed as well. This breaks partition
    creation via mtdparts passed by u-boot as it uses "omap2-nand.0"
    for the mtd-id.
    
    Fix this by explicitly setting the mtd->name to "omap2-nand.<CS number>"
    if it isn't already set by nand_set_flash_node(). CS number is the
    NAND controller instance ID.
    
    Fixes: c9711ec5250b ("mtd: nand: omap: Clean up device tree support")
    Reported-by: Leto Enrico <enrico.leto@siemens.com>
    Reported-by: Adam Ford <aford173@gmail.com>
    Suggested-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Tested-by: Adam Ford <aford173@gmail.com>
    Signed-off-by: Roger Quadros <rogerq@ti.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e437af936a49680ac509b9d51f1b51b11c8da605
Author: Simon Baatz <gmbnomis@gmail.com>
Date:   Mon Mar 27 20:02:07 2017 +0200

    mtd: nand: orion: fix clk handling
    
    commit 675b11d94ce9baa5eb365a51b35d2793f77c8ab8 upstream.
    
    The clk handling in orion_nand.c had two problems:
    
    - In the probe function, clk_put() was called for an enabled clock,
      which violates the API (see documentation for clk_put() in
      include/linux/clk.h)
    
    - In the error path of the probe function, clk_put() could be called
      twice for the same clock.
    
    In order to clean this up, use the managed function devm_clk_get() and
    store the pointer to the clk in the driver data.
    
    Fixes: baffab28b13120694fa3ebab08d3e99667a851d2 ('ARM: Orion: fix driver probe error handling with respect to clk')
    Signed-off-by: Simon Baatz <gmbnomis@gmail.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db663641619558c9a1b8b77f5bfd351e131b57a7
Author: Lukas Wunner <lukas@wunner.de>
Date:   Tue Apr 18 20:44:30 2017 +0200

    PCI: Freeze PME scan before suspending devices
    
    commit ea00353f36b64375518662a8ad15e39218a1f324 upstream.
    
    Laurent Pinchart reported that the Renesas R-Car H2 Lager board (r8a7790)
    crashes during suspend tests.  Geert Uytterhoeven managed to reproduce the
    issue on an M2-W Koelsch board (r8a7791):
    
      It occurs when the PME scan runs, once per second.  During PME scan, the
      PCI host bridge (rcar-pci) registers are accessed while its module clock
      has already been disabled, leading to the crash.
    
    One reproducer is to configure s2ram to use "s2idle" instead of "deep"
    suspend:
    
      # echo 0 > /sys/module/printk/parameters/console_suspend
      # echo s2idle > /sys/power/mem_sleep
      # echo mem > /sys/power/state
    
    Another reproducer is to write either "platform" or "processors" to
    /sys/power/pm_test.  It does not (or is less likely) to happen during full
    system suspend ("core" or "none") because system suspend also disables
    timers, and thus the workqueue handling PME scans no longer runs.  Geert
    believes the issue may still happen in the small window between disabling
    module clocks and disabling timers:
    
      # echo 0 > /sys/module/printk/parameters/console_suspend
      # echo platform > /sys/power/pm_test    # Or "processors"
      # echo mem > /sys/power/state
    
    (Make sure CONFIG_PCI_RCAR_GEN2 and CONFIG_USB_OHCI_HCD_PCI are enabled.)
    
    Rafael Wysocki agrees that PME scans should be suspended before the host
    bridge registers become inaccessible.  To that end, queue the task on a
    workqueue that gets frozen before devices suspend.
    
    Rafael notes however that as a result, some wakeup events may be missed if
    they are delivered via PME from a device without working IRQ (which hence
    must be polled) and occur after the workqueue has been frozen.  If that
    turns out to be an issue in practice, it may be possible to solve it by
    calling pci_pme_list_scan() once directly from one of the host bridge's
    pm_ops callbacks.
    
    Stacktrace for posterity:
    
      PM: Syncing filesystems ... [   38.566237] done.
      PM: Preparing system for sleep (mem)
      Freezing user space processes ... [   38.579813] (elapsed 0.001 seconds) done.
      Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
      PM: Suspending system (mem)
      PM: suspend of devices complete after 152.456 msecs
      PM: late suspend of devices complete after 2.809 msecs
      PM: noirq suspend of devices complete after 29.863 msecs
      suspend debug: Waiting for 5 second(s).
      Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
      pgd = c0003000
      [00000000] *pgd=80000040004003, *pmd=00000000
      Internal error: : 1211 [#1] SMP ARM
      Modules linked in:
      CPU: 1 PID: 20 Comm: kworker/1:1 Not tainted
      4.9.0-rc1-koelsch-00011-g68db9bc814362e7f #3383
      Hardware name: Generic R8A7791 (Flattened Device Tree)
      Workqueue: events pci_pme_list_scan
      task: eb56e140 task.stack: eb58e000
      PC is at pci_generic_config_read+0x64/0x6c
      LR is at rcar_pci_cfg_base+0x64/0x84
      pc : [<c041d7b4>]    lr : [<c04309a0>]    psr: 600d0093
      sp : eb58fe98  ip : c041d750  fp : 00000008
      r10: c0e2283c  r9 : 00000000  r8 : 600d0013
      r7 : 00000008  r6 : eb58fed6  r5 : 00000002  r4 : eb58feb4
      r3 : 00000000  r2 : 00000044  r1 : 00000008  r0 : 00000000
      Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
      Control: 30c5387d  Table: 6a9f6c80  DAC: 55555555
      Process kworker/1:1 (pid: 20, stack limit = 0xeb58e210)
      Stack: (0xeb58fe98 to 0xeb590000)
      fe80:                                                       00000002 00000044
      fea0: eb6f5800 c041d9b0 eb58feb4 00000008 00000044 00000000 eb78a000 eb78a000
      fec0: 00000044 00000000 eb9aff00 c0424bf0 eb78a000 00000000 eb78a000 c0e22830
      fee0: ea8a6fc0 c0424c5c eaae79c0 c0424ce0 eb55f380 c0e22838 eb9a9800 c0235fbc
      ff00: eb55f380 c0e22838 eb55f380 eb9a9800 eb9a9800 eb58e000 eb9a9824 c0e02100
      ff20: eb55f398 c02366c4 eb56e140 eb5631c0 00000000 eb55f380 c023641c 00000000
      ff40: 00000000 00000000 00000000 c023a928 cd105598 00000000 40506a34 eb55f380
      ff60: 00000000 00000000 dead4ead ffffffff ffffffff eb58ff74 eb58ff74 00000000
      ff80: 00000000 dead4ead ffffffff ffffffff eb58ff90 eb58ff90 eb58ffac eb5631c0
      ffa0: c023a844 00000000 00000000 c0206d68 00000000 00000000 00000000 00000000
      ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 3a81336c 10ccd1dd
      [<c041d7b4>] (pci_generic_config_read) from [<c041d9b0>]
      (pci_bus_read_config_word+0x58/0x80)
      [<c041d9b0>] (pci_bus_read_config_word) from [<c0424bf0>]
      (pci_check_pme_status+0x34/0x78)
      [<c0424bf0>] (pci_check_pme_status) from [<c0424c5c>] (pci_pme_wakeup+0x28/0x54)
      [<c0424c5c>] (pci_pme_wakeup) from [<c0424ce0>] (pci_pme_list_scan+0x58/0xb4)
      [<c0424ce0>] (pci_pme_list_scan) from [<c0235fbc>]
      (process_one_work+0x1bc/0x308)
      [<c0235fbc>] (process_one_work) from [<c02366c4>] (worker_thread+0x2a8/0x3e0)
      [<c02366c4>] (worker_thread) from [<c023a928>] (kthread+0xe4/0xfc)
      [<c023a928>] (kthread) from [<c0206d68>] (ret_from_fork+0x14/0x2c)
      Code: ea000000 e5903000 f57ff04f e3a00000 (e5843000)
      ---[ end trace 667d43ba3aa9e589 ]---
    
    Fixes: df17e62e5bff ("PCI: Add support for polling PME state on suspended legacy PCI devices")
    Reported-and-tested-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Reported-and-tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
    Cc: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Cc: Simon Horman <horms+renesas@verge.net.au>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Cc: Matthew Garrett <mjg59@srcf.ucam.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ad81ecb28d611a07b59d8e899e0bd79a423aee2
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Wed Apr 12 13:25:52 2017 +0100

    PCI: Only allow WC mmap on prefetchable resources
    
    commit cef4d02305a06be581bb7f4353446717a1b319ec upstream.
    
    The /proc/bus/pci mmap interface allows the user to specify whether they
    want WC or not.  Don't let them do so on non-prefetchable BARs.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6bec009a2f690c69239ab8c002aa1f5eca8c480e
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Wed Apr 12 13:25:51 2017 +0100

    PCI: Fix another sanity check bug in /proc/pci mmap
    
    commit 17caf56731311c9596e7d38a70c88fcb6afa6a1b upstream.
    
    Don't match MMIO maps with I/O BARs and vice versa.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa3bbb1c7f06e4e09f3c72ef42622ba260c77dc4
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Wed Apr 12 13:25:50 2017 +0100

    PCI: Fix pci_mmap_fits() for HAVE_PCI_RESOURCE_TO_USER platforms
    
    commit 6bccc7f426abd640f08d8c75fb22f99483f201b4 upstream.
    
    In the PCI_MMAP_PROCFS case when the address being passed by the user is a
    'user visible' resource address based on the bus window, and not the actual
    contents of the resource, that's what we need to be checking it against.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87e7dc97c8a0544553aacf8705c6772db55f6691
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Fri Mar 24 11:07:21 2017 -0700

    PCI: hv: Specify CPU_AFFINITY_ALL for MSI affinity when >= 32 CPUs
    
    commit 433fcf6b7b31f1f233dd50aeb9d066a0f6ed4b9d upstream.
    
    When we have 32 or more CPUs in the affinity mask, we should use a special
    constant to specify that to the host. Fix this issue.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Long Li <longli@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1d63f97dd76f7d90f801bcc9a6334d5df96367a
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Fri Mar 24 11:07:22 2017 -0700

    PCI: hv: Allocate interrupt descriptors with GFP_ATOMIC
    
    commit 59c58ceeea9cdc6144d7b0303753e6bd26d87455 upstream.
    
    The memory allocation here needs to be non-blocking.  Fix the issue.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Long Li <longli@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd0023d7105c4266adeb14881c479950d6a9ef2a
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed May 17 10:19:49 2017 +0200

    tracing/kprobes: Enforce kprobes teardown after testing
    
    commit 30e7d894c1478c88d50ce94ddcdbd7f9763d9cdd upstream.
    
    Enabling the tracer selftest triggers occasionally the warning in
    text_poke(), which warns when the to be modified page is not marked
    reserved.
    
    The reason is that the tracer selftest installs kprobes on functions marked
    __init for testing. These probes are removed after the tests, but that
    removal schedules the delayed kprobes_optimizer work, which will do the
    actual text poke. If the work is executed after the init text is freed,
    then the warning triggers. The bug can be reproduced reliably when the work
    delay is increased.
    
    Flush the optimizer work and wait for the optimizing/unoptimizing lists to
    become empty before returning from the kprobes tracer selftest. That
    ensures that all operations which were queued due to the probes removal
    have completed.
    
    Link: http://lkml.kernel.org/r/20170516094802.76a468bb@gandalf.local.home
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Fixes: 6274de498 ("kprobes: Support delayed unoptimizing")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc0aa21de47c64f7eb557bd41447a9ebe312c0ab
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Thu Apr 27 12:15:10 2017 +0900

    um: Fix to call read_initrd after init_bootmem
    
    commit 5b4236e17cc1bd9fa14b2b0c7a4ae632d41f2e20 upstream.
    
    Since read_initrd() invokes alloc_bootmem() for allocating
    memory to load initrd image, it must be called after init_bootmem.
    
    This makes read_initrd() called directly from setup_arch()
    after init_bootmem() and mem_total_pages().
    
    Fixes: b63236972e1 ("um: Setup physical memory in setup_arch()")
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 541c678441980b48d3600d1bda0737219eb81f61
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun May 14 21:47:25 2017 -0400

    osf_wait4(): fix infoleak
    
    commit a8c39544a6eb2093c04afd5005b6192bd0e880c6 upstream.
    
    failing sys_wait4() won't fill struct rusage...
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07d8aabff4903065bb472df9b040b8688fdc75a2
Author: Huacai Chen <chenhc@lemote.com>
Date:   Thu Mar 16 21:00:28 2017 +0800

    MIPS: Loongson-3: Select MIPS_L1_CACHE_SHIFT_6
    
    commit 17c99d9421695a0e0de18bf1e7091d859e20ec1d upstream.
    
    Some newer Loongson-3 have 64 bytes cache lines, so select
    MIPS_L1_CACHE_SHIFT_6.
    
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Cc: John Crispin <john@phrozen.org>
    Cc: Steven J . Hill <Steven.Hill@caviumnetworks.com>
    Cc: Fuxin Zhang <zhangfx@lemote.com>
    Cc: Zhangjin Wu <wuzhangjin@gmail.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/15755/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d6a43a086117930b5acd79c9350e00ef56027fa
Author: Jon Derrick <jonathan.derrick@intel.com>
Date:   Fri May 5 14:52:06 2017 -0600

    nvme: unmap CMB and remove sysfs file in reset path
    
    commit f63572dff1421b6ca6abce71d46e03411e605c94 upstream.
    
    CMB doesn't get unmapped until removal while getting remapped on every
    reset. Add the unmapping and sysfs file removal to the reset path in
    nvme_pci_disable to match the mapping path in nvme_pci_enable.
    
    Fixes: 202021c1a ("nvme : Add sysfs entry for NVMe CMBs when appropriate")
    
    Signed-off-by: Jon Derrick <jonathan.derrick@intel.com>
    Acked-by: Keith Busch <keith.busch@intel.com>
    Reviewed-By: Stephen Bates <sbates@raithlin.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 423f1752a0283b3f54f175be893f610f51b3aaf5
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu May 11 13:54:11 2017 +0200

    genirq: Fix chained interrupt data ordering
    
    commit 2c4569ca26986d18243f282dd727da27e9adae4c upstream.
    
    irq_set_chained_handler_and_data() sets up the chained interrupt and then
    stores the handler data.
    
    That's racy against an immediate interrupt which gets handled before the
    store of the handler data happened. The handler will dereference a NULL
    pointer and crash.
    
    Cure it by storing handler data before installing the chained handler.
    
    Reported-by: Borislav Petkov <bp@alien8.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3fe116563d5ddc2e3a506eb4b227164e5ccaed23
Author: Johan Hovold <johan@kernel.org>
Date:   Fri May 12 12:06:32 2017 +0200

    uwb: fix device quirk on big-endian hosts
    
    commit 41318a2b82f5d5fe1fb408f6d6e0b22aa557111d upstream.
    
    Add missing endianness conversion when using the USB device-descriptor
    idProduct field to apply a hardware quirk.
    
    Fixes: 1ba47da52712 ("uwb: add the i1480 DFU driver")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f157261b55a40a5fe38259d1dcc0a9ff30987b3c
Author: Daniel Micay <danielmicay@gmail.com>
Date:   Thu May 4 09:32:09 2017 -0400

    stackprotector: Increase the per-task stack canary's random range from 32 bits to 64 bits on 64-bit platforms
    
    commit 5ea30e4e58040cfd6434c2f33dc3ea76e2c15b05 upstream.
    
    The stack canary is an 'unsigned long' and should be fully initialized to
    random data rather than only 32 bits of random data.
    
    Signed-off-by: Daniel Micay <danielmicay@gmail.com>
    Acked-by: Arjan van de Ven <arjan@linux.intel.com>
    Acked-by: Rik van Riel <riel@redhat.com>
    Acked-by: Kees Cook <keescook@chromium.org>
    Cc: Arjan van Ven <arjan@linux.intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: kernel-hardening@lists.openwall.com
    Link: http://lkml.kernel.org/r/20170504133209.3053-1-danielmicay@gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8a8a6972c5075e6057264c45614d13f9e0307e5
Author: James Hogan <james.hogan@imgtec.com>
Date:   Tue May 2 19:41:06 2017 +0100

    metag/uaccess: Check access_ok in strncpy_from_user
    
    commit 3a158a62da0673db918b53ac1440845a5b64fd90 upstream.
    
    The metag implementation of strncpy_from_user() doesn't validate the src
    pointer, which could allow reading of arbitrary kernel memory. Add a
    short access_ok() check to prevent that.
    
    Its still possible for it to read across the user/kernel boundary, but
    it will invariably reach a NUL character after only 9 bytes, leaking
    only a static kernel address being loaded into D0Re0 at the beginning of
    __start, which is acceptable for the immediate fix.
    
    Reported-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: linux-metag@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9fefcb947ec2c2b6900b4c10aface329af0fd9c5
Author: James Hogan <james.hogan@imgtec.com>
Date:   Fri Apr 28 10:50:26 2017 +0100

    metag/uaccess: Fix access_ok()
    
    commit 8a8b56638bcac4e64cccc88bf95a0f9f4b19a2fb upstream.
    
    The __user_bad() macro used by access_ok() has a few corner cases
    noticed by Al Viro where it doesn't behave correctly:
    
     - The kernel range check has off by 1 errors which permit access to the
       first and last byte of the kernel mapped range.
    
     - The kernel range check ends at LINCORE_BASE rather than
       META_MEMORY_LIMIT, which is ineffective when the kernel is in global
       space (an extremely uncommon configuration).
    
    There are a couple of other shortcomings here too:
    
     - Access to the whole of the other address space is permitted (i.e. the
       global half of the address space when the kernel is in local space).
       This isn't ideal as it could theoretically still contain privileged
       mappings set up by the bootloader.
    
     - The size argument is unused, permitting user copies which start on
       valid pages at the end of the user address range and cross the
       boundary into the kernel address space (e.g. addr = 0x3ffffff0, size
       > 0x10).
    
    It isn't very convenient to add size checks when disallowing certain
    regions, and it seems far safer to be sure and explicit about what
    userland is able to access, so invert the logic to allow certain regions
    instead, and fix the off by 1 errors and missing size checks. This also
    allows the get_fs() == KERNEL_DS check to be more easily optimised into
    the user address range case.
    
    We now have 3 such allowed regions:
    
     - The user address range (incorporating the get_fs() == KERNEL_DS
       check).
    
     - NULL (some kernel code expects this to work, and we'll always catch
       the fault anyway).
    
     - The core code memory region.
    
    Fixes: 373cd784d0fc ("metag: Memory handling")
    Reported-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: linux-metag@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 21f2950f91ff080b0d3f13f2983b9b39c95b8714
Author: KarimAllah Ahmed <karahmed@amazon.de>
Date:   Fri May 5 11:39:59 2017 -0700

    iommu/vt-d: Flush the IOTLB to get rid of the initial kdump mappings
    
    commit f73a7eee900e95404b61408a23a1df5c5811704c upstream.
    
    Ever since commit 091d42e43d ("iommu/vt-d: Copy translation tables from
    old kernel") the kdump kernel copies the IOMMU context tables from the
    previous kernel. Each device mappings will be destroyed once the driver
    for the respective device takes over.
    
    This unfortunately breaks the workflow of mapping and unmapping a new
    context to the IOMMU. The mapping function assumes that either:
    
    1) Unmapping did the proper IOMMU flushing and it only ever flush if the
       IOMMU unit supports caching invalid entries.
    2) The system just booted and the initialization code took care of
       flushing all IOMMU caches.
    
    This assumption is not true for the kdump kernel since the context
    tables have been copied from the previous kernel and translations could
    have been cached ever since. So make sure to flush the IOTLB as well
    when we destroy these old copied mappings.
    
    Cc: Joerg Roedel <joro@8bytes.org>
    Cc: David Woodhouse <dwmw2@infradead.org>
    Cc: David Woodhouse <dwmw@amazon.co.uk>
    Cc: Anthony Liguori <aliguori@amazon.com>
    Signed-off-by: KarimAllah Ahmed <karahmed@amazon.de>
    Acked-by: David Woodhouse <dwmw@amazon.co.uk>
    Fixes: 091d42e43d ("iommu/vt-d: Copy translation tables from old kernel")
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58e36d6f7f11815d3be279f58fd44da1203b4aa1
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Thu May 11 18:57:46 2017 +0100

    staging: rtl8192e: GetTs Fix invalid TID 7 warning.
    
    commit 95d93e271d920dfda369d4740b1cc1061d41fe7f upstream.
    
    TID 7 is a valid value for QoS IEEE 802.11e.
    
    The switch statement that follows states 7 is valid.
    
    Remove function IsACValid and use the default case to filter
    invalid TIDs.
    
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93a46fe4eb41e7fa575b9b995659af52c2241868
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Thu May 11 18:57:45 2017 +0100

    staging: rtl8192e: rtl92e_get_eeprom_size Fix read size of EPROM_CMD.
    
    commit 90be652c9f157d44b9c2803f902a8839796c090d upstream.
    
    EPROM_CMD is 2 byte aligned on PCI map so calling with rtl92e_readl
    will return invalid data so use rtl92e_readw.
    
    The device is unable to select the right eeprom type.
    
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0226f9adaf86597176dde4c794c935bb5d25656
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Thu May 11 18:57:44 2017 +0100

    staging: rtl8192e: fix 2 byte alignment of register BSSIDR.
    
    commit 867510bde14e7b7fc6dd0f50b48f6753cfbd227a upstream.
    
    BSSIDR has two byte alignment on PCI ioremap correct the write
    by swapping to 16 bits first.
    
    This fixes a problem that the device associates fail because
    the filter is not set correctly.
    
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4205502948b5825254e31d9c82d377beb85d100
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Thu May 11 18:57:43 2017 +0100

    staging: rtl8192e: rtl92e_fill_tx_desc fix write to mapped out memory.
    
    commit baabd567f87be05330faa5140f72a91960e7405a upstream.
    
    The driver attempts to alter memory that is mapped to PCI device.
    
    This is because tx_fwinfo_8190pci points to skb->data
    
    Move the pci_map_single to when completed buffer is ready to be mapped with
    psdec is empty to drop on mapping error.
    
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6b8f5ade3059be9cf8ab5a290c312d463b54a39
Author: Kristina Martsenko <kristina.martsenko@arm.com>
Date:   Wed May 3 16:37:48 2017 +0100

    arm64: documentation: document tagged pointer stack constraints
    
    commit f0e421b1bf7af97f026e1bb8bfe4c5a7a8c08f42 upstream.
    
    Some kernel features don't currently work if a task puts a non-zero
    address tag in its stack pointer, frame pointer, or frame record entries
    (FP, LR).
    
    For example, with a tagged stack pointer, the kernel can't deliver
    signals to the process, and the task is killed instead. As another
    example, with a tagged frame pointer or frame records, perf fails to
    generate call graphs or resolve symbols.
    
    For now, just document these limitations, instead of finding and fixing
    everything that doesn't work, as it's not known if anyone needs to use
    tags in these places anyway.
    
    In addition, as requested by Dave Martin, generalize the limitations
    into a general kernel address tag policy, and refactor
    tagged-pointers.txt to include it.
    
    Fixes: d50240a5f6ce ("arm64: mm: permit use of tagged pointers at EL0")
    Reviewed-by: Dave Martin <Dave.Martin@arm.com>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Kristina Martsenko <kristina.martsenko@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e817a7fb2f31c2fafc8e6e2dbf649bbd65b2f604
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Wed May 3 16:09:35 2017 +0100

    arm64: uaccess: ensure extension of access_ok() addr
    
    commit a06040d7a791a9177581dcf7293941bd92400856 upstream.
    
    Our access_ok() simply hands its arguments over to __range_ok(), which
    implicitly assummes that the addr parameter is 64 bits wide. This isn't
    necessarily true for compat code, which might pass down a 32-bit address
    parameter.
    
    In these cases, we don't have a guarantee that the address has been zero
    extended to 64 bits, and the upper bits of the register may contain
    unknown values, potentially resulting in a suprious failure.
    
    Avoid this by explicitly casting the addr parameter to an unsigned long
    (as is done on other architectures), ensuring that the parameter is
    widened appropriately.
    
    Fixes: 0aea86a2176c ("arm64: User access library functions")
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4775fbcc92d79be414046dd208beb767ed5168e2
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Wed May 3 16:09:36 2017 +0100

    arm64: armv8_deprecated: ensure extension of addr
    
    commit 55de49f9aa17b0b2b144dd2af587177b9aadf429 upstream.
    
    Our compat swp emulation holds the compat user address in an unsigned
    int, which it passes to __user_swpX_asm(). When a 32-bit value is passed
    in a register, the upper 32 bits of the register are unknown, and we
    must extend the value to 64 bits before we can use it as a base address.
    
    This patch casts the address to unsigned long to ensure it has been
    suitably extended, avoiding the potential issue, and silencing a related
    warning from clang.
    
    Fixes: bd35a4adc413 ("arm64: Port SWP/SWPB emulation support from arm")
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2e4f4e538f073029e672d057e574ca8ba4c9c32
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Wed May 3 16:09:34 2017 +0100

    arm64: ensure extension of smp_store_release value
    
    commit 994870bead4ab19087a79492400a5478e2906196 upstream.
    
    When an inline assembly operand's type is narrower than the register it
    is allocated to, the least significant bits of the register (up to the
    operand type's width) are valid, and any other bits are permitted to
    contain any arbitrary value. This aligns with the AAPCS64 parameter
    passing rules.
    
    Our __smp_store_release() implementation does not account for this, and
    implicitly assumes that operands have been zero-extended to the width of
    the type being stored to. Thus, we may store unknown values to memory
    when the value type is narrower than the pointer type (e.g. when storing
    a char to a long).
    
    This patch fixes the issue by casting the value operand to the same
    width as the pointer operand in all cases, which ensures that the value
    is zero-extended as we expect. We use the same union trickery as
    __smp_load_acquire and {READ,WRITE}_ONCE() to avoid GCC complaining that
    pointers are potentially cast to narrower width integers in unreachable
    paths.
    
    A whitespace issue at the top of __smp_store_release() is also
    corrected.
    
    No changes are necessary for __smp_load_acquire(). Load instructions
    implicitly clear any upper bits of the register, and the compiler will
    only consider the least significant bits of the register as valid
    regardless.
    
    Fixes: 47933ad41a86 ("arch: Introduce smp_load_acquire(), smp_store_release()")
    Fixes: 878a84d5a8a1 ("arm64: add missing data types in smp_load_acquire/smp_store_release")
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88675139a81dcc1305270de5f22205668a1ea796
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Wed May 3 16:09:33 2017 +0100

    arm64: xchg: hazard against entire exchange variable
    
    commit fee960bed5e857eb126c4e56dd9ff85938356579 upstream.
    
    The inline assembly in __XCHG_CASE() uses a +Q constraint to hazard
    against other accesses to the memory location being exchanged. However,
    the pointer passed to the constraint is a u8 pointer, and thus the
    hazard only applies to the first byte of the location.
    
    GCC can take advantage of this, assuming that other portions of the
    location are unchanged, as demonstrated with the following test case:
    
    union u {
            unsigned long l;
            unsigned int i[2];
    };
    
    unsigned long update_char_hazard(union u *u)
    {
            unsigned int a, b;
    
            a = u->i[1];
            asm ("str %1, %0" : "+Q" (*(char *)&u->l) : "r" (0UL));
            b = u->i[1];
    
            return a ^ b;
    }
    
    unsigned long update_long_hazard(union u *u)
    {
            unsigned int a, b;
    
            a = u->i[1];
            asm ("str %1, %0" : "+Q" (*(long *)&u->l) : "r" (0UL));
            b = u->i[1];
    
            return a ^ b;
    }
    
    The linaro 15.08 GCC 5.1.1 toolchain compiles the above as follows when
    using -O2 or above:
    
    0000000000000000 <update_char_hazard>:
       0:   d2800001        mov     x1, #0x0                        // #0
       4:   f9000001        str     x1, [x0]
       8:   d2800000        mov     x0, #0x0                        // #0
       c:   d65f03c0        ret
    
    0000000000000010 <update_long_hazard>:
      10:   b9400401        ldr     w1, [x0,#4]
      14:   d2800002        mov     x2, #0x0                        // #0
      18:   f9000002        str     x2, [x0]
      1c:   b9400400        ldr     w0, [x0,#4]
      20:   4a000020        eor     w0, w1, w0
      24:   d65f03c0        ret
    
    This patch fixes the issue by passing an unsigned long pointer into the
    +Q constraint, as we do for our cmpxchg code. This may hazard against
    more than is necessary, but this is better than missing a necessary
    hazard.
    
    Fixes: 305d454aaa29 ("arm64: atomics: implement native {relaxed, acquire, release} atomics")
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31a331c8cf2643b36c651fc94eccedcbf0de10c6
Author: Daniel Lezcano <daniel.lezcano@linaro.org>
Date:   Thu Mar 16 15:03:24 2017 +0100

    arm64: dts: hi6220: Reset the mmc hosts
    
    commit 0fbdf9953b41c28845fe8d05007ff09634ee3000 upstream.
    
    The MMC hosts could be left in an unconsistent or uninitialized state from
    the firmware. Instead of assuming, the firmware did the right things, let's
    reset the host controllers.
    
    This change fixes a bug when the mmc2/sdio is initialized leading to a hung
    task:
    
    [  242.704294] INFO: task kworker/7:1:675 blocked for more than 120 seconds.
    [  242.711129]       Not tainted 4.9.0-rc8-00017-gcf0251f #3
    [  242.716571] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [  242.724435] kworker/7:1     D    0   675      2 0x00000000
    [  242.729973] Workqueue: events_freezable mmc_rescan
    [  242.734796] Call trace:
    [  242.737269] [<ffff00000808611c>] __switch_to+0xa8/0xb4
    [  242.742437] [<ffff000008d07c04>] __schedule+0x1c0/0x67c
    [  242.747689] [<ffff000008d08254>] schedule+0x40/0xa0
    [  242.752594] [<ffff000008d0b284>] schedule_timeout+0x1c4/0x35c
    [  242.758366] [<ffff000008d08e38>] wait_for_common+0xd0/0x15c
    [  242.763964] [<ffff000008d09008>] wait_for_completion+0x28/0x34
    [  242.769825] [<ffff000008a1a9f4>] mmc_wait_for_req_done+0x40/0x124
    [  242.775949] [<ffff000008a1ab98>] mmc_wait_for_req+0xc0/0xf8
    [  242.781549] [<ffff000008a1ac3c>] mmc_wait_for_cmd+0x6c/0x84
    [  242.787149] [<ffff000008a26610>] mmc_io_rw_direct_host+0x9c/0x114
    [  242.793270] [<ffff000008a26aa0>] sdio_reset+0x34/0x7c
    [  242.798347] [<ffff000008a1d46c>] mmc_rescan+0x2fc/0x360
    
    [ ... ]
    
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: Wei Xu <xuwei5@hisilicon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ee1c675ab92d3c8e25f35b5a4a83aa9d62d741d
Author: Leonard Crestez <leonard.crestez@nxp.com>
Date:   Fri May 5 14:00:17 2017 +0300

    ARM: dts: imx6sx-sdb: Remove OPP override
    
    commit d8581c7c8be172dac156a19d261f988a72ce596f upstream.
    
    The board file for imx6sx-sdb overrides cpufreq operating points to use
    higher voltages. This is done because the board has a shared rail for
    VDD_ARM_IN and VDD_SOC_IN and when using LDO bypass the shared voltage
    needs to be a value suitable for both ARM and SOC.
    
    This only applies to LDO bypass mode, a feature not present in upstream.
    When LDOs are enabled the effect is to use higher voltages than necessary
    for no good reason.
    
    Setting these higher voltages can make some boards fail to boot with ugly
    semi-random crashes reminiscent of memory corruption. These failures only
    happen on board rev. C, rev. B is reported to still work.
    
    Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
    Fixes: 54183bd7f766 ("ARM: imx6sx-sdb: add revb board and make it default")
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03d8b264bcb9187a7127efc0bc18eb5dabdb4ce9
Author: Ludovic Desroches <ludovic.desroches@microchip.com>
Date:   Mon Apr 10 10:25:17 2017 +0200

    ARM: dts: at91: sama5d3_xplained: not all ADC channels are available
    
    commit d3df1ec06353e51fc44563d2e7e18d42811af290 upstream.
    
    Remove ADC channels that are not available by default on the sama5d3_xplained
    board (resistor not populated) in order to not create confusion.
    
    Signed-off-by: Ludovic Desroches <ludovic.desroches@microchip.com>
    Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 086ea4b9510c5157e7ec168e977a40cdb5e3d14b
Author: Ludovic Desroches <ludovic.desroches@microchip.com>
Date:   Mon Apr 10 10:25:16 2017 +0200

    ARM: dts: at91: sama5d3_xplained: fix ADC vref
    
    commit 9cdd31e5913c1f86dce7e201b086155b3f24896b upstream.
    
    The voltage reference for the ADC is not 3V but 3.3V since it is connected to
    VDDANA.
    
    Signed-off-by: Ludovic Desroches <ludovic.desroches@microchip.com>
    Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f6cea2e3bbd6f90b6328423c384083b4572069f
Author: Vladimir Murzin <vladimir.murzin@arm.com>
Date:   Mon Apr 24 10:40:48 2017 +0100

    ARM: 8670/1: V7M: Do not corrupt vector table around v7m_invalidate_l1 call
    
    commit 6d80594936914e798b1b54b3bfe4bd68d8418966 upstream.
    
    We save/restore registers around v7m_invalidate_l1 to address pointed
    by r12, which is vector table, so the first eight entries are
    overwritten with a garbage. We already have stack setup at that stage,
    so use it to save/restore register.
    
    Fixes: 6a8146f420be ("ARM: 8609/1: V7M: Add support for the Cortex-M7 processor")
    Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3304f5a1cb874c63fcc48f9021320510a73c03f9
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Wed Feb 22 19:40:12 2017 +0100

    ARM: 8662/1: module: split core and init PLT sections
    
    commit b7ede5a1f5905ac394cc8e61712a13e3c5cb7b8f upstream.
    
    Since commit 35fa91eed817 ("ARM: kernel: merge core and init PLTs"),
    the ARM module PLT code allocates all PLT entries in a single core
    section, since the overhead of having a separate init PLT section is
    not justified by the small number of PLT entries usually required for
    init code.
    
    However, the core and init module regions are allocated independently,
    and there is a corner case where the core region may be allocated from
    the VMALLOC region if the dedicated module region is exhausted, but the
    init region, being much smaller, can still be allocated from the module
    region. This puts the PLT entries out of reach of the relocated branch
    instructions, defeating the whole purpose of PLTs.
    
    So split the core and init PLT regions, and name the latter ".init.plt"
    so it gets allocated along with (and sufficiently close to) the .init
    sections that it serves. Also, given that init PLT entries may need to
    be emitted for branches that target the core module, modify the logic
    that disregards defined symbols to only disregard symbols that are
    defined in the same section.
    
    Fixes: 35fa91eed817 ("ARM: kernel: merge core and init PLTs")
    Reported-by: Angus Clark <angus@angusclark.org>
    Tested-by: Angus Clark <angus@angusclark.org>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee773459557d2242ddf6a2289e4615b4eb0668ae
Author: Zhichao Huang <zhichao.huang@linaro.org>
Date:   Thu May 11 13:46:11 2017 +0100

    KVM: arm: plug potential guest hardware debug leakage
    
    commit 661e6b02b5aa82db31897f36e96324b77450fd7a upstream.
    
    Hardware debugging in guests is not intercepted currently, it means
    that a malicious guest can bring down the entire machine by writing
    to the debug registers.
    
    This patch enable trapping of all debug registers, preventing the
    guests to access the debug registers. This includes access to the
    debug mode(DBGDSCR) in the guest world all the time which could
    otherwise mess with the host state. Reads return 0 and writes are
    ignored (RAZ_WI).
    
    The result is the guest cannot detect any working hardware based debug
    support. As debug exceptions are still routed to the guest normal
    debug using software based breakpoints still works.
    
    To support debugging using hardware registers we need to implement a
    debug register aware world switch as well as special trapping for
    registers that may affect the host state.
    
    Signed-off-by: Zhichao Huang <zhichao.huang@linaro.org>
    Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ba7e8e3419363c279f8cf68f3b3d3e1e14eb3bc
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue May 2 14:30:38 2017 +0100

    arm: KVM: Do not use stack-protector to compile HYP code
    
    commit 501ad27c67ed0b90df465f23d33e9aed64058a47 upstream.
    
    We like living dangerously. Nothing explicitely forbids stack-protector
    to be used in the HYP code, while distributions routinely compile their
    kernel with it. We're just lucky that no code actually triggers the
    instrumentation.
    
    Let's not try our luck for much longer, and disable stack-protector
    for code living at HYP.
    
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Acked-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0fb4b7d00bba1e11d05aa39bd7db50cb8cfed53
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue May 2 14:30:37 2017 +0100

    arm64: KVM: Do not use stack-protector to compile EL2 code
    
    commit cde13b5dad60471886a3bccb4f4134c647c4a9dc upstream.
    
    We like living dangerously. Nothing explicitely forbids stack-protector
    to be used in the EL2 code, while distributions routinely compile their
    kernel with it. We're just lucky that no code actually triggers the
    instrumentation.
    
    Let's not try our luck for much longer, and disable stack-protector
    for code living at EL2.
    
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Acked-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a685601f85331ec7f8cda1975bddba311441f333
Author: Michael Neuling <mikey@neuling.org>
Date:   Mon May 8 17:16:26 2017 +1000

    powerpc/tm: Fix FP and VMX register corruption
    
    commit f48e91e87e67b56bef63393d1a02c6e22c1d7078 upstream.
    
    In commit dc3106690b20 ("powerpc: tm: Always use fp_state and vr_state
    to store live registers"), a section of code was removed that copied
    the current state to checkpointed state. That code should not have been
    removed.
    
    When an FP (Floating Point) unavailable is taken inside a transaction,
    we need to abort the transaction. This is because at the time of the
    tbegin, the FP state is bogus so the state stored in the checkpointed
    registers is incorrect. To fix this, we treclaim (to get the
    checkpointed GPRs) and then copy the thread_struct FP live state into
    the checkpointed state. We then trecheckpoint so that the FP state is
    correctly restored into the CPU.
    
    The copying of the FP registers from live to checkpointed is what was
    missing.
    
    This simplifies the logic slightly from the original patch.
    tm_reclaim_thread() will now always write the checkpointed FP
    state. Either the checkpointed FP state will be written as part of
    the actual treclaim (in tm.S), or it'll be a copy of the live
    state. Which one we use is based on MSR[FP] from userspace.
    
    Similarly for VMX.
    
    Fixes: dc3106690b20 ("powerpc: tm: Always use fp_state and vr_state to store live registers")
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Reviewed-by: cyrilbur@gmail.com
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 018b91870856035f9bdff45f690b933d67f6efc3
Author: LiuHailong <liu.hailong6@zte.com.cn>
Date:   Tue Feb 7 10:35:52 2017 +0800

    powerpc/64e: Fix hang when debugging programs with relocated kernel
    
    commit fd615f69a18a9d4aa5ef02a1dc83f319f75da8e7 upstream.
    
    Debug interrupts can be taken during interrupt entry, since interrupt
    entry does not automatically turn them off.  The kernel will check
    whether the faulting instruction is between [interrupt_base_book3e,
    __end_interrupts], and if so clear MSR[DE] and return.
    
    However, when the kernel is built with CONFIG_RELOCATABLE, it can't use
    LOAD_REG_IMMEDIATE(r14,interrupt_base_book3e) and
    LOAD_REG_IMMEDIATE(r15,__end_interrupts), as they ignore relocation.
    Thus, if the kernel is actually running at a different address than it
    was built at, the address comparison will fail, and the exception entry
    code will hang at kernel_dbg_exc.
    
    r2(toc) is also not usable here, as r2 still holds data from the
    interrupted context, so LOAD_REG_ADDR() doesn't work either.  So we use
    the *name@got* to get the EV of two labels directly.
    
    Test programs test.c shows as follows:
    int main(int argc, char *argv[])
    {
            if (access("/proc/sys/kernel/perf_event_paranoid", F_OK) == -1)
                    printf("Kernel doesn't have perf_event support\n");
    }
    
    Steps to reproduce the bug, for example:
     1) ./gdb ./test
     2) (gdb) b access
     3) (gdb) r
     4) (gdb) s
    
    Signed-off-by: Liu Hailong <liu.hailong6@zte.com.cn>
    Signed-off-by: Jiang Xuexin <jiang.xuexin@zte.com.cn>
    Reviewed-by: Jiang Biao <jiang.biao2@zte.com.cn>
    Reviewed-by: Liu Song <liu.song11@zte.com.cn>
    Reviewed-by: Huang Jian <huang.jian@zte.com.cn>
    [scottwood: cleaned up commit message, and specified bad behavior
     as a hang rather than an oops to correspond to mainline kernel behavior]
    Fixes: 1cb6e0649248 ("powerpc/book3e: support CONFIG_RELOCATABLE")
    Signed-off-by: Scott Wood <oss@buserror.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3915c566ea9427947ddc1849c68f64c401a3d5c9
Author: Alexey Kardashevskiy <aik@ozlabs.ru>
Date:   Tue Apr 11 17:54:57 2017 +1000

    powerpc/iommu: Do not call PageTransHuge() on tail pages
    
    commit e889e96e98e8da97bd39e46b7253615eabe14397 upstream.
    
    The CMA pages migration code does not support compound pages at
    the moment so it performs few tests before proceeding to actual page
    migration.
    
    One of the tests - PageTransHuge() - has VM_BUG_ON_PAGE(PageTail()) as
    it is designed to be called on head pages only. Since we also test for
    PageCompound(), and it contains PageTail() and PageHead(), we can
    simplify the check by leaving just PageCompound() and therefore avoid
    possible VM_BUG_ON_PAGE.
    
    Fixes: 2e5bbb5461f1 ("KVM: PPC: Book3S HV: Migrate pinned pages out of CMA")
    Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Acked-by: Balbir Singh <bsingharora@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ba5685a26b1e89e5fccd0373f614fd5d13253a6
Author: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
Date:   Mon Apr 17 20:21:40 2017 -0400

    powerpc/pseries: Fix of_node_put() underflow during DLPAR remove
    
    commit 68baf692c435339e6295cb470ea5545cbc28160e upstream.
    
    Historically struct device_node references were tracked using a kref embedded as
    a struct field. Commit 75b57ecf9d1d ("of: Make device nodes kobjects so they
    show up in sysfs") (Mar 2014) refactored device_nodes to be kobjects such that
    the device tree could by more simply exposed to userspace using sysfs.
    
    Commit 0829f6d1f69e ("of: device_node kobject lifecycle fixes") (Mar 2014)
    followed up these changes to better control the kobject lifecycle and in
    particular the referecne counting via of_node_get(), of_node_put(), and
    of_node_init().
    
    A result of this second commit was that it introduced an of_node_put() call when
    a dynamic node is detached, in of_node_remove(), that removes the initial kobj
    reference created by of_node_init().
    
    Traditionally as the original dynamic device node user the pseries code had
    assumed responsibilty for releasing this final reference in its platform
    specific DLPAR detach code.
    
    This patch fixes a refcount underflow introduced by commit 0829f6d1f6, and
    recently exposed by the upstreaming of the recount API.
    
    Messages like the following are no longer seen in the kernel log with this
    patch following DLPAR remove operations of cpus and pci devices.
    
      rpadlpar_io: slot PHB 72 removed
      refcount_t: underflow; use-after-free.
      ------------[ cut here ]------------
      WARNING: CPU: 5 PID: 3335 at lib/refcount.c:128 refcount_sub_and_test+0xf4/0x110
    
    Fixes: 0829f6d1f69e ("of: device_node kobject lifecycle fixes")
    Signed-off-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
    [mpe: Make change log commit references more verbose]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0da3e00df38673db6f311bb38d31a30de87e6c6
Author: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Date:   Tue Apr 18 22:08:17 2017 +0530

    powerpc/book3s/mce: Move add_taint() later in virtual mode
    
    commit d93b0ac01a9ce276ec39644be47001873d3d183c upstream.
    
    machine_check_early() gets called in real mode. The very first time when
    add_taint() is called, it prints a warning which ends up calling opal
    call (that uses OPAL_CALL wrapper) for writing it to console. If we get a
    very first machine check while we are in opal we are doomed. OPAL_CALL
    overwrites the PACASAVEDMSR in r13 and in this case when we are done with
    MCE handling the original opal call will use this new MSR on it's way
    back to opal_return. This usually leads to unexpected behaviour or the
    kernel to panic. Instead move the add_taint() call later in the virtual
    mode where it is safe to call.
    
    This is broken with current FW level. We got lucky so far for not getting
    very first MCE hit while in OPAL. But easily reproducible on Mambo.
    
    Fixes: 27ea2c420cad ("powerpc: Set the correct kernel taint on machine check errors.")
    Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 222f1d668d0004612360495a40e0cc003e27e8bc
Author: Russell Currey <ruscur@russell.cc>
Date:   Wed Apr 19 17:39:26 2017 +1000

    powerpc/eeh: Avoid use after free in eeh_handle_special_event()
    
    commit daeba2956f32f91f3493788ff6ee02fb1b2f02fa upstream.
    
    eeh_handle_special_event() is called when an EEH event is detected but
    can't be narrowed down to a specific PE.  This function looks through
    every PE to find one in an erroneous state, then calls the regular event
    handler eeh_handle_normal_event() once it knows which PE has an error.
    
    However, if eeh_handle_normal_event() found that the PE cannot possibly
    be recovered, it will free it, rendering the passed PE stale.
    This leads to a use after free in eeh_handle_special_event() as it attempts to
    clear the "recovering" state on the PE after eeh_handle_normal_event() returns.
    
    Thus, make sure the PE is valid when attempting to clear state in
    eeh_handle_special_event().
    
    Fixes: 8a6b1bc70dbb ("powerpc/eeh: EEH core to handle special event")
    Reported-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: Russell Currey <ruscur@russell.cc>
    Reviewed-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 690f09eb52bcedb9853878c98c4e90860f05d99f
Author: David Gibson <david@gibson.dropbear.id.au>
Date:   Wed Apr 19 16:38:26 2017 +1000

    powerpc/mm: Ensure IRQs are off in switch_mm()
    
    commit 9765ad134a00a01cbcc69c78ff6defbfad209bc5 upstream.
    
    powerpc expects IRQs to already be (soft) disabled when switch_mm() is
    called, as made clear in the commit message of 9c1e105238c4 ("powerpc: Allow
    perf_counters to access user memory at interrupt time").
    
    Aside from any race conditions that might exist between switch_mm() and an IRQ,
    there is also an unconditional hard_irq_disable() in switch_slb(). If that isn't
    followed at some point by an IRQ enable then interrupts will remain disabled
    until we return to userspace.
    
    It is true that when switch_mm() is called from the scheduler IRQs are off, but
    not when it's called by use_mm(). Looking closer we see that last year in commit
    f98db6013c55 ("sched/core: Add switch_mm_irqs_off() and use it in the scheduler")
    this was made more explicit by the addition of switch_mm_irqs_off() which is now
    called by the scheduler, vs switch_mm() which is used by use_mm().
    
    Arguably it is a bug in use_mm() to call switch_mm() in a different context than
    it expects, but fixing that will take time.
    
    This was discovered recently when vhost started throwing warnings such as:
    
      BUG: sleeping function called from invalid context at kernel/mutex.c:578
      in_atomic(): 0, irqs_disabled(): 1, pid: 10768, name: vhost-10760
      no locks held by vhost-10760/10768.
      irq event stamp: 10
      hardirqs last  enabled at (9):  _raw_spin_unlock_irq+0x40/0x80
      hardirqs last disabled at (10): switch_slb+0x2e4/0x490
      softirqs last  enabled at (0):  copy_process+0x5e8/0x1260
      softirqs last disabled at (0):  (null)
      Call Trace:
        show_stack+0x88/0x390 (unreliable)
        dump_stack+0x30/0x44
        __might_sleep+0x1c4/0x2d0
        mutex_lock_nested+0x74/0x5c0
        cgroup_attach_task_all+0x5c/0x180
        vhost_attach_cgroups_work+0x58/0x80 [vhost]
        vhost_worker+0x24c/0x3d0 [vhost]
        kthread+0xec/0x100
        ret_from_kernel_thread+0x5c/0xd4
    
    Prior to commit 04b96e5528ca ("vhost: lockless enqueuing") (Aug 2016) the
    vhost_worker() would do a spin_unlock_irq() not long after calling use_mm(),
    which had the effect of reenabling IRQs. Since that commit removed the locking
    in vhost_worker() the body of the vhost_worker() loop now runs with interrupts
    off causing the warnings.
    
    This patch addresses the problem by making the powerpc code mirror the x86 code,
    ie. we disable interrupts in switch_mm(), and optimise the scheduler case by
    defining switch_mm_irqs_off().
    
    Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
    [mpe: Flesh out/rewrite change log, add stable]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2338de43e234d7144c1dff900bf3422b1523ac00
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 09:53:56 2017 -0300

    cx231xx-cards: fix NULL-deref at probe
    
    commit 0cd273bb5e4d1828efaaa8dfd11b7928131ed149 upstream.
    
    Make sure to check the number of endpoints to avoid dereferencing a
    NULL-pointer or accessing memory beyond the endpoint array should a
    malicious device lack the expected endpoints.
    
    Fixes: e0d3bafd0258 ("V4L/DVB (10954): Add cx231xx USB driver")
    
    Cc: Sri Deevi <Srinivasa.Deevi@conexant.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ebb884009b60f662024630a6df8e565ed5956f1
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 09:53:58 2017 -0300

    cx231xx-audio: fix NULL-deref at probe
    
    commit 65f921647f4c89a2068478c89691f39b309b58f7 upstream.
    
    Make sure to check the number of endpoints to avoid dereferencing a
    NULL-pointer or accessing memory beyond the endpoint array should a
    malicious device lack the expected endpoints.
    
    Fixes: e0d3bafd0258 ("V4L/DVB (10954): Add cx231xx USB driver")
    
    Cc: Sri Deevi <Srinivasa.Deevi@conexant.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b24b8c070230d4a539063ca3291233fa0cd80a6
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 09:53:57 2017 -0300

    cx231xx-audio: fix init error path
    
    commit fff1abc4d54e469140a699612b4db8d6397bfcba upstream.
    
    Make sure to release the snd_card also on a late allocation error.
    
    Fixes: e0d3bafd0258 ("V4L/DVB (10954): Add cx231xx USB driver")
    
    Cc: Sri Deevi <Srinivasa.Deevi@conexant.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40616929f87e1bb236f5daa0dffa3a95553ac76a
Author: Alyssa Milburn <amilburn@zall.org>
Date:   Sat Apr 1 14:34:49 2017 -0300

    dw2102: limit messages to buffer size
    
    commit 950e252cb469f323740d78e4907843acef89eedb upstream.
    
    Otherwise the i2c transfer functions can read or write beyond the end of
    stack or heap buffers.
    
    Signed-off-by: Alyssa Milburn <amilburn@zall.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e42a6715d26bc777b545018d585333ee91cdbbe9
Author: Alyssa Milburn <amilburn@zall.org>
Date:   Sat Apr 1 14:33:42 2017 -0300

    digitv: limit messages to buffer size
    
    commit 821117dc21083a99dd99174c10848d70ff43de29 upstream.
    
    Return an error rather than memcpy()ing beyond the end of the buffer.
    Internal callers use appropriate sizes, but digitv_i2c_xfer may not.
    
    Signed-off-by: Alyssa Milburn <amilburn@zall.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28590f1bb601862c663c1e95158ffcc452593ff9
Author: Daniel Scheller <d.scheller@gmx.net>
Date:   Sun Mar 19 12:26:39 2017 -0300

    dvb-frontends/cxd2841er: define symbol_rate_min/max in T/C fe-ops
    
    commit 158f0328af86a99d64073851967a02694bff987d upstream.
    
    Fixes "w_scan -f c" complaining with
    
      This dvb driver is *buggy*: the symbol rate limits are undefined - please
      report to linuxtv.org)
    
    Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
    Acked-by: Abylay Ospan <aospan@netup.ru>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64579fcc57fd00e1e9f021eba90d01d3371dc6b7
Author: Alyssa Milburn <amilburn@zall.org>
Date:   Sat Apr 1 14:34:08 2017 -0300

    zr364xx: enforce minimum size when reading header
    
    commit ee0fe833d96793853335844b6d99fb76bd12cbeb upstream.
    
    This code copies actual_length-128 bytes from the header, which will
    underflow if the received buffer is too small.
    
    Signed-off-by: Alyssa Milburn <amilburn@zall.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 466b45af50fd27754dff2982c65396c5ca9d461c
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 09:53:54 2017 -0300

    dib0700: fix NULL-deref at probe
    
    commit d5823511c0f8719a39e72ede1bce65411ac653b7 upstream.
    
    Make sure to check the number of endpoints to avoid dereferencing a
    NULL-pointer should a malicious device lack endpoints.
    
    Fixes: c4018fa2e4c0 ("[media] dib0700: fix RC support on Hauppauge
    Nova-TD")
    
    Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 074912daab5584e79e3e8d8291f4cc33b14ac9d3
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Wed Mar 22 04:53:57 2017 -0300

    s5p-mfc: Fix unbalanced call to clock management
    
    commit a5cb00eb4223458250b55daf03ac7ea5f424d601 upstream.
    
    Clock should be turned off after calling s5p_mfc_init_hw() from the
    watchdog worker, like it is already done in the s5p_mfc_open() which also
    calls this function.
    
    Fixes: af93574678108 ("[media] MFC: Add MFC 5.1 V4L2 driver")
    
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a9c54250492a1a8c5fa62885c7f3dcd3eefb76b
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 09:53:59 2017 -0300

    gspca: konica: add missing endpoint sanity check
    
    commit aa58fedb8c7b6cf2f05941d238495f9e2f29655c upstream.
    
    Make sure to check the number of endpoints to avoid accessing memory
    beyond the endpoint array should a device lack the expected endpoints.
    
    Note that, as far as I can tell, the gspca framework has already made
    sure there is at least one endpoint in the current alternate setting so
    there should be no risk for a NULL-pointer dereference here.
    
    Fixes: b517af722860 ("V4L/DVB: gspca_konica: New gspca subdriver for
    konica chipset using cams")
    
    Cc: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hansverk@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2f95f88106f32b1e82898d0a2a757366e2cbc5f
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Thu Feb 23 08:43:27 2017 -0300

    s5p-mfc: Fix race between interrupt routine and device functions
    
    commit 0c32b8ec02832df167e16ad659cb11dc148f2ddf upstream.
    
    Interrupt routine must wake process waiting for given interrupt AFTER
    updating driver's internal structures and contexts. Doing it in-between
    is a serious bug. This patch moves all calls to the wake() function to
    the end of the interrupt processing block to avoid potential and real
    races, especially on multi-core platforms. This also fixes following issue
    reported from clock core (clocks were disabled in interrupt after being
    unprepared from the other place in the driver, the stack trace however
    points to the different place than s5p_mfc driver because of the race):
    
    WARNING: CPU: 1 PID: 18 at drivers/clk/clk.c:544 clk_core_unprepare+0xc8/0x108
    Modules linked in:
    CPU: 1 PID: 18 Comm: kworker/1:0 Not tainted 4.10.0-next-20170223-00070-g04e18bc99ab9-dirty #2154
    Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
    Workqueue: pm pm_runtime_work
    [<c010d8b0>] (unwind_backtrace) from [<c010a534>] (show_stack+0x10/0x14)
    [<c010a534>] (show_stack) from [<c033292c>] (dump_stack+0x74/0x94)
    [<c033292c>] (dump_stack) from [<c011cef4>] (__warn+0xd4/0x100)
    [<c011cef4>] (__warn) from [<c011cf40>] (warn_slowpath_null+0x20/0x28)
    [<c011cf40>] (warn_slowpath_null) from [<c0387a84>] (clk_core_unprepare+0xc8/0x108)
    [<c0387a84>] (clk_core_unprepare) from [<c0389d84>] (clk_unprepare+0x24/0x2c)
    [<c0389d84>] (clk_unprepare) from [<c03d4660>] (exynos_sysmmu_suspend+0x48/0x60)
    [<c03d4660>] (exynos_sysmmu_suspend) from [<c042b9b0>] (pm_generic_runtime_suspend+0x2c/0x38)
    [<c042b9b0>] (pm_generic_runtime_suspend) from [<c0437580>] (genpd_runtime_suspend+0x94/0x220)
    [<c0437580>] (genpd_runtime_suspend) from [<c042e240>] (__rpm_callback+0x134/0x208)
    [<c042e240>] (__rpm_callback) from [<c042e334>] (rpm_callback+0x20/0x80)
    [<c042e334>] (rpm_callback) from [<c042d3b8>] (rpm_suspend+0xdc/0x458)
    [<c042d3b8>] (rpm_suspend) from [<c042ea24>] (pm_runtime_work+0x80/0x90)
    [<c042ea24>] (pm_runtime_work) from [<c01322c4>] (process_one_work+0x120/0x318)
    [<c01322c4>] (process_one_work) from [<c0132520>] (worker_thread+0x2c/0x4ac)
    [<c0132520>] (worker_thread) from [<c0137ab0>] (kthread+0xfc/0x134)
    [<c0137ab0>] (kthread) from [<c0107978>] (ret_from_fork+0x14/0x3c)
    ---[ end trace 1ead49a7bb83f0d8 ]---
    
    Fixes: af93574678108 ("[media] MFC: Add MFC 5.1 V4L2 driver")
    
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6bee0b1fe4eda64055cbf48a556fd77211f63078
Author: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date:   Fri Apr 7 17:13:17 2017 -0700

    iio: hid-sensor: Store restore poll and hysteresis on S3
    
    commit 5d9854eaea776441b38a9a45b4e6879524c4f48c upstream.
    
    This change undo the change done by 'commit 3bec24747446
    ("iio: hid-sensor-trigger: Change get poll value function order to avoid
    sensor properties losing after resume from S3")' as this breaks some
    USB/i2c sensor hubs.
    
    Instead of relying on HW for restoring poll and hysteresis, driver stores
    and restores on resume (S3). In this way user space modified settings are
    not lost for any kind of sensor hub behavior.
    
    In this change, whenever user space modifies sampling frequency or
    hysteresis driver will get the feature value from the hub and store in the
    per device hid_sensor_common data structure. On resume callback from S3,
    system will set the feature to sensor hub, if user space ever modified the
    feature value.
    
    Fixes: 3bec24747446 ("iio: hid-sensor-trigger: Change get poll value function order to avoid sensor properties losing after resume from S3")
    Reported-by: Ritesh Raj Sarraf <rrs@researchut.com>
    Tested-by: Ritesh Raj Sarraf <rrs@researchut.com>
    Tested-by: Song, Hongyan <hongyan.song@intel.com>
    Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a99462b13dff9de2aa7941aaad8b4ed10edbb629
Author: Matt Ranostay <matt.ranostay@konsulko.com>
Date:   Thu Apr 13 23:21:56 2017 -0700

    iio: proximity: as3935: fix as3935_write
    
    commit 84ca8e364acb26aba3292bc113ca8ed4335380fd upstream.
    
    AS3935_WRITE_DATA macro bit is incorrect and the actual write
    sequence is two leading zeros.
    
    Cc: George McCollister <george.mccollister@gmail.com>
    Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 820adccd0e3be9bdd2384ca8fc4712108cfdf28b
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue May 2 13:58:53 2017 +0300

    ipx: call ipxitf_put() in ioctl error path
    
    commit ee0d8d8482345ff97a75a7d747efc309f13b0d80 upstream.
    
    We should call ipxitf_put() if the copy_to_user() fails.
    
    Reported-by: 李强 <liqiang6-s@360.cn>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c67e87a22dd8b39ea1c9864336f7c17175053744
Author: Johan Hovold <johan@kernel.org>
Date:   Wed May 10 18:18:28 2017 +0200

    USB: hub: fix non-SS hub-descriptor handling
    
    commit bec444cd1c94c48df409a35ad4e5b143c245c3f7 upstream.
    
    Add missing sanity check on the non-SuperSpeed hub-descriptor length in
    order to avoid parsing and leaking two bytes of uninitialised slab data
    through sysfs removable-attributes (or a compound-device debug
    statement).
    
    Note that we only make sure that the DeviceRemovable field is always
    present (and specifically ignore the unused PortPwrCtrlMask field) in
    order to continue support any hubs with non-compliant descriptors. As a
    further safeguard, the descriptor buffer is also cleared.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e4a4e68df087008be9686a9d5cefd90d5341587
Author: Johan Hovold <johan@kernel.org>
Date:   Wed May 10 18:18:27 2017 +0200

    USB: hub: fix SS hub-descriptor handling
    
    commit 2c25a2c818023df64463aac3288a9f969491e507 upstream.
    
    A SuperSpeed hub descriptor does not have any variable-length fields so
    bail out when reading a short descriptor.
    
    This avoids parsing and leaking two bytes of uninitialised slab data
    through sysfs removable-attributes.
    
    Fixes: dbe79bbe9dcb ("USB 3.0 Hub Changes")
    Cc: John Youn <John.Youn@synopsys.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9cd79e0ad1fa620ff34715d24ae1b671c97bc91
Author: Johan Hovold <johan@kernel.org>
Date:   Thu May 11 11:41:21 2017 +0200

    USB: serial: io_ti: fix div-by-zero in set_termios
    
    commit 6aeb75e6adfaed16e58780309613a578fe1ee90b upstream.
    
    Fix a division-by-zero in set_termios when debugging is enabled and a
    high-enough speed has been requested so that the divisor value becomes
    zero.
    
    Instead of just fixing the offending debug statement, cap the baud rate
    at the base as a zero divisor value also appears to crash the firmware.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3e024ff91806856059c2fad64ad535bf6bf37eb
Author: Johan Hovold <johan@kernel.org>
Date:   Thu May 11 11:41:20 2017 +0200

    USB: serial: mct_u232: fix big-endian baud-rate handling
    
    commit 26cede343656c0bc2c33cdc783771282405c7fb2 upstream.
    
    Drop erroneous cpu_to_le32 when setting the baud rate, something which
    corrupted the divisor on big-endian hosts.
    
    Found using sparse:
    
            warning: incorrect type in argument 1 (different base types)
                expected unsigned int [unsigned] [usertype] val
                got restricted __le32 [usertype] <noident>
    
    Fixes: af2ac1a091bc ("USB: serial mct_usb232: move DMA buffers to heap")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Acked-By: Pete Zaitcev <zaitcev@yahoo.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8fc44d6748862d70d716c2cadd294660563e74e
Author: Bjørn Mork <bjorn@mork.no>
Date:   Wed May 17 16:30:50 2017 +0200

    USB: serial: qcserial: add more Lenovo EM74xx device IDs
    
    commit 8d7a10dd323993cc40bd37bce8bc570133b0c396 upstream.
    
    In their infinite wisdom, and never ending quest for end user frustration,
    Lenovo has decided to use new USB device IDs for the wwan modules in
    their 2017 laptops.  The actual hardware is still the Sierra Wireless
    EM7455 or EM7430, depending on region.
    
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e5407600663fd7612a46a787063e09c99fc5be6
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Wed May 3 10:28:54 2017 +0200

    usb: serial: option: add Telit ME910 support
    
    commit 40dd46048c155b8f0683f468c950a1c107f77a7c upstream.
    
    This patch adds support for Telit ME910 PID 0x1100.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee0f3a89842ea7adab3f42d08d98f77f13fa0357
Author: Johan Hovold <johan@kernel.org>
Date:   Thu May 11 11:36:02 2017 +0200

    USB: iowarrior: fix info ioctl on big-endian hosts
    
    commit dd5ca753fa92fb736b1395db892bd29f78e6d408 upstream.
    
    Drop erroneous le16_to_cpu when returning the USB device speed which is
    already in host byte order.
    
    Found using sparse:
    
            warning: cast to restricted __le16
    
    Fixes: 946b960d13c1 ("USB: add driver for iowarrior devices.")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dbb127332abf38e6df266b9cabee7d73ef6ea6da
Author: Tony Lindgren <tony@atomide.com>
Date:   Wed May 17 11:23:10 2017 -0500

    usb: musb: Fix trying to suspend while active for OTG configurations
    
    commit 3c50ffef25855a9d9e4b07b02d756a8cdd653069 upstream.
    
    Commit d8e5f0eca1e8 ("usb: musb: Fix hardirq-safe hardirq-unsafe
    lock order error") caused a regression where musb keeps trying to
    enable host mode with no cable connected. This seems to be caused
    by the fact that now phy is enabled earlier, and we are wrongly
    trying to force USB host mode on an OTG port. The errors we are
    getting are "trying to suspend as a_idle while active".
    
    For ports configured as OTG, we should not need to do anything
    to try to force USB host mode on it's OTG port. Trying to force host
    mode in this case just seems to completely confuse the musb state
    machine.
    
    Let's fix the issue by making musb_host_setup() attempt to force the
    mode only if port_mode is configured for host mode.
    
    Fixes: d8e5f0eca1e8 ("usb: musb: Fix hardirq-safe hardirq-unsafe lock order error")
    Cc: Johan Hovold <johan@kernel.org>
    Reported-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Reported-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 08c735a15d5b420879cd096b6c417837e1dbe8fa
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Wed May 17 11:23:11 2017 -0500

    usb: musb: tusb6010_omap: Do not reset the other direction's packet size
    
    commit 6df2b42f7c040d57d9ecb67244e04e905ab87ac6 upstream.
    
    We have one register for each EP to set the maximum packet size for both
    TX and RX.
    If for example an RX programming would happen before the previous TX
    transfer finishes we would reset the TX packet side.
    
    To fix this issue, only modify the TX or RX part of the register.
    
    Fixes: 550a7375fe72 ("USB: Add MUSB and TUSB support")
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Tested-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff9177b158c3cf1420846d1114aec4e2b1cb76e5
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Thu May 11 17:26:47 2017 -0700

    usb: dwc3: gadget: Prevent losing events in event cache
    
    commit d325a1de49d61ee11aca58a529571c91ecea7879 upstream.
    
    The dwc3 driver can overwite its previous events if its top-half IRQ
    handler (TH) gets invoked again before processing the events in the
    cache. We see this as a hang in the file transfer and the host will
    attempt to reset the device. TH gets the event count and deasserts the
    interrupt line by writing DWC3_GEVNTSIZ_INTMASK to DWC3_GEVNTSIZ. If
    there's a new event coming between reading the event count and interrupt
    deassertion, dwc3 will lose previous pending events. More generally, we
    will see 0 event count, which should not affect anything.
    
    This shouldn't be possible in the current dwc3 implementation. However,
    through testing and reading the PCIe trace, the TH occasionally still
    gets invoked one more time after HW interrupt deassertion. (With PCIe
    legacy interrupts, TH is called repeatedly as long as the interrupt line
    is asserted). We suspect that there is a small detection delay in the
    SW.
    
    To avoid this issue, Check DWC3_EVENT_PENDING flag to determine if the
    events are processed in the bottom-half IRQ handler. If not, return
    IRQ_HANDLED and don't process new event.
    
    Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 653cd31a2ca536915dd7e4f68e37d36069f9627a
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Fri Feb 17 22:30:51 2017 -0200

    dvb-usb-dibusb-mc-common: Add MODULE_LICENSE
    
    commit bf05b65a9fe5f6a6dd3e72cab2aacd8b5b96e41d upstream.
    
    dvb-usb-dibusb-mc-common is licensed under GPLv2, and if we don't say
    so then it won't even load since it needs a GPL-only symbol.
    
    Fixes: e91455a1495a ("[media] dvb-usb: split out common parts of dibusb")
    
    Reported-by: Dominique Dumont <dod@debian.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f93054d9b45857cc68bb7f5e8010e086be656ce
Author: Alyssa Milburn <amilburn@zall.org>
Date:   Sat Apr 1 14:34:32 2017 -0300

    ttusb2: limit messages to buffer size
    
    commit a12b8ab8c5ff7ccd7b107a564743507c850a441d upstream.
    
    Otherwise ttusb2_i2c_xfer can read or write beyond the end of static and
    heap buffers.
    
    Signed-off-by: Alyssa Milburn <amilburn@zall.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c71b5040632f90131e62ecdc83063179cc2ae7af
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Mar 7 15:14:13 2017 -0300

    mceusb: fix NULL-deref at probe
    
    commit 03eb2a557ed552e920a0942b774aaf931596eec1 upstream.
    
    Make sure to check for the required out endpoint to avoid dereferencing
    a NULL-pointer in mce_request_packet should a malicious device lack such
    an endpoint. Note that this path is hit during probe.
    
    Fixes: 66e89522aff7 ("V4L/DVB: IR: add mceusb IR receiver driver")
    
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 736f41a47442c164e3cdc8d2a980d3155130163f
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 09:53:55 2017 -0300

    usbvision: fix NULL-deref at probe
    
    commit eacb975b48272f54532b62f515a3cf7eefa35123 upstream.
    
    Make sure to check the number of endpoints to avoid dereferencing a
    NULL-pointer or accessing memory beyond the endpoint array should a
    malicious device lack the expected endpoints.
    
    Fixes: 2a9f8b5d25be ("V4L/DVB (5206): Usbvision: set alternate interface
    modification")
    
    Cc: Thierry MERLE <thierry.merle@free.fr>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3adb4721ae2af534b1adf74dfb7f54329fa448c
Author: Johan Hovold <johan@kernel.org>
Date:   Fri May 12 12:11:13 2017 +0200

    net: irda: irda-usb: fix firmware name on big-endian hosts
    
    commit 75cf067953d5ee543b3bda90bbfcbee5e1f94ae8 upstream.
    
    Add missing endianness conversion when using the USB device-descriptor
    bcdDevice field to construct a firmware file name.
    
    Fixes: 8ef80aef118e ("[IRDA]: irda-usb.c: STIR421x cleanups")
    Cc: Nick Fedchik <nfedchik@atlantic-link.com.ua>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1046d6a51f570cba480077aa9f22b5fe6efe6cc6
Author: Peter Chen <peter.chen@nxp.com>
Date:   Wed May 17 18:32:01 2017 +0300

    usb: host: xhci-mem: allocate zeroed Scratchpad Buffer
    
    commit 7480d912d549f414e0ce39331870899e89a5598c upstream.
    
    According to xHCI ch4.20 Scratchpad Buffers, the Scratchpad
    Buffer needs to be zeroed.
    
            ...
            The following operations take place to allocate
            Scratchpad Buffers to the xHC:
            ...
                    b. Software clears the Scratchpad Buffer to '0'
    
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 219628bb0c052b95523dfc526aa0027ff0de3a9d
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Wed May 17 18:32:00 2017 +0300

    xhci: apply PME_STUCK_QUIRK and MISSING_CAS quirk for Denverton
    
    commit a0c16630d35a874e82bdf2088f58ecaca1024315 upstream.
    
    Intel Denverton microserver is Atom based and need the PME and CAS quirks
    as well.
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a926919364fc1840ad3e47b3d900f62483f424b
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Wed May 17 18:32:06 2017 +0300

    usb: host: xhci-plat: propagate return value of platform_get_irq()
    
    commit 4b148d5144d64ee135b8924350cb0b3a7fd21150 upstream.
    
    platform_get_irq() returns an error code, but the xhci-plat driver
    ignores it and always returns -ENODEV. This is not correct, and
    prevents -EPROBE_DEFER from being propagated properly.
    
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 374a3fb5c3b0934cfda09bcf6362058249e7869b
Author: Matthias Lange <matthias.lange@kernkonzept.com>
Date:   Wed May 17 18:32:04 2017 +0300

    xhci: remove GFP_DMA flag from allocation
    
    commit 5db851cf20857c5504b146046e97cb7781f2a743 upstream.
    
    There is no reason to restrict allocations to the first 16MB ISA DMA
    addresses.
    
    It is causing problems in a virtualization setup with enabled IOMMU
    (x86_64). The result is that USB is not working in the VM.
    
    Signed-off-by: Matthias Lange <matthias.lange@kernkonzept.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa313fd6673e498b6d0b2c87bb3bfedab556c122
Author: Toshi Kani <toshi.kani@hpe.com>
Date:   Thu Apr 27 16:57:05 2017 -0600

    libnvdimm: fix clear length of nvdimm_forget_poison()
    
    commit 8d13c0290655b883df9083a2a0af0d782bc38aef upstream.
    
    ND_CMD_CLEAR_ERROR command returns 'clear_err.cleared', the length
    of error actually cleared, which may be smaller than its requested
    'len'.
    
    Change nvdimm_clear_poison() to call nvdimm_forget_poison() with
    'clear_err.cleared' when this value is valid.
    
    Fixes: e046114af5fc ("libnvdimm: clear the internal poison_list when clearing badblocks")
    Cc: Dave Jiang <dave.jiang@intel.com>
    Cc: Vishal Verma <vishal.l.verma@intel.com>
    Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af9bd521885569799475fefcf3333a9ace5ce51f
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Apr 24 10:00:09 2017 -0700

    fscrypt: avoid collisions when presenting long encrypted filenames
    
    commit 6b06cdee81d68a8a829ad8e8d0f31d6836744af9 upstream.
    
    When accessing an encrypted directory without the key, userspace must
    operate on filenames derived from the ciphertext names, which contain
    arbitrary bytes.  Since we must support filenames as long as NAME_MAX,
    we can't always just base64-encode the ciphertext, since that may make
    it too long.  Currently, this is solved by presenting long names in an
    abbreviated form containing any needed filesystem-specific hashes (e.g.
    to identify a directory block), then the last 16 bytes of ciphertext.
    This needs to be sufficient to identify the actual name on lookup.
    
    However, there is a bug.  It seems to have been assumed that due to the
    use of a CBC (ciphertext block chaining)-based encryption mode, the last
    16 bytes (i.e. the AES block size) of ciphertext would depend on the
    full plaintext, preventing collisions.  However, we actually use CBC
    with ciphertext stealing (CTS), which handles the last two blocks
    specially, causing them to appear "flipped".  Thus, it's actually the
    second-to-last block which depends on the full plaintext.
    
    This caused long filenames that differ only near the end of their
    plaintexts to, when observed without the key, point to the wrong inode
    and be undeletable.  For example, with ext4:
    
        # echo pass | e4crypt add_key -p 16 edir/
        # seq -f "edir/abcdefghijklmnopqrstuvwxyz012345%.0f" 100000 | xargs touch
        # find edir/ -type f | xargs stat -c %i | sort | uniq | wc -l
        100000
        # sync
        # echo 3 > /proc/sys/vm/drop_caches
        # keyctl new_session
        # find edir/ -type f | xargs stat -c %i | sort | uniq | wc -l
        2004
        # rm -rf edir/
        rm: cannot remove 'edir/_A7nNFi3rhkEQlJ6P,hdzluhODKOeWx5V': Structure needs cleaning
        ...
    
    To fix this, when presenting long encrypted filenames, encode the
    second-to-last block of ciphertext rather than the last 16 bytes.
    
    Although it would be nice to solve this without depending on a specific
    encryption mode, that would mean doing a cryptographic hash like SHA-256
    which would be much less efficient.  This way is sufficient for now, and
    it's still compatible with encryption modes like HEH which are strong
    pseudorandom permutations.  Also, changing the presented names is still
    allowed at any time because they are only provided to allow applications
    to do things like delete encrypted directories.  They're not designed to
    be used to persistently identify files --- which would be hard to do
    anyway, given that they're encrypted after all.
    
    For ease of backports, this patch only makes the minimal fix to both
    ext4 and f2fs.  It leaves ubifs as-is, since ubifs doesn't compare the
    ciphertext block yet.  Follow-on patches will clean things up properly
    and make the filesystems use a shared helper function.
    
    Fixes: 5de0b4d0cd15 ("ext4 crypto: simplify and speed up filename encryption")
    Reported-by: Gwendal Grignou <gwendal@chromium.org>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8daed21dbce1d28fd082ef6f2faf8990ccebfd6f
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Mon Apr 24 10:00:08 2017 -0700

    f2fs: check entire encrypted bigname when finding a dentry
    
    commit 6332cd32c8290a80e929fc044dc5bdba77396e33 upstream.
    
    If user has no key under an encrypted dir, fscrypt gives digested dentries.
    Previously, when looking up a dentry, f2fs only checks its hash value with
    first 4 bytes of the digested dentry, which didn't handle hash collisions fully.
    This patch enhances to check entire dentry bytes likewise ext4.
    
    Eric reported how to reproduce this issue by:
    
     # seq -f "edir/abcdefghijklmnopqrstuvwxyz012345%.0f" 100000 | xargs touch
     # find edir -type f | xargs stat -c %i | sort | uniq | wc -l
    100000
     # sync
     # echo 3 > /proc/sys/vm/drop_caches
     # keyctl new_session
     # find edir -type f | xargs stat -c %i | sort | uniq | wc -l
    99999
    
    Cc: <stable@vger.kernel.org>
    Reported-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    (fixed f2fs_dentry_hash() to work even when the hash is 0)
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9c0da6219e19901c5bea6e5c19514929dae9e18
Author: Johan Hovold <johan@kernel.org>
Date:   Thu May 11 11:36:01 2017 +0200

    USB: chaoskey: fix Alea quirk on big-endian hosts
    
    commit 63afd5cc78775018ea2dec4004428dafa5283e93 upstream.
    
    Add missing endianness conversion when applying the Alea timeout quirk.
    
    Found using sparse:
    
            warning: restricted __le16 degrades to integer
    
    Fixes: e4a886e811cd ("hwrng: chaoskey - Fix URB warning due to timeout on Alea")
    Cc: Bob Ham <bob.ham@collabora.com>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: Keith Packard <keithp@keithp.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 545a3171d37fdb5b9390a0852093309dd03ba2a5
Author: Andrey Korolyov <andrey@xdel.ru>
Date:   Tue May 16 23:54:41 2017 +0300

    USB: serial: ftdi_sio: add Olimex ARM-USB-TINY(H) PIDs
    
    commit 5f63424ab7daac840df2b12dd5bcc5b38d50f779 upstream.
    
    This patch adds support for recognition of ARM-USB-TINY(H) devices which
    are almost identical to ARM-USB-OCD(H) but lacking separate barrel jack
    and serial console.
    
    By suggestion from Johan Hovold it is possible to replace
    ftdi_jtag_quirk with a bit more generic construction. Since all
    Olimex-ARM debuggers has exactly two ports, we could safely always use
    only second port within the debugger family.
    
    Signed-off-by: Andrey Korolyov <andrey@xdel.ru>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 038ccaa5d50e7b338fd6c4b1293d1e2aa0b3d8da
Author: Anthony Mallet <anthony.mallet@laas.fr>
Date:   Fri May 5 17:30:16 2017 +0200

    USB: serial: ftdi_sio: fix setting latency for unprivileged users
    
    commit bb246681b3ed0967489a7401ad528c1aaa1a4c2e upstream.
    
    Commit 557aaa7ffab6 ("ft232: support the ASYNC_LOW_LATENCY
    flag") enables unprivileged users to set the FTDI latency timer,
    but there was a logic flaw that skipped sending the corresponding
    USB control message to the device.
    
    Specifically, the device latency timer would not be updated until next
    open, something which was later also inadvertently broken by commit
    c19db4c9e49a ("USB: ftdi_sio: set device latency timeout at port
    probe").
    
    A recent commit c6dce2626606 ("USB: serial: ftdi_sio: fix extreme
    low-latency setting") disabled the low-latency mode by default so we now
    need this fix to allow unprivileged users to again enable it.
    
    Signed-off-by: Anthony Mallet <anthony.mallet@laas.fr>
    [johan: amend commit message]
    Fixes: 557aaa7ffab6 ("ft232: support the ASYNC_LOW_LATENCY flag")
    Fixes: c19db4c9e49a ("USB: ftdi_sio: set device latency timeout at port probe").
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ea2f891fa85a6b8fd2fd6991e16844be39da888
Author: Kirill Tkhai <ktkhai@virtuozzo.com>
Date:   Fri May 12 19:11:31 2017 +0300

    pid_ns: Fix race between setns'ed fork() and zap_pid_ns_processes()
    
    commit 3fd37226216620c1a468afa999739d5016fbc349 upstream.
    
    Imagine we have a pid namespace and a task from its parent's pid_ns,
    which made setns() to the pid namespace. The task is doing fork(),
    while the pid namespace's child reaper is dying. We have the race
    between them:
    
    Task from parent pid_ns             Child reaper
    copy_process()                      ..
      alloc_pid()                       ..
      ..                                zap_pid_ns_processes()
      ..                                  disable_pid_allocation()
      ..                                  read_lock(&tasklist_lock)
      ..                                  iterate over pids in pid_ns
      ..                                    kill tasks linked to pids
      ..                                  read_unlock(&tasklist_lock)
      write_lock_irq(&tasklist_lock);   ..
      attach_pid(p, PIDTYPE_PID);       ..
      ..                                ..
    
    So, just created task p won't receive SIGKILL signal,
    and the pid namespace will be in contradictory state.
    Only manual kill will help there, but does the userspace
    care about this? I suppose, the most users just inject
    a task into a pid namespace and wait a SIGCHLD from it.
    
    The patch fixes the problem. It simply checks for
    (pid_ns->nr_hashed & PIDNS_HASH_ADDING) in copy_process().
    We do it under the tasklist_lock, and can't skip
    PIDNS_HASH_ADDING as noted by Oleg:
    
    "zap_pid_ns_processes() does disable_pid_allocation()
    and then takes tasklist_lock to kill the whole namespace.
    Given that copy_process() checks PIDNS_HASH_ADDING
    under write_lock(tasklist) they can't race;
    if copy_process() takes this lock first, the new child will
    be killed, otherwise copy_process() can't miss
    the change in ->nr_hashed."
    
    If allocation is disabled, we just return -ENOMEM
    like it's made for such cases in alloc_pid().
    
    v2: Do not move disable_pid_allocation(), do not
    introduce a new variable in copy_process() and simplify
    the patch as suggested by Oleg Nesterov.
    Account the problem with double irq enabling
    found by Eric W. Biederman.
    
    Fixes: c876ad768215 ("pidns: Stop pid allocation when init dies")
    Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
    CC: Andrew Morton <akpm@linux-foundation.org>
    CC: Ingo Molnar <mingo@kernel.org>
    CC: Peter Zijlstra <peterz@infradead.org>
    CC: Oleg Nesterov <oleg@redhat.com>
    CC: Mike Rapoport <rppt@linux.vnet.ibm.com>
    CC: Michal Hocko <mhocko@suse.com>
    CC: Andy Lutomirski <luto@kernel.org>
    CC: "Eric W. Biederman" <ebiederm@xmission.com>
    CC: Andrei Vagin <avagin@openvz.org>
    CC: Cyrill Gorcunov <gorcunov@openvz.org>
    CC: Serge Hallyn <serge@hallyn.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6dc6a2700b6a0dd755027654b85bd614d8d3d52b
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Thu May 11 18:21:01 2017 -0500

    pid_ns: Sleep in TASK_INTERRUPTIBLE in zap_pid_ns_processes
    
    commit b9a985db98961ae1ba0be169f19df1c567e4ffe0 upstream.
    
    The code can potentially sleep for an indefinite amount of time in
    zap_pid_ns_processes triggering the hung task timeout, and increasing
    the system average.  This is undesirable.  Sleep with a task state of
    TASK_INTERRUPTIBLE instead of TASK_UNINTERRUPTIBLE to remove these
    undesirable side effects.
    
    Apparently under heavy load this has been allowing Chrome to trigger
    the hung time task timeout error and cause ChromeOS to reboot.
    
    Reported-by: Vovo Yang <vovoy@google.com>
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Fixes: 6347e9009104 ("pidns: guarantee that the pidns init will be the last pidns process reaped")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e40ac3fbd0d733bf32447b44f50ca32efb05e20
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
Date:   Thu May 4 05:14:34 2017 -0700

    IB/hfi1: Fix a subcontext memory leak
    
    commit 224d71f910102c966cdcd782c97e096d5e26e4da upstream.
    
    The only context that frees user_exp_rcv data structures is the last
    context closed (from a sub-context set).  This leaks the allocations
    from the other sub-contexts.  Separate the common frees from the
    specific frees and call them at the appropriate time.
    
    Using KEDR to check for memory leaks we get:
    
    Before test:
    
    [leak_check] Possible leaks: 25
    
    After test:
    
    [leak_check] Possible leaks: 31  (6 leaked data structures)
    
    After patch applied (before and after test have the same value)
    
    [leak_check] Possible leaks: 25
    
    Each leak is 192 + 13440 + 6720 = 20352 bytes per sub-context.
    
    Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b894ea8263caee43d90c2f956361f280bc32990d
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
Date:   Thu May 4 05:14:28 2017 -0700

    IB/hfi1: Return an error on memory allocation failure
    
    commit 94679061dcdddbafcf24e3bfb526e54dedcc2f2f upstream.
    
    If the eager buffer allocation fails, it is necessary to return
    an error code.
    
    Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dfb450b2b66e4271c63c10f72c17e2a9967e511c
Author: Andreas Klinger <ak@it-klinger.de>
Date:   Mon Apr 10 19:00:01 2017 +0200

    IIO: bmp280-core.c: fix error in humidity calculation
    
    commit ed3730c435f1a9f9559ed7762035d22d8a95adfe upstream.
    
    While calculating the compensation of the humidity there are negative values
    interpreted as unsigned because of unsigned variables used.  These values as
    well as the constants need to be casted to signed as indicated by the
    documentation of the sensor.
    
    Signed-off-by: Andreas Klinger <ak@it-klinger.de>
    Acked-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Matt Ranostay <matt.ranostay@konsulko.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a03176f92a02f0e1d1965c32b95d65a8bdbd6ac4
Author: Pavel Roskin <plroskin@gmail.com>
Date:   Thu Apr 13 14:54:23 2017 -0700

    iio: dac: ad7303: fix channel description
    
    commit ce420fd4251809b4c3119b3b20c8b13bd8eba150 upstream.
    
    realbits, storagebits and shift should be numbers, not ASCII characters.
    
    Signed-off-by: Pavel Roskin <plroskin@gmail.com>
    Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05a36277a195264427d5af5718e444bafd75cb44
Author: Bryant G. Ly <bryantly@linux.vnet.ibm.com>
Date:   Fri May 5 14:17:15 2017 -0500

    ibmvscsis: Do not send aborted task response
    
    commit 25e78531268e9240fc594ce76587601b873d37c9 upstream.
    
    The driver is sending a response to the actual scsi op that was
    aborted by an abort task TM, while LIO is sending a response to
    the abort task TM.
    
    ibmvscsis_tgt does not send the response to the client until
    release_cmd time. The reason for this was because if we did it
    at queue_status time, then the client would be free to reuse the
    tag for that command, but we're still using the tag until the
    command is released at release_cmd time, so we chose to delay
    sending the response until then. That then caused this issue, because
    release_cmd is always called, even if queue_status is not.
    
    SCSI spec says that the initiator that sends the abort task
    TM NEVER gets a response to the aborted op and with the current
    code it will send a response. Thus this fix will remove that response
    if the CMD_T_ABORTED && !CMD_T_TAS.
    
    Another case with a small timing window is the case where if LIO sends a
    TMR_DOES_NOT_EXIST, and the release_cmd callback is called for the TMR Abort
    cmd before the release_cmd for the (attemped) aborted cmd, then we need to
    ensure that we send the response for the (attempted) abort cmd to the client
    before we send the response for the TMR Abort cmd.
    
    Signed-off-by: Bryant G. Ly <bryantly@linux.vnet.ibm.com>
    Signed-off-by: Michael Cyr <mikecyr@linux.vnet.ibm.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9907c838fc0700de8a614587cc58490c54fd4551
Author: Johan Hovold <johan@kernel.org>
Date:   Wed May 17 17:29:09 2017 +0200

    of: fdt: add missing allocation-failure check
    
    commit 49e67dd17649b60b4d54966e18ec9c80198227f0 upstream.
    
    The memory allocator passed to __unflatten_device_tree() (e.g. a wrapped
    kzalloc) can fail so add the missing sanity check to avoid dereferencing
    a NULL pointer.
    
    Fixes: fe14042358fa ("of/flattree: Refactor unflatten_device_tree and add fdt_unflatten_tree")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80cdf2065bf0e10862b400715672555ef3e49a3e
Author: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
Date:   Mon Apr 17 20:29:17 2017 -0400

    of: fix "/cpus" reference leak in of_numa_parse_cpu_nodes()
    
    commit b8475cbee5ab2eac05f9cd5dbcc94c453d3cbf10 upstream.
    
    The call to of_find_node_by_path("/cpus") returns the cpus device_node
    with its reference count incremented. There is no matching of_node_put()
    call in of_numa_parse_cpu_nodes() which results in a leaked reference
    to the "/cpus" node.
    
    This patch adds an of_node_put() to release the reference.
    
    fixes: 298535c00a2c ("of, numa: Add NUMA of binding implementation.")
    Signed-off-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
    Acked-by: David Daney <david.daney@cavium.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae5074ba9ef8043e17a13c32402e7a80ef7aafb4
Author: Rob Herring <robh@kernel.org>
Date:   Thu May 4 12:34:30 2017 -0500

    of: fix sparse warning in of_pci_range_parser_one
    
    commit eb3100365791b06242b8bb5c3c2854ba41dabfbc upstream.
    
    sparse gives the following warning for 'pci_space':
    
    ../drivers/of/address.c:266:26: warning: incorrect type in assignment (different base types)
    ../drivers/of/address.c:266:26:    expected unsigned int [unsigned] [usertype] pci_space
    ../drivers/of/address.c:266:26:    got restricted __be32 const [usertype] <noident>
    
    It appears that pci_space is only ever accessed on powerpc, so the endian
    swap is often not needed.
    
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d10b21d6e56261f5d815b8783f944cae8c6369c1
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Apr 28 15:00:15 2017 +0200

    proc: Fix unbalanced hard link numbers
    
    commit d66bb1607e2d8d384e53f3d93db5c18483c8c4f7 upstream.
    
    proc_create_mount_point() forgot to increase the parent's nlink, and
    it resulted in unbalanced hard link numbers, e.g. /proc/fs shows one
    less than expected.
    
    Fixes: eb6d38d5427b ("proc: Allow creating permanently empty directories...")
    Reported-by: Tristan Ye <tristan.ye@suse.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 168b2bfaa235e91c2f7a76ac693435e530f486b3
Author: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
Date:   Thu Apr 27 10:58:22 2017 +0530

    cxl: Route eeh events to all drivers in cxl_pci_error_detected()
    
    commit 4f58f0bf155e87dda31a3088b1e107fa9dd79f0e upstream.
    
    Fix a boundary condition where in some cases an eeh event that results
    in card reset isn't passed on to a driver attached to the virtual PCI
    device associated with a slice. This will happen in case when a slice
    attached device driver returns a value other than
    PCI_ERS_RESULT_NEED_RESET from the eeh error_detected() callback. This
    would result in an early return from cxl_pci_error_detected() and
    other drivers attached to other AFUs on the card wont be notified.
    
    The patch fixes this by making sure that all slice attached
    device-drivers are notified and the return values from
    error_detected() callback are aggregated in a scheme where request for
    'disconnect' trumps all and 'none' trumps 'need_reset'.
    
    Fixes: 9e8df8a21963 ("cxl: EEH support")
    Signed-off-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
    Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
    Acked-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3935312995473ce0abc40582d5cda31da3594294
Author: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
Date:   Thu Apr 27 10:53:25 2017 +0530

    cxl: Force context lock during EEH flow
    
    commit ea9a26d117cf0637c71d3e0076f4a124bf5859df upstream.
    
    During an eeh event when the cxl card is fenced and card sysfs attr
    perst_reloads_same_image is set following warning message is seen in the
    kernel logs:
    
      Adapter context unlocked with 0 active contexts
      ------------[ cut here ]------------
      WARNING: CPU: 12 PID: 627 at
      ../drivers/misc/cxl/main.c:325 cxl_adapter_context_unlock+0x60/0x80 [cxl]
    
    Even though this warning is harmless, it clutters the kernel log
    during an eeh event. This warning is triggered as the EEH callback
    cxl_pci_error_detected doesn't obtain a context-lock before forcibly
    detaching all active context and when context-lock is released during
    call to cxl_configure_adapter from cxl_pci_slot_reset, a warning in
    cxl_adapter_context_unlock is triggered.
    
    To fix this warning, we acquire the adapter context-lock via
    cxl_adapter_context_lock() in the eeh callback
    cxl_pci_error_detected() once all the virtual AFU PHBs are notified
    and their contexts detached. The context-lock is released in
    cxl_pci_slot_reset() after the adapter is successfully reconfigured
    and before the we call the slot_reset callback on slice attached
    device-drivers.
    
    Fixes: 70b565bbdb91 ("cxl: Prevent adapter reset if an active context exists")
    Reported-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
    Signed-off-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
    Acked-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
    Reviewed-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com>
    Tested-by: Uma Krishnan <ukrishn@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc6b678ab1d47085ee0ab3fae4d5289959b45552
Author: Gerd Hoffmann <kraxel@redhat.com>
Date:   Mon Mar 20 09:11:49 2017 +0100

    ohci-pci: add qemu quirk
    
    commit 21a60f6e65181cad64fd66ccc8080d413721ba27 upstream.
    
    On a loaded virtualization host (dozen guests booting at the same time)
    it may happen that the ohci controller emulation doesn't manage to do
    timely frame processing, with the result that the io watchdog fires and
    considers the controller being dead, even though it's only the emulation
    being unusual slow due to the load peak.
    
    So, add a quirk for qemu and don't use the watchdog in case we figure we
    are running on emulated ohci.  The virtual ohci controller masquerades
    as apple ohci controller, but we can identify it by subsystem id.
    
    Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 809ae061d998359783c1bb0c52bba14f4a6397c4
Author: Tobias Herzog <t-herzog@gmx.de>
Date:   Thu Mar 30 22:15:10 2017 +0200

    cdc-acm: fix possible invalid access when processing notification
    
    commit 1bb9914e1730417d530de9ed37e59efdc647146b upstream.
    
    Notifications may only be 8 bytes long. Accessing the 9th and
    10th byte of unimplemented/unknown notifications may be insecure.
    Also check the length of known notifications before accessing anything
    behind the 8th byte.
    
    Signed-off-by: Tobias Herzog <t-herzog@gmx.de>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 198ab4031873b5511d6ef9b4777cabc4eebcaf18
Author: David Rivshin <DRivshin@allworx.com>
Date:   Mon Apr 24 18:56:50 2017 -0400

    gpio: omap: return error if requested debounce time is not possible
    
    commit 83977443938122baeed28dc9f078db3da9855f7c upstream.
    
    omap_gpio_debounce() does not validate that the requested debounce
    is within a range it can handle. Instead it lets the register value
    wrap silently, and always returns success.
    
    This can lead to all sorts of unexpected behavior, such as gpio_keys
    asking for a too-long debounce, but getting a very short debounce in
    practice.
    
    Fix this by returning -EINVAL if the requested value does not fit into
    the register field. If there is no debounce clock available at all,
    return -ENOTSUPP.
    
    Fixes: e85ec6c3047b ("gpio: omap: fix omap2_set_gpio_debounce")
    Signed-off-by: David Rivshin <drivshin@allworx.com>
    Acked-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b77adf29b85687fd593d4dc294fb5cb946b3c0e2
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Thu May 11 17:19:48 2017 +1000

    drm/nouveau/tmr: handle races with hw when updating the next alarm time
    
    commit 1b0f84380b10ee97f7d2dd191294de9017e94d1d upstream.
    
    If the time to the next alarm is short enough, we could race with HW and
    end up with an ~4 second delay until it triggers.
    
    Fix this by checking again after we update HW.
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ec3c712e231468ac1b1024b9747882c444d4b19
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Thu May 11 17:13:29 2017 +1000

    drm/nouveau/tmr: avoid processing completed alarms when adding a new one
    
    commit 330bdf62fe6a6c5b99a647f7bf7157107c9348b3 upstream.
    
    The idea here was to avoid having to "manually" program the HW if there's
    a new earliest alarm.  This was lazy and bad, as it leads to loads of fun
    races between inter-related callers (ie. therm).
    
    Turns out, it's not so difficult after all.  Go figure ;)
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6445a49a8c592f891ea38fa307d2617e15b2d524
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Thu May 11 17:03:05 2017 +1000

    drm/nouveau/tmr: fix corruption of the pending list when rescheduling an alarm
    
    commit 9fc64667ee48c9a25e7dca1a6bcb6906fec5bcc5 upstream.
    
    At least therm/fantog "attempts" to work around this issue, which could
    lead to corruption of the pending alarm list.
    
    Fix it properly by not updating the timestamp without the lock held, or
    trying to add an already pending alarm to the pending alarm list....
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16e10490d260493cec30c5e7adacf99ba304d8b9
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Thu May 11 16:53:42 2017 +1000

    drm/nouveau/tmr: ack interrupt before processing alarms
    
    commit 3733bd8b407211739e72d051e5f30ad82a52c4bc upstream.
    
    Fixes a race where we can miss an alarm that triggers while we're already
    processing previous alarms.
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8ee630591963610dd1b5ed9fdfb730c791bd52b
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Thu May 11 17:33:39 2017 +1000

    drm/nouveau/therm: remove ineffective workarounds for alarm bugs
    
    commit e4311ee51d1e2676001b2d8fcefd92bdd79aad85 upstream.
    
    These were ineffective due to touching the list without the alarm lock,
    but should no longer be required.
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1f006efde1fa224a52a93a0d21eb389bdea851d
Author: Mario Kleiner <mario.kleiner.de@gmail.com>
Date:   Mon Apr 24 01:02:46 2017 +0200

    drm/amdgpu: Add missing lb_vblank_lead_lines setup to DCE-6 path.
    
    commit effaf848b957fbf72a3b6a1ad87f5e031eda0b75 upstream.
    
    This apparently got lost when implementing the new DCE-6 support
    and would cause failures in pageflip scheduling and timestamping.
    
    Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b334b3492888068a4ae8373f4e813cf7364d4a61
Author: Mario Kleiner <mario.kleiner.de@gmail.com>
Date:   Wed Mar 29 22:09:12 2017 +0200

    drm/amdgpu: Avoid overflows/divide-by-zero in latency_watermark calculations.
    
    commit e190ed1ea7458e446230de4113cc5d53b8dc4ec8 upstream.
    
    At dot clocks > approx. 250 Mhz, some of these calcs will overflow and
    cause miscalculation of latency watermarks, and for some overflows also
    divide-by-zero driver crash ("divide error: 0000 [#1] PREEMPT SMP" in
    "dce_v10_0_latency_watermark+0x12d/0x190").
    
    This zero-divide happened, e.g., on AMD Tonga Pro under DCE-10,
    on a Displayport panel when trying to set a video mode of 2560x1440
    at 165 Hz vrefresh with a dot clock of 635.540 Mhz.
    
    Refine calculations to avoid the overflows.
    
    Tested for DCE-10 with R9 380 Tonga + ASUS ROG PG279 panel.
    
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ebf3cf5b9a67c694070ba93d8c31469aeb793266
Author: Mario Kleiner <mario.kleiner.de@gmail.com>
Date:   Wed Mar 29 22:09:11 2017 +0200

    drm/amdgpu: Make display watermark calculations more accurate
    
    commit d63c277dc672e0c568481af043359420fa9d4736 upstream.
    
    Avoid big roundoff errors in scanline/hactive durations for
    high pixel clocks, especially for >= 500 Mhz, and thereby
    program more accurate display fifo watermarks.
    
    Implemented here for DCE 6,8,10,11.
    Successfully tested on DCE 10 with AMD R9 380 Tonga.
    
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit adc6647c4f0f6f7f3d838d1ccd7398695b6b0702
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 13:44:20 2017 +0100

    ath9k_htc: fix NULL-deref at probe
    
    commit ebeb36670ecac36c179b5fb5d5c88ff03ba191ec upstream.
    
    Make sure to check the number of endpoints to avoid dereferencing a
    NULL-pointer or accessing memory beyond the endpoint array should a
    malicious device lack the expected endpoints.
    
    Fixes: 36bcce430657 ("ath9k_htc: Handle storage devices")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c39bafb9ee7a2aaaf71cdcac7bd583ee741b3da2
Author: Dmitry Tunin <hanipouspilot@gmail.com>
Date:   Wed Mar 8 13:52:07 2017 +0200

    ath9k_htc: Add support of AirTies 1eda:2315 AR9271 device
    
    commit 16ff1fb0e32f76a5d285a6f23b82d21aa52813c6 upstream.
    
    T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#=  7 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs=  1
    P:  Vendor=1eda ProdID=2315 Rev=01.08
    S:  Manufacturer=ATHEROS
    S:  Product=USB2.0 WLAN
    S:  SerialNumber=12345
    C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 6 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    
    Signed-off-by: Dmitry Tunin <hanipouspilot@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 768ae64b2ab2201cf3d13ecbdc0948e2601f6fd2
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Tue May 2 13:36:00 2017 +0200

    s390/cputime: fix incorrect system time
    
    commit 07a63cbe8bcb6ba72fb989dcab1ec55ec6c36c7e upstream.
    
    git commit c5328901aa1db134 "[S390] entry[64].S improvements" removed
    the update of the exit_timer lowcore field from the critical section
    cleanup of the .Lsysc_restore/.Lsysc_done and .Lio_restore/.Lio_done
    blocks. If the PSW is updated by the critical section cleanup to point to
    user space again, the interrupt entry code will do a vtime calculation
    after the cleanup completed with an exit_timer value which has *not* been
    updated. Due to this incorrect system time deltas are calculated.
    
    If an interrupt occured with an old PSW between .Lsysc_restore/.Lsysc_done
    or .Lio_restore/.Lio_done update __LC_EXIT_TIMER with the system entry
    time of the interrupt.
    
    Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c5157c1967e58e1cb83c7d3178284afa98502d4
Author: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Date:   Thu Mar 23 21:02:54 2017 +0100

    s390/kdump: Add final note
    
    commit dcc00b79fc3d076832f7240de8870f492629b171 upstream.
    
    Since linux v3.14 with commit 38dfac843cb6d7be1 ("vmcore: prevent PT_NOTE
    p_memsz overflow during header update") on s390 we get the following
    message in the kdump kernel:
    
      Warning: Exceeded p_memsz, dropping PT_NOTE entry n_namesz=0x6b6b6b6b,
      n_descsz=0x6b6b6b6b
    
    The reason for this is that we don't create a final zero note in
    the ELF header which the proc/vmcore code uses to find out the end
    of the notes section (see also kernel/kexec_core.c:final_note()).
    
    It still worked on s390 by chance because we (most of the time?) have the
    byte pattern 0x6b6b6b6b after the notes section which also makes the notes
    parsing code stop in update_note_header_size_elf64() because 0x6b6b6b6b is
    interpreded as note size:
    
      if ((real_sz + sz) > max_sz) {
              pr_warn("Warning: Exceeded p_memsz, dropping P ...);
              break;
      }
    
    So fix this and add the missing final note to the ELF header.
    We don't have to adjust the memory size for ELF header ("alloc_size")
    because the new ELF note still fits into the 0x1000 base memory.
    
    Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c849b4fa8e106f91cfb2750ddd13fa1e399f8234
Author: Richard Cochran <rcochran@linutronix.de>
Date:   Mon Apr 17 10:23:36 2017 +0200

    regulator: tps65023: Fix inverted core enable logic.
    
    commit c90722b54a4f5e21ac59301ed9a6dbaa439bdb16 upstream.
    
    Commit 43530b69d758328d3ffe6ab98fd640463e8e3667 ("regulator: Use
    regmap_read/write(), regmap_update_bits functions directly") intended
    to replace working inline helper functions with standard regmap
    calls.  However, it also inverted the set/clear logic of the "CORE ADJ
    Allowed" bit.  That patch was clearly never tested, since without that
    bit cleared, the core VDCDC1 voltage output does not react to I2C
    configuration changes.
    
    This patch fixes the issue by clearing the bit as in the original,
    correct implementation.  Note for stable back porting that, due to
    subsequent driver churn, this patch will not apply on every kernel
    version.
    
    Fixes: 43530b69d758 ("regulator: Use regmap_read/write(), regmap_update_bits functions directly")
    Signed-off-by: Richard Cochran <rcochran@linutronix.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b00d6c85a92076076da408b50cc4ddb323fc59c
Author: Wadim Egorov <w.egorov@phytec.de>
Date:   Wed Mar 22 16:50:50 2017 +0100

    regulator: rk808: Fix RK818 LDO2
    
    commit 75f88115391156b3f0fecbbae76bf870c89bcab8 upstream.
    
    Set the correct voltage select register for LDO2.
    
    Signed-off-by: Wadim Egorov <w.egorov@phytec.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae382caa96f7fecea180b5879e133605a07ef88a
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Sun May 21 18:26:54 2017 -0700

    x86: fix 32-bit case of __get_user_asm_u64()
    
    commit 33c9e9729033387ef0521324c62e7eba529294af upstream.
    
    The code to fetch a 64-bit value from user space was entirely buggered,
    and has been since the code was merged in early 2016 in commit
    b2f680380ddf ("x86/mm/32: Add support for 64-bit __get_user() on 32-bit
    kernels").
    
    Happily the buggered routine is almost certainly entirely unused, since
    the normal way to access user space memory is just with the non-inlined
    "get_user()", and the inlined version didn't even historically exist.
    
    The normal "get_user()" case is handled by external hand-written asm in
    arch/x86/lib/getuser.S that doesn't have either of these issues.
    
    There were two independent bugs in __get_user_asm_u64():
    
     - it still did the STAC/CLAC user space access marking, even though
       that is now done by the wrapper macros, see commit 11f1a4b9755f
       ("x86: reorganize SMAP handling in user space accesses").
    
       This didn't result in a semantic error, it just means that the
       inlined optimized version was hugely less efficient than the
       allegedly slower standard version, since the CLAC/STAC overhead is
       quite high on modern Intel CPU's.
    
     - the double register %eax/%edx was marked as an output, but the %eax
       part of it was touched early in the asm, and could thus clobber other
       inputs to the asm that gcc didn't expect it to touch.
    
       In particular, that meant that the generated code could look like
       this:
    
            mov    (%eax),%eax
            mov    0x4(%eax),%edx
    
       where the load of %edx obviously was _supposed_ to be from the 32-bit
       word that followed the source of %eax, but because %eax was
       overwritten by the first instruction, the source of %edx was
       basically random garbage.
    
    The fixes are trivial: remove the extraneous STAC/CLAC entries, and mark
    the 64-bit output as early-clobber to let gcc know that no inputs should
    alias with the output register.
    
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Benjamin LaHaise <bcrl@kvack.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54e385430e127634cc959955588fa5ee01488494
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Fri May 19 02:46:56 2017 -0700

    KVM: X86: Fix read out-of-bounds vulnerability in kvm pio emulation
    
    commit cbfc6c9184ce71b52df4b1d82af5afc81a709178 upstream.
    
    Huawei folks reported a read out-of-bounds vulnerability in kvm pio emulation.
    
    - "inb" instruction to access PIT Mod/Command register (ioport 0x43, write only,
      a read should be ignored) in guest can get a random number.
    - "rep insb" instruction to access PIT register port 0x43 can control memcpy()
      in emulator_pio_in_emulated() to copy max 0x400 bytes but only read 1 bytes,
      which will disclose the unimportant kernel memory in host but no crash.
    
    The similar test program below can reproduce the read out-of-bounds vulnerability:
    
    void hexdump(void *mem, unsigned int len)
    {
            unsigned int i, j;
    
            for(i = 0; i < len + ((len % HEXDUMP_COLS) ? (HEXDUMP_COLS - len % HEXDUMP_COLS) : 0); i++)
            {
                    /* print offset */
                    if(i % HEXDUMP_COLS == 0)
                    {
                            printf("0x%06x: ", i);
                    }
    
                    /* print hex data */
                    if(i < len)
                    {
                            printf("%02x ", 0xFF & ((char*)mem)[i]);
                    }
                    else /* end of block, just aligning for ASCII dump */
                    {
                            printf("   ");
                    }
    
                    /* print ASCII dump */
                    if(i % HEXDUMP_COLS == (HEXDUMP_COLS - 1))
                    {
                            for(j = i - (HEXDUMP_COLS - 1); j <= i; j++)
                            {
                                    if(j >= len) /* end of block, not really printing */
                                    {
                                            putchar(' ');
                                    }
                                    else if(isprint(((char*)mem)[j])) /* printable char */
                                    {
                                            putchar(0xFF & ((char*)mem)[j]);
                                    }
                                    else /* other char */
                                    {
                                            putchar('.');
                                    }
                            }
                            putchar('\n');
                    }
            }
    }
    
    int main(void)
    {
            int i;
            if (iopl(3))
            {
                    err(1, "set iopl unsuccessfully\n");
                    return -1;
            }
            static char buf[0x40];
    
            /* test ioport 0x40,0x41,0x42,0x43,0x44,0x45 */
    
            memset(buf, 0xab, sizeof(buf));
    
            asm volatile("push %rdi;");
            asm volatile("mov %0, %%rdi;"::"q"(buf));
    
            asm volatile ("mov $0x40, %rdx;");
            asm volatile ("in %dx,%al;");
            asm volatile ("stosb;");
    
            asm volatile ("mov $0x41, %rdx;");
            asm volatile ("in %dx,%al;");
            asm volatile ("stosb;");
    
            asm volatile ("mov $0x42, %rdx;");
            asm volatile ("in %dx,%al;");
            asm volatile ("stosb;");
    
            asm volatile ("mov $0x43, %rdx;");
            asm volatile ("in %dx,%al;");
            asm volatile ("stosb;");
    
            asm volatile ("mov $0x44, %rdx;");
            asm volatile ("in %dx,%al;");
            asm volatile ("stosb;");
    
            asm volatile ("mov $0x45, %rdx;");
            asm volatile ("in %dx,%al;");
            asm volatile ("stosb;");
    
            asm volatile ("pop %rdi;");
            hexdump(buf, 0x40);
    
            printf("\n");
    
            /* ins port 0x40 */
    
            memset(buf, 0xab, sizeof(buf));
    
            asm volatile("push %rdi;");
            asm volatile("mov %0, %%rdi;"::"q"(buf));
    
            asm volatile ("mov $0x20, %rcx;");
            asm volatile ("mov $0x40, %rdx;");
            asm volatile ("rep insb;");
    
            asm volatile ("pop %rdi;");
            hexdump(buf, 0x40);
    
            printf("\n");
    
            /* ins port 0x43 */
    
            memset(buf, 0xab, sizeof(buf));
    
            asm volatile("push %rdi;");
            asm volatile("mov %0, %%rdi;"::"q"(buf));
    
            asm volatile ("mov $0x20, %rcx;");
            asm volatile ("mov $0x43, %rdx;");
            asm volatile ("rep insb;");
    
            asm volatile ("pop %rdi;");
            hexdump(buf, 0x40);
    
            printf("\n");
            return 0;
    }
    
    The vcpu->arch.pio_data buffer is used by both in/out instrutions emulation
    w/o clear after using which results in some random datas are left over in
    the buffer. Guest reads port 0x43 will be ignored since it is write only,
    however, the function kernel_pio() can't distigush this ignore from successfully
    reads data from device's ioport. There is no new data fill the buffer from
    port 0x43, however, emulator_pio_in_emulated() will copy the stale data in
    the buffer to the guest unconditionally. This patch fixes it by clearing the
    buffer before in instruction emulation to avoid to grant guest the stale data
    in the buffer.
    
    In addition, string I/O is not supported for in kernel device. So there is no
    iteration to read ioport %RCX times for string I/O. The function kernel_pio()
    just reads one round, and then copy the io size * %RCX to the guest unconditionally,
    actually it copies the one round ioport data w/ other random datas which are left
    over in the vcpu->arch.pio_data buffer to the guest. This patch fixes it by
    introducing the string I/O support for in kernel device in order to grant the right
    ioport datas to the guest.
    
    Before the patch:
    
    0x000000: fe 38 93 93 ff ff ab ab .8......
    0x000008: ab ab ab ab ab ab ab ab ........
    0x000010: ab ab ab ab ab ab ab ab ........
    0x000018: ab ab ab ab ab ab ab ab ........
    0x000020: ab ab ab ab ab ab ab ab ........
    0x000028: ab ab ab ab ab ab ab ab ........
    0x000030: ab ab ab ab ab ab ab ab ........
    0x000038: ab ab ab ab ab ab ab ab ........
    
    0x000000: f6 00 00 00 00 00 00 00 ........
    0x000008: 00 00 00 00 00 00 00 00 ........
    0x000010: 00 00 00 00 4d 51 30 30 ....MQ00
    0x000018: 30 30 20 33 20 20 20 20 00 3
    0x000020: ab ab ab ab ab ab ab ab ........
    0x000028: ab ab ab ab ab ab ab ab ........
    0x000030: ab ab ab ab ab ab ab ab ........
    0x000038: ab ab ab ab ab ab ab ab ........
    
    0x000000: f6 00 00 00 00 00 00 00 ........
    0x000008: 00 00 00 00 00 00 00 00 ........
    0x000010: 00 00 00 00 4d 51 30 30 ....MQ00
    0x000018: 30 30 20 33 20 20 20 20 00 3
    0x000020: ab ab ab ab ab ab ab ab ........
    0x000028: ab ab ab ab ab ab ab ab ........
    0x000030: ab ab ab ab ab ab ab ab ........
    0x000038: ab ab ab ab ab ab ab ab ........
    
    After the patch:
    
    0x000000: 1e 02 f8 00 ff ff ab ab ........
    0x000008: ab ab ab ab ab ab ab ab ........
    0x000010: ab ab ab ab ab ab ab ab ........
    0x000018: ab ab ab ab ab ab ab ab ........
    0x000020: ab ab ab ab ab ab ab ab ........
    0x000028: ab ab ab ab ab ab ab ab ........
    0x000030: ab ab ab ab ab ab ab ab ........
    0x000038: ab ab ab ab ab ab ab ab ........
    
    0x000000: d2 e2 d2 df d2 db d2 d7 ........
    0x000008: d2 d3 d2 cf d2 cb d2 c7 ........
    0x000010: d2 c4 d2 c0 d2 bc d2 b8 ........
    0x000018: d2 b4 d2 b0 d2 ac d2 a8 ........
    0x000020: ab ab ab ab ab ab ab ab ........
    0x000028: ab ab ab ab ab ab ab ab ........
    0x000030: ab ab ab ab ab ab ab ab ........
    0x000038: ab ab ab ab ab ab ab ab ........
    
    0x000000: 00 00 00 00 00 00 00 00 ........
    0x000008: 00 00 00 00 00 00 00 00 ........
    0x000010: 00 00 00 00 00 00 00 00 ........
    0x000018: 00 00 00 00 00 00 00 00 ........
    0x000020: ab ab ab ab ab ab ab ab ........
    0x000028: ab ab ab ab ab ab ab ab ........
    0x000030: ab ab ab ab ab ab ab ab ........
    0x000038: ab ab ab ab ab ab ab ab ........
    
    Reported-by: Moguofang <moguofang@huawei.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Moguofang <moguofang@huawei.com>
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c996ad7568c0ed3be135a5369078a4db30398a6d
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Thu May 11 18:12:05 2017 -0700

    KVM: x86: Fix potential preemption when get the current kvmclock timestamp
    
    commit e2c2206a18993bc9f62393d49c7b2066c3845b25 upstream.
    
     BUG: using __this_cpu_read() in preemptible [00000000] code: qemu-system-x86/2809
     caller is __this_cpu_preempt_check+0x13/0x20
     CPU: 2 PID: 2809 Comm: qemu-system-x86 Not tainted 4.11.0+ #13
     Call Trace:
      dump_stack+0x99/0xce
      check_preemption_disabled+0xf5/0x100
      __this_cpu_preempt_check+0x13/0x20
      get_kvmclock_ns+0x6f/0x110 [kvm]
      get_time_ref_counter+0x5d/0x80 [kvm]
      kvm_hv_process_stimers+0x2a1/0x8a0 [kvm]
      ? kvm_hv_process_stimers+0x2a1/0x8a0 [kvm]
      ? kvm_arch_vcpu_ioctl_run+0xac9/0x1ce0 [kvm]
      kvm_arch_vcpu_ioctl_run+0x5bf/0x1ce0 [kvm]
      kvm_vcpu_ioctl+0x384/0x7b0 [kvm]
      ? kvm_vcpu_ioctl+0x384/0x7b0 [kvm]
      ? __fget+0xf3/0x210
      do_vfs_ioctl+0xa4/0x700
      ? __fget+0x114/0x210
      SyS_ioctl+0x79/0x90
      entry_SYSCALL_64_fastpath+0x23/0xc2
     RIP: 0033:0x7f9d164ed357
      ? __this_cpu_preempt_check+0x13/0x20
    
    This can be reproduced by run kvm-unit-tests/hyperv_stimer.flat w/
    CONFIG_PREEMPT and CONFIG_DEBUG_PREEMPT enabled.
    
    Safe access to per-CPU data requires a couple of constraints, though: the
    thread working with the data cannot be preempted and it cannot be migrated
    while it manipulates per-CPU variables. If the thread is preempted, the
    thread that replaces it could try to work with the same variables; migration
    to another CPU could also cause confusion. However there is no preemption
    disable when reads host per-CPU tsc rate to calculate the current kvmclock
    timestamp.
    
    This patch fixes it by utilizing get_cpu/put_cpu pair to guarantee both
    __this_cpu_read() and rdtsc() are not preempted.
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b64ecb25b1d5e13f02a5ec8ce3dc031e53bcfdaf
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Thu May 11 02:58:55 2017 -0700

    KVM: x86: Fix load damaged SSEx MXCSR register
    
    commit a575813bfe4bc15aba511a5e91e61d242bff8b9d upstream.
    
    Reported by syzkaller:
    
       BUG: unable to handle kernel paging request at ffffffffc07f6a2e
       IP: report_bug+0x94/0x120
       PGD 348e12067
       P4D 348e12067
       PUD 348e14067
       PMD 3cbd84067
       PTE 80000003f7e87161
    
       Oops: 0003 [#1] SMP
       CPU: 2 PID: 7091 Comm: kvm_load_guest_ Tainted: G           OE   4.11.0+ #8
       task: ffff92fdfb525400 task.stack: ffffbda6c3d04000
       RIP: 0010:report_bug+0x94/0x120
       RSP: 0018:ffffbda6c3d07b20 EFLAGS: 00010202
        do_trap+0x156/0x170
        do_error_trap+0xa3/0x170
        ? kvm_load_guest_fpu.part.175+0x12a/0x170 [kvm]
        ? mark_held_locks+0x79/0xa0
        ? retint_kernel+0x10/0x10
        ? trace_hardirqs_off_thunk+0x1a/0x1c
        do_invalid_op+0x20/0x30
        invalid_op+0x1e/0x30
       RIP: 0010:kvm_load_guest_fpu.part.175+0x12a/0x170 [kvm]
        ? kvm_load_guest_fpu.part.175+0x1c/0x170 [kvm]
        kvm_arch_vcpu_ioctl_run+0xed6/0x1b70 [kvm]
        kvm_vcpu_ioctl+0x384/0x780 [kvm]
        ? kvm_vcpu_ioctl+0x384/0x780 [kvm]
        ? sched_clock+0x13/0x20
        ? __do_page_fault+0x2a0/0x550
        do_vfs_ioctl+0xa4/0x700
        ? up_read+0x1f/0x40
        ? __do_page_fault+0x2a0/0x550
        SyS_ioctl+0x79/0x90
        entry_SYSCALL_64_fastpath+0x23/0xc2
    
    SDM mentioned that "The MXCSR has several reserved bits, and attempting to write
    a 1 to any of these bits will cause a general-protection exception(#GP) to be
    generated". The syzkaller forks' testcase overrides xsave area w/ random values
    and steps on the reserved bits of MXCSR register. The damaged MXCSR register
    values of guest will be restored to SSEx MXCSR register before vmentry. This
    patch fixes it by catching userspace override MXCSR register reserved bits w/
    random values and bails out immediately.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 91034255e42f6026bafb8e8e2b707eb937104bc8
Author: Daniel Glöckner <dg@emlix.com>
Date:   Fri Feb 24 15:05:14 2017 +0100

    ima: accept previously set IMA_NEW_FILE
    
    commit 1ac202e978e18f045006d75bd549612620c6ec3a upstream.
    
    Modifying the attributes of a file makes ima_inode_post_setattr reset
    the IMA cache flags. So if the file, which has just been created,
    is opened a second time before the first file descriptor is closed,
    verification fails since the security.ima xattr has not been written
    yet. We therefore have to look at the IMA_NEW_FILE even if the file
    already existed.
    
    With this patch there should no longer be an error when cat tries to
    open testfile:
    
    $ rm -f testfile
    $ ( echo test >&3 ; touch testfile ; cat testfile ) 3>testfile
    
    A file being new is no reason to accept that it is missing a digital
    signature demanded by the policy.
    
    Signed-off-by: Daniel Glöckner <dg@emlix.com>
    Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce7146cf9bdf490b9380af2a5d60bc65c68dbcb9
Author: Brian Norris <briannorris@chromium.org>
Date:   Fri Apr 14 14:51:17 2017 -0700

    mwifiex: pcie: fix cmd_buf use-after-free in remove/reset
    
    commit 3c8cb9ad032d737b874e402c59eb51e3c991a144 upstream.
    
    Command buffers (skb's) are allocated by the main driver, and freed upon
    the last use. That last use is often in mwifiex_free_cmd_buffer(). In
    the meantime, if the command buffer gets used by the PCI driver, we map
    it as DMA-able, and store the mapping information in the 'cb' memory.
    
    However, if a command was in-flight when resetting the device (and
    therefore was still mapped), we don't get a chance to unmap this memory
    until after the core has cleaned up its command handling.
    
    Let's keep a refcount within the PCI driver, so we ensure the memory
    only gets freed after we've finished unmapping it.
    
    Noticed by KASAN when forcing a reset via:
    
      echo 1 > /sys/bus/pci/.../reset
    
    The same code path can presumably be exercised in remove() and
    shutdown().
    
    [  205.390377] mwifiex_pcie 0000:01:00.0: info: shutdown mwifiex...
    [  205.400393] ==================================================================
    [  205.407719] BUG: KASAN: use-after-free in mwifiex_unmap_pci_memory.isra.14+0x4c/0x100 [mwifiex_pcie] at addr ffffffc0ad471b28
    [  205.419040] Read of size 16 by task bash/1913
    [  205.423421] =============================================================================
    [  205.431625] BUG skbuff_head_cache (Tainted: G    B          ): kasan: bad access detected
    [  205.439815] -----------------------------------------------------------------------------
    [  205.439815]
    [  205.449534] INFO: Allocated in __build_skb+0x48/0x114 age=1311 cpu=4 pid=1913
    [  205.456709]  alloc_debug_processing+0x124/0x178
    [  205.461282]  ___slab_alloc.constprop.58+0x528/0x608
    [  205.466196]  __slab_alloc.isra.54.constprop.57+0x44/0x54
    [  205.471542]  kmem_cache_alloc+0xcc/0x278
    [  205.475497]  __build_skb+0x48/0x114
    [  205.479019]  __netdev_alloc_skb+0xe0/0x170
    [  205.483244]  mwifiex_alloc_cmd_buffer+0x68/0xdc [mwifiex]
    [  205.488759]  mwifiex_init_fw+0x40/0x6cc [mwifiex]
    [  205.493584]  _mwifiex_fw_dpc+0x158/0x520 [mwifiex]
    [  205.498491]  mwifiex_reinit_sw+0x2c4/0x398 [mwifiex]
    [  205.503510]  mwifiex_pcie_reset_notify+0x114/0x15c [mwifiex_pcie]
    [  205.509643]  pci_reset_notify+0x5c/0x6c
    [  205.513519]  pci_reset_function+0x6c/0x7c
    [  205.517567]  reset_store+0x68/0x98
    [  205.521003]  dev_attr_store+0x54/0x60
    [  205.524705]  sysfs_kf_write+0x9c/0xb0
    [  205.528413] INFO: Freed in __kfree_skb+0xb0/0xbc age=131 cpu=4 pid=1913
    [  205.535064]  free_debug_processing+0x264/0x370
    [  205.539550]  __slab_free+0x84/0x40c
    [  205.543075]  kmem_cache_free+0x1c8/0x2a0
    [  205.547030]  __kfree_skb+0xb0/0xbc
    [  205.550465]  consume_skb+0x164/0x178
    [  205.554079]  __dev_kfree_skb_any+0x58/0x64
    [  205.558304]  mwifiex_free_cmd_buffer+0xa0/0x158 [mwifiex]
    [  205.563817]  mwifiex_shutdown_drv+0x578/0x5c4 [mwifiex]
    [  205.569164]  mwifiex_shutdown_sw+0x178/0x310 [mwifiex]
    [  205.574353]  mwifiex_pcie_reset_notify+0xd4/0x15c [mwifiex_pcie]
    [  205.580398]  pci_reset_notify+0x5c/0x6c
    [  205.584274]  pci_dev_save_and_disable+0x24/0x6c
    [  205.588837]  pci_reset_function+0x30/0x7c
    [  205.592885]  reset_store+0x68/0x98
    [  205.596324]  dev_attr_store+0x54/0x60
    [  205.600017]  sysfs_kf_write+0x9c/0xb0
    ...
    [  205.800488] Call trace:
    [  205.802980] [<ffffffc00020a69c>] dump_backtrace+0x0/0x190
    [  205.808415] [<ffffffc00020a96c>] show_stack+0x20/0x28
    [  205.813506] [<ffffffc0005d020c>] dump_stack+0xa4/0xcc
    [  205.818598] [<ffffffc0003be44c>] print_trailer+0x158/0x168
    [  205.824120] [<ffffffc0003be5f0>] object_err+0x4c/0x5c
    [  205.829210] [<ffffffc0003c45bc>] kasan_report+0x334/0x500
    [  205.834641] [<ffffffc0003c3994>] check_memory_region+0x20/0x14c
    [  205.840593] [<ffffffc0003c3b14>] __asan_loadN+0x14/0x1c
    [  205.845879] [<ffffffbffc46171c>] mwifiex_unmap_pci_memory.isra.14+0x4c/0x100 [mwifiex_pcie]
    [  205.854282] [<ffffffbffc461864>] mwifiex_pcie_delete_cmdrsp_buf+0x94/0xa8 [mwifiex_pcie]
    [  205.862421] [<ffffffbffc462028>] mwifiex_pcie_free_buffers+0x11c/0x158 [mwifiex_pcie]
    [  205.870302] [<ffffffbffc4620d4>] mwifiex_pcie_down_dev+0x70/0x80 [mwifiex_pcie]
    [  205.877736] [<ffffffbffc1397a8>] mwifiex_shutdown_sw+0x190/0x310 [mwifiex]
    [  205.884658] [<ffffffbffc4606b4>] mwifiex_pcie_reset_notify+0xd4/0x15c [mwifiex_pcie]
    [  205.892446] [<ffffffc000635f54>] pci_reset_notify+0x5c/0x6c
    [  205.898048] [<ffffffc00063a044>] pci_dev_save_and_disable+0x24/0x6c
    [  205.904350] [<ffffffc00063cf0c>] pci_reset_function+0x30/0x7c
    [  205.910134] [<ffffffc000641118>] reset_store+0x68/0x98
    [  205.915312] [<ffffffc000771588>] dev_attr_store+0x54/0x60
    [  205.920750] [<ffffffc00046f53c>] sysfs_kf_write+0x9c/0xb0
    [  205.926182] [<ffffffc00046dfb0>] kernfs_fop_write+0x184/0x1f8
    [  205.931963] [<ffffffc0003d64f4>] __vfs_write+0x6c/0x17c
    [  205.937221] [<ffffffc0003d7164>] vfs_write+0xf0/0x1c4
    [  205.942310] [<ffffffc0003d7da0>] SyS_write+0x78/0xd8
    [  205.947312] [<ffffffc000204634>] el0_svc_naked+0x24/0x28
    ...
    [  205.998268] ==================================================================
    
    This bug has been around in different forms for a while. It was sort of
    noticed in commit 955ab095c51a ("mwifiex: Do not kfree cmd buf while
    unregistering PCIe"), but it just fixed the double-free, without
    acknowledging the potential for use-after-free.
    
    Fixes: fc3314609047 ("mwifiex: use pci_alloc/free_consistent APIs for PCIe")
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 385eb9b33e1d67704c66f2ac2632ebf723e87892
Author: Brian Norris <briannorris@chromium.org>
Date:   Wed Apr 5 15:26:40 2017 -0700

    mwifiex: MAC randomization should not be persistent
    
    commit 7e2f18f06408ff56d7f75e68de8064777137b319 upstream.
    
    nl80211 provides the NL80211_SCAN_FLAG_RANDOM_ADDR for every scan
    request that should be randomized; the absence of such a flag means we
    should not randomize. However, mwifiex was stashing the latest
    randomization request and *always* using it for future scans, even those
    that didn't set the flag.
    
    Let's zero out the randomization info whenever we get a scan request
    without NL80211_SCAN_FLAG_RANDOM_ADDR. I'd prefer to remove
    priv->random_mac entirely (and plumb the randomization MAC properly
    through the call sequence), but the spaghetti is a little difficult to
    unravel here for me.
    
    Fixes: c2a8f0ff9c6c ("mwifiex: support random MAC address for scanning")
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 444df795edf433aa75f10fc62ae171996dbd833c
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Sun Apr 16 19:32:07 2017 -0500

    rtlwifi: rtl8821ae: setup 8812ae RFE according to device type
    
    commit 46cfa2148e7371c537efff1a1c693e58f523089d upstream.
    
    Current channel switch implementation sets 8812ae RFE reg value assuming
    that device always has type 2.
    
    Extend possible RFE types set and write corresponding reg values.
    
    Source for new code is
    http://dlcdnet.asus.com/pub/ASUS/wireless/PCE-AC51/DR_PCE_AC51_20232801152016.zip
    
    Signed-off-by: Maxim Samoylov <max7255@gmail.com>
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Cc: Yan-Hsuan Chuang <yhchuang@realtek.com>
    Cc: Pkshih <pkshih@realtek.com>
    Cc: Birming Chiu <birming@realtek.com>
    Cc: Shaofu <shaofu@realtek.com>
    Cc: Steven Ting <steventing@realtek.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e789787878321fc2b1b7869963fa5eeede7402e
Author: NeilBrown <neilb@suse.com>
Date:   Thu Apr 6 11:16:33 2017 +0800

    md: MD_CLOSING needs to be cleared after called md_set_readonly or do_md_stop
    
    commit 065e519e71b2c1f41936cce75b46b5ab34adb588 upstream.
    
    if called md_set_readonly and set MD_CLOSING bit, the mddev cannot
    be opened any more due to the MD_CLOING bit wasn't cleared. Thus it
    needs to be cleared in md_ioctl after any call to md_set_readonly()
    or do_md_stop().
    
    Signed-off-by: NeilBrown <neilb@suse.com>
    Fixes: af8d8e6f0315 ("md: changes for MD_STILL_CLOSED flag")
    Signed-off-by: Zhilong Liu <zlliu@suse.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa9a4a9c6d6ffb21c220418384ed9d89f8c18e35
Author: Dennis Yang <dennisyang@qnap.com>
Date:   Wed Mar 29 15:46:13 2017 +0800

    md: update slab_cache before releasing new stripes when stripes resizing
    
    commit 583da48e388f472e8818d9bb60ef6a1d40ee9f9d upstream.
    
    When growing raid5 device on machine with small memory, there is chance that
    mdadm will be killed and the following bug report can be observed. The same
    bug could also be reproduced in linux-4.10.6.
    
    [57600.075774] BUG: unable to handle kernel NULL pointer dereference at           (null)
    [57600.083796] IP: [<ffffffff81a6aa87>] _raw_spin_lock+0x7/0x20
    [57600.110378] PGD 421cf067 PUD 4442d067 PMD 0
    [57600.114678] Oops: 0002 [#1] SMP
    [57600.180799] CPU: 1 PID: 25990 Comm: mdadm Tainted: P           O    4.2.8 #1
    [57600.187849] Hardware name: To be filled by O.E.M. To be filled by O.E.M./MAHOBAY, BIOS QV05AR66 03/06/2013
    [57600.197490] task: ffff880044e47240 ti: ffff880043070000 task.ti: ffff880043070000
    [57600.204963] RIP: 0010:[<ffffffff81a6aa87>]  [<ffffffff81a6aa87>] _raw_spin_lock+0x7/0x20
    [57600.213057] RSP: 0018:ffff880043073810  EFLAGS: 00010046
    [57600.218359] RAX: 0000000000000000 RBX: 000000000000000c RCX: ffff88011e296dd0
    [57600.225486] RDX: 0000000000000001 RSI: ffffe8ffffcb46c0 RDI: 0000000000000000
    [57600.232613] RBP: ffff880043073878 R08: ffff88011e5f8170 R09: 0000000000000282
    [57600.239739] R10: 0000000000000005 R11: 28f5c28f5c28f5c3 R12: ffff880043073838
    [57600.246872] R13: ffffe8ffffcb46c0 R14: 0000000000000000 R15: ffff8800b9706a00
    [57600.253999] FS:  00007f576106c700(0000) GS:ffff88011e280000(0000) knlGS:0000000000000000
    [57600.262078] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [57600.267817] CR2: 0000000000000000 CR3: 00000000428fe000 CR4: 00000000001406e0
    [57600.274942] Stack:
    [57600.276949]  ffffffff8114ee35 ffff880043073868 0000000000000282 000000000000eb3f
    [57600.284383]  ffffffff81119043 ffff880043073838 ffff880043073838 ffff88003e197b98
    [57600.291820]  ffffe8ffffcb46c0 ffff88003e197360 0000000000000286 ffff880043073968
    [57600.299254] Call Trace:
    [57600.301698]  [<ffffffff8114ee35>] ? cache_flusharray+0x35/0xe0
    [57600.307523]  [<ffffffff81119043>] ? __page_cache_release+0x23/0x110
    [57600.313779]  [<ffffffff8114eb53>] kmem_cache_free+0x63/0xc0
    [57600.319344]  [<ffffffff81579942>] drop_one_stripe+0x62/0x90
    [57600.324915]  [<ffffffff81579b5b>] raid5_cache_scan+0x8b/0xb0
    [57600.330563]  [<ffffffff8111b98a>] shrink_slab.part.36+0x19a/0x250
    [57600.336650]  [<ffffffff8111e38c>] shrink_zone+0x23c/0x250
    [57600.342039]  [<ffffffff8111e4f3>] do_try_to_free_pages+0x153/0x420
    [57600.348210]  [<ffffffff8111e851>] try_to_free_pages+0x91/0xa0
    [57600.353959]  [<ffffffff811145b1>] __alloc_pages_nodemask+0x4d1/0x8b0
    [57600.360303]  [<ffffffff8157a30b>] check_reshape+0x62b/0x770
    [57600.365866]  [<ffffffff8157a4a5>] raid5_check_reshape+0x55/0xa0
    [57600.371778]  [<ffffffff81583df7>] update_raid_disks+0xc7/0x110
    [57600.377604]  [<ffffffff81592b73>] md_ioctl+0xd83/0x1b10
    [57600.382827]  [<ffffffff81385380>] blkdev_ioctl+0x170/0x690
    [57600.388307]  [<ffffffff81195238>] block_ioctl+0x38/0x40
    [57600.393525]  [<ffffffff811731c5>] do_vfs_ioctl+0x2b5/0x480
    [57600.399010]  [<ffffffff8115e07b>] ? vfs_write+0x14b/0x1f0
    [57600.404400]  [<ffffffff811733cc>] SyS_ioctl+0x3c/0x70
    [57600.409447]  [<ffffffff81a6ad97>] entry_SYSCALL_64_fastpath+0x12/0x6a
    [57600.415875] Code: 00 00 00 00 55 48 89 e5 8b 07 85 c0 74 04 31 c0 5d c3 ba 01 00 00 00 f0 0f b1 17 85 c0 75 ef b0 01 5d c3 90 31 c0 ba 01 00 00 00 <f0> 0f b1 17 85 c0 75 01 c3 55 89 c6 48 89 e5 e8 85 d1 63 ff 5d
    [57600.435460] RIP  [<ffffffff81a6aa87>] _raw_spin_lock+0x7/0x20
    [57600.441208]  RSP <ffff880043073810>
    [57600.444690] CR2: 0000000000000000
    [57600.448000] ---[ end trace cbc6b5cc4bf9831d ]---
    
    The problem is that resize_stripes() releases new stripe_heads before assigning new
    slab cache to conf->slab_cache. If the shrinker function raid5_cache_scan() gets called
    after resize_stripes() starting releasing new stripes but right before new slab cache
    being assigned, it is possible that these new stripe_heads will be freed with the old
    slab_cache which was already been destoryed and that triggers this bug.
    
    Signed-off-by: Dennis Yang <dennisyang@qnap.com>
    Fixes: edbe83ab4c27 ("md/raid5: allow the stripe_cache to grow and shrink.")
    Reviewed-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2bb8bcbc09dfe32138efc44105be9a58fad5cef
Author: Joe Thornber <ejt@redhat.com>
Date:   Mon May 15 09:45:40 2017 -0400

    dm space map disk: fix some book keeping in the disk space map
    
    commit 0377a07c7a035e0d033cd8b29f0cb15244c0916a upstream.
    
    When decrementing the reference count for a block, the free count wasn't
    being updated if the reference count went to zero.
    
    Signed-off-by: Joe Thornber <ejt@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc681811a92cd7cae589b5026b3d9d3bb1850365
Author: Joe Thornber <ejt@redhat.com>
Date:   Mon May 15 09:43:05 2017 -0400

    dm thin metadata: call precommit before saving the roots
    
    commit 91bcdb92d39711d1adb40c26b653b7978d93eb98 upstream.
    
    These calls were the wrong way round in __write_initial_superblock.
    
    Signed-off-by: Joe Thornber <ejt@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eeaf13394d32763d75d3314ca47264e5078076cd
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Sun Apr 30 17:32:28 2017 -0400

    dm bufio: make the parameter "retain_bytes" unsigned long
    
    commit 13840d38016203f0095cd547b90352812d24b787 upstream.
    
    Change the type of the parameter "retain_bytes" from unsigned to
    unsigned long, so that on 64-bit machines the user can set more than
    4GiB of data to be retained.
    
    Also, change the type of the variable "count" in the function
    "__evict_old_buffers" to unsigned long.  The assignment
    "count = c->n_buffers[LIST_CLEAN] + c->n_buffers[LIST_DIRTY];"
    could result in unsigned long to unsigned overflow and that could result
    in buffers not being freed when they should.
    
    While at it, avoid division in get_retain_buffers().  Division is slow,
    we can change it to shift because we have precalculated the log2 of
    block size.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e69242436b6b086a6f342f715c68389596a9a7ac
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Fri May 5 14:40:13 2017 -0400

    dm cache metadata: fail operations if fail_io mode has been established
    
    commit 10add84e276432d9dd8044679a1028dd4084117e upstream.
    
    Otherwise it is possible to trigger crashes due to the metadata being
    inaccessible yet these methods don't safely account for that possibility
    without these checks.
    
    Reported-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 042d8dbf69c6ca0d542eaf41480d9303c36c56a9
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Thu Apr 27 10:11:14 2017 -0700

    dm mpath: split and rename activate_path() to prepare for its expanded use
    
    commit 89bfce763e43fa4897e0d3af6b29ed909df64cfd upstream.
    
    activate_path() is renamed to activate_path_work() which now calls
    activate_or_offline_path().  activate_or_offline_path() will be used
    by the next commit.
    
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Cc: Hannes Reinecke <hare@suse.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e08047c90c8aa2c0bb2403c30b0692c7f147f200
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Sun Apr 30 17:34:53 2017 -0400

    dm bufio: check new buffer allocation watermark every 30 seconds
    
    commit 390020ad2af9ca04844c4f3b1f299ad8746d84c8 upstream.
    
    dm-bufio checks a watermark when it allocates a new buffer in
    __bufio_new().  However, it doesn't check the watermark when the user
    changes /sys/module/dm_bufio/parameters/max_cache_size_bytes.
    
    This may result in a problem - if the watermark is high enough so that
    all possible buffers are allocated and if the user lowers the value of
    "max_cache_size_bytes", the watermark will never be checked against the
    new value because no new buffer would be allocated.
    
    To fix this, change __evict_old_buffers() so that it checks the
    watermark.  __evict_old_buffers() is called every 30 seconds, so if the
    user reduces "max_cache_size_bytes", dm-bufio will react to this change
    within 30 seconds and decrease memory consumption.
    
    Depends-on: 1b0fb5a5b2 ("dm bufio: avoid a possible ABBA deadlock")
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98e7b9d45bf443b02a7b8aacb2e502042ea88441
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Sun Apr 30 17:33:26 2017 -0400

    dm bufio: avoid a possible ABBA deadlock
    
    commit 1b0fb5a5b2dc0dddcfa575060441a7176ba7ac37 upstream.
    
    __get_memory_limit() tests if dm_bufio_cache_size changed and calls
    __cache_size_refresh() if it did.  It takes dm_bufio_clients_lock while
    it already holds the client lock.  However, lock ordering is violated
    because in cleanup_old_buffers() dm_bufio_clients_lock is taken before
    the client lock.
    
    This results in a possible deadlock and lockdep engine warning.
    
    Fix this deadlock by changing mutex_lock() to mutex_trylock().  If the
    lock can't be taken, it will be re-checked next time when a new buffer
    is allocated.
    
    Also add "unlikely" to the if condition, so that the optimizer assumes
    that the condition is false.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5066c4c1b7ee20538eebd48e79a93cd4963b72c
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue Mar 28 12:53:39 2017 -0400

    dm raid: select the Kconfig option CONFIG_MD_RAID0
    
    commit 7b81ef8b14f80033e4a4168d199a0f5fd79b9426 upstream.
    
    Since the commit 0cf4503174c1 ("dm raid: add support for the MD RAID0
    personality"), the dm-raid subsystem can activate a RAID-0 array.
    Therefore, add MD_RAID0 to the dependencies of DM_RAID, so that MD_RAID0
    will be selected when DM_RAID is selected.
    
    Fixes: 0cf4503174c1 ("dm raid: add support for the MD RAID0 personality")
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4de8eceefbeabbf367b143cd29108a5ddcfab0e8
Author: Vinothkumar Raja <vinraja@cs.stonybrook.edu>
Date:   Thu Apr 6 22:09:38 2017 -0400

    dm btree: fix for dm_btree_find_lowest_key()
    
    commit 7d1fedb6e96a960aa91e4ff70714c3fb09195a5a upstream.
    
    dm_btree_find_lowest_key() is giving incorrect results.  find_key()
    traverses the btree correctly for finding the highest key, but there is
    an error in the way it traverses the btree for retrieving the lowest
    key.  dm_btree_find_lowest_key() fetches the first key of the rightmost
    block of the btree instead of fetching the first key from the leftmost
    block.
    
    Fix this by conditionally passing the correct parameter to value64()
    based on the @find_highest flag.
    
    Signed-off-by: Erez Zadok <ezk@fsl.cs.sunysb.edu>
    Signed-off-by: Vinothkumar Raja <vinraja@cs.stonybrook.edu>
    Signed-off-by: Nidhi Panpalia <npanpalia@cs.stonybrook.edu>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5db8f42b62daab43666a358d03c98f7a7310a5d6
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Fri Apr 28 11:20:01 2017 +0200

    infiniband: call ipv6 route lookup via the stub interface
    
    commit eea40b8f624f25cbc02d55f2d93203f60cee9341 upstream.
    
    The infiniband address handle can be triggered to resolve an ipv6
    address in response to MAD packets, regardless of the ipv6
    module being disabled via the kernel command line argument.
    
    That will cause a call into the ipv6 routing code, which is not
    initialized, and a conseguent oops.
    
    This commit addresses the above issue replacing the direct lookup
    call with an indirect one via the ipv6 stub, which is properly
    initialized according to the ipv6 status (e.g. if ipv6 is
    disabled, the routing lookup fails gracefully)
    
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb5cf8aaba2ede15fd13b52029bf4e5915e6096f
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Sun Apr 23 14:31:42 2017 +0300

    mlx5: Fix mlx5_ib_map_mr_sg mr length
    
    commit 0a49f2c31c3efbeb0de3e4b5598764887f629be2 upstream.
    
    In case we got an initial sg_offset, we need to
    account for it in the mr length.
    
    Fixes: ff2ba9936591 ("IB/core: Add passing an offset into the SG to ib_map_mr_sg")
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Tested-by: Israel Rukshin <israelr@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ece453e8b0ca45e1b36317042c8aa7f3ef59e440
Author: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Date:   Sat Apr 29 12:19:33 2017 +0200

    ASoC: cs4271: configure reset GPIO as output
    
    commit 49b2e27ab9f66b0a22c21980ad8118a4038324ae upstream.
    
    During reset "refactoring" the output configuration was lost.
    This commit repairs sound on EDB93XX boards.
    
    Fixes: 9a397f4 ("ASoC: cs4271: add regulator consumer support")
    Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc15d340ec6a63aec4b0f68465f79b79add847eb
Author: Jerry Snitselaar <jsnitsel@redhat.com>
Date:   Fri Mar 10 17:46:04 2017 -0700

    tpm_crb: check for bad response size
    
    commit 8569defde8057258835c51ce01a33de82e14b148 upstream.
    
    Make sure size of response buffer is at least 6 bytes, or
    we will underflow and pass large size_t to memcpy_fromio().
    This was encountered while testing earlier version of
    locality patchset.
    
    Fixes: 30fc8d138e912 ("tpm: TPM 2.0 CRB Interface")
    Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c150305212b7afc3c8f90d3fe165ba902cc28f9
Author: Nayna Jain <nayna@linux.vnet.ibm.com>
Date:   Fri Mar 10 13:45:54 2017 -0500

    tpm: add sleep only for retry in i2c_nuvoton_write_status()
    
    commit 0afb7118ae021e80ecf70f5a3336e0935505518a upstream.
    
    Currently, there is an unnecessary 1 msec delay added in
    i2c_nuvoton_write_status() for the successful case. This
    function is called multiple times during send() and recv(),
    which implies adding multiple extra delays for every TPM
    operation.
    
    This patch calls usleep_range() only if retry is to be done.
    
    Signed-off-by: Nayna Jain <nayna@linux.vnet.ibm.com>
    Reviewed-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40ca1fd38e110d26a7d4f268425550aceb453471
Author: Nayna Jain <nayna@linux.vnet.ibm.com>
Date:   Fri Mar 10 13:45:53 2017 -0500

    tpm: msleep() delays - replace with usleep_range() in i2c nuvoton driver
    
    commit a233a0289cf9a96ef9b42c730a7621ccbf9a6f98 upstream.
    
    Commit 500462a9de65 "timers: Switch to a non-cascading wheel" replaced
    the 'classic' timer wheel, which aimed for near 'exact' expiry of the
    timers.  Their analysis was that the vast majority of timeout timers
    are used as safeguards, not as real timers, and are cancelled or
    rearmed before expiration.  The only exception noted to this were
    networking timers with a small expiry time.
    
    Not included in the analysis was the TPM polling timer, which resulted
    in a longer normal delay and, every so often, a very long delay.  The
    non-cascading wheel delay is based on CONFIG_HZ.  For a description of
    the different rings and their delays, refer to the comments in
    kernel/time/timer.c.
    
    Below are the delays given for rings 0 - 2, which explains the longer
    "normal" delays and the very, long delays as seen on systems with
    CONFIG_HZ 250.
    
    * HZ 1000 steps
     * Level Offset  Granularity            Range
     *  0      0         1 ms                0 ms - 63 ms
     *  1     64         8 ms               64 ms - 511 ms
     *  2    128        64 ms              512 ms - 4095 ms (512ms - ~4s)
    
    * HZ  250
     * Level Offset  Granularity            Range
     *  0      0         4 ms                0 ms - 255 ms
     *  1     64        32 ms              256 ms - 2047 ms (256ms - ~2s)
     *  2    128       256 ms             2048 ms - 16383 ms (~2s - ~16s)
    
    Below is a comparison of extending the TPM with 1000 measurements,
    using msleep() vs. usleep_delay() when configured for 1000 hz vs. 250
    hz, before and after commit 500462a9de65.
    
    linux-4.7 | msleep() usleep_range()
    1000 hz: 0m44.628s | 1m34.497s 29.243s
    250 hz: 1m28.510s | 4m49.269s 32.386s
    
    linux-4.7  | min-max (msleep)  min-max (usleep_range)
    1000 hz: 0:017 - 2:760s | 0:015 - 3:967s    0:014 - 0:418s
    250 hz: 0:028 - 1:954s | 0:040 - 4:096s    0:016 - 0:816s
    
    This patch replaces the msleep() with usleep_range() calls in the
    i2c nuvoton driver with a consistent max range value.
    
    Signed-of-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Signed-off-by: Nayna Jain <nayna@linux.vnet.ibm.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 568ea0dcc27ed8855361a204cd0cdb7c38189268
Author: Peter Huewe <peter.huewe@infineon.com>
Date:   Thu Mar 2 13:03:15 2017 +0000

    tpm_tis_spi: Add small delay after last transfer
    
    commit 5cc0101d1f88500f8901d01b035af743215d4c3a upstream.
    
    Testing the implementation with a Raspberry Pi 2 showed that under some
    circumstances its SPI master erroneously releases the CS line before the
    transfer is complete, i.e. before the end of the last clock. In this case
    the TPM ignores the transfer and misses for example the GO command. The
    driver is unable to detect this communication problem and will wait for a
    command response that is never going to arrive, timing out eventually.
    
    As a workaround, the small delay ensures that the CS line is held long
    enough, even with a faulty SPI master. Other SPI masters are not affected,
    except for a negligible performance penalty.
    
    Fixes: 0edbfea537d1 ("tpm/tpm_tis_spi: Add support for spi phy")
    Signed-off-by: Alexander Steffen <Alexander.Steffen@infineon.com>
    Signed-off-by: Peter Huewe <peter.huewe@infineon.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Tested-by: Benoit Houyere <benoit.houyere@st.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4b3779c978339a5b169ed08d773f9f98e15aa99
Author: Peter Huewe <peter.huewe@infineon.com>
Date:   Thu Mar 2 13:03:14 2017 +0000

    tpm_tis_spi: Remove limitation of transfers to MAX_SPI_FRAMESIZE bytes
    
    commit 591e48c26ced7c455751eef27fb5963e902c2137 upstream.
    
    Limiting transfers to MAX_SPI_FRAMESIZE was not expected by the upper
    layers, as tpm_tis has no such limitation. Add a loop to hide that
    limitation.
    
    v2: Moved scope of spi_message to the top as requested by Jarkko
    Fixes: 0edbfea537d1 ("tpm/tpm_tis_spi: Add support for spi phy")
    Signed-off-by: Alexander Steffen <Alexander.Steffen@infineon.com>
    Signed-off-by: Peter Huewe <peter.huewe@infineon.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Tested-by: Benoit Houyere <benoit.houyere@st.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d513cf24e240f8c7a9127b566b915ce9730fd23e
Author: Peter Huewe <peter.huewe@infineon.com>
Date:   Thu Mar 2 13:03:13 2017 +0000

    tpm_tis_spi: Check correct byte for wait state indicator
    
    commit e110cc69dc2ad679d6d478df636b99b14e6fbbc9 upstream.
    
    Wait states are signaled in the last byte received from the TPM in
    response to the header, not the first byte. Check rx_buf[3] instead of
    rx_buf[0].
    
    Fixes: 0edbfea537d1 ("tpm/tpm_tis_spi: Add support for spi phy")
    Signed-off-by: Alexander Steffen <Alexander.Steffen@infineon.com>
    Signed-off-by: Peter Huewe <peter.huewe@infineon.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Tested-by: Benoit Houyere <benoit.houyere@st.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit daa432c1a65a541b413111328f8aea61161ad372
Author: Peter Huewe <peter.huewe@infineon.com>
Date:   Thu Mar 2 13:03:12 2017 +0000

    tpm_tis_spi: Abort transfer when too many wait states are signaled
    
    commit 975094ddc369a32f27210248bdd9bbd153061b00 upstream.
    
    Abort the transfer with ETIMEDOUT when the TPM signals more than
    TPM_RETRY wait states. Continuing with the transfer in this state
    will only lead to arbitrary failures in other parts of the code.
    
    Fixes: 0edbfea537d1 ("tpm/tpm_tis_spi: Add support for spi phy")
    Signed-off-by: Alexander Steffen <Alexander.Steffen@infineon.com>
    Signed-off-by: Peter Huewe <peter.huewe@infineon.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Tested-by: Benoit Houyere <benoit.houyere@st.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aad1e5c81cbb0617ef544f65d2e4b41fed05484f
Author: Peter Huewe <peter.huewe@infineon.com>
Date:   Thu Mar 2 13:03:11 2017 +0000

    tpm_tis_spi: Use single function to transfer data
    
    commit f848f2143ae42dc0918400039257a893835254d1 upstream.
    
    The algorithm for sending data to the TPM is mostly identical to the
    algorithm for receiving data from the TPM, so a single function is
    sufficient to handle both cases.
    
    This is a prequisite for all the other fixes, so we don't have to fix
    everything twice (send/receive)
    
    v2: u16 instead of u8 for the length.
    Fixes: 0edbfea537d1 ("tpm/tpm_tis_spi: Add support for spi phy")
    Signed-off-by: Alexander Steffen <Alexander.Steffen@infineon.com>
    Signed-off-by: Peter Huewe <peter.huewe@infineon.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Tested-by: Benoit Houyere <benoit.houyere@st.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc0f994c205df817b9ed4a29fd712fa0da82c68b
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Tue Apr 25 14:29:35 2017 +0300

    fanotify: don't expose EOPENSTALE to userspace
    
    commit 4ff33aafd32e084f5ee7faa54ba06e95f8b1b8af upstream.
    
    When delivering an event to userspace for a file on an NFS share,
    if the file is deleted on server side before user reads the event,
    user will not get the event.
    
    If the event queue contained several events, the stale event is
    quietly dropped and read() returns to user with events read so far
    in the buffer.
    
    If the event queue contains a single stale event or if the stale
    event is a permission event, read() returns to user with the kernel
    internal error code 518 (EOPENSTALE), which is not a POSIX error code.
    
    Check the internal return value -EOPENSTALE in fanotify_read(), just
    the same as it is checked in path_openat() and drop the event in the
    cases that it is not already dropped.
    
    This is a reproducer from Marko Rauhamaa:
    
    Just take the example program listed under "man fanotify" ("fantest")
    and follow these steps:
    
        ==============================================================
        NFS Server    NFS Client(1)     NFS Client(2)
        ==============================================================
        # echo foo >/nfsshare/bar.txt
                      # cat /nfsshare/bar.txt
                      foo
                                        # ./fantest /nfsshare
                                        Press enter key to terminate.
                                        Listening for events.
        # rm -f /nfsshare/bar.txt
                      # cat /nfsshare/bar.txt
                                        read: Unknown error 518
                      cat: /nfsshare/bar.txt: Operation not permitted
        ==============================================================
    
    where NFS Client (1) and (2) are two terminal sessions on a single NFS
    Client machine.
    
    Reported-by: Marko Rauhamaa <marko.rauhamaa@f-secure.com>
    Tested-by: Marko Rauhamaa <marko.rauhamaa@f-secure.com>
    Cc: <linux-api@vger.kernel.org>
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8b6d43ce3ea4afd8aecf2ac6a8523b085058db0
Author: Marc Dietrich <marvin24@gmx.de>
Date:   Fri Dec 9 10:20:38 2016 +0100

    ARM: tegra: paz00: Mark panel regulator as enabled on boot
    
    commit 0c18927f51f4d390abdcf385bff5f995407ee732 upstream.
    
    Current U-Boot enables the display already. Marking the regulator as
    enabled on boot fixes sporadic panel initialization failures.
    
    Signed-off-by: Marc Dietrich <marvin24@gmx.de>
    Tested-by: Misha Komarovskiy <zombah@gmail.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0251f6affb1170a3c3364651a1c2757526cbfb88
Author: Jeeja KP <jeeja.kp@intel.com>
Date:   Wed May 10 11:51:58 2017 +0530

    ALSA: hda: Fix cpu lockup when stopping the cmd dmas
    
    commit 960013762df0a214b57f2fce655422fb52bdfd2c upstream.
    
    Using jiffies in hdac_wait_for_cmd_dmas() to determine when to time out
    when interrupts are off (snd_hdac_bus_stop_cmd_io()/spin_lock_irq())
    causes hard lockup so unlock while waiting using jiffies.
    
    ---<-snip->---
    <0>[ 1211.603046] NMI watchdog: Watchdog detected hard LOCKUP on cpu 3
    <4>[ 1211.603047] Modules linked in: snd_hda_intel i915 vgem
    <4>[ 1211.603053] irq event stamp: 13366
    <4>[ 1211.603053] hardirqs last  enabled at (13365):
    ...
    <4>[ 1211.603059] Call Trace:
    <4>[ 1211.603059]  ? delay_tsc+0x3d/0xc0
    <4>[ 1211.603059]  __delay+0xa/0x10
    <4>[ 1211.603060]  __const_udelay+0x31/0x40
    <4>[ 1211.603060]  snd_hdac_bus_stop_cmd_io+0x96/0xe0 [snd_hda_core]
    <4>[ 1211.603060]  ? azx_dev_disconnect+0x20/0x20 [snd_hda_intel]
    <4>[ 1211.603061]  snd_hdac_bus_stop_chip+0xb1/0x100 [snd_hda_core]
    <4>[ 1211.603061]  azx_stop_chip+0x9/0x10 [snd_hda_codec]
    <4>[ 1211.603061]  azx_suspend+0x72/0x220 [snd_hda_intel]
    <4>[ 1211.603061]  pci_pm_suspend+0x71/0x140
    <4>[ 1211.603062]  dpm_run_callback+0x6f/0x330
    <4>[ 1211.603062]  ? pci_pm_freeze+0xe0/0xe0
    <4>[ 1211.603062]  __device_suspend+0xf9/0x370
    <4>[ 1211.603062]  ? dpm_watchdog_set+0x60/0x60
    <4>[ 1211.603063]  async_suspend+0x1a/0x90
    <4>[ 1211.603063]  async_run_entry_fn+0x34/0x160
    <4>[ 1211.603063]  process_one_work+0x1f4/0x6d0
    <4>[ 1211.603063]  ? process_one_work+0x16e/0x6d0
    <4>[ 1211.603064]  worker_thread+0x49/0x4a0
    <4>[ 1211.603064]  kthread+0x107/0x140
    <4>[ 1211.603064]  ? process_one_work+0x6d0/0x6d0
    <4>[ 1211.603065]  ? kthread_create_on_node+0x40/0x40
    <4>[ 1211.603065]  ret_from_fork+0x2e/0x40
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100419
    Fixes: 38b19ed7f81ec ("ALSA: hda: fix to wait for RIRB & CORB DMA to set")
    Reported-by: Marta Lofstedt <marta.lofstedt@intel.com>
    Suggested-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
    Acked-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c1bd0cb49929e84bfafc2c442dfa9b54e26a4a4
Author: Alexander Steffen <Alexander.Steffen@infineon.com>
Date:   Thu Feb 16 15:33:36 2017 +0000

    tpm_tis_core: Choose appropriate timeout for reading burstcount
    
    commit 302a6ad7fc77146191126a1f3e2c5d724fd72416 upstream.
    
    TIS v1.3 for TPM 1.2 and PTP for TPM 2.0 disagree about which timeout
    value applies to reading a valid burstcount. It is TIMEOUT_D according to
    TIS, but TIMEOUT_A according to PTP, so choose the appropriate value
    depending on whether we deal with a TPM 1.2 or a TPM 2.0.
    
    This is important since according to the PTP TIMEOUT_D is much smaller
    than TIMEOUT_A. So the previous implementation could run into timeouts
    with a TPM 2.0, even though the TPM was behaving perfectly fine.
    
    During tpm2_probe TIMEOUT_D will be used even with a TPM 2.0, because
    TPM_CHIP_FLAG_TPM2 is not yet set. This is fine, since the timeout values
    will only be changed afterwards by tpm_get_timeouts. Until then
    TIS_TIMEOUT_D_MAX applies, which is large enough.
    
    Fixes: aec04cbdf723 ("tpm: TPM 2.0 FIFO Interface")
    Signed-off-by: Alexander Steffen <Alexander.Steffen@infineon.com>
    Signed-off-by: Peter Huewe <peter.huewe@infineon.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3888f62943bbc77496dc919080296c3a954b56a9
Author: Vamsi Krishna Samavedam <vskrishn@codeaurora.org>
Date:   Tue May 16 14:38:08 2017 +0200

    USB: core: replace %p with %pK
    
    commit 2f964780c03b73de269b08d12aff96a9618d13f3 upstream.
    
    Format specifier %p can leak kernel addresses while not valuing the
    kptr_restrict system settings. When kptr_restrict is set to (1), kernel
    pointers printed using the %pK format specifier will be replaced with
    Zeros. Debugging Note : &pK prints only Zeros as address. If you need
    actual address information, write 0 to kptr_restrict.
    
    echo 0 > /proc/sys/kernel/kptr_restrict
    
    [Found by poking around in a random vendor kernel tree, it would be nice
    if someone would actually send these types of patches upstream - gkh]
    
    Signed-off-by: Vamsi Krishna Samavedam <vskrishn@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d263d94a870a774a24acb2a2cc1e79ef39c2416
Author: Willy Tarreau <w@1wt.eu>
Date:   Tue May 16 19:18:55 2017 +0200

    char: lp: fix possible integer overflow in lp_setup()
    
    commit 3e21f4af170bebf47c187c1ff8bf155583c9f3b1 upstream.
    
    The lp_setup() code doesn't apply any bounds checking when passing
    "lp=none", and only in this case, resulting in an overflow of the
    parport_nr[] array. All versions in Git history are affected.
    
    Reported-By: Roee Hay <roee.hay@hcl.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a2b8471ab1243437215468b4da6c5ddfd4d80da
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 13:49:45 2017 +0100

    watchdog: pcwd_usb: fix NULL-deref at probe
    
    commit 46c319b848268dab3f0e7c4a5b6e9146d3bca8a4 upstream.
    
    Make sure to check the number of endpoints to avoid dereferencing a
    NULL-pointer should a malicious device lack endpoints.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e2078c100929be9e21229c6c6732bd8ff0d88c2
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue May 16 11:47:29 2017 -0400

    USB: ene_usb6250: fix DMA to the stack
    
    commit 628c2893d44876ddd11602400c70606ade62e129 upstream.
    
    The ene_usb6250 sub-driver in usb-storage does USB I/O to buffers on
    the stack, which doesn't work with vmapped stacks.  This patch fixes
    the problem by allocating a separate 512-byte buffer at probe time and
    using it for all of the offending I/O operations.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: Andreas Hartmann <andihartmann@01019freenet.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d96e4a404c1eec5a4f941d2af572a252028b462
Author: Maksim Salau <maksim.salau@gmail.com>
Date:   Sat May 13 23:49:26 2017 +0300

    usb: misc: legousbtower: Fix memory leak
    
    commit 0bd193d62b4270a2a7a09da43ad1034c7ca5b3d3 upstream.
    
    get_version_reply is not freed if function returns with success.
    
    Fixes: 942a48730faf ("usb: misc: legousbtower: Fix buffers on stack")
    Reported-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Maksim Salau <maksim.salau@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 810b7c5599540d4f17c4fbda2a5c03b5e0e39a11
Author: Maksim Salau <maksim.salau@gmail.com>
Date:   Tue Apr 25 22:49:21 2017 +0300

    usb: misc: legousbtower: Fix buffers on stack
    
    commit 942a48730faf149ccbf3e12ac718aee120bb3529 upstream.
    
    Allocate buffers on HEAP instead of STACK for local structures
    that are to be received using usb_control_msg().
    
    Signed-off-by: Maksim Salau <maksim.salau@gmail.com>
    Tested-by: Alfredo Rafael Vicente Boix <alviboi@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>