commit 0187300e6aa6246e9cebb22e2afbbc0d395839ee
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed May 18 09:47:28 2022 +0200

    Linux 5.4.195
    
    Link: https://lore.kernel.org/r/20220516193614.714657361@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: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Hulk Robot <hulkrobot@huawei.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8fcefb43ecfcba64becbd0cdc5d541ebdcee47fb
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Thu May 5 20:46:21 2022 +0800

    tty/serial: digicolor: fix possible null-ptr-deref in digicolor_uart_probe()
    
    commit 447ee1516f19f534a228dda237eddb202f23e163 upstream.
    
    It will cause null-ptr-deref when using 'res', if platform_get_resource()
    returns NULL, so move using 'res' after devm_ioremap_resource() that
    will check it to avoid null-ptr-deref.
    And use devm_platform_get_and_ioremap_resource() to simplify code.
    
    Fixes: 5930cb3511df ("serial: driver for Conexant Digicolor USART")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Reviewed-by: Baruch Siach <baruch@tkos.co.il>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220505124621.1592697-1-yangyingliang@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d80857c4fc7bd6b697dd6b73641c4d10c47ca5f
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Wed May 4 11:07:38 2022 +0200

    ping: fix address binding wrt vrf
    
    commit e1a7ac6f3ba6e157adcd0ca94d92a401f1943f56 upstream.
    
    When ping_group_range is updated, 'ping' uses the DGRAM ICMP socket,
    instead of an IP raw socket. In this case, 'ping' is unable to bind its
    socket to a local address owned by a vrflite.
    
    Before the patch:
    $ sysctl -w net.ipv4.ping_group_range='0  2147483647'
    $ ip link add blue type vrf table 10
    $ ip link add foo type dummy
    $ ip link set foo master blue
    $ ip link set foo up
    $ ip addr add 192.168.1.1/24 dev foo
    $ ip addr add 2001::1/64 dev foo
    $ ip vrf exec blue ping -c1 -I 192.168.1.1 192.168.1.2
    ping: bind: Cannot assign requested address
    $ ip vrf exec blue ping6 -c1 -I 2001::1 2001::2
    ping6: bind icmp socket: Cannot assign requested address
    
    CC: stable@vger.kernel.org
    Fixes: 1b69c6d0ae90 ("net: Introduce L3 Master device abstraction")
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7845532adb5376380e9a84b9c69c5e43db3d2535
Author: Mike Rapoport <rppt@kernel.org>
Date:   Mon May 9 17:34:28 2022 -0700

    arm[64]/memremap: don't abuse pfn_valid() to ensure presence of linear map
    
    commit 260364d112bc822005224667c0c9b1b17a53eafd upstream.
    
    The semantics of pfn_valid() is to check presence of the memory map for a
    PFN and not whether a PFN is covered by the linear map.  The memory map
    may be present for NOMAP memory regions, but they won't be mapped in the
    linear mapping.  Accessing such regions via __va() when they are
    memremap()'ed will cause a crash.
    
    On v5.4.y the crash happens on qemu-arm with UEFI [1]:
    
    <1>[    0.084476] 8<--- cut here ---
    <1>[    0.084595] Unable to handle kernel paging request at virtual address dfb76000
    <1>[    0.084938] pgd = (ptrval)
    <1>[    0.085038] [dfb76000] *pgd=5f7fe801, *pte=00000000, *ppte=00000000
    
    ...
    
    <4>[    0.093923] [<c0ed6ce8>] (memcpy) from [<c16a06f8>] (dmi_setup+0x60/0x418)
    <4>[    0.094204] [<c16a06f8>] (dmi_setup) from [<c16a38d4>] (arm_dmi_init+0x8/0x10)
    <4>[    0.094408] [<c16a38d4>] (arm_dmi_init) from [<c0302e9c>] (do_one_initcall+0x50/0x228)
    <4>[    0.094619] [<c0302e9c>] (do_one_initcall) from [<c16011e4>] (kernel_init_freeable+0x15c/0x1f8)
    <4>[    0.094841] [<c16011e4>] (kernel_init_freeable) from [<c0f028cc>] (kernel_init+0x8/0x10c)
    <4>[    0.095057] [<c0f028cc>] (kernel_init) from [<c03010e8>] (ret_from_fork+0x14/0x2c)
    
    On kernels v5.10.y and newer the same crash won't reproduce on ARM because
    commit b10d6bca8720 ("arch, drivers: replace for_each_membock() with
    for_each_mem_range()") changed the way memory regions are registered in
    the resource tree, but that merely covers up the problem.
    
    On ARM64 memory resources registered in yet another way and there the
    issue of wrong usage of pfn_valid() to ensure availability of the linear
    map is also covered.
    
    Implement arch_memremap_can_ram_remap() on ARM and ARM64 to prevent access
    to NOMAP regions via the linear mapping in memremap().
    
    Link: https://lore.kernel.org/all/Yl65zxGgFzF1Okac@sirena.org.uk
    Link: https://lkml.kernel.org/r/20220426060107.7618-1-rppt@kernel.org
    Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
    Reported-by: "kernelci.org bot" <bot@kernelci.org>
    Tested-by: Mark Brown <broonie@kernel.org>
    Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Mark-PK Tsai <mark-pk.tsai@mediatek.com>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Tony Lindgren <tony@atomide.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: <stable@vger.kernel.org>    [5.4+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0b735fef2afdcd8715e08ec941c1c8513b9740f
Author: Francesco Dolcini <francesco.dolcini@toradex.com>
Date:   Fri May 6 08:08:15 2022 +0200

    net: phy: Fix race condition on link status change
    
    commit 91a7cda1f4b8bdf770000a3b60640576dafe0cec upstream.
    
    This fixes the following error caused by a race condition between
    phydev->adjust_link() and a MDIO transaction in the phy interrupt
    handler. The issue was reproduced with the ethernet FEC driver and a
    micrel KSZ9031 phy.
    
    [  146.195696] fec 2188000.ethernet eth0: MDIO read timeout
    [  146.201779] ------------[ cut here ]------------
    [  146.206671] WARNING: CPU: 0 PID: 571 at drivers/net/phy/phy.c:942 phy_error+0x24/0x6c
    [  146.214744] Modules linked in: bnep imx_vdoa imx_sdma evbug
    [  146.220640] CPU: 0 PID: 571 Comm: irq/128-2188000 Not tainted 5.18.0-rc3-00080-gd569e86915b7 #9
    [  146.229563] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    [  146.236257]  unwind_backtrace from show_stack+0x10/0x14
    [  146.241640]  show_stack from dump_stack_lvl+0x58/0x70
    [  146.246841]  dump_stack_lvl from __warn+0xb4/0x24c
    [  146.251772]  __warn from warn_slowpath_fmt+0x5c/0xd4
    [  146.256873]  warn_slowpath_fmt from phy_error+0x24/0x6c
    [  146.262249]  phy_error from kszphy_handle_interrupt+0x40/0x48
    [  146.268159]  kszphy_handle_interrupt from irq_thread_fn+0x1c/0x78
    [  146.274417]  irq_thread_fn from irq_thread+0xf0/0x1dc
    [  146.279605]  irq_thread from kthread+0xe4/0x104
    [  146.284267]  kthread from ret_from_fork+0x14/0x28
    [  146.289164] Exception stack(0xe6fa1fb0 to 0xe6fa1ff8)
    [  146.294448] 1fa0:                                     00000000 00000000 00000000 00000000
    [  146.302842] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [  146.311281] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000
    [  146.318262] irq event stamp: 12325
    [  146.321780] hardirqs last  enabled at (12333): [<c01984c4>] __up_console_sem+0x50/0x60
    [  146.330013] hardirqs last disabled at (12342): [<c01984b0>] __up_console_sem+0x3c/0x60
    [  146.338259] softirqs last  enabled at (12324): [<c01017f0>] __do_softirq+0x2c0/0x624
    [  146.346311] softirqs last disabled at (12319): [<c01300ac>] __irq_exit_rcu+0x138/0x178
    [  146.354447] ---[ end trace 0000000000000000 ]---
    
    With the FEC driver phydev->adjust_link() calls fec_enet_adjust_link()
    calls fec_stop()/fec_restart() and both these function reset and
    temporary disable the FEC disrupting any MII transaction that
    could be happening at the same time.
    
    fec_enet_adjust_link() and phy_read() can be running at the same time
    when we have one additional interrupt before the phy_state_machine() is
    able to terminate.
    
    Thread 1 (phylib WQ)       | Thread 2 (phy interrupt)
                               |
                               | phy_interrupt()            <-- PHY IRQ
                               |  handle_interrupt()
                               |   phy_read()
                               |   phy_trigger_machine()
                               |    --> schedule phylib WQ
                               |
                               |
    phy_state_machine()        |
     phy_check_link_status()   |
      phy_link_change()        |
       phydev->adjust_link()   |
        fec_enet_adjust_link() |
         --> FEC reset         | phy_interrupt()            <-- PHY IRQ
                               |  phy_read()
                               |
    
    Fix this by acquiring the phydev lock in phy_interrupt().
    
    Link: https://lore.kernel.org/all/20220422152612.GA510015@francesco-nb.int.toradex.com/
    Fixes: c974bdbc3e77 ("net: phy: Use threaded IRQ, to allow IRQ from sleeping devices")
    cc: <stable@vger.kernel.org>
    Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20220506060815.327382-1-francesco.dolcini@toradex.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    [fd: backport: adapt locking before did_interrupt()/ack_interrupt()
     callbacks removal ]
    Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a60def7568216684f62b117c199429c4a9a89570
Author: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Date:   Sat May 14 16:47:30 2022 +0100

    MIPS: fix build with gcc-12
    
    Some mips builds with gcc-12 fails with the error:
    arch/mips/jz4740/setup.c:64:25: error: comparison between two arrays
            [-Werror=array-compare]
            64 |         if (__dtb_start != __dtb_end)
    
    'd24f48767d5e ("MIPS: Use address-of operator on section symbols")' has
    been applied which fixes most of the error, but it missed one file which
    was not available upstream when the change was done.
    
    Fixes: d24f48767d5e ("MIPS: Use address-of operator on section symbols")
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3112d5da17c6f4497c350f152278ef302eca3d9
Author: Zack Rusin <zackr@vmware.com>
Date:   Wed Mar 2 10:24:24 2022 -0500

    drm/vmwgfx: Initialize drm_mode_fb_cmd2
    
    commit 3059d9b9f6aa433a55b9d0d21b566396d5497c33 upstream.
    
    Transition to drm_mode_fb_cmd2 from drm_mode_fb_cmd left the structure
    unitialized. drm_mode_fb_cmd2 adds a few additional members, e.g. flags
    and modifiers which were never initialized. Garbage in those members
    can cause random failures during the bringup of the fbcon.
    
    Initializing the structure fixes random blank screens after bootup due
    to flags/modifiers mismatches during the fbcon bring up.
    
    Fixes: dabdcdc9822a ("drm/vmwgfx: Switch to mode_cmd2")
    Signed-off-by: Zack Rusin <zackr@vmware.com>
    Cc: Daniel Vetter <daniel.vetter@intel.com>
    Cc: <stable@vger.kernel.org> # v4.10+
    Reviewed-by: Martin Krastev <krastevm@vmware.com>
    Reviewed-by: Maaz Mombasawala <mombasawalam@vmware.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220302152426.885214-7-zack@kde.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 463c7431490d5d436a3dd93c367e3552daa2c997
Author: Waiman Long <longman@redhat.com>
Date:   Wed Apr 27 10:54:28 2022 -0400

    cgroup/cpuset: Remove cpus_allowed/mems_allowed setup in cpuset_init_smp()
    
    commit 2685027fca387b602ae565bff17895188b803988 upstream.
    
    There are 3 places where the cpu and node masks of the top cpuset can
    be initialized in the order they are executed:
     1) start_kernel -> cpuset_init()
     2) start_kernel -> cgroup_init() -> cpuset_bind()
     3) kernel_init_freeable() -> do_basic_setup() -> cpuset_init_smp()
    
    The first cpuset_init() call just sets all the bits in the masks.
    The second cpuset_bind() call sets cpus_allowed and mems_allowed to the
    default v2 values. The third cpuset_init_smp() call sets them back to
    v1 values.
    
    For systems with cgroup v2 setup, cpuset_bind() is called once.  As a
    result, cpu and memory node hot add may fail to update the cpu and node
    masks of the top cpuset to include the newly added cpu or node in a
    cgroup v2 environment.
    
    For systems with cgroup v1 setup, cpuset_bind() is called again by
    rebind_subsystem() when the v1 cpuset filesystem is mounted as shown
    in the dmesg log below with an instrumented kernel.
    
      [    2.609781] cpuset_bind() called - v2 = 1
      [    3.079473] cpuset_init_smp() called
      [    7.103710] cpuset_bind() called - v2 = 0
    
    smp_init() is called after the first two init functions.  So we don't
    have a complete list of active cpus and memory nodes until later in
    cpuset_init_smp() which is the right time to set up effective_cpus
    and effective_mems.
    
    To fix this cgroup v2 mask setup problem, the potentially incorrect
    cpus_allowed & mems_allowed setting in cpuset_init_smp() are removed.
    For cgroup v2 systems, the initial cpuset_bind() call will set the masks
    correctly.  For cgroup v1 systems, the second call to cpuset_bind()
    will do the right setup.
    
    cc: stable@vger.kernel.org
    Signed-off-by: Waiman Long <longman@redhat.com>
    Tested-by: Feng Tang <feng.tang@intel.com>
    Reviewed-by: Michal Koutný <mkoutny@suse.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f25145c37c4ed79dbd2c78fcf03f55db2bb5683c
Author: Xiaomeng Tong <xiam0nd.tong@gmail.com>
Date:   Tue May 10 13:48:46 2022 -0700

    i40e: i40e_main: fix a missing check on list iterator
    
    commit 3f95a7472d14abef284d8968734fe2ae7ff4845f upstream.
    
    The bug is here:
            ret = i40e_add_macvlan_filter(hw, ch->seid, vdev->dev_addr, &aq_err);
    
    The list iterator 'ch' will point to a bogus position containing
    HEAD if the list is empty or no element is found. This case must
    be checked before any use of the iterator, otherwise it will
    lead to a invalid memory access.
    
    To fix this bug, use a new variable 'iter' as the list iterator,
    while use the origin variable 'ch' as a dedicated pointer to
    point to the found element.
    
    Cc: stable@vger.kernel.org
    Fixes: 1d8d80b4e4ff6 ("i40e: Add macvlan support on i40e")
    Signed-off-by: Xiaomeng Tong <xiam0nd.tong@gmail.com>
    Tested-by: Gurucharan <gurucharanx.g@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Link: https://lore.kernel.org/r/20220510204846.2166999-1-anthony.l.nguyen@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 17c744716af59b7c7db85d07c584ac6cbf7b668d
Author: Robin Murphy <robin.murphy@arm.com>
Date:   Tue Apr 5 15:21:34 2022 +0100

    drm/nouveau/tegra: Stop using iommu_present()
    
    commit 87fd2b091fb33871a7f812658a0971e8e26f903f upstream.
    
    Even if some IOMMU has registered itself on the platform "bus", that
    doesn't necessarily mean it provides translation for the device we
    care about. Replace iommu_present() with a more appropriate check.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    Reviewed-by: Lyude Paul <lyude@redhat.com>
    [added cc for stable]
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Cc: stable@vger.kernel.org # v5.0+
    Link: https://patchwork.freedesktop.org/patch/msgid/70d40ea441da3663c2824d54102b471e9a621f8a.1649168494.git.robin.murphy@arm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8f567c4654321b238dcf9dd12e730c34e21aba1
Author: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Date:   Wed Apr 27 15:23:28 2022 +0200

    serial: 8250_mtk: Fix register address for XON/XOFF character
    
    commit e1bfdbc7daca171c74a577b3dd0b36d76bb0ffcc upstream.
    
    The XON1/XOFF1 character registers are at offset 0xa0 and 0xa8
    respectively, so we cannot use the definition in serial_port.h.
    
    Fixes: bdbd0a7f8f03 ("serial: 8250-mtk: modify baudrate setting")
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220427132328.228297-4-angelogioacchino.delregno@collabora.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa3ea7451bd68c48f94037d29172abbf22ba3e40
Author: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Date:   Wed Apr 27 15:23:26 2022 +0200

    serial: 8250_mtk: Fix UART_EFR register address
    
    commit bb0b197aadd928f52ce6f01f0ee977f0a08cf1be upstream.
    
    On MediaTek SoCs, the UART IP is 16550A compatible, but there are some
    specific quirks: we are declaring a register shift of 2, but this is
    only valid for the majority of the registers, as there are some that
    are out of the standard layout.
    
    Specifically, this driver is using definitions from serial_reg.h, where
    we have a UART_EFR register defined as 2: this results in a 0x8 offset,
    but there we have the FCR register instead.
    
    The right offset for the EFR register on MediaTek UART is at 0x98,
    so, following the decimal definition convention in serial_reg.h and
    accounting for the register left shift of two, add and use the correct
    register address for this IP, defined as decimal 38, so that the final
    calculation results in (0x26 << 2) = 0x98.
    
    Fixes: bdbd0a7f8f03 ("serial: 8250-mtk: modify baudrate setting")
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220427132328.228297-2-angelogioacchino.delregno@collabora.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 031fda28d0a675b3659e53844733dffdec9af608
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Fri Apr 29 17:49:17 2022 +0100

    slimbus: qcom: Fix IRQ check in qcom_slim_probe
    
    commit fe503887eed6ea528e144ec8dacfa1d47aa701ac upstream.
    
    platform_get_irq() returns non-zero IRQ number on success,
    negative error number on failure.
    And the doc of platform_get_irq() provides a usage example:
    
        int irq = platform_get_irq(pdev, 0);
        if (irq < 0)
            return irq;
    
    Fix the check of return value to catch errors correctly.
    
    Fixes: ad7fcbc308b0 ("slimbus: qcom: Add Qualcomm Slimbus controller driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20220429164917.5202-2-srinivas.kandagatla@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7de6f305962940aef8ae55ab07cfeb2d2359285e
Author: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
Date:   Mon Apr 25 16:34:50 2022 +0200

    USB: serial: option: add Fibocom MA510 modem
    
    commit 07989eb981d862f7f2be68d233d753f2e7ccc119 upstream.
    
    The MA510 modem has 3 USB configurations that are configurable via the AT
    command AT+GTUSBMODE={30,31,32} which make the modem enumerate with the
    following interfaces, respectively:
    
    30: Diag + QDSS + Modem + RMNET
    31: Diag + Modem + AT + ECM
    32: Modem + AT + ECM
    
    The first configuration (30) reuses u-blox R410M's VID/PID with
    identical interface configuration.
    
    A detailed description of the USB configuration for each mode follows:
    
    +GTUSBMODE: 30
    --------------
    T:  Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#= 19 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=05c6 ProdID=90b2 Rev= 0.00
    S:  Manufacturer=Fibocom MA510 Modem
    S:  Product=Fibocom MA510 Modem
    S:  SerialNumber=55e2695b
    C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    E:  Ad=85(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    +GTUSBMODE: 31
    --------------
    T:  Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#= 99 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=2cb7 ProdID=0106 Rev= 0.00
    S:  Manufacturer=Fibocom MA510 Modem
    S:  Product=Fibocom MA510 Modem
    S:  SerialNumber=55e2695b
    C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
    A:  FirstIf#= 3 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
    E:  Ad=84(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
    E:  Ad=86(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    I:  If#= 4 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    I:* If#= 4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    +GTUSBMODE: 32
    --------------
    T:  Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=100 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=2cb7 ProdID=010a Rev= 0.00
    S:  Manufacturer=Fibocom MA510 Modem
    S:  Product=Fibocom MA510 Modem
    S:  SerialNumber=55e2695b
    C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
    A:  FirstIf#= 2 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
    E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
    E:  Ad=85(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    I:  If#= 3 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    I:* If#= 3 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65732f62f7303838d5c7ff3aa950c0b68a25a01f
Author: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
Date:   Mon Apr 25 16:34:49 2022 +0200

    USB: serial: option: add Fibocom L610 modem
    
    commit 714adff9a6271b5f1664b04c944b598141ebfe73 upstream.
    
    The L610 modem has 3 USB configurations that are configurable via the AT
    command AT+GTUSBMODE={31,32,33} which make the modem enumerate with the
    following interfaces, respectively:
    
    31: Modem + NV + MOS + Diag + LOG + AT + AT
    32: ECM + Modem + NV + MOS + Diag + LOG + AT + AT
    33: RNDIS + Modem + NV + MOS + Diag + LOG + AT + AT
    
    A detailed description of the USB configuration for each mode follows:
    
    +GTUSBMODE: 31
    --------------
    T:  Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=124 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1782 ProdID=4d10 Rev= 0.00
    S:  Manufacturer=FIBOCOM
    S:  Product=L610
    C:* #Ifs= 7 Cfg#= 1 Atr=e0 MxPwr=400mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    +GTUSBMODE: 32
    --------------
    T:  Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=122 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1782 ProdID=4d11 Rev= 0.00
    S:  Manufacturer=FIBOCOM
    S:  Product=L610
    C:* #Ifs= 9 Cfg#= 1 Atr=e0 MxPwr=400mA
    A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=06 Prot=00
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
    E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    +GTUSBMODE: 33
    --------------
    T:  Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=126 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1782 ProdID=4d11 Rev= 0.00
    S:  Manufacturer=FIBOCOM
    S:  Product=L610
    C:* #Ifs= 9 Cfg#= 1 Atr=e0 MxPwr=400mA
    A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=4096ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c78537f3e293fe17c4b49dafdabc1732f73db4b
Author: Ethan Yang <etyang@sierrawireless.com>
Date:   Mon Apr 25 13:58:40 2022 +0800

    USB: serial: qcserial: add support for Sierra Wireless EM7590
    
    commit 870b1eee2d844727b06e238c121d260bc5645580 upstream.
    
    Add support for Sierra Wireless EM7590 0xc080/0xc081 compositions.
    
    Signed-off-by: Ethan Yang <etyang@sierrawireless.com>
    Link: https://lore.kernel.org/r/20220425055840.5693-1-etyang@sierrawireless.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e40d0049471213fcda89761829b618230976fbb2
Author: Scott Chen <scott@labau.com.tw>
Date:   Mon Apr 25 17:00:20 2022 +0800

    USB: serial: pl2303: add device id for HP LM930 Display
    
    commit 26a08f8bad3e1f98d3153f939fb8cd330da4cb26 upstream.
    
    Add the device id for the HPLM930Display which is a PL2303GC based
    device.
    
    Signed-off-by: Scott Chen <scott@labau.com.tw>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 056a56f8fbfe1fe6ca9ad5f8d634f6b0ad137531
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Mon May 2 10:04:56 2022 +0200

    usb: typec: tcpci: Don't skip cleanup in .remove() on error
    
    commit bbc126ae381cf0a27822c1f822d0aeed74cc40d9 upstream.
    
    Returning an error value in an i2c remove callback results in an error
    message being emitted by the i2c core, but otherwise it doesn't make a
    difference. The device goes away anyhow and the devm cleanups are
    called.
    
    In this case the remove callback even returns early without stopping the
    tcpm worker thread and various timers. A work scheduled on the work
    queue, or a firing timer after tcpci_remove() returned probably results
    in a use-after-free situation because the regmap and driver data were
    freed. So better make sure that tcpci_unregister_port() is called even
    if disabling the irq failed.
    
    Also emit a more specific error message instead of the i2c core's
    "remove failed (EIO), will be ignored" and return 0 to suppress the
    core's warning.
    
    This patch is (also) a preparation for making i2c remove callbacks
    return void.
    
    Fixes: 3ba76256fc4e ("usb: typec: tcpci: mask event interrupts when remove driver")
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20220502080456.21568-1-u.kleine-koenig@pengutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 457d9401b8c1acffd1b41fd51325bb417b090b3a
Author: Sergey Ryazanov <ryazanov.s.a@gmail.com>
Date:   Sun May 1 20:58:28 2022 +0300

    usb: cdc-wdm: fix reading stuck on device close
    
    commit 01e01f5c89773c600a9f0b32c888de0146066c3a upstream.
    
    cdc-wdm tracks whether a response reading request is in-progress and
    blocks the next request from being sent until the previous request is
    completed. As soon as last user closes the cdc-wdm device file, the
    driver cancels any ongoing requests, resets the pending response
    counter, but leaves the response reading in-progress flag
    (WDM_RESPONDING) untouched.
    
    So if the user closes the device file during the response receive
    request is being performed, no more data will be obtained from the
    modem. The request will be cancelled, effectively preventing the
    WDM_RESPONDING flag from being reseted. Keeping the flag set will
    prevent a new response receive request from being sent, permanently
    blocking the read path. The read path will staying blocked until the
    module will be reloaded or till the modem will be re-attached.
    
    This stuck has been observed with a Huawei E3372 modem attached to an
    OpenWrt router and using the comgt utility to set up a network
    connection.
    
    Fix this issue by clearing the WDM_RESPONDING flag on the device file
    close.
    
    Without this fix, the device reading stuck can be easily reproduced in a
    few connection establishing attempts. With this fix, a load test for
    modem connection re-establishing worked for several hours without any
    issues.
    
    Fixes: 922a5eadd5a3 ("usb: cdc-wdm: Fix race between autosuspend and reading from the device")
    Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Link: https://lore.kernel.org/r/20220501175828.8185-1-ryazanov.s.a@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d93303fd87747a2d56a641c7999ff9cd408d1d9
Author: Daniel Starke <daniel.starke@siemens.com>
Date:   Wed May 4 10:17:32 2022 +0200

    tty: n_gsm: fix mux activation issues in gsm_config()
    
    commit edd5f60c340086891fab094ad61270d6c80f9ca4 upstream.
    
    The current implementation activates the mux if it was restarted and opens
    the control channel if the mux was previously closed and we are now acting
    as initiator instead of responder, which is the default setting.
    This has two issues.
    1) No mux is activated if we keep all default values and only switch to
    initiator. The control channel is not allocated but will be opened next
    which results in a NULL pointer dereference.
    2) Switching the configuration after it was once configured while keeping
    the initiator value the same will not reopen the control channel if it was
    closed due to parameter incompatibilities. The mux remains dead.
    
    Fix 1) by always activating the mux if it is dead after configuration.
    Fix 2) by always opening the control channel after mux activation.
    
    Fixes: e1eaea46bb40 ("tty: n_gsm line discipline")
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniel Starke <daniel.starke@siemens.com>
    Link: https://lore.kernel.org/r/20220504081733.3494-2-daniel.starke@siemens.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e34ee5b5b921d25992f54141aaaf9859733863f
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon May 2 10:46:10 2022 +0200

    tcp: resalt the secret every 10 seconds
    
    [ Upstream commit 4dfa9b438ee34caca4e6a4e5e961641807367f6f ]
    
    In order to limit the ability for an observer to recognize the source
    ports sequence used to contact a set of destinations, we should
    periodically shuffle the secret. 10 seconds looks effective enough
    without causing particular issues.
    
    Cc: Moshe Kol <moshe.kol@mail.huji.ac.il>
    Cc: Yossi Gilad <yossi.gilad@mail.huji.ac.il>
    Cc: Amit Klein <aksecurity@gmail.com>
    Cc: Jason A. Donenfeld <Jason@zx2c4.com>
    Tested-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 39c26fe93c76f8f2f4c2e5d8b96a95d2970a06e4
Author: Shravya Kumbham <shravya.kumbham@xilinx.com>
Date:   Mon May 2 12:57:49 2022 +0530

    net: emaclite: Don't advertise 1000BASE-T and do auto negotiation
    
    [ Upstream commit b800528b97d0adc3a5ba42d78a8b0d3f07a31f44 ]
    
    In xemaclite_open() function we are setting the max speed of
    emaclite to 100Mb using phy_set_max_speed() function so,
    there is no need to write the advertising registers to stop
    giga-bit speed and the phy_start() function starts the
    auto-negotiation so, there is no need to handle it separately
    using advertising registers. Remove the phy_read and phy_write
    of advertising registers in xemaclite_open() function.
    
    Signed-off-by: Shravya Kumbham <shravya.kumbham@xilinx.com>
    Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 638bfbc84cca5f717d17fbab61a0723da12e0306
Author: Sven Schnelle <svens@linux.ibm.com>
Date:   Mon Apr 25 14:17:42 2022 +0200

    s390: disable -Warray-bounds
    
    [ Upstream commit 8b202ee218395319aec1ef44f72043e1fbaccdd6 ]
    
    gcc-12 shows a lot of array bound warnings on s390. This is caused
    by the S390_lowcore macro which uses a hardcoded address of 0.
    
    Wrapping that with absolute_pointer() works, but gcc no longer knows
    that a 12 bit displacement is sufficient to access lowcore. So it
    emits instructions like 'lghi %r1,0; l %rx,xxx(%r1)' instead of a
    single load/store instruction. As s390 stores variables often
    read/written in lowcore, this is considered problematic. Therefore
    disable -Warray-bounds on s390 for gcc-12 for the time being, until
    there is a better solution.
    
    Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
    Link: https://lore.kernel.org/r/yt9dzgkelelc.fsf@linux.ibm.com
    Link: https://lore.kernel.org/r/20220422134308.1613610-1-svens@linux.ibm.com
    Link: https://lore.kernel.org/r/20220425121742.3222133-1-svens@linux.ibm.com
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f66d3fa5089f4c1650c00e04a19ecbd6ece7ca64
Author: Mark Brown <broonie@kernel.org>
Date:   Sat Apr 23 14:12:39 2022 +0100

    ASoC: ops: Validate input values in snd_soc_put_volsw_range()
    
    [ Upstream commit aa22125c57f9e577f0a667e4fa07fc3fa8ca1e60 ]
    
    Check that values written via snd_soc_put_volsw_range() are
    within the range advertised by the control, ensuring that we
    don't write out of spec values to the hardware.
    
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20220423131239.3375261-1-broonie@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 13b850a6cc807f77890debb6de259dd09f359a90
Author: Mark Brown <broonie@kernel.org>
Date:   Wed Apr 20 20:34:54 2022 +0100

    ASoC: max98090: Generate notifications on changes for custom control
    
    [ Upstream commit 13fcf676d9e102594effc686d98521ff5c90b925 ]
    
    The max98090 driver has some custom controls which share a put() function
    which returns 0 unconditionally, meaning that events are not generated
    when the value changes. Fix that.
    
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20220420193454.2647908-2-broonie@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5c766c000a644bb483904a54041a092f5a078bad
Author: Mark Brown <broonie@kernel.org>
Date:   Wed Apr 20 20:34:53 2022 +0100

    ASoC: max98090: Reject invalid values in custom control put()
    
    [ Upstream commit 2fbe467bcbfc760a08f08475eea6bbd4c2874319 ]
    
    The max98090 driver has a custom put function for some controls which can
    only be updated in certain circumstances which makes no effort to validate
    that input is suitable for the control, allowing out of spec values to be
    written to the hardware and presented to userspace. Fix this by returning
    an error when invalid values are written.
    
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20220420193454.2647908-1-broonie@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 22f6c68b4927748121de48ff23330643d4a7df50
Author: Ji-Ze Hong (Peter Hong) <hpeter@gmail.com>
Date:   Mon Apr 18 17:07:06 2022 +0800

    hwmon: (f71882fg) Fix negative temperature
    
    [ Upstream commit 4aaaaf0f279836f06d3b9d0ffeec7a1e1a04ceef ]
    
    All temperature of Fintek superio hwmonitor that using 1-byte reg will use
    2's complement.
    
    In show_temp()
            temp = data->temp[nr] * 1000;
    
    When data->temp[nr] read as 255, it indicate -1C, but this code will report
    255C to userspace. It'll be ok when change to:
            temp = ((s8)data->temp[nr]) * 1000;
    
    Signed-off-by: Ji-Ze Hong (Peter Hong) <hpeter+linux_kernel@gmail.com>
    Link: https://lore.kernel.org/r/20220418090706.6339-1-hpeter+linux_kernel@gmail.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 208200e573bd32e3fe3d736c57d68d95fd63d050
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Thu Apr 14 17:52:39 2022 +0200

    gfs2: Fix filesystem block deallocation for short writes
    
    [ Upstream commit d031a8866e709c9d1ee5537a321b6192b4d2dc5b ]
    
    When a write cannot be carried out in full, gfs2_iomap_end() releases
    blocks that have been allocated for this write but haven't been used.
    
    To compute the end of the allocation, gfs2_iomap_end() incorrectly
    rounded the end of the attempted write down to the next block boundary
    to arrive at the end of the allocation.  It would have to round up, but
    the end of the allocation is also available as iomap->offset +
    iomap->length, so just use that instead.
    
    In addition, use round_up() for computing the start of the unused range.
    
    Fixes: 64bc06bb32ee ("gfs2: iomap buffered write support")
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 42daae7d845c51e21d28fd19ee5053abb08d3c3a
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Thu May 12 05:47:09 2022 +0000

    net: sfc: ef10: fix memory leak in efx_ef10_mtd_probe()
    
    [ Upstream commit 1fa89ffbc04545b7582518e57f4b63e2a062870f ]
    
    In the NIC ->probe() callback, ->mtd_probe() callback is called.
    If NIC has 2 ports, ->probe() is called twice and ->mtd_probe() too.
    In the ->mtd_probe(), which is efx_ef10_mtd_probe() it allocates and
    initializes mtd partiion.
    But mtd partition for sfc is shared data.
    So that allocated mtd partition data from last called
    efx_ef10_mtd_probe() will not be used.
    Therefore it must be freed.
    But it doesn't free a not used mtd partition data in efx_ef10_mtd_probe().
    
    kmemleak reports:
    unreferenced object 0xffff88811ddb0000 (size 63168):
      comm "systemd-udevd", pid 265, jiffies 4294681048 (age 348.586s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffffa3767749>] kmalloc_order_trace+0x19/0x120
        [<ffffffffa3873f0e>] __kmalloc+0x20e/0x250
        [<ffffffffc041389f>] efx_ef10_mtd_probe+0x11f/0x270 [sfc]
        [<ffffffffc0484c8a>] efx_pci_probe.cold.17+0x3df/0x53d [sfc]
        [<ffffffffa414192c>] local_pci_probe+0xdc/0x170
        [<ffffffffa4145df5>] pci_device_probe+0x235/0x680
        [<ffffffffa443dd52>] really_probe+0x1c2/0x8f0
        [<ffffffffa443e72b>] __driver_probe_device+0x2ab/0x460
        [<ffffffffa443e92a>] driver_probe_device+0x4a/0x120
        [<ffffffffa443f2ae>] __driver_attach+0x16e/0x320
        [<ffffffffa4437a90>] bus_for_each_dev+0x110/0x190
        [<ffffffffa443b75e>] bus_add_driver+0x39e/0x560
        [<ffffffffa4440b1e>] driver_register+0x18e/0x310
        [<ffffffffc02e2055>] 0xffffffffc02e2055
        [<ffffffffa3001af3>] do_one_initcall+0xc3/0x450
        [<ffffffffa33ca574>] do_init_module+0x1b4/0x700
    
    Acked-by: Martin Habets <habetsm.xilinx@gmail.com>
    Fixes: 8127d661e77f ("sfc: Add support for Solarflare SFC9100 family")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Link: https://lore.kernel.org/r/20220512054709.12513-1-ap420073@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e038c457bd12649730b9e8c330acfba83d0d3b77
Author: Guangguan Wang <guangguan.wang@linux.alibaba.com>
Date:   Thu May 12 11:08:20 2022 +0800

    net/smc: non blocking recvmsg() return -EAGAIN when no data and signal_pending
    
    [ Upstream commit f3c46e41b32b6266cf60b0985c61748f53bf1c61 ]
    
    Non blocking sendmsg will return -EAGAIN when any signal pending
    and no send space left, while non blocking recvmsg return -EINTR
    when signal pending and no data received. This may makes confused.
    As TCP returns -EAGAIN in the conditions described above. Align the
    behavior of smc with TCP.
    
    Fixes: 846e344eb722 ("net/smc: add receive timeout check")
    Signed-off-by: Guangguan Wang <guangguan.wang@linux.alibaba.com>
    Reviewed-by: Tony Lu <tonylu@linux.alibaba.com>
    Acked-by: Karsten Graul <kgraul@linux.ibm.com>
    Link: https://lore.kernel.org/r/20220512030820.73848-1-guangguan.wang@linux.alibaba.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2ec2dd7d51a9320151f275ddbb2b53260fb32ca1
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Tue May 10 16:57:34 2022 +0200

    net/sched: act_pedit: really ensure the skb is writable
    
    [ Upstream commit 8b796475fd7882663a870456466a4fb315cc1bd6 ]
    
    Currently pedit tries to ensure that the accessed skb offset
    is writable via skb_unclone(). The action potentially allows
    touching any skb bytes, so it may end-up modifying shared data.
    
    The above causes some sporadic MPTCP self-test failures, due to
    this code:
    
            tc -n $ns2 filter add dev ns2eth$i egress \
                    protocol ip prio 1000 \
                    handle 42 fw \
                    action pedit munge offset 148 u8 invert \
                    pipe csum tcp \
                    index 100
    
    The above modifies a data byte outside the skb head and the skb is
    a cloned one, carrying a TCP output packet.
    
    This change addresses the issue by keeping track of a rough
    over-estimate highest skb offset accessed by the action and ensuring
    such offset is really writable.
    
    Note that this may cause performance regressions in some scenarios,
    but hopefully pedit is not in the critical path.
    
    Fixes: db2c24175d14 ("act_pedit: access skb->data safely")
    Acked-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
    Tested-by: Geliang Tang <geliang.tang@suse.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Link: https://lore.kernel.org/r/1fcf78e6679d0a287dd61bb0f04730ce33b3255d.1652194627.git.pabeni@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 48c6a40e2f25c5536e608bcb6d1993e079a45e56
Author: Alexandra Winter <wintera@linux.ibm.com>
Date:   Tue May 10 09:05:08 2022 +0200

    s390/lcs: fix variable dereferenced before check
    
    [ Upstream commit 671bb35c8e746439f0ed70815968f9a4f20a8deb ]
    
    smatch complains about
    drivers/s390/net/lcs.c:1741 lcs_get_control() warn: variable dereferenced before check 'card->dev' (see line 1739)
    
    Fixes: 27eb5ac8f015 ("[PATCH] s390: lcs driver bug fixes and improvements [1/2]")
    Signed-off-by: Alexandra Winter <wintera@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 467ddbbe7e749d558f13e640f50f546149c930b3
Author: Alexandra Winter <wintera@linux.ibm.com>
Date:   Tue May 10 09:05:07 2022 +0200

    s390/ctcm: fix potential memory leak
    
    [ Upstream commit 0c0b20587b9f25a2ad14db7f80ebe49bdf29920a ]
    
    smatch complains about
    drivers/s390/net/ctcm_mpc.c:1210 ctcmpc_unpack_skb() warn: possible memory leak of 'mpcginfo'
    
    mpc_action_discontact() did not free mpcginfo. Consolidate the freeing in
    ctcmpc_unpack_skb().
    
    Fixes: 293d984f0e36 ("ctcm: infrastructure for replaced ctc driver")
    Signed-off-by: Alexandra Winter <wintera@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2cbce0110070d0a9a5e437ae4a82b0deb80c0cfb
Author: Alexandra Winter <wintera@linux.ibm.com>
Date:   Tue May 10 09:05:06 2022 +0200

    s390/ctcm: fix variable dereferenced before check
    
    [ Upstream commit 2c50c6867c85afee6f2b3bcbc50fc9d0083d1343 ]
    
    Found by cppcheck and smatch.
    smatch complains about
    drivers/s390/net/ctcm_sysfs.c:43 ctcm_buffer_write() warn: variable dereferenced before check 'priv' (see line 42)
    
    Fixes: 3c09e2647b5e ("ctcm: rename READ/WRITE defines to avoid redefinitions")
    Reported-by: Colin Ian King <colin.i.king@gmail.com>
    Signed-off-by: Alexandra Winter <wintera@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1c40e85d0aa0a5e7d1eeaafcc2d9ae8f15920b18
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon May 9 16:47:40 2022 -0700

    hwmon: (ltq-cputemp) restrict it to SOC_XWAY
    
    [ Upstream commit 151d6dcbed836270c6c240932da66f147950cbdb ]
    
    Building with SENSORS_LTQ_CPUTEMP=y with SOC_FALCON=y causes build
    errors since FALCON does not support the same features as XWAY.
    
    Change this symbol to depend on SOC_XWAY since that provides the
    necessary interfaces.
    
    Repairs these build errors:
    
    ../drivers/hwmon/ltq-cputemp.c: In function 'ltq_cputemp_enable':
    ../drivers/hwmon/ltq-cputemp.c:23:9: error: implicit declaration of function 'ltq_cgu_w32'; did you mean 'ltq_ebu_w32'? [-Werror=implicit-function-declaration]
       23 |         ltq_cgu_w32(ltq_cgu_r32(CGU_GPHY1_CR) | CGU_TEMP_PD, CGU_GPHY1_CR);
    ../drivers/hwmon/ltq-cputemp.c:23:21: error: implicit declaration of function 'ltq_cgu_r32'; did you mean 'ltq_ebu_r32'? [-Werror=implicit-function-declaration]
       23 |         ltq_cgu_w32(ltq_cgu_r32(CGU_GPHY1_CR) | CGU_TEMP_PD, CGU_GPHY1_CR);
    ../drivers/hwmon/ltq-cputemp.c: In function 'ltq_cputemp_probe':
    ../drivers/hwmon/ltq-cputemp.c:92:31: error: 'SOC_TYPE_VR9_2' undeclared (first use in this function)
       92 |         if (ltq_soc_type() != SOC_TYPE_VR9_2)
    
    Fixes: 7074d0a92758 ("hwmon: (ltq-cputemp) add cpu temp sensor driver")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: Florian Eckert <fe@dev.tdt.de>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Cc: Jean Delvare <jdelvare@suse.com>
    Cc: linux-hwmon@vger.kernel.org
    Link: https://lore.kernel.org/r/20220509234740.26841-1-rdunlap@infradead.org
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a778db9319f34c4a4988099438061ea4d6e0d07
Author: Jesse Brandeburg <jesse.brandeburg@intel.com>
Date:   Fri May 6 18:10:38 2022 -0700

    dim: initialize all struct fields
    
    [ Upstream commit ee1444b5e1df4155b591d0d9b1e72853a99ea861 ]
    
    The W=2 build pointed out that the code wasn't initializing all the
    variables in the dim_cq_moder declarations with the struct initializers.
    The net change here is zero since these structs were already static
    const globals and were initialized with zeros by the compiler, but
    removing compiler warnings has value in and of itself.
    
    lib/dim/net_dim.c: At top level:
    lib/dim/net_dim.c:54:9: warning: missing initializer for field ‘comps’ of ‘const struct dim_cq_moder’ [-Wmissing-field-initializers]
       54 |         NET_DIM_RX_EQE_PROFILES,
          |         ^~~~~~~~~~~~~~~~~~~~~~~
    In file included from lib/dim/net_dim.c:6:
    ./include/linux/dim.h:45:13: note: ‘comps’ declared here
       45 |         u16 comps;
          |             ^~~~~
    
    and repeats for the tx struct, and once you fix the comps entry then
    the cq_period_mode field needs the same treatment.
    
    Use the commonly accepted style to indicate to the compiler that we
    know what we're doing, and add a comma at the end of each struct
    initializer to clean up the issue, and use explicit initializers
    for the fields we are initializing which makes the compiler happy.
    
    While here and fixing these lines, clean up the code slightly with
    a fix for the super long lines by removing the word "_MODERATION" from a
    couple defines only used in this file.
    
    Fixes: f8be17b81d44 ("lib/dim: Fix -Wunused-const-variable warnings")
    Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Link: https://lore.kernel.org/r/20220507011038.14568-1-jesse.brandeburg@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 522986cc39c156354963ef3a135dd30afa56ae1b
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu May 5 23:04:22 2022 +0200

    mac80211_hwsim: call ieee80211_tx_prepare_skb under RCU protection
    
    [ Upstream commit 9e2db50f1ef2238fc2f71c5de1c0418b7a5b0ea2 ]
    
    This is needed since it might use (and pass out) pointers to
    e.g. keys protected by RCU. Can't really happen here as the
    frames aren't encrypted, but we need to still adhere to the
    rules.
    
    Fixes: cacfddf82baf ("mac80211_hwsim: initialize ieee80211_tx_info at hw_scan_work")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Link: https://lore.kernel.org/r/20220505230421.5f139f9de173.I77ae111a28f7c0e9fd1ebcee7f39dbec5c606770@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0729594cb78879c124bb36de33d0bcd070f581ba
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu May 5 09:19:46 2022 -0700

    netlink: do not reset transport header in netlink_recvmsg()
    
    [ Upstream commit d5076fe4049cadef1f040eda4aaa001bb5424225 ]
    
    netlink_recvmsg() does not need to change transport header.
    
    If transport header was needed, it should have been reset
    by the producer (netlink_dump()), not the consumer(s).
    
    The following trace probably happened when multiple threads
    were using MSG_PEEK.
    
    BUG: KCSAN: data-race in netlink_recvmsg / netlink_recvmsg
    
    write to 0xffff88811e9f15b2 of 2 bytes by task 32012 on cpu 1:
     skb_reset_transport_header include/linux/skbuff.h:2760 [inline]
     netlink_recvmsg+0x1de/0x790 net/netlink/af_netlink.c:1978
     sock_recvmsg_nosec net/socket.c:948 [inline]
     sock_recvmsg net/socket.c:966 [inline]
     __sys_recvfrom+0x204/0x2c0 net/socket.c:2097
     __do_sys_recvfrom net/socket.c:2115 [inline]
     __se_sys_recvfrom net/socket.c:2111 [inline]
     __x64_sys_recvfrom+0x74/0x90 net/socket.c:2111
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x2b/0x70 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    write to 0xffff88811e9f15b2 of 2 bytes by task 32005 on cpu 0:
     skb_reset_transport_header include/linux/skbuff.h:2760 [inline]
     netlink_recvmsg+0x1de/0x790 net/netlink/af_netlink.c:1978
     ____sys_recvmsg+0x162/0x2f0
     ___sys_recvmsg net/socket.c:2674 [inline]
     __sys_recvmsg+0x209/0x3f0 net/socket.c:2704
     __do_sys_recvmsg net/socket.c:2714 [inline]
     __se_sys_recvmsg net/socket.c:2711 [inline]
     __x64_sys_recvmsg+0x42/0x50 net/socket.c:2711
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x2b/0x70 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    value changed: 0xffff -> 0x0000
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 0 PID: 32005 Comm: syz-executor.4 Not tainted 5.18.0-rc1-syzkaller-00328-ge1f700ebd6be-dirty #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Link: https://lore.kernel.org/r/20220505161946.2867638-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 33ce32587c44cd52758749e428e58ec137361df1
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Wed Feb 9 07:03:11 2022 +0100

    drm/nouveau: Fix a potential theorical leak in nouveau_get_backlight_name()
    
    [ Upstream commit ab244be47a8f111bc82496a8a20c907236e37f95 ]
    
    If successful ida_simple_get() calls are not undone when needed, some
    additional memory may be allocated and wasted.
    
    Here, an ID between 0 and MAX_INT is required. If this ID is >=100, it is
    not taken into account and is wasted. It should be released.
    
    Instead of calling ida_simple_remove(), take advantage of the 'max'
    parameter to require the ID not to be too big. Should it be too big, it
    is not allocated and don't need to be freed.
    
    While at it, use ida_alloc_xxx()/ida_free() instead to
    ida_simple_get()/ida_simple_remove().
    The latter is deprecated and more verbose.
    
    Fixes: db1a0ae21461 ("drm/nouveau/bl: Assign different names to interfaces")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Reviewed-by: Lyude Paul <lyude@redhat.com>
    [Fixed formatting warning from checkpatch]
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/9ba85bca59df6813dc029e743a836451d5173221.1644386541.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5809a1c5304971372fad70ec301a10b43935da28
Author: Lokesh Dhoundiyal <lokesh.dhoundiyal@alliedtelesis.co.nz>
Date:   Thu May 5 14:00:17 2022 +1200

    ipv4: drop dst in multicast routing path
    
    [ Upstream commit 9e6c6d17d1d6a3f1515ce399f9a011629ec79aa0 ]
    
    kmemleak reports the following when routing multicast traffic over an
    ipsec tunnel.
    
    Kmemleak output:
    unreferenced object 0x8000000044bebb00 (size 256):
      comm "softirq", pid 0, jiffies 4294985356 (age 126.810s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 80 00 00 00 05 13 74 80  ..............t.
        80 00 00 00 04 9b bf f9 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<00000000f83947e0>] __kmalloc+0x1e8/0x300
        [<00000000b7ed8dca>] metadata_dst_alloc+0x24/0x58
        [<0000000081d32c20>] __ipgre_rcv+0x100/0x2b8
        [<00000000824f6cf1>] gre_rcv+0x178/0x540
        [<00000000ccd4e162>] gre_rcv+0x7c/0xd8
        [<00000000c024b148>] ip_protocol_deliver_rcu+0x124/0x350
        [<000000006a483377>] ip_local_deliver_finish+0x54/0x68
        [<00000000d9271b3a>] ip_local_deliver+0x128/0x168
        [<00000000bd4968ae>] xfrm_trans_reinject+0xb8/0xf8
        [<0000000071672a19>] tasklet_action_common.isra.16+0xc4/0x1b0
        [<0000000062e9c336>] __do_softirq+0x1fc/0x3e0
        [<00000000013d7914>] irq_exit+0xc4/0xe0
        [<00000000a4d73e90>] plat_irq_dispatch+0x7c/0x108
        [<000000000751eb8e>] handle_int+0x16c/0x178
        [<000000001668023b>] _raw_spin_unlock_irqrestore+0x1c/0x28
    
    The metadata dst is leaked when ip_route_input_mc() updates the dst for
    the skb. Commit f38a9eb1f77b ("dst: Metadata destinations") correctly
    handled dropping the dst in ip_route_input_slow() but missed the
    multicast case which is handled by ip_route_input_mc(). Drop the dst in
    ip_route_input_mc() avoiding the leak.
    
    Fixes: f38a9eb1f77b ("dst: Metadata destinations")
    Signed-off-by: Lokesh Dhoundiyal <lokesh.dhoundiyal@alliedtelesis.co.nz>
    Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20220505020017.3111846-1-chris.packham@alliedtelesis.co.nz
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c9d75e87f45bccee26cf7026642ee630f9aede3d
Author: Tariq Toukan <tariqt@nvidia.com>
Date:   Wed May 4 11:09:14 2022 +0300

    net: Fix features skip in for_each_netdev_feature()
    
    [ Upstream commit 85db6352fc8a158a893151baa1716463d34a20d0 ]
    
    The find_next_netdev_feature() macro gets the "remaining length",
    not bit index.
    Passing "bit - 1" for the following iteration is wrong as it skips
    the adjacent bit. Pass "bit" instead.
    
    Fixes: 3b89ea9c5902 ("net: Fix for_each_netdev_feature on Big endian")
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Reviewed-by: Gal Pressman <gal@nvidia.com>
    Link: https://lore.kernel.org/r/20220504080914.1918-1-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5c9057670504cbf155b5a7a9ead1f8190ca998da
Author: Manikanta Pubbisetty <quic_mpubbise@quicinc.com>
Date:   Thu Apr 28 10:57:44 2022 +0530

    mac80211: Reset MBSSID parameters upon connection
    
    [ Upstream commit 86af062f40a73bf63321694e6bf637144f0383fe ]
    
    Currently MBSSID parameters in struct ieee80211_bss_conf
    are not reset upon connection. This could be problematic
    with some drivers in a scenario where the device first
    connects to a non-transmit BSS and then connects to a
    transmit BSS of a Multi BSS AP. The MBSSID parameters
    which are set after connecting to a non-transmit BSS will
    not be reset and the same parameters will be passed on to
    the driver during the subsequent connection to a transmit
    BSS of a Multi BSS AP.
    
    For example, firmware running on the ath11k device uses the
    Multi BSS data for tracking the beacon of a non-transmit BSS
    and reports the driver when there is a beacon miss. If we do
    not reset the MBSSID parameters during the subsequent
    connection to a transmit BSS, then the driver would have
    wrong MBSSID data and FW would be looking for an incorrect
    BSSID in the MBSSID beacon of a Multi BSS AP and reports
    beacon loss leading to an unstable connection.
    
    Reset the MBSSID parameters upon every connection to solve this
    problem.
    
    Fixes: 78ac51f81532 ("mac80211: support multi-bssid")
    Signed-off-by: Manikanta Pubbisetty <quic_mpubbise@quicinc.com>
    Link: https://lore.kernel.org/r/20220428052744.27040-1-quic_mpubbise@quicinc.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cfe74fd41f189bd63787ff8370f8db77300dffaa
Author: Camel Guo <camel.guo@axis.com>
Date:   Tue May 3 13:43:33 2022 +0200

    hwmon: (tmp401) Add OF device ID table
    
    [ Upstream commit 3481551f035725fdc46885425eac3ef9b58ae7b7 ]
    
    This driver doesn't have of_match_table. This makes the kernel module
    tmp401.ko lack alias patterns (e.g: of:N*T*Cti,tmp411) to match DT node
    of the supported devices hence this kernel module will not be
    automatically loaded.
    
    After adding of_match_table to this driver, the folllowing alias will be
    added into tmp401.ko.
    $ modinfo drivers/hwmon/tmp401.ko
    filename: drivers/hwmon/tmp401.ko
    ......
    author:         Hans de Goede <hdegoede@redhat.com>
    alias:          of:N*T*Cti,tmp435C*
    alias:          of:N*T*Cti,tmp435
    alias:          of:N*T*Cti,tmp432C*
    alias:          of:N*T*Cti,tmp432
    alias:          of:N*T*Cti,tmp431C*
    alias:          of:N*T*Cti,tmp431
    alias:          of:N*T*Cti,tmp411C*
    alias:          of:N*T*Cti,tmp411
    alias:          of:N*T*Cti,tmp401C*
    alias:          of:N*T*Cti,tmp401
    ......
    
    Fixes: af503716ac14 ("i2c: core: report OF style module alias for devices registered via OF")
    Signed-off-by: Camel Guo <camel.guo@axis.com>
    Link: https://lore.kernel.org/r/20220503114333.456476-1-camel.guo@axis.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3915341a935f3397f65a01580dc3bfc4cdf53d14
Author: Sven Eckelmann <sven@narfation.org>
Date:   Sat Apr 16 13:51:10 2022 +0200

    batman-adv: Don't skb_split skbuffs with frag_list
    
    [ Upstream commit a063f2fba3fa633a599253b62561051ac185fa99 ]
    
    The receiving interface might have used GRO to receive more fragments than
    MAX_SKB_FRAGS fragments. In this case, these will not be stored in
    skb_shinfo(skb)->frags but merged into the frag list.
    
    batman-adv relies on the function skb_split to split packets up into
    multiple smaller packets which are not larger than the MTU on the outgoing
    interface. But this function cannot handle frag_list entries and is only
    operating on skb_shinfo(skb)->frags. If it is still trying to split such an
    skb and xmit'ing it on an interface without support for NETIF_F_FRAGLIST,
    then validate_xmit_skb() will try to linearize it. But this fails due to
    inconsistent information. And __pskb_pull_tail will trigger a BUG_ON after
    skb_copy_bits() returns an error.
    
    In case of entries in frag_list, just linearize the skb before operating on
    it with skb_split().
    
    Reported-by: Felix Kaechele <felix@kaechele.ca>
    Fixes: c6c8fea29769 ("net: Add batman-adv meshing protocol")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Tested-by: Felix Kaechele <felix@kaechele.ca>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>