commit 575a0d95491df8cb6d0f566562c8edda4fcc5bb1
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Dec 8 08:45:07 2021 +0100

    Linux 4.9.292
    
    Link: https://lore.kernel.org/r/20211206145549.155163074@linuxfoundation.org
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 011f6c92b5bf6e1fbfdedc8b5232f64c1c493206
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Nov 8 09:54:31 2021 +0100

    serial: core: fix transmit-buffer reset and memleak
    
    commit 00de977f9e0aa9760d9a79d1e41ff780f74e3424 upstream.
    
    Commit 761ed4a94582 ("tty: serial_core: convert uart_close to use
    tty_port_close") converted serial core to use tty_port_close() but
    failed to notice that the transmit buffer still needs to be freed on
    final close.
    
    Not freeing the transmit buffer means that the buffer is no longer
    cleared on next open so that any ioctl() waiting for the buffer to drain
    might wait indefinitely (e.g. on termios changes) or that stale data can
    end up being transmitted in case tx is restarted.
    
    Furthermore, the buffer of any port that has been opened would leak on
    driver unbind.
    
    Note that the port lock is held when clearing the buffer pointer due to
    the ldisc race worked around by commit a5ba1d95e46e ("uart: fix race
    between uart_put_char() and uart_shutdown()").
    
    Also note that the tty-port shutdown() callback is not called for
    console ports so it is not strictly necessary to free the buffer page
    after releasing the lock (cf. d72402145ace ("tty/serial: do not free
    trasnmit buffer page under port lock")).
    
    Link: https://lore.kernel.org/r/319321886d97c456203d5c6a576a5480d07c3478.1635781688.git.baruch@tkos.co.il
    Fixes: 761ed4a94582 ("tty: serial_core: convert uart_close to use tty_port_close")
    Cc: stable@vger.kernel.org      # 4.9
    Cc: Rob Herring <robh@kernel.org>
    Reported-by: Baruch Siach <baruch@tkos.co.il>
    Tested-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20211108085431.12637-1-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65af6fe35caeb84c753d1670c28a3f0f1973ee28
Author: Pierre Gondois <Pierre.Gondois@arm.com>
Date:   Tue Nov 9 17:22:48 2021 +0000

    serial: pl011: Add ACPI SBSA UART match id
    
    commit ac442a077acf9a6bf1db4320ec0c3f303be092b3 upstream.
    
    The document 'ACPI for Arm Components 1.0' defines the following
    _HID mappings:
    -'Prime cell UART (PL011)': ARMH0011
    -'SBSA UART': ARMHB000
    
    Use the sbsa-uart driver when a device is described with
    the 'ARMHB000' _HID.
    
    Note:
    PL011 devices currently use the sbsa-uart driver instead of the
    uart-pl011 driver. Indeed, PL011 devices are not bound to a clock
    in ACPI. It is not possible to change their baudrate.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com>
    Link: https://lore.kernel.org/r/20211109172248.19061-1-Pierre.Gondois@arm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4413b78ae2db79ff405967b76a411cfe9b9a26e0
Author: Sven Eckelmann <sven@narfation.org>
Date:   Sat Nov 13 13:10:50 2021 +0100

    tty: serial: msm_serial: Deactivate RX DMA for polling support
    
    commit 7492ffc90fa126afb67d4392d56cb4134780194a upstream.
    
    The CONSOLE_POLLING mode is used for tools like k(g)db. In this kind of
    setup, it is often sharing a serial device with the normal system console.
    This is usually no problem because the polling helpers can consume input
    values directly (when in kgdb context) and the normal Linux handlers can
    only consume new input values after kgdb switched back.
    
    This is not true anymore when RX DMA is enabled for UARTDM controllers.
    Single input values can no longer be received correctly. Instead following
    seems to happen:
    
    * on 1. input, some old input is read (continuously)
    * on 2. input, two old inputs are read (continuously)
    * on 3. input, three old input values are read (continuously)
    * on 4. input, 4 previous inputs are received
    
    This repeats then for each group of 4 input values.
    
    This behavior changes slightly depending on what state the controller was
    when the first input was received. But this makes working with kgdb
    basically impossible because control messages are always corrupted when
    kgdboc tries to parse them.
    
    RX DMA should therefore be off when CONSOLE_POLLING is enabled to avoid
    these kind of problems. No such problem was noticed for TX DMA.
    
    Fixes: 99693945013a ("tty: serial: msm: Add RX DMA support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Link: https://lore.kernel.org/r/20211113121050.7266-1-sven@narfation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e3de861272cccd8ab75f718ab8432e0ff7899a36
Author: Maciej W. Rozycki <macro@orcam.me.uk>
Date:   Tue Oct 26 00:26:22 2021 +0200

    vgacon: Propagate console boot parameters before calling `vc_resize'
    
    commit 3dfac26e2ef29ff2abc2a75aa4cd48fce25a2c4b upstream.
    
    Fix a division by zero in `vgacon_resize' with a backtrace like:
    
    vgacon_resize
    vc_do_resize
    vgacon_init
    do_bind_con_driver
    do_unbind_con_driver
    fbcon_fb_unbind
    do_unregister_framebuffer
    do_register_framebuffer
    register_framebuffer
    __drm_fb_helper_initial_config_and_unlock
    drm_helper_hpd_irq_event
    dw_hdmi_irq
    irq_thread
    kthread
    
    caused by `c->vc_cell_height' not having been initialized.  This has
    only started to trigger with commit 860dafa90259 ("vt: Fix character
    height handling with VT_RESIZEX"), however the ultimate offender is
    commit 50ec42edd978 ("[PATCH] Detaching fbcon: fix vgacon to allow
    retaking of the console").
    
    Said commit has added a call to `vc_resize' whenever `vgacon_init' is
    called with the `init' argument set to 0, which did not happen before.
    And the call is made before a key vgacon boot parameter retrieved in
    `vgacon_startup' has been propagated in `vgacon_init' for `vc_resize' to
    use to the console structure being worked on.  Previously the parameter
    was `c->vc_font.height' and now it is `c->vc_cell_height'.
    
    In this particular scenario the registration of fbcon has failed and vt
    resorts to vgacon.  Now fbcon does have initialized `c->vc_font.height'
    somehow, unlike `c->vc_cell_height', which is why this code did not
    crash before, but either way the boot parameters should have been copied
    to the console structure ahead of the call to `vc_resize' rather than
    afterwards, so that first the call has a chance to use them and second
    they do not change the console structure to something possibly different
    from what was used by `vc_resize'.
    
    Move the propagation of the vgacon boot parameters ahead of the call to
    `vc_resize' then.  Adjust the comment accordingly.
    
    Fixes: 50ec42edd978 ("[PATCH] Detaching fbcon: fix vgacon to allow retaking of the console")
    Cc: stable@vger.kernel.org # v2.6.18+
    Reported-by: Wim Osterholt <wim@djo.tudelft.nl>
    Reported-by: Pavel V. Panteleev <panteleev_p@mcst.ru>
    Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
    Link: https://lore.kernel.org/r/alpine.DEB.2.21.2110252317110.58149@angie.orcam.me.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cfc102a972d0cc25ba7cbf6487bed4dc7f659817
Author: Helge Deller <deller@gmx.de>
Date:   Sat Dec 4 21:14:40 2021 +0100

    parisc: Fix "make install" on newer debian releases
    
    commit 0f9fee4cdebfbe695c297e5b603a275e2557c1cc upstream.
    
    On newer debian releases the debian-provided "installkernel" script is
    installed in /usr/sbin. Fix the kernel install.sh script to look for the
    script in this directory as well.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: <stable@vger.kernel.org> # v3.13+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38276325fa0a04b2c57a5f70d5ceaf768a72598b
Author: William Kucharski <william.kucharski@oracle.com>
Date:   Wed Dec 1 07:45:22 2021 -0700

    net/rds: correct socket tunable error in rds_tcp_tune()
    
    commit 19f36edf14bcdb783aef3af8217df96f76a8ce34 upstream.
    
    Correct an error where setting /proc/sys/net/rds/tcp/rds_tcp_rcvbuf would
    instead modify the socket's sk_sndbuf and would leave sk_rcvbuf untouched.
    
    Fixes: c6a58ffed536 ("RDS: TCP: Add sysctl tunables for sndbuf/rcvbuf on rds-tcp socket")
    Signed-off-by: William Kucharski <william.kucharski@oracle.com>
    Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d604c141be69a11425a8c142b2669cae9882f32
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Nov 29 10:39:29 2021 -0500

    siphash: use _unaligned version by default
    
    commit f7e5b9bfa6c8820407b64eabc1f29c9a87e8993d upstream.
    
    On ARM v6 and later, we define CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
    because the ordinary load/store instructions (ldr, ldrh, ldrb) can
    tolerate any misalignment of the memory address. However, load/store
    double and load/store multiple instructions (ldrd, ldm) may still only
    be used on memory addresses that are 32-bit aligned, and so we have to
    use the CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS macro with care, or we
    may end up with a severe performance hit due to alignment traps that
    require fixups by the kernel. Testing shows that this currently happens
    with clang-13 but not gcc-11. In theory, any compiler version can
    produce this bug or other problems, as we are dealing with undefined
    behavior in C99 even on architectures that support this in hardware,
    see also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100363.
    
    Fortunately, the get_unaligned() accessors do the right thing: when
    building for ARMv6 or later, the compiler will emit unaligned accesses
    using the ordinary load/store instructions (but avoid the ones that
    require 32-bit alignment). When building for older ARM, those accessors
    will emit the appropriate sequence of ldrb/mov/orr instructions. And on
    architectures that can truly tolerate any kind of misalignment, the
    get_unaligned() accessors resolve to the leXX_to_cpup accessors that
    operate on aligned addresses.
    
    Since the compiler will in fact emit ldrd or ldm instructions when
    building this code for ARM v6 or later, the solution is to use the
    unaligned accessors unconditionally on architectures where this is
    known to be fast. The _aligned version of the hash function is
    however still needed to get the best performance on architectures
    that cannot do any unaligned access in hardware.
    
    This new version avoids the undefined behavior and should produce
    the fastest hash on all architectures we support.
    
    Link: https://lore.kernel.org/linux-arm-kernel/20181008211554.5355-4-ard.biesheuvel@linaro.org/
    Link: https://lore.kernel.org/linux-crypto/CAK8P3a2KfmmGDbVHULWevB0hv71P2oi2ZCHEAqT=8dQfa0=cqQ@mail.gmail.com/
    Reported-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Fixes: 2c956a60778c ("siphash: add cryptographically secure PRF")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Acked-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b4f217d6fcc00c3fdc0921a7691f30be7490b073
Author: Zhou Qingyang <zhou1615@umn.edu>
Date:   Tue Nov 30 19:08:48 2021 +0800

    net: qlogic: qlcnic: Fix a NULL pointer dereference in qlcnic_83xx_add_rings()
    
    commit e2dabc4f7e7b60299c20a36d6a7b24ed9bf8e572 upstream.
    
    In qlcnic_83xx_add_rings(), the indirect function of
    ahw->hw_ops->alloc_mbx_args will be called to allocate memory for
    cmd.req.arg, and there is a dereference of it in qlcnic_83xx_add_rings(),
    which could lead to a NULL pointer dereference on failure of the
    indirect function like qlcnic_83xx_alloc_mbx_args().
    
    Fix this bug by adding a check of alloc_mbx_args(), this patch
    imitates the logic of mbx_cmd()'s failure handling.
    
    This bug was found by a static analyzer. The analysis employs
    differential checking to identify inconsistent security operations
    (e.g., checks or kfrees) between two code paths and confirms that the
    inconsistent operations are not recovered in the current function or
    the callers, so they constitute bugs.
    
    Note that, as a bug found by static analysis, it can be a false
    positive or hard to trigger. Multiple researchers have cross-reviewed
    the bug.
    
    Builds with CONFIG_QLCNIC=m show no new warnings, and our
    static analyzer no longer warns about this code.
    
    Fixes: 7f9664525f9c ("qlcnic: 83xx memory map and HW access routine")
    Signed-off-by: Zhou Qingyang <zhou1615@umn.edu>
    Link: https://lore.kernel.org/r/20211130110848.109026-1-zhou1615@umn.edu
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bced91c7b2e8f723eacb6da1f3d8c9ba14b3ff30
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon Nov 29 22:39:47 2021 -0800

    natsemi: xtensa: fix section mismatch warnings
    
    commit b0f38e15979fa8851e88e8aa371367f264e7b6e9 upstream.
    
    Fix section mismatch warnings in xtsonic. The first one appears to be
    bogus and after fixing the second one, the first one is gone.
    
    WARNING: modpost: vmlinux.o(.text+0x529adc): Section mismatch in reference from the function sonic_get_stats() to the function .init.text:set_reset_devices()
    The function sonic_get_stats() references
    the function __init set_reset_devices().
    This is often because sonic_get_stats lacks a __init
    annotation or the annotation of set_reset_devices is wrong.
    
    WARNING: modpost: vmlinux.o(.text+0x529b3b): Section mismatch in reference from the function xtsonic_probe() to the function .init.text:sonic_probe1()
    The function xtsonic_probe() references
    the function __init sonic_probe1().
    This is often because xtsonic_probe lacks a __init
    annotation or the annotation of sonic_probe1 is wrong.
    
    Fixes: 74f2a5f0ef64 ("xtensa: Add support for the Sonic Ethernet device for the XT2000 board.")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Cc: Finn Thain <fthain@telegraphics.com.au>
    Cc: Chris Zankel <chris@zankel.net>
    Cc: linux-xtensa@linux-xtensa.org
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Acked-by: Max Filippov <jcmvbkbc@gmail.com>
    Link: https://lore.kernel.org/r/20211130063947.7529-1-rdunlap@infradead.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a043f5a600052dc93bc3d7a6a2c1592b6ee77482
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Dec 1 10:06:14 2021 -0800

    fget: check that the fd still exists after getting a ref to it
    
    commit 054aa8d439b9185d4f5eb9a90282d1ce74772969 upstream.
    
    Jann Horn points out that there is another possible race wrt Unix domain
    socket garbage collection, somewhat reminiscent of the one fixed in
    commit cbcf01128d0a ("af_unix: fix garbage collect vs MSG_PEEK").
    
    See the extended comment about the garbage collection requirements added
    to unix_peek_fds() by that commit for details.
    
    The race comes from how we can locklessly look up a file descriptor just
    as it is in the process of being closed, and with the right artificial
    timing (Jann added a few strategic 'mdelay(500)' calls to do that), the
    Unix domain socket garbage collector could see the reference count
    decrement of the close() happen before fget() took its reference to the
    file and the file was attached onto a new file descriptor.
    
    This is all (intentionally) correct on the 'struct file *' side, with
    RCU lookups and lockless reference counting very much part of the
    design.  Getting that reference count out of order isn't a problem per
    se.
    
    But the garbage collector can get confused by seeing this situation of
    having seen a file not having any remaining external references and then
    seeing it being attached to an fd.
    
    In commit cbcf01128d0a ("af_unix: fix garbage collect vs MSG_PEEK") the
    fix was to serialize the file descriptor install with the garbage
    collector by taking and releasing the unix_gc_lock.
    
    That's not really an option here, but since this all happens when we are
    in the process of looking up a file descriptor, we can instead simply
    just re-check that the file hasn't been closed in the meantime, and just
    re-do the lookup if we raced with a concurrent close() of the same file
    descriptor.
    
    Reported-and-tested-by: Jann Horn <jannh@google.com>
    Acked-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0917c0b01f27bf4101c5716884861e7bd94d26c8
Author: Jens Axboe <axboe@kernel.dk>
Date:   Wed Nov 21 10:32:39 2018 -0700

    fs: add fget_many() and fput_many()
    
    commit 091141a42e15fe47ada737f3996b317072afcefb upstream.
    
    Some uses cases repeatedly get and put references to the same file, but
    the only exposed interface is doing these one at the time. As each of
    these entail an atomic inc or dec on a shared structure, that cost can
    add up.
    
    Add fget_many(), which works just like fget(), except it takes an
    argument for how many references to get on the file. Ditto fput_many(),
    which can drop an arbitrary number of references to a file.
    
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bcd393314a5f7fa01a859db66a02f85a85845c60
Author: Baokun Li <libaokun1@huawei.com>
Date:   Fri Nov 26 10:03:07 2021 +0800

    sata_fsl: fix warning in remove_proc_entry when rmmod sata_fsl
    
    commit 6f48394cf1f3e8486591ad98c11cdadb8f1ef2ad upstream.
    
    Trying to remove the fsl-sata module in the PPC64 GNU/Linux
    leads to the following warning:
     ------------[ cut here ]------------
     remove_proc_entry: removing non-empty directory 'irq/69',
       leaking at least 'fsl-sata[ff0221000.sata]'
     WARNING: CPU: 3 PID: 1048 at fs/proc/generic.c:722
       .remove_proc_entry+0x20c/0x220
     IRQMASK: 0
     NIP [c00000000033826c] .remove_proc_entry+0x20c/0x220
     LR [c000000000338268] .remove_proc_entry+0x208/0x220
     Call Trace:
      .remove_proc_entry+0x208/0x220 (unreliable)
      .unregister_irq_proc+0x104/0x140
      .free_desc+0x44/0xb0
      .irq_free_descs+0x9c/0xf0
      .irq_dispose_mapping+0x64/0xa0
      .sata_fsl_remove+0x58/0xa0 [sata_fsl]
      .platform_drv_remove+0x40/0x90
      .device_release_driver_internal+0x160/0x2c0
      .driver_detach+0x64/0xd0
      .bus_remove_driver+0x70/0xf0
      .driver_unregister+0x38/0x80
      .platform_driver_unregister+0x14/0x30
      .fsl_sata_driver_exit+0x18/0xa20 [sata_fsl]
     ---[ end trace 0ea876d4076908f5 ]---
    
    The driver creates the mapping by calling irq_of_parse_and_map(),
    so it also has to dispose the mapping. But the easy way out is to
    simply use platform_get_irq() instead of irq_of_parse_map(). Also
    we should adapt return value checking and propagate error values.
    
    In this case the mapping is not managed by the device but by
    the of core, so the device has not to dispose the mapping.
    
    Fixes: faf0b2e5afe7 ("drivers/ata: add support to Freescale 3.0Gbps SATA Controller")
    Cc: stable@vger.kernel.org
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Sergei Shtylyov <sergei.shtylyov@gmail.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 91ba94d3f7afca195b224f77a72044fbde1389ce
Author: Baokun Li <libaokun1@huawei.com>
Date:   Fri Nov 26 10:03:06 2021 +0800

    sata_fsl: fix UAF in sata_fsl_port_stop when rmmod sata_fsl
    
    commit 6c8ad7e8cf29eb55836e7a0215f967746ab2b504 upstream.
    
    When the `rmmod sata_fsl.ko` command is executed in the PPC64 GNU/Linux,
    a bug is reported:
     ==================================================================
     BUG: Unable to handle kernel data access on read at 0x80000800805b502c
     Oops: Kernel access of bad area, sig: 11 [#1]
     NIP [c0000000000388a4] .ioread32+0x4/0x20
     LR [80000000000c6034] .sata_fsl_port_stop+0x44/0xe0 [sata_fsl]
     Call Trace:
      .free_irq+0x1c/0x4e0 (unreliable)
      .ata_host_stop+0x74/0xd0 [libata]
      .release_nodes+0x330/0x3f0
      .device_release_driver_internal+0x178/0x2c0
      .driver_detach+0x64/0xd0
      .bus_remove_driver+0x70/0xf0
      .driver_unregister+0x38/0x80
      .platform_driver_unregister+0x14/0x30
      .fsl_sata_driver_exit+0x18/0xa20 [sata_fsl]
      .__se_sys_delete_module+0x1ec/0x2d0
      .system_call_exception+0xfc/0x1f0
      system_call_common+0xf8/0x200
     ==================================================================
    
    The triggering of the BUG is shown in the following stack:
    
    driver_detach
      device_release_driver_internal
        __device_release_driver
          drv->remove(dev) --> platform_drv_remove/platform_remove
            drv->remove(dev) --> sata_fsl_remove
              iounmap(host_priv->hcr_base);                 <---- unmap
              kfree(host_priv);                             <---- free
          devres_release_all
            release_nodes
              dr->node.release(dev, dr->data) --> ata_host_stop
                ap->ops->port_stop(ap) --> sata_fsl_port_stop
                    ioread32(hcr_base + HCONTROL)           <---- UAF
                host->ops->host_stop(host)
    
    The iounmap(host_priv->hcr_base) and kfree(host_priv) functions should
    not be executed in drv->remove. These functions should be executed in
    host_stop after port_stop. Therefore, we move these functions to the
    new function sata_fsl_host_stop and bind the new function to host_stop.
    
    Fixes: faf0b2e5afe7 ("drivers/ata: add support to Freescale 3.0Gbps SATA Controller")
    Cc: stable@vger.kernel.org
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Sergei Shtylyov <sergei.shtylyov@gmail.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2117fbc35ac8406902b93dcd5ee7fd601a08885c
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Wed Dec 1 23:45:50 2021 +0900

    kprobes: Limit max data_size of the kretprobe instances
    
    commit 6bbfa44116689469267f1a6e3d233b52114139d2 upstream.
    
    The 'kprobe::data_size' is unsigned, thus it can not be negative.  But if
    user sets it enough big number (e.g. (size_t)-8), the result of 'data_size
    + sizeof(struct kretprobe_instance)' becomes smaller than sizeof(struct
    kretprobe_instance) or zero. In result, the kretprobe_instance are
    allocated without enough memory, and kretprobe accesses outside of
    allocated memory.
    
    To avoid this issue, introduce a max limitation of the
    kretprobe::data_size. 4KB per instance should be OK.
    
    Link: https://lkml.kernel.org/r/163836995040.432120.10322772773821182925.stgit@devnote2
    
    Cc: stable@vger.kernel.org
    Fixes: f47cd9b553aa ("kprobes: kretprobe user entry-handler")
    Reported-by: zhangyue <zhangyue1@kylinos.cn>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67549e610cf7ab169bb77313a79cefa8d0bf51a1
Author: Stephen Suryaputra <ssuryaextr@gmail.com>
Date:   Tue Nov 30 11:26:37 2021 -0500

    vrf: Reset IPCB/IP6CB when processing outbound pkts in vrf dev xmit
    
    commit ee201011c1e1563c114a55c86eb164b236f18e84 upstream.
    
    IPCB/IP6CB need to be initialized when processing outbound v4 or v6 pkts
    in the codepath of vrf device xmit function so that leftover garbage
    doesn't cause futher code that uses the CB to incorrectly process the
    pkt.
    
    One occasion of the issue might occur when MPLS route uses the vrf
    device as the outgoing device such as when the route is added using "ip
    -f mpls route add <label> dev <vrf>" command.
    
    The problems seems to exist since day one. Hence I put the day one
    commits on the Fixes tags.
    
    Fixes: 193125dbd8eb ("net: Introduce VRF device driver")
    Fixes: 35402e313663 ("net: Add IPv6 support to VRF device")
    Cc: stable@vger.kernel.org
    Signed-off-by: Stephen Suryaputra <ssuryaextr@gmail.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20211130162637.3249-1-ssuryaextr@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 890fefa2d24d4c653b1b425127488a7f8c14ff5c
Author: Teng Qi <starmiku1207184332@gmail.com>
Date:   Thu Nov 18 15:01:18 2021 +0800

    net: ethernet: dec: tulip: de4x5: fix possible array overflows in type3_infoblock()
    
    [ Upstream commit 0fa68da72c3be09e06dd833258ee89c33374195f ]
    
    The definition of macro MOTO_SROM_BUG is:
      #define MOTO_SROM_BUG    (lp->active == 8 && (get_unaligned_le32(
      dev->dev_addr) & 0x00ffffff) == 0x3e0008)
    
    and the if statement
      if (MOTO_SROM_BUG) lp->active = 0;
    
    using this macro indicates lp->active could be 8. If lp->active is 8 and
    the second comparison of this macro is false. lp->active will remain 8 in:
      lp->phy[lp->active].gep = (*p ? p : NULL); p += (2 * (*p) + 1);
      lp->phy[lp->active].rst = (*p ? p : NULL); p += (2 * (*p) + 1);
      lp->phy[lp->active].mc  = get_unaligned_le16(p); p += 2;
      lp->phy[lp->active].ana = get_unaligned_le16(p); p += 2;
      lp->phy[lp->active].fdx = get_unaligned_le16(p); p += 2;
      lp->phy[lp->active].ttm = get_unaligned_le16(p); p += 2;
      lp->phy[lp->active].mci = *p;
    
    However, the length of array lp->phy is 8, so array overflows can occur.
    To fix these possible array overflows, we first check lp->active and then
    return -EINVAL if it is greater or equal to ARRAY_SIZE(lp->phy) (i.e. 8).
    
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Teng Qi <starmiku1207184332@gmail.com>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 142ead3dc70411bd5977e8c47a6d8bf22287b3f8
Author: zhangyue <zhangyue1@kylinos.cn>
Date:   Thu Nov 18 13:46:32 2021 +0800

    net: tulip: de4x5: fix the problem that the array 'lp->phy[8]' may be out of bound
    
    [ Upstream commit 61217be886b5f7402843677e4be7e7e83de9cb41 ]
    
    In line 5001, if all id in the array 'lp->phy[8]' is not 0, when the
    'for' end, the 'k' is 8.
    
    At this time, the array 'lp->phy[8]' may be out of bound.
    
    Signed-off-by: zhangyue <zhangyue1@kylinos.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 948968f8747650447c8f21c9fdba0e1973be040b
Author: Teng Qi <starmiku1207184332@gmail.com>
Date:   Wed Nov 17 11:44:53 2021 +0800

    ethernet: hisilicon: hns: hns_dsaf_misc: fix a possible array overflow in hns_dsaf_ge_srst_by_port()
    
    [ Upstream commit a66998e0fbf213d47d02813b9679426129d0d114 ]
    
    The if statement:
      if (port >= DSAF_GE_NUM)
            return;
    
    limits the value of port less than DSAF_GE_NUM (i.e., 8).
    However, if the value of port is 6 or 7, an array overflow could occur:
      port_rst_off = dsaf_dev->mac_cb[port]->port_rst_off;
    
    because the length of dsaf_dev->mac_cb is DSAF_MAX_PORT_NUM (i.e., 6).
    
    To fix this possible array overflow, we first check port and if it is
    greater than or equal to DSAF_MAX_PORT_NUM, the function returns.
    
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Teng Qi <starmiku1207184332@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ba3bebbd22dc74ff7894c28cd5a876e3d2278566
Author: Mike Christie <michael.christie@oracle.com>
Date:   Fri Nov 5 17:10:47 2021 -0500

    scsi: iscsi: Unblock session then wake up error handler
    
    [ Upstream commit a0c2f8b6709a9a4af175497ca65f93804f57b248 ]
    
    We can race where iscsi_session_recovery_timedout() has woken up the error
    handler thread and it's now setting the devices to offline, and
    session_recovery_timedout()'s call to scsi_target_unblock() is also trying
    to set the device's state to transport-offline. We can then get a mix of
    states.
    
    For the case where we can't relogin we want the devices to be in
    transport-offline so when we have repaired the connection
    __iscsi_unblock_session() can set the state back to running.
    
    Set the device state then call into libiscsi to wake up the error handler.
    
    Link: https://lore.kernel.org/r/20211105221048.6541-2-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 551105df6fd5c3a5cb37a863a1b19066cbdaafad
Author: Manaf Meethalavalappu Pallikunhi <manafm@codeaurora.org>
Date:   Wed Nov 3 01:30:40 2021 +0530

    thermal: core: Reset previous low and high trip during thermal zone init
    
    [ Upstream commit 99b63316c39988039965693f5f43d8b4ccb1c86c ]
    
    During the suspend is in process, thermal_zone_device_update bails out
    thermal zone re-evaluation for any sensor trip violation without
    setting next valid trip to that sensor. It assumes during resume
    it will re-evaluate same thermal zone and update trip. But when it is
    in suspend temperature goes down and on resume path while updating
    thermal zone if temperature is less than previously violated trip,
    thermal zone set trip function evaluates the same previous high and
    previous low trip as new high and low trip. Since there is no change
    in high/low trip, it bails out from thermal zone set trip API without
    setting any trip. It leads to a case where sensor high trip or low
    trip is disabled forever even though thermal zone has a valid high
    or low trip.
    
    During thermal zone device init, reset thermal zone previous high
    and low trip. It resolves above mentioned scenario.
    
    Signed-off-by: Manaf Meethalavalappu Pallikunhi <manafm@codeaurora.org>
    Reviewed-by: Thara Gopinath <thara.gopinath@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 678917336c6e00b9fd20c48a758fbc3f948e5235
Author: Vasily Gorbik <gor@linux.ibm.com>
Date:   Thu Oct 14 13:38:17 2021 +0200

    s390/setup: avoid using memblock_enforce_memory_limit
    
    [ Upstream commit 5dbc4cb4667457b0c53bcd7bff11500b3c362975 ]
    
    There is a difference in how architectures treat "mem=" option. For some
    that is an amount of online memory, for s390 and x86 this is the limiting
    max address. Some memblock api like memblock_enforce_memory_limit()
    take limit argument and explicitly treat it as the size of online memory,
    and use __find_max_addr to convert it to an actual max address. Current
    s390 usage:
    
    memblock_enforce_memory_limit(memblock_end_of_DRAM());
    
    yields different results depending on presence of memory holes (offline
    memory blocks in between online memory). If there are no memory holes
    limit == max_addr in memblock_enforce_memory_limit() and it does trim
    online memory and reserved memory regions. With memory holes present it
    actually does nothing.
    
    Since we already use memblock_remove() explicitly to trim online memory
    regions to potential limit (think mem=, kdump, addressing limits, etc.)
    drop the usage of memblock_enforce_memory_limit() altogether. Trimming
    reserved regions should not be required, since we now use
    memblock_set_current_limit() to limit allocations and any explicit memory
    reservations above the limit is an actual problem we should not hide.
    
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fb770d48ab8837276872e6cec571413861ee5077
Author: Slark Xiao <slark_xiao@163.com>
Date:   Mon Nov 8 14:06:48 2021 +0800

    platform/x86: thinkpad_acpi: Fix WWAN device disabled issue after S3 deep
    
    [ Upstream commit 39f53292181081d35174a581a98441de5da22bc9 ]
    
    When WWAN device wake from S3 deep, under thinkpad platform,
    WWAN would be disabled. This disable status could be checked
    by command 'nmcli r wwan' or 'rfkill list'.
    
    Issue analysis as below:
      When host resume from S3 deep, thinkpad_acpi driver would
    call hotkey_resume() function. Finnaly, it will use
    wan_get_status to check the current status of WWAN device.
    During this resume progress, wan_get_status would always
    return off even WWAN boot up completely.
      In patch V2, Hans said 'sw_state should be unchanged
    after a suspend/resume. It's better to drop the
    tpacpi_rfk_update_swstate call all together from the
    resume path'.
      And it's confimed by Lenovo that GWAN is no longer
     available from WHL generation because the design does not
     match with current pin control.
    
    Signed-off-by: Slark Xiao <slark_xiao@163.com>
    Link: https://lore.kernel.org/r/20211108060648.8212-1-slark_xiao@163.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 10ade6a196b701bc0922c435bae8df68304a6683
Author: liuguoqiang <liuguoqiang@uniontech.com>
Date:   Mon Nov 15 16:14:48 2021 +0800

    net: return correct error code
    
    [ Upstream commit 6def480181f15f6d9ec812bca8cbc62451ba314c ]
    
    When kmemdup called failed and register_net_sysctl return NULL, should
    return ENOMEM instead of ENOBUFS
    
    Signed-off-by: liuguoqiang <liuguoqiang@uniontech.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 233171eaeda07386534a5a1e5a8ad9c07bda5c71
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Fri Oct 5 15:51:33 2018 -0700

    hugetlb: take PMD sharing into account when flushing tlb/caches
    
    commit dff11abe280b47c21b804a8ace318e0638bb9a49 upstream.
    
    When fixing an issue with PMD sharing and migration, it was discovered via
    code inspection that other callers of huge_pmd_unshare potentially have an
    issue with cache and tlb flushing.
    
    Use the routine adjust_range_if_pmd_sharing_possible() to calculate worst
    case ranges for mmu notifiers.  Ensure that this range is flushed if
    huge_pmd_unshare succeeds and unmaps a PUD_SUZE area.
    
    Link: http://lkml.kernel.org/r/20180823205917.16297-3-mike.kravetz@oracle.com
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1a0928426afc11a82e33b3e80a6ac68fdcb4487
Author: Benjamin Coddington <bcodding@redhat.com>
Date:   Tue Nov 16 10:48:13 2021 -0500

    NFSv42: Fix pagecache invalidation after COPY/CLONE
    
    commit 3f015d89a47cd8855cd92f71fff770095bd885a1 upstream.
    
    The mechanism in use to allow the client to see the results of COPY/CLONE
    is to drop those pages from the pagecache.  This forces the client to read
    those pages once more from the server.  However, truncate_pagecache_range()
    zeros out partial pages instead of dropping them.  Let us instead use
    invalidate_inode_pages2_range() with full-page offsets to ensure the client
    properly sees the results of COPY/CLONE operations.
    
    Cc: <stable@vger.kernel.org> # v4.7+
    Fixes: 2e72448b07dc ("NFS: Add COPY nfs operation")
    Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc927c1ddb1be797908e9aadcb61570357d4baba
Author: Alexander Mikhalitsyn <alexander.mikhalitsyn@virtuozzo.com>
Date:   Fri Nov 19 16:43:21 2021 -0800

    shm: extend forced shm destroy to support objects from several IPC nses
    
    commit 85b6d24646e4125c591639841169baa98a2da503 upstream.
    
    Currently, the exit_shm() function not designed to work properly when
    task->sysvshm.shm_clist holds shm objects from different IPC namespaces.
    
    This is a real pain when sysctl kernel.shm_rmid_forced = 1, because it
    leads to use-after-free (reproducer exists).
    
    This is an attempt to fix the problem by extending exit_shm mechanism to
    handle shm's destroy from several IPC ns'es.
    
    To achieve that we do several things:
    
    1. add a namespace (non-refcounted) pointer to the struct shmid_kernel
    
    2. during new shm object creation (newseg()/shmget syscall) we
       initialize this pointer by current task IPC ns
    
    3. exit_shm() fully reworked such that it traverses over all shp's in
       task->sysvshm.shm_clist and gets IPC namespace not from current task
       as it was before but from shp's object itself, then call
       shm_destroy(shp, ns).
    
    Note: We need to be really careful here, because as it was said before
    (1), our pointer to IPC ns non-refcnt'ed.  To be on the safe side we
    using special helper get_ipc_ns_not_zero() which allows to get IPC ns
    refcounter only if IPC ns not in the "state of destruction".
    
    Q/A
    
    Q: Why can we access shp->ns memory using non-refcounted pointer?
    A: Because shp object lifetime is always shorther than IPC namespace
       lifetime, so, if we get shp object from the task->sysvshm.shm_clist
       while holding task_lock(task) nobody can steal our namespace.
    
    Q: Does this patch change semantics of unshare/setns/clone syscalls?
    A: No. It's just fixes non-covered case when process may leave IPC
       namespace without getting task->sysvshm.shm_clist list cleaned up.
    
    Link: https://lkml.kernel.org/r/67bb03e5-f79c-1815-e2bf-949c67047418@colorfullife.com
    Link: https://lkml.kernel.org/r/20211109151501.4921-1-manfred@colorfullife.com
    Fixes: ab602f79915 ("shm: make exit_shm work proportional to task activity")
    Co-developed-by: Manfred Spraul <manfred@colorfullife.com>
    Signed-off-by: Manfred Spraul <manfred@colorfullife.com>
    Signed-off-by: Alexander Mikhalitsyn <alexander.mikhalitsyn@virtuozzo.com>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: Andrei Vagin <avagin@gmail.com>
    Cc: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
    Cc: Vasily Averin <vvs@virtuozzo.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c648eaa33928a65dd2ebf10948294929f0e7b95c
Author: Juergen Gross <jgross@suse.com>
Date:   Mon Nov 29 13:17:31 2021 +0100

    tty: hvc: replace BUG_ON() with negative return value
    
    commit e679004dec37566f658a255157d3aed9d762a2b7 upstream.
    
    Xen frontends shouldn't BUG() in case of illegal data received from
    their backends. So replace the BUG_ON()s when reading illegal data from
    the ring page with negative return values.
    
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20210707091045.460-1-jgross@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbee0b5c20694402c6a4cb36a9ac480c3bf5c71d
Author: Juergen Gross <jgross@suse.com>
Date:   Mon Nov 29 13:16:46 2021 +0100

    xen/netfront: don't trust the backend response data blindly
    
    commit a884daa61a7d91650987e855464526aef219590f upstream.
    
    Today netfront will trust the backend to send only sane response data.
    In order to avoid privilege escalations or crashes in case of malicious
    backends verify the data to be within expected limits. Especially make
    sure that the response always references an outstanding request.
    
    Note that only the tx queue needs special id handling, as for the rx
    queue the id is equal to the index in the ring page.
    
    Introduce a new indicator for the device whether it is broken and let
    the device stop working when it is set. Set this indicator in case the
    backend sets any weird data.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37093de83d2df7d1c040642bdf6a6c6db7e93d74
Author: Juergen Gross <jgross@suse.com>
Date:   Mon Nov 29 13:15:59 2021 +0100

    xen/netfront: disentangle tx_skb_freelist
    
    commit 21631d2d741a64a073e167c27769e73bc7844a2f upstream.
    
    The tx_skb_freelist elements are in a single linked list with the
    request id used as link reference. The per element link field is in a
    union with the skb pointer of an in use request.
    
    Move the link reference out of the union in order to enable a later
    reuse of it for requests which need a populated skb pointer.
    
    Rename add_id_to_freelist() and get_id_from_freelist() to
    add_id_to_list() and get_id_from_list() in order to prepare using
    those for other lists as well. Define ~0 as value to indicate the end
    of a list and place that value into the link for a request not being
    on the list.
    
    When freeing a skb zero the skb pointer in the request. Use a NULL
    value of the skb pointer instead of skb_entry_is_link() for deciding
    whether a request has a skb linked to it.
    
    Remove skb_entry_set_link() and open code it instead as it is really
    trivial now.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a8de7f80b9469e79c6ecf14f25050fa5982e803
Author: Juergen Gross <jgross@suse.com>
Date:   Mon Nov 29 13:15:15 2021 +0100

    xen/netfront: don't read data from request on the ring page
    
    commit 162081ec33c2686afa29d91bf8d302824aa846c7 upstream.
    
    In order to avoid a malicious backend being able to influence the local
    processing of a request build the request locally first and then copy
    it to the ring page. Any reading from the request influencing the
    processing in the frontend needs to be done on the local instance.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1227fc19df54646db66388e6749288a10c18ffe
Author: Juergen Gross <jgross@suse.com>
Date:   Mon Nov 29 13:14:31 2021 +0100

    xen/netfront: read response from backend only once
    
    commit 8446066bf8c1f9f7b7412c43fbea0fb87464d75b upstream.
    
    In order to avoid problems in case the backend is modifying a response
    on the ring page while the frontend has already seen it, just read the
    response into a local buffer in one go and then operate on that buffer
    only.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 967fe4536a90d8e257f25aabb95069fad013b0d2
Author: Juergen Gross <jgross@suse.com>
Date:   Mon Nov 29 13:12:06 2021 +0100

    xen/blkfront: don't trust the backend response data blindly
    
    commit b94e4b147fd1992ad450e1fea1fdaa3738753373 upstream.
    
    Today blkfront will trust the backend to send only sane response data.
    In order to avoid privilege escalations or crashes in case of malicious
    backends verify the data to be within expected limits. Especially make
    sure that the response always references an outstanding request.
    
    Introduce a new state of the ring BLKIF_STATE_ERROR which will be
    switched to in case an inconsistency is being detected. Recovering from
    this state is possible only via removing and adding the virtual device
    again (e.g. via a suspend/resume cycle).
    
    Make all warning messages issued due to valid error responses rate
    limited in order to avoid message floods being triggered by a malicious
    backend.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Roger Pau Monné <roger.pau@citrix.com>
    Link: https://lore.kernel.org/r/20210730103854.12681-4-jgross@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5aa58413914690503cd390483df4c040b1e294f
Author: Juergen Gross <jgross@suse.com>
Date:   Mon Nov 29 13:11:11 2021 +0100

    xen/blkfront: don't take local copy of a request from the ring page
    
    commit 8f5a695d99000fc3aa73934d7ced33cfc64dcdab upstream.
    
    In order to avoid a malicious backend being able to influence the local
    copy of a request build the request locally first and then copy it to
    the ring page instead of doing it the other way round as today.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Roger Pau Monné <roger.pau@citrix.com>
    Link: https://lore.kernel.org/r/20210730103854.12681-3-jgross@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 496e5d5772661e5e4c7c2f5943b7bc0bb0bdea59
Author: Juergen Gross <jgross@suse.com>
Date:   Mon Nov 29 13:07:26 2021 +0100

    xen/blkfront: read response from backend only once
    
    commit 71b66243f9898d0e54296b4e7035fb33cdcb0707 upstream.
    
    In order to avoid problems in case the backend is modifying a response
    on the ring page while the frontend has already seen it, just read the
    response into a local buffer in one go and then operate on that buffer
    only.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Roger Pau Monné <roger.pau@citrix.com>
    Link: https://lore.kernel.org/r/20210730103854.12681-2-jgross@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8c9ba5f928ca46e18438b0fac77eb72b36361f5
Author: Juergen Gross <jgross@suse.com>
Date:   Mon Nov 29 13:06:10 2021 +0100

    xen: sync include/xen/interface/io/ring.h with Xen's newest version
    
    commit 629a5d87e26fe96bcaab44cbb81f5866af6f7008 upstream.
    
    Sync include/xen/interface/io/ring.h with Xen's newest version in
    order to get the RING_COPY_RESPONSE() and RING_RESPONSE_PROD_OVERFLOW()
    macros.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b97f5af5b13a5c92055c460e8b4b9d1e47ac5a4a
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Thu Nov 25 14:05:18 2021 +0100

    fuse: release pipe buf after last use
    
    commit 473441720c8616dfaf4451f9c7ea14f0eb5e5d65 upstream.
    
    Checking buf->flags should be done before the pipe_buf_release() is called
    on the pipe buffer, since releasing the buffer might modify the flags.
    
    This is exactly what page_cache_pipe_buf_release() does, and which results
    in the same VM_BUG_ON_PAGE(PageLRU(page)) that the original patch was
    trying to fix.
    
    Reported-by: Justin Forbes <jmforbes@linuxtx.org>
    Fixes: 712a951025c0 ("fuse: fix page stealing")
    Cc: <stable@vger.kernel.org> # v2.6.35
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57c076e64ab55adf556cc515914564d61979f7c2
Author: Lin Ma <linma@zju.edu.cn>
Date:   Tue Nov 16 23:27:32 2021 +0800

    NFC: add NCI_UNREG flag to eliminate the race
    
    commit 48b71a9e66c2eab60564b1b1c85f4928ed04e406 upstream.
    
    There are two sites that calls queue_work() after the
    destroy_workqueue() and lead to possible UAF.
    
    The first site is nci_send_cmd(), which can happen after the
    nci_close_device as below
    
    nfcmrvl_nci_unregister_dev   |  nfc_genl_dev_up
      nci_close_device           |
        flush_workqueue          |
        del_timer_sync           |
      nci_unregister_device      |    nfc_get_device
        destroy_workqueue        |    nfc_dev_up
        nfc_unregister_device    |      nci_dev_up
          device_del             |        nci_open_device
                                 |          __nci_request
                                 |            nci_send_cmd
                                 |              queue_work !!!
    
    Another site is nci_cmd_timer, awaked by the nci_cmd_work from the
    nci_send_cmd.
    
      ...                        |  ...
      nci_unregister_device      |  queue_work
        destroy_workqueue        |
        nfc_unregister_device    |  ...
          device_del             |  nci_cmd_work
                                 |  mod_timer
                                 |  ...
                                 |  nci_cmd_timer
                                 |    queue_work !!!
    
    For the above two UAF, the root cause is that the nfc_dev_up can race
    between the nci_unregister_device routine. Therefore, this patch
    introduce NCI_UNREG flag to easily eliminate the possible race. In
    addition, the mutex_lock in nci_close_device can act as a barrier.
    
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Fixes: 6a2968aaf50c ("NFC: basic NCI protocol implementation")
    Reviewed-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Link: https://lore.kernel.org/r/20211116152732.19238-1-linma@zju.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 33a7d698f30fa0b99d50569e9909d3baa65d8f6a
Author: David Hildenbrand <david@redhat.com>
Date:   Fri Nov 19 16:43:58 2021 -0800

    proc/vmcore: fix clearing user buffer by properly using clear_user()
    
    commit c1e63117711977cc4295b2ce73de29dd17066c82 upstream.
    
    To clear a user buffer we cannot simply use memset, we have to use
    clear_user().  With a virtio-mem device that registers a vmcore_cb and
    has some logically unplugged memory inside an added Linux memory block,
    I can easily trigger a BUG by copying the vmcore via "cp":
    
      systemd[1]: Starting Kdump Vmcore Save Service...
      kdump[420]: Kdump is using the default log level(3).
      kdump[453]: saving to /sysroot/var/crash/127.0.0.1-2021-11-11-14:59:22/
      kdump[458]: saving vmcore-dmesg.txt to /sysroot/var/crash/127.0.0.1-2021-11-11-14:59:22/
      kdump[465]: saving vmcore-dmesg.txt complete
      kdump[467]: saving vmcore
      BUG: unable to handle page fault for address: 00007f2374e01000
      #PF: supervisor write access in kernel mode
      #PF: error_code(0x0003) - permissions violation
      PGD 7a523067 P4D 7a523067 PUD 7a528067 PMD 7a525067 PTE 800000007048f867
      Oops: 0003 [#1] PREEMPT SMP NOPTI
      CPU: 0 PID: 468 Comm: cp Not tainted 5.15.0+ #6
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.14.0-27-g64f37cc530f1-prebuilt.qemu.org 04/01/2014
      RIP: 0010:read_from_oldmem.part.0.cold+0x1d/0x86
      Code: ff ff ff e8 05 ff fe ff e9 b9 e9 7f ff 48 89 de 48 c7 c7 38 3b 60 82 e8 f1 fe fe ff 83 fd 08 72 3c 49 8d 7d 08 4c 89 e9 89 e8 <49> c7 45 00 00 00 00 00 49 c7 44 05 f8 00 00 00 00 48 83 e7 f81
      RSP: 0018:ffffc9000073be08 EFLAGS: 00010212
      RAX: 0000000000001000 RBX: 00000000002fd000 RCX: 00007f2374e01000
      RDX: 0000000000000001 RSI: 00000000ffffdfff RDI: 00007f2374e01008
      RBP: 0000000000001000 R08: 0000000000000000 R09: ffffc9000073bc50
      R10: ffffc9000073bc48 R11: ffffffff829461a8 R12: 000000000000f000
      R13: 00007f2374e01000 R14: 0000000000000000 R15: ffff88807bd421e8
      FS:  00007f2374e12140(0000) GS:ffff88807f000000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f2374e01000 CR3: 000000007a4aa000 CR4: 0000000000350eb0
      Call Trace:
       read_vmcore+0x236/0x2c0
       proc_reg_read+0x55/0xa0
       vfs_read+0x95/0x190
       ksys_read+0x4f/0xc0
       do_syscall_64+0x3b/0x90
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Some x86-64 CPUs have a CPU feature called "Supervisor Mode Access
    Prevention (SMAP)", which is used to detect wrong access from the kernel
    to user buffers like this: SMAP triggers a permissions violation on
    wrong access.  In the x86-64 variant of clear_user(), SMAP is properly
    handled via clac()+stac().
    
    To fix, properly use clear_user() when we're dealing with a user buffer.
    
    Link: https://lkml.kernel.org/r/20211112092750.6921-1-david@redhat.com
    Fixes: 997c136f518c ("fs/proc/vmcore.c: add hook to read_from_oldmem() to check for non-ram pages")
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Acked-by: Baoquan He <bhe@redhat.com>
    Cc: Dave Young <dyoung@redhat.com>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: Philipp Rudo <prudo@redhat.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c42c5698891f7acb3f1f80101cdd10079cf8daf7
Author: Stefano Garzarella <sgarzare@redhat.com>
Date:   Mon Nov 22 17:35:24 2021 +0100

    vhost/vsock: fix incorrect used length reported to the guest
    
    commit 49d8c5ffad07ca014cfae72a1b9b8c52b6ad9cb8 upstream.
    
    The "used length" reported by calling vhost_add_used() must be the
    number of bytes written by the device (using "in" buffers).
    
    In vhost_vsock_handle_tx_kick() the device only reads the guest
    buffers (they are all "out" buffers), without writing anything,
    so we must pass 0 as "used length" to comply virtio spec.
    
    Fixes: 433fc58e6bf2 ("VSOCK: Introduce vhost_vsock.ko")
    Cc: stable@vger.kernel.org
    Reported-by: Halil Pasic <pasic@linux.ibm.com>
    Suggested-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
    Link: https://lore.kernel.org/r/20211122163525.294024-2-sgarzare@redhat.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: Halil Pasic <pasic@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e80bf5d001594b037de04fb4fe89f34cfbcb3ba
Author: Nadav Amit <namit@vmware.com>
Date:   Sun Nov 21 12:40:07 2021 -0800

    hugetlbfs: flush TLBs correctly after huge_pmd_unshare
    
    commit a4a118f2eead1d6c49e00765de89878288d4b890 upstream.
    
    When __unmap_hugepage_range() calls to huge_pmd_unshare() succeed, a TLB
    flush is missing.  This TLB flush must be performed before releasing the
    i_mmap_rwsem, in order to prevent an unshared PMDs page from being
    released and reused before the TLB flush took place.
    
    Arguably, a comprehensive solution would use mmu_gather interface to
    batch the TLB flushes and the PMDs page release, however it is not an
    easy solution: (1) try_to_unmap_one() and try_to_migrate_one() also call
    huge_pmd_unshare() and they cannot use the mmu_gather interface; and (2)
    deferring the release of the page reference for the PMDs page until
    after i_mmap_rwsem is dropeed can confuse huge_pmd_unshare() into
    thinking PMDs are shared when they are not.
    
    Fix __unmap_hugepage_range() by adding the missing TLB flush, and
    forcing a flush when unshare is successful.
    
    Fixes: 24669e58477e ("hugetlb: use mmu_gather instead of a temporary linked list for accumulating pages)" # 3.6
    Signed-off-by: Nadav Amit <namit@vmware.com>
    Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 41a3f5169a01965f1369033b444d00fc494368d0
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Fri Nov 26 13:35:26 2021 -0500

    tracing: Check pid filtering when creating events
    
    commit 6cb206508b621a9a0a2c35b60540e399225c8243 upstream.
    
    When pid filtering is activated in an instance, all of the events trace
    files for that instance has the PID_FILTER flag set. This determines
    whether or not pid filtering needs to be done on the event, otherwise the
    event is executed as normal.
    
    If pid filtering is enabled when an event is created (via a dynamic event
    or modules), its flag is not updated to reflect the current state, and the
    events are not filtered properly.
    
    Cc: stable@vger.kernel.org
    Fixes: 3fdaf80f4a836 ("tracing: Implement event pid filtering")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 935efb0d7cd75035ce272937748e40a0b5f60c49
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Nov 23 12:25:35 2021 -0800

    tcp_cubic: fix spurious Hystart ACK train detections for not-cwnd-limited flows
    
    [ Upstream commit 4e1fddc98d2585ddd4792b5e44433dcee7ece001 ]
    
    While testing BIG TCP patch series, I was expecting that TCP_RR workloads
    with 80KB requests/answers would send one 80KB TSO packet,
    then being received as a single GRO packet.
    
    It turns out this was not happening, and the root cause was that
    cubic Hystart ACK train was triggering after a few (2 or 3) rounds of RPC.
    
    Hystart was wrongly setting CWND/SSTHRESH to 30, while my RPC
    needed a budget of ~20 segments.
    
    Ideally these TCP_RR flows should not exit slow start.
    
    Cubic Hystart should reset itself at each round, instead of assuming
    every TCP flow is a bulk one.
    
    Note that even after this patch, Hystart can still trigger, depending
    on scheduling artifacts, but at a higher CWND/SSTHRESH threshold,
    keeping optimal TSO packet sizes.
    
    Tested:
    
    ip link set dev eth0 gro_ipv6_max_size 131072 gso_ipv6_max_size 131072
    nstat -n; netperf -H ... -t TCP_RR  -l 5  -- -r 80000,80000 -K cubic; nstat|egrep "Ip6InReceives|Hystart|Ip6OutRequests"
    
    Before:
    
       8605
    Ip6InReceives                   87541              0.0
    Ip6OutRequests                  129496             0.0
    TcpExtTCPHystartTrainDetect     1                  0.0
    TcpExtTCPHystartTrainCwnd       30                 0.0
    
    After:
    
      8760
    Ip6InReceives                   88514              0.0
    Ip6OutRequests                  87975              0.0
    
    Fixes: ae27e98a5152 ("[TCP] CUBIC v2.3")
    Co-developed-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Stephen Hemminger <stephen@networkplumber.org>
    Cc: Yuchung Cheng <ycheng@google.com>
    Cc: Soheil Hassas Yeganeh <soheil@google.com>
    Link: https://lore.kernel.org/r/20211123202535.1843771-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6dc28547c19e43dea7e39aeb4bb97ce4bbc327d9
Author: Thomas Zeitlhofer <thomas.zeitlhofer+lkml@ze-it.at>
Date:   Tue Nov 23 20:18:43 2021 +0100

    PM: hibernate: use correct mode for swsusp_close()
    
    [ Upstream commit cefcf24b4d351daf70ecd945324e200d3736821e ]
    
    Commit 39fbef4b0f77 ("PM: hibernate: Get block device exclusively in
    swsusp_check()") changed the opening mode of the block device to
    (FMODE_READ | FMODE_EXCL).
    
    In the corresponding calls to swsusp_close(), the mode is still just
    FMODE_READ which triggers the warning in blkdev_flush_mapping() on
    resume from hibernate.
    
    So, use the mode (FMODE_READ | FMODE_EXCL) also when closing the
    device.
    
    Fixes: 39fbef4b0f77 ("PM: hibernate: Get block device exclusively in swsusp_check()")
    Signed-off-by: Thomas Zeitlhofer <thomas.zeitlhofer+lkml@ze-it.at>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit db80f49e04e3a114374eab8b066ab74b2383cf7d
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Nov 18 14:14:16 2021 +0300

    drm/vc4: fix error code in vc4_create_object()
    
    [ Upstream commit 96c5f82ef0a145d3e56e5b26f2bf6dcd2ffeae1c ]
    
    The ->gem_create_object() functions are supposed to return NULL if there
    is an error.  None of the callers expect error pointers so returing one
    will lead to an Oops.  See drm_gem_vram_create(), for example.
    
    Fixes: c826a6e10644 ("drm/vc4: Add a BO cache.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211118111416.GC1147@kili
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 58ef2c7a6de13721865d84b80eecf56d6cba0937
Author: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Date:   Wed Nov 17 16:19:09 2021 +0530

    scsi: mpt3sas: Fix kernel panic during drive powercycle test
    
    [ Upstream commit 0ee4ba13e09c9d9c1cb6abb59da8295d9952328b ]
    
    While looping over shost's sdev list it is possible that one
    of the drives is getting removed and its sas_target object is
    freed but its sdev object remains intact.
    
    Consequently, a kernel panic can occur while the driver is trying to access
    the sas_address field of sas_target object without also checking the
    sas_target object for NULL.
    
    Link: https://lore.kernel.org/r/20211117104909.2069-1-sreekanth.reddy@broadcom.com
    Fixes: f92363d12359 ("[SCSI] mpt3sas: add new driver supporting 12GB SAS")
    Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7afc6600ba3e2190a798c28898f132025d303d5a
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Nov 18 15:25:08 2021 +0100

    ARM: socfpga: Fix crash with CONFIG_FORTIRY_SOURCE
    
    [ Upstream commit 187bea472600dcc8d2eb714335053264dd437172 ]
    
    When CONFIG_FORTIFY_SOURCE is set, memcpy() checks the potential
    buffer overflow and panics.  The code in sofcpga bootstrapping
    contains the memcpy() calls are mistakenly translated as the shorter
    size, hence it triggers a panic as if it were overflowing.
    
    This patch changes the secondary_trampoline and *_end definitions
    to arrays for avoiding the false-positive crash above.
    
    Fixes: 9c4566a117a6 ("ARM: socfpga: Enable SMP for socfpga")
    Suggested-by: Kees Cook <keescook@chromium.org>
    Buglink: https://bugzilla.suse.com/show_bug.cgi?id=1192473
    Link: https://lore.kernel.org/r/20211117193244.31162-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b660d95c109eeacc006ca68b73da676edb931e48
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Tue Nov 16 09:55:01 2021 -0500

    NFSv42: Don't fail clone() unless the OP_CLONE operation failed
    
    [ Upstream commit d3c45824ad65aebf765fcf51366d317a29538820 ]
    
    The failure to retrieve post-op attributes has no bearing on whether or
    not the clone operation itself was successful. We must therefore ignore
    the return value of decode_getfattr() when looking at the success or
    failure of nfs4_xdr_dec_clone().
    
    Fixes: 36022770de6c ("nfs42: add CLONE xdr functions")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3ada7ad7fb1391e492fa482bafc6f33d435e0c18
Author: Alexander Aring <aahringo@redhat.com>
Date:   Thu Nov 11 22:09:16 2021 -0500

    net: ieee802154: handle iftypes as u32
    
    [ Upstream commit 451dc48c806a7ce9fbec5e7a24ccf4b2c936e834 ]
    
    This patch fixes an issue that an u32 netlink value is handled as a
    signed enum value which doesn't fit into the range of u32 netlink type.
    If it's handled as -1 value some BIT() evaluation ends in a
    shift-out-of-bounds issue. To solve the issue we set the to u32 max which
    is s32 "-1" value to keep backwards compatibility and let the followed enum
    values start counting at 0. This brings the compiler to never handle the
    enum as signed and a check if the value is above NL802154_IFTYPE_MAX should
    filter -1 out.
    
    Fixes: f3ea5e44231a ("ieee802154: add new interface command")
    Signed-off-by: Alexander Aring <aahringo@redhat.com>
    Link: https://lore.kernel.org/r/20211112030916.685793-1-aahringo@redhat.com
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6fb4a5b73eeaf80566e06883fe3c5f4e76fc805a
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 16 08:18:12 2021 +0100

    ASoC: topology: Add missing rwsem around snd_ctl_remove() calls
    
    [ Upstream commit 7e567b5ae06315ef2d70666b149962e2bb4b97af ]
    
    snd_ctl_remove() has to be called with card->controls_rwsem held (when
    called after the card instantiation).  This patch add the missing
    rwsem calls around it.
    
    Fixes: 8a9782346dcc ("ASoC: topology: Add topology core")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20211116071812.18109-1-tiwai@suse.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d1d3b4b4a18e40dd7c444c4bf3638798fe82168d
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Oct 28 09:46:53 2021 -0700

    ARM: dts: BCM5301X: Add interrupt properties to GPIO node
    
    [ Upstream commit 40f7342f0587639e5ad625adaa15efdd3cffb18f ]
    
    The GPIO controller is also an interrupt controller provider and is
    currently missing the appropriate 'interrupt-controller' and
    '#interrupt-cells' properties to denote that.
    
    Fixes: fb026d3de33b ("ARM: BCM5301X: Add Broadcom's bus-axi to the DTS file")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 53e4683c86f2a2758b5580d3c50cc26188a9a31f
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Fri Nov 26 17:34:42 2021 -0500

    tracing: Fix pid filtering when triggers are attached
    
    commit a55f224ff5f238013de8762c4287117e47b86e22 upstream.
    
    If a event is filtered by pid and a trigger that requires processing of
    the event to happen is a attached to the event, the discard portion does
    not take the pid filtering into account, and the event will then be
    recorded when it should not have been.
    
    Cc: stable@vger.kernel.org
    Fixes: 3fdaf80f4a836 ("tracing: Implement event pid filtering")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8cc719f3b47adb761f1e1692dcda57d37471a5c
Author: Stefano Stabellini <stefano.stabellini@xilinx.com>
Date:   Tue Nov 23 13:07:48 2021 -0800

    xen: detect uninitialized xenbus in xenbus_init
    
    commit 36e8f60f0867d3b70d398d653c17108459a04efe upstream.
    
    If the xenstore page hasn't been allocated properly, reading the value
    of the related hvm_param (HVM_PARAM_STORE_PFN) won't actually return
    error. Instead, it will succeed and return zero. Instead of attempting
    to xen_remap a bad guest physical address, detect this condition and
    return early.
    
    Note that although a guest physical address of zero for
    HVM_PARAM_STORE_PFN is theoretically possible, it is not a good choice
    and zero has never been validly used in that capacity.
    
    Also recognize all bits set as an invalid value.
    
    For 32-bit Linux, any pfn above ULONG_MAX would get truncated. Pfns
    above ULONG_MAX should never be passed by the Xen tools to HVM guests
    anyway, so check for this condition and return early.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Link: https://lore.kernel.org/r/20211123210748.1910236-1-sstabellini@kernel.org
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4fd853eb0f22d43315fdaa619748406dde1ee07
Author: Stefano Stabellini <stefano.stabellini@xilinx.com>
Date:   Mon Nov 15 14:27:19 2021 -0800

    xen: don't continue xenstore initialization in case of errors
    
    commit 08f6c2b09ebd4b326dbe96d13f94fee8f9814c78 upstream.
    
    In case of errors in xenbus_init (e.g. missing xen_store_gfn parameter),
    we goto out_error but we forget to reset xen_store_domain_type to
    XS_UNKNOWN. As a consequence xenbus_probe_initcall and other initcalls
    will still try to initialize xenstore resulting into a crash at boot.
    
    [    2.479830] Call trace:
    [    2.482314]  xb_init_comms+0x18/0x150
    [    2.486354]  xs_init+0x34/0x138
    [    2.489786]  xenbus_probe+0x4c/0x70
    [    2.498432]  xenbus_probe_initcall+0x2c/0x7c
    [    2.503944]  do_one_initcall+0x54/0x1b8
    [    2.507358]  kernel_init_freeable+0x1ac/0x210
    [    2.511617]  kernel_init+0x28/0x130
    [    2.516112]  ret_from_fork+0x10/0x20
    
    Cc: <Stable@vger.kernel.org>
    Cc: jbeulich@suse.com
    Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
    Link: https://lore.kernel.org/r/20211115222719.2558207-1-sstabellini@kernel.org
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b4f9fe9adb4d4d62cc84cf833511f1407ebce19a
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Tue Nov 2 11:10:37 2021 +0100

    fuse: fix page stealing
    
    commit 712a951025c0667ff00b25afc360f74e639dfabe upstream.
    
    It is possible to trigger a crash by splicing anon pipe bufs to the fuse
    device.
    
    The reason for this is that anon_pipe_buf_release() will reuse buf->page if
    the refcount is 1, but that page might have already been stolen and its
    flags modified (e.g. PG_lru added).
    
    This happens in the unlikely case of fuse_dev_splice_write() getting around
    to calling pipe_buf_release() after a page has been stolen, added to the
    page cache and removed from the page cache.
    
    Fix by calling pipe_buf_release() right after the page was inserted into
    the page cache.  In this case the page has an elevated refcount so any
    release function will know that the page isn't reusable.
    
    Reported-by: Frank Dinoff <fdinoff@google.com>
    Link: https://lore.kernel.org/r/CAAmZXrsGg2xsP1CK+cbuEMumtrqdvD-NKnWzhNcvn71RV3c1yw@mail.gmail.com/
    Fixes: dd3bb14f44a6 ("fuse: support splice() writing to fuse device")
    Cc: <stable@vger.kernel.org> # v2.6.35
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9186680382934b0e7529d3d70dcc0a21d087683b
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Nov 17 10:20:16 2021 +0300

    staging: rtl8192e: Fix use after free in _rtl92e_pci_disconnect()
    
    commit b535917c51acc97fb0761b1edec85f1f3d02bda4 upstream.
    
    The free_rtllib() function frees the "dev" pointer so there is use
    after free on the next line.  Re-arrange things to avoid that.
    
    Fixes: 66898177e7e5 ("staging: rtl8192e: Fix unload/reload problem")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20211117072016.GA5237@kili
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a56923191ce5625db9b68090ca06c1777e99b92
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Nov 18 22:57:29 2021 +0100

    ALSA: ctxfi: Fix out-of-range access
    
    commit 76c47183224c86e4011048b80f0e2d0d166f01c2 upstream.
    
    The master and next_conj of rcs_ops are used for iterating the
    resource list entries, and currently those are supposed to return the
    current value.  The problem is that next_conf may go over the last
    entry before the loop abort condition is evaluated, and it may return
    the "current" value that is beyond the array size.  It was caught
    recently as a GPF, for example.
    
    Those return values are, however, never actually evaluated, hence
    basically we don't have to consider the current value as the return at
    all.  By dropping those return values, the potential out-of-range
    access above is also fixed automatically.
    
    This patch changes the return type of master and next_conj callbacks
    to void and drop the superfluous code accordingly.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=214985
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211118215729.26257-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 404fb1097298690b1d7d1c59eab806bbdd757267
Author: Todd Kjos <tkjos@google.com>
Date:   Fri Nov 12 10:07:20 2021 -0800

    binder: fix test regression due to sender_euid change
    
    commit c21a80ca0684ec2910344d72556c816cb8940c01 upstream.
    
    This is a partial revert of commit
    29bc22ac5e5b ("binder: use euid from cred instead of using task").
    Setting sender_euid using proc->cred caused some Android system test
    regressions that need further investigation. It is a partial
    reversion because subsequent patches rely on proc->cred.
    
    Fixes: 29bc22ac5e5b ("binder: use euid from cred instead of using task")
    Cc: stable@vger.kernel.org # 4.4+
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Change-Id: I9b1769a3510fed250bb21859ef8beebabe034c66
    Link: https://lore.kernel.org/r/20211112180720.2858135-1-tkjos@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c193fcec5331a4859f50eb7b26abf81176d71113
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Nov 23 12:16:56 2021 +0200

    usb: hub: Fix locking issues with address0_mutex
    
    commit 6cca13de26eea6d32a98d96d916a048d16a12822 upstream.
    
    Fix the circular lock dependency and unbalanced unlock of addess0_mutex
    introduced when fixing an address0_mutex enumeration retry race in commit
    ae6dc22d2d1 ("usb: hub: Fix usb enumeration issue due to address0 race")
    
    Make sure locking order between port_dev->status_lock and address0_mutex
    is correct, and that address0_mutex is not unlocked in hub_port_connect
    "done:" codepath which may be reached without locking address0_mutex
    
    Fixes: 6ae6dc22d2d1 ("usb: hub: Fix usb enumeration issue due to address0 race")
    Cc: <stable@vger.kernel.org>
    Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Tested-by: Hans de Goede <hdegoede@redhat.com>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Acked-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20211123101656.1113518-1-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b13daa1c3d425498e7233332f806035bac53c152
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Nov 16 00:16:30 2021 +0200

    usb: hub: Fix usb enumeration issue due to address0 race
    
    commit 6ae6dc22d2d1ce6aa77a6da8a761e61aca216f8b upstream.
    
    xHC hardware can only have one slot in default state with address 0
    waiting for a unique address at a time, otherwise "undefined behavior
    may occur" according to xhci spec 5.4.3.4
    
    The address0_mutex exists to prevent this across both xhci roothubs.
    
    If hub_port_init() fails, it may unlock the mutex and exit with a xhci
    slot in default state. If the other xhci roothub calls hub_port_init()
    at this point we end up with two slots in default state.
    
    Make sure the address0_mutex protects the slot default state across
    hub_port_init() retries, until slot is addressed or disabled.
    
    Note, one known minor case is not fixed by this patch.
    If device needs to be reset during resume, but fails all hub_port_init()
    retries in usb_reset_and_verify_device(), then it's possible the slot is
    still left in default state when address0_mutex is unlocked.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 638139eb95d2 ("usb: hub: allow to process more usb hub events in parallel")
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20211115221630.871204-1-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 339e9af5fc264003dec2ece442aa384e9990338b
Author: Mingjie Zhang <superzmj@fibocom.com>
Date:   Tue Nov 23 21:37:57 2021 +0800

    USB: serial: option: add Fibocom FM101-GL variants
    
    commit 88459e3e42760abb2299bbf6cb1026491170e02a upstream.
    
    Update the USB serial option driver support for the Fibocom
    FM101-GL Cat.6
    LTE modules as there are actually several different variants.
    - VID:PID 2cb7:01a2, FM101-GL are laptop M.2 cards (with
      MBIM interfaces for /Linux/Chrome OS)
    - VID:PID 2cb7:01a4, FM101-GL for laptop debug M.2 cards(with adb
      interface for /Linux/Chrome OS)
    
    0x01a2: mbim, tty, tty, diag, gnss
    0x01a4: mbim, diag, tty, adb, gnss, gnss
    
    Here are the outputs of lsusb -v and usb-devices:
    
    T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 86 Spd=5000 MxCh= 0
    D:  Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
    P:  Vendor=2cb7 ProdID=01a2 Rev= 5.04
    S:  Manufacturer=Fibocom Wireless Inc.
    S:  Product=Fibocom FM101-GL Module
    S:  SerialNumber=673326ce
    C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=896mA
    A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
    I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=(none)
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=(none)
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=(none)
    I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)
    
    Bus 002 Device 084: ID 2cb7:01a2 Fibocom Wireless Inc. Fibocom FM101-GL Module
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               3.20
      bDeviceClass            0
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0         9
      idVendor           0x2cb7
      idProduct          0x01a2
      bcdDevice            5.04
      iManufacturer           1 Fibocom Wireless Inc.
      iProduct                2 Fibocom FM101-GL Module
      iSerial                 3 673326ce
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength       0x015d
        bNumInterfaces          6
        bConfigurationValue     1
        iConfiguration          4 MBIM_DUN_DUN_DIAG_NMEA
        bmAttributes         0xa0
          (Bus Powered)
          Remote Wakeup
        MaxPower              896mA
        Interface Association:
          bLength                 8
          bDescriptorType        11
          bFirstInterface         0
          bInterfaceCount         2
          bFunctionClass          2 Communications
          bFunctionSubClass      14
          bFunctionProtocol       0
          iFunction               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         2 Communications
          bInterfaceSubClass     14
          bInterfaceProtocol      0
          iInterface              5 Fibocom FM101-GL LTE Modem
          CDC Header:
            bcdCDC               1.10
          CDC Union:
            bMasterInterface        0
            bSlaveInterface         1
          CDC MBIM:
            bcdMBIMVersion       1.00
            wMaxControlMessage   4096
            bNumberFilters       32
            bMaxFilterSize       128
            wMaxSegmentSize      2048
            bmNetworkCapabilities 0x20
              8-byte ntb input size
          CDC MBIM Extended:
            bcdMBIMExtendedVersion           1.00
            bMaxOutstandingCommandMessages     64
            wMTU                             1500
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               9
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           0
          bInterfaceClass        10 CDC Data
          bInterfaceSubClass      0
          bInterfaceProtocol      2
          iInterface              0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       1
          bNumEndpoints           2
          bInterfaceClass        10 CDC Data
          bInterfaceSubClass      0
          bInterfaceProtocol      2
          iInterface              6 MBIM Data
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x8e  EP 14 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               6
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x0f  EP 15 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               2
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol     64
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x83  EP 3 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        3
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol     64
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x85  EP 5 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x84  EP 4 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        4
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol     48
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x03  EP 3 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x86  EP 6 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        5
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol     64
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x88  EP 8 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x87  EP 7 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x04  EP 4 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
    
    T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 85 Spd=5000 MxCh= 0
    D:  Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
    P:  Vendor=2cb7 ProdID=01a4 Rev= 5.04
    S:  Manufacturer=Fibocom Wireless Inc.
    S:  Product=Fibocom FM101-GL Module
    S:  SerialNumber=673326ce
    C:* #Ifs= 7 Cfg#= 1 Atr=a0 MxPwr=896mA
    A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
    I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=(none)
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=(none)
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)
    I:* If#= 6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)
    
    Bus 002 Device 085: ID 2cb7:01a4 Fibocom Wireless Inc. Fibocom FM101-GL Module
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               3.20
      bDeviceClass            0
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0         9
      idVendor           0x2cb7
      idProduct          0x01a4
      bcdDevice            5.04
      iManufacturer           1 Fibocom Wireless Inc.
      iProduct                2 Fibocom FM101-GL Module
      iSerial                 3 673326ce
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength       0x0180
        bNumInterfaces          7
        bConfigurationValue     1
        iConfiguration          4 MBIM_DIAG_DUN_ADB_GNSS_GNSS
        bmAttributes         0xa0
          (Bus Powered)
          Remote Wakeup
        MaxPower              896mA
        Interface Association:
          bLength                 8
          bDescriptorType        11
          bFirstInterface         0
          bInterfaceCount         2
          bFunctionClass          2 Communications
          bFunctionSubClass      14
          bFunctionProtocol       0
          iFunction               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         2 Communications
          bInterfaceSubClass     14
          bInterfaceProtocol      0
          iInterface              5 Fibocom FM101-GL LTE Modem
          CDC Header:
            bcdCDC               1.10
          CDC Union:
            bMasterInterface        0
            bSlaveInterface         1
          CDC MBIM:
            bcdMBIMVersion       1.00
            wMaxControlMessage   4096
            bNumberFilters       32
            bMaxFilterSize       128
            wMaxSegmentSize      2048
            bmNetworkCapabilities 0x20
              8-byte ntb input size
          CDC MBIM Extended:
            bcdMBIMExtendedVersion           1.00
            bMaxOutstandingCommandMessages     64
            wMTU                             1500
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               9
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           0
          bInterfaceClass        10 CDC Data
          bInterfaceSubClass      0
          bInterfaceProtocol      2
          iInterface              0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       1
          bNumEndpoints           2
          bInterfaceClass        10 CDC Data
          bInterfaceSubClass      0
          bInterfaceProtocol      2
          iInterface              6 MBIM Data
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x8e  EP 14 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               6
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x0f  EP 15 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               2
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol     48
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        3
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol     64
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x84  EP 4 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x83  EP 3 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        4
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass     66
          bInterfaceProtocol      1
          iInterface              8 ADB Interface
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x03  EP 3 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x85  EP 5 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        5
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol     64
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x87  EP 7 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x86  EP 6 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x04  EP 4 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        6
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol     64
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x89  EP 9 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x88  EP 8 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x05  EP 5 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
    
    Signed-off-by: Mingjie Zhang <superzmj@fibocom.com>
    Link: https://lore.kernel.org/r/20211123133757.37475-1-superzmj@fibocom.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea2ee27e0f739039527df519ad7e9bb3f58bec06
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Fri Nov 19 15:03:19 2021 +0100

    USB: serial: option: add Telit LE910S1 0x9200 composition
    
    commit e353f3e88720300c3d72f49a4bea54f42db1fa5e upstream.
    
    Add the following Telit LE910S1 composition:
    
    0x9200: tty
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Link: https://lore.kernel.org/r/20211119140319.10448-1-dnlplm@gmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16b34e53eaadda6cbb1f0452fd99700c44db23be
Author: Lee Jones <lee.jones@linaro.org>
Date:   Fri Nov 26 10:33:35 2021 +0000

    staging: ion: Prevent incorrect reference counting behavour
    
    Supply additional checks in order to prevent unexpected results.
    
    Fixes: b892bf75b2034 ("ion: Switch ion to use dma-buf")
    Suggested-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>