commit d929572d7da91169d3a22dfb75ede8bdced541c2
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri May 10 17:53:15 2019 +0200

    Linux 4.14.118

commit d5d05286b6ba27ff4b29f9bf2ba99c716a31c307
Author: Will Deacon <will.deacon@arm.com>
Date:   Mon Apr 8 14:23:17 2019 +0100

    arm64: futex: Bound number of LDXR/STXR loops in FUTEX_WAKE_OP
    
    commit 03110a5cb2161690ae5ac04994d47ed0cd6cef75 upstream.
    
    Our futex implementation makes use of LDXR/STXR loops to perform atomic
    updates to user memory from atomic context. This can lead to latency
    problems if we end up spinning around the LL/SC sequence at the expense
    of doing something useful.
    
    Rework our futex atomic operations so that we return -EAGAIN if we fail
    to update the futex word after 128 attempts. The core futex code will
    reschedule if necessary and we'll try again later.
    
    Cc: <stable@kernel.org>
    Fixes: 6170a97460db ("arm64: Atomic operations")
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2045151af9da38178c6e38581d94f239dc840e5
Author: Will Deacon <will.deacon@arm.com>
Date:   Thu Feb 28 11:58:08 2019 +0000

    locking/futex: Allow low-level atomic operations to return -EAGAIN
    
    commit 6b4f4bc9cb22875f97023984a625386f0c7cc1c0 upstream.
    
    Some futex() operations, including FUTEX_WAKE_OP, require the kernel to
    perform an atomic read-modify-write of the futex word via the userspace
    mapping. These operations are implemented by each architecture in
    arch_futex_atomic_op_inuser() and futex_atomic_cmpxchg_inatomic(), which
    are called in atomic context with the relevant hash bucket locks held.
    
    Although these routines may return -EFAULT in response to a page fault
    generated when accessing userspace, they are expected to succeed (i.e.
    return 0) in all other cases. This poses a problem for architectures
    that do not provide bounded forward progress guarantees or fairness of
    contended atomic operations and can lead to starvation in some cases.
    
    In these problematic scenarios, we must return back to the core futex
    code so that we can drop the hash bucket locks and reschedule if
    necessary, much like we do in the case of a page fault.
    
    Allow architectures to return -EAGAIN from their implementations of
    arch_futex_atomic_op_inuser() and futex_atomic_cmpxchg_inatomic(), which
    will cause the core futex code to reschedule if necessary and return
    back to the architecture code later on.
    
    Cc: <stable@kernel.org>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34f9130a457c0a4f9ec1b30a1311a3a02c6581f2
Author: Ross Zwisler <zwisler@chromium.org>
Date:   Mon Apr 29 12:25:17 2019 -0600

    ASoC: Intel: avoid Oops if DMA setup fails
    
    commit 0efa3334d65b7f421ba12382dfa58f6ff5bf83c4 upstream.
    
    Currently in sst_dsp_new() if we get an error return from sst_dma_new()
    we just print an error message and then still complete the function
    successfully.  This means that we are trying to run without sst->dma
    properly set up, which will result in NULL pointer dereference when
    sst->dma is later used.  This was happening for me in
    sst_dsp_dma_get_channel():
    
            struct sst_dma *dma = dsp->dma;
            ...
            dma->ch = dma_request_channel(mask, dma_chan_filter, dsp);
    
    This resulted in:
    
       BUG: unable to handle kernel NULL pointer dereference at 0000000000000018
       IP: sst_dsp_dma_get_channel+0x4f/0x125 [snd_soc_sst_firmware]
    
    Fix this by adding proper error handling for the case where we fail to
    set up DMA.
    
    This change only affects Haswell and Broadwell systems.  Baytrail
    systems explicilty opt-out of DMA via sst->pdata->resindex_dma_base
    being set to -1.
    
    Signed-off-by: Ross Zwisler <zwisler@google.com>
    Cc: stable@vger.kernel.org
    Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06d0f51f291d6c20baba2ae6f6a8c86de4a87a4f
Author: Oliver Neukum <oneukum@suse.com>
Date:   Tue Apr 30 12:21:45 2019 +0200

    UAS: fix alignment of scatter/gather segments
    
    commit 3ae62a42090f1ed48e2313ed256a1182a85fb575 upstream.
    
    This is the UAS version of
    
    747668dbc061b3e62bc1982767a3a1f9815fcf0e
    usb-storage: Set virt_boundary_mask to avoid SG overflows
    
    We are not as likely to be vulnerable as storage, as it is unlikelier
    that UAS is run over a controller without native support for SG,
    but the issue exists.
    The issue has been existing since the inception of the driver.
    
    Fixes: 115bb1ffa54c ("USB: Add UAS driver")
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2fa7a155b25160696cd77cdd995536cf5e172e20
Author: Marcel Holtmann <marcel@holtmann.org>
Date:   Wed Apr 24 22:19:17 2019 +0200

    Bluetooth: Align minimum encryption key size for LE and BR/EDR connections
    
    commit d5bb334a8e171b262e48f378bd2096c0ea458265 upstream.
    
    The minimum encryption key size for LE connections is 56 bits and to
    align LE with BR/EDR, enforce 56 bits of minimum encryption key size for
    BR/EDR connections as well.
    
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c33156b2d2f5efe820d8efdd610fb168c9acf72
Author: Young Xiao <YangX92@hotmail.com>
Date:   Fri Apr 12 15:24:30 2019 +0800

    Bluetooth: hidp: fix buffer overflow
    
    commit a1616a5ac99ede5d605047a9012481ce7ff18b16 upstream.
    
    Struct ca is copied from userspace. It is not checked whether the "name"
    field is NULL terminated, which allows local users to obtain potentially
    sensitive information from kernel stack memory, via a HIDPCONNADD command.
    
    This vulnerability is similar to CVE-2011-1079.
    
    Signed-off-by: Young Xiao <YangX92@hotmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07b7b1c823d602d0e5d3596387d7f0e67a7e9b5e
Author: Andrew Vasquez <andrewv@marvell.com>
Date:   Tue Apr 2 14:24:25 2019 -0700

    scsi: qla2xxx: Fix incorrect region-size setting in optrom SYSFS routines
    
    commit 5cbdae10bf11f96e30b4d14de7b08c8b490e903c upstream.
    
    Commit e6f77540c067 ("scsi: qla2xxx: Fix an integer overflow in sysfs
    code") incorrectly set 'optrom_region_size' to 'start+size', which can
    overflow option-rom boundaries when 'start' is non-zero.  Continue setting
    optrom_region_size to the proper adjusted value of 'size'.
    
    Fixes: e6f77540c067 ("scsi: qla2xxx: Fix an integer overflow in sysfs code")
    Cc: stable@vger.kernel.org
    Signed-off-by: Andrew Vasquez <andrewv@marvell.com>
    Signed-off-by: Himanshu Madhani <hmadhani@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 920e0782162291397ef5859cf1f174009f24e83c
Author: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Date:   Wed Apr 17 10:35:36 2019 +0300

    intel_th: pci: Add Comet Lake support
    
    commit e60e9a4b231a20a199d7a61caadc48693c30d695 upstream.
    
    This adds support for Intel TH on Comet Lake.
    
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a311892adcdc2beac1d1b8ba95eea411c50503b2
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon Apr 15 13:19:25 2019 -0400

    usb-storage: Set virt_boundary_mask to avoid SG overflows
    
    commit 747668dbc061b3e62bc1982767a3a1f9815fcf0e upstream.
    
    The USB subsystem has always had an unusual requirement for its
    scatter-gather transfers: Each element in the scatterlist (except the
    last one) must have a length divisible by the bulk maxpacket size.
    This is a particular issue for USB mass storage, which uses SG lists
    created by the block layer rather than setting up its own.
    
    So far we have scraped by okay because most devices have a logical
    block size of 512 bytes or larger, and the bulk maxpacket sizes for
    USB 2 and below are all <= 512.  However, USB 3 has a bulk maxpacket
    size of 1024.  Since the xhci-hcd driver includes native SG support,
    this hasn't mattered much.  But now people are trying to use USB-3
    mass storage devices with USBIP, and the vhci-hcd driver currently
    does not have full SG support.
    
    The result is an overflow error, when the driver attempts to implement
    an SG transfer of 63 512-byte blocks as a single
    3584-byte (7 blocks) transfer followed by seven 4096-byte (8 blocks)
    transfers.  The device instead sends 31 1024-byte packets followed by
    a 512-byte packet, and this overruns the first SG buffer.
    
    Ideally this would be fixed by adding better SG support to vhci-hcd.
    But for now it appears we can work around the problem by
    asking the block layer to respect the maxpacket limitation, through
    the use of the virt_boundary_mask.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Seth Bollinger <Seth.Bollinger@digi.com>
    Tested-by: Seth Bollinger <Seth.Bollinger@digi.com>
    CC: Ming Lei <tom.leiming@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 445e7961b815a99b4932c35f1303f56c889d2108
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Apr 25 18:05:39 2019 +0200

    USB: cdc-acm: fix unthrottle races
    
    commit 764478f41130f1b8d8057575b89e69980a0f600d upstream.
    
    Fix two long-standing bugs which could potentially lead to memory
    corruption or leave the port throttled until it is reopened (on weakly
    ordered systems), respectively, when read-URB completion races with
    unthrottle().
    
    First, the URB must not be marked as free before processing is complete
    to prevent it from being submitted by unthrottle() on another CPU.
    
            CPU 1                           CPU 2
            ================                ================
            complete()                      unthrottle()
              process_urb();
              smp_mb__before_atomic();
              set_bit(i, free);               if (test_and_clear_bit(i, free))
                                                      submit_urb();
    
    Second, the URB must be marked as free before checking the throttled
    flag to prevent unthrottle() on another CPU from failing to observe that
    the URB needs to be submitted if complete() sees that the throttled flag
    is set.
    
            CPU 1                           CPU 2
            ================                ================
            complete()                      unthrottle()
              set_bit(i, free);               throttled = 0;
              smp_mb__after_atomic();         smp_mb();
              if (throttled)                  if (test_and_clear_bit(i, free))
                      return;                         submit_urb();
    
    Note that test_and_clear_bit() only implies barriers when the test is
    successful. To handle the case where the URB is still in use an explicit
    barrier needs to be added to unthrottle() for the second race condition.
    
    Also note that the first race was fixed by 36e59e0d70d6 ("cdc-acm: fix
    race between callback and unthrottle") back in 2015, but the bug was
    reintroduced a year later.
    
    Fixes: 1aba579f3cf5 ("cdc-acm: handle read pipe errors")
    Fixes: 088c64f81284 ("USB: cdc-acm: re-write read processing")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6337e073f03e7c3e01caa156aa584f67b405109
Author: Ji-Ze Hong (Peter Hong) <hpeter@gmail.com>
Date:   Tue Apr 30 09:22:29 2019 +0800

    USB: serial: f81232: fix interrupt worker not stop
    
    commit 804dbee1e49774918339c1e5a87400988c0819e8 upstream.
    
    The F81232 will use interrupt worker to handle MSR change.
    This patch will fix the issue that interrupt work should stop
    in close() and suspend().
    
    This also fixes line-status events being disabled after a suspend cycle
    until the port is re-opened.
    
    Signed-off-by: Ji-Ze Hong (Peter Hong) <hpeter+linux_kernel@gmail.com>
    [ johan: amend commit message ]
    Fixes: 87fe5adcd8de ("USB: f81232: implement read IIR/MSR with endpoint")
    Cc: stable <stable@vger.kernel.org>     # 4.1
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16360fa152ec5c884a7bcf6aa352add53076a590
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Thu Apr 25 13:55:23 2019 -0700

    usb: dwc3: Fix default lpm_nyet_threshold value
    
    commit 8d791929b2fbdf7734c1596d808e55cb457f4562 upstream.
    
    The max possible value for DCTL.LPM_NYET_THRES is 15 and not 255. Change
    the default value to 15.
    
    Cc: stable@vger.kernel.org
    Fixes: 80caf7d21adc ("usb: dwc3: add lpm erratum support")
    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 5f138462c3963289074bbffad337a7639d826e61
Author: Prasad Sodagudi <psodagud@codeaurora.org>
Date:   Sun Mar 24 07:57:04 2019 -0700

    genirq: Prevent use-after-free and work list corruption
    
    [ Upstream commit 59c39840f5abf4a71e1810a8da71aaccd6c17d26 ]
    
    When irq_set_affinity_notifier() replaces the notifier, then the
    reference count on the old notifier is dropped which causes it to be
    freed. But nothing ensures that the old notifier is not longer queued
    in the work list. If it is queued this results in a use after free and
    possibly in work list corruption.
    
    Ensure that the work is canceled before the reference is dropped.
    
    Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: marc.zyngier@arm.com
    Link: https://lkml.kernel.org/r/1553439424-6529-1-git-send-email-psodagud@codeaurora.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bd237c42dd64d67696e220176bb7d33fd7252c67
Author: Joerg Roedel <jroedel@suse.de>
Date:   Fri Apr 12 12:50:31 2019 +0200

    iommu/amd: Set exclusion range correctly
    
    [ Upstream commit 3c677d206210f53a4be972211066c0f1cd47fe12 ]
    
    The exlcusion range limit register needs to contain the
    base-address of the last page that is part of the range, as
    bits 0-11 of this register are treated as 0xfff by the
    hardware for comparisons.
    
    So correctly set the exclusion range in the hardware to the
    last page which is _in_ the range.
    
    Fixes: b2026aa2dce44 ('x86, AMD IOMMU: add functions for programming IOMMU MMIO space')
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bdf3bd5205be795903c59ed516fcb62205cbb3d1
Author: Stephen Boyd <sboyd@kernel.org>
Date:   Thu Apr 11 10:22:43 2019 -0700

    platform/x86: pmc_atom: Drop __initconst on dmi table
    
    [ Upstream commit b995dcca7cf12f208cfd95fd9d5768dca7cccec7 ]
    
    It's used by probe and that isn't an init function. Drop this so that we
    don't get a section mismatch.
    
    Reported-by: kbuild test robot <lkp@intel.com>
    Cc: David Müller <dave.mueller@gmx.ch>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
    Fixes: 7c2e07130090 ("clk: x86: Add system specific quirk to mark clocks as critical")
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1fff3c28ba2d90ac74a4aa30f5f92a6509f883e9
Author: Dongli Zhang <dongli.zhang@oracle.com>
Date:   Wed Mar 27 18:36:34 2019 +0800

    virtio-blk: limit number of hw queues by nr_cpu_ids
    
    [ Upstream commit bf348f9b78d413e75bb079462751a1d86b6de36c ]
    
    When tag_set->nr_maps is 1, the block layer limits the number of hw queues
    by nr_cpu_ids. No matter how many hw queues are used by virtio-blk, as it
    has (tag_set->nr_maps == 1), it can use at most nr_cpu_ids hw queues.
    
    In addition, specifically for pci scenario, when the 'num-queues' specified
    by qemu is more than maxcpus, virtio-blk would not be able to allocate more
    than maxcpus vectors in order to have a vector for each queue. As a result,
    it falls back into MSI-X with one vector for config and one shared for
    queues.
    
    Considering above reasons, this patch limits the number of hw queues used
    by virtio-blk by nr_cpu_ids.
    
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: Dongli Zhang <dongli.zhang@oracle.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f81642e882b7f63bb8130e1c8fb9a13a523df039
Author: Tzung-Bi Shih <tzungbi@google.com>
Date:   Mon Apr 8 17:08:58 2019 +0800

    ASoC: Intel: kbl: fix wrong number of channels
    
    [ Upstream commit d6ba3f815bc5f3c4249d15c8bc5fbb012651b4a4 ]
    
    Fix wrong setting on number of channels.  The context wants to set
    constraint to 2 channels instead of 4.
    
    Signed-off-by: Tzung-Bi Shih <tzungbi@google.com>
    Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e5d8af003ffb6ccaf1816d66a0cd5e2f4f61067e
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Thu Apr 4 00:04:09 2019 +0800

    drm/mediatek: fix possible object reference leak
    
    [ Upstream commit 2ae2c3316fb77dcf64275d011596b60104c45426 ]
    
    The call to of_parse_phandle returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    Detected by coccinelle with the following warnings:
    drivers/gpu/drm/mediatek/mtk_hdmi.c:1521:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 1509, but without a corresponding object release within this function.
    drivers/gpu/drm/mediatek/mtk_hdmi.c:1524:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 1509, but without a corresponding object release within this function.
    
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Cc: CK Hu <ck.hu@mediatek.com>
    Cc: Philipp Zabel <p.zabel@pengutronix.de>
    Cc: David Airlie <airlied@linux.ie>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Cc: Matthias Brugger <matthias.bgg@gmail.com>
    Cc: dri-devel@lists.freedesktop.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-mediatek@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: CK Hu <ck.hu@mediatek.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d0196423545e85ac49d356ca6a535ffdfe38b964
Author: Varun Prakash <varun@chelsio.com>
Date:   Fri Apr 5 20:39:13 2019 +0530

    scsi: csiostor: fix missing data copy in csio_scsi_err_handler()
    
    [ Upstream commit 5c2442fd78998af60e13aba506d103f7f43f8701 ]
    
    If scsi cmd sglist is not suitable for DDP then csiostor driver uses
    preallocated buffers for DDP, because of this data copy is required from
    DDP buffer to scsi cmd sglist before calling ->scsi_done().
    
    Signed-off-by: Varun Prakash <varun@chelsio.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ebe0de059b02ded2516c04cc4d622e939f3be525
Author: Kamal Heib <kamalheib1@gmail.com>
Date:   Wed Apr 3 16:52:54 2019 +0300

    RDMA/vmw_pvrdma: Fix memory leak on pvrdma_pci_remove
    
    [ Upstream commit ea7a5c706fa49273cf6d1d9def053ecb50db2076 ]
    
    Make sure to free the DSR on pvrdma_pci_remove() to avoid the memory leak.
    
    Fixes: 29c8d9eba550 ("IB: Add vmw_pvrdma driver")
    Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
    Acked-by: Adit Ranadive <aditr@vmware.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 72c7689211ddf097aab67c9a7c043ef108418d2f
Author: Longpeng <longpeng2@huawei.com>
Date:   Sat Mar 9 15:17:40 2019 +0800

    virtio_pci: fix a NULL pointer reference in vp_del_vqs
    
    [ Upstream commit 6a8aae68c87349dbbcd46eac380bc43cdb98a13b ]
    
    If the msix_affinity_masks is alloced failed, then we'll
    try to free some resources in vp_free_vectors() that may
    access it directly.
    
    We met the following stack in our production:
    [   29.296767] BUG: unable to handle kernel NULL pointer dereference at  (null)
    [   29.311151] IP: [<ffffffffc04fe35a>] vp_free_vectors+0x6a/0x150 [virtio_pci]
    [   29.324787] PGD 0
    [   29.333224] Oops: 0000 [#1] SMP
    [...]
    [   29.425175] RIP: 0010:[<ffffffffc04fe35a>]  [<ffffffffc04fe35a>] vp_free_vectors+0x6a/0x150 [virtio_pci]
    [   29.441405] RSP: 0018:ffff9a55c2dcfa10  EFLAGS: 00010206
    [   29.453491] RAX: 0000000000000000 RBX: ffff9a55c322c400 RCX: 0000000000000000
    [   29.467488] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff9a55c322c400
    [   29.481461] RBP: ffff9a55c2dcfa20 R08: 0000000000000000 R09: ffffc1b6806ff020
    [   29.495427] R10: 0000000000000e95 R11: 0000000000aaaaaa R12: 0000000000000000
    [   29.509414] R13: 0000000000010000 R14: ffff9a55bd2d9e98 R15: ffff9a55c322c400
    [   29.523407] FS:  00007fdcba69f8c0(0000) GS:ffff9a55c2840000(0000) knlGS:0000000000000000
    [   29.538472] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   29.551621] CR2: 0000000000000000 CR3: 000000003ce52000 CR4: 00000000003607a0
    [   29.565886] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   29.580055] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   29.594122] Call Trace:
    [   29.603446]  [<ffffffffc04fe8a2>] vp_request_msix_vectors+0xe2/0x260 [virtio_pci]
    [   29.618017]  [<ffffffffc04fedc5>] vp_try_to_find_vqs+0x95/0x3b0 [virtio_pci]
    [   29.632152]  [<ffffffffc04ff117>] vp_find_vqs+0x37/0xb0 [virtio_pci]
    [   29.645582]  [<ffffffffc057bf63>] init_vq+0x153/0x260 [virtio_blk]
    [   29.658831]  [<ffffffffc057c1e8>] virtblk_probe+0xe8/0x87f [virtio_blk]
    [...]
    
    Cc: Gonglei <arei.gonglei@huawei.com>
    Signed-off-by: Longpeng <longpeng2@huawei.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Gonglei <arei.gonglei@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3bb4e013a6c36cbeb0f9488d48e2f56dc9696a5c
Author: Qian Cai <cai@lca.pw>
Date:   Sat Apr 6 18:59:01 2019 -0400

    slab: fix a crash by reading /proc/slab_allocators
    
    [ Upstream commit fcf88917dd435c6a4cb2830cb086ee58605a1d85 ]
    
    The commit 510ded33e075 ("slab: implement slab_root_caches list")
    changes the name of the list node within "struct kmem_cache" from "list"
    to "root_caches_node", but leaks_show() still use the "list" which
    causes a crash when reading /proc/slab_allocators.
    
    You need to have CONFIG_SLAB=y and CONFIG_MEMCG=y to see the problem,
    because without MEMCG all slab caches are root caches, and the "list"
    node happens to be the right one.
    
    Fixes: 510ded33e075 ("slab: implement slab_root_caches list")
    Signed-off-by: Qian Cai <cai@lca.pw>
    Reviewed-by: Tobin C. Harding <tobin@kernel.org>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a8f82720673d41b85145f232c954fe3a365f72b5
Author: Sugar Zhang <sugar.zhang@rock-chips.com>
Date:   Wed Apr 3 21:40:45 2019 +0800

    ASoC: rockchip: pdm: fix regmap_ops hang issue
    
    [ Upstream commit c85064435fe7a216ec0f0238ef2b8f7cd850a450 ]
    
    This is because set_fmt ops maybe called when PD is off,
    and in such case, regmap_ops will lead system hang.
    enale PD before doing regmap_ops.
    
    Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5d60a0661058612ec612caf9672f24a40a9c7765
Author: Jann Horn <jannh@google.com>
Date:   Fri Mar 29 22:46:49 2019 +0100

    linux/kernel.h: Use parentheses around argument in u64_to_user_ptr()
    
    [ Upstream commit a0fe2c6479aab5723239b315ef1b552673f434a3 ]
    
    Use parentheses around uses of the argument in u64_to_user_ptr() to
    ensure that the cast doesn't apply to part of the argument.
    
    There are existing uses of the macro of the form
    
      u64_to_user_ptr(A + B)
    
    which expands to
    
      (void __user *)(uintptr_t)A + B
    
    (the cast applies to the first operand of the addition, the addition
    is a pointer addition). This happens to still work as intended, the
    semantic difference doesn't cause a difference in behavior.
    
    But I want to use u64_to_user_ptr() with a ternary operator in the
    argument, like so:
    
      u64_to_user_ptr(A ? B : C)
    
    This currently doesn't work as intended.
    
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
    Cc: Andrei Vagin <avagin@openvz.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: NeilBrown <neilb@suse.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Qiaowei Ren <qiaowei.ren@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/20190329214652.258477-1-jannh@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bfc371778ba8c5171ca0e901c39a98ded1ce23e2
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Thu Mar 21 13:38:49 2019 +0100

    perf/x86/intel: Initialize TFA MSR
    
    [ Upstream commit d7262457e35dbe239659e62654e56f8ddb814bed ]
    
    Stephane reported that the TFA MSR is not initialized by the kernel,
    but the TFA bit could set by firmware or as a leftover from a kexec,
    which makes the state inconsistent.
    
    Reported-by: Stephane Eranian <eranian@google.com>
    Tested-by: Nelson DSouza <nelson.dsouza@intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: tonyj@suse.com
    Link: https://lkml.kernel.org/r/20190321123849.GN6521@hirez.programming.kicks-ass.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b2977b4a180b42a308569449fdc3b1c2b20afa19
Author: Stephane Eranian <eranian@google.com>
Date:   Wed Mar 6 11:50:48 2019 -0800

    perf/x86/intel: Fix handling of wakeup_events for multi-entry PEBS
    
    [ Upstream commit 583feb08e7f7ac9d533b446882eb3a54737a6dbb ]
    
    When an event is programmed with attr.wakeup_events=N (N>0), it means
    the caller is interested in getting a user level notification after
    N samples have been recorded in the kernel sampling buffer.
    
    With precise events on Intel processors, the kernel uses PEBS.
    The kernel tries minimize sampling overhead by verifying
    if the event configuration is compatible with multi-entry PEBS mode.
    If so, the kernel is notified only when the buffer has reached its threshold.
    Other PEBS operates in single-entry mode, the kenrel is notified for each
    PEBS sample.
    
    The problem is that the current implementation look at frequency
    mode and event sample_type but ignores the wakeup_events field. Thus,
    it may not be possible to receive a notification after each precise event.
    
    This patch fixes this problem by disabling multi-entry PEBS if wakeup_events
    is non-zero.
    
    Signed-off-by: Stephane Eranian <eranian@google.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Andi Kleen <ak@linux.intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: kan.liang@intel.com
    Link: https://lkml.kernel.org/r/20190306195048.189514-1-eranian@google.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b3e867252f10b13af4d591211bb3d5119bc762fb
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Mar 28 17:31:30 2019 +0300

    drm/mediatek: Fix an error code in mtk_hdmi_dt_parse_pdata()
    
    [ Upstream commit 2d85978341e6a32e7443d9f28639da254d53f400 ]
    
    We don't want to overwrite "ret", it already holds the correct error
    code.  The "regmap" variable might be a valid pointer as this point.
    
    Fixes: 8f83f26891e1 ("drm/mediatek: Add HDMI support")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: CK Hu <ck.hu@mediatek.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 906d79143057cbd78f35db2e1175417c6a2d8869
Author: Annaliese McDermond <nh6z@nh6z.net>
Date:   Sat Mar 30 09:02:02 2019 -0700

    ASoC: tlv320aic32x4: Fix Common Pins
    
    [ Upstream commit c63adb28f6d913310430f14c69f0a2ea55eed0cc ]
    
    The common pins were mistakenly not added to the DAPM graph.
    Adding these pins will allow valid graphs to be created.
    
    Signed-off-by: Annaliese McDermond <nh6z@nh6z.net>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8dee806084370e156d6cfe91c9d47f78d2014376
Author: Chong Qiao <qiaochong@loongson.cn>
Date:   Thu Mar 28 07:08:01 2019 +0800

    MIPS: KGDB: fix kgdb support for SMP platforms.
    
    [ Upstream commit ab8a6d821179ab9bea1a9179f535ccba6330c1ed ]
    
    KGDB_call_nmi_hook is called by other cpu through smp call.
    MIPS smp call is processed in ipi irq handler and regs is saved in
     handle_int.
    So kgdb_call_nmi_hook get regs by get_irq_regs and regs will be passed
     to kgdb_cpu_enter.
    
    Signed-off-by: Chong Qiao <qiaochong@loongson.cn>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Christophe Leroy <christophe.leroy@c-s.fr>
    Cc: linux-mips@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: QiaoChong <qiaochong@loongson.cn>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1cd4f74076388aa6212869dcbbe9645898cd03e8
Author: Kaike Wan <kaike.wan@intel.com>
Date:   Mon Mar 18 09:55:39 2019 -0700

    IB/hfi1: Eliminate opcode tests on mr deref
    
    [ Upstream commit a8639a79e85c18c16c10089edd589c7948f19bbd ]
    
    When an old ack_queue entry is used to store an incoming request, it may
    need to clean up the old entry if it is still referencing the
    MR. Originally only RDMA READ request needed to reference MR on the
    responder side and therefore the opcode was tested when cleaning up the
    old entry. The introduction of tid rdma specific operations in the
    ack_queue makes the specific opcode tests wrong.  Multiple opcodes (RDMA
    READ, TID RDMA READ, and TID RDMA WRITE) may need MR ref cleanup.
    
    Remove the opcode specific tests associated with the ack_queue.
    
    Fixes: f48ad614c100 ("IB/hfi1: Move driver out of staging")
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Kaike Wan <kaike.wan@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 10cc9e79fb097d31ac73165e1e91a48d9c949fda
Author: Daniel Mack <daniel@zonque.org>
Date:   Wed Mar 20 22:41:56 2019 +0100

    ASoC: cs4270: Set auto-increment bit for register writes
    
    [ Upstream commit f0f2338a9cfaf71db895fa989ea7234e8a9b471d ]
    
    The CS4270 does not by default increment the register address on
    consecutive writes. During normal operation it doesn't matter as all
    register accesses are done individually. At resume time after suspend,
    however, the regcache code gathers the biggest possible block of
    registers to sync and sends them one on one go.
    
    To fix this, set the INCR bit in all cases.
    
    Signed-off-by: Daniel Mack <daniel@zonque.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 97dac24e68ed587c44f23cbf99d76359ea6950f1
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Tue Mar 19 11:52:06 2019 +0000

    ASoC: wm_adsp: Add locking to wm_adsp2_bus_error
    
    [ Upstream commit a2225a6d155fcb247fe4c6d87f7c91807462966d ]
    
    Best to lock across handling the bus error to ensure the DSP doesn't
    change power state as we are reading the status registers.
    
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 97916fe0b8fa34954c7a5fa5b515e458d2b48043
Author: Sylwester Nawrocki <s.nawrocki@samsung.com>
Date:   Tue Mar 12 18:40:06 2019 +0100

    ASoC: samsung: odroid: Fix clock configuration for 44100 sample rate
    
    [ Upstream commit 2b13bee3884926cba22061efa75bd315e871de24 ]
    
    After commit fbeec965b8d1c ("ASoC: samsung: odroid: Fix 32000 sample rate
    handling") the audio root clock frequency is configured improperly for
    44100 sample rate. Due to clock rate rounding it's 20070401 Hz instead
    of 22579000 Hz. This results in a too low value of the PSR clock divider
    in the CPU DAI driver and too fast actual sample rate for fs=44100. E.g.
    1 kHz tone has actual 1780 Hz frequency (1 kHz * 20070401/22579000 * 2).
    
    Fix this by increasing the correction passed to clk_set_rate() to take
    into account inaccuracy of the EPLL frequency properly.
    
    Fixes: fbeec965b8d1c ("ASoC: samsung: odroid: Fix 32000 sample rate handling")
    Reported-by: JaeChul Lee <jcsing.lee@samsung.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e244b64fbdf4d7200f5dfcf31f44e0e0f971bf2
Author: John Hsu <KCHSU0@nuvoton.com>
Date:   Wed Mar 13 16:23:44 2019 +0800

    ASoC: nau8810: fix the issue of widget with prefixed name
    
    [ Upstream commit 54d1cf78b0f4ba348a7c7fb8b7d0708d71b6cc8a ]
    
    The driver changes the stream name of DAC and ADC to avoid the issue of
    widget with prefixed name. When the machine adds prefixed name for codec,
    the stream name of DAI may not find the widgets.
    
    Signed-off-by: John Hsu <KCHSU0@nuvoton.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dc465d317403505ee72301e59e00a3252e6a43c5
Author: John Hsu <KCHSU0@nuvoton.com>
Date:   Mon Mar 11 09:36:45 2019 +0800

    ASoC: nau8824: fix the issue of the widget with prefix name
    
    [ Upstream commit 844a4a362dbec166b44d6b9b3dd45b08cb273703 ]
    
    The driver has two issues when machine add prefix name for codec.
    (1)The stream name of DAI can't find the AIF widgets.
    (2)The drivr can enable/disalbe the MICBIAS and SAR widgets.
    
    The patch will fix these issues caused by prefixed name added.
    
    Signed-off-by: John Hsu <KCHSU0@nuvoton.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 82af2ff96f3a691812f8e8374d9df3130109c2c7
Author: Rander Wang <rander.wang@linux.intel.com>
Date:   Fri Mar 8 16:38:57 2019 +0800

    ASoC:soc-pcm:fix a codec fixup issue in TDM case
    
    [ Upstream commit 570f18b6a8d1f0e60e8caf30e66161b6438dcc91 ]
    
    On HDaudio platforms, if playback is started when capture is working,
    there is no audible output.
    
    This can be root-caused to the use of the rx|tx_mask to store an HDaudio
    stream tag.
    
    If capture is stared before playback, rx_mask would be non-zero on HDaudio
    platform, then the channel number of playback, which is in the same codec
    dai with the capture, would be changed by soc_pcm_codec_params_fixup based
    on the tx_mask at first, then overwritten by this function based on rx_mask
    at last.
    
    According to the author of tx|rx_mask, tx_mask is for playback and rx_mask
    is for capture. And stream direction is checked at all other references of
    tx|rx_mask in ASoC, so here should be an error. This patch checks stream
    direction for tx|rx_mask for fixup function.
    
    This issue would affect not only HDaudio+ASoC, but also I2S codecs if the
    channel number based on rx_mask is not equal to the one for tx_mask. It could
    be rarely reproduecd because most drivers in kernel set the same channel number
    to tx|rx_mask or rx_mask is zero.
    
    Tested on all platforms using stream_tag & HDaudio and intel I2S platforms.
    
    Signed-off-by: Rander Wang <rander.wang@linux.intel.com>
    Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a61588553ba32a306ef187e929eeb29324ad7cac
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Thu Feb 28 15:30:34 2019 +0000

    ASoC: hdmi-codec: fix S/PDIF DAI
    
    [ Upstream commit 2e95f984aae4cf0608d0ba2189c756f2bd50b44a ]
    
    When using the S/PDIF DAI, there is no requirement to call
    snd_soc_dai_set_fmt() as there is no DAI format definition that defines
    S/PDIF.  In any case, S/PDIF does not have separate clocks, this is
    embedded into the data stream.
    
    Consequently, when attempting to use TDA998x in S/PDIF mode, the attempt
    to configure TDA998x via the hw_params callback fails as the
    hdmi_codec_daifmt is left initialised to zero.
    
    Since the S/PDIF DAI will only be used by S/PDIF, prepare the
    hdmi_codec_daifmt structure for this format.
    
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Jyri Sarha <jsarha@ti.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c37c0115932ce79392427e5f05126c1fdadcf944
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Apr 4 08:53:30 2019 +0200

    staging: greybus: power_supply: fix prop-descriptor request size
    
    commit 47830c1127ef166af787caf2f871f23089610a7f upstream.
    
    Since moving the message buffers off the stack, the dynamically
    allocated get-prop-descriptor request buffer is incorrectly sized due to
    using the pointer rather than request-struct size when creating the
    operation.
    
    Fortunately, the pointer size is always larger than this one-byte
    request, but this could still cause trouble on the remote end due to the
    unexpected message size.
    
    Fixes: 9d15134d067e ("greybus: power_supply: rework get descriptors")
    Cc: stable <stable@vger.kernel.org>     # 4.9
    Cc: Rui Miguel Silva <rui.silva@linaro.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Rui Miguel Silva <rmfrfs@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b2bff7b816ad674b3637cb29dd61df07b493bd0
Author: Andrey Ryabinin <aryabinin@virtuozzo.com>
Date:   Mon May 6 13:45:26 2019 +0300

    ubsan: Fix nasty -Wbuiltin-declaration-mismatch GCC-9 warnings
    
    commit f0996bc2978e02d2ea898101462b960f6119b18f upstream.
    
    Building lib/ubsan.c with gcc-9 results in a ton of nasty warnings like
    this one:
    
        lib/ubsan.c warning: conflicting types for built-in function
             ‘__ubsan_handle_negate_overflow’; expected ‘void(void *, void *)’ [-Wbuiltin-declaration-mismatch]
    
    The kernel's declarations of __ubsan_handle_*() often uses 'unsigned
    long' types in parameters while GCC these parameters as 'void *' types,
    hence the mismatch.
    
    Fix this by using 'void *' to match GCC's declarations.
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Fixes: c6d308534aef ("UBSAN: run-time undefined behavior sanity checker")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a01e8154b48e61fe8a232df5325e32cbb015ecf
Author: Dexuan Cui <decui@microsoft.com>
Date:   Fri Apr 12 23:34:45 2019 +0000

    Drivers: hv: vmbus: Remove the undesired put_cpu_ptr() in hv_synic_cleanup()
    
    commit a0033bd1eae4650b69be07c17cb87393da584563 upstream.
    
    With CONFIG_DEBUG_PREEMPT=y, the put_cpu_ptr() triggers an underflow
    warning in preempt_count_sub().
    
    Fixes: 37cdd991fac8 ("vmbus: put related per-cpu variable together")
    Cc: stable@vger.kernel.org
    Cc: Stephen Hemminger <sthemmin@microsoft.com>
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3739f98aea7113a21d11b1a604525049e422e29e
Author: Jason Yan <yanaijie@huawei.com>
Date:   Tue Sep 25 10:56:54 2018 +0800

    scsi: libsas: fix a race condition when smp task timeout
    
    commit b90cd6f2b905905fb42671009dc0e27c310a16ae upstream.
    
    When the lldd is processing the complete sas task in interrupt and set the
    task stat as SAS_TASK_STATE_DONE, the smp timeout timer is able to be
    triggered at the same time. And smp_task_timedout() will complete the task
    wheter the SAS_TASK_STATE_DONE is set or not. Then the sas task may freed
    before lldd end the interrupt process. Thus a use-after-free will happen.
    
    Fix this by calling the complete() only when SAS_TASK_STATE_DONE is not
    set. And remove the check of the return value of the del_timer(). Once the
    LLDD sets DONE, it must call task->done(), which will call
    smp_task_done()->complete() and the task will be completed and freed
    correctly.
    
    Reported-by: chenxiang <chenxiang66@hisilicon.com>
    Signed-off-by: Jason Yan <yanaijie@huawei.com>
    CC: John Garry <john.garry@huawei.com>
    CC: Johannes Thumshirn <jthumshirn@suse.de>
    CC: Ewan Milne <emilne@redhat.com>
    CC: Christoph Hellwig <hch@lst.de>
    CC: Tomas Henzl <thenzl@redhat.com>
    CC: Dan Williams <dan.j.williams@intel.com>
    CC: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: John Garry <john.garry@huawei.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Cc: Guenter Roeck <linux@roeck-us.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>