Skip to content
  1. Mar 01, 2024
    • Mike Marciniszyn's avatar
      RDMA/irdma: Fix KASAN issue with tasklet · 635d79aa
      Mike Marciniszyn authored
      [ Upstream commit bd97cea7 ]
      
      KASAN testing revealed the following issue assocated with freeing an IRQ.
      
      [50006.466686] Call Trace:
      [50006.466691]  <IRQ>
      [50006.489538]  dump_stack+0x5c/0x80
      [50006.493475]  print_address_description.constprop.6+0x1a/0x150
      [50006.499872]  ? irdma_sc_process_ceq+0x483/0x790 [irdma]
      [50006.505742]  ? irdma_sc_process_ceq+0x483/0x790 [irdma]
      [50006.511644]  kasan_report.cold.11+0x7f/0x118
      [50006.516572]  ? irdma_sc_process_ceq+0x483/0x790 [irdma]
      [50006.522473]  irdma_sc_process_ceq+0x483/0x790 [irdma]
      [50006.528232]  irdma_process_ceq+0xb2/0x400 [irdma]
      [50006.533601]  ? irdma_hw_flush_wqes_callback+0x370/0x370 [irdma]
      [50006.540298]  irdma_ceq_dpc+0x44/0x100 [irdma]
      [50006.545306]  tasklet_action_common.isra.14+0x148/0x2c0
      [50006.551096]  __do_softirq+0x1d0/0xaf8
      [50006.555396]  irq_exit_rcu+0x219/0x260
      [50006.559670]  irq_exit+0xa/0x20
      [50006.563320]  smp_apic_timer_interrupt+0x1bf/0x690
      [50006.568645]  apic_timer_interrupt+0xf/0x20
      [50006.573341]  </IRQ>
      
      The issue is that a tasklet could be pending on another core racing
      the delete of the irq.
      
      Fix by insuring any scheduled tasklet is killed after deleting the
      irq.
      
      Fixes: 44d9e529
      
       ("RDMA/irdma: Implement device initialization definitions")
      Signed-off-by: default avatarMike Marciniszyn <mike.marciniszyn@intel.com>
      Signed-off-by: default avatarShiraz Saleem <shiraz.saleem@intel.com>
      Signed-off-by: default avatarSindhu Devale <sindhu.devale@intel.com>
      Link: https://lore.kernel.org/r/20240131233849.400285-2-sindhu.devale@intel.com
      Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      635d79aa
    • Kalesh AP's avatar
      RDMA/bnxt_re: Return error for SRQ resize · aeb5ac1c
      Kalesh AP authored
      [ Upstream commit 3687b450 ]
      
      SRQ resize is not supported in the driver. But driver is not
      returning error from bnxt_re_modify_srq() for SRQ resize.
      
      Fixes: 37cb11ac
      
       ("RDMA/bnxt_re: Add SRQ support for Broadcom adapters")
      Signed-off-by: default avatarKalesh AP <kalesh-anakkur.purayil@broadcom.com>
      Signed-off-by: default avatarSelvin Xavier <selvin.xavier@broadcom.com>
      Link: https://lore.kernel.org/r/1705985677-15551-5-git-send-email-selvin.xavier@broadcom.com
      Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      aeb5ac1c
    • Zhipeng Lu's avatar
      IB/hfi1: Fix a memleak in init_credit_return · 52de5805
      Zhipeng Lu authored
      [ Upstream commit 809aa64e ]
      
      When dma_alloc_coherent fails to allocate dd->cr_base[i].va,
      init_credit_return should deallocate dd->cr_base and
      dd->cr_base[i] that allocated before. Or those resources
      would be never freed and a memleak is triggered.
      
      Fixes: 77241056
      
       ("IB/hfi1: add driver files")
      Signed-off-by: default avatarZhipeng Lu <alexious@zju.edu.cn>
      Link: https://lore.kernel.org/r/20240112085523.3731720-1-alexious@zju.edu.cn
      Acked-by: default avatarDennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
      Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      52de5805
    • Shyam Prasad N's avatar
      cifs: add a warning when the in-flight count goes negative · 48c63a17
      Shyam Prasad N authored
      [ Upstream commit e4645cc2
      
       ]
      
      We've seen the in-flight count go into negative with some
      internal stress testing in Microsoft.
      
      Adding a WARN when this happens, in hope of understanding
      why this happens when it happens.
      
      Signed-off-by: default avatarShyam Prasad N <sprasad@microsoft.com>
      Reviewed-by: default avatarBharath SM <bharathsm@microsoft.com>
      Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      48c63a17
    • Mathias Nyman's avatar
      xhci: track port suspend state correctly in unsuccessful resume cases · 6538b6d1
      Mathias Nyman authored
      [ Upstream commit d7cdfc31
      
       ]
      
      xhci-hub.c tracks suspended ports in a suspended_port bitfield.
      This is checked when responding to a Get_Status(PORT) request to see if a
      port in running U0 state was recently resumed, and adds the required
      USB_PORT_STAT_C_SUSPEND change bit in those cases.
      
      The suspended_port bit was left uncleared if a device is disconnected
      during suspend. The bit remained set even when a new device was connected
      and enumerated. The set bit resulted in a incorrect Get_Status(PORT)
      response with a bogus USB_PORT_STAT_C_SUSPEND change
      bit set once the new device reached U0 link state.
      
      USB_PORT_STAT_C_SUSPEND change bit is only used for USB2 ports, but
      xhci-hub keeps track of both USB2 and USB3 suspended ports.
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarWesley Cheng <quic_wcheng@quicinc.com>
      Closes: https://lore.kernel.org/linux-usb/d68aa806-b26a-0e43-42fb-b8067325e967@quicinc.com/
      Fixes: 1d5810b6
      
       ("xhci: Rework port suspend structures for limited ports.")
      Tested-by: default avatarWesley Cheng <quic_wcheng@quicinc.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20230915143108.1532163-3-mathias.nyman@linux.intel.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      6538b6d1
    • Mathias Nyman's avatar
      xhci: decouple usb2 port resume and get_port_status request handling · 8839d572
      Mathias Nyman authored
      [ Upstream commit b0425784
      
       ]
      
      The get port status hub request code in xhci-hub.c will complete usb2
      port resume signalling if signalling has been going on for long enough.
      
      The code that completes the resume signalling, and the code that returns
      the port status have gotten too intertwined, so separate them a bit.
      
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20230202150505.618915-12-mathias.nyman@linux.intel.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Stable-dep-of: d7cdfc31
      
       ("xhci: track port suspend state correctly in unsuccessful resume cases")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      8839d572
    • Mathias Nyman's avatar
      xhci: clear usb2 resume related variables in one place. · 8af9de2a
      Mathias Nyman authored
      [ Upstream commit 0e627545
      
       ]
      
      Initially resume related USB2 variables were cleared once port
      successfully resumed to U0. Later code was added to clean up
      stale resume variables in case of port failed to resume to U0.
      
      Clear the variables in one place after port is no longer resuming
      or in suspended U3 state.
      
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20230202150505.618915-11-mathias.nyman@linux.intel.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Stable-dep-of: d7cdfc31
      
       ("xhci: track port suspend state correctly in unsuccessful resume cases")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      8af9de2a
    • Mathias Nyman's avatar
      xhci: rename resume_done to resume_timestamp · a99c8f1a
      Mathias Nyman authored
      [ Upstream commit a909d629
      
       ]
      
      resume_done is just a timestamp, avoid confusing it with completions
      related to port state transitions that are named *_done
      
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20230202150505.618915-10-mathias.nyman@linux.intel.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Stable-dep-of: d7cdfc31
      
       ("xhci: track port suspend state correctly in unsuccessful resume cases")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      a99c8f1a
    • Mathias Nyman's avatar
      xhci: move port specific items such as state completions to port structure · 63f0e79c
      Mathias Nyman authored
      [ Upstream commit 2996e9fc
      
       ]
      
      Now that we have a port structure for each port it makes sense to
      move per port variables, timestamps and completions there.
      Get rid of storing bitfileds and arrays of port specific items per bus.
      
      Move
      unsigned long           resume_done;
      insigned long		rexit_ports
      struct completion       rexit_done;
      struct completion       u3exit_done;
      
      Rename rexit_ports to rexit_active, and remove a redundant hcd
      speed check while checking if rexit_active is set.
      
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20230202150505.618915-8-mathias.nyman@linux.intel.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Stable-dep-of: d7cdfc31
      
       ("xhci: track port suspend state correctly in unsuccessful resume cases")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      63f0e79c
    • Mathias Nyman's avatar
      xhci: cleanup xhci_hub_control port references · ea6c19c7
      Mathias Nyman authored
      [ Upstream commit faaae019
      
       ]
      
      Both port number and port structure of a port are referred to several
      times when handing hub requests in xhci.
      
      Use more suitable data types and readable names for these.
      Cleanup only, no functional changes
      
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20230202150505.618915-6-mathias.nyman@linux.intel.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Stable-dep-of: d7cdfc31
      
       ("xhci: track port suspend state correctly in unsuccessful resume cases")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      ea6c19c7
    • Paul Menzel's avatar
      ACPI: resource: Skip IRQ override on ASUS ExpertBook B1502CBA · 95973afc
      Paul Menzel authored
      [ Upstream commit 05cda427
      
       ]
      
      Like the ASUS ExpertBook B2502CBA and various ASUS Vivobook laptops, the
      ASUS ExpertBook B1502CBA has an ACPI DSDT table that describes IRQ 1 as
      ActiveLow while the kernel overrides it to Edge_High.
      
          $ sudo dmesg | grep DMI
          DMI: ASUSTeK COMPUTER INC. ASUS EXPERTBOOK B1502CBA_B1502CBA/B1502CBA, BIOS B1502CBA.300 01/18/2023
          $ grep -A 40 PS2K dsdt.dsl | grep IRQ -A 1
                          IRQ (Level, ActiveLow, Exclusive, )
                              {1}
      
      This prevents the keyboard from working. To fix this issue, add this laptop
      to the skip_override_table so that the kernel does not override IRQ 1.
      
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=217323
      Signed-off-by: default avatarPaul Menzel <pmenzel@molgen.mpg.de>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      95973afc
    • Tamim Khan's avatar
      ACPI: resource: Skip IRQ override on Asus Expertbook B2402CBA · 4f080b64
      Tamim Khan authored
      [ Upstream commit 77c72488
      
       ]
      
      Like the Asus Expertbook B2502CBA and various Asus Vivobook laptops,
      the Asus Expertbook B2402CBA has an ACPI DSDT table that describes IRQ 1
      as ActiveLow while the kernel overrides it to Edge_High. This prevents the
      keyboard from working. To fix this issue, add this laptop to the
      skip_override_table so that the kernel does not override IRQ 1.
      
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=216864
      Tested-by: default avatarzelenat <zelenat@gmail.com>
      Signed-off-by: default avatarTamim Khan <tamim@fusetak.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      4f080b64
    • Hans de Goede's avatar
      ACPI: resource: Add Asus ExpertBook B2502 to Asus quirks · c2a9376d
      Hans de Goede authored
      [ Upstream commit 7203481f ]
      
      The Asus ExpertBook B2502 has the same keyboard issue as Asus Vivobook
      K3402ZA/K3502ZA. The kernel overrides IRQ 1 to Edge_High when it
      should be Active_Low.
      
      This patch adds the ExpertBook B2502 model to the existing
      quirk list of Asus laptops with this issue.
      
      Fixes: b5f9223a
      
       ("ACPI: resource: Skip IRQ override on Asus Vivobook S5602ZA")
      Link: https://bugzilla.redhat.com/show_bug.cgi?id=2142574
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Stable-dep-of: 77c72488
      
       ("ACPI: resource: Skip IRQ override on Asus Expertbook B2402CBA")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      c2a9376d
    • Tamim Khan's avatar
      ACPI: resource: Skip IRQ override on Asus Vivobook S5602ZA · 1b64ff94
      Tamim Khan authored
      [ Upstream commit b5f9223a
      
       ]
      
      Like the Asus Vivobook K3402ZA/K3502ZA/S5402ZA Asus Vivobook S5602ZA
      has an ACPI DSDT table the describes IRQ 1 as ActiveLow while the kernel
      overrides it to Edge_High. This prevents the keyboard on this laptop
      from working. To fix this add this laptop to the skip_override_table so
      that the kernel does not override IRQ 1.
      
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=216579
      Tested-by: default avatarDzmitry <wrkedm@gmail.com>
      Signed-off-by: default avatarTamim Khan <tamim@fusetak.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      1b64ff94
    • Kellen Renshaw's avatar
      ACPI: resource: Add ASUS model S5402ZA to quirks · f3607954
      Kellen Renshaw authored
      [ Upstream commit 6e5cbe7c
      
       ]
      
      The Asus Vivobook S5402ZA has the same keyboard issue as Asus Vivobook
      K3402ZA/K3502ZA. The kernel overrides IRQ 1 to Edge_High when it
      should be Active_Low.
      
      This patch adds the S5402ZA model to the quirk list.
      
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=216158
      Tested-by: default avatarKellen Renshaw <kellen.renshaw@canonical.com>
      Signed-off-by: default avatarKellen Renshaw <kellen.renshaw@canonical.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      f3607954
    • Hans de Goede's avatar
      ACPI: video: Add backlight=native DMI quirk for Apple iMac12,1 and iMac12,2 · 27e99d78
      Hans de Goede authored
      [ Upstream commit 8cf04bb3
      
       ]
      
      Linux defaults to picking the non-working ACPI video backlight interface
      on the Apple iMac12,1 and iMac12,2.
      
      Add a DMI quirk to pick the working native radeon_bl0 interface instead.
      
      Link: https://gitlab.freedesktop.org/drm/amd/-/issues/1838
      Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2753
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      27e99d78
    • Rafał Miłecki's avatar
      ARM: dts: BCM53573: Describe on-SoC BCM53125 rev 4 switch · cb1003c0
      Rafał Miłecki authored
      [ Upstream commit 9fb90ae6
      
       ]
      
      BCM53573 family SoC have Ethernet switch connected to the first Ethernet
      controller (accessible over MDIO).
      
      Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      cb1003c0
    • Alex Bee's avatar
      arm64: dts: rockchip: add SPDIF node for ROCK Pi 4 · 28e5e3e5
      Alex Bee authored
      [ Upstream commit 697dd494
      
       ]
      
      Add a SPDIF audio-graph-card to ROCK Pi 4 device tree.
      
      It's not enabled by default since all dma channels are used by
      the (already) enabled i2s0/1/2 and the pin is muxed with GPIO4_C5
      which might be in use already.
      If enabled SPDIF_TX will be available at pin #15.
      
      Signed-off-by: default avatarAlex Bee <knaerzche@gmail.com>
      Link: https://lore.kernel.org/r/20210618181256.27992-6-knaerzche@gmail.com
      Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      28e5e3e5
    • Alex Bee's avatar
      arm64: dts: rockchip: add ES8316 codec for ROCK Pi 4 · 99c8b2e9
      Alex Bee authored
      [ Upstream commit 65bd2b8b
      
       ]
      
      ROCK Pi 4 boards have the codec connected to i2s0 and it is accessible
      via i2c1 address 0x11.
      Add an audio-graph-card for it.
      
      Signed-off-by: default avatarAlex Bee <knaerzche@gmail.com>
      Link: https://lore.kernel.org/r/20210618181256.27992-5-knaerzche@gmail.com
      Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      99c8b2e9
    • FUKAUMI Naoki's avatar
      arm64: dts: rockchip: fix regulator name on rk3399-rock-4 · 371036bf
      FUKAUMI Naoki authored
      [ Upstream commit 69448624
      
       ]
      
      fix regulator name
      
      ref:
       https://dl.radxa.com/rockpi4/docs/hw/rockpi4/rockpi4_v13_sch_20181112.pdf
      
      Signed-off-by: default avatarFUKAUMI Naoki <naoki@radxa.com>
      Link: https://lore.kernel.org/r/20220909195006.127957-4-naoki@radxa.com
      Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      371036bf
    • Yuezhang Mo's avatar
      exfat: support dynamic allocate bh for exfat_entry_set_cache · 92dcd7d6
      Yuezhang Mo authored
      [ Upstream commit a3ff29a9
      
       ]
      
      In special cases, a file or a directory may occupied more than 19
      directory entries, pre-allocating 3 bh is not enough. Such as
        - Support vendor secondary directory entry in the future.
        - Since file directory entry is damaged, the SecondaryCount
          field is bigger than 18.
      
      So this commit supports dynamic allocation of bh.
      
      Signed-off-by: default avatarYuezhang Mo <Yuezhang.Mo@sony.com>
      Reviewed-by: default avatarAndy Wu <Andy.Wu@sony.com>
      Reviewed-by: default avatarAoyama Wataru <wataru.aoyama@sony.com>
      Reviewed-by: default avatarSungjong Seo <sj1557.seo@samsung.com>
      Signed-off-by: default avatarNamjae Jeon <linkinjeon@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      92dcd7d6
    • Johannes Berg's avatar
      wifi: iwlwifi: mvm: avoid baid size integer overflow · b4dc693b
      Johannes Berg authored
      [ Upstream commit 1a528ab1
      
       ]
      
      Roee reported various hard-to-debug crashes with pings in
      EHT aggregation scenarios. Enabling KASAN showed that we
      access the BAID allocation out of bounds, and looking at
      the code a bit shows that since the reorder buffer entry
      (struct iwl_mvm_reorder_buf_entry) is 128 bytes if debug
      such as lockdep is enabled, then staring from an agg size
      512 we overflow the size calculation, and allocate a much
      smaller structure than we should, causing slab corruption
      once we initialize this.
      
      Fix this by simply using u32 instead of u16.
      
      Reported-by: default avatarRoee Goldfiner <roee.h.goldfiner@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarGregory Greenman <gregory.greenman@intel.com>
      Link: https://lore.kernel.org/r/20230620125813.f428c856030d.I2c2bb808e945adb71bc15f5b2bac2d8957ea90eb@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      b4dc693b
    • Ying Hsu's avatar
      igb: Fix igb_down hung on surprise removal · fa92c463
      Ying Hsu authored
      [ Upstream commit 004d2506
      
       ]
      
      In a setup where a Thunderbolt hub connects to Ethernet and a display
      through USB Type-C, users may experience a hung task timeout when they
      remove the cable between the PC and the Thunderbolt hub.
      This is because the igb_down function is called multiple times when
      the Thunderbolt hub is unplugged. For example, the igb_io_error_detected
      triggers the first call, and the igb_remove triggers the second call.
      The second call to igb_down will block at napi_synchronize.
      Here's the call trace:
          __schedule+0x3b0/0xddb
          ? __mod_timer+0x164/0x5d3
          schedule+0x44/0xa8
          schedule_timeout+0xb2/0x2a4
          ? run_local_timers+0x4e/0x4e
          msleep+0x31/0x38
          igb_down+0x12c/0x22a [igb 6615058754948bfde0bf01429257eb59f13030d4]
          __igb_close+0x6f/0x9c [igb 6615058754948bfde0bf01429257eb59f13030d4]
          igb_close+0x23/0x2b [igb 6615058754948bfde0bf01429257eb59f13030d4]
          __dev_close_many+0x95/0xec
          dev_close_many+0x6e/0x103
          unregister_netdevice_many+0x105/0x5b1
          unregister_netdevice_queue+0xc2/0x10d
          unregister_netdev+0x1c/0x23
          igb_remove+0xa7/0x11c [igb 6615058754948bfde0bf01429257eb59f13030d4]
          pci_device_remove+0x3f/0x9c
          device_release_driver_internal+0xfe/0x1b4
          pci_stop_bus_device+0x5b/0x7f
          pci_stop_bus_device+0x30/0x7f
          pci_stop_bus_device+0x30/0x7f
          pci_stop_and_remove_bus_device+0x12/0x19
          pciehp_unconfigure_device+0x76/0xe9
          pciehp_disable_slot+0x6e/0x131
          pciehp_handle_presence_or_link_change+0x7a/0x3f7
          pciehp_ist+0xbe/0x194
          irq_thread_fn+0x22/0x4d
          ? irq_thread+0x1fd/0x1fd
          irq_thread+0x17b/0x1fd
          ? irq_forced_thread_fn+0x5f/0x5f
          kthread+0x142/0x153
          ? __irq_get_irqchip_state+0x46/0x46
          ? kthread_associate_blkcg+0x71/0x71
          ret_from_fork+0x1f/0x30
      
      In this case, igb_io_error_detected detaches the network interface
      and requests a PCIE slot reset, however, the PCIE reset callback is
      not being invoked and thus the Ethernet connection breaks down.
      As the PCIE error in this case is a non-fatal one, requesting a
      slot reset can be avoided.
      This patch fixes the task hung issue and preserves Ethernet
      connection by ignoring non-fatal PCIE errors.
      
      Signed-off-by: default avatarYing Hsu <yinghsu@chromium.org>
      Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Link: https://lore.kernel.org/r/20230620174732.4145155-1-anthony.l.nguyen@intel.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      fa92c463
    • Gustavo A. R. Silva's avatar
      wifi: wext-core: Fix -Wstringop-overflow warning in ioctl_standard_iw_point() · 16f65377
      Gustavo A. R. Silva authored
      [ Upstream commit 71e7552c
      
       ]
      
      -Wstringop-overflow is legitimately warning us about extra_size
      pontentially being zero at some point, hence potenially ending
      up _allocating_ zero bytes of memory for extra pointer and then
      trying to access such object in a call to copy_from_user().
      
      Fix this by adding a sanity check to ensure we never end up
      trying to allocate zero bytes of data for extra pointer, before
      continue executing the rest of the code in the function.
      
      Address the following -Wstringop-overflow warning seen when built
      m68k architecture with allyesconfig configuration:
                       from net/wireless/wext-core.c:11:
      In function '_copy_from_user',
          inlined from 'copy_from_user' at include/linux/uaccess.h:183:7,
          inlined from 'ioctl_standard_iw_point' at net/wireless/wext-core.c:825:7:
      arch/m68k/include/asm/string.h:48:25: warning: '__builtin_memset' writing 1 or more bytes into a region of size 0 overflows the destination [-Wstringop-overflow=]
         48 | #define memset(d, c, n) __builtin_memset(d, c, n)
            |                         ^~~~~~~~~~~~~~~~~~~~~~~~~
      include/linux/uaccess.h:153:17: note: in expansion of macro 'memset'
        153 |                 memset(to + (n - res), 0, res);
            |                 ^~~~~~
      In function 'kmalloc',
          inlined from 'kzalloc' at include/linux/slab.h:694:9,
          inlined from 'ioctl_standard_iw_point' at net/wireless/wext-core.c:819:10:
      include/linux/slab.h:577:16: note: at offset 1 into destination object of size 0 allocated by '__kmalloc'
        577 |         return __kmalloc(size, flags);
            |                ^~~~~~~~~~~~~~~~~~~~~~
      
      This help with the ongoing efforts to globally enable
      -Wstringop-overflow.
      
      Link: https://github.com/KSPP/linux/issues/315
      Signed-off-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Link: https://lore.kernel.org/r/ZItSlzvIpjdjNfd8@work
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      16f65377
    • Petr Oros's avatar
      devlink: report devlink_port_type_warn source device · 7552020e
      Petr Oros authored
      [ Upstream commit a52305a8
      
       ]
      
      devlink_port_type_warn is scheduled for port devlink and warning
      when the port type is not set. But from this warning it is not easy
      found out which device (driver) has no devlink port set.
      
      [ 3709.975552] Type was not set for devlink port.
      [ 3709.975579] WARNING: CPU: 1 PID: 13092 at net/devlink/leftover.c:6775 devlink_port_type_warn+0x11/0x20
      [ 3709.993967] Modules linked in: openvswitch nf_conncount nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nfnetlink bluetooth rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace fscache netfs vhost_net vhost vhost_iotlb tap tun bridge stp llc qrtr intel_rapl_msr intel_rapl_common i10nm_edac nfit libnvdimm x86_pkg_temp_thermal mlx5_ib intel_powerclamp coretemp dell_wmi ledtrig_audio sparse_keymap ipmi_ssif kvm_intel ib_uverbs rfkill ib_core video kvm iTCO_wdt acpi_ipmi intel_vsec irqbypass ipmi_si iTCO_vendor_support dcdbas ipmi_devintf mei_me ipmi_msghandler rapl mei intel_cstate isst_if_mmio isst_if_mbox_pci dell_smbios intel_uncore isst_if_common i2c_i801 dell_wmi_descriptor wmi_bmof i2c_smbus intel_pch_thermal pcspkr acpi_power_meter xfs libcrc32c sd_mod sg nvme_tcp mgag200 i2c_algo_bit nvme_fabrics drm_shmem_helper drm_kms_helper nvme syscopyarea ahci sysfillrect sysimgblt nvme_core fb_sys_fops crct10dif_pclmul libahci mlx5_core sfc crc32_pclmul nvme_common drm
      [ 3709.994030]  crc32c_intel mtd t10_pi mlxfw libata tg3 mdio megaraid_sas psample ghash_clmulni_intel pci_hyperv_intf wmi dm_multipath sunrpc dm_mirror dm_region_hash dm_log dm_mod be2iscsi bnx2i cnic uio cxgb4i cxgb4 tls libcxgbi libcxgb qla4xxx iscsi_boot_sysfs iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi fuse
      [ 3710.108431] CPU: 1 PID: 13092 Comm: kworker/1:1 Kdump: loaded Not tainted 5.14.0-319.el9.x86_64 #1
      [ 3710.108435] Hardware name: Dell Inc. PowerEdge R750/0PJ80M, BIOS 1.8.2 09/14/2022
      [ 3710.108437] Workqueue: events devlink_port_type_warn
      [ 3710.108440] RIP: 0010:devlink_port_type_warn+0x11/0x20
      [ 3710.108443] Code: 84 76 fe ff ff 48 c7 03 20 0e 1a ad 31 c0 e9 96 fd ff ff 66 0f 1f 44 00 00 0f 1f 44 00 00 48 c7 c7 18 24 4e ad e8 ef 71 62 ff <0f> 0b c3 cc cc cc cc 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 f6 87
      [ 3710.108445] RSP: 0018:ff3b6d2e8b3c7e90 EFLAGS: 00010282
      [ 3710.108447] RAX: 0000000000000000 RBX: ff366d6580127080 RCX: 0000000000000027
      [ 3710.108448] RDX: 0000000000000027 RSI: 00000000ffff86de RDI: ff366d753f41f8c8
      [ 3710.108449] RBP: ff366d658ff5a0c0 R08: ff366d753f41f8c0 R09: ff3b6d2e8b3c7e18
      [ 3710.108450] R10: 0000000000000001 R11: 0000000000000023 R12: ff366d753f430600
      [ 3710.108451] R13: ff366d753f436900 R14: 0000000000000000 R15: ff366d753f436905
      [ 3710.108452] FS:  0000000000000000(0000) GS:ff366d753f400000(0000) knlGS:0000000000000000
      [ 3710.108453] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [ 3710.108454] CR2: 00007f1c57bc74e0 CR3: 000000111d26a001 CR4: 0000000000773ee0
      [ 3710.108456] PKRU: 55555554
      [ 3710.108457] Call Trace:
      [ 3710.108458]  <TASK>
      [ 3710.108459]  process_one_work+0x1e2/0x3b0
      [ 3710.108466]  ? rescuer_thread+0x390/0x390
      [ 3710.108468]  worker_thread+0x50/0x3a0
      [ 3710.108471]  ? rescuer_thread+0x390/0x390
      [ 3710.108473]  kthread+0xdd/0x100
      [ 3710.108477]  ? kthread_complete_and_exit+0x20/0x20
      [ 3710.108479]  ret_from_fork+0x1f/0x30
      [ 3710.108485]  </TASK>
      [ 3710.108486] ---[ end trace 1b4b23cd0c65d6a0 ]---
      
      After patch:
      [  402.473064] ice 0000:41:00.0: Type was not set for devlink port.
      [  402.473064] ice 0000:41:00.1: Type was not set for devlink port.
      
      Signed-off-by: default avatarPetr Oros <poros@redhat.com>
      Reviewed-by: default avatarPavan Chebbi <pavan.chebbi@broadcom.com>
      Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
      Link: https://lore.kernel.org/r/20230615095447.8259-1-poros@redhat.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      7552020e
    • Martin KaFai Lau's avatar
      bpf: Address KCSAN report on bpf_lru_list · 819ca254
      Martin KaFai Lau authored
      [ Upstream commit ee9fd0ac
      
       ]
      
      KCSAN reported a data-race when accessing node->ref.
      Although node->ref does not have to be accurate,
      take this chance to use a more common READ_ONCE() and WRITE_ONCE()
      pattern instead of data_race().
      
      There is an existing bpf_lru_node_is_ref() and bpf_lru_node_set_ref().
      This patch also adds bpf_lru_node_clear_ref() to do the
      WRITE_ONCE(node->ref, 0) also.
      
      ==================================================================
      BUG: KCSAN: data-race in __bpf_lru_list_rotate / __htab_lru_percpu_map_update_elem
      
      write to 0xffff888137038deb of 1 bytes by task 11240 on cpu 1:
      __bpf_lru_node_move kernel/bpf/bpf_lru_list.c:113 [inline]
      __bpf_lru_list_rotate_active kernel/bpf/bpf_lru_list.c:149 [inline]
      __bpf_lru_list_rotate+0x1bf/0x750 kernel/bpf/bpf_lru_list.c:240
      bpf_lru_list_pop_free_to_local kernel/bpf/bpf_lru_list.c:329 [inline]
      bpf_common_lru_pop_free kernel/bpf/bpf_lru_list.c:447 [inline]
      bpf_lru_pop_free+0x638/0xe20 kernel/bpf/bpf_lru_list.c:499
      prealloc_lru_pop kernel/bpf/hashtab.c:290 [inline]
      __htab_lru_percpu_map_update_elem+0xe7/0x820 kernel/bpf/hashtab.c:1316
      bpf_percpu_hash_update+0x5e/0x90 kernel/bpf/hashtab.c:2313
      bpf_map_update_value+0x2a9/0x370 kernel/bpf/syscall.c:200
      generic_map_update_batch+0x3ae/0x4f0 kernel/bpf/syscall.c:1687
      bpf_map_do_batch+0x2d9/0x3d0 kernel/bpf/syscall.c:4534
      __sys_bpf+0x338/0x810
      __do_sys_bpf kernel/bpf/syscall.c:5096 [inline]
      __se_sys_bpf kernel/bpf/syscall.c:5094 [inline]
      __x64_sys_bpf+0x43/0x50 kernel/bpf/syscall.c:5094
      do_syscall_x64 arch/x86/entry/common.c:50 [inline]
      do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
      entry_SYSCALL_64_after_hwframe+0x63/0xcd
      
      read to 0xffff888137038deb of 1 bytes by task 11241 on cpu 0:
      bpf_lru_node_set_ref kernel/bpf/bpf_lru_list.h:70 [inline]
      __htab_lru_percpu_map_update_elem+0x2f1/0x820 kernel/bpf/hashtab.c:1332
      bpf_percpu_hash_update+0x5e/0x90 kernel/bpf/hashtab.c:2313
      bpf_map_update_value+0x2a9/0x370 kernel/bpf/syscall.c:200
      generic_map_update_batch+0x3ae/0x4f0 kernel/bpf/syscall.c:1687
      bpf_map_do_batch+0x2d9/0x3d0 kernel/bpf/syscall.c:4534
      __sys_bpf+0x338/0x810
      __do_sys_bpf kernel/bpf/syscall.c:5096 [inline]
      __se_sys_bpf kernel/bpf/syscall.c:5094 [inline]
      __x64_sys_bpf+0x43/0x50 kernel/bpf/syscall.c:5094
      do_syscall_x64 arch/x86/entry/common.c:50 [inline]
      do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
      entry_SYSCALL_64_after_hwframe+0x63/0xcd
      
      value changed: 0x01 -> 0x00
      
      Reported by Kernel Concurrency Sanitizer on:
      CPU: 0 PID: 11241 Comm: syz-executor.3 Not tainted 6.3.0-rc7-syzkaller-00136-g6a66fdd29ea1 #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/30/2023
      ==================================================================
      
      Reported-by: default avatar <syzbot+ebe648a84e8784763f82@syzkaller.appspotmail.com>
      Signed-off-by: default avatarMartin KaFai Lau <martin.lau@kernel.org>
      Acked-by: default avatarYonghong Song <yhs@fb.com>
      Link: https://lore.kernel.org/r/20230511043748.1384166-1-martin.lau@linux.dev
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      819ca254
    • Maxime Bizon's avatar
      wifi: ath11k: fix registration of 6Ghz-only phy without the full channel range · f9783262
      Maxime Bizon authored
      [ Upstream commit e2ceb1de
      
       ]
      
      Because of what seems to be a typo, a 6Ghz-only phy for which the BDF
      does not allow the 7115Mhz channel will fail to register:
      
        WARNING: CPU: 2 PID: 106 at net/wireless/core.c:907 wiphy_register+0x914/0x954
        Modules linked in: ath11k_pci sbsa_gwdt
        CPU: 2 PID: 106 Comm: kworker/u8:5 Not tainted 6.3.0-rc7-next-20230418-00549-g1e096a17625a-dirty #9
        Hardware name: Freebox V7R Board (DT)
        Workqueue: ath11k_qmi_driver_event ath11k_qmi_driver_event_work
        pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
        pc : wiphy_register+0x914/0x954
        lr : ieee80211_register_hw+0x67c/0xc10
        sp : ffffff800b123aa0
        x29: ffffff800b123aa0 x28: 0000000000000000 x27: 0000000000000000
        x26: 0000000000000000 x25: 0000000000000006 x24: ffffffc008d51418
        x23: ffffffc008cb0838 x22: ffffff80176c2460 x21: 0000000000000168
        x20: ffffff80176c0000 x19: ffffff80176c03e0 x18: 0000000000000014
        x17: 00000000cbef338c x16: 00000000d2a26f21 x15: 00000000ad6bb85f
        x14: 0000000000000020 x13: 0000000000000020 x12: 00000000ffffffbd
        x11: 0000000000000208 x10: 00000000fffffdf7 x9 : ffffffc009394718
        x8 : ffffff80176c0528 x7 : 000000007fffffff x6 : 0000000000000006
        x5 : 0000000000000005 x4 : ffffff800b304284 x3 : ffffff800b304284
        x2 : ffffff800b304d98 x1 : 0000000000000000 x0 : 0000000000000000
        Call trace:
         wiphy_register+0x914/0x954
         ieee80211_register_hw+0x67c/0xc10
         ath11k_mac_register+0x7c4/0xe10
         ath11k_core_qmi_firmware_ready+0x1f4/0x570
         ath11k_qmi_driver_event_work+0x198/0x590
         process_one_work+0x1b8/0x328
         worker_thread+0x6c/0x414
         kthread+0x100/0x104
         ret_from_fork+0x10/0x20
        ---[ end trace 0000000000000000 ]---
        ath11k_pci 0002:01:00.0: ieee80211 registration failed: -22
        ath11k_pci 0002:01:00.0: failed register the radio with mac80211: -22
        ath11k_pci 0002:01:00.0: failed to create pdev core: -22
      
      Signed-off-by: default avatarMaxime Bizon <mbizon@freebox.fr>
      Signed-off-by: default avatarKalle Valo <quic_kvalo@quicinc.com>
      Link: https://lore.kernel.org/r/20230421145445.2612280-1-mbizon@freebox.fr
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      f9783262
    • Yicong Yang's avatar
      sched/fair: Don't balance task to its current running CPU · 3cb43222
      Yicong Yang authored
      [ Upstream commit 0dd37d6d
      
       ]
      
      We've run into the case that the balancer tries to balance a migration
      disabled task and trigger the warning in set_task_cpu() like below:
      
       ------------[ cut here ]------------
       WARNING: CPU: 7 PID: 0 at kernel/sched/core.c:3115 set_task_cpu+0x188/0x240
       Modules linked in: hclgevf xt_CHECKSUM ipt_REJECT nf_reject_ipv4 <...snip>
       CPU: 7 PID: 0 Comm: swapper/7 Kdump: loaded Tainted: G           O       6.1.0-rc4+ #1
       Hardware name: Huawei TaiShan 2280 V2/BC82AMDC, BIOS 2280-V2 CS V5.B221.01 12/09/2021
       pstate: 604000c9 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
       pc : set_task_cpu+0x188/0x240
       lr : load_balance+0x5d0/0xc60
       sp : ffff80000803bc70
       x29: ffff80000803bc70 x28: ffff004089e190e8 x27: ffff004089e19040
       x26: ffff007effcabc38 x25: 0000000000000000 x24: 0000000000000001
       x23: ffff80000803be84 x22: 000000000000000c x21: ffffb093e79e2a78
       x20: 000000000000000c x19: ffff004089e19040 x18: 0000000000000000
       x17: 0000000000001fad x16: 0000000000000030 x15: 0000000000000000
       x14: 0000000000000003 x13: 0000000000000000 x12: 0000000000000000
       x11: 0000000000000001 x10: 0000000000000400 x9 : ffffb093e4cee530
       x8 : 00000000fffffffe x7 : 0000000000ce168a x6 : 000000000000013e
       x5 : 00000000ffffffe1 x4 : 0000000000000001 x3 : 0000000000000b2a
       x2 : 0000000000000b2a x1 : ffffb093e6d6c510 x0 : 0000000000000001
       Call trace:
        set_task_cpu+0x188/0x240
        load_balance+0x5d0/0xc60
        rebalance_domains+0x26c/0x380
        _nohz_idle_balance.isra.0+0x1e0/0x370
        run_rebalance_domains+0x6c/0x80
        __do_softirq+0x128/0x3d8
        ____do_softirq+0x18/0x24
        call_on_irq_stack+0x2c/0x38
        do_softirq_own_stack+0x24/0x3c
        __irq_exit_rcu+0xcc/0xf4
        irq_exit_rcu+0x18/0x24
        el1_interrupt+0x4c/0xe4
        el1h_64_irq_handler+0x18/0x2c
        el1h_64_irq+0x74/0x78
        arch_cpu_idle+0x18/0x4c
        default_idle_call+0x58/0x194
        do_idle+0x244/0x2b0
        cpu_startup_entry+0x30/0x3c
        secondary_start_kernel+0x14c/0x190
        __secondary_switched+0xb0/0xb4
       ---[ end trace 0000000000000000 ]---
      
      Further investigation shows that the warning is superfluous, the migration
      disabled task is just going to be migrated to its current running CPU.
      This is because that on load balance if the dst_cpu is not allowed by the
      task, we'll re-select a new_dst_cpu as a candidate. If no task can be
      balanced to dst_cpu we'll try to balance the task to the new_dst_cpu
      instead. In this case when the migration disabled task is not on CPU it
      only allows to run on its current CPU, load balance will select its
      current CPU as new_dst_cpu and later triggers the warning above.
      
      The new_dst_cpu is chosen from the env->dst_grpmask. Currently it
      contains CPUs in sched_group_span() and if we have overlapped groups it's
      possible to run into this case. This patch makes env->dst_grpmask of
      group_balance_mask() which exclude any CPUs from the busiest group and
      solve the issue. For balancing in a domain with no overlapped groups
      the behaviour keeps same as before.
      
      Suggested-by: default avatarVincent Guittot <vincent.guittot@linaro.org>
      Signed-off-by: default avatarYicong Yang <yangyicong@hisilicon.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Reviewed-by: default avatarVincent Guittot <vincent.guittot@linaro.org>
      Link: https://lore.kernel.org/r/20230530082507.10444-1-yangyicong@huawei.com
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      3cb43222
    • Mark Rutland's avatar
      arm64: mm: fix VA-range sanity check · 621619f6
      Mark Rutland authored
      [ Upstream commit ab9b4008 ]
      
      Both create_mapping_noalloc() and update_mapping_prot() sanity-check
      their 'virt' parameter, but the check itself doesn't make much sense.
      The condition used today appears to be a historical accident.
      
      The sanity-check condition:
      
      	if ((virt >= PAGE_END) && (virt < VMALLOC_START)) {
      		[ ... warning here ... ]
      		return;
      	}
      
      ... can only be true for the KASAN shadow region or the module region,
      and there's no reason to exclude these specifically for creating and
      updateing mappings.
      
      When arm64 support was first upstreamed in commit:
      
        c1cc1552 ("arm64: MMU initialisation")
      
      ... the condition was:
      
      	if (virt < VMALLOC_START) {
      		[ ... warning here ... ]
      		return;
      	}
      
      At the time, VMALLOC_START was the lowest kernel address, and this was
      checking whether 'virt' would be translated via TTBR1.
      
      Subsequently in commit:
      
        14c127c9 ("arm64: mm: Flip kernel VA space")
      
      ... the condition was changed to:
      
      	if ((virt >= VA_START) && (virt < VMALLOC_START)) {
      		[ ... warning here ... ]
      		return;
      	}
      
      This appear to have been a thinko. The commit moved the linear map to
      the bottom of the kernel address space, with VMALLOC_START being at the
      halfway point. The old condition would warn for changes to the linear
      map below this, and at the time VA_START was the end of the linear map.
      
      Subsequently we cleaned up the naming of VA_START in commit:
      
        77ad4ce6
      
       ("arm64: memory: rename VA_START to PAGE_END")
      
      ... keeping the erroneous condition as:
      
      	if ((virt >= PAGE_END) && (virt < VMALLOC_START)) {
      		[ ... warning here ... ]
      		return;
      	}
      
      Correct the condition to check against the start of the TTBR1 address
      space, which is currently PAGE_OFFSET. This simplifies the logic, and
      more clearly matches the "outside kernel range" message in the warning.
      
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Cc: Russell King <linux@armlinux.org.uk>
      Cc: Steve Capper <steve.capper@arm.com>
      Cc: Will Deacon <will@kernel.org>
      Reviewed-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      Link: https://lore.kernel.org/r/20230615102628.1052103-1-mark.rutland@arm.com
      Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      621619f6
    • Youngmin Nam's avatar
      arm64: set __exception_irq_entry with __irq_entry as a default · 0bd309f2
      Youngmin Nam authored
      [ Upstream commit f6794950
      
       ]
      
      filter_irq_stacks() is supposed to cut entries which are related irq entries
      from its call stack.
      And in_irqentry_text() which is called by filter_irq_stacks()
      uses __irqentry_text_start/end symbol to find irq entries in callstack.
      
      But it doesn't work correctly as without "CONFIG_FUNCTION_GRAPH_TRACER",
      arm64 kernel doesn't include gic_handle_irq which is entry point of arm64 irq
      between __irqentry_text_start and __irqentry_text_end as we discussed in below link.
      https://lore.kernel.org/all/CACT4Y+aReMGLYua2rCLHgFpS9io5cZC04Q8GLs-uNmrn1ezxYQ@mail.gmail.com/#t
      
      This problem can makes unintentional deep call stack entries especially
      in KASAN enabled situation as below.
      
      [ 2479.383395]I[0:launcher-loader: 1719] Stack depot reached limit capacity
      [ 2479.383538]I[0:launcher-loader: 1719] WARNING: CPU: 0 PID: 1719 at lib/stackdepot.c:129 __stack_depot_save+0x464/0x46c
      [ 2479.385693]I[0:launcher-loader: 1719] pstate: 624000c5 (nZCv daIF +PAN -UAO +TCO -DIT -SSBS BTYPE=--)
      [ 2479.385724]I[0:launcher-loader: 1719] pc : __stack_depot_save+0x464/0x46c
      [ 2479.385751]I[0:launcher-loader: 1719] lr : __stack_depot_save+0x460/0x46c
      [ 2479.385774]I[0:launcher-loader: 1719] sp : ffffffc0080073c0
      [ 2479.385793]I[0:launcher-loader: 1719] x29: ffffffc0080073e0 x28: ffffffd00b78a000 x27: 0000000000000000
      [ 2479.385839]I[0:launcher-loader: 1719] x26: 000000000004d1dd x25: ffffff891474f000 x24: 00000000ca64d1dd
      [ 2479.385882]I[0:launcher-loader: 1719] x23: 0000000000000200 x22: 0000000000000220 x21: 0000000000000040
      [ 2479.385925]I[0:launcher-loader: 1719] x20: ffffffc008007440 x19: 0000000000000000 x18: 0000000000000000
      [ 2479.385969]I[0:launcher-loader: 1719] x17: 2065726568207475 x16: 000000000000005e x15: 2d2d2d2d2d2d2d20
      [ 2479.386013]I[0:launcher-loader: 1719] x14: 5d39313731203a72 x13: 00000000002f6b30 x12: 00000000002f6af8
      [ 2479.386057]I[0:launcher-loader: 1719] x11: 00000000ffffffff x10: ffffffb90aacf000 x9 : e8a74a6c16008800
      [ 2479.386101]I[0:launcher-loader: 1719] x8 : e8a74a6c16008800 x7 : 00000000002f6b30 x6 : 00000000002f6af8
      [ 2479.386145]I[0:launcher-loader: 1719] x5 : ffffffc0080070c8 x4 : ffffffd00b192380 x3 : ffffffd0092b313c
      [ 2479.386189]I[0:launcher-loader: 1719] x2 : 0000000000000001 x1 : 0000000000000004 x0 : 0000000000000022
      [ 2479.386231]I[0:launcher-loader: 1719] Call trace:
      [ 2479.386248]I[0:launcher-loader: 1719]  __stack_depot_save+0x464/0x46c
      [ 2479.386273]I[0:launcher-loader: 1719]  kasan_save_stack+0x58/0x70
      [ 2479.386303]I[0:launcher-loader: 1719]  save_stack_info+0x34/0x138
      [ 2479.386331]I[0:launcher-loader: 1719]  kasan_save_free_info+0x18/0x24
      [ 2479.386358]I[0:launcher-loader: 1719]  ____kasan_slab_free+0x16c/0x170
      [ 2479.386385]I[0:launcher-loader: 1719]  __kasan_slab_free+0x10/0x20
      [ 2479.386410]I[0:launcher-loader: 1719]  kmem_cache_free+0x238/0x53c
      [ 2479.386435]I[0:launcher-loader: 1719]  mempool_free_slab+0x1c/0x28
      [ 2479.386460]I[0:launcher-loader: 1719]  mempool_free+0x7c/0x1a0
      [ 2479.386484]I[0:launcher-loader: 1719]  bvec_free+0x34/0x80
      [ 2479.386514]I[0:launcher-loader: 1719]  bio_free+0x60/0x98
      [ 2479.386540]I[0:launcher-loader: 1719]  bio_put+0x50/0x21c
      [ 2479.386567]I[0:launcher-loader: 1719]  f2fs_write_end_io+0x4ac/0x4d0
      [ 2479.386594]I[0:launcher-loader: 1719]  bio_endio+0x2dc/0x300
      [ 2479.386622]I[0:launcher-loader: 1719]  __dm_io_complete+0x324/0x37c
      [ 2479.386650]I[0:launcher-loader: 1719]  dm_io_dec_pending+0x60/0xa4
      [ 2479.386676]I[0:launcher-loader: 1719]  clone_endio+0xf8/0x2f0
      [ 2479.386700]I[0:launcher-loader: 1719]  bio_endio+0x2dc/0x300
      [ 2479.386727]I[0:launcher-loader: 1719]  blk_update_request+0x258/0x63c
      [ 2479.386754]I[0:launcher-loader: 1719]  scsi_end_request+0x50/0x304
      [ 2479.386782]I[0:launcher-loader: 1719]  scsi_io_completion+0x88/0x160
      [ 2479.386808]I[0:launcher-loader: 1719]  scsi_finish_command+0x17c/0x194
      [ 2479.386833]I[0:launcher-loader: 1719]  scsi_complete+0xcc/0x158
      [ 2479.386859]I[0:launcher-loader: 1719]  blk_mq_complete_request+0x4c/0x5c
      [ 2479.386885]I[0:launcher-loader: 1719]  scsi_done_internal+0xf4/0x1e0
      [ 2479.386910]I[0:launcher-loader: 1719]  scsi_done+0x14/0x20
      [ 2479.386935]I[0:launcher-loader: 1719]  ufshcd_compl_one_cqe+0x578/0x71c
      [ 2479.386963]I[0:launcher-loader: 1719]  ufshcd_mcq_poll_cqe_nolock+0xc8/0x150
      [ 2479.386991]I[0:launcher-loader: 1719]  ufshcd_intr+0x868/0xc0c
      [ 2479.387017]I[0:launcher-loader: 1719]  __handle_irq_event_percpu+0xd0/0x348
      [ 2479.387044]I[0:launcher-loader: 1719]  handle_irq_event_percpu+0x24/0x74
      [ 2479.387068]I[0:launcher-loader: 1719]  handle_irq_event+0x74/0xe0
      [ 2479.387091]I[0:launcher-loader: 1719]  handle_fasteoi_irq+0x174/0x240
      [ 2479.387118]I[0:launcher-loader: 1719]  handle_irq_desc+0x7c/0x2c0
      [ 2479.387147]I[0:launcher-loader: 1719]  generic_handle_domain_irq+0x1c/0x28
      [ 2479.387174]I[0:launcher-loader: 1719]  gic_handle_irq+0x64/0x158
      [ 2479.387204]I[0:launcher-loader: 1719]  call_on_irq_stack+0x2c/0x54
      [ 2479.387231]I[0:launcher-loader: 1719]  do_interrupt_handler+0x70/0xa0
      [ 2479.387258]I[0:launcher-loader: 1719]  el1_interrupt+0x34/0x68
      [ 2479.387283]I[0:launcher-loader: 1719]  el1h_64_irq_handler+0x18/0x24
      [ 2479.387308]I[0:launcher-loader: 1719]  el1h_64_irq+0x68/0x6c
      [ 2479.387332]I[0:launcher-loader: 1719]  blk_attempt_bio_merge+0x8/0x170
      [ 2479.387356]I[0:launcher-loader: 1719]  blk_mq_attempt_bio_merge+0x78/0x98
      [ 2479.387383]I[0:launcher-loader: 1719]  blk_mq_submit_bio+0x324/0xa40
      [ 2479.387409]I[0:launcher-loader: 1719]  __submit_bio+0x104/0x138
      [ 2479.387436]I[0:launcher-loader: 1719]  submit_bio_noacct_nocheck+0x1d0/0x4a0
      [ 2479.387462]I[0:launcher-loader: 1719]  submit_bio_noacct+0x618/0x804
      [ 2479.387487]I[0:launcher-loader: 1719]  submit_bio+0x164/0x180
      [ 2479.387511]I[0:launcher-loader: 1719]  f2fs_submit_read_bio+0xe4/0x1c4
      [ 2479.387537]I[0:launcher-loader: 1719]  f2fs_mpage_readpages+0x888/0xa4c
      [ 2479.387563]I[0:launcher-loader: 1719]  f2fs_readahead+0xd4/0x19c
      [ 2479.387587]I[0:launcher-loader: 1719]  read_pages+0xb0/0x4ac
      [ 2479.387614]I[0:launcher-loader: 1719]  page_cache_ra_unbounded+0x238/0x288
      [ 2479.387642]I[0:launcher-loader: 1719]  do_page_cache_ra+0x60/0x6c
      [ 2479.387669]I[0:launcher-loader: 1719]  page_cache_ra_order+0x318/0x364
      [ 2479.387695]I[0:launcher-loader: 1719]  ondemand_readahead+0x30c/0x3d8
      [ 2479.387722]I[0:launcher-loader: 1719]  page_cache_sync_ra+0xb4/0xc8
      [ 2479.387749]I[0:launcher-loader: 1719]  filemap_read+0x268/0xd24
      [ 2479.387777]I[0:launcher-loader: 1719]  f2fs_file_read_iter+0x1a0/0x62c
      [ 2479.387806]I[0:launcher-loader: 1719]  vfs_read+0x258/0x34c
      [ 2479.387831]I[0:launcher-loader: 1719]  ksys_pread64+0x8c/0xd0
      [ 2479.387857]I[0:launcher-loader: 1719]  __arm64_sys_pread64+0x48/0x54
      [ 2479.387881]I[0:launcher-loader: 1719]  invoke_syscall+0x58/0x158
      [ 2479.387909]I[0:launcher-loader: 1719]  el0_svc_common+0xf0/0x134
      [ 2479.387935]I[0:launcher-loader: 1719]  do_el0_svc+0x44/0x114
      [ 2479.387961]I[0:launcher-loader: 1719]  el0_svc+0x2c/0x80
      [ 2479.387985]I[0:launcher-loader: 1719]  el0t_64_sync_handler+0x48/0x114
      [ 2479.388010]I[0:launcher-loader: 1719]  el0t_64_sync+0x190/0x194
      [ 2479.388038]I[0:launcher-loader: 1719] Kernel panic - not syncing: kernel: panic_on_warn set ...
      
      So let's set __exception_irq_entry with __irq_entry as a default.
      Applying this patch, we can see gic_hande_irq is included in Systemp.map as below.
      
      * Before
      ffffffc008010000 T __do_softirq
      ffffffc008010000 T __irqentry_text_end
      ffffffc008010000 T __irqentry_text_start
      ffffffc008010000 T __softirqentry_text_start
      ffffffc008010000 T _stext
      ffffffc00801066c T __softirqentry_text_end
      ffffffc008010670 T __entry_text_start
      
      * After
      ffffffc008010000 T __irqentry_text_start
      ffffffc008010000 T _stext
      ffffffc008010000 t gic_handle_irq
      ffffffc00801013c t gic_handle_irq
      ffffffc008010294 T __irqentry_text_end
      ffffffc008010298 T __do_softirq
      ffffffc008010298 T __softirqentry_text_start
      ffffffc008010904 T __softirqentry_text_end
      ffffffc008010908 T __entry_text_start
      
      Signed-off-by: default avatarYoungmin Nam <youngmin.nam@samsung.com>
      Signed-off-by: default avatarSEO HOYOUNG <hy50.seo@samsung.com>
      Reviewed-by: default avatarMark Rutland <mark.rutland@arm.com>
      Link: https://lore.kernel.org/r/20230424010436.779733-1-youngmin.nam@samsung.com
      Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      0bd309f2
    • Hans de Goede's avatar
      ACPI: video: Add backlight=native DMI quirk for Lenovo ThinkPad X131e (3371 AMD version) · dd0802f0
      Hans de Goede authored
      [ Upstream commit bd5d93df
      
       ]
      
      Linux defaults to picking the non-working ACPI video backlight interface
      on the Lenovo ThinkPad X131e (3371 AMD version).
      
      Add a DMI quirk to pick the working native radeon_bl0 interface instead.
      
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      dd0802f0
    • Hans de Goede's avatar
      ACPI: video: Add backlight=native DMI quirk for Apple iMac11,3 · 3cc2d66b
      Hans de Goede authored
      [ Upstream commit 48436f2e
      
       ]
      
      Linux defaults to picking the non-working ACPI video backlight interface
      on the Apple iMac11,3 .
      
      Add a DMI quirk to pick the working native radeon_bl0 interface instead.
      
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Stable-dep-of: bd5d93df
      
       ("ACPI: video: Add backlight=native DMI quirk for Lenovo ThinkPad X131e (3371 AMD version)")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      3cc2d66b
    • Hans de Goede's avatar
      ACPI: button: Add lid disable DMI quirk for Nextbook Ares 8A · 54da51be
      Hans de Goede authored
      [ Upstream commit 4fd55566
      
       ]
      
      The LID0 device on the Nextbook Ares 8A tablet always reports lid
      closed causing userspace to suspend the device as soon as booting
      is complete.
      
      Add a DMI quirk to disable the broken lid functionality.
      
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      54da51be
    • David Sterba's avatar
      btrfs: add xxhash to fast checksum implementations · fa33b705
      David Sterba authored
      [ Upstream commit efcfcbc6
      
       ]
      
      The implementation of XXHASH is now CPU only but still fast enough to be
      considered for the synchronous checksumming, like non-generic crc32c.
      
      A userspace benchmark comparing it to various implementations (patched
      hash-speedtest from btrfs-progs):
      
        Block size:     4096
        Iterations:     1000000
        Implementation: builtin
        Units:          CPU cycles
      
      	NULL-NOP: cycles:     73384294, cycles/i       73
           NULL-MEMCPY: cycles:    228033868, cycles/i      228,    61664.320 MiB/s
            CRC32C-ref: cycles:  24758559416, cycles/i    24758,      567.950 MiB/s
             CRC32C-NI: cycles:   1194350470, cycles/i     1194,    11773.433 MiB/s
        CRC32C-ADLERSW: cycles:   6150186216, cycles/i     6150,     2286.372 MiB/s
        CRC32C-ADLERHW: cycles:    626979180, cycles/i      626,    22427.453 MiB/s
            CRC32C-PCL: cycles:    466746732, cycles/i      466,    30126.699 MiB/s
      	  XXHASH: cycles:    860656400, cycles/i      860,    16338.188 MiB/s
      
      Comparing purely software implementation (ref), current outdated
      accelerated using crc32q instruction (NI), optimized implementations by
      M. Adler (https://stackoverflow.com/questions/17645167/implementing-sse-4-2s-crc32c-in-software/17646775#17646775)
      and the best one that was taken from kernel using the PCLMULQDQ
      instruction (PCL).
      
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      fa33b705
    • Thomas Gleixner's avatar
      posix-timers: Ensure timer ID search-loop limit is valid · ef535e03
      Thomas Gleixner authored
      [ Upstream commit 8ce8849d
      
       ]
      
      posix_timer_add() tries to allocate a posix timer ID by starting from the
      cached ID which was stored by the last successful allocation.
      
      This is done in a loop searching the ID space for a free slot one by
      one. The loop has to terminate when the search wrapped around to the
      starting point.
      
      But that's racy vs. establishing the starting point. That is read out
      lockless, which leads to the following problem:
      
      CPU0	  	      	     	   CPU1
      posix_timer_add()
        start = sig->posix_timer_id;
        lock(hash_lock);
        ...				   posix_timer_add()
        if (++sig->posix_timer_id < 0)
            			             start = sig->posix_timer_id;
           sig->posix_timer_id = 0;
      
      So CPU1 can observe a negative start value, i.e. -1, and the loop break
      never happens because the condition can never be true:
      
        if (sig->posix_timer_id == start)
           break;
      
      While this is unlikely to ever turn into an endless loop as the ID space is
      huge (INT_MAX), the racy read of the start value caught the attention of
      KCSAN and Dmitry unearthed that incorrectness.
      
      Rewrite it so that all id operations are under the hash lock.
      
      Reported-by: default avatar <syzbot+5c54bd3eb218bb595aa9@syzkaller.appspotmail.com>
      Reported-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Reviewed-by: default avatarFrederic Weisbecker <frederic@kernel.org>
      Link: https://lore.kernel.org/r/87bkhzdn6g.ffs@tglx
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      ef535e03
    • Yu Kuai's avatar
      md/raid10: prevent soft lockup while flush writes · 84a57896
      Yu Kuai authored
      [ Upstream commit 01044462
      
       ]
      
      Currently, there is no limit for raid1/raid10 plugged bio. While flushing
      writes, raid1 has cond_resched() while raid10 doesn't, and too many
      writes can cause soft lockup.
      
      Follow up soft lockup can be triggered easily with writeback test for
      raid10 with ramdisks:
      
      watchdog: BUG: soft lockup - CPU#10 stuck for 27s! [md0_raid10:1293]
      Call Trace:
       <TASK>
       call_rcu+0x16/0x20
       put_object+0x41/0x80
       __delete_object+0x50/0x90
       delete_object_full+0x2b/0x40
       kmemleak_free+0x46/0xa0
       slab_free_freelist_hook.constprop.0+0xed/0x1a0
       kmem_cache_free+0xfd/0x300
       mempool_free_slab+0x1f/0x30
       mempool_free+0x3a/0x100
       bio_free+0x59/0x80
       bio_put+0xcf/0x2c0
       free_r10bio+0xbf/0xf0
       raid_end_bio_io+0x78/0xb0
       one_write_done+0x8a/0xa0
       raid10_end_write_request+0x1b4/0x430
       bio_endio+0x175/0x320
       brd_submit_bio+0x3b9/0x9b7 [brd]
       __submit_bio+0x69/0xe0
       submit_bio_noacct_nocheck+0x1e6/0x5a0
       submit_bio_noacct+0x38c/0x7e0
       flush_pending_writes+0xf0/0x240
       raid10d+0xac/0x1ed0
      
      Fix the problem by adding cond_resched() to raid10 like what raid1 did.
      
      Note that unlimited plugged bio still need to be optimized, for example,
      in the case of lots of dirty pages writeback, this will take lots of
      memory and io will spend a long time in plug, hence io latency is bad.
      
      Signed-off-by: default avatarYu Kuai <yukuai3@huawei.com>
      Signed-off-by: default avatarSong Liu <song@kernel.org>
      Link: https://lore.kernel.org/r/20230529131106.2123367-2-yukuai1@huaweicloud.com
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      84a57896
    • Yu Kuai's avatar
      md: fix data corruption for raid456 when reshape restart while grow up · 6b03364b
      Yu Kuai authored
      [ Upstream commit 873f50ec
      
       ]
      
      Currently, if reshape is interrupted, echo "reshape" to sync_action will
      restart reshape from scratch, for example:
      
      echo frozen > sync_action
      echo reshape > sync_action
      
      This will corrupt data before reshape_position if the array is growing,
      fix the problem by continue reshape from reshape_position.
      
      Reported-by: default avatarPeter Neuwirth <reddunur@online.de>
      Link: https://lore.kernel.org/linux-raid/e2f96772-bfbc-f43b-6da1-f520e5164536@online.de/
      Signed-off-by: default avatarYu Kuai <yukuai3@huawei.com>
      Signed-off-by: default avatarSong Liu <song@kernel.org>
      Link: https://lore.kernel.org/r/20230512015610.821290-3-yukuai1@huaweicloud.com
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      6b03364b
    • Zhong Jinghua's avatar
      nbd: Add the maximum limit of allocated index in nbd_dev_add · 638eaac3
      Zhong Jinghua authored
      [ Upstream commit f12bc113
      
       ]
      
      If the index allocated by idr_alloc greater than MINORMASK >> part_shift,
      the device number will overflow, resulting in failure to create a block
      device.
      
      Fix it by imiting the size of the max allocation.
      
      Signed-off-by: default avatarZhong Jinghua <zhongjinghua@huawei.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Link: https://lore.kernel.org/r/20230605122159.2134384-1-zhongjinghua@huaweicloud.com
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      638eaac3
    • Tetsuo Handa's avatar
      debugobjects: Recheck debug_objects_enabled before reporting · 173e1910
      Tetsuo Handa authored
      [ Upstream commit 8b64d420
      
       ]
      
      syzbot is reporting false a positive ODEBUG message immediately after
      ODEBUG was disabled due to OOM.
      
        [ 1062.309646][T22911] ODEBUG: Out of memory. ODEBUG disabled
        [ 1062.886755][ T5171] ------------[ cut here ]------------
        [ 1062.892770][ T5171] ODEBUG: assert_init not available (active state 0) object: ffffc900056afb20 object type: timer_list hint: process_timeout+0x0/0x40
      
        CPU 0 [ T5171]                CPU 1 [T22911]
        --------------                --------------
        debug_object_assert_init() {
          if (!debug_objects_enabled)
            return;
          db = get_bucket(addr);
                                      lookup_object_or_alloc() {
                                        debug_objects_enabled = 0;
                                        return NULL;
                                      }
                                      debug_objects_oom() {
                                        pr_warn("Out of memory. ODEBUG disabled\n");
                                        // all buckets get emptied here, and
                                      }
          lookup_object_or_alloc(addr, db, descr, false, true) {
            // this bucket is already empty.
            return ERR_PTR(-ENOENT);
          }
          // Emits false positive warning.
          debug_print_object(&o, "assert_init");
        }
      
      Recheck debug_object_enabled in debug_print_object() to avoid that.
      
      Reported-by: default avatarsyzbot <syzbot+7937ba6a50bdd00fffdf@syzkaller.appspotmail.com>
      Suggested-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Link: https://lore.kernel.org/r/492fe2ae-5141-d548-ebd5-62f5fe2e57f7@I-love.SAKURA.ne.jp
      Closes: https://syzkaller.appspot.com/bug?extid=7937ba6a50bdd00fffdf
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      173e1910
    • Florian Westphal's avatar
      netfilter: nf_tables: add rescheduling points during loop detection walks · de2efb42
      Florian Westphal authored
      [ Upstream commit 81ea0106
      
       ]
      
      Add explicit rescheduling points during ruleset walk.
      
      Switching to a faster algorithm is possible but this is a much
      smaller change, suitable for nf tree.
      
      Link: https://bugzilla.netfilter.org/show_bug.cgi?id=1460
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      Acked-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      de2efb42