commit e1e364bf09d92018d35f20a004ffcfd4cbeffa34
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jan 31 08:13:48 2019 +0100

    Linux 4.14.97

commit f4f4ac411eab2c15f25acb7847f310ccdaaf299a
Author: Anand Jain <anand.jain@oracle.com>
Date:   Sun Nov 11 22:22:17 2018 +0800

    btrfs: dev-replace: go back to suspended state if target device is missing
    
    commit 0d228ece59a35a9b9e8ff0d40653234a6d90f61e upstream.
    
    At the time of forced unmount we place the running replace to
    BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED state, so when the system comes
    back and expect the target device is missing.
    
    Then let the replace state continue to be in
    BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED state instead of
    BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED as there isn't any matching scrub
    running as part of replace.
    
    Fixes: e93c89c1aaaa ("Btrfs: add new sources for device replace code")
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Anand Jain <anand.jain@oracle.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b682b805251ed247da3b1d2eb8ad1287509f2555
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Thu Sep 6 15:52:17 2018 -0400

    btrfs: fix error handling in btrfs_dev_replace_start
    
    commit 5c06147128fbbdf7a84232c5f0d808f53153defe upstream.
    
    When we fail to start a transaction in btrfs_dev_replace_start, we leave
    dev_replace->replace_start set to STARTED but clear ->srcdev and
    ->tgtdev.  Later, that can result in an Oops in
    btrfs_dev_replace_progress when having state set to STARTED or SUSPENDED
    implies that ->srcdev is valid.
    
    Also fix error handling when the state is already STARTED or SUSPENDED
    while starting.  That, too, will clear ->srcdev and ->tgtdev even though
    it doesn't own them.  This should be an impossible case to hit since we
    should be protected by the BTRFS_FS_EXCL_OP bit being set.  Let's add an
    ASSERT there while we're at it.
    
    Fixes: e93c89c1aaaaa (Btrfs: add new sources for device replace code)
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d33655dbae7d3c446612f799adc78e53cd142d44
Author: Pan Bian <bianpan2016@163.com>
Date:   Thu Nov 22 18:58:46 2018 +0800

    f2fs: read page index before freeing
    
    commit 0ea295dd853e0879a9a30ab61f923c26be35b902 upstream.
    
    The function truncate_node frees the page with f2fs_put_page. However,
    the page index is read after that. So, the patch reads the index before
    freeing the page.
    
    Fixes: bf39c00a9a7f ("f2fs: drop obsolete node page when it is truncated")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49c5a805a2286adfd231475603f85bb495d99623
Author: Juergen Gross <jgross@suse.com>
Date:   Mon Jan 14 13:44:13 2019 +0100

    xen: Fix x86 sched_clock() interface for xen
    
    commit 867cefb4cb1012f42cada1c7d1f35ac8dd276071 upstream.
    
    Commit f94c8d11699759 ("sched/clock, x86/tsc: Rework the x86 'unstable'
    sched_clock() interface") broke Xen guest time handling across
    migration:
    
    [  187.249951] Freezing user space processes ... (elapsed 0.001 seconds) done.
    [  187.251137] OOM killer disabled.
    [  187.251137] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
    [  187.252299] suspending xenstore...
    [  187.266987] xen:grant_table: Grant tables using version 1 layout
    [18446743811.706476] OOM killer enabled.
    [18446743811.706478] Restarting tasks ... done.
    [18446743811.720505] Setting capacity to 16777216
    
    Fix that by setting xen_sched_clock_offset at resume time to ensure a
    monotonic clock value.
    
    [boris: replaced pr_info() with pr_info_once() in xen_callback_vector()
     to avoid printing with incorrect timestamp during resume (as we
     haven't re-adjusted the clock yet)]
    
    Fixes: f94c8d11699759 ("sched/clock, x86/tsc: Rework the x86 'unstable' sched_clock() interface")
    Cc: <stable@vger.kernel.org> # 4.11
    Reported-by: Hans van Kranenburg <hans.van.kranenburg@mendix.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Tested-by: Hans van Kranenburg <hans.van.kranenburg@mendix.com>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac0d94ff5d7a5efaf135d7d606fd0c30d16e639d
Author: Pavel Tatashin <pasha.tatashin@oracle.com>
Date:   Thu Jul 19 16:55:32 2018 -0400

    x86/xen/time: Output xen sched_clock time from 0
    
    commit 38669ba205d178d2d38bfd194a196d65a44d5af2 upstream.
    
    It is expected for sched_clock() to output data from 0, when system boots.
    
    Add an offset xen_sched_clock_offset (similarly how it is done in other
    hypervisors i.e. kvm_sched_clock_offset) to count sched_clock() from 0,
    when time is first initialized.
    
    Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: steven.sistare@oracle.com
    Cc: daniel.m.jordan@oracle.com
    Cc: linux@armlinux.org.uk
    Cc: schwidefsky@de.ibm.com
    Cc: heiko.carstens@de.ibm.com
    Cc: john.stultz@linaro.org
    Cc: sboyd@codeaurora.org
    Cc: hpa@zytor.com
    Cc: douly.fnst@cn.fujitsu.com
    Cc: peterz@infradead.org
    Cc: prarit@redhat.com
    Cc: feng.tang@intel.com
    Cc: pmladek@suse.com
    Cc: gnomes@lxorguk.ukuu.org.uk
    Cc: linux-s390@vger.kernel.org
    Cc: boris.ostrovsky@oracle.com
    Cc: jgross@suse.com
    Cc: pbonzini@redhat.com
    Link: https://lkml.kernel.org/r/20180719205545.16512-14-pasha.tatashin@oracle.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9fb9a5434f1c888e4cd8fd1cb573973939eddfa9
Author: Joao Martins <joao.m.martins@oracle.com>
Date:   Wed Nov 8 17:19:57 2017 +0000

    x86/xen/time: setup vcpu 0 time info page
    
    commit 2229f70b5bbb025e1394b61007938a68060afbfb upstream.
    
    In order to support pvclock vdso on xen we need to setup the time
    info page for vcpu 0 and register the page with Xen using the
    VCPUOP_register_vcpu_time_memory_area hypercall. This hypercall
    will also forcefully update the pvti which will set some of the
    necessary flags for vdso. Afterwards we check if it supports the
    PVCLOCK_TSC_STABLE_BIT flag which is mandatory for having
    vdso/vsyscall support. And if so, it will set the cpu 0 pvti that
    will be later on used when mapping the vdso image.
    
    The xen headers are also updated to include the new hypercall for
    registering the secondary vcpu_time_info struct.
    
    Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f3498a06330cfddc29a7876738eca7a497c81e7
Author: Joao Martins <joao.m.martins@oracle.com>
Date:   Wed Nov 8 17:19:56 2017 +0000

    x86/xen/time: set pvclock flags on xen_time_init()
    
    commit b888808093113ae7d63d213272d01fea4b8329ed upstream.
    
    Specifically check for PVCLOCK_TSC_STABLE_BIT and if this bit is set,
    then set it too on pvclock flags. This allows Xen clocksource to use it
    and thus speeding up xen_clocksource_read() callers (i.e. sched_clock())
    
    Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a12f78a86fc17af6f8326ffb991a931c34b82b9
Author: Joao Martins <joao.m.martins@oracle.com>
Date:   Wed Nov 8 17:19:55 2017 +0000

    x86/pvclock: add setter for pvclock_pvti_cpu0_va
    
    commit 9f08890ab906abaf9d4c1bad8111755cbd302260 upstream.
    
    Right now there is only a pvclock_pvti_cpu0_va() which is defined
    on kvmclock since:
    
    commit dac16fba6fc5
    ("x86/vdso: Get pvclock data from the vvar VMA instead of the fixmap")
    
    The only user of this interface so far is kvm. This commit adds a
    setter function for the pvti page and moves pvclock_pvti_cpu0_va
    to pvclock, which is a more generic place to have it; and would
    allow other PV clocksources to use it, such as Xen.
    
    While moving pvclock_pvti_cpu0_va into pvclock, rename also this
    function to pvclock_get_pvti_cpu0_va (including its call sites)
    to be symmetric with the setter (pvclock_set_pvti_cpu0_va).
    
    Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
    Acked-by: Andy Lutomirski <luto@kernel.org>
    Acked-by: Paolo Bonzini <pbonzini@redhat.com>
    Acked-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 45c40a96b98568f4b0fc79b24d9595ae01ccad68
Author: Joao Martins <joao.m.martins@oracle.com>
Date:   Wed Nov 8 17:19:54 2017 +0000

    ptp_kvm: probe for kvm guest availability
    
    commit 001f60e1f662a6dee1630a2915401aaf5959d479 upstream.
    
    In the event of moving pvclock_pvti_cpu0_va() definition to common
    pvclock code, this function would return a value on non KVM guests.
    Later on this would fail with a GPF on ptp_kvm_init when running on a
    Xen guest. Therefore, ptp_kvm_init() should check whether it is running
    in a KVM guest.
    
    Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
    Acked-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 219dcadc75d794587ceb98d86785dac0dc4761b0
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Nov 9 17:21:17 2018 +0200

    xhci: Fix leaking USB3 shared_hcd at xhci removal
    
    commit f068090426ea8d72c408ebd42953a82a88e2282c upstream.
    
    Ensure that the shared_hcd pointer is valid when calling usb_put_hcd()
    
    The shared_hcd is removed and freed in xhci by first calling
    usb_remove_hcd(xhci->shared_hcd), and later
    usb_put_hcd(xhci->shared_hcd)
    
    Afer commit fe190ed0d602 ("xhci: Do not halt the host until both HCD have
    disconnected their devices.") the shared_hcd was never properly put as
    xhci->shared_hcd was set to NULL before usb_put_hcd(xhci->shared_hcd) was
    called.
    
    shared_hcd (USB3) is removed before primary hcd (USB2).
    While removing the primary hcd we might need to handle xhci interrupts
    to cleanly remove last USB2 devices, therefore we need to set
    xhci->shared_hcd to NULL before removing the primary hcd to let xhci
    interrupt handler know shared_hcd is no longer available.
    
    xhci-plat.c, xhci-histb.c and xhci-mtk first create both their hcd's before
    adding them. so to keep the correct reverse removal order use a temporary
    shared_hcd variable for them.
    For more details see commit 4ac53087d6d4 ("usb: xhci: plat: Create both
    HCDs before adding them")
    
    Fixes: fe190ed0d602 ("xhci: Do not halt the host until both HCD have disconnected their devices.")
    Cc: Joel Stanley <joel@jms.id.au>
    Cc: Chunfeng Yun <chunfeng.yun@mediatek.com>
    Cc: Thierry Reding <treding@nvidia.com>
    Cc: Jianguo Sun <sunjianguo1@huawei.com>
    Cc: <stable@vger.kernel.org>
    Reported-by: Jack Pham <jackp@codeaurora.org>
    Tested-by: Jack Pham <jackp@codeaurora.org>
    Tested-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0d74de10c56a7a92871d6dd1cdcbb1add22ae9c
Author: Jack Pham <jackp@codeaurora.org>
Date:   Thu Jan 10 12:39:55 2019 -0800

    usb: dwc3: gadget: Clear req->needs_extra_trb flag on cleanup
    
    commit bd6742249b9ca918565e4e3abaa06665e587f4b5 upstream.
    
    OUT endpoint requests may somtimes have this flag set when
    preparing to be submitted to HW indicating that there is an
    additional TRB chained to the request for alignment purposes.
    If that request is removed before the controller can execute the
    transfer (e.g. ep_dequeue/ep_disable), the request will not go
    through the dwc3_gadget_ep_cleanup_completed_request() handler
    and will not have its needs_extra_trb flag cleared when
    dwc3_gadget_giveback() is called.  This same request could be
    later requeued for a new transfer that does not require an
    extra TRB and if it is successfully completed, the cleanup
    and TRB reclamation will incorrectly process the additional TRB
    which belongs to the next request, and incorrectly advances the
    TRB dequeue pointer, thereby messing up calculation of the next
    requeust's actual/remaining count when it completes.
    
    The right thing to do here is to ensure that the flag is cleared
    before it is given back to the function driver.  A good place
    to do that is in dwc3_gadget_del_and_unmap_request().
    
    Fixes: c6267a51639b ("usb: dwc3: gadget: align transfers to wMaxPacketSize")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jack Pham <jackp@codeaurora.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [jackp: backport to <= 4.20: replaced 'needs_extra_trb' with 'unaligned'
            and 'zero' members in patch and reworded commit text]
    Signed-off-by: Jack Pham <jackp@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 74329ba335443521ae084147a170965425625aa2
Author: Raju Rangoju <rajur@chelsio.com>
Date:   Thu Jan 3 23:05:31 2019 +0530

    nvmet-rdma: fix null dereference under heavy load
    
    commit 5cbab6303b4791a3e6713dfe2c5fda6a867f9adc upstream.
    
    Under heavy load if we don't have any pre-allocated rsps left, we
    dynamically allocate a rsp, but we are not actually allocating memory
    for nvme_completion (rsp->req.rsp). In such a case, accessing pointer
    fields (req->rsp->status) in nvmet_req_init() will result in crash.
    
    To fix this, allocate the memory for nvme_completion by calling
    nvmet_rdma_alloc_rsp()
    
    Fixes: 8407879c("nvmet-rdma:fix possible bogus dereference under heavy load")
    
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Raju Rangoju <rajur@chelsio.com>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e318594de2d23569c27799c013bd9c9139963a9
Author: Israel Rukshin <israelr@mellanox.com>
Date:   Mon Nov 19 10:58:51 2018 +0000

    nvmet-rdma: Add unlikely for response allocated check
    
    commit ad1f824948e4ed886529219cf7cd717d078c630d upstream.
    
    Signed-off-by: Israel Rukshin <israelr@mellanox.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Cc: Raju  Rangoju <rajur@chelsio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 531ebf894c4bfbfbae139869e5ee95d8e9b8dbab
Author: David Hildenbrand <david@redhat.com>
Date:   Fri Jan 11 15:18:22 2019 +0100

    s390/smp: Fix calling smp_call_ipl_cpu() from ipl CPU
    
    commit 60f1bf29c0b2519989927cae640cd1f50f59dc7f upstream.
    
    When calling smp_call_ipl_cpu() from the IPL CPU, we will try to read
    from pcpu_devices->lowcore. However, due to prefixing, that will result
    in reading from absolute address 0 on that CPU. We have to go via the
    actual lowcore instead.
    
    This means that right now, we will read lc->nodat_stack == 0 and
    therfore work on a very wrong stack.
    
    This BUG essentially broke rebooting under QEMU TCG (which will report
    a low address protection exception). And checking under KVM, it is
    also broken under KVM. With 1 VCPU it can be easily triggered.
    
    :/# echo 1 > /proc/sys/kernel/sysrq
    :/# echo b > /proc/sysrq-trigger
    [   28.476745] sysrq: SysRq : Resetting
    [   28.476793] Kernel stack overflow.
    [   28.476817] CPU: 0 PID: 424 Comm: sh Not tainted 5.0.0-rc1+ #13
    [   28.476820] Hardware name: IBM 2964 NE1 716 (KVM/Linux)
    [   28.476826] Krnl PSW : 0400c00180000000 0000000000115c0c (pcpu_delegate+0x12c/0x140)
    [   28.476861]            R:0 T:1 IO:0 EX:0 Key:0 M:0 W:0 P:0 AS:3 CC:0 PM:0 RI:0 EA:3
    [   28.476863] Krnl GPRS: ffffffffffffffff 0000000000000000 000000000010dff8 0000000000000000
    [   28.476864]            0000000000000000 0000000000000000 0000000000ab7090 000003e0006efbf0
    [   28.476864]            000000000010dff8 0000000000000000 0000000000000000 0000000000000000
    [   28.476865]            000000007fffc000 0000000000730408 000003e0006efc58 0000000000000000
    [   28.476887] Krnl Code: 0000000000115bfe: 4170f000            la      %r7,0(%r15)
    [   28.476887]            0000000000115c02: 41f0a000            la      %r15,0(%r10)
    [   28.476887]           #0000000000115c06: e370f0980024        stg     %r7,152(%r15)
    [   28.476887]           >0000000000115c0c: c0e5fffff86e        brasl   %r14,114ce8
    [   28.476887]            0000000000115c12: 41f07000            la      %r15,0(%r7)
    [   28.476887]            0000000000115c16: a7f4ffa8            brc     15,115b66
    [   28.476887]            0000000000115c1a: 0707                bcr     0,%r7
    [   28.476887]            0000000000115c1c: 0707                bcr     0,%r7
    [   28.476901] Call Trace:
    [   28.476902] Last Breaking-Event-Address:
    [   28.476920]  [<0000000000a01c4a>] arch_call_rest_init+0x22/0x80
    [   28.476927] Kernel panic - not syncing: Corrupt kernel stack, can't continue.
    [   28.476930] CPU: 0 PID: 424 Comm: sh Not tainted 5.0.0-rc1+ #13
    [   28.476932] Hardware name: IBM 2964 NE1 716 (KVM/Linux)
    [   28.476932] Call Trace:
    
    Fixes: 2f859d0dad81 ("s390/smp: reduce size of struct pcpu")
    Cc: stable@vger.kernel.org # 4.0+
    Reported-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9485d5d2318bf6e93bc2771a816aebb1ec80f2c5
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Mon Jan 28 12:51:02 2019 -0800

    KVM: x86: Fix a 4.14 backport regression related to userspace/guest FPU
    
    Upstream commit:
    
        f775b13eedee ("x86,kvm: move qemu/guest FPU switching out to vcpu_run")
    
    introduced a bug, which was later fixed by upstream commit:
    
        5663d8f9bbe4 ("kvm: x86: fix WARN due to uninitialized guest FPU state")
    
    For reasons unknown, both commits were initially passed-over for
    inclusion in the 4.14 stable branch despite being tagged for stable.
    Eventually, someone noticed that the fixup, commit 5663d8f9bbe4, was
    missing from stable[1], and so it was queued up for 4.14 and included in
    release v4.14.79.
    
    Even later, the original buggy patch, commit f775b13eedee, was also
    applied to the 4.14 stable branch.  Through an unlucky coincidence, the
    incorrect ordering did not generate a conflict between the two patches,
    and led to v4.14.94 and later releases containing a spurious call to
    kvm_load_guest_fpu() in kvm_arch_vcpu_ioctl_run().  As a result, KVM may
    reload stale guest FPU state, e.g. after accepting in INIT event.  This
    can manifest as crashes during boot, segfaults, failed checksums and so
    on and so forth.
    
    Remove the unwanted kvm_{load,put}_guest_fpu() calls, i.e. make
    kvm_arch_vcpu_ioctl_run() look like commit 5663d8f9bbe4 was backported
    after commit f775b13eedee.
    
    [1] https://www.spinics.net/lists/stable/msg263931.html
    
    Fixes: 4124a4cff344 ("x86,kvm: move qemu/guest FPU switching out to vcpu_run")
    Cc: stable@vger.kernel.org
    Cc: Sasha Levin <sashal@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Reported-by: Roman Mamedov
    Reported-by: Thomas Lindroth <thomas.lindroth@gmail.com>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Acked-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f2512df6356939c3c27f3364362baacb2ac388e
Author: Jose Abreu <Jose.Abreu@synopsys.com>
Date:   Fri Oct 13 10:58:36 2017 +0100

    net: stmmac: Use correct values in TQS/RQS fields
    
    commit 52a76235d0c4dd259cd0df503afed4757c04ba1d upstream.
    
    Currently we are using all the available fifo size in RQS and
    TQS fields. This will not work correctly in multi-queues IP's
    because total fifo size must be splitted to the enabled queues.
    
    Correct this by computing the available fifo size per queue and
    setting the right value in TQS and RQS fields.
    
    Signed-off-by: Jose Abreu <joabreu@synopsys.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Joao Pinto <jpinto@synopsys.com>
    Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
    Cc: Alexandre Torgue <alexandre.torgue@st.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Niklas Cassel <niklas.cassel@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3ca9064273c3d7bc1654d685d42f41ccf3744d7
Author: Sasha Levin <sashal@kernel.org>
Date:   Mon Jan 28 14:40:49 2019 -0500

    Revert "seccomp: add a selftest for get_metadata"
    
    This reverts commit e65cd9a20343ea90f576c24c38ee85ab6e7d5fec.
    
    Tommi T. Rrantala notes:
    
            PTRACE_SECCOMP_GET_METADATA was only added in 4.16
            (26500475ac1b499d8636ff281311d633909f5d20)
    
            And it's also breaking seccomp_bpf.c compilation for me:
    
            seccomp_bpf.c: In function ‘get_metadata’:
            seccomp_bpf.c:2878:26: error: storage size of ‘md’ isn’t known
              struct seccomp_metadata md;
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dbf8065943de648d04d820d4a7e9407986eb31c6
Author: Milian Wolff <milian.wolff@kdab.com>
Date:   Mon Oct 29 15:16:44 2018 +0100

    perf unwind: Take pgoff into account when reporting elf to libdwfl
    
    [ Upstream commit 1fe627da30331024f453faef04d500079b901107 ]
    
    libdwfl parses an ELF file itself and creates mappings for the
    individual sections. perf on the other hand sees raw mmap events which
    represent individual sections. When we encounter an address pointing
    into a mapping with pgoff != 0, we must take that into account and
    report the file at the non-offset base address.
    
    This fixes unwinding with libdwfl in some cases. E.g. for a file like:
    
    ```
    
    using namespace std;
    
    mutex g_mutex;
    
    double worker()
    {
        lock_guard<mutex> guard(g_mutex);
        uniform_real_distribution<double> uniform(-1E5, 1E5);
        default_random_engine engine;
        double s = 0;
        for (int i = 0; i < 1000; ++i) {
            s += norm(complex<double>(uniform(engine), uniform(engine)));
        }
        cout << s << endl;
        return s;
    }
    
    int main()
    {
        vector<std::future<double>> results;
        for (int i = 0; i < 10000; ++i) {
            results.push_back(async(launch::async, worker));
        }
        return 0;
    }
    ```
    
    Compile it with `g++ -g -O2 -lpthread cpp-locking.cpp  -o cpp-locking`,
    then record it with `perf record --call-graph dwarf -e
    sched:sched_switch`.
    
    When you analyze it with `perf script` and libunwind, you should see:
    
    ```
    cpp-locking 20038 [005] 54830.236589: sched:sched_switch: prev_comm=cpp-locking prev_pid=20038 prev_prio=120 prev_state=T ==> next_comm=swapper/5 next_pid=0 next_prio=120
            ffffffffb166fec5 __sched_text_start+0x545 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb166fec5 __sched_text_start+0x545 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb1670208 schedule+0x28 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb16737cc rwsem_down_read_failed+0xec (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb1665e04 call_rwsem_down_read_failed+0x14 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb1672a03 down_read+0x13 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb106bd85 __do_page_fault+0x445 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb18015f5 page_fault+0x45 (/lib/modules/4.14.78-1-lts/build/vmlinux)
                7f38e4252591 new_heap+0x101 (/usr/lib/libc-2.28.so)
                7f38e4252d0b arena_get2.part.4+0x2fb (/usr/lib/libc-2.28.so)
                7f38e4255b1c tcache_init.part.6+0xec (/usr/lib/libc-2.28.so)
                7f38e42569e5 __GI___libc_malloc+0x115 (inlined)
                7f38e4241790 __GI__IO_file_doallocate+0x90 (inlined)
                7f38e424fbbf __GI__IO_doallocbuf+0x4f (inlined)
                7f38e424ee47 __GI__IO_file_overflow+0x197 (inlined)
                7f38e424df36 _IO_new_file_xsputn+0x116 (inlined)
                7f38e4242bfb __GI__IO_fwrite+0xdb (inlined)
                7f38e463fa6d std::basic_streambuf<char, std::char_traits<char> >::sputn(char const*, long)+0x1cd (inlined)
                7f38e463fa6d std::ostreambuf_iterator<char, std::char_traits<char> >::_M_put(char const*, long)+0x1cd (inlined)
                7f38e463fa6d std::ostreambuf_iterator<char, std::char_traits<char> > std::__write<char>(std::ostreambuf_iterator<char, std::char_traits<char> >, char const*, int)+0x1cd (inlined)
                7f38e463fa6d std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_float<double>(std::ostreambuf_iterator<c>
                7f38e464bd70 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, double) const+0x90 (inl>
                7f38e464bd70 std::ostream& std::ostream::_M_insert<double>(double)+0x90 (/usr/lib/libstdc++.so.6.0.25)
                563b9cb502f7 std::ostream::operator<<(double)+0xb7 (inlined)
                563b9cb502f7 worker()+0xb7 (/ssd/milian/projects/kdab/rnd/hotspot/build/tests/test-clients/cpp-locking/cpp-locking)
                563b9cb506fb double std::__invoke_impl<double, double (*)()>(std::__invoke_other, double (*&&)())+0x2b (inlined)
                563b9cb506fb std::__invoke_result<double (*)()>::type std::__invoke<double (*)()>(double (*&&)())+0x2b (inlined)
                563b9cb506fb decltype (__invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<double (*)()> >::_M_invoke<0ul>(std::_Index_tuple<0ul>)+0x2b (inlined)
                563b9cb506fb std::thread::_Invoker<std::tuple<double (*)()> >::operator()()+0x2b (inlined)
                563b9cb506fb std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<double>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<double (*)()> >, dou>
                563b9cb506fb std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_>
                563b9cb507e8 std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const+0x28 (inlined)
                563b9cb507e8 std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)+0x28 (/ssd/milian/>
                7f38e46d24fe __pthread_once_slow+0xbe (/usr/lib/libpthread-2.28.so)
                563b9cb51149 __gthread_once+0xe9 (inlined)
                563b9cb51149 void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>
                563b9cb51149 std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool)+0xe9 (inlined)
                563b9cb51149 std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<double (*)()> >, double>::_Async_state_impl(std::thread::_Invoker<std::tuple<double (*)()> >&&)::{lambda()#1}::op>
                563b9cb51149 void std::__invoke_impl<void, std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<double (*)()> >, double>::_Async_state_impl(std::thread::_Invoker<std::tuple<double>
                563b9cb51149 std::__invoke_result<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<double (*)()> >, double>::_Async_state_impl(std::thread::_Invoker<std::tuple<double (*)()> >>
                563b9cb51149 decltype (__invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<double (*)()> >, double>::_Async_state_>
                563b9cb51149 std::thread::_Invoker<std::tuple<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<double (*)()> >, double>::_Async_state_impl(std::thread::_Invoker<std::tuple<dou>
                563b9cb51149 std::thread::_State_impl<std::thread::_Invoker<std::tuple<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<double (*)()> >, double>::_Async_state_impl(std::thread>
                7f38e45f0062 execute_native_thread_routine+0x12 (/usr/lib/libstdc++.so.6.0.25)
                7f38e46caa9c start_thread+0xfc (/usr/lib/libpthread-2.28.so)
                7f38e42ccb22 __GI___clone+0x42 (inlined)
    ```
    
    Before this patch, using libdwfl, you would see:
    
    ```
    cpp-locking 20038 [005] 54830.236589: sched:sched_switch: prev_comm=cpp-locking prev_pid=20038 prev_prio=120 prev_state=T ==> next_comm=swapper/5 next_pid=0 next_prio=120
            ffffffffb166fec5 __sched_text_start+0x545 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb166fec5 __sched_text_start+0x545 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb1670208 schedule+0x28 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb16737cc rwsem_down_read_failed+0xec (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb1665e04 call_rwsem_down_read_failed+0x14 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb1672a03 down_read+0x13 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb106bd85 __do_page_fault+0x445 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb18015f5 page_fault+0x45 (/lib/modules/4.14.78-1-lts/build/vmlinux)
                7f38e4252591 new_heap+0x101 (/usr/lib/libc-2.28.so)
            a041161e77950c5c [unknown] ([unknown])
    ```
    
    With this patch applied, we get a bit further in unwinding:
    
    ```
    cpp-locking 20038 [005] 54830.236589: sched:sched_switch: prev_comm=cpp-locking prev_pid=20038 prev_prio=120 prev_state=T ==> next_comm=swapper/5 next_pid=0 next_prio=120
            ffffffffb166fec5 __sched_text_start+0x545 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb166fec5 __sched_text_start+0x545 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb1670208 schedule+0x28 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb16737cc rwsem_down_read_failed+0xec (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb1665e04 call_rwsem_down_read_failed+0x14 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb1672a03 down_read+0x13 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb106bd85 __do_page_fault+0x445 (/lib/modules/4.14.78-1-lts/build/vmlinux)
            ffffffffb18015f5 page_fault+0x45 (/lib/modules/4.14.78-1-lts/build/vmlinux)
                7f38e4252591 new_heap+0x101 (/usr/lib/libc-2.28.so)
                7f38e4252d0b arena_get2.part.4+0x2fb (/usr/lib/libc-2.28.so)
                7f38e4255b1c tcache_init.part.6+0xec (/usr/lib/libc-2.28.so)
                7f38e42569e5 __GI___libc_malloc+0x115 (inlined)
                7f38e4241790 __GI__IO_file_doallocate+0x90 (inlined)
                7f38e424fbbf __GI__IO_doallocbuf+0x4f (inlined)
                7f38e424ee47 __GI__IO_file_overflow+0x197 (inlined)
                7f38e424df36 _IO_new_file_xsputn+0x116 (inlined)
                7f38e4242bfb __GI__IO_fwrite+0xdb (inlined)
                7f38e463fa6d std::basic_streambuf<char, std::char_traits<char> >::sputn(char const*, long)+0x1cd (inlined)
                7f38e463fa6d std::ostreambuf_iterator<char, std::char_traits<char> >::_M_put(char const*, long)+0x1cd (inlined)
                7f38e463fa6d std::ostreambuf_iterator<char, std::char_traits<char> > std::__write<char>(std::ostreambuf_iterator<char, std::char_traits<char> >, char const*, int)+0x1cd (inlined)
                7f38e463fa6d std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_float<double>(std::ostreambuf_iterator<c>
                7f38e464bd70 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, double) const+0x90 (inl>
                7f38e464bd70 std::ostream& std::ostream::_M_insert<double>(double)+0x90 (/usr/lib/libstdc++.so.6.0.25)
                563b9cb502f7 std::ostream::operator<<(double)+0xb7 (inlined)
                563b9cb502f7 worker()+0xb7 (/ssd/milian/projects/kdab/rnd/hotspot/build/tests/test-clients/cpp-locking/cpp-locking)
            6eab825c1ee3e4ff [unknown] ([unknown])
    ```
    
    Note that the backtrace is still stopping too early, when compared to
    the nice results obtained via libunwind. It's unclear so far what the
    reason for that is.
    
    Committer note:
    
    Further comment by Milian on the thread started on the Link: tag below:
    
     ---
    The remaining issue is due to a bug in elfutils:
    
    https://sourceware.org/ml/elfutils-devel/2018-q4/msg00089.html
    
    With both patches applied, libunwind and elfutils produce the same output for
    the above scenario.
     ---
    
    Signed-off-by: Milian Wolff <milian.wolff@kdab.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Link: http://lkml.kernel.org/r/20181029141644.3907-1-milian.wolff@kdab.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9401f4e6e99c262b7b43f4561e4986abdc9ac3e4
Author: Martin Vuille <jpmv27@aim.com>
Date:   Sun Feb 11 16:24:20 2018 -0500

    perf unwind: Unwind with libdw doesn't take symfs into account
    
    [ Upstream commit 3d20c6246690219881786de10d2dda93f616d0ac ]
    
    Path passed to libdw for unwinding doesn't include symfs path
    if specified, so unwinding fails because ELF file is not found.
    
    Similar to unwinding with libunwind, pass symsrc_filename instead
    of long_name. If there is no symsrc_filename, fallback to long_name.
    
    Signed-off-by: Martin Vuille <jpmv27@aim.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/20180211212420.18388-1-jpmv27@aim.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0b926c828ea7cbb82e4ee888ad3bc694ec930796
Author: Nicolas Pitre <nicolas.pitre@linaro.org>
Date:   Tue Jan 8 22:55:01 2019 -0500

    vt: invoke notifier on screen size change
    
    commit 0c9b1965faddad7534b6974b5b36c4ad37998f8e upstream.
    
    User space using poll() on /dev/vcs devices are not awaken when a
    screen size change occurs. Let's fix that.
    
    Signed-off-by: Nicolas Pitre <nico@linaro.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7126858fc71ccee69220e06e2f97190de85db67
Author: Oliver Hartkopp <socketcan@hartkopp.net>
Date:   Sun Jan 13 19:31:43 2019 +0100

    can: bcm: check timer values before ktime conversion
    
    commit 93171ba6f1deffd82f381d36cb13177872d023f6 upstream.
    
    Kyungtae Kim detected a potential integer overflow in bcm_[rx|tx]_setup()
    when the conversion into ktime multiplies the given value with NSEC_PER_USEC
    (1000).
    
    Reference: https://marc.info/?l=linux-can&m=154732118819828&w=2
    
    Add a check for the given tv_usec, so that the value stays below one second.
    Additionally limit the tv_sec value to a reasonable value for CAN related
    use-cases of 400 days and ensure all values to be positive.
    
    Reported-by: Kyungtae Kim <kt0755@gmail.com>
    Tested-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Cc: linux-stable <stable@vger.kernel.org> # >= 2.6.26
    Tested-by: Kyungtae Kim <kt0755@gmail.com>
    Acked-by: Andre Naujoks <nautsch2@gmail.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8849347d9cdacbd845ff0a5add3203f4eb599433
Author: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
Date:   Wed Dec 19 19:39:58 2018 +0100

    can: dev: __can_get_echo_skb(): fix bogous check for non-existing skb by removing it
    
    commit 7b12c8189a3dc50638e7d53714c88007268d47ef upstream.
    
    This patch revert commit 7da11ba5c506
    ("can: dev: __can_get_echo_skb(): print error message, if trying to echo non existing skb")
    
    After introduction of this change we encountered following new error
    message on various i.MX plattforms (flexcan):
    
    | flexcan 53fc8000.can can0: __can_get_echo_skb: BUG! Trying to echo non
    | existing skb: can_priv::echo_skb[0]
    
    The introduction of the message was a mistake because
    priv->echo_skb[idx] = NULL is a perfectly valid in following case: If
    CAN_RAW_LOOPBACK is disabled (setsockopt) in applications, the pkt_type
    of the tx skb's given to can_put_echo_skb is set to PACKET_LOOPBACK. In
    this case can_put_echo_skb will not set priv->echo_skb[idx]. It is
    therefore kept NULL.
    
    As additional argument for revert: The order of check and usage of idx
    was changed. idx is used to access an array element before checking it's
    boundaries.
    
    Signed-off-by: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
    Fixes: 7da11ba5c506 ("can: dev: __can_get_echo_skb(): print error message, if trying to echo non existing skb")
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 711369e62e624065ffd88ddcced84dcdce588099
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Fri Jan 18 14:08:59 2019 +0000

    irqchip/gic-v3-its: Align PCI Multi-MSI allocation on their size
    
    commit 8208d1708b88b412ca97f50a6d951242c88cbbac upstream.
    
    The way we allocate events works fine in most cases, except
    when multiple PCI devices share an ITS-visible DevID, and that
    one of them is trying to use MultiMSI allocation.
    
    In that case, our allocation is not guaranteed to be zero-based
    anymore, and we have to make sure we allocate it on a boundary
    that is compatible with the PCI Multi-MSI constraints.
    
    Fix this by allocating the full region upfront instead of iterating
    over the number of MSIs. MSI-X are always allocated one by one,
    so this shouldn't change anything on that front.
    
    Fixes: b48ac83d6bbc2 ("irqchip: GICv3: ITS: MSI support")
    Cc: stable@vger.kernel.org
    Reported-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5d2a2cf774b1b34704b07a79df96f43b1f6693a
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Jan 11 14:33:16 2019 +0100

    posix-cpu-timers: Unbreak timer rearming
    
    commit 93ad0fc088c5b4631f796c995bdd27a082ef33a6 upstream.
    
    The recent commit which prevented a division by 0 issue in the alarm timer
    code broke posix CPU timers as an unwanted side effect.
    
    The reason is that the common rearm code checks for timer->it_interval
    being 0 now. What went unnoticed is that the posix cpu timer setup does not
    initialize timer->it_interval as it stores the interval in CPU timer
    specific storage. The reason for the separate storage is historical as the
    posix CPU timers always had a 64bit nanoseconds representation internally
    while timer->it_interval is type ktime_t which used to be a modified
    timespec representation on 32bit machines.
    
    Instead of reverting the offending commit and fixing the alarmtimer issue
    in the alarmtimer code, store the interval in timer->it_interval at CPU
    timer setup time so the common code check works. This also repairs the
    existing inconistency of the posix CPU timer code which kept a single shot
    timer armed despite of the interval being 0.
    
    The separate storage can be removed in mainline, but that needs to be a
    separate commit as the current one has to be backported to stable kernels.
    
    Fixes: 0e334db6bb4b ("posix-timers: Fix division by zero bug")
    Reported-by: H.J. Lu <hjl.tools@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190111133500.840117406@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0aab0f76606a29a49f89142a07ab412f5ae5658
Author: Daniel Drake <drake@endlessm.com>
Date:   Mon Jan 7 11:40:24 2019 +0800

    x86/kaslr: Fix incorrect i8254 outb() parameters
    
    commit 7e6fc2f50a3197d0e82d1c0e86282976c9e6c8a4 upstream.
    
    The outb() function takes parameters value and port, in that order.  Fix
    the parameters used in the kalsr i8254 fallback code.
    
    Fixes: 5bfce5ef55cb ("x86, kaslr: Provide randomness functions")
    Signed-off-by: Daniel Drake <drake@endlessm.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Cc: linux@endlessm.com
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190107034024.15005-1-drake@endlessm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce20aba74c69084c1f87725b68a507735733c798
Author: Dave Hansen <dave.hansen@linux.intel.com>
Date:   Wed Jan 2 13:56:57 2019 -0800

    x86/selftests/pkeys: Fork() to check for state being preserved
    
    commit e1812933b17be7814f51b6c310c5d1ced7a9a5f5 upstream.
    
    There was a bug where the per-mm pkey state was not being preserved across
    fork() in the child.  fork() is performed in the pkey selftests, but all of
    the pkey activity is performed in the parent.  The child does not perform
    any actions sensitive to pkey state.
    
    To make the test more sensitive to these kinds of bugs, add a fork() where
    the parent exits, and execution continues in the child.
    
    To achieve this let the key exhaustion test not terminate at the first
    allocation failure and fork after 2*NR_PKEYS loops and continue in the
    child.
    
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Cc: peterz@infradead.org
    Cc: mpe@ellerman.id.au
    Cc: will.deacon@arm.com
    Cc: luto@kernel.org
    Cc: jroedel@suse.de
    Cc: stable@vger.kernel.org
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Joerg Roedel <jroedel@suse.de>
    Link: https://lkml.kernel.org/r/20190102215657.585704B7@viggo.jf.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92296f7ddac6c3bfee6fb952b6f776291ef4df48
Author: Dave Hansen <dave.hansen@linux.intel.com>
Date:   Wed Jan 2 13:56:55 2019 -0800

    x86/pkeys: Properly copy pkey state at fork()
    
    commit a31e184e4f69965c99c04cc5eb8a4920e0c63737 upstream.
    
    Memory protection key behavior should be the same in a child as it was
    in the parent before a fork.  But, there is a bug that resets the
    state in the child at fork instead of preserving it.
    
    The creation of new mm's is a bit convoluted.  At fork(), the code
    does:
    
      1. memcpy() the parent mm to initialize child
      2. mm_init() to initalize some select stuff stuff
      3. dup_mmap() to create true copies that memcpy() did not do right
    
    For pkeys two bits of state need to be preserved across a fork:
    'execute_only_pkey' and 'pkey_allocation_map'.
    
    Those are preserved by the memcpy(), but mm_init() invokes
    init_new_context() which overwrites 'execute_only_pkey' and
    'pkey_allocation_map' with "new" values.
    
    The author of the code erroneously believed that init_new_context is *only*
    called at execve()-time.  But, alas, init_new_context() is used at execve()
    and fork().
    
    The result is that, after a fork(), the child's pkey state ends up looking
    like it does after an execve(), which is totally wrong.  pkeys that are
    already allocated can be allocated again, for instance.
    
    To fix this, add code called by dup_mmap() to copy the pkey state from
    parent to child explicitly.  Also add a comment above init_new_context() to
    make it more clear to the next poor sod what this code is used for.
    
    Fixes: e8c24d3a23a ("x86/pkeys: Allocation/free syscalls")
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Cc: peterz@infradead.org
    Cc: mpe@ellerman.id.au
    Cc: will.deacon@arm.com
    Cc: luto@kernel.org
    Cc: jroedel@suse.de
    Cc: stable@vger.kernel.org
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Joerg Roedel <jroedel@suse.de>
    Link: https://lkml.kernel.org/r/20190102215655.7A69518C@viggo.jf.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9728154f9d780cc6dc538ef277314c46834db4e
Author: Alexander Popov <alex.popov@linux.com>
Date:   Mon Jan 21 15:48:40 2019 +0300

    KVM: x86: Fix single-step debugging
    
    commit 5cc244a20b86090c087073c124284381cdf47234 upstream.
    
    The single-step debugging of KVM guests on x86 is broken: if we run
    gdb 'stepi' command at the breakpoint when the guest interrupts are
    enabled, RIP always jumps to native_apic_mem_write(). Then other
    nasty effects follow.
    
    Long investigation showed that on Jun 7, 2017 the
    commit c8401dda2f0a00cd25c0 ("KVM: x86: fix singlestepping over syscall")
    introduced the kvm_run.debug corruption: kvm_vcpu_do_singlestep() can
    be called without X86_EFLAGS_TF set.
    
    Let's fix it. Please consider that for -stable.
    
    Signed-off-by: Alexander Popov <alex.popov@linux.com>
    Cc: stable@vger.kernel.org
    Fixes: c8401dda2f0a00cd25c0 ("KVM: x86: fix singlestepping over syscall")
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06fc0dbec672bc118b24c8ce92314a5931a0796f
Author: Milan Broz <gmazyland@gmail.com>
Date:   Wed Jan 9 11:57:14 2019 +0100

    dm crypt: fix parsing of extended IV arguments
    
    commit 1856b9f7bcc8e9bdcccc360aabb56fbd4dd6c565 upstream.
    
    The dm-crypt cipher specification in a mapping table is defined as:
      cipher[:keycount]-chainmode-ivmode[:ivopts]
    or (new crypt API format):
      capi:cipher_api_spec-ivmode[:ivopts]
    
    For ESSIV, the parameter includes hash specification, for example:
    aes-cbc-essiv:sha256
    
    The implementation expected that additional IV option to never include
    another dash '-' character.
    
    But, with SHA3, there are names like sha3-256; so the mapping table
    parser fails:
    
    dmsetup create test --table "0 8 crypt aes-cbc-essiv:sha3-256 9c1185a5c5e9fc54612808977ee8f5b9e 0 /dev/sdb 0"
      or (new crypt API format)
    dmsetup create test --table "0 8 crypt capi:cbc(aes)-essiv:sha3-256 9c1185a5c5e9fc54612808977ee8f5b9e 0 /dev/sdb 0"
    
      device-mapper: crypt: Ignoring unexpected additional cipher options
      device-mapper: table: 253:0: crypt: Error creating IV
      device-mapper: ioctl: error adding target to table
    
    Fix the dm-crypt constructor to ignore additional dash in IV options and
    also remove a bogus warning (that is ignored anyway).
    
    Cc: stable@vger.kernel.org # 4.12+
    Signed-off-by: Milan Broz <gmazyland@gmail.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 294710ddfc480aee277325cee8b54afa0c514e43
Author: Joe Thornber <ejt@redhat.com>
Date:   Tue Jan 15 13:27:01 2019 -0500

    dm thin: fix passdown_double_checking_shared_status()
    
    commit d445bd9cec1a850c2100fcf53684c13b3fd934f2 upstream.
    
    Commit 00a0ea33b495 ("dm thin: do not queue freed thin mapping for next
    stage processing") changed process_prepared_discard_passdown_pt1() to
    increment all the blocks being discarded until after the passdown had
    completed to avoid them being prematurely reused.
    
    IO issued to a thin device that breaks sharing with a snapshot, followed
    by a discard issued to snapshot(s) that previously shared the block(s),
    results in passdown_double_checking_shared_status() being called to
    iterate through the blocks double checking their reference count is zero
    and issuing the passdown if so.  So a side effect of commit 00a0ea33b495
    is passdown_double_checking_shared_status() was broken.
    
    Fix this by checking if the block reference count is greater than 1.
    Also, rename dm_pool_block_is_used() to dm_pool_block_is_shared().
    
    Fixes: 00a0ea33b495 ("dm thin: do not queue freed thin mapping for next stage processing")
    Cc: stable@vger.kernel.org # 4.9+
    Reported-by: ryan.p.norwood@gmail.com
    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 1c285c34a509ddfc83be425d8305a6d94d502208
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Sat Jan 19 10:55:04 2019 -0800

    acpi/nfit: Fix command-supported detection
    
    commit 11189c1089da413aa4b5fd6be4c4d47c78968819 upstream.
    
    The _DSM function number validation only happens to succeed when the
    generic Linux command number translation corresponds with a
    DSM-family-specific function number. This breaks NVDIMM-N
    implementations that correctly implement _LSR, _LSW, and _LSI, but do
    not happen to publish support for DSM function numbers 4, 5, and 6.
    
    Recall that the support for _LS{I,R,W} family of methods results in the
    DIMM being marked as supporting those command numbers at
    acpi_nfit_register_dimms() time. The DSM function mask is only used for
    ND_CMD_CALL support of non-NVDIMM_FAMILY_INTEL devices.
    
    Fixes: 31eca76ba2fc ("nfit, libnvdimm: limited/whitelisted dimm command...")
    Cc: <stable@vger.kernel.org>
    Link: https://github.com/pmem/ndctl/issues/78
    Reported-by: Sujith Pandel <sujith_pandel@dell.com>
    Tested-by: Sujith Pandel <sujith_pandel@dell.com>
    Reviewed-by: Vishal Verma <vishal.l.verma@intel.com>
    Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d93b82587a9463130f641d879e4fb5e636720d5
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Mon Jan 14 14:07:19 2019 -0800

    acpi/nfit: Block function zero DSMs
    
    commit 5e9e38d0db1d29efed1dd4cf9a70115d33521be7 upstream.
    
    In preparation for using function number 0 as an error value, prevent it
    from being considered a valid function value by acpi_nfit_ctl().
    
    Cc: <stable@vger.kernel.org>
    Cc: stuart hayes <stuart.w.hayes@gmail.com>
    Fixes: e02fb7264d8a ("nfit: add Microsoft NVDIMM DSM command set...")
    Reported-by: Jeff Moyer <jmoyer@redhat.com>
    Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28edadd147bfed92e3e16ed519ef098276935d94
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Mon Jan 14 13:54:55 2019 -0800

    Input: uinput - fix undefined behavior in uinput_validate_absinfo()
    
    commit d77651a227f8920dd7ec179b84e400cce844eeb3 upstream.
    
    An integer overflow may arise in uinput_validate_absinfo() if "max - min"
    can't be represented by an "int". We should check for overflow before
    trying to use the result.
    
    Reported-by: Kyungtae Kim <kt0755@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8c3df0641bcf9eb4e8ad4048fdf9ea575c79928
Author: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Date:   Tue May 8 00:36:27 2018 +0200

    compiler.h: enable builtin overflow checkers and add fallback code
    
    commit f0907827a8a9152aedac2833ed1b674a7b2a44f2 upstream.
    
    This adds wrappers for the __builtin overflow checkers present in gcc
    5.1+ as well as fallback implementations for earlier compilers. It's not
    that easy to implement the fully generic __builtin_X_overflow(T1 a, T2
    b, T3 *d) in macros, so the fallback code assumes that T1, T2 and T3 are
    the same. We obviously don't want the wrappers to have different
    semantics depending on $GCC_VERSION, so we also insist on that even when
    using the builtins.
    
    There are a few problems with the 'a+b < a' idiom for checking for
    overflow: For signed types, it relies on undefined behaviour and is
    not actually complete (it doesn't check underflow;
    e.g. INT_MIN+INT_MIN == 0 isn't caught). Due to type promotion it
    is wrong for all types (signed and unsigned) narrower than
    int. Similarly, when a and b does not have the same type, there are
    subtle cases like
    
      u32 a;
    
      if (a + sizeof(foo) < a)
        return -EOVERFLOW;
      a += sizeof(foo);
    
    where the test is always false on 64 bit platforms. Add to that that it
    is not always possible to determine the types involved at a glance.
    
    The new overflow.h is somewhat bulky, but that's mostly a result of
    trying to be type-generic, complete (e.g. catching not only overflow
    but also signed underflow) and not relying on undefined behaviour.
    
    Linus is of course right [1] that for unsigned subtraction a-b, the
    right way to check for overflow (underflow) is "b > a" and not
    "__builtin_sub_overflow(a, b, &d)", but that's just one out of six cases
    covered here, and included mostly for completeness.
    
    So is it worth it? I think it is, if nothing else for the documentation
    value of seeing
    
      if (check_add_overflow(a, b, &d))
        return -EGOAWAY;
      do_stuff_with(d);
    
    instead of the open-coded (and possibly wrong and/or incomplete and/or
    UBsan-tickling)
    
      if (a+b < a)
        return -EGOAWAY;
      do_stuff_with(a+b);
    
    While gcc does recognize the 'a+b < a' idiom for testing unsigned add
    overflow, it doesn't do nearly as good for unsigned multiplication
    (there's also no single well-established idiom). So using
    check_mul_overflow in kcalloc and friends may also make gcc generate
    slightly better code.
    
    [1] https://lkml.org/lkml/2015/11/2/658
    
    Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2b63cc459ff1d65bca3aaed5b069a09319d592a
Author: Tom Panfil <tom@steelseries.com>
Date:   Fri Jan 11 17:49:40 2019 -0800

    Input: xpad - add support for SteelSeries Stratus Duo
    
    commit fe2bfd0d40c935763812973ce15f5764f1c12833 upstream.
    
    Add support for the SteelSeries Stratus Duo, a wireless Xbox 360
    controller. The Stratus Duo ships with a USB dongle to enable wireless
    connectivity, but it can also function as a wired controller by connecting
    it directly to a PC via USB, hence the need for two USD PIDs. 0x1430 is the
    dongle, and 0x1431 is the controller.
    
    Signed-off-by: Tom Panfil <tom@steelseries.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2cffcebe17439fab6d2d54d754054cd3da547f09
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Fri Jan 18 17:25:36 2019 -0800

    CIFS: Do not reconnect TCP session in add_credits()
    
    commit ef68e831840c40c7d01b328b3c0f5d8c4796c232 upstream.
    
    When executing add_credits() we currently call cifs_reconnect()
    if the number of credits is zero and there are no requests in
    flight. In this case we may call cifs_reconnect() recursively
    twice and cause memory corruption given the following sequence
    of functions:
    
    mid1.callback() -> add_credits() -> cifs_reconnect() ->
    -> mid2.callback() -> add_credits() -> cifs_reconnect().
    
    Fix this by avoiding to call cifs_reconnect() in add_credits()
    and checking for zero credits in the demultiplex thread.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c69ba8b1453eb1c9f77536433616dab0a147c65
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Fri Jan 18 15:38:11 2019 -0800

    CIFS: Fix credit calculation for encrypted reads with errors
    
    commit ec678eae746dd25766a61c4095e2b649d3b20b09 upstream.
    
    We do need to account for credits received in error responses
    to read requests on encrypted sessions.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 482592b71d257f4e674505af72d8e23405a64478
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Thu Jan 17 15:29:26 2019 -0800

    CIFS: Fix credits calculations for reads with errors
    
    commit 8004c78c68e894e4fd5ac3c22cc22eb7dc24cabc upstream.
    
    Currently we mark MID as malformed if we get an error from server
    in a read response. This leads to not properly processing credits
    in the readv callback. Fix this by marking such a response as
    normal received response and process it appropriately.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a9c970fabb704846e527fdd4eeca0cab3a91137
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Thu Jan 17 08:21:24 2019 -0800

    CIFS: Fix possible hang during async MTU reads and writes
    
    commit acc58d0bab55a50e02c25f00bd6a210ee121595f upstream.
    
    When doing MTU i/o we need to leave some credits for
    possible reopen requests and other operations happening
    in parallel. Currently we leave 1 credit which is not
    enough even for reopen only: we need at least 2 credits
    if durable handle reconnect fails. Also there may be
    other operations at the same time including compounding
    ones which require 3 credits at a time each. Fix this
    by leaving 8 credits which is big enough to cover most
    scenarios.
    
    Was able to reproduce this when server was configured
    to give out fewer credits than usual.
    
    The proper fix would be to reconnect a file handle first
    and then obtain credits for an MTU request but this leads
    to bigger code changes and should happen in other patches.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be0cb9e226b7c594070eb64ef8c18f3793f63976
Author: Dexuan Cui <decui@microsoft.com>
Date:   Mon Dec 17 20:16:09 2018 +0000

    Drivers: hv: vmbus: Check for ring when getting debug info
    
    commit ba50bf1ce9a51fc97db58b96d01306aa70bc3979 upstream.
    
    fc96df16a1ce is good and can already fix the "return stack garbage" issue,
    but let's also improve hv_ringbuffer_get_debuginfo(), which would silently
    return stack garbage, if people forget to check channel->state or
    ring_info->ring_buffer, when using the function in the future.
    
    Having an error check in the function would eliminate the potential risk.
    
    Add a Fixes tag to indicate the patch depdendency.
    
    Fixes: fc96df16a1ce ("Drivers: hv: vmbus: Return -EINVAL for the sys files for unopened channels")
    Cc: stable@vger.kernel.org
    Cc: K. Y. Srinivasan <kys@microsoft.com>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a28dc8a5686a1641934f66b2a09c68a804810fe5
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Fri Jan 4 15:19:42 2019 +0100

    hv_balloon: avoid touching uninitialized struct page during tail onlining
    
    commit da8ced360ca8ad72d8f41f5c8fcd5b0e63e1555f upstream.
    
    Hyper-V memory hotplug protocol has 2M granularity and in Linux x86 we use
    128M. To deal with it we implement partial section onlining by registering
    custom page onlining callback (hv_online_page()). Later, when more memory
    arrives we try to online the 'tail' (see hv_bring_pgs_online()).
    
    It was found that in some cases this 'tail' onlining causes issues:
    
     BUG: Bad page state in process kworker/0:2  pfn:109e3a
     page:ffffe08344278e80 count:0 mapcount:1 mapping:0000000000000000 index:0x0
     flags: 0xfffff80000000()
     raw: 000fffff80000000 dead000000000100 dead000000000200 0000000000000000
     raw: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
     page dumped because: nonzero mapcount
     ...
     Workqueue: events hot_add_req [hv_balloon]
     Call Trace:
      dump_stack+0x5c/0x80
      bad_page.cold.112+0x7f/0xb2
      free_pcppages_bulk+0x4b8/0x690
      free_unref_page+0x54/0x70
      hv_page_online_one+0x5c/0x80 [hv_balloon]
      hot_add_req.cold.24+0x182/0x835 [hv_balloon]
      ...
    
    Turns out that we now have deferred struct page initialization for memory
    hotplug so e.g. memory_block_action() in drivers/base/memory.c does
    pages_correctly_probed() check and in that check it avoids inspecting
    struct pages and checks sections instead. But in Hyper-V balloon driver we
    do PageReserved(pfn_to_page()) check and this is now wrong.
    
    Switch to checking online_section_nr() instead.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Cc: stable@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9231608a7da07f115c55a3d05eca60bcf45f52b
Author: Paul Fulghum <paulkf@microgate.com>
Date:   Tue Jan 1 12:28:53 2019 -0800

    tty/n_hdlc: fix __might_sleep warning
    
    commit fc01d8c61ce02c034e67378cd3e645734bc18c8c upstream.
    
    Fix __might_sleep warning[1] in tty/n_hdlc.c read due to copy_to_user
    call while current is TASK_INTERRUPTIBLE.  This is a false positive
    since the code path does not depend on current state remaining
    TASK_INTERRUPTIBLE.  The loop breaks out and sets TASK_RUNNING after
    calling copy_to_user.
    
    This patch supresses the warning by setting TASK_RUNNING before calling
    copy_to_user.
    
    [1] https://syzkaller.appspot.com/bug?id=17d5de7f1fcab794cb8c40032f893f52de899324
    
    Signed-off-by: Paul Fulghum <paulkf@microgate.com>
    Reported-by: syzbot <syzbot+c244af085a0159d22879@syzkaller.appspotmail.com>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be9497af163acd7587920417dfb35ec7e9acda3a
Author: Samir Virmani <samir@embedur.com>
Date:   Wed Jan 16 10:28:07 2019 -0800

    uart: Fix crash in uart_write and uart_put_char
    
    commit aff9cf5955185d1f183227e46c5f8673fa483813 upstream.
    
    We were experiencing a crash similar to the one reported as part of
    commit:a5ba1d95e46e ("uart: fix race between uart_put_char() and
    uart_shutdown()") in our testbed as well. We continue to observe the same
    crash after integrating the commit a5ba1d95e46e ("uart: fix race between
    uart_put_char() and uart_shutdown()")
    
    On reviewing the change, the port lock should be taken prior to checking for
    if (!circ->buf) in fn. __uart_put_char and other fns. that update the buffer
    uart_state->xmit.
    
    Traceback:
    
    [11/27/2018 06:24:32.4870] Unable to handle kernel NULL pointer dereference
                               at virtual address 0000003b
    
    [11/27/2018 06:24:32.4950] PC is at memcpy+0x48/0x180
    [11/27/2018 06:24:32.4950] LR is at uart_write+0x74/0x120
    [11/27/2018 06:24:32.4950] pc : [<ffffffc0002e6808>]
                               lr : [<ffffffc0003747cc>] pstate: 000001c5
    [11/27/2018 06:24:32.4950] sp : ffffffc076433d30
    [11/27/2018 06:24:32.4950] x29: ffffffc076433d30 x28: 0000000000000140
    [11/27/2018 06:24:32.4950] x27: ffffffc0009b9d5e x26: ffffffc07ce36580
    [11/27/2018 06:24:32.4950] x25: 0000000000000000 x24: 0000000000000140
    [11/27/2018 06:24:32.4950] x23: ffffffc000891200 x22: ffffffc01fc34000
    [11/27/2018 06:24:32.4950] x21: 0000000000000fff x20: 0000000000000076
    [11/27/2018 06:24:32.4950] x19: 0000000000000076 x18: 0000000000000000
    [11/27/2018 06:24:32.4950] x17: 000000000047cf08 x16: ffffffc000099e68
    [11/27/2018 06:24:32.4950] x15: 0000000000000018 x14: 776d726966205948
    [11/27/2018 06:24:32.4950] x13: 50203a6c6974755f x12: 74647075205d3333
    [11/27/2018 06:24:32.4950] x11: 3a35323a36203831 x10: 30322f37322f3131
    [11/27/2018 06:24:32.4950] x9 : 5b205d303638342e x8 : 746164206f742070
    [11/27/2018 06:24:32.4950] x7 : 7520736920657261 x6 : 000000000000003b
    [11/27/2018 06:24:32.4950] x5 : 000000000000817a x4 : 0000000000000008
    [11/27/2018 06:24:32.4950] x3 : 2f37322f31312a5b x2 : 000000000000006e
    [11/27/2018 06:24:32.4950] x1 : ffffffc0009b9cf0 x0 : 000000000000003b
    
    [11/27/2018 06:24:32.4950] CPU2: stopping
    [11/27/2018 06:24:32.4950] CPU: 2 PID: 0 Comm: swapper/2 Tainted: P      D    O    4.1.51 #3
    [11/27/2018 06:24:32.4950] Hardware name: Broadcom-v8A (DT)
    [11/27/2018 06:24:32.4950] Call trace:
    [11/27/2018 06:24:32.4950] [<ffffffc0000883b8>] dump_backtrace+0x0/0x150
    [11/27/2018 06:24:32.4950] [<ffffffc00008851c>] show_stack+0x14/0x20
    [11/27/2018 06:24:32.4950] [<ffffffc0005ee810>] dump_stack+0x90/0xb0
    [11/27/2018 06:24:32.4950] [<ffffffc00008e844>] handle_IPI+0x18c/0x1a0
    [11/27/2018 06:24:32.4950] [<ffffffc000080c68>] gic_handle_irq+0x88/0x90
    
    Fixes: a5ba1d95e46e ("uart: fix race between uart_put_char() and uart_shutdown()")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Samir Virmani <samir@embedur.com>
    Acked-by: Tycho Andersen <tycho@tycho.ws>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a358f0becce04eed99eb50111f4cc22b25792de8
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Jan 20 10:46:58 2019 +0100

    tty: Handle problem if line discipline does not have receive_buf
    
    commit 27cfb3a53be46a54ec5e0bd04e51995b74c90343 upstream.
    
    Some tty line disciplines do not have a receive buf callback, so
    properly check for that before calling it.  If they do not have this
    callback, just eat the character quietly, as we can't fail this call.
    
    Reported-by: Jann Horn <jannh@google.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e405657e13a69c260c532f7ecd02e975d49e6fc
Author: Michael Straube <straube.linux@gmail.com>
Date:   Mon Jan 7 18:28:58 2019 +0100

    staging: rtl8188eu: Add device code for D-Link DWA-121 rev B1
    
    commit 5f74a8cbb38d10615ed46bc3e37d9a4c9af8045a upstream.
    
    This device was added to the stand-alone driver on github.
    Add it to the staging driver as well.
    
    Link: https://github.com/lwfinger/rtl8188eu/commit/a0619a07cd1e
    Signed-off-by: Michael Straube <straube.linux@gmail.com>
    Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4be809db216f72010396bf01a7cd7b7ee835dfd1
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Wed Jan 9 13:02:36 2019 -0600

    char/mwave: fix potential Spectre v1 vulnerability
    
    commit 701956d4018e5d5438570e39e8bda47edd32c489 upstream.
    
    ipcnum is indirectly controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    drivers/char/mwave/mwavedd.c:299 mwave_ioctl() warn: potential spectre issue 'pDrvData->IPCs' [w] (local cap)
    
    Fix this by sanitizing ipcnum before using it to index pDrvData->IPCs.
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 826ea4c10833b734b9a403b2bd1d857a58cf8fb3
Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Date:   Wed Jan 9 13:00:03 2019 +0100

    s390/smp: fix CPU hotplug deadlock with CPU rescan
    
    commit b7cb707c373094ce4008d4a6ac9b6b366ec52da5 upstream.
    
    smp_rescan_cpus() is called without the device_hotplug_lock, which can lead
    to a dedlock when a new CPU is found and immediately set online by a udev
    rule.
    
    This was observed on an older kernel version, where the cpu_hotplug_begin()
    loop was still present, and it resulted in hanging chcpu and systemd-udev
    processes. This specific deadlock will not show on current kernels. However,
    there may be other possible deadlocks, and since smp_rescan_cpus() can still
    trigger a CPU hotplug operation, the device_hotplug_lock should be held.
    
    For reference, this was the deadlock with the old cpu_hotplug_begin() loop:
    
            chcpu (rescan)                       systemd-udevd
    
     echo 1 > /sys/../rescan
     -> smp_rescan_cpus()
     -> (*) get_online_cpus()
        (increases refcount)
     -> smp_add_present_cpu()
        (new CPU found)
     -> register_cpu()
     -> device_add()
     -> udev "add" event triggered -----------> udev rule sets CPU online
                                             -> echo 1 > /sys/.../online
                                             -> lock_device_hotplug_sysfs()
                                                (this is missing in rescan path)
                                             -> device_online()
                                             -> (**) device_lock(new CPU dev)
                                             -> cpu_up()
                                             -> cpu_hotplug_begin()
                                                (loops until refcount == 0)
                                                -> deadlock with (*)
     -> bus_probe_device()
     -> device_attach()
     -> device_lock(new CPU dev)
        -> deadlock with (**)
    
    Fix this by taking the device_hotplug_lock in the CPU rescan path.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bd9759a4a4e264988dd54864a54710d5cf98a3b6
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Fri Nov 9 09:21:47 2018 +0100

    s390/early: improve machine detection
    
    commit 03aa047ef2db4985e444af6ee1c1dd084ad9fb4c upstream.
    
    Right now the early machine detection code check stsi 3.2.2 for "KVM"
    and set MACHINE_IS_VM if this is different. As the console detection
    uses diagnose 8 if MACHINE_IS_VM returns true this will crash Linux
    early for any non z/VM system that sets a different value than KVM.
    So instead of assuming z/VM, do not set any of MACHINE_IS_LPAR,
    MACHINE_IS_VM, or MACHINE_IS_KVM.
    
    CC: stable@vger.kernel.org
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-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 04af9475e2e6732ffc8a534ed53f72e261b952a0
Author: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Date:   Mon Dec 17 12:54:23 2018 +0300

    ARC: perf: map generic branches to correct hardware condition
    
    commit 3affbf0e154ee351add6fcc254c59c3f3947fa8f upstream.
    
    So far we've mapped branches to "ijmp" which also counts conditional
    branches NOT taken. This makes us different from other architectures
    such as ARM which seem to be counting only taken branches.
    
    So use "ijmptak" hardware condition which only counts (all jump
    instructions that are taken)
    
    'ijmptak' event is available on both ARCompact and ARCv2 ISA based
    cores.
    
    Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    [vgupta: reworked changelog]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 377f080a20503684c4728ee14ea30002d310a06b
Author: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Date:   Wed Dec 19 19:16:16 2018 +0300

    ARC: adjust memblock_reserve of kernel memory
    
    commit a3010a0465383300f909f62b8a83f83ffa7b2517 upstream.
    
    In setup_arch_memory we reserve the memory area wherein the kernel
    is located. Current implementation may reserve more memory than
    it actually required in case of CONFIG_LINUX_LINK_BASE is not
    equal to CONFIG_LINUX_RAM_BASE. This happens because we calculate
    start of the reserved region relatively to the CONFIG_LINUX_RAM_BASE
    and end of the region relatively to the CONFIG_LINUX_RAM_BASE.
    
    For example in case of HSDK board we wasted 256MiB of physical memory:
    ------------------->8------------------------------
    Memory: 770416K/1048576K available (5496K kernel code,
        240K rwdata, 1064K rodata, 2200K init, 275K bss,
        278160K reserved, 0K cma-reserved)
    ------------------->8------------------------------
    
    Fix that.
    
    Fixes: 9ed68785f7f2b ("ARC: mm: Decouple RAM base address from kernel link addr")
    Cc: stable@vger.kernel.org      #4.14+
    Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95907c66b3d4666dcad900e9a48f921bccdec3c5
Author: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Date:   Mon Jan 14 18:16:48 2019 +0300

    ARCv2: lib: memeset: fix doing prefetchw outside of buffer
    
    commit e6a72b7daeeb521753803550f0ed711152bb2555 upstream.
    
    ARCv2 optimized memset uses PREFETCHW instruction for prefetching the
    next cache line but doesn't ensure that the line is not past the end of
    the buffer. PRETECHW changes the line ownership and marks it dirty,
    which can cause issues in SMP config when next line was already owned by
    other core. Fix the issue by avoiding the PREFETCHW
    
    Some more details:
    
    The current code has 3 logical loops (ignroing the unaligned part)
      (a) Big loop for doing aligned 64 bytes per iteration with PREALLOC
      (b) Loop for 32 x 2 bytes with PREFETCHW
      (c) any left over bytes
    
    loop (a) was already eliding the last 64 bytes, so PREALLOC was
    safe. The fix was removing PREFETCW from (b).
    
    Another potential issue (applicable to configs with 32 or 128 byte L1
    cache line) is that PREALLOC assumes 64 byte cache line and may not do
    the right thing specially for 32b. While it would be easy to adapt,
    there are no known configs with those lie sizes, so for now, just
    compile out PREALLOC in such cases.
    
    Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
    Cc: stable@vger.kernel.org #4.4+
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    [vgupta: rewrote changelog, used asm .macro vs. "C" macro]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 752c738a2b050898f97820cae39dad2d66943fc2
Author: Anthony Wong <anthony.wong@canonical.com>
Date:   Sat Jan 19 12:22:31 2019 +0800

    ALSA: hda - Add mute LED support for HP ProBook 470 G5
    
    commit 699390381a7bae2fab01a22f742a17235c44ed8a upstream.
    
    Support speaker and mic mute LEDs on HP ProBook 470 G5.
    
    BugLink: https://bugs.launchpad.net/bugs/1811254
    Signed-off-by: Anthony Wong <anthony.wong@canonical.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 585a4feb045615fe7ba028787c489bce090b6ca4
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Tue Jan 15 11:57:23 2019 -0600

    ASoC: rt5514-spi: Fix potential NULL pointer dereference
    
    commit 060d0bf491874daece47053c4e1fb0489eb867d2 upstream.
    
    There is a potential NULL pointer dereference in case devm_kzalloc()
    fails and returns NULL.
    
    Fix this by adding a NULL check on rt5514_dsp.
    
    This issue was detected with the help of Coccinelle.
    
    Fixes: 6eebf35b0e4a ("ASoC: rt5514: add rt5514 SPI driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27657a6aee5946d64a7211afca59d8cc3b1fda82
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Tue Dec 25 20:29:48 2018 -0600

    ASoC: atom: fix a missing check of snd_pcm_lib_malloc_pages
    
    commit 44fabd8cdaaa3acb80ad2bb3b5c61ae2136af661 upstream.
    
    snd_pcm_lib_malloc_pages() may fail, so let's check its status and
    return its error code upstream.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1b8cba6a3445ae9a7ea619b7cecac766651ec72
Author: Charles Yeh <charlesyeh522@gmail.com>
Date:   Tue Jan 15 23:13:56 2019 +0800

    USB: serial: pl2303: add new PID to support PL2303TB
    
    commit 4dcf9ddc9ad5ab649abafa98c5a4d54b1a33dabb upstream.
    
    Add new PID to support PL2303TB (TYPE_HX)
    
    Signed-off-by: Charles Yeh <charlesyeh522@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9046ae68fa61a010af89e146821d643c9a5daba
Author: Max Schulze <max.schulze@posteo.de>
Date:   Mon Jan 7 08:31:49 2019 +0100

    USB: serial: simple: add Motorola Tetra TPG2200 device id
    
    commit b81c2c33eab79dfd3650293b2227ee5c6036585c upstream.
    
    Add new Motorola Tetra device id for Motorola Solutions TETRA PEI device
    
    T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  4 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=0cad ProdID=9016 Rev=24.16
    S:  Manufacturer=Motorola Solutions, Inc.
    S:  Product=TETRA PEI interface
    C:  #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usb_serial_simple
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usb_serial_simple
    
    Signed-off-by: Max Schulze <max.schulze@posteo.de>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db818691e83e94e57924f0d7a0a1c288e6430f24
Author: Tomas Winkler <tomas.winkler@intel.com>
Date:   Sun Jan 13 14:24:48 2019 +0200

    mei: me: add denverton innovation engine device IDs
    
    commit f7ee8ead151f9d0b8dac6ab6c3ff49bbe809c564 upstream.
    
    Add the Denverton innovation engine (IE) device ids.
    The IE is an ME-like device which provides HW security
    offloading.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c461661969ce6b199e43104745b564dd4f1266b8
Author: Vijay Viswanath <vviswana@codeaurora.org>
Date:   Fri Jan 25 17:11:41 2019 +0200

    mmc: Kconfig: Enable CONFIG_MMC_SDHCI_IO_ACCESSORS
    
    commit 99d570da309813f67e9c741edeff55bafc6c1d5e upstream.
    
    Enable CONFIG_MMC_SDHCI_IO_ACCESSORS so that SDHC controller specific
    register read and write APIs, if registered, can be used.
    
    Signed-off-by: Vijay Viswanath <vviswana@codeaurora.org>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Cc: Koen Vandeputte <koen.vandeputte@ncentric.com>
    Cc: Loic Poulain <loic.poulain@linaro.org>
    Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01c85b4b4ea08b4f0c65489fd2f759b026d243a4
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Fri Jul 6 12:30:20 2018 +0200

    ipfrag: really prevent allocation on netns exit
    
    [ Upstream commit f6f2a4a2eb92bc73671204198bb2f8ab53ff59fb ]
    
    Setting the low threshold to 0 has no effect on frags allocation,
    we need to clear high_thresh instead.
    
    The code was pre-existent to commit 648700f76b03 ("inet: frags:
    use rhashtables for reassembly units"), but before the above,
    such assignment had a different role: prevent concurrent eviction
    from the worker and the netns cleanup helper.
    
    Fixes: 648700f76b03 ("inet: frags: use rhashtables for reassembly units")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab6688714226ee66463d703178360d20bea95064
Author: Willem de Bruijn <willemb@google.com>
Date:   Thu Jan 10 14:40:33 2019 -0500

    tcp: allow MSG_ZEROCOPY transmission also in CLOSE_WAIT state
    
    [ Upstream commit 13d7f46386e060df31b727c9975e38306fa51e7a ]
    
    TCP transmission with MSG_ZEROCOPY fails if the peer closes its end of
    the connection and so transitions this socket to CLOSE_WAIT state.
    
    Transmission in close wait state is acceptable. Other similar tests in
    the stack (e.g., in FastOpen) accept both states. Relax this test, too.
    
    Link: https://www.mail-archive.com/netdev@vger.kernel.org/msg276886.html
    Link: https://www.mail-archive.com/netdev@vger.kernel.org/msg227390.html
    Fixes: f214f915e7db ("tcp: enable MSG_ZEROCOPY")
    Reported-by: Marek Majkowski <marek@cloudflare.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    CC: Yuchung Cheng <ycheng@google.com>
    CC: Neal Cardwell <ncardwell@google.com>
    CC: Soheil Hassas Yeganeh <soheil@google.com>
    CC: Alexey Kodanev <alexey.kodanev@oracle.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0781b0f9b5ea0f7dff67e9950f3fcaa3fc6e67c4
Author: Ido Schimmel <idosch@mellanox.com>
Date:   Wed Jan 9 09:57:39 2019 +0000

    net: ipv4: Fix memory leak in network namespace dismantle
    
    [ Upstream commit f97f4dd8b3bb9d0993d2491e0f22024c68109184 ]
    
    IPv4 routing tables are flushed in two cases:
    
    1. In response to events in the netdev and inetaddr notification chains
    2. When a network namespace is being dismantled
    
    In both cases only routes associated with a dead nexthop group are
    flushed. However, a nexthop group will only be marked as dead in case it
    is populated with actual nexthops using a nexthop device. This is not
    the case when the route in question is an error route (e.g.,
    'blackhole', 'unreachable').
    
    Therefore, when a network namespace is being dismantled such routes are
    not flushed and leaked [1].
    
    To reproduce:
    # ip netns add blue
    # ip -n blue route add unreachable 192.0.2.0/24
    # ip netns del blue
    
    Fix this by not skipping error routes that are not marked with
    RTNH_F_DEAD when flushing the routing tables.
    
    To prevent the flushing of such routes in case #1, add a parameter to
    fib_table_flush() that indicates if the table is flushed as part of
    namespace dismantle or not.
    
    Note that this problem does not exist in IPv6 since error routes are
    associated with the loopback device.
    
    [1]
    unreferenced object 0xffff888066650338 (size 56):
      comm "ip", pid 1206, jiffies 4294786063 (age 26.235s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 b0 1c 62 61 80 88 ff ff  ..........ba....
        e8 8b a1 64 80 88 ff ff 00 07 00 08 fe 00 00 00  ...d............
      backtrace:
        [<00000000856ed27d>] inet_rtm_newroute+0x129/0x220
        [<00000000fcdfc00a>] rtnetlink_rcv_msg+0x397/0xa20
        [<00000000cb85801a>] netlink_rcv_skb+0x132/0x380
        [<00000000ebc991d2>] netlink_unicast+0x4c0/0x690
        [<0000000014f62875>] netlink_sendmsg+0x929/0xe10
        [<00000000bac9d967>] sock_sendmsg+0xc8/0x110
        [<00000000223e6485>] ___sys_sendmsg+0x77a/0x8f0
        [<000000002e94f880>] __sys_sendmsg+0xf7/0x250
        [<00000000ccb1fa72>] do_syscall_64+0x14d/0x610
        [<00000000ffbe3dae>] entry_SYSCALL_64_after_hwframe+0x49/0xbe
        [<000000003a8b605b>] 0xffffffffffffffff
    unreferenced object 0xffff888061621c88 (size 48):
      comm "ip", pid 1206, jiffies 4294786063 (age 26.235s)
      hex dump (first 32 bytes):
        6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
        6b 6b 6b 6b 6b 6b 6b 6b d8 8e 26 5f 80 88 ff ff  kkkkkkkk..&_....
      backtrace:
        [<00000000733609e3>] fib_table_insert+0x978/0x1500
        [<00000000856ed27d>] inet_rtm_newroute+0x129/0x220
        [<00000000fcdfc00a>] rtnetlink_rcv_msg+0x397/0xa20
        [<00000000cb85801a>] netlink_rcv_skb+0x132/0x380
        [<00000000ebc991d2>] netlink_unicast+0x4c0/0x690
        [<0000000014f62875>] netlink_sendmsg+0x929/0xe10
        [<00000000bac9d967>] sock_sendmsg+0xc8/0x110
        [<00000000223e6485>] ___sys_sendmsg+0x77a/0x8f0
        [<000000002e94f880>] __sys_sendmsg+0xf7/0x250
        [<00000000ccb1fa72>] do_syscall_64+0x14d/0x610
        [<00000000ffbe3dae>] entry_SYSCALL_64_after_hwframe+0x49/0xbe
        [<000000003a8b605b>] 0xffffffffffffffff
    
    Fixes: 8cced9eff1d4 ("[NETNS]: Enable routing configuration in non-initial namespace.")
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1981e4c9a97f8ad8e8dfcb5ef1707e25fad85279
Author: Jason Wang <jasowang@redhat.com>
Date:   Wed Jan 16 16:54:42 2019 +0800

    vhost: log dirty page correctly
    
    [ Upstream commit cc5e710759470bc7f3c61d11fd54586f15fdbdf4 ]
    
    Vhost dirty page logging API is designed to sync through GPA. But we
    try to log GIOVA when device IOTLB is enabled. This is wrong and may
    lead to missing data after migration.
    
    To solve this issue, when logging with device IOTLB enabled, we will:
    
    1) reuse the device IOTLB translation result of GIOVA->HVA mapping to
       get HVA, for writable descriptor, get HVA through iovec. For used
       ring update, translate its GIOVA to HVA
    2) traverse the GPA->HVA mapping to get the possible GPA and log
       through GPA. Pay attention this reverse mapping is not guaranteed
       to be unique, so we should log each possible GPA in this case.
    
    This fix the failure of scp to guest during migration. In -next, we
    will probably support passing GIOVA->GPA instead of GIOVA->HVA.
    
    Fixes: 6b1e6cc7855b ("vhost: new device IOTLB API")
    Reported-by: Jintack Lim <jintack@cs.columbia.edu>
    Cc: Jintack Lim <jintack@cs.columbia.edu>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 520126ca0ef79ecf67784b36b67601d54b0df42f
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Mon Jan 14 09:16:56 2019 +0000

    openvswitch: Avoid OOB read when parsing flow nlattrs
    
    [ Upstream commit 04a4af334b971814eedf4e4a413343ad3287d9a9 ]
    
    For nested and variable attributes, the expected length of an attribute
    is not known and marked by a negative number.  This results in an OOB
    read when the expected length is later used to check if the attribute is
    all zeros. Fix this by using the actual length of the attribute rather
    than the expected length.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Acked-by: Pravin B Shelar <pshelar@ovn.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6da1dfff12d475a0aff984736e4806aa033df669
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Fri Jan 11 18:55:42 2019 -0800

    net_sched: refetch skb protocol for each filter
    
    [ Upstream commit cd0c4e70fc0ccfa705cdf55efb27519ce9337a26 ]
    
    Martin reported a set of filters don't work after changing
    from reclassify to continue. Looking into the code, it
    looks like skb protocol is not always fetched for each
    iteration of the filters. But, as demonstrated by Martin,
    TC actions could modify skb->protocol, for example act_vlan,
    this means we have to refetch skb protocol in each iteration,
    rather than using the one we fetch in the beginning of the loop.
    
    This bug is _not_ introduced by commit 3b3ae880266d
    ("net: sched: consolidate tc_classify{,_compat}"), technically,
    if act_vlan is the only action that modifies skb protocol, then
    it is commit c7e2b9689ef8 ("sched: introduce vlan action") which
    introduced this bug.
    
    Reported-by: Martin Olsson <martin.olsson+netdev@sentorsecurity.com>
    Cc: Jamal Hadi Salim <jhs@mojatatu.com>
    Cc: Jiri Pirko <jiri@resnulli.us>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6bd069b588989fed713681bb82e8c1c6d5de66a5
Author: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Date:   Wed Jan 16 10:53:58 2019 +0100

    net: phy: mdio_bus: add missing device_del() in mdiobus_register() error handling
    
    [ Upstream commit e40e2a2e78664fa90ea4b9bdf4a84efce2fea9d9 ]
    
    The current code in __mdiobus_register() doesn't properly handle
    failures returned by the devm_gpiod_get_optional() call: it returns
    immediately, without unregistering the device that was added by the
    call to device_register() earlier in the function.
    
    This leaves a stale device, which then causes a NULL pointer
    dereference in the code that handles deferred probing:
    
    [    1.489982] Unable to handle kernel NULL pointer dereference at virtual address 00000074
    [    1.498110] pgd = (ptrval)
    [    1.500838] [00000074] *pgd=00000000
    [    1.504432] Internal error: Oops: 17 [#1] SMP ARM
    [    1.509133] Modules linked in:
    [    1.512192] CPU: 1 PID: 51 Comm: kworker/1:3 Not tainted 4.20.0-00039-g3b73a4cc8b3e-dirty #99
    [    1.520708] Hardware name: Xilinx Zynq Platform
    [    1.525261] Workqueue: events deferred_probe_work_func
    [    1.530403] PC is at klist_next+0x10/0xfc
    [    1.534403] LR is at device_for_each_child+0x40/0x94
    [    1.539361] pc : [<c0683fbc>]    lr : [<c0455d90>]    psr: 200e0013
    [    1.545628] sp : ceeefe68  ip : 00000001  fp : ffffe000
    [    1.550863] r10: 00000000  r9 : c0c66790  r8 : 00000000
    [    1.556079] r7 : c0457d44  r6 : 00000000  r5 : ceeefe8c  r4 : cfa2ec78
    [    1.562604] r3 : 00000064  r2 : c0457d44  r1 : ceeefe8c  r0 : 00000064
    [    1.569129] Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
    [    1.576263] Control: 18c5387d  Table: 0ed7804a  DAC: 00000051
    [    1.582013] Process kworker/1:3 (pid: 51, stack limit = 0x(ptrval))
    [    1.588280] Stack: (0xceeefe68 to 0xceef0000)
    [    1.592630] fe60:                   cfa2ec78 c0c03c08 00000000 c0457d44 00000000 c0c66790
    [    1.600814] fe80: 00000000 c0455d90 ceeefeac 00000064 00000000 0d7a542e cee9d494 cfa2ec78
    [    1.608998] fea0: cfa2ec78 00000000 c0457d44 c0457d7c cee9d494 c0c03c08 00000000 c0455dac
    [    1.617182] fec0: cf98ba44 cf926a00 cee9d494 0d7a542e 00000000 cf935a10 cf935a10 cf935a10
    [    1.625366] fee0: c0c4e9b8 c0457d7c c0c4e80c 00000001 cf935a10 c0457df4 cf935a10 c0c4e99c
    [    1.633550] ff00: c0c4e99c c045a27c c0c4e9c4 ced63f80 cfde8a80 cfdebc00 00000000 c013893c
    [    1.641734] ff20: cfde8a80 cfde8a80 c07bd354 ced63f80 ced63f94 cfde8a80 00000008 c0c02d00
    [    1.649936] ff40: cfde8a98 cfde8a80 ffffe000 c0139a30 ffffe000 c0c6624a c07bd354 00000000
    [    1.658120] ff60: ffffe000 cee9e780 ceebfe00 00000000 ceeee000 ced63f80 c0139788 cf8cdea4
    [    1.666304] ff80: cee9e79c c013e598 00000001 ceebfe00 c013e44c 00000000 00000000 00000000
    [    1.674488] ffa0: 00000000 00000000 00000000 c01010e8 00000000 00000000 00000000 00000000
    [    1.682671] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    1.690855] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
    [    1.699058] [<c0683fbc>] (klist_next) from [<c0455d90>] (device_for_each_child+0x40/0x94)
    [    1.707241] [<c0455d90>] (device_for_each_child) from [<c0457d7c>] (device_reorder_to_tail+0x38/0x88)
    [    1.716476] [<c0457d7c>] (device_reorder_to_tail) from [<c0455dac>] (device_for_each_child+0x5c/0x94)
    [    1.725692] [<c0455dac>] (device_for_each_child) from [<c0457d7c>] (device_reorder_to_tail+0x38/0x88)
    [    1.734927] [<c0457d7c>] (device_reorder_to_tail) from [<c0457df4>] (device_pm_move_to_tail+0x28/0x40)
    [    1.744235] [<c0457df4>] (device_pm_move_to_tail) from [<c045a27c>] (deferred_probe_work_func+0x58/0x8c)
    [    1.753746] [<c045a27c>] (deferred_probe_work_func) from [<c013893c>] (process_one_work+0x210/0x4fc)
    [    1.762888] [<c013893c>] (process_one_work) from [<c0139a30>] (worker_thread+0x2a8/0x5c0)
    [    1.771072] [<c0139a30>] (worker_thread) from [<c013e598>] (kthread+0x14c/0x154)
    [    1.778482] [<c013e598>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
    [    1.785689] Exception stack(0xceeeffb0 to 0xceeefff8)
    [    1.790739] ffa0:                                     00000000 00000000 00000000 00000000
    [    1.798923] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    1.807107] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000
    [    1.813724] Code: e92d47f0 e1a05000 e8900048 e1a00003 (e5937010)
    [    1.819844] ---[ end trace 3c2c0c8b65399ec9 ]---
    
    The actual error that we had from devm_gpiod_get_optional() was
    -EPROBE_DEFER, due to the GPIO being provided by a driver that is
    probed later than the Ethernet controller driver.
    
    To fix this, we simply add the missing device_del() invocation in the
    error path.
    
    Fixes: 69226896ad636 ("mdio_bus: Issue GPIO RESET to PHYs")
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66a011d153c67599c0dc11704ce4ef3f387b1e22
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Thu Jan 17 15:34:38 2019 +0000

    net: Fix usage of pskb_trim_rcsum
    
    [ Upstream commit 6c57f0458022298e4da1729c67bd33ce41c14e7a ]
    
    In certain cases, pskb_trim_rcsum() may change skb pointers.
    Reinitialize header pointers afterwards to avoid potential
    use-after-frees. Add a note in the documentation of
    pskb_trim_rcsum(). Found by KASAN.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ae7a7cb7ab8016e84781dd9cddd705d9e794248
Author: Yunjian Wang <wangyunjian@huawei.com>
Date:   Thu Jan 17 09:46:41 2019 +0800

    net: bridge: Fix ethernet header pointer before check skb forwardable
    
    [ Upstream commit 28c1382fa28f2e2d9d0d6f25ae879b5af2ecbd03 ]
    
    The skb header should be set to ethernet header before using
    is_skb_forwardable. Because the ethernet header length has been
    considered in is_skb_forwardable(including dev->hard_header_len
    length).
    
    To reproduce the issue:
    1, add 2 ports on linux bridge br using following commands:
    $ brctl addbr br
    $ brctl addif br eth0
    $ brctl addif br eth1
    2, the MTU of eth0 and eth1 is 1500
    3, send a packet(Data 1480, UDP 8, IP 20, Ethernet 14, VLAN 4)
    from eth0 to eth1
    
    So the expect result is packet larger than 1500 cannot pass through
    eth0 and eth1. But currently, the packet passes through success, it
    means eth1's MTU limit doesn't take effect.
    
    Fixes: f6367b4660dd ("bridge: use is_skb_forwardable in forward path")
    Cc: bridge@lists.linux-foundation.org
    Cc: Nkolay Aleksandrov <nikolay@cumulusnetworks.com>
    Cc: Roopa Prabhu <roopa@cumulusnetworks.com>
    Cc: Stephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99afa1927af3d498d241249eab8e87da8265e7a3
Author: Lendacky, Thomas <Thomas.Lendacky@amd.com>
Date:   Thu Jan 17 14:20:14 2019 +0000

    amd-xgbe: Fix mdio access for non-zero ports and clause 45 PHYs
    
    [ Upstream commit 5ab3121beeb76aa6090195b67d237115860dd9ec ]
    
    The XGBE hardware has support for performing MDIO operations using an
    MDIO command request. The driver mistakenly uses the mdio port address
    as the MDIO command request device address instead of the MDIO command
    request port address. Additionally, the driver does not properly check
    for and create a clause 45 MDIO command.
    
    Check the supplied MDIO register to determine if the request is a clause
    45 operation (MII_ADDR_C45). For a clause 45 operation, extract the device
    address and register number from the supplied MDIO register and use them
    to set the MDIO command request device address and register number fields.
    For a clause 22 operation, the MDIO request device address is set to zero
    and the MDIO command request register number is set to the supplied MDIO
    register. In either case, the supplied MDIO port address is used as the
    MDIO command request port address.
    
    Fixes: 732f2ab7afb9 ("amd-xgbe: Add support for MDIO attached PHYs")
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Tested-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>