Skip to content
  1. May 18, 2022
    • Greg Kroah-Hartman's avatar
      Linux 5.4.195 · 0187300e
      Greg Kroah-Hartman authored
      
      
      Link: https://lore.kernel.org/r/20220516193614.714657361@linuxfoundation.org
      Tested-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Tested-by: default avatarShuah Khan <skhan@linuxfoundation.org>
      Tested-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Tested-by: default avatarSudip Mukherjee <sudip.mukherjee@codethink.co.uk>
      Tested-by: default avatarHulk Robot <hulkrobot@huawei.com>
      Tested-by: default avatarLinux Kernel Functional Testing <lkft@linaro.org>
      Tested-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      v5.4.195
      0187300e
    • Yang Yingliang's avatar
      tty/serial: digicolor: fix possible null-ptr-deref in digicolor_uart_probe() · 8fcefb43
      Yang Yingliang authored
      commit 447ee151 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: 5930cb35
      
       ("serial: driver for Conexant Digicolor USART")
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Reviewed-by: default avatarBaruch 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: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8fcefb43
    • Nicolas Dichtel's avatar
      ping: fix address binding wrt vrf · 6d80857c
      Nicolas Dichtel authored
      commit e1a7ac6f 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: 1b69c6d0
      
       ("net: Introduce L3 Master device abstraction")
      Signed-off-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6d80857c
    • Mike Rapoport's avatar
      arm[64]/memremap: don't abuse pfn_valid() to ensure presence of linear map · 7845532a
      Mike Rapoport authored
      commit 260364d1 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 b10d6bca
      
       ("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: default avatarMike Rapoport <rppt@linux.ibm.com>
      Reported-by: default avatar"kernelci.org bot" <bot@kernelci.org>
      Tested-by: default avatarMark Brown <broonie@kernel.org>
      Reviewed-by: default avatarArd Biesheuvel <ardb@kernel.org>
      Acked-by: default avatarCatalin 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: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarMike Rapoport <rppt@linux.ibm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7845532a
    • Francesco Dolcini's avatar
      net: phy: Fix race condition on link status change · c0b735fe
      Francesco Dolcini authored
      commit 91a7cda1 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: c974bdbc
      
       ("net: phy: Use threaded IRQ, to allow IRQ from sleeping devices")
      cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarFrancesco Dolcini <francesco.dolcini@toradex.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Link: https://lore.kernel.org/r/20220506060815.327382-1-francesco.dolcini@toradex.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      [fd: backport: adapt locking before did_interrupt()/ack_interrupt()
       callbacks removal ]
      Signed-off-by: default avatarFrancesco Dolcini <francesco.dolcini@toradex.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c0b735fe
    • Sudip Mukherjee's avatar
      MIPS: fix build with gcc-12 · a60def75
      Sudip Mukherjee authored
      
      
      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: default avatarSudip Mukherjee <sudipm.mukherjee@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a60def75
    • Zack Rusin's avatar
      drm/vmwgfx: Initialize drm_mode_fb_cmd2 · a3112d5d
      Zack Rusin authored
      commit 3059d9b9 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: dabdcdc9
      
       ("drm/vmwgfx: Switch to mode_cmd2")
      Signed-off-by: default avatarZack Rusin <zackr@vmware.com>
      Cc: Daniel Vetter <daniel.vetter@intel.com>
      Cc: <stable@vger.kernel.org> # v4.10+
      Reviewed-by: default avatarMartin Krastev <krastevm@vmware.com>
      Reviewed-by: default avatarMaaz Mombasawala <mombasawalam@vmware.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220302152426.885214-7-zack@kde.org
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a3112d5d
    • Waiman Long's avatar
      cgroup/cpuset: Remove cpus_allowed/mems_allowed setup in cpuset_init_smp() · 463c7431
      Waiman Long authored
      commit 2685027f
      
       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: default avatarWaiman Long <longman@redhat.com>
      Tested-by: default avatarFeng Tang <feng.tang@intel.com>
      Reviewed-by: default avatarMichal Koutný <mkoutny@suse.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      463c7431
    • Xiaomeng Tong's avatar
      i40e: i40e_main: fix a missing check on list iterator · f25145c3
      Xiaomeng Tong authored
      commit 3f95a747 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: 1d8d80b4
      
       ("i40e: Add macvlan support on i40e")
      Signed-off-by: default avatarXiaomeng Tong <xiam0nd.tong@gmail.com>
      Tested-by: Gurucharan <gurucharanx.g@intel.com> (A Contingent worker at Intel)
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      Link: https://lore.kernel.org/r/20220510204846.2166999-1-anthony.l.nguyen@intel.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f25145c3
    • Robin Murphy's avatar
      drm/nouveau/tegra: Stop using iommu_present() · 17c74471
      Robin Murphy authored
      commit 87fd2b09
      
       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: default avatarRobin Murphy <robin.murphy@arm.com>
      Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
      [added cc for stable]
      Signed-off-by: default avatarLyude 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: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      17c74471
    • AngeloGioacchino Del Regno's avatar
      serial: 8250_mtk: Fix register address for XON/XOFF character · c8f567c4
      AngeloGioacchino Del Regno authored
      commit e1bfdbc7 upstream.
      
      The XON1/XOFF1 character registers are at offset 0xa0 and 0xa8
      respectively, so we cannot use the definition in serial_port.h.
      
      Fixes: bdbd0a7f
      
       ("serial: 8250-mtk: modify baudrate setting")
      Signed-off-by: default avatarAngeloGioacchino 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: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c8f567c4
    • AngeloGioacchino Del Regno's avatar
      serial: 8250_mtk: Fix UART_EFR register address · aa3ea745
      AngeloGioacchino Del Regno authored
      commit bb0b197a 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: bdbd0a7f
      
       ("serial: 8250-mtk: modify baudrate setting")
      Signed-off-by: default avatarAngeloGioacchino 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: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      aa3ea745
    • Miaoqian Lin's avatar
      slimbus: qcom: Fix IRQ check in qcom_slim_probe · 031fda28
      Miaoqian Lin authored
      commit fe503887 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: ad7fcbc3
      
       ("slimbus: qcom: Add Qualcomm Slimbus controller driver")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMiaoqian Lin <linmq006@gmail.com>
      Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
      Link: https://lore.kernel.org/r/20220429164917.5202-2-srinivas.kandagatla@linaro.org
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      031fda28
    • Sven Schwermer's avatar
      USB: serial: option: add Fibocom MA510 modem · 7de6f305
      Sven Schwermer authored
      commit 07989eb9
      
       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: default avatarSven Schwermer <sven.schwermer@disruptive-technologies.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7de6f305
    • Sven Schwermer's avatar
      USB: serial: option: add Fibocom L610 modem · 65732f62
      Sven Schwermer authored
      commit 714adff9
      
       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: default avatarSven Schwermer <sven.schwermer@disruptive-technologies.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      65732f62
    • Ethan Yang's avatar
      USB: serial: qcserial: add support for Sierra Wireless EM7590 · 6c78537f
      Ethan Yang authored
      commit 870b1eee
      
       upstream.
      
      Add support for Sierra Wireless EM7590 0xc080/0xc081 compositions.
      
      Signed-off-by: default avatarEthan Yang <etyang@sierrawireless.com>
      Link: https://lore.kernel.org/r/20220425055840.5693-1-etyang@sierrawireless.com
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6c78537f
    • Scott Chen's avatar
      USB: serial: pl2303: add device id for HP LM930 Display · e40d0049
      Scott Chen authored
      commit 26a08f8b
      
       upstream.
      
      Add the device id for the HPLM930Display which is a PL2303GC based
      device.
      
      Signed-off-by: default avatarScott Chen <scott@labau.com.tw>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e40d0049
    • Uwe Kleine-König's avatar
      usb: typec: tcpci: Don't skip cleanup in .remove() on error · 056a56f8
      Uwe Kleine-König authored
      commit bbc126ae 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: 3ba76256
      
       ("usb: typec: tcpci: mask event interrupts when remove driver")
      Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Cc: stable <stable@vger.kernel.org>
      Acked-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
      Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Link: https://lore.kernel.org/r/20220502080456.21568-1-u.kleine-koenig@pengutronix.de
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      056a56f8
    • Sergey Ryazanov's avatar
      usb: cdc-wdm: fix reading stuck on device close · 457d9401
      Sergey Ryazanov authored
      commit 01e01f5c 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: 922a5ead
      
       ("usb: cdc-wdm: Fix race between autosuspend and reading from the device")
      Signed-off-by: default avatarSergey Ryazanov <ryazanov.s.a@gmail.com>
      Cc: stable <stable@vger.kernel.org>
      Acked-by: default avatarOliver Neukum <oneukum@suse.com>
      Link: https://lore.kernel.org/r/20220501175828.8185-1-ryazanov.s.a@gmail.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      457d9401
    • Daniel Starke's avatar
      tty: n_gsm: fix mux activation issues in gsm_config() · 4d93303f
      Daniel Starke authored
      commit edd5f60c 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: e1eaea46
      
       ("tty: n_gsm line discipline")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDaniel Starke <daniel.starke@siemens.com>
      Link: https://lore.kernel.org/r/20220504081733.3494-2-daniel.starke@siemens.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4d93303f
    • Eric Dumazet's avatar
      tcp: resalt the secret every 10 seconds · 6e34ee5b
      Eric Dumazet authored
      [ Upstream commit 4dfa9b43
      
       ]
      
      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: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      6e34ee5b
    • Shravya Kumbham's avatar
      net: emaclite: Don't advertise 1000BASE-T and do auto negotiation · 39c26fe9
      Shravya Kumbham authored
      [ Upstream commit b800528b
      
       ]
      
      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: default avatarShravya Kumbham <shravya.kumbham@xilinx.com>
      Signed-off-by: default avatarRadhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      39c26fe9
    • Sven Schnelle's avatar
      s390: disable -Warray-bounds · 638bfbc8
      Sven Schnelle authored
      [ Upstream commit 8b202ee2
      
       ]
      
      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: default avatarSven 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: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      638bfbc8
    • Mark Brown's avatar
      ASoC: ops: Validate input values in snd_soc_put_volsw_range() · f66d3fa5
      Mark Brown authored
      [ Upstream commit aa22125c
      
       ]
      
      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: default avatarMark Brown <broonie@kernel.org>
      Link: https://lore.kernel.org/r/20220423131239.3375261-1-broonie@kernel.org
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      f66d3fa5
    • Mark Brown's avatar
      ASoC: max98090: Generate notifications on changes for custom control · 13b850a6
      Mark Brown authored
      [ Upstream commit 13fcf676
      
       ]
      
      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: default avatarMark Brown <broonie@kernel.org>
      Link: https://lore.kernel.org/r/20220420193454.2647908-2-broonie@kernel.org
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      13b850a6
    • Mark Brown's avatar
      ASoC: max98090: Reject invalid values in custom control put() · 5c766c00
      Mark Brown authored
      [ Upstream commit 2fbe467b
      
       ]
      
      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: default avatarMark Brown <broonie@kernel.org>
      Link: https://lore.kernel.org/r/20220420193454.2647908-1-broonie@kernel.org
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      5c766c00
    • Ji-Ze Hong (Peter Hong)'s avatar
      hwmon: (f71882fg) Fix negative temperature · 22f6c68b
      Ji-Ze Hong (Peter Hong) authored
      [ Upstream commit 4aaaaf0f
      
       ]
      
      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: default avatarJi-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: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      22f6c68b
    • Andreas Gruenbacher's avatar
      gfs2: Fix filesystem block deallocation for short writes · 208200e5
      Andreas Gruenbacher authored
      [ Upstream commit d031a886 ]
      
      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: 64bc06bb
      
       ("gfs2: iomap buffered write support")
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      208200e5
    • Taehee Yoo's avatar
      net: sfc: ef10: fix memory leak in efx_ef10_mtd_probe() · 42daae7d
      Taehee Yoo authored
      [ Upstream commit 1fa89ffb
      
       ]
      
      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: default avatarMartin Habets <habetsm.xilinx@gmail.com>
      Fixes: 8127d661
      
       ("sfc: Add support for Solarflare SFC9100 family")
      Signed-off-by: default avatarTaehee Yoo <ap420073@gmail.com>
      Link: https://lore.kernel.org/r/20220512054709.12513-1-ap420073@gmail.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      42daae7d
    • Guangguan Wang's avatar
      net/smc: non blocking recvmsg() return -EAGAIN when no data and signal_pending · e038c457
      Guangguan Wang authored
      [ Upstream commit f3c46e41 ]
      
      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: 846e344e
      
       ("net/smc: add receive timeout check")
      Signed-off-by: default avatarGuangguan Wang <guangguan.wang@linux.alibaba.com>
      Reviewed-by: default avatarTony Lu <tonylu@linux.alibaba.com>
      Acked-by: default avatarKarsten Graul <kgraul@linux.ibm.com>
      Link: https://lore.kernel.org/r/20220512030820.73848-1-guangguan.wang@linux.alibaba.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      e038c457
    • Paolo Abeni's avatar
      net/sched: act_pedit: really ensure the skb is writable · 2ec2dd7d
      Paolo Abeni authored
      [ Upstream commit 8b796475 ]
      
      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: db2c2417
      
       ("act_pedit: access skb->data safely")
      Acked-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
      Tested-by: default avatarGeliang Tang <geliang.tang@suse.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Link: https://lore.kernel.org/r/1fcf78e6679d0a287dd61bb0f04730ce33b3255d.1652194627.git.pabeni@redhat.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      2ec2dd7d
    • Alexandra Winter's avatar
      s390/lcs: fix variable dereferenced before check · 48c6a40e
      Alexandra Winter authored
      [ Upstream commit 671bb35c ]
      
      smatch complains about
      drivers/s390/net/lcs.c:1741 lcs_get_control() warn: variable dereferenced before check 'card->dev' (see line 1739)
      
      Fixes: 27eb5ac8
      
       ("[PATCH] s390: lcs driver bug fixes and improvements [1/2]")
      Signed-off-by: default avatarAlexandra Winter <wintera@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      48c6a40e
    • Alexandra Winter's avatar
      s390/ctcm: fix potential memory leak · 467ddbbe
      Alexandra Winter authored
      [ Upstream commit 0c0b2058 ]
      
      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: 293d984f
      
       ("ctcm: infrastructure for replaced ctc driver")
      Signed-off-by: default avatarAlexandra Winter <wintera@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      467ddbbe
    • Alexandra Winter's avatar
      s390/ctcm: fix variable dereferenced before check · 2cbce011
      Alexandra Winter authored
      [ Upstream commit 2c50c686 ]
      
      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: 3c09e264
      
       ("ctcm: rename READ/WRITE defines to avoid redefinitions")
      Reported-by: default avatarColin Ian King <colin.i.king@gmail.com>
      Signed-off-by: default avatarAlexandra Winter <wintera@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      2cbce011
    • Randy Dunlap's avatar
      hwmon: (ltq-cputemp) restrict it to SOC_XWAY · 1c40e85d
      Randy Dunlap authored
      [ Upstream commit 151d6dcb ]
      
      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: 7074d0a9
      
       ("hwmon: (ltq-cputemp) add cpu temp sensor driver")
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Reported-by: default avatarkernel 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: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      1c40e85d
    • Jesse Brandeburg's avatar
      dim: initialize all struct fields · 0a778db9
      Jesse Brandeburg authored
      [ Upstream commit ee1444b5 ]
      
      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: f8be17b8
      
       ("lib/dim: Fix -Wunused-const-variable warnings")
      Signed-off-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
      Link: https://lore.kernel.org/r/20220507011038.14568-1-jesse.brandeburg@intel.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      0a778db9
    • Johannes Berg's avatar
      mac80211_hwsim: call ieee80211_tx_prepare_skb under RCU protection · 522986cc
      Johannes Berg authored
      [ Upstream commit 9e2db50f ]
      
      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: cacfddf8
      
       ("mac80211_hwsim: initialize ieee80211_tx_info at hw_scan_work")
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Link: https://lore.kernel.org/r/20220505230421.5f139f9de173.I77ae111a28f7c0e9fd1ebcee7f39dbec5c606770@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      522986cc
    • Eric Dumazet's avatar
      netlink: do not reset transport header in netlink_recvmsg() · 0729594c
      Eric Dumazet authored
      [ Upstream commit d5076fe4 ]
      
      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: 1da177e4
      
       ("Linux-2.6.12-rc2")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Link: https://lore.kernel.org/r/20220505161946.2867638-1-eric.dumazet@gmail.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      0729594c
    • Christophe JAILLET's avatar
      drm/nouveau: Fix a potential theorical leak in nouveau_get_backlight_name() · 33ce3258
      Christophe JAILLET authored
      [ Upstream commit ab244be4 ]
      
      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: db1a0ae2
      
       ("drm/nouveau/bl: Assign different names to interfaces")
      Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
      Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
      [Fixed formatting warning from checkpatch]
      Signed-off-by: default avatarLyude Paul <lyude@redhat.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/9ba85bca59df6813dc029e743a836451d5173221.1644386541.git.christophe.jaillet@wanadoo.fr
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      33ce3258
    • Lokesh Dhoundiyal's avatar
      ipv4: drop dst in multicast routing path · 5809a1c5
      Lokesh Dhoundiyal authored
      [ Upstream commit 9e6c6d17 ]
      
      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 f38a9eb1 ("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: f38a9eb1
      
       ("dst: Metadata destinations")
      Signed-off-by: default avatarLokesh Dhoundiyal <lokesh.dhoundiyal@alliedtelesis.co.nz>
      Signed-off-by: default avatarChris Packham <chris.packham@alliedtelesis.co.nz>
      Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
      Link: https://lore.kernel.org/r/20220505020017.3111846-1-chris.packham@alliedtelesis.co.nz
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      5809a1c5