commit aa73bcc376865c23e61dcebd467697b527901be8
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Apr 29 16:33:25 2020 +0200

    Linux 5.4.36

commit 44d9eb0ebe8fd04f46b18d10a18b2c543b379a0c
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Wed Apr 15 15:21:01 2020 +0200

    s390/mm: fix page table upgrade vs 2ndary address mode accesses
    
    commit 316ec154810960052d4586b634156c54d0778f74 upstream.
    
    A page table upgrade in a kernel section that uses secondary address
    mode will mess up the kernel instructions as follows:
    
    Consider the following scenario: two threads are sharing memory.
    On CPU1 thread 1 does e.g. strnlen_user().  That gets to
            old_fs = enable_sacf_uaccess();
            len = strnlen_user_srst(src, size);
    and
                    "   la    %2,0(%1)\n"
                    "   la    %3,0(%0,%1)\n"
                    "   slgr  %0,%0\n"
                    "   sacf  256\n"
                    "0: srst  %3,%2\n"
    in strnlen_user_srst().  At that point we are in secondary space mode,
    control register 1 points to kernel page table and instruction fetching
    happens via c1, rather than usual c13.  Interrupts are not disabled, for
    obvious reasons.
    
    On CPU2 thread 2 does MAP_FIXED mmap(), forcing the upgrade of page table
    from 3-level to e.g. 4-level one.  We'd allocated new top-level table,
    set it up and now we hit this:
                    notify = 1;
                    spin_unlock_bh(&mm->page_table_lock);
            }
            if (notify)
                    on_each_cpu(__crst_table_upgrade, mm, 0);
    OK, we need to actually change over to use of new page table and we
    need that to happen in all threads that are currently running.  Which
    happens to include the thread 1.  IPI is delivered and we have
    static void __crst_table_upgrade(void *arg)
    {
            struct mm_struct *mm = arg;
    
            if (current->active_mm == mm)
                    set_user_asce(mm);
            __tlb_flush_local();
    }
    run on CPU1.  That does
    static inline void set_user_asce(struct mm_struct *mm)
    {
            S390_lowcore.user_asce = mm->context.asce;
    OK, user page table address updated...
            __ctl_load(S390_lowcore.user_asce, 1, 1);
    ... and control register 1 set to it.
            clear_cpu_flag(CIF_ASCE_PRIMARY);
    }
    
    IPI is run in home space mode, so it's fine - insns are fetched
    using c13, which always points to kernel page table.  But as soon
    as we return from the interrupt, previous PSW is restored, putting
    CPU1 back into secondary space mode, at which point we no longer
    get the kernel instructions from the kernel mapping.
    
    The fix is to only fixup the control registers that are currently in use
    for user processes during the page table update.  We must also disable
    interrupts in enable_sacf_uaccess to synchronize the cr and
    thread.mm_segment updates against the on_each-cpu.
    
    Fixes: 0aaba41b58bc ("s390: remove all code using the access register mode")
    Cc: stable@vger.kernel.org # 4.15+
    Reported-by: Al Viro <viro@zeniv.linux.org.uk>
    Reviewed-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    References: CVE-2020-11884
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58b243cf27869c0dbe873ad6e36f0c3951801afc
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Dec 9 16:16:20 2019 +0100

    compat: ARM64: always include asm-generic/compat.h
    
    commit 556d687a4ccd54ab50a721ddde42c820545effd9 upstream.
    
    In order to use compat_* type defininitions in device drivers
    outside of CONFIG_COMPAT, move the inclusion of asm-generic/compat.h
    ahead of the #ifdef.
    
    All other architectures already do this.
    
    Acked-by: Will Deacon <will@kernel.org>
    Reviewed-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Cc: Naresh Kamboju <naresh.kamboju@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3160e84abaf737de27b6935843db958c23dd2af9
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Fri Apr 17 11:58:36 2020 +0000

    powerpc/mm: Fix CONFIG_PPC_KUAP_DEBUG on PPC32
    
    commit feb8e960d780e170e992a70491eec9dd68f4dbf2 upstream.
    
    CONFIG_PPC_KUAP_DEBUG is not selectable because it depends on PPC_32
    which doesn't exists.
    
    Fixing it leads to a deadlock due to a vital register getting
    clobbered in _switch().
    
    Change dependency to PPC32 and use r0 instead of r4 in _switch()
    
    Fixes: e2fb9f544431 ("powerpc/32: Prepare for Kernel Userspace Access Protection")
    Cc: stable@vger.kernel.org # v5.2+
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/540242f7d4573f7cdf1b3bf46bb35f743b2cd68f.1587124651.git.christophe.leroy@c-s.fr
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b48331b52a28a52d83c503e6b6cc584b824bf072
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Sun Mar 1 22:17:38 2020 +1100

    powerpc/kuap: PPC_KUAP_DEBUG should depend on PPC_KUAP
    
    commit 61da50b76b62fd815aa82d853bf82bf4f69568f5 upstream.
    
    Currently you can enable PPC_KUAP_DEBUG when PPC_KUAP is disabled,
    even though the former has not effect without the latter.
    
    Fix it so that PPC_KUAP_DEBUG can only be enabled when PPC_KUAP is
    enabled, not when the platform could support KUAP (PPC_HAVE_KUAP).
    
    Fixes: 890274c2dc4c ("powerpc/64s: Implement KUAP for Radix MMU")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200301111738.22497-1-mpe@ellerman.id.au
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4606876164c66469cd784d98898ee2928b10583
Author: Michal Simek <michal.simek@xilinx.com>
Date:   Fri Apr 3 11:24:36 2020 +0200

    Revert "serial: uartps: Register own uart console and driver structures"
    
    commit 18cc7ac8a28e28cd005c2475f52576cfe10cabfb upstream.
    
    This reverts commit 024ca329bfb9a948f76eaff3243e21b7e70182f2.
    
    As Johan says, this driver needs a lot more work and these changes are
    only going in the wrong direction:
      https://lkml.kernel.org/r/20190523091839.GC568@localhost
    
    Reported-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1ee35667e36a8efddee381df5fe495ad65f4d15c.1585905873.git.michal.simek@xilinx.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02d32033b397364ec42431cf282fbd51ea16d2dc
Author: Michal Simek <michal.simek@xilinx.com>
Date:   Fri Apr 3 11:24:35 2020 +0200

    Revert "serial: uartps: Move Port ID to device data structure"
    
    commit 492cc08bc16c44e2e587362ada3f6269dee2be22 upstream.
    
    This reverts commit bed25ac0e2b6ab8f9aed2d20bc9c3a2037311800.
    
    As Johan says, this driver needs a lot more work and these changes are
    only going in the wrong direction:
      https://lkml.kernel.org/r/20190523091839.GC568@localhost
    
    Reported-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/eb0ec98fecdca9b79c1a3ac0c30c668b6973b193.1585905873.git.michal.simek@xilinx.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bbc0423c89689da1907b5d49e381bfa5c4892dc0
Author: Michal Simek <michal.simek@xilinx.com>
Date:   Fri Apr 3 11:24:34 2020 +0200

    Revert "serial: uartps: Change uart ID port allocation"
    
    commit 72d68197281e2ad313960504d10b0c41ff87fd55 upstream.
    
    This reverts commit ae1cca3fa3478be92948dbbcd722390272032ade.
    
    With setting up NR_PORTS to 16 to be able to use serial2 and higher
    aliases and don't loose functionality which was intended by these changes.
    
    As Johan says, this driver needs a lot more work and these changes are
    only going in the wrong direction:
      https://lkml.kernel.org/r/20190523091839.GC568@localhost
    
    Reported-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/a94931b65ce0089f76fb1fe6b446a08731bff754.1585905873.git.michal.simek@xilinx.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7504efa6bf7594b3b92819eaec92f4a6fb9c9ab
Author: Michal Simek <michal.simek@xilinx.com>
Date:   Fri Apr 3 11:24:33 2020 +0200

    Revert "serial: uartps: Do not allow use aliases >= MAX_UART_INSTANCES"
    
    commit 91c9dfa25c7f95b543c280e0edf1fd8de6e90985 upstream.
    
    This reverts commit 2088cfd882d0403609bdf426e9b24372fe1b8337.
    
    As Johan says, this driver needs a lot more work and these changes are
    only going in the wrong direction:
      https://lkml.kernel.org/r/20190523091839.GC568@localhost
    
    Reported-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/dac3898e3e32d963f357fb436ac9a7ac3cbcf933.1585905873.git.michal.simek@xilinx.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e64d4db7b105ce53b7d2d9cd8cca021b120348e
Author: Michal Simek <michal.simek@xilinx.com>
Date:   Fri Apr 3 11:24:32 2020 +0200

    Revert "serial: uartps: Fix error path when alloc failed"
    
    commit b6fd2dbbd649b89a3998528994665ded1e3fbf7f upstream.
    
    This reverts commit 32cf21ac4edd6c0d5b9614368a83bcdc68acb031.
    
    As Johan says, this driver needs a lot more work and these changes are
    only going in the wrong direction:
      https://lkml.kernel.org/r/20190523091839.GC568@localhost
    
    Reported-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/46cd7f039db847c08baa6508edd7854f7c8ff80f.1585905873.git.michal.simek@xilinx.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6fcbf58b115c577eedafbd5c30e7d55404b52cae
Author: Michal Simek <michal.simek@xilinx.com>
Date:   Fri Apr 3 11:24:31 2020 +0200

    Revert "serial: uartps: Use the same dynamic major number for all ports"
    
    commit 8da1a3940da4b0e82848ec29b835486890bc9232 upstream.
    
    This reverts commit ab262666018de6f4e206b021386b93ed0c164316.
    
    As Johan says, this driver needs a lot more work and these changes are
    only going in the wrong direction:
      https://lkml.kernel.org/r/20190523091839.GC568@localhost
    
    Reported-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/14a565fc1e14a5ec6cc6a6710deb878ae8305f22.1585905873.git.michal.simek@xilinx.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bb43b4d8c32c6d2ffc005206a83b8df04314f42
Author: Michal Simek <michal.simek@xilinx.com>
Date:   Fri Apr 3 11:24:30 2020 +0200

    Revert "serial: uartps: Fix uartps_major handling"
    
    commit 2e01911b7cf7aa07a304a809eca1b11a4bd35859 upstream.
    
    This reverts commit 5e9bd2d70ae7c00a95a22994abf1eef728649e64.
    
    As Johan says, this driver needs a lot more work and these changes are
    only going in the wrong direction:
        https://lkml.kernel.org/r/20190523091839.GC568@localhost
    
    Reported-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/310999ab5342f788a7bc1b0e68294d4f052cad07.1585905873.git.michal.simek@xilinx.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3af0614df15c1c1fbfafed4888f12d76a7b044e1
Author: Kazuhiro Fujita <kazuhiro.fujita.jg@renesas.com>
Date:   Fri Mar 27 18:17:28 2020 +0000

    serial: sh-sci: Make sure status register SCxSR is read in correct sequence
    
    commit 3dc4db3662366306e54ddcbda4804acb1258e4ba upstream.
    
    For SCIF and HSCIF interfaces the SCxSR register holds the status of
    data that is to be read next from SCxRDR register, But where as for
    SCIFA and SCIFB interfaces SCxSR register holds status of data that is
    previously read from SCxRDR register.
    
    This patch makes sure the status register is read depending on the port
    types so that errors are caught accordingly.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Kazuhiro Fujita <kazuhiro.fujita.jg@renesas.com>
    Signed-off-by: Hao Bui <hao.bui.yg@renesas.com>
    Signed-off-by: KAZUMI HARADA <kazumi.harada.rh@renesas.com>
    Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/1585333048-31828-1-git-send-email-kazuhiro.fujita.jg@renesas.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fceab238c534eca02253c01f3bd5db391acd47b0
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Apr 21 17:08:22 2020 +0300

    xhci: Don't clear hub TT buffer on ep0 protocol stall
    
    commit 8f97250c21f0cf36434bf5b7ddf4377406534cd1 upstream.
    
    The default control endpoint ep0 can return a STALL indicating the
    device does not support the control transfer requests. This is called
    a protocol stall and does not halt the endpoint.
    
    xHC behaves a bit different. Its internal endpoint state will always
    be halted on any stall, even if the device side of the endpiont is not
    halted. So we do need to issue the reset endpoint command to clear the
    xHC host intenal endpoint halt state, but should not request the HS hub
    to clear the TT buffer unless device side of endpoint is halted.
    
    Clearing the hub TT buffer at protocol stall caused ep0 to become
    unresponsive for some FS/LS devices behind HS hubs, and class drivers
    failed to set the interface due to timeout:
    
    usb 1-2.1: 1:1: usb_set_interface failed (-110)
    
    Fixes: ef513be0a905 ("usb: xhci: Add Clear_TT_Buffer")
    Cc: <stable@vger.kernel.org> # v5.3
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200421140822.28233-4-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54470b0bd16aabc05c1d5fe2037e7fadf7869c16
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Apr 21 17:08:21 2020 +0300

    xhci: prevent bus suspend if a roothub port detected a over-current condition
    
    commit e9fb08d617bfae5471d902112667d0eeb9dee3c4 upstream.
    
    Suspending the bus and host controller while a port is in a over-current
    condition may halt the host.
    Also keep the roothub running if over-current is active.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200421140822.28233-3-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f385e765ac93a8e264caccdda16e7611f3d06183
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Apr 21 17:08:20 2020 +0300

    xhci: Fix handling halted endpoint even if endpoint ring appears empty
    
    commit 93ceaa808e8defc67ebca1396e2f42f812a2efc0 upstream.
    
    If a class driver cancels its only URB then the endpoint ring buffer will
    appear empty to the xhci driver. xHC hardware may still process cached
    TRBs, and complete with a STALL, halting the endpoint.
    
    This halted endpoint was not handled correctly by xhci driver as events on
    empty rings were all assumed to be spurious events.
    xhci driver refused to restart the ring with EP_HALTED flag set, so class
    driver was never informed the endpoint halted even if it queued new URBs.
    
    The host side of the endpoint needs to be reset, and dequeue pointer should
    be moved in order to clear the cached TRBs and resetart the endpoint.
    
    Small adjustments in finding the new dequeue pointer are needed to support
    the case of stall on an empty ring and unknown current TD.
    
    Cc: <stable@vger.kernel.org>
    cc: Jeremy Compostella <jeremy.compostella@intel.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200421140822.28233-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8dbfb11452c0200260eed4227f658c1db66fa97f
Author: Naoki Kiryu <naonaokiryu2@gmail.com>
Date:   Wed Apr 22 16:43:45 2020 +0200

    usb: typec: altmode: Fix typec_altmode_get_partner sometimes returning an invalid pointer
    
    commit 0df9433fcae02215c8fd79690c134d535c7bb905 upstream.
    
    Before this commit, typec_altmode_get_partner would return a
    const struct typec_altmode * pointing to address 0x08 when
    to_altmode(adev)->partner was NULL.
    
    Add a check for to_altmode(adev)->partner being NULL to fix this.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206365
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1785972
    Fixes: 5f54a85db5df ("usb: typec: Make sure an alt mode exist before getting its partner")
    Cc: stable@vger.kernel.org
    Signed-off-by: Naoki Kiryu <naonaokiryu2@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20200422144345.43262-1-hdegoede@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 740c938147830802ee567dc26e7d58e6ed34f63b
Author: Badhri Jagan Sridharan <badhri@google.com>
Date:   Thu Apr 2 14:59:47 2020 -0700

    usb: typec: tcpm: Ignore CC and vbus changes in PORT_RESET change
    
    commit 901789745a053286e0ced37960d44fa60267b940 upstream.
    
    After PORT_RESET, the port is set to the appropriate
    default_state. Ignore processing CC changes here as this
    could cause the port to be switched into sink states
    by default.
    
    echo source > /sys/class/typec/port0/port_type
    
    Before:
    [  154.528547] pending state change PORT_RESET -> PORT_RESET_WAIT_OFF @ 100 ms
    [  154.528560] CC1: 0 -> 0, CC2: 3 -> 0 [state PORT_RESET, polarity 0, disconnected]
    [  154.528564] state change PORT_RESET -> SNK_UNATTACHED
    
    After:
    [  151.068814] pending state change PORT_RESET -> PORT_RESET_WAIT_OFF @ 100 ms [rev3 NONE_AMS]
    [  151.072440] CC1: 3 -> 0, CC2: 0 -> 0 [state PORT_RESET, polarity 0, disconnected]
    [  151.172117] state change PORT_RESET -> PORT_RESET_WAIT_OFF [delayed 100 ms]
    [  151.172136] pending state change PORT_RESET_WAIT_OFF -> SRC_UNATTACHED @ 870 ms [rev3 NONE_AMS]
    [  152.060106] state change PORT_RESET_WAIT_OFF -> SRC_UNATTACHED [delayed 870 ms]
    [  152.060118] Start toggling
    
    Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20200402215947.176577-1-badhri@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11c2089767cd033bf5bdbd06df875f907e32e9b2
Author: Udipto Goswami <ugoswami@codeaurora.org>
Date:   Thu Apr 2 10:15:21 2020 +0530

    usb: f_fs: Clear OS Extended descriptor counts to zero in ffs_data_reset()
    
    commit 1c2e54fbf1da5e5445a0ab132c862b02ccd8d230 upstream.
    
    For userspace functions using OS Descriptors, if a function also supplies
    Extended Property descriptors currently the counts and lengths stored in
    the ms_os_descs_ext_prop_{count,name_len,data_len} variables are not
    getting reset to 0 during an unbind or when the epfiles are closed. If
    the same function is re-bound and the descriptors are re-written, this
    results in those count/length variables to monotonically increase
    causing the VLA allocation in _ffs_func_bind() to grow larger and larger
    at each bind/unbind cycle and eventually fail to allocate.
    
    Fix this by clearing the ms_os_descs_ext_prop count & lengths to 0 in
    ffs_data_reset().
    
    Fixes: f0175ab51993 ("usb: gadget: f_fs: OS descriptors support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Udipto Goswami <ugoswami@codeaurora.org>
    Signed-off-by: Sriharsha Allenki <sallenki@codeaurora.org>
    Reviewed-by: Manu Gautam <mgautam@codeaurora.org>
    Link: https://lore.kernel.org/r/20200402044521.9312-1-sallenki@codeaurora.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf996950d8deaeabc84b0b6b88134a1222cce56a
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Tue Mar 31 01:40:35 2020 -0700

    usb: dwc3: gadget: Fix request completion check
    
    commit 49e0590e3a60e75b493e5df879e216e5073c7663 upstream.
    
    A request may not be completed because not all the TRBs are prepared for
    it. This happens when we run out of available TRBs. When some TRBs are
    completed, the driver needs to prepare the rest of the TRBs for the
    request. The check dwc3_gadget_ep_request_completed() shouldn't be
    checking the amount of data received but rather the number of pending
    TRBs. Revise this request completion check.
    
    Cc: stable@vger.kernel.org
    Fixes: e0c42ce590fe ("usb: dwc3: gadget: simplify IOC handling")
    Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0f1f53ecd8d161d2e3d71a169b0971a1cbcefc4
Author: Xu Yilun <yilun.xu@intel.com>
Date:   Tue Feb 25 14:07:18 2020 +0800

    fpga: dfl: pci: fix return value of cci_pci_sriov_configure
    
    commit 3c2760b78f90db874401d97e3c17829e2e36f400 upstream.
    
    pci_driver.sriov_configure should return negative value on error and
    number of enabled VFs on success. But now the driver returns 0 on
    success. The sriov configure still works but will cause a warning
    message:
    
      XX VFs requested; only 0 enabled
    
    This patch changes the return value accordingly.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Xu Yilun <yilun.xu@intel.com>
    Signed-off-by: Wu Hao <hao.wu@intel.com>
    Signed-off-by: Moritz Fischer <mdf@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22432bcf066c1017a08a4c05883f4008b04ba03d
Author: Oliver Neukum <oneukum@suse.com>
Date:   Wed Apr 15 16:17:50 2020 +0200

    UAS: fix deadlock in error handling and PM flushing work
    
    commit f6cc6093a729ede1ff5658b493237c42b82ba107 upstream.
    
    A SCSI error handler and block runtime PM must not allocate
    memory with GFP_KERNEL. Furthermore they must not wait for
    tasks allocating memory with GFP_KERNEL.
    That means that they cannot share a workqueue with arbitrary tasks.
    
    Fix this for UAS using a private workqueue.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Fixes: f9dc024a2da1f ("uas: pre_reset and suspend: Fix a few races")
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200415141750.811-2-oneukum@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1b656677f7d0c759e50f6db2af9c5a3bd2db89e
Author: Oliver Neukum <oneukum@suse.com>
Date:   Wed Apr 15 16:17:49 2020 +0200

    UAS: no use logging any details in case of ENODEV
    
    commit 5963dec98dc52d52476390485f07a29c30c6a582 upstream.
    
    Once a device is gone, the internal state does not matter anymore.
    There is no need to spam the logs.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Cc: stable <stable@vger.kernel.org>
    Fixes: 326349f824619 ("uas: add dead request list")
    Link: https://lore.kernel.org/r/20200415141750.811-1-oneukum@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4d1cf2ef83caeab212e842fd238cb8353f59fa2
Author: Oliver Neukum <oneukum@suse.com>
Date:   Wed Apr 15 17:13:58 2020 +0200

    cdc-acm: introduce a cool down
    
    commit a4e7279cd1d19f48f0af2a10ed020febaa9ac092 upstream.
    
    Immediate submission in case of a babbling device can lead
    to a busy loop. Introducing a delayed work.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Cc: stable <stable@vger.kernel.org>
    Tested-by: Jonas Karlsson <jonas.karlsson@actia.se>
    Link: https://lore.kernel.org/r/20200415151358.32664-2-oneukum@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 892de572ea71a29c54f137d8c0488f2fab72b9b5
Author: Oliver Neukum <oneukum@suse.com>
Date:   Wed Apr 15 17:13:57 2020 +0200

    cdc-acm: close race betrween suspend() and acm_softint
    
    commit 0afccd7601514c4b83d8cc58c740089cc447051d upstream.
    
    Suspend increments a counter, then kills the URBs,
    then kills the scheduled work. The scheduled work, however,
    may reschedule the URBs. Fix this by having the work
    check the counter.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Cc: stable <stable@vger.kernel.org>
    Tested-by: Jonas Karlsson <jonas.karlsson@actia.se>
    Link: https://lore.kernel.org/r/20200415151358.32664-1-oneukum@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23d44059bc4462e0126ca8f41b26df42caf78a36
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Tue Apr 14 11:39:23 2020 +0100

    staging: vt6656: Power save stop wake_up_count wrap around.
    
    commit ea81c3486442f4643fc9825a2bb1b430b829bccd upstream.
    
    conf.listen_interval can sometimes be zero causing wake_up_count
    to wrap around up to many beacons too late causing
    CTRL-EVENT-BEACON-LOSS as in.
    
    wpa_supplicant[795]: message repeated 45 times: [..CTRL-EVENT-BEACON-LOSS ]
    
    Fixes: 43c93d9bf5e2 ("staging: vt6656: implement power saving code.")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Link: https://lore.kernel.org/r/fce47bb5-7ca6-7671-5094-5c6107302f2b@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f1a23cbef73a953620150b5eb1bcb9929e02b0c
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Sat Apr 18 22:01:49 2020 +0100

    staging: vt6656: Fix pairwise key entry save.
    
    commit 0b59f10b1d8fe8d50944f21f5d403df9303095a8 upstream.
    
    The problem is that the group key was saved as VNT_KEY_DEFAULTKEY
    was over written by the VNT_KEY_GROUP_ADDRESS index.
    
    mac80211 could not clear the mac_addr in the default key.
    
    The VNT_KEY_DEFAULTKEY is not necesscary so remove it and set as
    VNT_KEY_GROUP_ADDRESS.
    
    mac80211 can clear any key using vnt_mac_disable_keyentry.
    
    Fixes: f9ef05ce13e4 ("staging: vt6656: Fix pairwise key for non station modes")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Link: https://lore.kernel.org/r/da2f7e7f-1658-1320-6eee-0f55770ca391@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bcc6585717e67914c9a710246faaec7f523b7e0
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Sat Apr 18 17:43:24 2020 +0100

    staging: vt6656: Fix drivers TBTT timing counter.
    
    commit 09057742af98a39ebffa27fac4f889dc873132de upstream.
    
    The drivers TBTT counter is not synchronized with mac80211 timestamp.
    
    Reorder the functions and use vnt_update_next_tbtt to do the final
    synchronize.
    
    Fixes: c15158797df6 ("staging: vt6656: implement TSF counter")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Link: https://lore.kernel.org/r/375d0b25-e8bc-c8f7-9b10-6cc705d486ee@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 74bbe9d990400007b959a186cce744b4877cb99a
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Sat Apr 18 18:37:18 2020 +0100

    staging: vt6656: Fix calling conditions of vnt_set_bss_mode
    
    commit 664ba5180234593b4b8517530e8198bf2f7359e2 upstream.
    
    vnt_set_bss_mode needs to be called on all changes to BSS_CHANGED_BASIC_RATES,
    BSS_CHANGED_ERP_PREAMBLE and BSS_CHANGED_ERP_SLOT
    
    Remove all other calls and vnt_update_ifs which is called in vnt_set_bss_mode.
    
    Fixes an issue that preamble mode is not being updated correctly.
    
    Fixes: c12603576e06 ("staging: vt6656: Only call vnt_set_bss_mode on basic rates change.")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Link: https://lore.kernel.org/r/44110801-6234-50d8-c583-9388f04b486c@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec5ad5e1958c6a48e0bd1fb5323adc6b8deffb6a
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Sat Apr 18 17:24:50 2020 +0100

    staging: vt6656: Don't set RCR_MULTICAST or RCR_BROADCAST by default.
    
    commit 0f8240bfc070033a4823b19883efd3d38c7735cc upstream.
    
    mac80211/users control whether multicast is on or off don't enable it by default.
    
    Fixes an issue when multicast/broadcast is always on allowing other beacons through
    in power save.
    
    Fixes: db8f37fa3355 ("staging: vt6656: mac80211 conversion: main_usb add functions...")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Link: https://lore.kernel.org/r/2c24c33d-68c4-f343-bd62-105422418eac@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64882aa0c531f3c372b7e5c595fabf7c42e806df
Author: Nicolas Pitre <nico@fluxnic.net>
Date:   Sat Mar 28 22:25:11 2020 -0400

    vt: don't use kmalloc() for the unicode screen buffer
    
    commit 9a98e7a80f95378c9ee0c644705e3b5aa54745f1 upstream.
    
    Even if the actual screen size is bounded in vc_do_resize(), the unicode
    buffer is still a little more than twice the size of the glyph buffer
    and may exceed MAX_ORDER down the kmalloc() path. This can be triggered
    from user space.
    
    Since there is no point having a physically contiguous buffer here,
    let's avoid the above issue as well as reducing pressure on high order
    allocations by using vmalloc() instead.
    
    Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
    Cc: <stable@vger.kernel.org>
    Acked-by: Sam Ravnborg <sam@ravnborg.org>
    Link: https://lore.kernel.org/r/nycvar.YSQ.7.76.2003282214210.2671@knanqh.ubzr
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b027b30d1428eb5a3d117da5f6f266215836177d
Author: Nicolas Pitre <nico@fluxnic.net>
Date:   Sat Mar 28 17:32:42 2020 -0400

    vt: don't hardcode the mem allocation upper bound
    
    commit 2717769e204e83e65b8819c5e2ef3e5b6639b270 upstream.
    
    The code in vc_do_resize() bounds the memory allocation size to avoid
    exceeding MAX_ORDER down the kzalloc() call chain and generating a
    runtime warning triggerable from user space. However, not only is it
    unwise to use a literal value here, but MAX_ORDER may also be
    configurable based on CONFIG_FORCE_MAX_ZONEORDER.
    Let's use KMALLOC_MAX_SIZE instead.
    
    Note that prior commit bb1107f7c605 ("mm, slab: make sure that
    KMALLOC_MAX_SIZE will fit into MAX_ORDER") the KMALLOC_MAX_SIZE value
    could not be relied upon.
    
    Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
    Cc: <stable@vger.kernel.org> # v4.10+
    Link: https://lore.kernel.org/r/nycvar.YSQ.7.76.2003281702410.2671@knanqh.ubzr
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8f8d7f07d9514574624f0b96adf610d421f952a7
Author: Xiyu Yang <xiyuyang19@fudan.edu.cn>
Date:   Mon Apr 20 13:44:16 2020 +0800

    staging: comedi: Fix comedi_device refcnt leak in comedi_open
    
    commit 332e0e17ad49e084b7db670ef43b5eb59abd9e34 upstream.
    
    comedi_open() invokes comedi_dev_get_from_minor(), which returns a
    reference of the COMEDI device to "dev" with increased refcount.
    
    When comedi_open() returns, "dev" becomes invalid, so the refcount
    should be decreased to keep refcount balanced.
    
    The reference counting issue happens in one exception handling path of
    comedi_open(). When "cfp" allocation is failed, the refcnt increased by
    comedi_dev_get_from_minor() is not decreased, causing a refcnt leak.
    
    Fix this issue by calling comedi_dev_put() on this error path when "cfp"
    allocation is failed.
    
    Fixes: 20f083c07565 ("staging: comedi: prepare support for per-file read and write subdevices")
    Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Link: https://lore.kernel.org/r/1587361459-83622-1-git-send-email-xiyuyang19@fudan.edu.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 279dd75cec55c0c98a9af85b452fa73f5ac2da19
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Mon Apr 6 15:20:15 2020 +0100

    staging: comedi: dt2815: fix writing hi byte of analog output
    
    commit ed87d33ddbcd9a1c3b5ae87995da34e6f51a862c upstream.
    
    The DT2815 analog output command is 16 bits wide, consisting of the
    12-bit sample value in bits 15 to 4, the channel number in bits 3 to 1,
    and a voltage or current selector in bit 0.  Both bytes of the 16-bit
    command need to be written in turn to a single 8-bit data register.
    However, the driver currently only writes the low 8-bits.  It is broken
    and appears to have always been broken.
    
    Electronic copies of the DT2815 User's Manual seem impossible to find
    online, but looking at the source code, a best guess for the sequence
    the driver intended to use to write the analog output command is as
    follows:
    
    1. Wait for the status register to read 0x00.
    2. Write the low byte of the command to the data register.
    3. Wait for the status register to read 0x80.
    4. Write the high byte of the command to the data register.
    
    Step 4 is missing from the driver.  Add step 4 to (hopefully) fix the
    driver.
    
    Also add a "FIXME" comment about setting bit 0 of the low byte of the
    command.  Supposedly, it is used to choose between voltage output and
    current output, but the current driver always sets it to 1.
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200406142015.126982-1-abbotti@mev.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dba6465408b8bf58d29beb3ac74a2c9fe93c2737
Author: Chris Packham <chris.packham@alliedtelesis.co.nz>
Date:   Fri Apr 17 10:19:08 2020 +1200

    powerpc/setup_64: Set cache-line-size based on cache-block-size
    
    commit 94c0b013c98583614e1ad911e8795ca36da34a85 upstream.
    
    If {i,d}-cache-block-size is set and {i,d}-cache-line-size is not, use
    the block-size value for both. Per the devicetree spec cache-line-size
    is only needed if it differs from the block size.
    
    Originally the code would fallback from block size to line size. An
    error message was printed if both properties were missing.
    
    Later the code was refactored to use clearer names and logic but it
    inadvertently made line size a required property, meaning on systems
    without a line size property we fall back to the default from the
    cputable.
    
    On powernv (OPAL) platforms, since the introduction of device tree CPU
    features (5a61ef74f269 ("powerpc/64s: Support new device tree binding
    for discovering CPU features")), that has led to the wrong value being
    used, as the fallback value is incorrect for Power8/Power9 CPUs.
    
    The incorrect values flow through to the VDSO and also to the sysconf
    values, SC_LEVEL1_ICACHE_LINESIZE etc.
    
    Fixes: bd067f83b084 ("powerpc/64: Fix naming of cache block vs. cache line")
    Cc: stable@vger.kernel.org # v4.11+
    Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
    Reported-by: Qian Cai <cai@lca.pw>
    [mpe: Add even more detail to change log]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200416221908.7886-1-chris.packham@alliedtelesis.co.nz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 921b7b175605f04d3ca9acfdd110505cbcbd0b14
Author: Ahmad Fatoum <a.fatoum@pengutronix.de>
Date:   Mon Mar 23 09:19:33 2020 +0100

    ARM: imx: provide v7_cpu_resume() only on ARM_CPU_SUSPEND=y
    
    commit f1baca8896ae18e12c45552a4c4ae2086aa7e02c upstream.
    
    512a928affd5 ("ARM: imx: build v7_cpu_resume() unconditionally")
    introduced an unintended linker error for i.MX6 configurations that have
    ARM_CPU_SUSPEND=n which can happen if neither CONFIG_PM, CONFIG_CPU_IDLE,
    nor ARM_PSCI_FW are selected.
    
    Fix this by having v7_cpu_resume() compiled only when cpu_resume() it
    calls is available as well.
    
    The C declaration for the function remains unguarded to avoid future code
    inadvertently using a stub and introducing a regression to the bug the
    original commit fixed.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 512a928affd5 ("ARM: imx: build v7_cpu_resume() unconditionally")
    Reported-by: Clemens Gruber <clemens.gruber@pqgruber.com>
    Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
    Tested-by: Roland Hieber <rhi@pengutronix.de>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eabc107d20dad03d63d1e79ad16e20d77a6bcf86
Author: Paulo Alcantara <pc@cjr.nz>
Date:   Mon Apr 20 23:44:24 2020 -0300

    cifs: fix uninitialised lease_key in open_shroot()
    
    commit 0fe0781f29dd8ab618999e6bda33c782ebbdb109 upstream.
    
    SMB2_open_init() expects a pre-initialised lease_key when opening a
    file with a lease, so set pfid->lease_key prior to calling it in
    open_shroot().
    
    This issue was observed when performing some DFS failover tests and
    the lease key was never randomly generated.
    
    Signed-off-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Reviewed-by: Aurelien Aptel <aaptel@suse.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 562489ba1078785c069c4047068a33d53e9f02df
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Fri Apr 17 10:08:14 2020 +0300

    iwlwifi: mvm: fix inactive TID removal return value usage
    
    commit e6d419f943318e2b903e380dfd52a8dda6db3021 upstream.
    
    The function iwl_mvm_remove_inactive_tids() returns bool, so we
    should just check "if (ret)", not "if (ret >= 0)" (which would
    do nothing useful here). We obviously therefore cannot use the
    return value of the function for the free_queue, we need to use
    the queue (i) we're currently dealing with instead.
    
    Cc: stable@vger.kernel.org # v5.4+
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/iwlwifi.20200417100405.9d862ed72535.I9e27ccc3ee3c8855fc13682592b571581925dfbd@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1926b14bd8f383da8fc976161d72a7e4f089c8f
Author: Ilan Peer <ilan.peer@intel.com>
Date:   Fri Apr 17 10:08:13 2020 +0300

    iwlwifi: mvm: Do not declare support for ACK Enabled Aggregation
    
    commit 38af8d5a90a8c3b41ff0484855e24bd55b43ce9d upstream.
    
    As this was not supposed to be enabled to begin with.
    
    Cc: stable@vger.kernel.org # v4.19+
    Signed-off-by: Ilan Peer <ilan.peer@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/iwlwifi.20200417100405.53dbc3c6c36b.Idfe118546b92cc31548b2211472a5303c7de5909@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c93fb506bfaf8f3e42238bc221f1c33dee299490
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Fri Apr 17 10:08:12 2020 +0300

    iwlwifi: mvm: limit maximum queue appropriately
    
    commit e5b72e3bc4763152e24bf4b8333bae21cc526c56 upstream.
    
    Due to some hardware issues, queue 31 isn't usable on devices that have
    32 queues (7000, 8000, 9000 families), which is correctly reflected in
    the configuration and TX queue initialization.
    
    However, the firmware API and queue allocation code assumes that there
    are 32 queues, and if something actually attempts to use #31 this leads
    to a NULL-pointer dereference since it's not allocated.
    
    Fix this by limiting to 31 in the IWL_MVM_DQA_MAX_DATA_QUEUE, and also
    add some code to catch this earlier in the future, if the configuration
    changes perhaps.
    
    Cc: stable@vger.kernel.org # v4.9+
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/iwlwifi.20200417100405.98a79be2db6a.I3a4af6b03b87a6bc18db9b1ff9a812f397bee1fc@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4025ac3d7fb7c87bca0b862612c4a658093ea8c9
Author: Mordechay Goodstein <mordechay.goodstein@intel.com>
Date:   Fri Apr 17 10:08:10 2020 +0300

    iwlwifi: mvm: beacon statistics shouldn't go backwards
    
    commit 290d5e4951832e39d10f4184610dbf09038f8483 upstream.
    
    We reset statistics also in case that we didn't reassoc so in
    this cases keep last beacon counter.
    
    Cc: stable@vger.kernel.org # v4.19+
    Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/iwlwifi.20200417100405.1f9142751fbc.Ifbfd0f928a0a761110b8f4f2ca5483a61fb21131@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 222722be70de6b3da66938943dfe18af2e72cf86
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Fri Apr 17 10:08:09 2020 +0300

    iwlwifi: pcie: actually release queue memory in TVQM
    
    commit b98b33d5560a2d940f3b80f6768a6177bf3dfbc0 upstream.
    
    The iwl_trans_pcie_dyn_txq_free() function only releases the frames
    that may be left on the queue by calling iwl_pcie_gen2_txq_unmap(),
    but doesn't actually free the DMA ring or byte-count tables for the
    queue. This leads to pretty large memory leaks (at least before my
    queue size improvements), in particular in monitor/sniffer mode on
    channel hopping since this happens on every channel change.
    
    This was also now more evident after the move to a DMA pool for the
    byte count tables, showing messages such as
    
      BUG iwlwifi:bc (...): Objects remaining in iwlwifi:bc on __kmem_cache_shutdown()
    
    This fixes https://bugzilla.kernel.org/show_bug.cgi?id=206811.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Fixes: 6b35ff91572f ("iwlwifi: pcie: introduce a000 TX queues management")
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/iwlwifi.20200417100405.f5f4c4193ec1.Id5feebc9b4318041913a9c89fc1378bb5454292c@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e69c9e6bbf304835b8ea0566c1e046b7dc4b3a7
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Fri Apr 17 12:40:31 2020 -0400

    SUNRPC: Fix backchannel RPC soft lockups
    
    commit 6221f1d9b63fed6260273e59a2b89ab30537a811 upstream.
    
    Currently, after the forward channel connection goes away,
    backchannel operations are causing soft lockups on the server
    because call_transmit_status's SOFTCONN logic ignores ENOTCONN.
    Such backchannel Calls are aggressively retried until the client
    reconnects.
    
    Backchannel Calls should use RPC_TASK_NOCONNECT rather than
    RPC_TASK_SOFTCONN. If there is no forward connection, the server is
    not capable of establishing a connection back to the client, thus
    that backchannel request should fail before the server attempts to
    send it. Commit 58255a4e3ce5 ("NFSD: NFSv4 callback client should
    use RPC_TASK_SOFTCONN") was merged several years before
    RPC_TASK_NOCONNECT was available.
    
    Because setup_callback_client() explicitly sets NOPING, the NFSv4.0
    callback connection depends on the first callback RPC to initiate
    a connection to the client. Thus NFSv4.0 needs to continue to use
    RPC_TASK_SOFTCONN.
    
    Suggested-by: Trond Myklebust <trondmy@hammerspace.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Cc: <stable@vger.kernel.org> # v4.20+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d62d85260ac4b914c804690b38d09e03517f8241
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Apr 23 11:13:49 2020 +0200

    mac80211: populate debugfs only after cfg80211 init
    
    commit 6cb5f3ea4654faf8c28b901266e960b1a4787b26 upstream.
    
    When fixing the initialization race, we neglected to account for
    the fact that debugfs is initialized in wiphy_register(), and
    some debugfs things went missing (or rather were rerooted to the
    global debugfs root).
    
    Fix this by adding debugfs entries only after wiphy_register().
    This requires some changes in the rate control code since it
    currently adds debugfs at alloc time, which can no longer be
    done after the reordering.
    
    Reported-by: Jouni Malinen <j@w1.fi>
    Reported-by: kernel test robot <rong.a.chen@intel.com>
    Reported-by: Hauke Mehrtens <hauke@hauke-m.de>
    Reported-by: Felix Fietkau <nbd@nbd.name>
    Cc: stable@vger.kernel.org
    Fixes: 52e04b4ce5d0 ("mac80211: fix race in ieee80211_register_hw()")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Acked-by: Sumit Garg <sumit.garg@linaro.org>
    Link: https://lore.kernel.org/r/20200423111344.0e00d3346f12.Iadc76a03a55093d94391fc672e996a458702875d@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f67f3317ceb3fb36b30b856b152c148fdb5f6b90
Author: Gyeongtaek Lee <gt82.lee@samsung.com>
Date:   Sat Apr 18 13:13:20 2020 +0900

    ASoC: dapm: fixup dapm kcontrol widget
    
    commit ebf1474745b4373fdde0fcf32d9d1f369b50b212 upstream.
    
    snd_soc_dapm_kcontrol widget which is created by autodisable control
    should contain correct on_val, mask and shift because it is set when the
    widget is powered and changed value is applied on registers by following
    code in dapm_seq_run_coalesced().
    
                    mask |= w->mask << w->shift;
                    if (w->power)
                            value |= w->on_val << w->shift;
                    else
                            value |= w->off_val << w->shift;
    
    Shift on the mask in dapm_kcontrol_data_alloc() is removed to prevent
    double shift.
    And, on_val in dapm_kcontrol_set_value() is modified to get correct
    value in the dapm_seq_run_coalesced().
    
    Signed-off-by: Gyeongtaek Lee <gt82.lee@samsung.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/000001d61537$b212f620$1638e260$@samsung.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83f82fd5552c91f4f01921428c871dc8d82abccf
Author: Paul Moore <paul@paul-moore.com>
Date:   Mon Apr 20 16:24:34 2020 -0400

    audit: check the length of userspace generated audit records
    
    commit 763dafc520add02a1f4639b500c509acc0ea8e5b upstream.
    
    Commit 756125289285 ("audit: always check the netlink payload length
    in audit_receive_msg()") fixed a number of missing message length
    checks, but forgot to check the length of userspace generated audit
    records.  The good news is that you need CAP_AUDIT_WRITE to submit
    userspace audit records, which is generally only given to trusted
    processes, so the impact should be limited.
    
    Cc: stable@vger.kernel.org
    Fixes: 756125289285 ("audit: always check the netlink payload length in audit_receive_msg()")
    Reported-by: syzbot+49e69b4d71a420ceda3e@syzkaller.appspotmail.com
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20821047aca466571b81e04cc24e2944564ecc86
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Mon Apr 20 11:41:50 2020 -0500

    signal: Avoid corrupting si_pid and si_uid in do_notify_parent
    
    commit 61e713bdca3678e84815f2427f7a063fc353a1fc upstream.
    
    Christof Meerwald <cmeerw@cmeerw.org> writes:
    > Hi,
    >
    > this is probably related to commit
    > 7a0cf094944e2540758b7f957eb6846d5126f535 (signal: Correct namespace
    > fixups of si_pid and si_uid).
    >
    > With a 5.6.5 kernel I am seeing SIGCHLD signals that don't include a
    > properly set si_pid field - this seems to happen for multi-threaded
    > child processes.
    >
    > A simple test program (based on the sample from the signalfd man page):
    >
    > #include <sys/signalfd.h>
    > #include <signal.h>
    > #include <unistd.h>
    > #include <spawn.h>
    > #include <stdlib.h>
    > #include <stdio.h>
    >
    > #define handle_error(msg) \
    >     do { perror(msg); exit(EXIT_FAILURE); } while (0)
    >
    > int main(int argc, char *argv[])
    > {
    >   sigset_t mask;
    >   int sfd;
    >   struct signalfd_siginfo fdsi;
    >   ssize_t s;
    >
    >   sigemptyset(&mask);
    >   sigaddset(&mask, SIGCHLD);
    >
    >   if (sigprocmask(SIG_BLOCK, &mask, NULL) == -1)
    >     handle_error("sigprocmask");
    >
    >   pid_t chldpid;
    >   char *chldargv[] = { "./sfdclient", NULL };
    >   posix_spawn(&chldpid, "./sfdclient", NULL, NULL, chldargv, NULL);
    >
    >   sfd = signalfd(-1, &mask, 0);
    >   if (sfd == -1)
    >     handle_error("signalfd");
    >
    >   for (;;) {
    >     s = read(sfd, &fdsi, sizeof(struct signalfd_siginfo));
    >     if (s != sizeof(struct signalfd_siginfo))
    >       handle_error("read");
    >
    >     if (fdsi.ssi_signo == SIGCHLD) {
    >       printf("Got SIGCHLD %d %d %d %d\n",
    >           fdsi.ssi_status, fdsi.ssi_code,
    >           fdsi.ssi_uid, fdsi.ssi_pid);
    >       return 0;
    >     } else {
    >       printf("Read unexpected signal\n");
    >     }
    >   }
    > }
    >
    >
    > and a multi-threaded client to test with:
    >
    > #include <unistd.h>
    > #include <pthread.h>
    >
    > void *f(void *arg)
    > {
    >   sleep(100);
    > }
    >
    > int main()
    > {
    >   pthread_t t[8];
    >
    >   for (int i = 0; i != 8; ++i)
    >   {
    >     pthread_create(&t[i], NULL, f, NULL);
    >   }
    > }
    >
    > I tried to do a bit of debugging and what seems to be happening is
    > that
    >
    >   /* From an ancestor pid namespace? */
    >   if (!task_pid_nr_ns(current, task_active_pid_ns(t))) {
    >
    > fails inside task_pid_nr_ns because the check for "pid_alive" fails.
    >
    > This code seems to be called from do_notify_parent and there we
    > actually have "tsk != current" (I am assuming both are threads of the
    > current process?)
    
    I instrumented the code with a warning and received the following backtrace:
    > WARNING: CPU: 0 PID: 777 at kernel/pid.c:501 __task_pid_nr_ns.cold.6+0xc/0x15
    > Modules linked in:
    > CPU: 0 PID: 777 Comm: sfdclient Not tainted 5.7.0-rc1userns+ #2924
    > Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
    > RIP: 0010:__task_pid_nr_ns.cold.6+0xc/0x15
    > Code: ff 66 90 48 83 ec 08 89 7c 24 04 48 8d 7e 08 48 8d 74 24 04 e8 9a b6 44 00 48 83 c4 08 c3 48 c7 c7 59 9f ac 82 e8 c2 c4 04 00 <0f> 0b e9 3fd
    > RSP: 0018:ffffc9000042fbf8 EFLAGS: 00010046
    > RAX: 000000000000000c RBX: 0000000000000000 RCX: ffffc9000042faf4
    > RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffff81193d29
    > RBP: ffffc9000042fc18 R08: 0000000000000000 R09: 0000000000000001
    > R10: 000000100f938416 R11: 0000000000000309 R12: ffff8880b941c140
    > R13: 0000000000000000 R14: 0000000000000000 R15: ffff8880b941c140
    > FS:  0000000000000000(0000) GS:ffff8880bca00000(0000) knlGS:0000000000000000
    > CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    > CR2: 00007f2e8c0a32e0 CR3: 0000000002e10000 CR4: 00000000000006f0
    > Call Trace:
    >  send_signal+0x1c8/0x310
    >  do_notify_parent+0x50f/0x550
    >  release_task.part.21+0x4fd/0x620
    >  do_exit+0x6f6/0xaf0
    >  do_group_exit+0x42/0xb0
    >  get_signal+0x13b/0xbb0
    >  do_signal+0x2b/0x670
    >  ? __audit_syscall_exit+0x24d/0x2b0
    >  ? rcu_read_lock_sched_held+0x4d/0x60
    >  ? kfree+0x24c/0x2b0
    >  do_syscall_64+0x176/0x640
    >  ? trace_hardirqs_off_thunk+0x1a/0x1c
    >  entry_SYSCALL_64_after_hwframe+0x49/0xb3
    
    The immediate problem is as Christof noticed that "pid_alive(current) == false".
    This happens because do_notify_parent is called from the last thread to exit
    in a process after that thread has been reaped.
    
    The bigger issue is that do_notify_parent can be called from any
    process that manages to wait on a thread of a multi-threaded process
    from wait_task_zombie.  So any logic based upon current for
    do_notify_parent is just nonsense, as current can be pretty much
    anything.
    
    So change do_notify_parent to call __send_signal directly.
    
    Inspecting the code it appears this problem has existed since the pid
    namespace support started handling this case in 2.6.30.  This fix only
    backports to 7a0cf094944e ("signal: Correct namespace fixups of si_pid and si_uid")
    where the problem logic was moved out of __send_signal and into send_signal.
    
    Cc: stable@vger.kernel.org
    Fixes: 6588c1e3ff01 ("signals: SI_USER: Masquerade si_pid when crossing pid ns boundary")
    Ref: 921cf9f63089 ("signals: protect cinit from unblocked SIG_DFL signals")
    Link: https://lore.kernel.org/lkml/20200419201336.GI22017@edge.cmeerw.net/
    Reported-by: Christof Meerwald <cmeerw@cmeerw.org>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b4e23a945bd539f2daad48796605908947bfa29
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Apr 22 16:14:57 2020 -0400

    usb-storage: Add unusual_devs entry for JMicron JMS566
    
    commit 94f9c8c3c404ee1f7aaff81ad4f24aec4e34a78b upstream.
    
    Cyril Roelandt reports that his JMicron JMS566 USB-SATA bridge fails
    to handle WRITE commands with the FUA bit set, even though it claims
    to support FUA.  (Oddly enough, a later version of the same bridge,
    version 2.03 as opposed to 1.14, doesn't claim to support FUA.  Also
    oddly, the bridge _does_ support FUA when using the UAS transport
    instead of the Bulk-Only transport -- but this device was blacklisted
    for uas in commit bc3bdb12bbb3 ("usb-storage: Disable UAS on JMicron
    SATA enclosure") for apparently unrelated reasons.)
    
    This patch adds a usb-storage unusual_devs entry with the BROKEN_FUA
    flag.  This allows the bridge to work properly with usb-storage.
    
    Reported-and-tested-by: Cyril Roelandt <tipecaml@gmail.com>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    CC: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/Pine.LNX.4.44L0.2004221613110.11262-100000@iolanthe.rowland.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9de9003b255ee132f391080febed1f1785540e41
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Fri Apr 17 12:59:59 2020 +0200

    tty: rocket, avoid OOB access
    
    commit 7127d24372bf23675a36edc64d092dc7fd92ebe8 upstream.
    
    init_r_port can access pc104 array out of bounds. pc104 is a 2D array
    defined to have 4 members. Each member has 8 submembers.
    * we can have more than 4 (PCI) boards, i.e. [board] can be OOB
    * line is not modulo-ed by anything, so the first line on the second
      board can be 4, on the 3rd 12 or alike (depending on previously
      registered boards). It's zero only on the first line of the first
      board. So even [line] can be OOB, quite soon (with the 2nd registered
      board already).
    
    This code is broken for ages, so just avoid the OOB accesses and don't
    try to fix it as we would need to find out the correct line number. Use
    the default: RS232, if we are out.
    
    Generally, if anyone needs to set the interface types, a module parameter
    is past the last thing that should be used for this purpose. The
    parameters' description says it's for ISA cards anyway.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: stable <stable@vger.kernel.org>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Link: https://lore.kernel.org/r/20200417105959.15201-2-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1c0d3243dbe18b2225723c3068eef992098186b
Author: Andrew Melnychenko <andrew@daynix.com>
Date:   Tue Apr 14 22:15:03 2020 +0300

    tty: hvc: fix buffer overflow during hvc_alloc().
    
    commit 9a9fc42b86c06120744555fea43fdcabe297c656 upstream.
    
    If there is a lot(more then 16) of virtio-console devices
    or virtio_console module is reloaded
    - buffers 'vtermnos' and 'cons_ops' are overflowed.
    In older kernels it overruns spinlock which leads to kernel freezing:
    https://bugzilla.redhat.com/show_bug.cgi?id=1786239
    
    To reproduce the issue, you can try simple script that
    loads/unloads module. Something like this:
    while [ 1 ]
    do
      modprobe virtio_console
      sleep 2
      modprobe -r virtio_console
      sleep 2
    done
    
    Description of problem:
    Guest get 'Call Trace' when loading module "virtio_console"
    and unloading it frequently - clearly reproduced on kernel-4.18.0:
    
    [   81.498208] ------------[ cut here ]------------
    [   81.499263] pvqspinlock: lock 0xffffffff92080020 has corrupted value 0xc0774ca0!
    [   81.501000] WARNING: CPU: 0 PID: 785 at kernel/locking/qspinlock_paravirt.h:500 __pv_queued_spin_unlock_slowpath+0xc0/0xd0
    [   81.503173] Modules linked in: virtio_console fuse xt_CHECKSUM ipt_MASQUERADE xt_conntrack ipt_REJECT nft_counter nf_nat_tftp nft_objref nf_conntrack_tftp tun bridge stp llc nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nf_tables_set nft_chain_nat_ipv6 nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 nft_chain_route_ipv6 nft_chain_nat_ipv4 nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack nft_chain_route_ipv4 ip6_tables nft_compat ip_set nf_tables nfnetlink sunrpc bochs_drm drm_vram_helper ttm drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm i2c_piix4 pcspkr crct10dif_pclmul crc32_pclmul joydev ghash_clmulni_intel ip_tables xfs libcrc32c sd_mod sg ata_generic ata_piix virtio_net libata crc32c_intel net_failover failover serio_raw virtio_scsi dm_mirror dm_region_hash dm_log dm_mod [last unloaded: virtio_console]
    [   81.517019] CPU: 0 PID: 785 Comm: kworker/0:2 Kdump: loaded Not tainted 4.18.0-167.el8.x86_64 #1
    [   81.518639] Hardware name: Red Hat KVM, BIOS 1.12.0-5.scrmod+el8.2.0+5159+d8aa4d83 04/01/2014
    [   81.520205] Workqueue: events control_work_handler [virtio_console]
    [   81.521354] RIP: 0010:__pv_queued_spin_unlock_slowpath+0xc0/0xd0
    [   81.522450] Code: 07 00 48 63 7a 10 e8 bf 64 f5 ff 66 90 c3 8b 05 e6 cf d6 01 85 c0 74 01 c3 8b 17 48 89 fe 48 c7 c7 38 4b 29 91 e8 3a 6c fa ff <0f> 0b c3 0f 0b 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 48
    [   81.525830] RSP: 0018:ffffb51a01ffbd70 EFLAGS: 00010282
    [   81.526798] RAX: 0000000000000000 RBX: 0000000000000010 RCX: 0000000000000000
    [   81.528110] RDX: ffff9e66f1826480 RSI: ffff9e66f1816a08 RDI: ffff9e66f1816a08
    [   81.529437] RBP: ffffffff9153ff10 R08: 000000000000026c R09: 0000000000000053
    [   81.530732] R10: 0000000000000000 R11: ffffb51a01ffbc18 R12: ffff9e66cd682200
    [   81.532133] R13: ffffffff9153ff10 R14: ffff9e6685569500 R15: ffff9e66cd682000
    [   81.533442] FS:  0000000000000000(0000) GS:ffff9e66f1800000(0000) knlGS:0000000000000000
    [   81.534914] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   81.535971] CR2: 00005624c55b14d0 CR3: 00000003a023c000 CR4: 00000000003406f0
    [   81.537283] Call Trace:
    [   81.537763]  __raw_callee_save___pv_queued_spin_unlock_slowpath+0x11/0x20
    [   81.539011]  .slowpath+0x9/0xe
    [   81.539585]  hvc_alloc+0x25e/0x300
    [   81.540237]  init_port_console+0x28/0x100 [virtio_console]
    [   81.541251]  handle_control_message.constprop.27+0x1c4/0x310 [virtio_console]
    [   81.542546]  control_work_handler+0x70/0x10c [virtio_console]
    [   81.543601]  process_one_work+0x1a7/0x3b0
    [   81.544356]  worker_thread+0x30/0x390
    [   81.545025]  ? create_worker+0x1a0/0x1a0
    [   81.545749]  kthread+0x112/0x130
    [   81.546358]  ? kthread_flush_work_fn+0x10/0x10
    [   81.547183]  ret_from_fork+0x22/0x40
    [   81.547842] ---[ end trace aa97649bd16c8655 ]---
    [   83.546539] general protection fault: 0000 [#1] SMP NOPTI
    [   83.547422] CPU: 5 PID: 3225 Comm: modprobe Kdump: loaded Tainted: G        W        --------- -  - 4.18.0-167.el8.x86_64 #1
    [   83.549191] Hardware name: Red Hat KVM, BIOS 1.12.0-5.scrmod+el8.2.0+5159+d8aa4d83 04/01/2014
    [   83.550544] RIP: 0010:__pv_queued_spin_lock_slowpath+0x19a/0x2a0
    [   83.551504] Code: c4 c1 ea 12 41 be 01 00 00 00 4c 8d 6d 14 41 83 e4 03 8d 42 ff 49 c1 e4 05 48 98 49 81 c4 40 a5 02 00 4c 03 24 c5 60 48 34 91 <49> 89 2c 24 b8 00 80 00 00 eb 15 84 c0 75 0a 41 0f b6 54 24 14 84
    [   83.554449] RSP: 0018:ffffb51a0323fdb0 EFLAGS: 00010202
    [   83.555290] RAX: 000000000000301c RBX: ffffffff92080020 RCX: 0000000000000001
    [   83.556426] RDX: 000000000000301d RSI: 0000000000000000 RDI: 0000000000000000
    [   83.557556] RBP: ffff9e66f196a540 R08: 000000000000028a R09: ffff9e66d2757788
    [   83.558688] R10: 0000000000000000 R11: 0000000000000000 R12: 646e61725f770b07
    [   83.559821] R13: ffff9e66f196a554 R14: 0000000000000001 R15: 0000000000180000
    [   83.560958] FS:  00007fd5032e8740(0000) GS:ffff9e66f1940000(0000) knlGS:0000000000000000
    [   83.562233] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   83.563149] CR2: 00007fd5022b0da0 CR3: 000000038c334000 CR4: 00000000003406e0
    
    Signed-off-by: Andrew Melnychenko <andrew@daynix.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200414191503.3471783-1-andrew@daynix.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52ca311e5f82dc4b75bcdd5a32dca6a1fbf7dfa5
Author: Uros Bizjak <ubizjak@gmail.com>
Date:   Tue Apr 14 09:14:14 2020 +0200

    KVM: VMX: Enable machine check support for 32bit targets
    
    commit fb56baae5ea509e63c2a068d66a4d8ea91969fca upstream.
    
    There is no reason to limit the use of do_machine_check
    to 64bit targets. MCE handling works for both target familes.
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Sean Christopherson <sean.j.christopherson@intel.com>
    Cc: stable@vger.kernel.org
    Fixes: a0861c02a981 ("KVM: Add VT-x machine check support")
    Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
    Message-Id: <20200414071414.45636-1-ubizjak@gmail.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 878127ac8b7013d7d7fad9d160654da5b6195902
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Tue Apr 7 23:40:58 2020 -0700

    KVM: Check validity of resolved slot when searching memslots
    
    commit b6467ab142b708dd076f6186ca274f14af379c72 upstream.
    
    Check that the resolved slot (somewhat confusingly named 'start') is a
    valid/allocated slot before doing the final comparison to see if the
    specified gfn resides in the associated slot.  The resolved slot can be
    invalid if the binary search loop terminated because the search index
    was incremented beyond the number of used slots.
    
    This bug has existed since the binary search algorithm was introduced,
    but went unnoticed because KVM statically allocated memory for the max
    number of slots, i.e. the access would only be truly out-of-bounds if
    all possible slots were allocated and the specified gfn was less than
    the base of the lowest memslot.  Commit 36947254e5f98 ("KVM: Dynamically
    size memslot array based on number of used slots") eliminated the "all
    possible slots allocated" condition and made the bug embarrasingly easy
    to hit.
    
    Fixes: 9c1a5d38780e6 ("kvm: optimize GFN to memslot lookup with large slots amount")
    Reported-by: syzbot+d889b59b2bb87d4047a2@syzkaller.appspotmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Message-Id: <20200408064059.8957-2-sean.j.christopherson@intel.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 347125705f023fed57702693dd09503f482679c9
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Tue Apr 7 23:40:59 2020 -0700

    KVM: s390: Return last valid slot if approx index is out-of-bounds
    
    commit 97daa028f3f621adff2c4f7b15fe0874e5b5bd6c upstream.
    
    Return the index of the last valid slot from gfn_to_memslot_approx() if
    its binary search loop yielded an out-of-bounds index.  The index can
    be out-of-bounds if the specified gfn is less than the base of the
    lowest memslot (which is also the last valid memslot).
    
    Note, the sole caller, kvm_s390_get_cmma(), ensures used_slots is
    non-zero.
    
    Fixes: afdad61615cc3 ("KVM: s390: Fix storage attributes migration with memory slots")
    Cc: stable@vger.kernel.org # 4.19.x: 0774a964ef56: KVM: Fix out of range accesses to memslots
    Cc: stable@vger.kernel.org # 4.19.x
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Message-Id: <20200408064059.8957-3-sean.j.christopherson@intel.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3fc644fd6100ad6afa1a1a0a17f2a7ebb3412148
Author: George Wilson <gcwilson@linux.ibm.com>
Date:   Thu Mar 19 23:27:58 2020 -0400

    tpm: ibmvtpm: retry on H_CLOSED in tpm_ibmvtpm_send()
    
    commit eba5cf3dcb844c82f54d4a857e124824e252206d upstream.
    
    tpm_ibmvtpm_send() can fail during PowerVM Live Partition Mobility resume
    with an H_CLOSED return from ibmvtpm_send_crq().  The PAPR says, 'The
    "partner partition suspended" transport event disables the associated CRQ
    such that any H_SEND_CRQ hcall() to the associated CRQ returns H_Closed
    until the CRQ has been explicitly enabled using the H_ENABLE_CRQ hcall.'
    This patch adds a check in tpm_ibmvtpm_send() for an H_CLOSED return from
    ibmvtpm_send_crq() and in that case calls tpm_ibmvtpm_resume() and
    retries the ibmvtpm_send_crq() once.
    
    Cc: stable@vger.kernel.org # 3.7.x
    Fixes: 132f76294744 ("drivers/char/tpm: Add new device driver to support IBM vTPM")
    Reported-by: Linh Pham <phaml@us.ibm.com>
    Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
    Signed-off-by: George Wilson <gcwilson@linux.ibm.com>
    Tested-by: Linh Pham <phaml@us.ibm.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16244edc3bbe6ef692bf07fac1bd2744cd29d6d4
Author: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
Date:   Tue Apr 14 19:42:26 2020 +0800

    tpm: fix wrong return value in tpm_pcr_extend
    
    commit 29cb79795e324a8b65e7891d76f8f6ca911ba440 upstream.
    
    For the algorithm that does not match the bank, a positive
    value EINVAL is returned here. I think this is a typo error.
    It is necessary to return an error value.
    
    Cc: stable@vger.kernel.org # 5.4.x
    Fixes: 9f75c8224631 ("KEYS: trusted: correctly initialize digests and fix locking issue")
    Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
    Reviewed-by: Roberto Sassu <roberto.sassu@huawei.com>
    Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 86f1c523d42255923ff2aa3c61760b1a1f7325a0
Author: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date:   Sun Apr 12 20:04:12 2020 +0300

    tpm/tpm_tis: Free IRQ if probing fails
    
    commit b160c94be5d2816b62c8ac338605668304242959 upstream.
    
    Call disable_interrupts() if we have to revert to polling in order not to
    unnecessarily reserve the IRQ for the life-cycle of the driver.
    
    Cc: stable@vger.kernel.org # 4.5.x
    Reported-by: Hans de Goede <hdegoede@redhat.com>
    Fixes: e3837e74a06d ("tpm_tis: Refactor the interrupt setup")
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 387039b25077f15c53520028437ab7358a7278fc
Author: Alexander Tsoy <alexander@tsoy.me>
Date:   Sat Apr 18 20:58:15 2020 +0300

    ALSA: usb-audio: Filter out unsupported sample rates on Focusrite devices
    
    commit 1c826792586f526a5a5cd21d55aad388f5bb0b23 upstream.
    
    Many Focusrite devices supports a limited set of sample rates per
    altsetting. These includes audio interfaces with ADAT ports:
     - Scarlett 18i6, 18i8 1st gen, 18i20 1st gen;
     - Scarlett 18i8 2nd gen, 18i20 2nd gen;
     - Scarlett 18i8 3rd gen, 18i20 3rd gen;
     - Clarett 2Pre USB, 4Pre USB, 8Pre USB.
    
    Maximum rate is exposed in the last 4 bytes of Format Type descriptor
    which has a non-standard bLength = 10.
    
    Tested-by: Alexey Skobkin <skobkin-ru@ya.ru>
    Signed-off-by: Alexander Tsoy <alexander@tsoy.me>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200418175815.12211-1-alexander@tsoy.me
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5cd821536294d69506dbfb9529ac48105ee9a63
Author: Xiyu Yang <xiyuyang19@fudan.edu.cn>
Date:   Thu Apr 23 12:54:19 2020 +0800

    ALSA: usb-audio: Fix usb audio refcnt leak when getting spdif
    
    commit 59e1947ca09ebd1cae147c08c7c41f3141233c84 upstream.
    
    snd_microii_spdif_default_get() invokes snd_usb_lock_shutdown(), which
    increases the refcount of the snd_usb_audio object "chip".
    
    When snd_microii_spdif_default_get() returns, local variable "chip"
    becomes invalid, so the refcount should be decreased to keep refcount
    balanced.
    
    The reference counting issue happens in several exception handling paths
    of snd_microii_spdif_default_get(). When those error scenarios occur
    such as usb_ifnum_to_if() returns NULL, the function forgets to decrease
    the refcnt increased by snd_usb_lock_shutdown(), causing a refcnt leak.
    
    Fix this issue by jumping to "end" label when those error scenarios
    occur.
    
    Fixes: 447d6275f0c2 ("ALSA: usb-audio: Add sanity checks for endpoint accesses")
    Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn>
    Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1587617711-13200-1-git-send-email-xiyuyang19@fudan.edu.cn
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dbb11f1d6d331e521bd512f349f5c069dcc55efe
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Apr 15 18:25:23 2020 +0200

    ALSA: hda/hdmi: Add module option to disable audio component binding
    
    commit b392350ec3f229ad9603d3816f753479e441d99a upstream.
    
    As the recent regression showed, we want sometimes to turn off the
    audio component binding just for debugging.  This patch adds the
    module option to control it easily without compilation.
    
    Fixes: ade49db337a9 ("ALSA: hda/hdmi - Allow audio component for AMD/ATI and Nvidia HDMI")
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=207223
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200415162523.27499-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e1f9d36280f14135b83263c8ee5b35bf58cfdb8
Author: Kailang Yang <kailang@realtek.com>
Date:   Thu Apr 23 14:18:31 2020 +0800

    ALSA: hda/realtek - Add new codec supported for ALC245
    
    commit 7fbdcd8301a84c09cebfa64f1317a6dafeec9188 upstream.
    
    Enable new codec supported for ALC245.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/8c0804738b2c42439f59c39c8437817f@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0939d06af06fb0f70dba2d4e1435a049d3a09add
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Apr 18 21:06:39 2020 +0200

    ALSA: hda/realtek - Fix unexpected init_amp override
    
    commit 67791202c5e069cf2ba51db0718d56c634709e78 upstream.
    
    The commit 1c76aa5fb48d ("ALSA: hda/realtek - Allow skipping
    spec->init_amp detection") changed the way to assign spec->init_amp
    field that specifies the way to initialize the amp.  Along with the
    change, the commit also replaced a few fixups that set spec->init_amp
    in HDA_FIXUP_ACT_PROBE with HDA_FIXUP_ACT_PRE_PROBE.  This was rather
    aligning to the other fixups, and not supposed to change the actual
    behavior.
    
    However, this change turned out to cause a regression on FSC S7020,
    which hit exactly the above.  The reason was that there is still one
    place that overrides spec->init_amp after HDA_FIXUP_ACT_PRE_PROBE
    call, namely in alc_ssid_check().
    
    This patch fixes the regression by adding the proper spec->init_amp
    override check, i.e. verifying whether it's still ALC_INIT_UNDEFINED.
    
    Fixes: 1c76aa5fb48d ("ALSA: hda/realtek - Allow skipping spec->init_amp detection")
    Cc: <stable@vger.kernel.org>
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=207329
    Link: https://lore.kernel.org/r/20200418190639.10082-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16e373fe61cb74da7f7a5081dae5c168b2c82f7c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Apr 20 09:55:29 2020 +0200

    ALSA: usx2y: Fix potential NULL dereference
    
    commit 7686e3485253635c529cdd5f416fc640abaf076f upstream.
    
    The error handling code in usX2Y_rate_set() may hit a potential NULL
    dereference when an error occurs before allocating all us->urb[].
    Add a proper NULL check for fixing the corner case.
    
    Reported-by: Lin Yi <teroincn@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200420075529.27203-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 000515184f6f2579f1931a8538f84dacda2d0be5
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Mon Apr 20 18:14:23 2020 -0700

    tools/vm: fix cross-compile build
    
    commit cf01699ee220c38099eb3e43ce3d10690c8b7060 upstream.
    
    Commit 7ed1c1901fe5 ("tools: fix cross-compile var clobbering") moved
    the setup of the CC variable to tools/scripts/Makefile.include to make
    the behavior consistent across all the tools Makefiles.
    
    As the vm tools missed the include we end up with the wrong CC in a
    cross-compiling evironment.
    
    Fixes: 7ed1c1901fe5 (tools: fix cross-compile var clobbering)
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Martin Kelly <martin@martingkelly.com>
    Cc: <stable@vger.kernel.org>
    Link: http://lkml.kernel.org/r/20200416104748.25243-1-l.stach@pengutronix.de
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5126bdeaf980b1dab8dba400001c234787a20afc
Author: Muchun Song <songmuchun@bytedance.com>
Date:   Mon Apr 20 18:14:04 2020 -0700

    mm/ksm: fix NULL pointer dereference when KSM zero page is enabled
    
    commit 56df70a63ed5d989c1d36deee94cae14342be6e9 upstream.
    
    find_mergeable_vma() can return NULL.  In this case, it leads to a crash
    when we access vm_mm(its offset is 0x40) later in write_protect_page.
    And this case did happen on our server.  The following call trace is
    captured in kernel 4.19 with the following patch applied and KSM zero
    page enabled on our server.
    
      commit e86c59b1b12d ("mm/ksm: improve deduplication of zero pages with colouring")
    
    So add a vma check to fix it.
    
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000040
      Oops: 0000 [#1] SMP NOPTI
      CPU: 9 PID: 510 Comm: ksmd Kdump: loaded Tainted: G OE 4.19.36.bsk.9-amd64 #4.19.36.bsk.9
      RIP: try_to_merge_one_page+0xc7/0x760
      Code: 24 58 65 48 33 34 25 28 00 00 00 89 e8 0f 85 a3 06 00 00 48 83 c4
            60 5b 5d 41 5c 41 5d 41 5e 41 5f c3 48 8b 46 08 a8 01 75 b8 <49>
            8b 44 24 40 4c 8d 7c 24 20 b9 07 00 00 00 4c 89 e6 4c 89 ff 48
      RSP: 0018:ffffadbdd9fffdb0 EFLAGS: 00010246
      RAX: ffffda83ffd4be08 RBX: ffffda83ffd4be40 RCX: 0000002c6e800000
      RDX: 0000000000000000 RSI: ffffda83ffd4be40 RDI: 0000000000000000
      RBP: ffffa11939f02ec0 R08: 0000000094e1a447 R09: 00000000abe76577
      R10: 0000000000000962 R11: 0000000000004e6a R12: 0000000000000000
      R13: ffffda83b1e06380 R14: ffffa18f31f072c0 R15: ffffda83ffd4be40
      FS: 0000000000000000(0000) GS:ffffa0da43b80000(0000) knlGS:0000000000000000
      CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000040 CR3: 0000002c77c0a003 CR4: 00000000007626e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      PKRU: 55555554
      Call Trace:
        ksm_scan_thread+0x115e/0x1960
        kthread+0xf5/0x130
        ret_from_fork+0x1f/0x30
    
    [songmuchun@bytedance.com: if the vma is out of date, just exit]
      Link: http://lkml.kernel.org/r/20200416025034.29780-1-songmuchun@bytedance.com
    [akpm@linux-foundation.org: add the conventional braces, replace /** with /*]
    Fixes: e86c59b1b12d ("mm/ksm: improve deduplication of zero pages with colouring")
    Co-developed-by: Xiongchun Duan <duanxiongchun@bytedance.com>
    Signed-off-by: Muchun Song <songmuchun@bytedance.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Kirill Tkhai <ktkhai@virtuozzo.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Yang Shi <yang.shi@linux.alibaba.com>
    Cc: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
    Cc: Markus Elfring <Markus.Elfring@web.de>
    Cc: <stable@vger.kernel.org>
    Link: http://lkml.kernel.org/r/20200416025034.29780-1-songmuchun@bytedance.com
    Link: http://lkml.kernel.org/r/20200414132905.83819-1-songmuchun@bytedance.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c88e95cd167c57b27fe473ad3c4edd4dcadf660
Author: Longpeng <longpeng2@huawei.com>
Date:   Mon Apr 20 18:13:51 2020 -0700

    mm/hugetlb: fix a addressing exception caused by huge_pte_offset
    
    commit 3c1d7e6ccb644d517a12f73a7ff200870926f865 upstream.
    
    Our machine encountered a panic(addressing exception) after run for a
    long time and the calltrace is:
    
        RIP: hugetlb_fault+0x307/0xbe0
        RSP: 0018:ffff9567fc27f808  EFLAGS: 00010286
        RAX: e800c03ff1258d48 RBX: ffffd3bb003b69c0 RCX: e800c03ff1258d48
        RDX: 17ff3fc00eda72b7 RSI: 00003ffffffff000 RDI: e800c03ff1258d48
        RBP: ffff9567fc27f8c8 R08: e800c03ff1258d48 R09: 0000000000000080
        R10: ffffaba0704c22a8 R11: 0000000000000001 R12: ffff95c87b4b60d8
        R13: 00005fff00000000 R14: 0000000000000000 R15: ffff9567face8074
        FS:  00007fe2d9ffb700(0000) GS:ffff956900e40000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: ffffd3bb003b69c0 CR3: 000000be67374000 CR4: 00000000003627e0
        DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
        DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
        Call Trace:
          follow_hugetlb_page+0x175/0x540
          __get_user_pages+0x2a0/0x7e0
          __get_user_pages_unlocked+0x15d/0x210
          __gfn_to_pfn_memslot+0x3c5/0x460 [kvm]
          try_async_pf+0x6e/0x2a0 [kvm]
          tdp_page_fault+0x151/0x2d0 [kvm]
         ...
          kvm_arch_vcpu_ioctl_run+0x330/0x490 [kvm]
          kvm_vcpu_ioctl+0x309/0x6d0 [kvm]
          do_vfs_ioctl+0x3f0/0x540
          SyS_ioctl+0xa1/0xc0
          system_call_fastpath+0x22/0x27
    
    For 1G hugepages, huge_pte_offset() wants to return NULL or pudp, but it
    may return a wrong 'pmdp' if there is a race.  Please look at the
    following code snippet:
    
        ...
        pud = pud_offset(p4d, addr);
        if (sz != PUD_SIZE && pud_none(*pud))
            return NULL;
        /* hugepage or swap? */
        if (pud_huge(*pud) || !pud_present(*pud))
            return (pte_t *)pud;
    
        pmd = pmd_offset(pud, addr);
        if (sz != PMD_SIZE && pmd_none(*pmd))
            return NULL;
        /* hugepage or swap? */
        if (pmd_huge(*pmd) || !pmd_present(*pmd))
            return (pte_t *)pmd;
        ...
    
    The following sequence would trigger this bug:
    
     - CPU0: sz = PUD_SIZE and *pud = 0 , continue
     - CPU0: "pud_huge(*pud)" is false
     - CPU1: calling hugetlb_no_page and set *pud to xxxx8e7(PRESENT)
     - CPU0: "!pud_present(*pud)" is false, continue
     - CPU0: pmd = pmd_offset(pud, addr) and maybe return a wrong pmdp
    
    However, we want CPU0 to return NULL or pudp in this case.
    
    We must make sure there is exactly one dereference of pud and pmd.
    
    Signed-off-by: Longpeng <longpeng2@huawei.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
    Reviewed-by: Jason Gunthorpe <jgg@mellanox.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Sean Christopherson <sean.j.christopherson@intel.com>
    Cc: <stable@vger.kernel.org>
    Link: http://lkml.kernel.org/r/20200413010342.771-1-longpeng2@huawei.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a77daafc2e37267befb06b74224d65d0afa26be0
Author: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Date:   Mon Apr 20 18:14:20 2020 -0700

    coredump: fix null pointer dereference on coredump
    
    commit db973a7289dad24e6c017dcedc6aee886579dc3a upstream.
    
    If the core_pattern is set to "|" and any process segfaults then we get
    a null pointer derefernce while trying to coredump. The call stack shows:
    
        RIP: do_coredump+0x628/0x11c0
    
    When the core_pattern has only "|" there is no use of trying the
    coredump and we can check that while formating the corename and exit
    with an error.
    
    After this change I get:
    
        format_corename failed
        Aborting core
    
    Fixes: 315c69261dd3 ("coredump: split pipe command whitespace before expanding template")
    Reported-by: Matthew Ruffell <matthew.ruffell@canonical.com>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Paul Wise <pabs3@bonedaddy.net>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Neil Horman <nhorman@tuxdriver.com>
    Cc: <stable@vger.kernel.org>
    Link: http://lkml.kernel.org/r/20200416194612.21418-1-sudipm.mukherjee@gmail.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fcfd63da5d8285df02f1332adc98c10ba4551011
Author: Luis Mendes <luis.p.mendes@gmail.com>
Date:   Fri Apr 3 16:15:34 2020 +0100

    staging: gasket: Fix incongruency in handling of sysfs entries creation
    
    commit 9195d762042b0e5e4ded63606b4b30a93cba4400 upstream.
    
    Fix incongruency in handling of sysfs entries creation.
    This issue could cause invalid memory accesses, by not properly
    detecting the end of the sysfs attributes array.
    
    Fixes: 84c45d5f3bf1 ("staging: gasket: Replace macro __ATTR with __ATTR_NULL")
    Signed-off-by: Luis Mendes <luis.p.mendes@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200403151534.20753-1-luis.p.mendes@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4f235309b5cc8e6217774279ae2b263345f5f6a
Author: Jann Horn <jannh@google.com>
Date:   Mon Apr 20 18:14:11 2020 -0700

    vmalloc: fix remap_vmalloc_range() bounds checks
    
    commit bdebd6a2831b6fab69eb85cee74a8ba77f1a1cc2 upstream.
    
    remap_vmalloc_range() has had various issues with the bounds checks it
    promises to perform ("This function checks that addr is a valid
    vmalloc'ed area, and that it is big enough to cover the vma") over time,
    e.g.:
    
     - not detecting pgoff<<PAGE_SHIFT overflow
    
     - not detecting (pgoff<<PAGE_SHIFT)+usize overflow
    
     - not checking whether addr and addr+(pgoff<<PAGE_SHIFT) are the same
       vmalloc allocation
    
     - comparing a potentially wildly out-of-bounds pointer with the end of
       the vmalloc region
    
    In particular, since commit fc9702273e2e ("bpf: Add mmap() support for
    BPF_MAP_TYPE_ARRAY"), unprivileged users can cause kernel null pointer
    dereferences by calling mmap() on a BPF map with a size that is bigger
    than the distance from the start of the BPF map to the end of the
    address space.
    
    This could theoretically be used as a kernel ASLR bypass, by using
    whether mmap() with a given offset oopses or returns an error code to
    perform a binary search over the possible address range.
    
    To allow remap_vmalloc_range_partial() to verify that addr and
    addr+(pgoff<<PAGE_SHIFT) are in the same vmalloc region, pass the offset
    to remap_vmalloc_range_partial() instead of adding it to the pointer in
    remap_vmalloc_range().
    
    In remap_vmalloc_range_partial(), fix the check against
    get_vm_area_size() by using size comparisons instead of pointer
    comparisons, and add checks for pgoff.
    
    Fixes: 833423143c3a ("[PATCH] mm: introduce remap_vmalloc_range()")
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: stable@vger.kernel.org
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Martin KaFai Lau <kafai@fb.com>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Yonghong Song <yhs@fb.com>
    Cc: Andrii Nakryiko <andriin@fb.com>
    Cc: John Fastabend <john.fastabend@gmail.com>
    Cc: KP Singh <kpsingh@chromium.org>
    Link: http://lkml.kernel.org/r/20200415222312.236431-1-jannh@google.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d15344e23c554b6c25f8a5ded3a3657a31e9779
Author: Amit Singh Tomar <amittomer25@gmail.com>
Date:   Fri Apr 17 01:41:57 2020 +0530

    tty: serial: owl: add "much needed" clk_prepare_enable()
    
    commit abf42d2f333b21bf8d33b2fbb8a85fa62037ac01 upstream.
    
    commit 8ba92cf59335 ("arm64: dts: actions: s700: Add Clock Management Unit")
    breaks the UART on Cubieboard7-lite (based on S700 SoC), This is due to the
    fact that generic clk routine clk_disable_unused() disables the gate clks,
    and that in turns disables OWL UART (but UART driver never enables it). To
    prove this theory, Andre suggested to use "clk_ignore_unused" in kernel
    commnd line and it worked (Kernel happily lands into RAMFS world :)).
    
    This commit fix this up by adding clk_prepare_enable().
    
    Fixes: 8ba92cf59335 ("arm64: dts: actions: s700: Add Clock Management Unit")
    Signed-off-by: Amit Singh Tomar <amittomer25@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1587067917-1400-1-git-send-email-amittomer25@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4fbf19bbba6a2f5a5aedcf9d98784fb3b5e8318b
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Apr 22 16:13:08 2020 -0400

    USB: hub: Revert commit bd0e6c9614b9 ("usb: hub: try old enumeration scheme first for high speed devices")
    
    commit 3155f4f40811c5d7e3c686215051acf504e05565 upstream.
    
    Commit bd0e6c9614b9 ("usb: hub: try old enumeration scheme first for
    high speed devices") changed the way the hub driver enumerates
    high-speed devices.  Instead of using the "new" enumeration scheme
    first and switching to the "old" scheme if that doesn't work, we start
    with the "old" scheme.  In theory this is better because the "old"
    scheme is slightly faster -- it involves resetting the device only
    once instead of twice.
    
    However, for a long time Windows used only the "new" scheme.  Zeng Tao
    said that Windows 8 and later use the "old" scheme for high-speed
    devices, but apparently there are some devices that don't like it.
    William Bader reports that the Ricoh webcam built into his Sony Vaio
    laptop not only doesn't enumerate under the "old" scheme, it gets hung
    up so badly that it won't then enumerate under the "new" scheme!  Only
    a cold reset will fix it.
    
    Therefore we will revert the commit and go back to trying the "new"
    scheme first for high-speed devices.
    
    Reported-and-tested-by: William Bader <williambader@hotmail.com>
    Ref: https://bugzilla.kernel.org/show_bug.cgi?id=207219
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Fixes: bd0e6c9614b9 ("usb: hub: try old enumeration scheme first for high speed devices")
    CC: Zeng Tao <prime.zeng@hisilicon.com>
    CC: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/Pine.LNX.4.44L0.2004221611230.11262-100000@iolanthe.rowland.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50ad463e20bf419a9b3d058ae792b920f363b9e3
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Apr 22 16:09:51 2020 -0400

    USB: hub: Fix handling of connect changes during sleep
    
    commit 9f952e26295d977dbfc6fedeaf8c4f112c818d37 upstream.
    
    Commit 8099f58f1ecd ("USB: hub: Don't record a connect-change event
    during reset-resume") wasn't very well conceived.  The problem it
    tried to fix was that if a connect-change event occurred while the
    system was asleep (such as a device disconnecting itself from the bus
    when it is suspended and then reconnecting when it resumes)
    requiring a reset-resume during the system wakeup transition, the hub
    port's change_bit entry would remain set afterward.  This would cause
    the hub driver to believe another connect-change event had occurred
    after the reset-resume, which was wrong and would lead the driver to
    send unnecessary requests to the device (which could interfere with a
    firmware update).
    
    The commit tried to fix this by not setting the change_bit during the
    wakeup.  But this was the wrong thing to do; it means that when a
    device is unplugged while the system is asleep, the hub driver doesn't
    realize anything has happened: The change_bit flag which would tell it
    to handle the disconnect event is clear.
    
    The commit needs to be reverted and the problem fixed in a different
    way.  Fortunately an alternative solution was noted in the commit's
    Changelog: We can continue to set the change_bit entry in
    hub_activate() but then clear it when a reset-resume occurs.  That way
    the the hub driver will see the change_bit when a device is
    disconnected but won't see it when the device is still present.
    
    That's what this patch does.
    
    Reported-and-tested-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Fixes: 8099f58f1ecd ("USB: hub: Don't record a connect-change event during reset-resume")
    Tested-by: Paul Zimmerman <pauldzim@gmail.com>
    CC: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/Pine.LNX.4.44L0.2004221602480.11262-100000@iolanthe.rowland.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b48193a7c303272d357b27dd7d72cbf89f7b2d35
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Sat Mar 28 16:18:11 2020 -0400

    USB: core: Fix free-while-in-use bug in the USB S-Glibrary
    
    commit 056ad39ee9253873522f6469c3364964a322912b upstream.
    
    FuzzUSB (a variant of syzkaller) found a free-while-still-in-use bug
    in the USB scatter-gather library:
    
    BUG: KASAN: use-after-free in atomic_read
    include/asm-generic/atomic-instrumented.h:26 [inline]
    BUG: KASAN: use-after-free in usb_hcd_unlink_urb+0x5f/0x170
    drivers/usb/core/hcd.c:1607
    Read of size 4 at addr ffff888065379610 by task kworker/u4:1/27
    
    CPU: 1 PID: 27 Comm: kworker/u4:1 Not tainted 5.5.11 #2
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    1.10.2-1ubuntu1 04/01/2014
    Workqueue: scsi_tmf_2 scmd_eh_abort_handler
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0xce/0x128 lib/dump_stack.c:118
     print_address_description.constprop.4+0x21/0x3c0 mm/kasan/report.c:374
     __kasan_report+0x153/0x1cb mm/kasan/report.c:506
     kasan_report+0x12/0x20 mm/kasan/common.c:639
     check_memory_region_inline mm/kasan/generic.c:185 [inline]
     check_memory_region+0x152/0x1b0 mm/kasan/generic.c:192
     __kasan_check_read+0x11/0x20 mm/kasan/common.c:95
     atomic_read include/asm-generic/atomic-instrumented.h:26 [inline]
     usb_hcd_unlink_urb+0x5f/0x170 drivers/usb/core/hcd.c:1607
     usb_unlink_urb+0x72/0xb0 drivers/usb/core/urb.c:657
     usb_sg_cancel+0x14e/0x290 drivers/usb/core/message.c:602
     usb_stor_stop_transport+0x5e/0xa0 drivers/usb/storage/transport.c:937
    
    This bug occurs when cancellation of the S-G transfer races with
    transfer completion.  When that happens, usb_sg_cancel() may continue
    to access the transfer's URBs after usb_sg_wait() has freed them.
    
    The bug is caused by the fact that usb_sg_cancel() does not take any
    sort of reference to the transfer, and so there is nothing to prevent
    the URBs from being deallocated while the routine is trying to use
    them.  The fix is to take such a reference by incrementing the
    transfer's io->count field while the cancellation is in progres and
    decrementing it afterward.  The transfer's URBs are not deallocated
    until io->complete is triggered, which happens when io->count reaches
    zero.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: Kyungtae Kim <kt0755@gmail.com>
    CC: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/Pine.LNX.4.44L0.2003281615140.14837-100000@netrider.rowland.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d53402d89d7871a968b185e719e2c184dea1a70
Author: Jann Horn <jannh@google.com>
Date:   Wed Apr 1 09:46:19 2020 +0200

    USB: early: Handle AMD's spec-compliant identifiers, too
    
    commit 7dbdb53d72a51cea9b921d9dbba54be00752212a upstream.
    
    This fixes a bug that causes the USB3 early console to freeze after
    printing a single line on AMD machines because it can't parse the
    Transfer TRB properly.
    
    The spec at
    https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/extensible-host-controler-interface-usb-xhci.pdf
    says in section "4.5.1 Device Context Index" that the Context Index,
    also known as Endpoint ID according to
    section "1.6 Terms and Abbreviations", is normally computed as
    `DCI = (Endpoint Number * 2) + Direction`, which matches the current
    definitions of XDBC_EPID_OUT and XDBC_EPID_IN.
    
    However, the numbering in a Debug Capability Context data structure is
    supposed to be different:
    Section "7.6.3.2 Endpoint Contexts and Transfer Rings" explains that a
    Debug Capability Context data structure has the endpoints mapped to indices
    0 and 1.
    
    Change XDBC_EPID_OUT/XDBC_EPID_IN to the spec-compliant values, add
    XDBC_EPID_OUT_INTEL/XDBC_EPID_IN_INTEL with Intel's incorrect values, and
    let xdbc_handle_tx_event() handle both.
    
    I have verified that with this patch applied, the USB3 early console works
    on both an Intel and an AMD machine.
    
    Fixes: aeb9dd1de98c ("usb/early: Add driver for xhci debug capability")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jann Horn <jannh@google.com>
    Link: https://lore.kernel.org/r/20200401074619.8024-1-jannh@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8409f83e3e817ac10f981d07bca785a4f81ff330
Author: Jonathan Cox <jonathan@jdcox.net>
Date:   Fri Apr 10 14:24:27 2020 -0700

    USB: Add USB_QUIRK_DELAY_CTRL_MSG and USB_QUIRK_DELAY_INIT for Corsair K70 RGB RAPIDFIRE
    
    commit be34a5854b4606bd7a160ad3cb43415d623596c7 upstream.
    
    The Corsair K70 RGB RAPIDFIRE needs the USB_QUIRK_DELAY_INIT and
    USB_QUIRK_DELAY_CTRL_MSG to function or it will randomly not
    respond on boot, just like other Corsair keyboards
    
    Signed-off-by: Jonathan Cox <jonathan@jdcox.net>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200410212427.2886-1-jonathan@jdcox.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7758cd38b94e95f85bbb69b99c6453e64436976
Author: Changming Liu <liu.changm@northeastern.edu>
Date:   Mon Apr 20 23:41:25 2020 -0400

    USB: sisusbvga: Change port variable from signed to unsigned
    
    commit 2df7405f79ce1674d73c2786fe1a8727c905d65b upstream.
    
    Change a bunch of arguments of wrapper functions which pass signed
    integer to an unsigned integer which might cause undefined behaviors
    when sign integer overflow.
    
    Signed-off-by: Changming Liu <liu.changm@northeastern.edu>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/BL0PR06MB45482D71EA822D75A0E60A2EE5D50@BL0PR06MB4548.namprd06.prod.outlook.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 557f3f5492176bef7f07a84043d58dcbd2249438
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Fri Apr 3 15:27:16 2020 +0200

    iio: xilinx-xadc: Make sure not exceed maximum samplerate
    
    commit 3b7f9dbb827ce8680b98490215e698b6079a9ec5 upstream.
    
    The XADC supports a samplerate of up to 1MSPS. Unfortunately the hardware
    does not have a FIFO, which means it generates an interrupt for each
    conversion sequence. At one 1MSPS this creates an interrupt storm that
    causes the system to soft-lock.
    
    For this reason the driver limits the maximum samplerate to 150kSPS.
    Currently this check is only done when setting a new samplerate. But it is
    also possible that the initial samplerate configured in the FPGA bitstream
    exceeds the limit.
    
    In this case when starting to capture data without first changing the
    samplerate the system can overload.
    
    To prevent this check the currently configured samplerate in the probe
    function and reduce it to the maximum if necessary.
    
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Fixes: bdc8cda1d010 ("iio:adc: Add Xilinx XADC driver")
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3e365a070167e2970034d461a319b2d58b05368
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Fri Apr 3 15:27:15 2020 +0200

    iio: xilinx-xadc: Fix sequencer configuration for aux channels in simultaneous mode
    
    commit 8bef455c8b1694547ee59e8b1939205ed9d901a6 upstream.
    
    The XADC has two internal ADCs. Depending on the mode it is operating in
    either one or both of them are used. The device manual calls this
    continuous (one ADC) and simultaneous (both ADCs) mode.
    
    The meaning of the sequencing register for the aux channels changes
    depending on the mode.
    
    In continuous mode each bit corresponds to one of the 16 aux channels. And
    the single ADC will convert them one by one in order.
    
    In simultaneous mode the aux channels are split into two groups the first 8
    channels are assigned to the first ADC and the other 8 channels to the
    second ADC. The upper 8 bits of the sequencing register are unused and the
    lower 8 bits control both ADCs. This means a bit needs to be set if either
    the corresponding channel from the first group or the second group (or
    both) are set.
    
    Currently the driver does not have the special handling required for
    simultaneous mode. Add it.
    
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Fixes: bdc8cda1d010 ("iio:adc: Add Xilinx XADC driver")
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf2849c9ef46d78a5c800a2ddb3caca5c7b36ee4
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Fri Apr 3 15:27:14 2020 +0200

    iio: xilinx-xadc: Fix clearing interrupt when enabling trigger
    
    commit f954b098fbac4d183219ce5b42d76d6df2aed50a upstream.
    
    When enabling the trigger and unmasking the end-of-sequence (EOS) interrupt
    the EOS interrupt should be cleared from the status register. Otherwise it
    is possible that it was still set from a previous capture. If that is the
    case the interrupt would fire immediately even though no conversion has
    been done yet and stale data is being read from the device.
    
    The old code only clears the interrupt if the interrupt was previously
    unmasked. Which does not make much sense since the interrupt is always
    masked at this point and in addition masking the interrupt does not clear
    the interrupt from the status register. So the clearing needs to be done
    unconditionally.
    
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Fixes: bdc8cda1d010 ("iio:adc: Add Xilinx XADC driver")
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a956eb2e1a70ad0e9097c8b3f7084e7532c17e1
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Fri Apr 3 15:27:13 2020 +0200

    iio: xilinx-xadc: Fix ADC-B powerdown
    
    commit e44ec7794d88f918805d700240211a9ec05ed89d upstream.
    
    The check for shutting down the second ADC is inverted. This causes it to
    be powered down when it should be enabled. As a result channels that are
    supposed to be handled by the second ADC return invalid conversion results.
    
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Fixes: bdc8cda1d010 ("iio:adc: Add Xilinx XADC driver")
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f83a969fcb0b5d4cfb7c22ac5d4a04b8ceb514f4
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Thu Apr 16 22:54:27 2020 +0200

    iio: adc: ti-ads8344: properly byte swap value
    
    commit dd7de4c0023e7564cabe39d64b2822a522890792 upstream.
    
    The first received byte is the MSB, followed by the LSB so the value needs
    to be byte swapped.
    
    Also, the ADC actually has a delay of one clock on the SPI bus. Read three
    bytes to get the last bit.
    
    Fixes: 8dd2d7c0fed7 ("iio: adc: Add driver for the TI ADS8344 A/DC chips")
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db168069b0d661f005e053fad94af1d5eac1dead
Author: Olivier Moysan <olivier.moysan@st.com>
Date:   Mon Mar 9 11:02:12 2020 +0100

    iio: adc: stm32-adc: fix sleep in atomic context
    
    commit e2042d2936dfc84e9c600fe9b9d0039ca0e54b7d upstream.
    
    This commit fixes the following error:
    "BUG: sleeping function called from invalid context at kernel/irq/chip.c"
    
    In DMA mode suppress the trigger irq handler, and make the buffer
    transfers directly in DMA callback, instead.
    
    Fixes: 2763ea0585c9 ("iio: adc: stm32: add optional dma support")
    Signed-off-by: Olivier Moysan <olivier.moysan@st.com>
    Acked-by: Fabrice Gasnier <fabrice.gasnier@st.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02311bc133440a0b333c6bb51dc669be3d72972c
Author: Lary Gibaud <yarl-baudig@mailoo.org>
Date:   Sat Apr 11 17:16:06 2020 +0200

    iio: st_sensors: rely on odr mask to know if odr can be set
    
    commit e450e07c14abae563ad13b064cbce9fdccc6bc8d upstream.
    
    Indeed, relying on addr being not 0 cannot work because some device have
    their register to set odr at address 0. As a matter of fact, if the odr
    can be set, then there is a mask.
    
    Sensors with ODR register at address 0 are: lsm303dlh, lsm303dlhc, lsm303dlm
    
    Fixes: 7d245172675a ("iio: common: st_sensors: check odr address value in st_sensors_set_odr()")
    Signed-off-by: Lary Gibaud <yarl-baudig@mailoo.org>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14952589c9d8061a6592f025e40ea542c89e29cc
Author: Lars Engebretsen <lars@engebretsen.ch>
Date:   Wed Apr 15 12:10:43 2020 +0200

    iio: core: remove extra semi-colon from devm_iio_device_register() macro
    
    commit a07479147be03d2450376ebaff9ea1a0682f25d6 upstream.
    
    This change removes the semi-colon from the devm_iio_device_register()
    macro which seems to have been added by accident.
    
    Fixes: 63b19547cc3d9 ("iio: Use macro magic to avoid manual assign of driver_module")
    Signed-off-by: Lars Engebretsen <lars@engebretsen.ch>
    Cc: <Stable@vger.kernel.org>
    Reviewed-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12c02c473e86ece6600e3b65794c2e10d27a192b
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Apr 22 13:33:20 2020 +0200

    ALSA: usb-audio: Add connector notifier delegation
    
    [ Upstream commit fef66ae73a611e84c8b4b74ff6f805ec5f113477 ]
    
    It turned out that ALC1220-VB USB-audio device gives the interrupt
    event to some PCM terminals while those don't allow the connector
    state request but only the actual I/O terminals return the request.
    The recent commit 7dc3c5a0172e ("ALSA: usb-audio: Don't create jack
    controls for PCM terminals") excluded those phantom terminals, so
    those events are ignored, too.
    
    My first thought was that this could be easily deduced from the
    associated terminals, but some of them have even no associate terminal
    ID, hence it's not too trivial to figure out.
    
    Since the number of such terminals are small and limited, this patch
    implements another quirk table for the simple mapping of the
    connectors.  It's not really scalable, but let's hope that there will
    be not many such funky devices in future.
    
    Fixes: 7dc3c5a0172e ("ALSA: usb-audio: Don't create jack controls for PCM terminals")
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206873
    Link: https://lore.kernel.org/r/20200422113320.26664-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6ec99b94a3a035ba18114f858d41cbbdd0d4109b
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Apr 20 08:20:36 2020 +0200

    ALSA: usb-audio: Add static mapping table for ALC1220-VB-based mobos
    
    [ Upstream commit a43c1c41bc5145971d06edc42a6b1e8faa0e2bc3 ]
    
    TRX40 mobos from MSI and others with ALC1220-VB USB-audio device need
    yet more quirks for the proper control names.
    
    This patch provides the mapping table for those boards, correcting the
    FU names for volume and mute controls as well as the terminal names
    for jack controls.  It also improves build_connector_control() not to
    add the directional suffix blindly if the string is given from the
    mapping table.
    
    With this patch applied, the new UCM profiles will be effective.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206873
    Link: https://lore.kernel.org/r/20200420062036.28567-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 23abb5f2faeaf436705b960cded5748f263cb1b7
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Apr 19 09:19:26 2020 +0200

    ALSA: hda: Remove ASUS ROG Zenith from the blacklist
    
    [ Upstream commit a8cf44f085ac12c0b5b8750ebb3b436c7f455419 ]
    
    The commit 3c6fd1f07ed0 ("ALSA: hda: Add driver blacklist") added a
    new blacklist for the devices that are known to have empty codecs, and
    one of the entries was ASUS ROG Zenith II (PCI SSID 1043:874f).
    However, it turned out that the very same PCI SSID is used for the
    previous model that does have the valid HD-audio codecs and the change
    broke the sound on it.
    
    This patch reverts the corresponding entry as a temporary solution.
    Although Zenith II and co will see get the empty HD-audio bus again,
    it'd be merely resource wastes and won't affect the functionality,
    so it's no end of the world.  We'll need to address this later,
    e.g. by either switching to DMI string matching or using PCI ID &
    SSID pairs.
    
    Fixes: 3c6fd1f07ed0 ("ALSA: hda: Add driver blacklist")
    Reported-by: Johnathan Smithinovic <johnathan.smithinovic@gmx.at>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200419071926.22683-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 419d8fb1630cbb04883fc73e08f37400a1e8ce86
Author: Waiman Long <longman@redhat.com>
Date:   Sat Mar 21 21:11:25 2020 -0400

    KEYS: Avoid false positive ENOMEM error on key read
    
    [ Upstream commit 4f0882491a148059a52480e753b7f07fc550e188 ]
    
    By allocating a kernel buffer with a user-supplied buffer length, it
    is possible that a false positive ENOMEM error may be returned because
    the user-supplied length is just too large even if the system do have
    enough memory to hold the actual key data.
    
    Moreover, if the buffer length is larger than the maximum amount of
    memory that can be returned by kmalloc() (2^(MAX_ORDER-1) number of
    pages), a warning message will also be printed.
    
    To reduce this possibility, we set a threshold (PAGE_SIZE) over which we
    do check the actual key length first before allocating a buffer of the
    right size to hold it. The threshold is arbitrary, it is just used to
    trigger a buffer length check. It does not limit the actual key length
    as long as there is enough memory to satisfy the memory request.
    
    To further avoid large buffer allocation failure due to page
    fragmentation, kvmalloc() is used to allocate the buffer so that vmapped
    pages can be used when there is not a large enough contiguous set of
    pages available for allocation.
    
    In the extremely unlikely scenario that the key keeps on being changed
    and made longer (still <= buflen) in between 2 __keyctl_read_key()
    calls, the __keyctl_read_key() calling loop in keyctl_read_key() may
    have to be iterated a large number of times, but definitely not infinite.
    
    Signed-off-by: Waiman Long <longman@redhat.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b1bcb485dd6b3644d9c5323e8cf93300cb98a28a
Author: David Ahern <dsahern@gmail.com>
Date:   Mon Apr 20 17:13:52 2020 -0600

    vrf: Check skb for XFRM_TRANSFORMED flag
    
    [ Upstream commit 16b9db1ce34ff00d6c18e82825125cfef0cdfb13 ]
    
    To avoid a loop with qdiscs and xfrms, check if the skb has already gone
    through the qdisc attached to the VRF device and then to the xfrm layer.
    If so, no need for a second redirect.
    
    Fixes: 193125dbd8eb ("net: Introduce VRF device driver")
    Reported-by: Trev Larock <trev@larock.ca>
    Signed-off-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 dfbbb4557af4db25fc04ae1f2f2fc624493c507e
Author: David Ahern <dsahern@gmail.com>
Date:   Mon Apr 20 17:13:51 2020 -0600

    xfrm: Always set XFRM_TRANSFORMED in xfrm{4,6}_output_finish
    
    [ Upstream commit 0c922a4850eba2e668f73a3f1153196e09abb251 ]
    
    IPSKB_XFRM_TRANSFORMED and IP6SKB_XFRM_TRANSFORMED are skb flags set by
    xfrm code to tell other skb handlers that the packet has been passed
    through the xfrm output functions. Simplify the code and just always
    set them rather than conditionally based on netfilter enabled thus
    making the flag available for other users.
    
    Signed-off-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 ace87b487a5f107dfaff54ba9f3e146bca107b64
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Wed Apr 22 17:29:51 2020 +0200

    geneve: use the correct nlattr array in NL_SET_ERR_MSG_ATTR
    
    [ Upstream commit 9a7b5b50de8a764671ba1800fe4c52d3b7013901 ]
    
    IFLA_GENEVE_* attributes are in the data array, which is correctly
    used when fetching the value, but not when setting the extended
    ack. Because IFLA_GENEVE_MAX < IFLA_MAX, we avoid out of bounds
    array accesses, but we don't provide a pointer to the invalid
    attribute to userspace.
    
    Fixes: a025fb5f49ad ("geneve: Allow configuration of DF behaviour")
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b977fe1c9e80abd302eef1dc44f8b114a4b61382
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Wed Apr 22 17:29:50 2020 +0200

    vxlan: use the correct nlattr array in NL_SET_ERR_MSG_ATTR
    
    [ Upstream commit cc8e7c69db4dcc565ed3020f97ddd6debab6cbe8 ]
    
    IFLA_VXLAN_* attributes are in the data array, which is correctly
    used when fetching the value, but not when setting the extended
    ack. Because IFLA_VXLAN_MAX < IFLA_MAX, we avoid out of bounds
    array accesses, but we don't provide a pointer to the invalid
    attribute to userspace.
    
    Fixes: 653ef6a3e4af ("vxlan: change vxlan_[config_]validate() to use netlink_ext_ack for error reporting")
    Fixes: b4d3069783bc ("vxlan: Allow configuration of DF behaviour")
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51c935f6c6ef25f2a24c7d7e98a9cdc5b36b410b
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon Apr 20 20:26:55 2020 -0700

    net: dsa: b53: b53_arl_rw_op() needs to select IVL or SVL
    
    [ Upstream commit 64fec9493f7dc9bdd7233bcfe98985c45bd0e3c1 ]
    
    Flip the IVL_SVL_SELECT bit correctly based on the VLAN enable status,
    the default is to perform Shared VLAN learning instead of Individual
    learning.
    
    Fixes: 1da6df85c6fb ("net: dsa: b53: Implement ARL add/del/dump operations")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb1a18a7d328732f72b3e69e525b99389a0b4496
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon Apr 20 20:26:54 2020 -0700

    net: dsa: b53: Rework ARL bin logic
    
    [ Upstream commit 6344dbde6a27d10d16246d734b968f84887841e2 ]
    
    When asking the ARL to read a MAC address, we will get a number of bins
    returned in a single read. Out of those bins, there can essentially be 3
    states:
    
    - all bins are full, we have no space left, and we can either replace an
      existing address or return that full condition
    
    - the MAC address was found, then we need to return its bin index and
      modify that one, and only that one
    
    - the MAC address was not found and we have a least one bin free, we use
      that bin index location then
    
    The code would unfortunately fail on all counts.
    
    Fixes: 1da6df85c6fb ("net: dsa: b53: Implement ARL add/del/dump operations")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2cc27f102dcdbc218700feb56b5e3182c0efcae9
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon Apr 20 20:26:53 2020 -0700

    net: dsa: b53: Fix ARL register definitions
    
    [ Upstream commit c2e77a18a7ed65eb48f6e389b6a59a0fd753646a ]
    
    The ARL {MAC,VID} tuple and the forward entry were off by 0x10 bytes,
    which means that when we read/wrote from/to ARL bin index 0, we were
    actually accessing the ARLA_RWCTRL register.
    
    Fixes: 1da6df85c6fb ("net: dsa: b53: Implement ARL add/del/dump operations")
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fae6eb0fc91d3ecb539e03f9e4dcd1c53ada553
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon Apr 20 20:26:52 2020 -0700

    net: dsa: b53: Fix valid setting for MDB entries
    
    [ Upstream commit eab167f4851a19c514469dfa81147f77e17b5b20 ]
    
    When support for the MDB entries was added, the valid bit was correctly
    changed to be assigned depending on the remaining port bitmask, that is,
    if there were no more ports added to the entry's port bitmask, the entry
    now becomes invalid. There was another assignment a few lines below that
    would override this which would invalidate entries even when there were
    still multiple ports left in the MDB entry.
    
    Fixes: 5d65b64a3d97 ("net: dsa: b53: Add support for MDB")
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2537dc9e2c0333838929a775fcdd6ca143738cc0
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon Apr 20 20:26:51 2020 -0700

    net: dsa: b53: Lookup VID in ARL searches when VLAN is enabled
    
    [ Upstream commit 2e97b0cd1651a270f3a3fcf42115c51f3284c049 ]
    
    When VLAN is enabled, and an ARL search is issued, we also need to
    compare the full {MAC,VID} tuple before returning a successful search
    result.
    
    Fixes: 1da6df85c6fb ("net: dsa: b53: Implement ARL add/del/dump operations")
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07856b2108cfe82e3bce1e64e3f2dfc1d567eeb1
Author: David Ahern <dsahern@gmail.com>
Date:   Tue Apr 21 17:48:27 2020 -0600

    vrf: Fix IPv6 with qdisc and xfrm
    
    [ Upstream commit a53c102872ad6e34e1518e25899dc9498c27f8b1 ]
    
    When a qdisc is attached to the VRF device, the packet goes down the ndo
    xmit function which is setup to send the packet back to the VRF driver
    which does a lookup to send the packet out. The lookup in the VRF driver
    is not considering xfrm policies. Change it to use ip6_dst_lookup_flow
    rather than ip6_route_output.
    
    Fixes: 35402e313663 ("net: Add IPv6 support to VRF device")
    Signed-off-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 755425c1b004e9297e048b664b2882e27680094a
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Mon Apr 20 15:01:33 2020 +0000

    team: fix hang in team_mode_get()
    
    [ Upstream commit 1c30fbc76b8f0c07c92a8ca4cd7c456612e17eb5 ]
    
    When team mode is changed or set, the team_mode_get() is called to check
    whether the mode module is inserted or not. If the mode module is not
    inserted, it calls the request_module().
    In the request_module(), it creates a child process, which is
    the "modprobe" process and waits for the done of the child process.
    At this point, the following locks were used.
    down_read(&cb_lock()); by genl_rcv()
        genl_lock(); by genl_rcv_msc()
            rtnl_lock(); by team_nl_cmd_options_set()
                mutex_lock(&team->lock); by team_nl_team_get()
    
    Concurrently, the team module could be removed by rmmod or "modprobe -r"
    The __exit function of team module is team_module_exit(), which calls
    team_nl_fini() and it tries to acquire following locks.
    down_write(&cb_lock);
        genl_lock();
    Because of the genl_lock() and cb_lock, this process can't be finished
    earlier than request_module() routine.
    
    The problem secenario.
    CPU0                                     CPU1
    team_mode_get
        request_module()
                                             modprobe -r team_mode_roundrobin
                                                         team <--(B)
            modprobe team <--(A)
                team_mode_roundrobin
    
    By request_module(), the "modprobe team_mode_roundrobin" command
    will be executed. At this point, the modprobe process will decide
    that the team module should be inserted before team_mode_roundrobin.
    Because the team module is being removed.
    
    By the module infrastructure, the same module insert/remove operations
    can't be executed concurrently.
    So, (A) waits for (B) but (B) also waits for (A) because of locks.
    So that the hang occurs at this point.
    
    Test commands:
        while :
        do
            teamd -d &
            killall teamd &
            modprobe -rv team_mode_roundrobin &
        done
    
    The approach of this patch is to hold the reference count of the team
    module if the team module is compiled as a module. If the reference count
    of the team module is not zero while request_module() is being called,
    the team module will not be removed at that moment.
    So that the above scenario could not occur.
    
    Fixes: 3d249d4ca7d0 ("net: introduce ethernet teaming device")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Reviewed-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f642d785a516e51d03462732d34f047cf858be8
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Apr 17 07:10:23 2020 -0700

    tcp: cache line align MAX_TCP_HEADER
    
    [ Upstream commit 9bacd256f1354883d3c1402655153367982bba49 ]
    
    TCP stack is dumb in how it cooks its output packets.
    
    Depending on MAX_HEADER value, we might chose a bad ending point
    for the headers.
    
    If we align the end of TCP headers to cache line boundary, we
    make sure to always use the smallest number of cache lines,
    which always help.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Soheil Hassas Yeganeh <soheil@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a60fad4495d19edf1c4fbf0d46b1a5d539e51b9
Author: David Ahern <dsahern@gmail.com>
Date:   Tue Apr 21 08:47:24 2020 -0600

    selftests: Fix suppress test in fib_tests.sh
    
    [ Upstream commit 2c1dd4c110627c2a4f006643f074119205cfcff4 ]
    
    fib_tests is spewing errors:
        ...
        Cannot open network namespace "ns1": No such file or directory
        Cannot open network namespace "ns1": No such file or directory
        Cannot open network namespace "ns1": No such file or directory
        Cannot open network namespace "ns1": No such file or directory
        ping: connect: Network is unreachable
        Cannot open network namespace "ns1": No such file or directory
        Cannot open network namespace "ns1": No such file or directory
        ...
    
    Each test entry in fib_tests is supposed to do its own setup and
    cleanup. Right now the $IP commands in fib_suppress_test are
    failing because there is no ns1. Add the setup/cleanup and logging
    expected for each test.
    
    Fixes: ca7a03c41753 ("ipv6: do not free rt if FIB_LOOKUP_NOREF is set on suppress rule")
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Cc: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3afaa5033f4bade05c3b30475b73ece93a9ffa4
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Apr 21 10:00:28 2020 -0700

    sched: etf: do not assume all sockets are full blown
    
    [ Upstream commit a1211bf9a7774706722ba3b18c6157d980319f79 ]
    
    skb->sk does not always point to a full blown socket,
    we need to use sk_fullsock() before accessing fields which
    only make sense on full socket.
    
    BUG: KASAN: use-after-free in report_sock_error+0x286/0x300 net/sched/sch_etf.c:141
    Read of size 1 at addr ffff88805eb9b245 by task syz-executor.5/9630
    
    CPU: 1 PID: 9630 Comm: syz-executor.5 Not tainted 5.7.0-rc2-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x188/0x20d lib/dump_stack.c:118
     print_address_description.constprop.0.cold+0xd3/0x315 mm/kasan/report.c:382
     __kasan_report.cold+0x35/0x4d mm/kasan/report.c:511
     kasan_report+0x33/0x50 mm/kasan/common.c:625
     report_sock_error+0x286/0x300 net/sched/sch_etf.c:141
     etf_enqueue_timesortedlist+0x389/0x740 net/sched/sch_etf.c:170
     __dev_xmit_skb net/core/dev.c:3710 [inline]
     __dev_queue_xmit+0x154a/0x30a0 net/core/dev.c:4021
     neigh_hh_output include/net/neighbour.h:499 [inline]
     neigh_output include/net/neighbour.h:508 [inline]
     ip6_finish_output2+0xfb5/0x25b0 net/ipv6/ip6_output.c:117
     __ip6_finish_output+0x442/0xab0 net/ipv6/ip6_output.c:143
     ip6_finish_output+0x34/0x1f0 net/ipv6/ip6_output.c:153
     NF_HOOK_COND include/linux/netfilter.h:296 [inline]
     ip6_output+0x239/0x810 net/ipv6/ip6_output.c:176
     dst_output include/net/dst.h:435 [inline]
     NF_HOOK include/linux/netfilter.h:307 [inline]
     NF_HOOK include/linux/netfilter.h:301 [inline]
     ip6_xmit+0xe1a/0x2090 net/ipv6/ip6_output.c:280
     tcp_v6_send_synack+0x4e7/0x960 net/ipv6/tcp_ipv6.c:521
     tcp_rtx_synack+0x10d/0x1a0 net/ipv4/tcp_output.c:3916
     inet_rtx_syn_ack net/ipv4/inet_connection_sock.c:669 [inline]
     reqsk_timer_handler+0x4c2/0xb40 net/ipv4/inet_connection_sock.c:763
     call_timer_fn+0x1ac/0x780 kernel/time/timer.c:1405
     expire_timers kernel/time/timer.c:1450 [inline]
     __run_timers kernel/time/timer.c:1774 [inline]
     __run_timers kernel/time/timer.c:1741 [inline]
     run_timer_softirq+0x623/0x1600 kernel/time/timer.c:1787
     __do_softirq+0x26c/0x9f7 kernel/softirq.c:292
     invoke_softirq kernel/softirq.c:373 [inline]
     irq_exit+0x192/0x1d0 kernel/softirq.c:413
     exiting_irq arch/x86/include/asm/apic.h:546 [inline]
     smp_apic_timer_interrupt+0x19e/0x600 arch/x86/kernel/apic/apic.c:1140
     apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:829
     </IRQ>
    RIP: 0010:des_encrypt+0x157/0x9c0 lib/crypto/des.c:792
    Code: 85 22 06 00 00 41 31 dc 41 8b 4d 04 44 89 e2 41 83 e4 3f 4a 8d 3c a5 60 72 72 88 81 e2 3f 3f 3f 3f 48 89 f8 48 c1 e8 03 31 d9 <0f> b6 34 28 48 89 f8 c1 c9 04 83 e0 07 83 c0 03 40 38 f0 7c 09 40
    RSP: 0018:ffffc90003b5f6c0 EFLAGS: 00000282 ORIG_RAX: ffffffffffffff13
    RAX: 1ffffffff10e4e55 RBX: 00000000d2f846d0 RCX: 00000000d2f846d0
    RDX: 0000000012380612 RSI: ffffffff839863ca RDI: ffffffff887272a8
    RBP: dffffc0000000000 R08: ffff888091d0a380 R09: 0000000000800081
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000012
    R13: ffff8880a8ae8078 R14: 00000000c545c93e R15: 0000000000000006
     cipher_crypt_one crypto/cipher.c:75 [inline]
     crypto_cipher_encrypt_one+0x124/0x210 crypto/cipher.c:82
     crypto_cbcmac_digest_update+0x1b5/0x250 crypto/ccm.c:830
     crypto_shash_update+0xc4/0x120 crypto/shash.c:119
     shash_ahash_update+0xa3/0x110 crypto/shash.c:246
     crypto_ahash_update include/crypto/hash.h:547 [inline]
     hash_sendmsg+0x518/0xad0 crypto/algif_hash.c:102
     sock_sendmsg_nosec net/socket.c:652 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:672
     ____sys_sendmsg+0x308/0x7e0 net/socket.c:2362
     ___sys_sendmsg+0x100/0x170 net/socket.c:2416
     __sys_sendmmsg+0x195/0x480 net/socket.c:2506
     __do_sys_sendmmsg net/socket.c:2535 [inline]
     __se_sys_sendmmsg net/socket.c:2532 [inline]
     __x64_sys_sendmmsg+0x99/0x100 net/socket.c:2532
     do_syscall_64+0xf6/0x7d0 arch/x86/entry/common.c:295
     entry_SYSCALL_64_after_hwframe+0x49/0xb3
    RIP: 0033:0x45c829
    Code: 0d b7 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 db b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007f6d9528ec78 EFLAGS: 00000246 ORIG_RAX: 0000000000000133
    RAX: ffffffffffffffda RBX: 00000000004fc080 RCX: 000000000045c829
    RDX: 0000000000000001 RSI: 0000000020002640 RDI: 0000000000000004
    RBP: 000000000078bf00 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 00000000000008d7 R14: 00000000004cb7aa R15: 00007f6d9528f6d4
    
    Fixes: 4b15c7075352 ("net/sched: Make etf report drops on error_queue")
    Fixes: 25db26a91364 ("net/sched: Introduce the ETF Qdisc")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Reviewed-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a2ddf8e5a5d280fe9399d928db612bf1e4d3b03
Author: Xiyu Yang <xiyuyang19@fudan.edu.cn>
Date:   Thu Apr 23 13:13:03 2020 +0800

    net/x25: Fix x25_neigh refcnt leak when receiving frame
    
    [ Upstream commit f35d12971b4d814cdb2f659d76b42f0c545270b6 ]
    
    x25_lapb_receive_frame() invokes x25_get_neigh(), which returns a
    reference of the specified x25_neigh object to "nb" with increased
    refcnt.
    
    When x25_lapb_receive_frame() returns, local variable "nb" becomes
    invalid, so the refcount should be decreased to keep refcount balanced.
    
    The reference counting issue happens in one path of
    x25_lapb_receive_frame(). When pskb_may_pull() returns false, the
    function forgets to decrease the refcnt increased by x25_get_neigh(),
    causing a refcnt leak.
    
    Fix this issue by calling x25_neigh_put() when pskb_may_pull() returns
    false.
    
    Fixes: cb101ed2c3c7 ("x25: Handle undersized/fragmented skbs")
    Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn>
    Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6885d58eb4392b779d2de0616cfde6aa2e81d552
Author: Marc Zyngier <maz@kernel.org>
Date:   Sat Apr 18 19:14:57 2020 +0100

    net: stmmac: dwmac-meson8b: Add missing boundary to RGMII TX clock array
    
    [ Upstream commit f0212a5ebfa6cd789ab47666b9cc169e6e688732 ]
    
    Running with KASAN on a VIM3L systems leads to the following splat
    when probing the Ethernet device:
    
    ==================================================================
    BUG: KASAN: global-out-of-bounds in _get_maxdiv+0x74/0xd8
    Read of size 4 at addr ffffa000090615f4 by task systemd-udevd/139
    CPU: 1 PID: 139 Comm: systemd-udevd Tainted: G            E     5.7.0-rc1-00101-g8624b7577b9c #781
    Hardware name: amlogic w400/w400, BIOS 2020.01-rc5 03/12/2020
    Call trace:
     dump_backtrace+0x0/0x2a0
     show_stack+0x20/0x30
     dump_stack+0xec/0x148
     print_address_description.isra.12+0x70/0x35c
     __kasan_report+0xfc/0x1d4
     kasan_report+0x4c/0x68
     __asan_load4+0x9c/0xd8
     _get_maxdiv+0x74/0xd8
     clk_divider_bestdiv+0x74/0x5e0
     clk_divider_round_rate+0x80/0x1a8
     clk_core_determine_round_nolock.part.9+0x9c/0xd0
     clk_core_round_rate_nolock+0xf0/0x108
     clk_hw_round_rate+0xac/0xf0
     clk_factor_round_rate+0xb8/0xd0
     clk_core_determine_round_nolock.part.9+0x9c/0xd0
     clk_core_round_rate_nolock+0xf0/0x108
     clk_core_round_rate_nolock+0xbc/0x108
     clk_core_set_rate_nolock+0xc4/0x2e8
     clk_set_rate+0x58/0xe0
     meson8b_dwmac_probe+0x588/0x72c [dwmac_meson8b]
     platform_drv_probe+0x78/0xd8
     really_probe+0x158/0x610
     driver_probe_device+0x140/0x1b0
     device_driver_attach+0xa4/0xb0
     __driver_attach+0xcc/0x1c8
     bus_for_each_dev+0xf4/0x168
     driver_attach+0x3c/0x50
     bus_add_driver+0x238/0x2e8
     driver_register+0xc8/0x1e8
     __platform_driver_register+0x88/0x98
     meson8b_dwmac_driver_init+0x28/0x1000 [dwmac_meson8b]
     do_one_initcall+0xa8/0x328
     do_init_module+0xe8/0x368
     load_module+0x3300/0x36b0
     __do_sys_finit_module+0x120/0x1a8
     __arm64_sys_finit_module+0x4c/0x60
     el0_svc_common.constprop.2+0xe4/0x268
     do_el0_svc+0x98/0xa8
     el0_svc+0x24/0x68
     el0_sync_handler+0x12c/0x318
     el0_sync+0x158/0x180
    
    The buggy address belongs to the variable:
     div_table.63646+0x34/0xfffffffffffffa40 [dwmac_meson8b]
    
    Memory state around the buggy address:
     ffffa00009061480: fa fa fa fa 00 00 00 01 fa fa fa fa 00 00 00 00
     ffffa00009061500: 05 fa fa fa fa fa fa fa 00 04 fa fa fa fa fa fa
    >ffffa00009061580: 00 03 fa fa fa fa fa fa 00 00 00 00 00 00 fa fa
                                                                 ^
     ffffa00009061600: fa fa fa fa 00 01 fa fa fa fa fa fa 01 fa fa fa
     ffffa00009061680: fa fa fa fa 00 01 fa fa fa fa fa fa 04 fa fa fa
    ==================================================================
    
    Digging into this indeed shows that the clock divider array is
    lacking a final fence, and that the clock subsystems goes in the
    weeds. Oh well.
    
    Let's add the empty structure that indicates the end of the array.
    
    Fixes: bd6f48546b9c ("net: stmmac: dwmac-meson8b: Fix the RGMII TX delay on Meson8b/8m2 SoCs")
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Cc: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4acc0b18f7af8d98755d30662940f3565f12875a
Author: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Date:   Fri Apr 17 02:57:31 2020 +0800

    net: openvswitch: ovs_ct_exit to be done under ovs_lock
    
    [ Upstream commit 27de77cec985233bdf6546437b9761853265c505 ]
    
    syzbot wrote:
    | =============================
    | WARNING: suspicious RCU usage
    | 5.7.0-rc1+ #45 Not tainted
    | -----------------------------
    | net/openvswitch/conntrack.c:1898 RCU-list traversed in non-reader section!!
    |
    | other info that might help us debug this:
    | rcu_scheduler_active = 2, debug_locks = 1
    | ...
    |
    | stack backtrace:
    | Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org 04/01/2014
    | Workqueue: netns cleanup_net
    | Call Trace:
    | ...
    | ovs_ct_exit
    | ovs_exit_net
    | ops_exit_list.isra.7
    | cleanup_net
    | process_one_work
    | worker_thread
    
    To avoid that warning, invoke the ovs_ct_exit under ovs_lock and add
    lockdep_ovsl_is_held as optional lockdep expression.
    
    Link: https://lore.kernel.org/lkml/000000000000e642a905a0cbee6e@google.com
    Fixes: 11efd5cb04a1 ("openvswitch: Support conntrack zone limit")
    Cc: Pravin B Shelar <pshelar@ovn.org>
    Cc: Yi-Hung Wei <yihung.wei@gmail.com>
    Reported-by: syzbot+7ef50afd3a211f879112@syzkaller.appspotmail.com
    Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.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 21b1a767eba6568148b226894c06268034f2ea01
Author: Xiyu Yang <xiyuyang19@fudan.edu.cn>
Date:   Wed Apr 15 16:36:19 2020 +0800

    net: netrom: Fix potential nr_neigh refcnt leak in nr_add_node
    
    [ Upstream commit d03f228470a8c0a22b774d1f8d47071e0de4f6dd ]
    
    nr_add_node() invokes nr_neigh_get_dev(), which returns a local
    reference of the nr_neigh object to "nr_neigh" with increased refcnt.
    
    When nr_add_node() returns, "nr_neigh" becomes invalid, so the refcount
    should be decreased to keep refcount balanced.
    
    The issue happens in one normal path of nr_add_node(), which forgets to
    decrease the refcnt increased by nr_neigh_get_dev() and causes a refcnt
    leak. It should decrease the refcnt before the function returns like
    other normal paths do.
    
    Fix this issue by calling nr_neigh_put() before the nr_add_node()
    returns.
    
    Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn>
    Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit befd63a980cc88677de7b0f13918e7a18fd52ddc
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Apr 15 09:46:52 2020 -0700

    net/mlx4_en: avoid indirect call in TX completion
    
    [ Upstream commit 310660a14b74c380b0ef5c12b66933d6a3d1b59f ]
    
    Commit 9ecc2d86171a ("net/mlx4_en: add xdp forwarding and data write support")
    brought another indirect call in fast path.
    
    Use INDIRECT_CALL_2() helper to avoid the cost of the indirect call
    when/if CONFIG_RETPOLINE=y
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Tariq Toukan <tariqt@mellanox.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49bbf322316c6de36c8231ddc3864344a91b1b47
Author: Doug Berger <opendmb@gmail.com>
Date:   Thu Apr 23 15:44:17 2020 -0700

    net: bcmgenet: correct per TX/RX ring statistics
    
    [ Upstream commit a6d0b83f25073bdf08b8547aeff961a62c6ab229 ]
    
    The change to track net_device_stats per ring to better support SMP
    missed updating the rx_dropped member.
    
    The ndo_get_stats method is also needed to combine the results for
    ethtool statistics (-S) before filling in the ethtool structure.
    
    Fixes: 37a30b435b92 ("net: bcmgenet: Track per TX/RX rings statistics")
    Signed-off-by: Doug Berger <opendmb@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa6a14bc4102730f20ca706e2d9ccf0e54884138
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Apr 22 12:36:41 2020 +0300

    mlxsw: Fix some IS_ERR() vs NULL bugs
    
    [ Upstream commit c391eb8366ae052d571bb2841f1ccb4d39f3ceb8 ]
    
    The mlxsw_sp_acl_rulei_create() function is supposed to return an error
    pointer from mlxsw_afa_block_create().  The problem is that these
    functions both return NULL instead of error pointers.  Half the callers
    expect NULL and half expect error pointers so it could lead to a NULL
    dereference on failure.
    
    This patch changes both of them to return error pointers and changes all
    the callers which checked for NULL to check for IS_ERR() instead.
    
    Fixes: 4cda7d8d7098 ("mlxsw: core: Introduce flexible actions support")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5ba4c22928f3393352dc5e4b483b51dcad8ddc7
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Mon Apr 20 13:29:40 2020 +0000

    macvlan: fix null dereference in macvlan_device_event()
    
    [ Upstream commit 4dee15b4fd0d61ec6bbd179238191e959d34cf7a ]
    
    In the macvlan_device_event(), the list_first_entry_or_null() is used.
    This function could return null pointer if there is no node.
    But, the macvlan module doesn't check the null pointer.
    So, null-ptr-deref would occur.
    
          bond0
            |
       +----+-----+
       |          |
    macvlan0   macvlan1
       |          |
     dummy0     dummy1
    
    The problem scenario.
    If dummy1 is removed,
    1. ->dellink() of dummy1 is called.
    2. NETDEV_UNREGISTER of dummy1 notification is sent to macvlan module.
    3. ->dellink() of macvlan1 is called.
    4. NETDEV_UNREGISTER of macvlan1 notification is sent to bond module.
    5. __bond_release_one() is called and it internally calls
       dev_set_mac_address().
    6. dev_set_mac_address() calls the ->ndo_set_mac_address() of macvlan1,
       which is macvlan_set_mac_address().
    7. macvlan_set_mac_address() calls the dev_set_mac_address() with dummy1.
    8. NETDEV_CHANGEADDR of dummy1 is sent to macvlan module.
    9. In the macvlan_device_event(), it calls list_first_entry_or_null().
    At this point, dummy1 and macvlan1 were removed.
    So, list_first_entry_or_null() will return NULL.
    
    Test commands:
        ip netns add nst
        ip netns exec nst ip link add bond0 type bond
        for i in {0..10}
        do
            ip netns exec nst ip link add dummy$i type dummy
            ip netns exec nst ip link add macvlan$i link dummy$i \
                    type macvlan mode passthru
            ip netns exec nst ip link set macvlan$i master bond0
        done
        ip netns del nst
    
    Splat looks like:
    [   40.585687][  T146] general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] SMP DEI
    [   40.587249][  T146] KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
    [   40.588342][  T146] CPU: 1 PID: 146 Comm: kworker/u8:2 Not tainted 5.7.0-rc1+ #532
    [   40.589299][  T146] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    [   40.590469][  T146] Workqueue: netns cleanup_net
    [   40.591045][  T146] RIP: 0010:macvlan_device_event+0x4e2/0x900 [macvlan]
    [   40.591905][  T146] Code: 00 00 00 00 00 fc ff df 80 3c 06 00 0f 85 45 02 00 00 48 89 da 48 b8 00 00 00 00 00 fc ff d2
    [   40.594126][  T146] RSP: 0018:ffff88806116f4a0 EFLAGS: 00010246
    [   40.594783][  T146] RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000000
    [   40.595653][  T146] RDX: 0000000000000000 RSI: ffff88806547ddd8 RDI: ffff8880540f1360
    [   40.596495][  T146] RBP: ffff88804011a808 R08: fffffbfff4fb8421 R09: fffffbfff4fb8421
    [   40.597377][  T146] R10: ffffffffa7dc2107 R11: 0000000000000000 R12: 0000000000000008
    [   40.598186][  T146] R13: ffff88804011a000 R14: ffff8880540f1000 R15: 1ffff1100c22de9a
    [   40.599012][  T146] FS:  0000000000000000(0000) GS:ffff888067800000(0000) knlGS:0000000000000000
    [   40.600004][  T146] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   40.600665][  T146] CR2: 00005572d3a807b8 CR3: 000000005fcf4003 CR4: 00000000000606e0
    [   40.601485][  T146] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   40.602461][  T146] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   40.603443][  T146] Call Trace:
    [   40.603871][  T146]  ? nf_tables_dump_setelem+0xa0/0xa0 [nf_tables]
    [   40.604587][  T146]  ? macvlan_uninit+0x100/0x100 [macvlan]
    [   40.605212][  T146]  ? __module_text_address+0x13/0x140
    [   40.605842][  T146]  notifier_call_chain+0x90/0x160
    [   40.606477][  T146]  dev_set_mac_address+0x28e/0x3f0
    [   40.607117][  T146]  ? netdev_notify_peers+0xc0/0xc0
    [   40.607762][  T146]  ? __module_text_address+0x13/0x140
    [   40.608440][  T146]  ? notifier_call_chain+0x90/0x160
    [   40.609097][  T146]  ? dev_set_mac_address+0x1f0/0x3f0
    [   40.609758][  T146]  dev_set_mac_address+0x1f0/0x3f0
    [   40.610402][  T146]  ? __local_bh_enable_ip+0xe9/0x1b0
    [   40.611071][  T146]  ? bond_hw_addr_flush+0x77/0x100 [bonding]
    [   40.611823][  T146]  ? netdev_notify_peers+0xc0/0xc0
    [   40.612461][  T146]  ? bond_hw_addr_flush+0x77/0x100 [bonding]
    [   40.613213][  T146]  ? bond_hw_addr_flush+0x77/0x100 [bonding]
    [   40.613963][  T146]  ? __local_bh_enable_ip+0xe9/0x1b0
    [   40.614631][  T146]  ? bond_time_in_interval.isra.31+0x90/0x90 [bonding]
    [   40.615484][  T146]  ? __bond_release_one+0x9f0/0x12c0 [bonding]
    [   40.616230][  T146]  __bond_release_one+0x9f0/0x12c0 [bonding]
    [   40.616949][  T146]  ? bond_enslave+0x47c0/0x47c0 [bonding]
    [   40.617642][  T146]  ? lock_downgrade+0x730/0x730
    [   40.618218][  T146]  ? check_flags.part.42+0x450/0x450
    [   40.618850][  T146]  ? __mutex_unlock_slowpath+0xd0/0x670
    [   40.619519][  T146]  ? trace_hardirqs_on+0x30/0x180
    [   40.620117][  T146]  ? wait_for_completion+0x250/0x250
    [   40.620754][  T146]  bond_netdev_event+0x822/0x970 [bonding]
    [   40.621460][  T146]  ? __module_text_address+0x13/0x140
    [   40.622097][  T146]  notifier_call_chain+0x90/0x160
    [   40.622806][  T146]  rollback_registered_many+0x660/0xcf0
    [   40.623522][  T146]  ? netif_set_real_num_tx_queues+0x780/0x780
    [   40.624290][  T146]  ? notifier_call_chain+0x90/0x160
    [   40.624957][  T146]  ? netdev_upper_dev_unlink+0x114/0x180
    [   40.625686][  T146]  ? __netdev_adjacent_dev_unlink_neighbour+0x30/0x30
    [   40.626421][  T146]  ? mutex_is_locked+0x13/0x50
    [   40.627016][  T146]  ? unregister_netdevice_queue+0xf2/0x240
    [   40.627663][  T146]  unregister_netdevice_many.part.134+0x13/0x1b0
    [   40.628362][  T146]  default_device_exit_batch+0x2d9/0x390
    [   40.628987][  T146]  ? unregister_netdevice_many+0x40/0x40
    [   40.629615][  T146]  ? dev_change_net_namespace+0xcb0/0xcb0
    [   40.630279][  T146]  ? prepare_to_wait_exclusive+0x2e0/0x2e0
    [   40.630943][  T146]  ? ops_exit_list.isra.9+0x97/0x140
    [   40.631554][  T146]  cleanup_net+0x441/0x890
    [ ... ]
    
    Fixes: e289fd28176b ("macvlan: fix the problem when mac address changes for passthru mode")
    Reported-by: syzbot+5035b1f9dc7ea4558d5a@syzkaller.appspotmail.com
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70a37b9816f364225059a35b3edf906e64e247d8
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Thu Apr 23 13:40:47 2020 +0000

    macsec: avoid to set wrong mtu
    
    [ Upstream commit 7f327080364abccf923fa5a5b24e038eb0ba1407 ]
    
    When a macsec interface is created, the mtu is calculated with the lower
    interface's mtu value.
    If the mtu of lower interface is lower than the length, which is needed
    by macsec interface, macsec's mtu value will be overflowed.
    So, if the lower interface's mtu is too low, macsec interface's mtu
    should be set to 0.
    
    Test commands:
        ip link add dummy0 mtu 10 type dummy
        ip link add macsec0 link dummy0 type macsec
        ip link show macsec0
    
    Before:
        11: macsec0@dummy0: <BROADCAST,MULTICAST,M-DOWN> mtu 4294967274
    After:
        11: macsec0@dummy0: <BROADCAST,MULTICAST,M-DOWN> mtu 0
    
    Fixes: c09440f7dcb3 ("macsec: introduce IEEE 802.1AE driver")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d197d8e1aa409e86aa5f6f7a00b3616dde2add2
Author: John Haxby <john.haxby@oracle.com>
Date:   Sat Apr 18 16:30:49 2020 +0100

    ipv6: fix restrict IPV6_ADDRFORM operation
    
    [ Upstream commit 82c9ae440857840c56e05d4fb1427ee032531346 ]
    
    Commit b6f6118901d1 ("ipv6: restrict IPV6_ADDRFORM operation") fixed a
    problem found by syzbot an unfortunate logic error meant that it
    also broke IPV6_ADDRFORM.
    
    Rearrange the checks so that the earlier test is just one of the series
    of checks made before moving the socket from IPv6 to IPv4.
    
    Fixes: b6f6118901d1 ("ipv6: restrict IPV6_ADDRFORM operation")
    Signed-off-by: John Haxby <john.haxby@oracle.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 382f57b996aa90dcfb13b02fcadeeb3c264cb996
Author: David Ahern <dsahern@gmail.com>
Date:   Wed Apr 22 15:40:20 2020 -0600

    ipv4: Update fib_select_default to handle nexthop objects
    
    [ Upstream commit 7c74b0bec918c1e0ca0b4208038c156eacf8f13f ]
    
    A user reported [0] hitting the WARN_ON in fib_info_nh:
    
        [ 8633.839816] ------------[ cut here ]------------
        [ 8633.839819] WARNING: CPU: 0 PID: 1719 at include/net/nexthop.h:251 fib_select_path+0x303/0x381
        ...
        [ 8633.839846] RIP: 0010:fib_select_path+0x303/0x381
        ...
        [ 8633.839848] RSP: 0018:ffffb04d407f7d00 EFLAGS: 00010286
        [ 8633.839850] RAX: 0000000000000000 RBX: ffff9460b9897ee8 RCX: 00000000000000fe
        [ 8633.839851] RDX: 0000000000000000 RSI: 00000000ffffffff RDI: 0000000000000000
        [ 8633.839852] RBP: ffff946076049850 R08: 0000000059263a83 R09: ffff9460840e4000
        [ 8633.839853] R10: 0000000000000014 R11: 0000000000000000 R12: ffffb04d407f7dc0
        [ 8633.839854] R13: ffffffffa4ce3240 R14: 0000000000000000 R15: ffff9460b7681f60
        [ 8633.839857] FS:  00007fcac2e02700(0000) GS:ffff9460bdc00000(0000) knlGS:0000000000000000
        [ 8633.839858] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        [ 8633.839859] CR2: 00007f27beb77e28 CR3: 0000000077734000 CR4: 00000000000006f0
        [ 8633.839867] Call Trace:
        [ 8633.839871]  ip_route_output_key_hash_rcu+0x421/0x890
        [ 8633.839873]  ip_route_output_key_hash+0x5e/0x80
        [ 8633.839876]  ip_route_output_flow+0x1a/0x50
        [ 8633.839878]  __ip4_datagram_connect+0x154/0x310
        [ 8633.839880]  ip4_datagram_connect+0x28/0x40
        [ 8633.839882]  __sys_connect+0xd6/0x100
        ...
    
    The WARN_ON is triggered in fib_select_default which is invoked when
    there are multiple default routes. Update the function to use
    fib_info_nhc and convert the nexthop checks to use fib_nh_common.
    
    Add test case that covers the affected code path.
    
    [0] https://github.com/FRRouting/frr/issues/6089
    
    Fixes: 493ced1ac47c ("ipv4: Allow routes to use nexthop objects")
    Signed-off-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 3b759befd7f2fa65c9f02c6e4f2d5faf00c33fe9
Author: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Date:   Mon Apr 20 15:26:54 2020 +0530

    cxgb4: fix large delays in PTP synchronization
    
    [ Upstream commit bd019427bf3623ee3c7d2845cf921bbf4c14846c ]
    
    Fetching PTP sync information from mailbox is slow and can take
    up to 10 milliseconds. Reduce this unnecessary delay by directly
    reading the information from the corresponding registers.
    
    Fixes: 9c33e4208bce ("cxgb4: Add PTP Hardware Clock (PHC) support")
    Signed-off-by: Manoj Malviya <manojmalviya@chelsio.com>
    Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d02f4242650dc84843f5e636d463e291bf21d840
Author: Vishal Kulkarni <vishal@chelsio.com>
Date:   Wed Apr 22 21:20:07 2020 +0530

    cxgb4: fix adapter crash due to wrong MC size
    
    [ Upstream commit ce222748078592afb51b810dc154531aeba4f512 ]
    
    In the absence of MC1, the size calculation function
    cudbg_mem_region_size() was returing wrong MC size and
    resulted in adapter crash. This patch adds new argument
    to cudbg_mem_region_size() which will have actual size
    and returns error to caller in the absence of MC1.
    
    Fixes: a1c69520f785 ("cxgb4: collect MC memory dump")
    Signed-off-by: Vishal Kulkarni <vishal@chelsio.com>"
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 91097eba10d3ea2b1b0a74af5ff299a49156fbf2
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Tue Nov 26 16:51:50 2019 +0800

    PCI/PM: Add missing link delays required by the PCIe spec
    
    [ Upstream commit ad9001f2f41198784b0423646450ba2cb24793a3 ]
    
    Currently Linux does not follow PCIe spec regarding the required delays
    after reset. A concrete example is a Thunderbolt add-in-card that consists
    of a PCIe switch and two PCIe endpoints:
    
      +-1b.0-[01-6b]----00.0-[02-6b]--+-00.0-[03]----00.0 TBT controller
                                      +-01.0-[04-36]-- DS hotplug port
                                      +-02.0-[37]----00.0 xHCI controller
                                      \-04.0-[38-6b]-- DS hotplug port
    
    The root port (1b.0) and the PCIe switch downstream ports are all PCIe Gen3
    so they support 8GT/s link speeds.
    
    We wait for the PCIe hierarchy to enter D3cold (runtime):
    
      pcieport 0000:00:1b.0: power state changed by ACPI to D3cold
    
    When it wakes up from D3cold, according to the PCIe 5.0 section 5.8 the
    PCIe switch is put to reset and its power is re-applied. This means that we
    must follow the rules in PCIe 5.0 section 6.6.1.
    
    For the PCIe Gen3 ports we are dealing with here, the following applies:
    
      With a Downstream Port that supports Link speeds greater than 5.0 GT/s,
      software must wait a minimum of 100 ms after Link training completes
      before sending a Configuration Request to the device immediately below
      that Port. Software can determine when Link training completes by polling
      the Data Link Layer Link Active bit or by setting up an associated
      interrupt (see Section 6.7.3.3).
    
    Translating this into the above topology we would need to do this (DLLLA
    stands for Data Link Layer Link Active):
    
      0000:00:1b.0: wait for 100 ms after DLLLA is set before access to 0000:01:00.0
      0000:02:00.0: wait for 100 ms after DLLLA is set before access to 0000:03:00.0
      0000:02:02.0: wait for 100 ms after DLLLA is set before access to 0000:37:00.0
    
    I've instrumented the kernel with some additional logging so we can see the
    actual delays performed:
    
      pcieport 0000:00:1b.0: power state changed by ACPI to D0
      pcieport 0000:00:1b.0: waiting for D3cold delay of 100 ms
      pcieport 0000:00:1b.0: waiting for D3hot delay of 10 ms
      pcieport 0000:02:01.0: waiting for D3hot delay of 10 ms
      pcieport 0000:02:04.0: waiting for D3hot delay of 10 ms
    
    For the switch upstream port (01:00.0 reachable through 00:1b.0 root port)
    we wait for 100 ms but not taking into account the DLLLA requirement. We
    then wait 10 ms for D3hot -> D0 transition of the root port and the two
    downstream hotplug ports. This means that we deviate from what the spec
    requires.
    
    Performing the same check for system sleep (s2idle) transitions it turns
    out to be even worse. None of the mandatory delays are performed. If this
    would be S3 instead of s2idle then according to PCI FW spec 3.2 section
    4.6.8. there is a specific _DSM that allows the OS to skip the delays but
    this platform does not provide the _DSM and does not go to S3 anyway so no
    firmware is involved that could already handle these delays.
    
    On this particular platform these delays are not actually needed because
    there is an additional delay as part of the ACPI power resource that is
    used to turn on power to the hierarchy but since that additional delay is
    not required by any of standards (PCIe, ACPI) it is not present in the
    Intel Ice Lake, for example where missing the mandatory delays causes
    pciehp to start tearing down the stack too early (links are not yet
    trained). Below is an example how it looks like when this happens:
    
      pcieport 0000:83:04.0: pciehp: Slot(4): Card not present
      pcieport 0000:87:04.0: PME# disabled
      pcieport 0000:83:04.0: pciehp: pciehp_unconfigure_device: domain:bus:dev = 0000:86:00
      pcieport 0000:86:00.0: Refused to change power state, currently in D3
      pcieport 0000:86:00.0: restoring config space at offset 0x3c (was 0xffffffff, writing 0x201ff)
      pcieport 0000:86:00.0: restoring config space at offset 0x38 (was 0xffffffff, writing 0x0)
      ...
    
    There is also one reported case (see the bugzilla link below) where the
    missing delay causes xHCI on a Titan Ridge controller fail to runtime
    resume when USB-C dock is plugged. This does not involve pciehp but instead
    the PCI core fails to runtime resume the xHCI device:
    
      pcieport 0000:04:02.0: restoring config space at offset 0xc (was 0x10000, writing 0x10020)
      pcieport 0000:04:02.0: restoring config space at offset 0x4 (was 0x100000, writing 0x100406)
      xhci_hcd 0000:39:00.0: Refused to change power state, currently in D3
      xhci_hcd 0000:39:00.0: restoring config space at offset 0x3c (was 0xffffffff, writing 0x1ff)
      xhci_hcd 0000:39:00.0: restoring config space at offset 0x38 (was 0xffffffff, writing 0x0)
      ...
    
    Add a new function pci_bridge_wait_for_secondary_bus() that is called on
    PCI core resume and runtime resume paths accordingly if the bridge entered
    D3cold (and thus went through reset).
    
    This is second attempt to add the missing delays. The previous solution in
    c2bf1fc212f7 ("PCI: Add missing link delays required by the PCIe spec") was
    reverted because of two issues it caused:
    
      1. One system become unresponsive after S3 resume due to PME service
         spinning in pcie_pme_work_fn(). The root port in question reports that
         the xHCI sent PME but the xHCI device itself does not have PME status
         set. The PME status bit is never cleared in the root port resulting
         the indefinite loop in pcie_pme_work_fn().
    
      2. Slows down resume if the root/downstream port does not support Data
         Link Layer Active Reporting because pcie_wait_for_link_delay() waits
         1100 ms in that case.
    
    This version should avoid the above issues because we restrict the delay to
    happen only if the port went into D3cold.
    
    Link: https://lore.kernel.org/linux-pci/SL2P216MB01878BBCD75F21D882AEEA2880C60@SL2P216MB0187.KORP216.PROD.OUTLOOK.COM/
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=203885
    Link: https://lore.kernel.org/r/20191112091617.70282-3-mika.westerberg@linux.intel.com
    Reported-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Tested-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7720fd9c679ec839448480ad5cc548570a97bbf7
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Sat Oct 5 14:03:57 2019 +0200

    PCI/ASPM: Allow re-enabling Clock PM
    
    [ Upstream commit 35efea32b26f9aacc99bf07e0d2cdfba2028b099 ]
    
    Previously Clock PM could not be re-enabled after being disabled by
    pci_disable_link_state() because clkpm_capable was reset.  Change this by
    adding a clkpm_disable field similar to aspm_disable.
    
    Link: https://lore.kernel.org/r/4e8a66db-7d53-4a66-c26c-f0037ffaa705@gmail.com
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3340d011cff4948daef09ae85c71f9a966f60d7f
Author: Kevin Barnett <kevin.barnett@microsemi.com>
Date:   Mon Oct 7 17:31:58 2019 -0500

    scsi: smartpqi: fix problem with unique ID for physical device
    
    [ Upstream commit 5b083b305b49f65269b888885455b8c0cf1a52e4 ]
    
    Obtain the unique IDs from the RLL and RPL instead of VPD page 83h.
    
    Link: https://lore.kernel.org/r/157048751833.11757.11996314786914610803.stgit@brunhilda
    Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
    Reviewed-by: Scott Teel <scott.teel@microsemi.com>
    Signed-off-by: Kevin Barnett <kevin.barnett@microsemi.com>
    Signed-off-by: Don Brace <don.brace@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d867f2757173189abdd902b5ad62fdc9e0737b21
Author: Murthy Bhat <Murthy.Bhat@microsemi.com>
Date:   Mon Oct 7 17:31:28 2019 -0500

    scsi: smartpqi: fix call trace in device discovery
    
    [ Upstream commit b969261134c1b990b96ea98fe5e0fcf8ec937c04 ]
    
    Use sas_phy_delete rather than sas_phy_free which, according to
    comments, should not be called for PHYs that have been set up
    successfully.
    
    Link: https://lore.kernel.org/r/157048748876.11757.17773443136670011786.stgit@brunhilda
    Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
    Reviewed-by: Scott Teel <scott.teel@microsemi.com>
    Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com>
    Signed-off-by: Murthy Bhat <Murthy.Bhat@microsemi.com>
    Signed-off-by: Don Brace <don.brace@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8a20fb1c9a4982ab030009eb81c5880b67a33814
Author: Kevin Barnett <kevin.barnett@microsemi.com>
Date:   Mon Oct 7 17:31:23 2019 -0500

    scsi: smartpqi: fix controller lockup observed during force reboot
    
    [ Upstream commit 0530736e40a0695b1ee2762e2684d00549699da4 ]
    
    Link: https://lore.kernel.org/r/157048748297.11757.3872221216800537383.stgit@brunhilda
    Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
    Reviewed-by: Scott Teel <scott.teel@microsemi.com>
    Signed-off-by: Kevin Barnett <kevin.barnett@microsemi.com>
    Signed-off-by: Don Brace <don.brace@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3edd55247295f6ee7453e759502972caa39c66a4
Author: Halil Pasic <pasic@linux.ibm.com>
Date:   Thu Feb 13 13:37:28 2020 +0100

    virtio-blk: improve virtqueue error to BLK_STS
    
    [ Upstream commit 3d973b2e9a625996ee997c7303cd793b9d197c65 ]
    
    Let's change the mapping between virtqueue_add errors to BLK_STS
    statuses, so that -ENOSPC, which indicates virtqueue full is still
    mapped to BLK_STS_DEV_RESOURCE, but -ENOMEM which indicates non-device
    specific resource outage is mapped to BLK_STS_RESOURCE.
    
    Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
    Link: https://lore.kernel.org/r/20200213123728.61216-3-pasic@linux.ibm.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2390698b9dbdd8971397d6d19d90229bb973c669
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed Nov 13 11:48:39 2019 -0500

    tracing/selftests: Turn off timeout setting
    
    [ Upstream commit b43e78f65b1d35fd3e13c7b23f9b64ea83c9ad3a ]
    
    As the ftrace selftests can run for a long period of time, disable the
    timeout that the general selftests have. If a selftest hangs, then it
    probably means the machine will hang too.
    
    Link: https://lore.kernel.org/r/alpine.LSU.2.21.1911131604170.18679@pobox.suse.cz
    
    Suggested-by: Miroslav Benes <mbenes@suse.cz>
    Tested-by: Miroslav Benes <mbenes@suse.cz>
    Reviewed-by: Miroslav Benes <mbenes@suse.cz>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ca958fe8af205e900cab8d2793c54fabc04c0f94
Author: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Date:   Fri Jan 24 15:36:22 2020 -0600

    ASoC: SOF: trace: fix unconditional free in trace release
    
    [ Upstream commit e6110114d18d330c05fd6de9f31283fd086a5a3a ]
    
    Check if DMA pages were successfully allocated in initialization
    before calling free. For many types of memory (like sgbufs)
    the extra free is harmless, but not all backends track allocation
    state, so add an explicit check.
    
    Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20200124213625.30186-5-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 01fad934f1bdca50a952b3347f4e234a3e1e4ff8
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Tue Oct 29 20:00:22 2019 +0300

    PCI: pciehp: Prevent deadlock on disconnect
    
    [ Upstream commit 87d0f2a5536fdf5053a6d341880f96135549a644 ]
    
    This addresses deadlocks in these common cases in hierarchies containing
    two switches:
    
      - All involved ports are runtime suspended and they are unplugged. This
        can happen easily if the drivers involved automatically enable runtime
        PM (xHCI for example does that).
    
      - System is suspended (e.g., closing the lid on a laptop) with a dock +
        something else connected, and the dock is unplugged while suspended.
    
    These cases lead to the following deadlock:
    
      INFO: task irq/126-pciehp:198 blocked for more than 120 seconds.
      irq/126-pciehp  D    0   198      2 0x80000000
      Call Trace:
       schedule+0x2c/0x80
       schedule_timeout+0x246/0x350
       wait_for_completion+0xb7/0x140
       kthread_stop+0x49/0x110
       free_irq+0x32/0x70
       pcie_shutdown_notification+0x2f/0x50
       pciehp_remove+0x27/0x50
       pcie_port_remove_service+0x36/0x50
       device_release_driver+0x12/0x20
       bus_remove_device+0xec/0x160
       device_del+0x13b/0x350
       device_unregister+0x1a/0x60
       remove_iter+0x1e/0x30
       device_for_each_child+0x56/0x90
       pcie_port_device_remove+0x22/0x40
       pcie_portdrv_remove+0x20/0x60
       pci_device_remove+0x3e/0xc0
       device_release_driver_internal+0x18c/0x250
       device_release_driver+0x12/0x20
       pci_stop_bus_device+0x6f/0x90
       pci_stop_bus_device+0x31/0x90
       pci_stop_and_remove_bus_device+0x12/0x20
       pciehp_unconfigure_device+0x88/0x140
       pciehp_disable_slot+0x6a/0x110
       pciehp_handle_presence_or_link_change+0x263/0x400
       pciehp_ist+0x1c9/0x1d0
       irq_thread_fn+0x24/0x60
       irq_thread+0xeb/0x190
       kthread+0x120/0x140
    
      INFO: task irq/190-pciehp:2288 blocked for more than 120 seconds.
      irq/190-pciehp  D    0  2288      2 0x80000000
      Call Trace:
       __schedule+0x2a2/0x880
       schedule+0x2c/0x80
       schedule_preempt_disabled+0xe/0x10
       mutex_lock+0x2c/0x30
       pci_lock_rescan_remove+0x15/0x20
       pciehp_unconfigure_device+0x4d/0x140
       pciehp_disable_slot+0x6a/0x110
       pciehp_handle_presence_or_link_change+0x263/0x400
       pciehp_ist+0x1c9/0x1d0
       irq_thread_fn+0x24/0x60
       irq_thread+0xeb/0x190
       kthread+0x120/0x140
    
    What happens here is that the whole hierarchy is runtime resumed and the
    parent PCIe downstream port, which got the hot-remove event, starts
    removing devices below it, taking pci_lock_rescan_remove() lock. When the
    child PCIe port is runtime resumed it calls pciehp_check_presence() which
    ends up calling pciehp_card_present() and pciehp_check_link_active().  Both
    of these use pcie_capability_read_word(), which notices that the underlying
    device is already gone and returns PCIBIOS_DEVICE_NOT_FOUND with the
    capability value set to 0. When pciehp gets this value it thinks that its
    child device is also hot-removed and schedules its IRQ thread to handle the
    event.
    
    The deadlock happens when the child's IRQ thread runs and tries to acquire
    pci_lock_rescan_remove() which is already taken by the parent and the
    parent waits for the child's IRQ thread to finish.
    
    Prevent this from happening by checking the return value of
    pcie_capability_read_word() and if it is PCIBIOS_DEVICE_NOT_FOUND stop
    performing any hot-removal activities.
    
    [bhelgaas: add common scenarios to commit log]
    Link: https://lore.kernel.org/r/20191029170022.57528-2-mika.westerberg@linux.intel.com
    Tested-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 39b9a0b3d24daba1090019d1ba1a18454bf4aab1
Author: Aurelien Jarno <aurelien@aurel32.net>
Date:   Sun Dec 1 20:57:28 2019 +0100

    libbpf: Fix readelf output parsing on powerpc with recent binutils
    
    [ Upstream commit 3464afdf11f9a1e031e7858a05351ceca1792fea ]
    
    On powerpc with recent versions of binutils, readelf outputs an extra
    field when dumping the symbols of an object file. For example:
    
        35: 0000000000000838    96 FUNC    LOCAL  DEFAULT [<localentry>: 8]     1 btf_is_struct
    
    The extra "[<localentry>: 8]" prevents the GLOBAL_SYM_COUNT variable to
    be computed correctly and causes the check_abi target to fail.
    
    Fix that by looking for the symbol name in the last field instead of the
    8th one. This way it should also cope with future extra fields.
    
    Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Tested-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/bpf/20191201195728.4161537-1-aurelien@aurel32.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b91ae599472563891689b167c77ad3a32795752a
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Tue Nov 12 12:16:16 2019 +0300

    PCI/PM: Add pcie_wait_for_link_delay()
    
    [ Upstream commit 4827d63891b6a839dac49c6ab62e61c4b011c4f2 ]
    
    Add pcie_wait_for_link_delay().  Similar to pcie_wait_for_link() but allows
    passing custom activation delay in milliseconds.
    
    Link: https://lore.kernel.org/r/20191112091617.70282-2-mika.westerberg@linux.intel.com
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df38cda0144a1e6d2ec7c768f53a4744ec3ff18d
Author: Yongqiang Sun <yongqiang.sun@amd.com>
Date:   Mon Mar 9 17:13:02 2020 -0400

    drm/amd/display: Not doing optimize bandwidth if flip pending.
    
    [ Upstream commit 9941b8129030c9202aaf39114477a0e58c0d6ffc ]
    
    [Why]
    In some scenario like 1366x768 VSR enabled connected with a 4K monitor
    and playing 4K video in clone mode, underflow will be observed due to
    decrease dppclk when previouse surface scan isn't finished
    
    [How]
    In this use case, surface flip is switching between 4K and 1366x768,
    1366x768 needs smaller dppclk, and when decrease the clk and previous
    surface scan is for 4K and scan isn't done, underflow will happen.  Not
    doing optimize bandwidth in case of flip pending.
    
    Signed-off-by: Yongqiang Sun <yongqiang.sun@amd.com>
    Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2be21320076de0b23efb1f3d2103e1b3cd307b74
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Thu Mar 12 16:45:16 2020 +0200

    xhci: Finetune host initiated USB3 rootport link suspend and resume
    
    [ Upstream commit ceca49382ac20e06ce04c21279c7f2868c4ec1d4 ]
    
    Depending on the current link state the steps to resume the link to U0
    varies. The normal case when a port is suspended (U3) we set the link
    to U0 and wait for a port event when U3exit completed and port moved to
    U0.
    
    If the port is in U1/U2, then no event is issued, just set link to U0
    
    If port is in Resume or Recovery state then the device has already
    initiated resume, and this host initiated resume is racing against it.
    Port event handler for device initiated resume will set link to U0,
    just wait for the port to reach U0 before returning.
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200312144517.1593-9-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ea6f7011c42db70b6380480d0561d8f9402d6f76
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Thu Mar 12 16:45:15 2020 +0200

    xhci: Wait until link state trainsits to U0 after setting USB_SS_PORT_LS_U0
    
    [ Upstream commit 0200b9f790b0fc9e9a42f685f5ad54b23fe959f4 ]
    
    Like U3 case, xHCI spec doesn't specify the upper bound of U0 transition
    time. The 20ms is not enough for some devices.
    
    Intead of polling PLS or PLC, we can facilitate the port change event to
    know that the link transits to U0 is completed.
    
    While at it, also separate U0 and U3 case to make the code cleaner.
    
    [variable rename to u3exit, and skip completion for usb2 ports -Mathias ]
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200312144517.1593-8-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e650a264df6f72701874f6eab11fdb28a861515e
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Thu Mar 12 16:45:14 2020 +0200

    xhci: Ensure link state is U3 after setting USB_SS_PORT_LS_U3
    
    [ Upstream commit eb002726fac7cefb98ff39ddb89e150a1c24fe85 ]
    
    The xHCI spec doesn't specify the upper bound of U3 transition time. For
    some devices 20ms is not enough, so we need to make sure the link state
    is in U3 before further actions.
    
    I've tried to use U3 Entry Capability by setting U3 Entry Enable in
    config register, however the port change event for U3 transition
    interrupts the system suspend process.
    
    For now let's use the less ideal method by polling PLS.
    
    [use usleep_range(), and shorten the delay time while polling -Mathias]
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200312144517.1593-7-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bdb61374da1b13b565912d35d339ae2699e45e6c
Author: František Kučera <franta-linux@frantovo.cz>
Date:   Wed Apr 1 11:59:07 2020 +0200

    ALSA: usb-audio: Add Pioneer DJ DJM-250MK2 quirk
    
    [ Upstream commit 73d8c94084341e2895169a0462dbc18167f01683 ]
    
    Pioneer DJ DJM-250MK2 is a mixer that acts like a USB sound card.
    The MIDI controller part is standard but the PCM part is "vendor specific".
    Output is enabled by this quirk: 8 channels, 48 000 Hz, S24_3LE.
    Input is not working.
    
    Signed-off-by: František Kučera <franta-linux@frantovo.cz>
    Link: https://lore.kernel.org/r/20200401095907.3387-1-konference@frantovo.cz
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 578aa47612f2d721fc2afbdab1e796af80f78d72
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun Apr 5 15:37:26 2020 +0200

    ASoC: Intel: bytcr_rt5640: Add quirk for MPMAN MPWIN895CL tablet
    
    [ Upstream commit c8b78f24c1247b7bd0882885c672d9dec5800bc6 ]
    
    The MPMAN MPWIN895CL tablet almost fully works with out default settings.
    The only problem is that it has only 1 speaker so any sounds only playing
    on the right channel get lost.
    
    Add a quirk for this model using the default settings + MONO_SPEAKER.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20200405133726.24154-1-hdegoede@redhat.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 632d9736d215805bf1482e57e9db2e4c30237dd9
Author: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Date:   Sun Apr 5 16:40:57 2020 -0400

    drm/amd/display: Calculate scaling ratios on every medium/full update
    
    [ Upstream commit 3bae20137cae6c03f58f96c0bc9f3d46f0bc17d4 ]
    
    [Why]
    If a plane isn't being actively enabled or disabled then DC won't
    always recalculate scaling rects and ratios for the primary plane.
    
    This results in only a partial or corrupted rect being displayed on
    the screen instead of scaling to fit the screen.
    
    [How]
    Add back the logic to recalculate the scaling rects into
    dc_commit_updates_for_stream since this is the expected place to
    do it in DC.
    
    This was previously removed a few years ago to fix an underscan issue
    but underscan is still functional now with this change - and it should
    be, since this is only updating to the latest plane state getting passed
    in.
    
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 16c370534d6c483978e18ef7ca02ae7b22d480f4
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Tue Apr 7 16:14:27 2020 +0200

    perf/core: Disable page faults when getting phys address
    
    [ Upstream commit d3296fb372bf7497b0e5d0478c4e7a677ec6f6e9 ]
    
    We hit following warning when running tests on kernel
    compiled with CONFIG_DEBUG_ATOMIC_SLEEP=y:
    
     WARNING: CPU: 19 PID: 4472 at mm/gup.c:2381 __get_user_pages_fast+0x1a4/0x200
     CPU: 19 PID: 4472 Comm: dummy Not tainted 5.6.0-rc6+ #3
     RIP: 0010:__get_user_pages_fast+0x1a4/0x200
     ...
     Call Trace:
      perf_prepare_sample+0xff1/0x1d90
      perf_event_output_forward+0xe8/0x210
      __perf_event_overflow+0x11a/0x310
      __intel_pmu_pebs_event+0x657/0x850
      intel_pmu_drain_pebs_nhm+0x7de/0x11d0
      handle_pmi_common+0x1b2/0x650
      intel_pmu_handle_irq+0x17b/0x370
      perf_event_nmi_handler+0x40/0x60
      nmi_handle+0x192/0x590
      default_do_nmi+0x6d/0x150
      do_nmi+0x2f9/0x3c0
      nmi+0x8e/0xd7
    
    While __get_user_pages_fast() is IRQ-safe, it calls access_ok(),
    which warns on:
    
      WARN_ON_ONCE(!in_task() && !pagefault_disabled())
    
    Peter suggested disabling page faults around __get_user_pages_fast(),
    which gets rid of the warning in access_ok() call.
    
    Suggested-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Link: https://lkml.kernel.org/r/20200407141427.3184722-1-jolsa@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 41a3e446bc5676da04925cdd457b5ec49d69634d
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon Feb 3 13:35:35 2020 -0800

    pwm: bcm2835: Dynamically allocate base
    
    [ Upstream commit 2c25b07e5ec119cab609e41407a1fb3fa61442f5 ]
    
    The newer 2711 and 7211 chips have two PWM controllers and failure to
    dynamically allocate the PWM base would prevent the second PWM
    controller instance being probed for succeeding with an -EEXIST error
    from alloc_pwms().
    
    Fixes: e5a06dc5ac1f ("pwm: Add BCM2835 PWM driver")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Reviewed-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
    Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 53cdc935c912fc8474c5613c0f182ac39d05c5d7
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Mar 16 11:32:15 2020 +0100

    pwm: renesas-tpu: Fix late Runtime PM enablement
    
    [ Upstream commit d5a3c7a4536e1329a758e14340efd0e65252bd3d ]
    
    Runtime PM should be enabled before calling pwmchip_add(), as PWM users
    can appear immediately after the PWM chip has been added.
    Likewise, Runtime PM should always be disabled after the removal of the
    PWM chip, even if the latter failed.
    
    Fixes: 99b82abb0a35b073 ("pwm: Add Renesas TPU PWM driver")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1bfb6423c6fc58cedadceaf5ce8e17a20890e826
Author: Nick Bowler <nbowler@draconx.ca>
Date:   Sat Mar 28 01:09:09 2020 -0400

    nvme: fix compat address handling in several ioctls
    
    [ Upstream commit c95b708d5fa65b4e51f088ee077d127fd5a57b70 ]
    
    On a 32-bit kernel, the upper bits of userspace addresses passed via
    various ioctls are silently ignored by the nvme driver.
    
    However on a 64-bit kernel running a compat task, these upper bits are
    not ignored and are in fact required to be zero for the ioctls to work.
    
    Unfortunately, this difference matters.  32-bit smartctl submits the
    NVME_IOCTL_ADMIN_CMD ioctl with garbage in these upper bits because it
    seems the pointer value it puts into the nvme_passthru_cmd structure is
    sign extended.  This works fine on 32-bit kernels but fails on a 64-bit
    one because (at least on my setup) the addresses smartctl uses are
    consistently above 2G.  For example:
    
      # smartctl -x /dev/nvme0n1
      smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.5.11] (local build)
      Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
    
      Read NVMe Identify Controller failed: NVME_IOCTL_ADMIN_CMD: Bad address
    
    Since changing 32-bit kernels to actually check all of the submitted
    address bits now would break existing userspace, this patch fixes the
    compat problem by explicitly zeroing the upper bits in the compat case.
    This enables 32-bit smartctl to work on a 64-bit kernel.
    
    Signed-off-by: Nick Bowler <nbowler@draconx.ca>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit de1263d4306e64074a9cd53ad43cee70f586f592
Author: Ganesh Goudar <ganeshgr@linux.ibm.com>
Date:   Fri Mar 20 16:31:19 2020 +0530

    powerpc/pseries: Fix MCE handling on pseries
    
    [ Upstream commit a95a0a1654f16366360399574e10efd87e867b39 ]
    
    MCE handling on pSeries platform fails as recent rework to use common
    code for pSeries and PowerNV in machine check error handling tries to
    access per-cpu variables in realmode. The per-cpu variables may be
    outside the RMO region on pSeries platform and needs translation to be
    enabled for access. Just moving these per-cpu variable into RMO region
    did'nt help because we queue some work to workqueues in real mode, which
    again tries to touch per-cpu variables. Also fwnmi_release_errinfo()
    cannot be called when translation is not enabled.
    
    This patch fixes this by enabling translation in the exception handler
    when all required real mode handling is done. This change only affects
    the pSeries platform.
    
    Without this fix below kernel crash is seen on injecting
    SLB multihit:
    
    BUG: Unable to handle kernel data access on read at 0xc00000027b205950
    Faulting instruction address: 0xc00000000003b7e0
    Oops: Kernel access of bad area, sig: 11 [#1]
    LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
    Modules linked in: mcetest_slb(OE+) af_packet(E) xt_tcpudp(E) ip6t_rpfilter(E) ip6t_REJECT(E) ipt_REJECT(E) xt_conntrack(E) ip_set(E) nfnetlink(E) ebtable_nat(E) ebtable_broute(E) ip6table_nat(E) ip6table_mangle(E) ip6table_raw(E) ip6table_security(E) iptable_nat(E) nf_nat(E) nf_conntrack(E) nf_defrag_ipv6(E) nf_defrag_ipv4(E) iptable_mangle(E) iptable_raw(E) iptable_security(E) ebtable_filter(E) ebtables(E) ip6table_filter(E) ip6_tables(E) iptable_filter(E) ip_tables(E) x_tables(E) xfs(E) ibmveth(E) vmx_crypto(E) gf128mul(E) uio_pdrv_genirq(E) uio(E) crct10dif_vpmsum(E) rtc_generic(E) btrfs(E) libcrc32c(E) xor(E) zstd_decompress(E) zstd_compress(E) raid6_pq(E) sr_mod(E) sd_mod(E) cdrom(E) ibmvscsi(E) scsi_transport_srp(E) crc32c_vpmsum(E) dm_mod(E) sg(E) scsi_mod(E)
    CPU: 34 PID: 8154 Comm: insmod Kdump: loaded Tainted: G OE 5.5.0-mahesh #1
    NIP: c00000000003b7e0 LR: c0000000000f2218 CTR: 0000000000000000
    REGS: c000000007dcb960 TRAP: 0300 Tainted: G OE (5.5.0-mahesh)
    MSR: 8000000000001003 <SF,ME,RI,LE> CR: 28002428 XER: 20040000
    CFAR: c0000000000f2214 DAR: c00000027b205950 DSISR: 40000000 IRQMASK: 0
    GPR00: c0000000000f2218 c000000007dcbbf0 c000000001544800 c000000007dcbd70
    GPR04: 0000000000000001 c000000007dcbc98 c008000000d00258 c0080000011c0000
    GPR08: 0000000000000000 0000000300000003 c000000001035950 0000000003000048
    GPR12: 000000027a1d0000 c000000007f9c000 0000000000000558 0000000000000000
    GPR16: 0000000000000540 c008000001110000 c008000001110540 0000000000000000
    GPR20: c00000000022af10 c00000025480fd70 c008000001280000 c00000004bfbb300
    GPR24: c000000001442330 c00800000800000d c008000008000000 4009287a77000510
    GPR28: 0000000000000000 0000000000000002 c000000001033d30 0000000000000001
    NIP [c00000000003b7e0] save_mce_event+0x30/0x240
    LR [c0000000000f2218] pseries_machine_check_realmode+0x2c8/0x4f0
    Call Trace:
    Instruction dump:
    3c4c0151 38429050 7c0802a6 60000000 fbc1fff0 fbe1fff8 f821ffd1 3d42ffaf
    3fc2ffaf e98d0030 394a1150 3bdef530 <7d6a62aa> 1d2b0048 2f8b0063 380b0001
    ---[ end trace 46fd63f36bbdd940 ]---
    
    Fixes: 9ca766f9891d ("powerpc/64s/pseries: machine check convert to use common event code")
    Reviewed-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
    Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Ganesh Goudar <ganeshgr@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200320110119.10207-1-ganeshgr@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 107290a8f06bbfcf09b387c296c810517e08715e
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Thu Apr 2 22:04:01 2020 +1000

    Revert "powerpc/64: irq_work avoid interrupt when called with hardware irqs enabled"
    
    [ Upstream commit abc3fce76adbdfa8f87272c784b388cd20b46049 ]
    
    This reverts commit ebb37cf3ffd39fdb6ec5b07111f8bb2f11d92c5f.
    
    That commit does not play well with soft-masked irq state
    manipulations in idle, interrupt replay, and possibly others due to
    tracing code sometimes using irq_work_queue (e.g., in
    trace_hardirqs_on()). That can cause PACA_IRQ_DEC to become set when
    it is not expected, and be ignored or cleared or cause warnings.
    
    The net result seems to be missing an irq_work until the next timer
    interrupt in the worst case which is usually not going to be noticed,
    however it could be a long time if the tick is disabled, which is
    against the spirit of irq_work and might cause real problems.
    
    The idea is still solid, but it would need more work. It's not really
    clear if it would be worth added complexity, so revert this for
    now (not a straight revert, but replace with a comment explaining why
    we might see interrupts happening, and gives git blame something to
    find).
    
    Fixes: ebb37cf3ffd3 ("powerpc/64: irq_work avoid interrupt when called with hardware irqs enabled")
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200402120401.1115883-1-npiggin@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1712911bfb34dc86efa079b136def17eb31ef34d
Author: Evan Green <evgreen@chromium.org>
Date:   Fri Apr 3 16:43:04 2020 +0200

    loop: Better discard support for block devices
    
    [ Upstream commit c52abf563049e787c1341cdf15c7dbe1bfbc951b ]
    
    If the backing device for a loop device is itself a block device,
    then mirror the "write zeroes" capabilities of the underlying
    block device into the loop device. Copy this capability into both
    max_write_zeroes_sectors and max_discard_sectors of the loop device.
    
    The reason for this is that REQ_OP_DISCARD on a loop device translates
    into blkdev_issue_zeroout(), rather than blkdev_issue_discard(). This
    presents a consistent interface for loop devices (that discarded data
    is zeroed), regardless of the backing device type of the loop device.
    There should be no behavior change for loop devices backed by regular
    files.
    
    This change fixes blktest block/003, and removes an extraneous
    error print in block/013 when testing on a loop device backed
    by a block device that does not support discard.
    
    Signed-off-by: Evan Green <evgreen@chromium.org>
    Reviewed-by: Gwendal Grignou <gwendal@chromium.org>
    Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
    [used updated version of Evan's comment in loop_config_discard()]
    [moved backingq to local scope, removed redundant braces]
    Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ed61eec49a702986463ffb31af917bc800c1c6f4
Author: Cornelia Huck <cohuck@redhat.com>
Date:   Fri Mar 27 13:45:02 2020 +0100

    s390/cio: avoid duplicated 'ADD' uevents
    
    [ Upstream commit 05ce3e53f375295c2940390b2b429e506e07655c ]
    
    The common I/O layer delays the ADD uevent for subchannels and
    delegates generating this uevent to the individual subchannel
    drivers. The io_subchannel driver will do so when the associated
    ccw_device has been registered -- but unconditionally, so more
    ADD uevents will be generated if a subchannel has been unbound
    from the io_subchannel driver and later rebound.
    
    To fix this, only generate the ADD event if uevents were still
    suppressed for the device.
    
    Fixes: fa1a8c23eb7d ("s390: cio: Delay uevents for subchannels")
    Message-Id: <20200327124503.9794-2-cohuck@redhat.com>
    Reported-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
    Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
    Signed-off-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ad1187668ffe6d3fbe195bdf9347e98d92e104c4
Author: Cornelia Huck <cohuck@redhat.com>
Date:   Fri Mar 27 13:45:03 2020 +0100

    s390/cio: generate delayed uevent for vfio-ccw subchannels
    
    [ Upstream commit 2bc55eaeb88d30accfc1b6ac2708d4e4b81ca260 ]
    
    The common I/O layer delays the ADD uevent for subchannels and
    delegates generating this uevent to the individual subchannel
    drivers. The vfio-ccw I/O subchannel driver, however, did not
    do that, and will not generate an ADD uevent for subchannels
    that had not been bound to a different driver (or none at all,
    which also triggers the uevent).
    
    Generate the ADD uevent at the end of the probe function if
    uevents were still suppressed for the device.
    
    Message-Id: <20200327124503.9794-3-cohuck@redhat.com>
    Fixes: 63f1934d562d ("vfio: ccw: basic implementation for vfio_ccw driver")
    Reviewed-by: Eric Farman <farman@linux.ibm.com>
    Signed-off-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8652254e96a6052aed8ed678466de638eba0f3ca
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Thu Mar 26 17:00:49 2020 +0900

    lib/raid6/test: fix build on distros whose /bin/sh is not bash
    
    [ Upstream commit 06bd48b6cd97ef3889b68c8e09014d81dbc463f1 ]
    
    You can build a user-space test program for the raid6 library code,
    like this:
    
      $ cd lib/raid6/test
      $ make
    
    The command in $(shell ...) function is evaluated by /bin/sh by default.
    (or, you can specify the shell by passing SHELL=<shell> from command line)
    
    Currently '>&/dev/null' is used to sink both stdout and stderr. Because
    this code is bash-ism, it only works when /bin/sh is a symbolic link to
    bash (this is the case on RHEL etc.)
    
    This does not work on Ubuntu where /bin/sh is a symbolic link to dash.
    
    I see lots of
    
      /bin/sh: 1: Syntax error: Bad fd number
    
    and
    
      warning "your version of binutils lacks ... support"
    
    Replace it with portable '>/dev/null 2>&1'.
    
    Fixes: 4f8c55c5ad49 ("lib/raid6: build proper files on corresponding arch")
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Acked-by: H. Peter Anvin (Intel) <hpa@zytor.com>
    Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e84ef75fa184fea5142bd8f8d5022bcf496d02ae
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Thu Apr 2 11:28:03 2020 +0200

    kconfig: qconf: Fix a few alignment issues
    
    [ Upstream commit 60969f02f07ae1445730c7b293c421d179da729c ]
    
    There are a few items with wrong alignments. Solve them.
    
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cb5d9604038c8327df021aef89c8b4e5678b44cc
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Fri Apr 10 14:34:13 2020 -0700

    ipc/util.c: sysvipc_find_ipc() should increase position index
    
    [ Upstream commit 89163f93c6f969da5811af5377cc10173583123b ]
    
    If seq_file .next function does not change position index, read after
    some lseek can generate unexpected output.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=206283
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Waiman Long <longman@redhat.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: NeilBrown <neilb@suse.com>
    Cc: Peter Oberparleiter <oberpar@linux.ibm.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Link: http://lkml.kernel.org/r/b7a20945-e315-8bb0-21e6-3875c14a8494@virtuozzo.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 70638a74c52a76405e5b9b8c498c67d772c06f20
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Apr 10 14:33:53 2020 -0700

    selftests: kmod: fix handling test numbers above 9
    
    [ Upstream commit 6d573a07528308eb77ec072c010819c359bebf6e ]
    
    get_test_count() and get_test_enabled() were broken for test numbers
    above 9 due to awk interpreting a field specification like '$0010' as
    octal rather than decimal.  Fix it by stripping the leading zeroes.
    
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Luis Chamberlain <mcgrof@kernel.org>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jeff Vander Stoep <jeffv@google.com>
    Cc: Jessica Yu <jeyu@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: NeilBrown <neilb@suse.com>
    Link: http://lkml.kernel.org/r/20200318230515.171692-5-ebiggers@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 16846f6fcbcfc0de495305b588e439f08ef28899
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Fri Apr 10 14:34:10 2020 -0700

    kernel/gcov/fs.c: gcov_seq_next() should increase position index
    
    [ Upstream commit f4d74ef6220c1eda0875da30457bef5c7111ab06 ]
    
    If seq_file .next function does not change position index, read after
    some lseek can generate unexpected output.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=206283
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: NeilBrown <neilb@suse.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Waiman Long <longman@redhat.com>
    Link: http://lkml.kernel.org/r/f65c6ee7-bd00-f910-2f8a-37cc67e4ff88@virtuozzo.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1edfff795d4f2117a1b95484213cb9fb4a46dc48
Author: Kishon Vijay Abraham I <kishon@ti.com>
Date:   Mon Apr 6 10:58:36 2020 +0530

    dma-direct: fix data truncation in dma_direct_get_required_mask()
    
    [ Upstream commit cdcda0d1f8f4ab84efe7cd9921c98364398aefd7 ]
    
    The upper 32-bit physical address gets truncated inadvertently
    when dma_direct_get_required_mask() invokes phys_to_dma_direct().
    This results in dma_addressing_limited() return incorrect value
    when used in platforms with LPAE enabled.
    Fix it here by explicitly type casting 'max_pfn' to phys_addr_t
    in order to prevent overflow of intermediate value while evaluating
    '(max_pfn - 1) << PAGE_SHIFT'.
    
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8300465623bfcbafbd01b60eef04ebf037ca42db
Author: Isabel Zhang <isabel.zhang@amd.com>
Date:   Sun Apr 5 16:41:01 2020 -0400

    drm/amd/display: Update stream adjust in dc_stream_adjust_vmin_vmax
    
    [ Upstream commit 346d8a0a3c91888a412c2735d69daa09c00f0203 ]
    
    [Why]
    After v_total_min and max are updated in vrr structure, the changes are
    not reflected in stream adjust. When these values are read from stream
    adjust it does not reflect the actual state of the system.
    
    [How]
    Set stream adjust values equal to vrr adjust values after vrr adjust
    values are updated.
    
    Signed-off-by: Isabel Zhang <isabel.zhang@amd.com>
    Reviewed-by: Alvin Lee <Alvin.Lee2@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit da2c733a71800c284c7ce029899b2e5f46b801e8
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Thu Apr 2 09:34:54 2020 -0700

    nvme: fix deadlock caused by ANA update wrong locking
    
    [ Upstream commit 657f1975e9d9c880fa13030e88ba6cc84964f1db ]
    
    The deadlock combines 4 flows in parallel:
    - ns scanning (triggered from reconnect)
    - request timeout
    - ANA update (triggered from reconnect)
    - I/O coming into the mpath device
    
    (1) ns scanning triggers disk revalidation -> update disk info ->
        freeze queue -> but blocked, due to (2)
    
    (2) timeout handler reference the g_usage_counter - > but blocks in
        the transport .timeout() handler, due to (3)
    
    (3) the transport timeout handler (indirectly) calls nvme_stop_queue() ->
        which takes the (down_read) namespaces_rwsem - > but blocks, due to (4)
    
    (4) ANA update takes the (down_write) namespaces_rwsem -> calls
        nvme_mpath_set_live() -> which synchronize the ns_head srcu
        (see commit 504db087aacc) -> but blocks, due to (5)
    
    (5) I/O came into nvme_mpath_make_request -> took srcu_read_lock ->
        direct_make_request > blk_queue_enter -> but blocked, due to (1)
    
    ==> the request queue is under freeze -> deadlock.
    
    The fix is making ANA update take a read lock as the namespaces list
    is not manipulated, it is just the ns and ns->head that are being
    updated (which is protected with the ns->head lock).
    
    Fixes: 0d0b660f214dc ("nvme: add ANA support")
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 90a33c23aad85e66a22350cdd4988f39b0146b25
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Apr 2 20:53:57 2020 +0200

    ASoC: Intel: atom: Take the drv->lock mutex before calling sst_send_slot_map()
    
    [ Upstream commit 81630dc042af998b9f58cd8e2c29dab9777ea176 ]
    
    sst_send_slot_map() uses sst_fill_and_send_cmd_unlocked() because in some
    places it is called with the drv->lock mutex already held.
    
    So it must always be called with the mutex locked. This commit adds missing
    locking in the sst_set_be_modules() code-path.
    
    Fixes: 24c8d14192cc ("ASoC: Intel: mrfld: add DSP core controls")
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20200402185359.3424-1-hdegoede@redhat.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1310d9655be0e11f07f2f915225bea083951d773
Author: Santosh Sivaraj <santosh@fossix.org>
Date:   Tue Jan 14 11:10:51 2020 +0530

    tools/test/nvdimm: Fix out of tree build
    
    [ Upstream commit 1f776799628139d0da47e710ad86eb58d987ff66 ]
    
    Out of tree build using
    
       make M=tools/test/nvdimm O=/tmp/build -C /tmp/build
    
    fails with the following error
    
    make: Entering directory '/tmp/build'
      CC [M]  tools/testing/nvdimm/test/nfit.o
    linux/tools/testing/nvdimm/test/nfit.c:19:10: fatal error: nd-core.h: No such file or directory
       19 | #include <nd-core.h>
          |          ^~~~~~~~~~~
    compilation terminated.
    
    That is because the kbuild file uses $(src) which points to
    tools/testing/nvdimm, $(srctree) correctly points to root of the linux
    source tree.
    
    Reported-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: Santosh Sivaraj <santosh@fossix.org>
    Link: https://lore.kernel.org/r/20200114054051.4115790-1-santosh@fossix.org
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 713ad9b9d37aed92e4921ff293e8c4f334ef209f
Author: Wu Bo <wubo40@huawei.com>
Date:   Tue Mar 24 15:58:50 2020 +0800

    scsi: iscsi: Report unbind session event when the target has been removed
    
    [ Upstream commit 13e60d3ba287d96eeaf1deaadba51f71578119a3 ]
    
    If the daemon is restarted or crashes while logging out of a session, the
    unbind session event sent by the kernel is not processed and is lost.  When
    the daemon starts again, the session can't be unbound because the daemon is
    waiting for the event message. However, the kernel has already logged out
    and the event will not be resent.
    
    When iscsid restart is complete, logout session reports error:
    
    Logging out of session [sid: 6, target: iqn.xxxxx, portal: xx.xx.xx.xx,3260]
    iscsiadm: Could not logout of [sid: 6, target: iscsiadm -m node iqn.xxxxx, portal: xx.xx.xx.xx,3260].
    iscsiadm: initiator reported error (9 - internal error)
    iscsiadm: Could not logout of all requested sessions
    
    Make sure the unbind event is emitted.
    
    [mkp: commit desc and applied by hand since patch was mangled]
    
    Link: https://lore.kernel.org/r/4eab1771-2cb3-8e79-b31c-923652340e99@huawei.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Wu Bo <wubo40@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f507ae6e33cbe56c4e3fe000434fc0ecc263d098
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Mon Mar 23 15:06:30 2020 -0700

    nvme-tcp: fix possible crash in write_zeroes processing
    
    [ Upstream commit 25e5cb780e62bde432b401f312bb847edc78b432 ]
    
    We cannot look at blk_rq_payload_bytes without first checking
    that the request has a mappable physical segments first (e.g.
    blk_rq_nr_phys_segments(rq) != 0) and only then to take the
    request payload bytes. This caused us to send a wrong sgl to
    the target or even dereference a non-existing buffer in case
    we actually got to the data send sequence (if it was in-capsule).
    
    Reported-by: Tony Asleson <tasleson@redhat.com>
    Suggested-by: Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a5f036adae0981ec1a5e711de1df00750d320755
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Mar 16 11:32:14 2020 +0100

    pwm: rcar: Fix late Runtime PM enablement
    
    [ Upstream commit 1451a3eed24b5fd6a604683f0b6995e0e7e16c79 ]
    
    Runtime PM should be enabled before calling pwmchip_add(), as PWM users
    can appear immediately after the PWM chip has been added.
    Likewise, Runtime PM should be disabled after the removal of the PWM
    chip.
    
    Fixes: ed6c1476bf7f16d5 ("pwm: Add support for R-Car PWM Timer")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b71ac8086a7b4d8281e1157762b9d56e41f12865
Author: Yan, Zheng <zyan@redhat.com>
Date:   Tue Mar 10 19:34:20 2020 +0800

    ceph: don't skip updating wanted caps when cap is stale
    
    [ Upstream commit 0aa971b6fd3f92afef6afe24ef78d9bb14471519 ]
    
    1. try_get_cap_refs() fails to get caps and finds that mds_wanted
       does not include what it wants. It returns -ESTALE.
    2. ceph_get_caps() calls ceph_renew_caps(). ceph_renew_caps() finds
       that inode has cap, so it calls ceph_check_caps().
    3. ceph_check_caps() finds that issued caps (without checking if it's
       stale) already includes caps wanted by open file, so it skips
       updating wanted caps.
    
    Above events can cause an infinite loop inside ceph_get_caps().
    
    Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit acbfccc6a3e3d87bf9bc0ee545b941bb1a5ef9f1
Author: Qiujun Huang <hqjagain@gmail.com>
Date:   Fri Mar 6 09:34:20 2020 +0800

    ceph: return ceph_mdsc_do_request() errors from __get_parent()
    
    [ Upstream commit c6d50296032f0b97473eb2e274dc7cc5d0173847 ]
    
    Return the error returned by ceph_mdsc_do_request(). Otherwise,
    r_target_inode ends up being NULL this ends up returning ENOENT
    regardless of the error.
    
    Signed-off-by: Qiujun Huang <hqjagain@gmail.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fb669262fdef49ef3ef217299ebbafbb673e5633
Author: Javed Hasan <jhasan@marvell.com>
Date:   Thu Mar 26 23:02:07 2020 -0700

    scsi: libfc: If PRLI rejected, move rport to PLOGI state
    
    [ Upstream commit 45e544bfdab2014d11c7595b8ccc3c4715a09015 ]
    
    If PRLI reject code indicates "rejected status", move rport state machine
    back to PLOGI state.
    
    Link: https://lore.kernel.org/r/20200327060208.17104-2-skashyap@marvell.com
    Signed-off-by: Javed Hasan <jhasan@marvell.com>
    Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8427b05a7a1f03f729fdcb6d8afa54226a546e32
Author: James Smart <jsmart2021@gmail.com>
Date:   Sun Mar 22 11:12:59 2020 -0700

    scsi: lpfc: Fix crash in target side cable pulls hitting WAIT_FOR_UNREG
    
    [ Upstream commit 807e7353d8a7105ce884d22b0dbc034993c6679c ]
    
    Kernel is crashing with the following stacktrace:
    
      BUG: unable to handle kernel NULL pointer dereference at
        00000000000005bc
      IP: lpfc_nvme_register_port+0x1a8/0x3a0 [lpfc]
      ...
      Call Trace:
      lpfc_nlp_state_cleanup+0x2b2/0x500 [lpfc]
      lpfc_nlp_set_state+0xd7/0x1a0 [lpfc]
      lpfc_cmpl_prli_prli_issue+0x1f7/0x450 [lpfc]
      lpfc_disc_state_machine+0x7a/0x1e0 [lpfc]
      lpfc_cmpl_els_prli+0x16f/0x1e0 [lpfc]
      lpfc_sli_sp_handle_rspiocb+0x5b2/0x690 [lpfc]
      lpfc_sli_handle_slow_ring_event_s4+0x182/0x230 [lpfc]
      lpfc_do_work+0x87f/0x1570 [lpfc]
      kthread+0x10d/0x130
      ret_from_fork+0x35/0x40
    
    During target side fault injections, it is possible to hit the
    NLP_WAIT_FOR_UNREG case in lpfc_nvme_remoteport_delete. A prior commit
    fixed a rebind and delete race condition, but called lpfc_nlp_put
    unconditionally. This triggered a deletion and the crash.
    
    Fix by movng nlp_put to inside the NLP_WAIT_FOR_UNREG case, where the nlp
    will be being unregistered/removed. Leave the reference if the flag isn't
    set.
    
    Link: https://lore.kernel.org/r/20200322181304.37655-8-jsmart2021@gmail.com
    Fixes: b15bd3e6212e ("scsi: lpfc: Fix nvme remoteport registration race conditions")
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0c5733a96261f0becf02153ede03cfb15f8e03a7
Author: James Smart <jsmart2021@gmail.com>
Date:   Sun Mar 22 11:12:57 2020 -0700

    scsi: lpfc: Fix crash after handling a pci error
    
    [ Upstream commit 4cd70891308dfb875ef31060c4a4aa8872630a2e ]
    
    Injecting EEH on a 32GB card is causing kernel oops
    
    The pci error handler is doing an IO flush and the offline code is also
    doing an IO flush. When the 1st flush is complete the hdwq is destroyed
    (freed), yet the second flush accesses the hdwq and crashes.
    
    Added a check in lpfc_sli4_fush_io_rings to check both the HBA_IOQ_FLUSH
    flag and the hdwq pointer to see if it is already set and not already
    freed.
    
    Link: https://lore.kernel.org/r/20200322181304.37655-6-jsmart2021@gmail.com
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9d1062c4dd14517c5f22912dd56398308290dbfd
Author: James Smart <jsmart2021@gmail.com>
Date:   Sun Mar 22 11:12:53 2020 -0700

    scsi: lpfc: Fix kasan slab-out-of-bounds error in lpfc_unreg_login
    
    [ Upstream commit 38503943c89f0bafd9e3742f63f872301d44cbea ]
    
    The following kasan bug was called out:
    
     BUG: KASAN: slab-out-of-bounds in lpfc_unreg_login+0x7c/0xc0 [lpfc]
     Read of size 2 at addr ffff889fc7c50a22 by task lpfc_worker_3/6676
     ...
     Call Trace:
     dump_stack+0x96/0xe0
     ? lpfc_unreg_login+0x7c/0xc0 [lpfc]
     print_address_description.constprop.6+0x1b/0x220
     ? lpfc_unreg_login+0x7c/0xc0 [lpfc]
     ? lpfc_unreg_login+0x7c/0xc0 [lpfc]
     __kasan_report.cold.9+0x37/0x7c
     ? lpfc_unreg_login+0x7c/0xc0 [lpfc]
     kasan_report+0xe/0x20
     lpfc_unreg_login+0x7c/0xc0 [lpfc]
     lpfc_sli_def_mbox_cmpl+0x334/0x430 [lpfc]
     ...
    
    When processing the completion of a "Reg Rpi" login mailbox command in
    lpfc_sli_def_mbox_cmpl, a call may be made to lpfc_unreg_login. The vpi is
    extracted from the completing mailbox context and passed as an input for
    the next. However, the vpi stored in the mailbox command context is an
    absolute vpi, which for SLI4 represents both base + offset.  When used with
    a non-zero base component, (function id > 0) this results in an
    out-of-range access beyond the allocated phba->vpi_ids array.
    
    Fix by subtracting the function's base value to get an accurate vpi number.
    
    Link: https://lore.kernel.org/r/20200322181304.37655-2-jsmart2021@gmail.com
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 66491dadd125acd4434c0e810ad352701ebebb60
Author: Tero Kristo <t-kristo@ti.com>
Date:   Thu Mar 12 11:58:06 2020 +0200

    watchdog: reset last_hw_keepalive time at start
    
    [ Upstream commit 982bb70517aef2225bad1d802887b733db492cc0 ]
    
    Currently the watchdog core does not initialize the last_hw_keepalive
    time during watchdog startup. This will cause the watchdog to be pinged
    immediately if enough time has passed from the system boot-up time, and
    some types of watchdogs like K3 RTI does not like this.
    
    To avoid the issue, setup the last_hw_keepalive time during watchdog
    startup.
    
    Signed-off-by: Tero Kristo <t-kristo@ti.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20200302200426.6492-3-t-kristo@ti.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7b709f1ba8008696f2c1a32c9ccef0aa84620db2
Author: Jan Kara <jack@suse.cz>
Date:   Thu Jan 23 16:47:20 2020 +0100

    tools/testing/nvdimm: Fix compilation failure without CONFIG_DEV_DAX_PMEM_COMPAT
    
    [ Upstream commit c0e71d602053e4e7637e4bc7d0bc9603ea77a33f ]
    
    When a kernel is configured without CONFIG_DEV_DAX_PMEM_COMPAT, the
    compilation of tools/testing/nvdimm fails with:
    
      Building modules, stage 2.
      MODPOST 11 modules
    ERROR: "dax_pmem_compat_test" [tools/testing/nvdimm/test/nfit_test.ko] undefined!
    
    Fix the problem by calling dax_pmem_compat_test() only if the kernel has
    the required functionality.
    
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20200123154720.12097-1-jack@suse.cz
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 810045068bda0598d3d5f4edf29a92ad7ef704bd
Author: Catalin Marinas <catalin.marinas@arm.com>
Date:   Fri Apr 24 17:38:05 2020 +0100

    arm64: Silence clang warning on mismatched value/register sizes
    
    [ Upstream commit: 27a22fbdeedd6c5c451cf5f830d51782bf50c3a2 ]
    
    Clang reports a warning on the __tlbi(aside1is, 0) macro expansion since
    the value size does not match the register size specified in the inline
    asm. Construct the ASID value using the __TLBI_VADDR() macro.
    
    Fixes: 222fc0c8503d ("arm64: compat: Workaround Neoverse-N1 #1542419 for compat user-space")
    Reported-by: Nathan Chancellor <natechancellor@gmail.com>
    Cc: James Morse <james.morse@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aa50d567ec4ae77ef17e8a523b8839a5ab671bec
Author: James Morse <james.morse@arm.com>
Date:   Fri Apr 24 17:38:04 2020 +0100

    arm64: compat: Workaround Neoverse-N1 #1542419 for compat user-space
    
    [ Upstream commit 222fc0c8503d98cec3cb2bac2780cdd21a6e31c0 ]
    
    Compat user-space is unable to perform ICIMVAU instructions from
    user-space. Instead it uses a compat-syscall. Add the workaround for
    Neoverse-N1 #1542419 to this code path.
    
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6de0c621191a42c3574d261a06a35841fc9b777a
Author: James Morse <james.morse@arm.com>
Date:   Fri Apr 24 17:38:03 2020 +0100

    arm64: Fake the IminLine size on systems affected by Neoverse-N1 #1542419
    
    [ Upstream commit ee9d90be9ddace01b7fb126567e4b539fbe1f82f ]
    
    Systems affected by Neoverse-N1 #1542419 support DIC so do not need to
    perform icache maintenance once new instructions are cleaned to the PoU.
    For the errata workaround, the kernel hides DIC from user-space, so that
    the unnecessary cache maintenance can be trapped by firmware.
    
    To reduce the number of traps, produce a fake IminLine value based on
    PAGE_SIZE.
    
    Signed-off-by: James Morse <james.morse@arm.com>
    Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f2791551cedb5c295528b00c74d0a02d62c4bd92
Author: James Morse <james.morse@arm.com>
Date:   Fri Apr 24 17:38:02 2020 +0100

    arm64: errata: Hide CTR_EL0.DIC on systems affected by Neoverse-N1 #1542419
    
    [ Upstream commit 05460849c3b51180d5ada3373d0449aea19075e4 ]
    
    Cores affected by Neoverse-N1 #1542419 could execute a stale instruction
    when a branch is updated to point to freshly generated instructions.
    
    To workaround this issue we need user-space to issue unnecessary
    icache maintenance that we can trap. Start by hiding CTR_EL0.DIC.
    
    Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4b823bf7c2cad42d517d736a44b36b5bd97e0430
Author: William Dauchy <w.dauchy@criteo.com>
Date:   Fri Mar 27 19:56:39 2020 +0100

    net, ip_tunnel: fix interface lookup with no key
    
    commit 25629fdaff2ff509dd0b3f5ff93d70a75e79e0a1 upstream.
    
    when creating a new ipip interface with no local/remote configuration,
    the lookup is done with TUNNEL_NO_KEY flag, making it impossible to
    match the new interface (only possible match being fallback or metada
    case interface); e.g: `ip link add tunl1 type ipip dev eth0`
    
    To fix this case, adding a flag check before the key comparison so we
    permit to match an interface with no local/remote config; it also avoids
    breaking possible userland tools relying on TUNNEL_NO_KEY flag and
    uninitialised key.
    
    context being on my side, I'm creating an extra ipip interface attached
    to the physical one, and moving it to a dedicated namespace.
    
    Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
    Signed-off-by: William Dauchy <w.dauchy@criteo.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5811f24abd27a8a0791c6909c6ff803659060c84
Author: Randall Huang <huangrandall@google.com>
Date:   Fri Oct 18 14:56:22 2019 +0800

    f2fs: fix to avoid memory leakage in f2fs_listxattr
    
    commit 688078e7f36c293dae25b338ddc9e0a2790f6e06 upstream.
    
    In f2fs_listxattr, there is no boundary check before
    memcpy e_name to buffer.
    If the e_name_len is corrupted,
    unexpected memory contents may be returned to the buffer.
    
    Signed-off-by: Randall Huang <huangrandall@google.com>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79ad1490415267c496899f75aae5c9d91999dc89
Author: Dmitry Monakhov <dmonakhov@gmail.com>
Date:   Wed Nov 6 12:25:02 2019 +0000

    ext4: fix extent_status fragmentation for plain files
    
    [ Upstream commit 4068664e3cd2312610ceac05b74c4cf1853b8325 ]
    
    Extents are cached in read_extent_tree_block(); as a result, extents
    are not cached for inodes with depth == 0 when we try to find the
    extent using ext4_find_extent().  The result of the lookup is cached
    in ext4_map_blocks() but is only a subset of the extent on disk.  As a
    result, the contents of extents status cache can get very badly
    fragmented for certain workloads, such as a random 4k read workload.
    
    File size of /mnt/test is 33554432 (8192 blocks of 4096 bytes)
     ext:     logical_offset:        physical_offset: length:   expected: flags:
       0:        0..    8191:      40960..     49151:   8192:             last,eof
    
    $ perf record -e 'ext4:ext4_es_*' /root/bin/fio --name=t --direct=0 --rw=randread --bs=4k --filesize=32M --size=32M --filename=/mnt/test
    $ perf script | grep ext4_es_insert_extent | head -n 10
                 fio   131 [000]    13.975421:           ext4:ext4_es_insert_extent: dev 253,0 ino 12 es [494/1) mapped 41454 status W
                 fio   131 [000]    13.975939:           ext4:ext4_es_insert_extent: dev 253,0 ino 12 es [6064/1) mapped 47024 status W
                 fio   131 [000]    13.976467:           ext4:ext4_es_insert_extent: dev 253,0 ino 12 es [6907/1) mapped 47867 status W
                 fio   131 [000]    13.976937:           ext4:ext4_es_insert_extent: dev 253,0 ino 12 es [3850/1) mapped 44810 status W
                 fio   131 [000]    13.977440:           ext4:ext4_es_insert_extent: dev 253,0 ino 12 es [3292/1) mapped 44252 status W
                 fio   131 [000]    13.977931:           ext4:ext4_es_insert_extent: dev 253,0 ino 12 es [6882/1) mapped 47842 status W
                 fio   131 [000]    13.978376:           ext4:ext4_es_insert_extent: dev 253,0 ino 12 es [3117/1) mapped 44077 status W
                 fio   131 [000]    13.978957:           ext4:ext4_es_insert_extent: dev 253,0 ino 12 es [2896/1) mapped 43856 status W
                 fio   131 [000]    13.979474:           ext4:ext4_es_insert_extent: dev 253,0 ino 12 es [7479/1) mapped 48439 status W
    
    Fix this by caching the extents for inodes with depth == 0 in
    ext4_find_extent().
    
    [ Renamed ext4_es_cache_extents() to ext4_cache_extents() since this
      newly added function is not in extents_cache.c, and to avoid
      potential visual confusion with ext4_es_cache_extent().  -TYT ]
    
    Signed-off-by: Dmitry Monakhov <dmonakhov@gmail.com>
    Link: https://lore.kernel.org/r/20191106122502.19986-1-dmonakhov@gmail.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>