Skip to content
  1. Dec 14, 2023
    • Shigeru Yoshida's avatar
      ipv4: ip_gre: Avoid skb_pull() failure in ipgre_xmit() · 1ec21fde
      Shigeru Yoshida authored
      [ Upstream commit 80d875cf ]
      
      In ipgre_xmit(), skb_pull() may fail even if pskb_inet_may_pull() returns
      true. For example, applications can use PF_PACKET to create a malformed
      packet with no IP header. This type of packet causes a problem such as
      uninit-value access.
      
      This patch ensures that skb_pull() can pull the required size by checking
      the skb with pskb_network_may_pull() before skb_pull().
      
      Fixes: c5441932
      
       ("GRE: Refactor GRE tunneling code.")
      Signed-off-by: default avatarShigeru Yoshida <syoshida@redhat.com>
      Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
      Reviewed-by: default avatarSuman Ghosh <sumang@marvell.com>
      Link: https://lore.kernel.org/r/20231202161441.221135-1-syoshida@redhat.com
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      1ec21fde
    • Thomas Reichinger's avatar
      arcnet: restoring support for multiple Sohard Arcnet cards · e38cd534
      Thomas Reichinger authored
      [ Upstream commit 6b17a597 ]
      
      Probe of Sohard Arcnet cards fails,
      if 2 or more cards are installed in a system.
      See kernel log:
      [    2.759203] arcnet: arcnet loaded
      [    2.763648] arcnet:com20020: COM20020 chipset support (by David Woodhouse et al.)
      [    2.770585] arcnet:com20020_pci: COM20020 PCI support
      [    2.772295] com20020 0000:02:00.0: enabling device (0000 -> 0003)
      [    2.772354] (unnamed net_device) (uninitialized): PLX-PCI Controls
      ...
      [    3.071301] com20020 0000:02:00.0 arc0-0 (uninitialized): PCI COM20020: station FFh found at F080h, IRQ 101.
      [    3.071305] com20020 0000:02:00.0 arc0-0 (uninitialized): Using CKP 64 - data rate 2.5 Mb/s
      [    3.071534] com20020 0000:07:00.0: enabling device (0000 -> 0003)
      [    3.071581] (unnamed net_device) (uninitialized): PLX-PCI Controls
      ...
      [    3.369501] com20020 0000:07:00.0: Led pci:green:tx:0-0 renamed to pci:green:tx:0-0_1 due to name collision
      [    3.369535] com20020 0000:07:00.0: Led pci:red:recon:0-0 renamed to pci:red:recon:0-0_1 due to name collision
      [    3.370586] com20020 0000:07:00.0 arc0-0 (uninitialized): PCI COM20020: station E1h found at C000h, IRQ 35.
      [    3.370589] com20020 0000:07:00.0 arc0-0 (uninitialized): Using CKP 64 - data rate 2.5 Mb/s
      [    3.370608] com20020: probe of 0000:07:00.0 failed with error -5
      
      commit 5ef216c1
      
       ("arcnet: com20020-pci: add rotary index support")
      changes the device name of all COM20020 based PCI cards,
      even if only some cards support this:
      	snprintf(dev->name, sizeof(dev->name), "arc%d-%d", dev->dev_id, i);
      
      The error happens because all Sohard Arcnet cards would be called arc0-0,
      since the Sohard Arcnet cards don't have a PLX rotary coder.
      I.e. EAE Arcnet cards have a PLX rotary coder,
      which sets the first decimal, ensuring unique devices names.
      
      This patch adds two new card feature flags to indicate
      which cards support LEDs and the PLX rotary coder.
      For EAE based cards the names still depend on the PLX rotary coder
      (untested, since missing EAE hardware).
      For Sohard based cards, this patch will result in devices
      being called arc0, arc1, ... (tested).
      
      Signed-off-by: default avatarThomas Reichinger <thomas.reichinger@sohard.de>
      Fixes: 5ef216c1
      
       ("arcnet: com20020-pci: add rotary index support")
      Link: https://lore.kernel.org/r/20231130113503.6812-1-thomas.reichinger@sohard.de
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      e38cd534
    • Tong Zhang's avatar
      net: arcnet: com20020 fix error handling · f2654673
      Tong Zhang authored
      [ Upstream commit 6577b9a5
      
       ]
      
      There are two issues when handling error case in com20020pci_probe()
      
      1. priv might be not initialized yet when calling com20020pci_remove()
      from com20020pci_probe(), since the priv is set at the very last but it
      can jump to error handling in the middle and priv remains NULL.
      2. memory leak - the net device is allocated in alloc_arcdev but not
      properly released if error happens in the middle of the big for loop
      
      [    1.529110] BUG: kernel NULL pointer dereference, address: 0000000000000008
      [    1.531447] RIP: 0010:com20020pci_remove+0x15/0x60 [com20020_pci]
      [    1.536805] Call Trace:
      [    1.536939]  com20020pci_probe+0x3f2/0x48c [com20020_pci]
      [    1.537226]  local_pci_probe+0x48/0x80
      [    1.539918]  com20020pci_init+0x3f/0x1000 [com20020_pci]
      
      Signed-off-by: default avatarTong Zhang <ztong0001@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Stable-dep-of: 6b17a597
      
       ("arcnet: restoring support for multiple Sohard Arcnet cards")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      f2654673
    • Ahmed S. Darwish's avatar
      net: arcnet: Fix RESET flag handling · d124c182
      Ahmed S. Darwish authored
      [ Upstream commit 01365633
      
       ]
      
      The main arcnet interrupt handler calls arcnet_close() then
      arcnet_open(), if the RESET status flag is encountered.
      
      This is invalid:
      
        1) In general, interrupt handlers should never call ->ndo_stop() and
           ->ndo_open() functions. They are usually full of blocking calls and
           other methods that are expected to be called only from drivers
           init and exit code paths.
      
        2) arcnet_close() contains a del_timer_sync(). If the irq handler
           interrupts the to-be-deleted timer, del_timer_sync() will just loop
           forever.
      
        3) arcnet_close() also calls tasklet_kill(), which has a warning if
           called from irq context.
      
        4) For device reset, the sequence "arcnet_close(); arcnet_open();" is
           not complete.  Some children arcnet drivers have special init/exit
           code sequences, which then embed a call to arcnet_open() and
           arcnet_close() accordingly. Check drivers/net/arcnet/com20020.c.
      
      Run the device RESET sequence from a scheduled workqueue instead.
      
      Signed-off-by: default avatarAhmed S. Darwish <a.darwish@linutronix.de>
      Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Link: https://lore.kernel.org/r/20210128194802.727770-1-a.darwish@linutronix.de
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Stable-dep-of: 6b17a597
      
       ("arcnet: restoring support for multiple Sohard Arcnet cards")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      d124c182
    • Randy Dunlap's avatar
      hv_netvsc: rndis_filter needs to select NLS · 9f5a25aa
      Randy Dunlap authored
      [ Upstream commit 6c89f499 ]
      
      rndis_filter uses utf8s_to_utf16s() which is provided by setting
      NLS, so select NLS to fix the build error:
      
      ERROR: modpost: "utf8s_to_utf16s" [drivers/net/hyperv/hv_netvsc.ko] undefined!
      
      Fixes: 1ce09e89
      
       ("hyperv: Add support for setting MAC from within guests")
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Cc: Haiyang Zhang <haiyangz@microsoft.com>
      Cc: K. Y. Srinivasan <kys@microsoft.com>
      Cc: Wei Liu <wei.liu@kernel.org>
      Cc: Dexuan Cui <decui@microsoft.com>
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      Tested-by: Simon Horman <horms@kernel.org> # build-tested
      Reviewed-by: default avatarMichael Kelley <mikelley@microsoft.com>
      Link: https://lore.kernel.org/r/20231130055853.19069-1-rdunlap@infradead.org
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      9f5a25aa
    • Eric Dumazet's avatar
      ipv6: fix potential NULL deref in fib6_add() · be1ab8bf
      Eric Dumazet authored
      [ Upstream commit 75475bb5 ]
      
      If fib6_find_prefix() returns NULL, we should silently fallback
      using fib6_null_entry regardless of RT6_DEBUG value.
      
      syzbot reported:
      
      WARNING: CPU: 0 PID: 5477 at net/ipv6/ip6_fib.c:1516 fib6_add+0x310d/0x3fa0 net/ipv6/ip6_fib.c:1516
      Modules linked in:
      CPU: 0 PID: 5477 Comm: syz-executor.0 Not tainted 6.7.0-rc2-syzkaller-00029-g9b6de136b5f0 #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/10/2023
      RIP: 0010:fib6_add+0x310d/0x3fa0 net/ipv6/ip6_fib.c:1516
      Code: 00 48 8b 54 24 68 e8 42 22 00 00 48 85 c0 74 14 49 89 c6 e8 d5 d3 c2 f7 eb 5d e8 ce d3 c2 f7 e9 ca 00 00 00 e8 c4 d3 c2 f7 90 <0f> 0b 90 48 b8 00 00 00 00 00 fc ff df 48 8b 4c 24 38 80 3c 01 00
      RSP: 0018:ffffc90005067740 EFLAGS: 00010293
      RAX: ffffffff89cba5bc RBX: ffffc90005067ab0 RCX: ffff88801a2e9dc0
      RDX: 0000000000000000 RSI: 0000000000000001 RDI: 0000000000000000
      RBP: ffffc90005067980 R08: ffffffff89cbca85 R09: 1ffff110040d4b85
      R10: dffffc0000000000 R11: ffffed10040d4b86 R12: 00000000ffffffff
      R13: 1ffff110051c3904 R14: ffff8880206a5c00 R15: ffff888028e1c820
      FS: 00007f763783c6c0(0000) GS:ffff8880b9800000(0000) knlGS:0000000000000000
      CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f763783bff8 CR3: 000000007f74d000 CR4: 00000000003506f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
      <TASK>
      __ip6_ins_rt net/ipv6/route.c:1303 [inline]
      ip6_route_add+0x88/0x120 net/ipv6/route.c:3847
      ipv6_route_ioctl+0x525/0x7b0 net/ipv6/route.c:4467
      inet6_ioctl+0x21a/0x270 net/ipv6/af_inet6.c:575
      sock_do_ioctl+0x152/0x460 net/socket.c:1220
      sock_ioctl+0x615/0x8c0 net/socket.c:1339
      vfs_ioctl fs/ioctl.c:51 [inline]
      __do_sys_ioctl fs/ioctl.c:871 [inline]
      __se_sys_ioctl+0xf8/0x170 fs/ioctl.c:857
      do_syscall_x64 arch/x86/entry/common.c:51 [inline]
      do_syscall_64+0x45/0x110 arch/x86/entry/common.c:82
      
      Fixes: 7bbfe00e
      
       ("ipv6: fix general protection fault in fib6_add()")
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Wei Wang <weiwan@google.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
      Link: https://lore.kernel.org/r/20231129160630.3509216-1-edumazet@google.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      be1ab8bf
    • Luca Ceresoli's avatar
      of: dynamic: Fix of_reconfig_get_state_change() return value documentation · 5cd05bba
      Luca Ceresoli authored
      [ Upstream commit d7997278 ]
      
      The documented numeric return values do not match the actual returned
      values. Fix them by using the enum names instead of raw numbers.
      
      Fixes: b53a2340
      
       ("of/reconfig: Add of_reconfig_get_state_change() of notifier helper.")
      Signed-off-by: default avatarLuca Ceresoli <luca.ceresoli@bootlin.com>
      Link: https://lore.kernel.org/r/20231123-fix-of_reconfig_get_state_change-docs-v1-1-f51892050ff9@bootlin.com
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      5cd05bba
    • Rob Herring's avatar
      of: Add missing 'Return' section in kerneldoc comments · 5cadae62
      Rob Herring authored
      [ Upstream commit 8c8239c2
      
       ]
      
      Many of the DT kerneldoc comments are lacking a 'Return' section. Let's
      add the section in cases we have a description of return values. There's
      still some cases where the return values are not documented.
      
      Cc: Frank Rowand <frowand.list@gmail.com>
      Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      Reviewed-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      Link: https://lore.kernel.org/r/20210325164713.1296407-8-robh@kernel.org
      Stable-dep-of: d7997278
      
       ("of: dynamic: Fix of_reconfig_get_state_change() return value documentation")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      5cadae62
    • Rob Herring's avatar
      of: Fix kerneldoc output formatting · b31cb14c
      Rob Herring authored
      [ Upstream commit 62f026f0
      
       ]
      
      The indentation of the kerneldoc comments affects the output formatting.
      Leading tabs in particular don't work, sections need to be indented
      under the section header, and several code blocks are reformatted.
      
      Cc: Frank Rowand <frowand.list@gmail.com>
      Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      Reviewed-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      Link: https://lore.kernel.org/r/20210326192606.3702739-1-robh@kernel.org
      Stable-dep-of: d7997278
      
       ("of: dynamic: Fix of_reconfig_get_state_change() return value documentation")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      b31cb14c
    • Lee Jones's avatar
      of: base: Fix some formatting issues and provide missing descriptions · 36ce931a
      Lee Jones authored
      [ Upstream commit 3637d49e
      
       ]
      
      Fixes the following W=1 kernel build warning(s):
      
       drivers/of/base.c:315: warning: Function parameter or member 'cpun' not described in '__of_find_n_match_cpu_property'
       drivers/of/base.c:315: warning: Function parameter or member 'prop_name' not described in '__of_find_n_match_cpu_property'
       drivers/of/base.c:315: warning: Function parameter or member 'cpu' not described in '__of_find_n_match_cpu_property'
       drivers/of/base.c:315: warning: Function parameter or member 'thread' not described in '__of_find_n_match_cpu_property'
       drivers/of/base.c:315: warning: expecting prototype for property holds the physical id of the(). Prototype was for __of_find_n_match_cpu_property() instead
       drivers/of/base.c:1139: warning: Function parameter or member 'match' not described in 'of_find_matching_node_and_match'
       drivers/of/base.c:1779: warning: Function parameter or member 'np' not described in '__of_add_property'
       drivers/of/base.c:1779: warning: Function parameter or member 'prop' not described in '__of_add_property'
       drivers/of/base.c:1800: warning: Function parameter or member 'np' not described in 'of_add_property'
       drivers/of/base.c:1800: warning: Function parameter or member 'prop' not described in 'of_add_property'
       drivers/of/base.c:1849: warning: Function parameter or member 'np' not described in 'of_remove_property'
       drivers/of/base.c:1849: warning: Function parameter or member 'prop' not described in 'of_remove_property'
       drivers/of/base.c:2137: warning: Function parameter or member 'dn' not described in 'of_console_check'
       drivers/of/base.c:2137: warning: Function parameter or member 'name' not described in 'of_console_check'
       drivers/of/base.c:2137: warning: Function parameter or member 'index' not described in 'of_console_check'
      
      Cc: Rob Herring <robh+dt@kernel.org>
      Cc: Frank Rowand <frowand.list@gmail.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: devicetree@vger.kernel.org
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      Link: https://lore.kernel.org/r/20210318104036.3175910-5-lee.jones@linaro.org
      Stable-dep-of: d7997278
      
       ("of: dynamic: Fix of_reconfig_get_state_change() return value documentation")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      36ce931a
    • Lorenzo Pieralisi's avatar
      of/irq: Make of_msi_map_rid() PCI bus agnostic · 8c4fcbe2
      Lorenzo Pieralisi authored
      [ Upstream commit 2bcdd8f2
      
       ]
      
      There is nothing PCI bus specific in the of_msi_map_rid()
      implementation other than the requester ID tag for the input
      ID space. Rename requester ID to a more generic ID so that
      the translation code can be used by all busses that require
      input/output ID translations.
      
      No functional change intended.
      
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Rob Herring <robh+dt@kernel.org>
      Cc: Marc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20200619082013.13661-11-lorenzo.pieralisi@arm.com
      Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Stable-dep-of: d7997278
      
       ("of: dynamic: Fix of_reconfig_get_state_change() return value documentation")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      8c4fcbe2
    • Diana Craciun's avatar
      of/irq: make of_msi_map_get_device_domain() bus agnostic · ae374c57
      Diana Craciun authored
      [ Upstream commit 6f881aba
      
       ]
      
      of_msi_map_get_device_domain() is PCI specific but it need not be and
      can be easily changed to be bus agnostic in order to be used by other
      busses by adding an IRQ domain bus token as an input parameter.
      
      Signed-off-by: default avatarDiana Craciun <diana.craciun@oss.nxp.com>
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Acked-by: Bjorn Helgaas <bhelgaas@google.com>   # pci/msi.c
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Rob Herring <robh+dt@kernel.org>
      Cc: Marc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20200619082013.13661-10-lorenzo.pieralisi@arm.com
      Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Stable-dep-of: d7997278
      
       ("of: dynamic: Fix of_reconfig_get_state_change() return value documentation")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      ae374c57
    • Lorenzo Pieralisi's avatar
      of/iommu: Make of_map_rid() PCI agnostic · e5cfaab6
      Lorenzo Pieralisi authored
      [ Upstream commit 746a71d0
      
       ]
      
      There is nothing PCI specific (other than the RID - requester ID)
      in the of_map_rid() implementation, so the same function can be
      reused for input/output IDs mapping for other busses just as well.
      
      Rename the RID instances/names to a generic "id" tag.
      
      No functionality change intended.
      
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Acked-by: default avatarJoerg Roedel <jroedel@suse.de>
      Cc: Rob Herring <robh+dt@kernel.org>
      Cc: Joerg Roedel <joro@8bytes.org>
      Cc: Robin Murphy <robin.murphy@arm.com>
      Cc: Marc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20200619082013.13661-7-lorenzo.pieralisi@arm.com
      Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Stable-dep-of: d7997278
      
       ("of: dynamic: Fix of_reconfig_get_state_change() return value documentation")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      e5cfaab6
    • Lorenzo Pieralisi's avatar
      ACPI/IORT: Make iort_msi_map_rid() PCI agnostic · f7a85520
      Lorenzo Pieralisi authored
      [ Upstream commit 39c3cf56
      
       ]
      
      There is nothing PCI specific in iort_msi_map_rid().
      
      Rename the function using a bus protocol agnostic name,
      iort_msi_map_id(), and convert current callers to it.
      
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Acked-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: Hanjun Guo <guohanjun@huawei.com>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Sudeep Holla <sudeep.holla@arm.com>
      Cc: Robin Murphy <robin.murphy@arm.com>
      Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
      Link: https://lore.kernel.org/r/20200619082013.13661-4-lorenzo.pieralisi@arm.com
      Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Stable-dep-of: d7997278
      
       ("of: dynamic: Fix of_reconfig_get_state_change() return value documentation")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      f7a85520
    • Lorenzo Pieralisi's avatar
      ACPI/IORT: Make iort_get_device_domain IRQ domain agnostic · da36a3ef
      Lorenzo Pieralisi authored
      [ Upstream commit d1718a1b
      
       ]
      
      iort_get_device_domain() is PCI specific but it need not be,
      since it can be used to retrieve IRQ domain nexus of any kind
      by adding an irq_domain_bus_token input to it.
      
      Make it PCI agnostic by also renaming the requestor ID input
      to a more generic ID name.
      
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Acked-by: Bjorn Helgaas <bhelgaas@google.com>   # pci/msi.c
      Cc: Will Deacon <will@kernel.org>
      Cc: Hanjun Guo <guohanjun@huawei.com>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Sudeep Holla <sudeep.holla@arm.com>
      Cc: Robin Murphy <robin.murphy@arm.com>
      Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
      Link: https://lore.kernel.org/r/20200619082013.13661-3-lorenzo.pieralisi@arm.com
      Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Stable-dep-of: d7997278
      
       ("of: dynamic: Fix of_reconfig_get_state_change() return value documentation")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      da36a3ef
    • Ulf Hansson's avatar
      of: base: Add of_get_cpu_state_node() to get idle states for a CPU node · d786067b
      Ulf Hansson authored
      [ Upstream commit b9f8c26a
      
       ]
      
      The CPU's idle state nodes are currently parsed at the common cpuidle DT
      library, but also when initializing data for specific CPU idle operations,
      as in the PSCI cpuidle driver case and qcom-spm cpuidle case.
      
      To avoid open-coding, let's introduce of_get_cpu_state_node(), which takes
      the device node for the CPU and the index to the requested idle state node,
      as in-parameters. In case a corresponding idle state node is found, it
      returns the node with the refcount incremented for it, else it returns
      NULL.
      
      Moreover, for PSCI there are two options to describe the CPU's idle states
      [1], either via a flattened description or a hierarchical layout. Hence,
      let's take both options into account.
      
      [1] Documentation/devicetree/bindings/arm/psci.yaml
      
      Suggested-by: default avatarSudeep Holla <sudeep.holla@arm.com>
      Co-developed-by: default avatarLina Iyer <lina.iyer@linaro.org>
      Signed-off-by: default avatarLina Iyer <lina.iyer@linaro.org>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Reviewed-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      Reviewed-by: default avatarSudeep Holla <sudeep.holla@arm.com>
      Stable-dep-of: d7997278
      
       ("of: dynamic: Fix of_reconfig_get_state_change() return value documentation")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      d786067b
    • YuanShang's avatar
      drm/amdgpu: correct chunk_ptr to a pointer to chunk. · 13f27a05
      YuanShang authored
      [ Upstream commit 50d51374
      
       ]
      
      The variable "chunk_ptr" should be a pointer pointing
      to a struct drm_amdgpu_cs_chunk instead of to a pointer
      of that.
      
      Signed-off-by: default avatarYuanShang <YuanShang.Mao@amd.com>
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      13f27a05
    • Masahiro Yamada's avatar
      kconfig: fix memory leak from range properties · d162a5e6
      Masahiro Yamada authored
      [ Upstream commit ae1eff03
      
       ]
      
      Currently, sym_validate_range() duplicates the range string using
      xstrdup(), which is overwritten by a subsequent sym_calc_value() call.
      It results in a memory leak.
      
      Instead, only the pointer should be copied.
      
      Below is a test case, with a summary from Valgrind.
      
      [Test Kconfig]
      
        config FOO
                int "foo"
                range 10 20
      
      [Test .config]
      
        CONFIG_FOO=0
      
      [Before]
      
        LEAK SUMMARY:
           definitely lost: 3 bytes in 1 blocks
           indirectly lost: 0 bytes in 0 blocks
             possibly lost: 0 bytes in 0 blocks
           still reachable: 17,465 bytes in 21 blocks
                suppressed: 0 bytes in 0 blocks
      
      [After]
      
        LEAK SUMMARY:
           definitely lost: 0 bytes in 0 blocks
           indirectly lost: 0 bytes in 0 blocks
             possibly lost: 0 bytes in 0 blocks
           still reachable: 17,462 bytes in 20 blocks
                suppressed: 0 bytes in 0 blocks
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      d162a5e6
    • Alex Pakhunov's avatar
      tg3: Increment tx_dropped in tg3_tso_bug() · d3464415
      Alex Pakhunov authored
      [ Upstream commit 17dd5efe
      
       ]
      
      tg3_tso_bug() drops a packet if it cannot be segmented for any reason.
      The number of discarded frames should be incremented accordingly.
      
      Signed-off-by: default avatarAlex Pakhunov <alexey.pakhunov@spacex.com>
      Signed-off-by: default avatarVincent Wong <vincent.wong2@spacex.com>
      Reviewed-by: default avatarPavan Chebbi <pavan.chebbi@broadcom.com>
      Link: https://lore.kernel.org/r/20231113182350.37472-2-alexey.pakhunov@spacex.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      d3464415
    • Alex Pakhunov's avatar
      tg3: Move the [rt]x_dropped counters to tg3_napi · cd49b8e0
      Alex Pakhunov authored
      [ Upstream commit 907d1bdb
      
       ]
      
      This change moves [rt]x_dropped counters to tg3_napi so that they can be
      updated by a single writer, race-free.
      
      Signed-off-by: default avatarAlex Pakhunov <alexey.pakhunov@spacex.com>
      Signed-off-by: default avatarVincent Wong <vincent.wong2@spacex.com>
      Reviewed-by: default avatarMichael Chan <michael.chan@broadcom.com>
      Link: https://lore.kernel.org/r/20231113182350.37472-1-alexey.pakhunov@spacex.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      cd49b8e0
    • Jozsef Kadlecsik's avatar
      netfilter: ipset: fix race condition between swap/destroy and kernel side add/del/test · 427deb5b
      Jozsef Kadlecsik authored
      [ Upstream commit 28628fa9
      
       ]
      
      Linkui Xiao reported that there's a race condition when ipset swap and destroy is
      called, which can lead to crash in add/del/test element operations. Swap then
      destroy are usual operations to replace a set with another one in a production
      system. The issue can in some cases be reproduced with the script:
      
      ipset create hash_ip1 hash:net family inet hashsize 1024 maxelem 1048576
      ipset add hash_ip1 172.20.0.0/16
      ipset add hash_ip1 192.168.0.0/16
      iptables -A INPUT -m set --match-set hash_ip1 src -j ACCEPT
      while [ 1 ]
      do
      	# ... Ongoing traffic...
              ipset create hash_ip2 hash:net family inet hashsize 1024 maxelem 1048576
              ipset add hash_ip2 172.20.0.0/16
              ipset swap hash_ip1 hash_ip2
              ipset destroy hash_ip2
              sleep 0.05
      done
      
      In the race case the possible order of the operations are
      
      	CPU0			CPU1
      	ip_set_test
      				ipset swap hash_ip1 hash_ip2
      				ipset destroy hash_ip2
      	hash_net_kadt
      
      Swap replaces hash_ip1 with hash_ip2 and then destroy removes hash_ip2 which
      is the original hash_ip1. ip_set_test was called on hash_ip1 and because destroy
      removed it, hash_net_kadt crashes.
      
      The fix is to force ip_set_swap() to wait for all readers to finish accessing the
      old set pointers by calling synchronize_rcu().
      
      The first version of the patch was written by Linkui Xiao <xiaolinkui@kylinos.cn>.
      
      v2: synchronize_rcu() is moved into ip_set_swap() in order not to burden
          ip_set_destroy() unnecessarily when all sets are destroyed.
      v3: Florian Westphal pointed out that all netfilter hooks run with rcu_read_lock() held
          and em_ipset.c wraps the entire ip_set_test() in rcu read lock/unlock pair.
          So there's no need to extend the rcu read locked area in ipset itself.
      
      Closes: https://lore.kernel.org/all/69e7963b-e7f8-3ad0-210-7b86eebf7f78@netfilter.org/
      Reported by: Linkui Xiao <xiaolinkui@kylinos.cn>
      Signed-off-by: default avatarJozsef Kadlecsik <kadlec@netfilter.org>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      427deb5b
    • Thomas Gleixner's avatar
      hrtimers: Push pending hrtimers away from outgoing CPU earlier · 54d0d83a
      Thomas Gleixner authored
      [ Upstream commit 5c0930cc ]
      
      2b8272ff
      
       ("cpu/hotplug: Prevent self deadlock on CPU hot-unplug")
      solved the straight forward CPU hotplug deadlock vs. the scheduler
      bandwidth timer. Yu discovered a more involved variant where a task which
      has a bandwidth timer started on the outgoing CPU holds a lock and then
      gets throttled. If the lock required by one of the CPU hotplug callbacks
      the hotplug operation deadlocks because the unthrottling timer event is not
      handled on the dying CPU and can only be recovered once the control CPU
      reaches the hotplug state which pulls the pending hrtimers from the dead
      CPU.
      
      Solve this by pushing the hrtimers away from the dying CPU in the dying
      callbacks. Nothing can queue a hrtimer on the dying CPU at that point because
      all other CPUs spin in stop_machine() with interrupts disabled and once the
      operation is finished the CPU is marked offline.
      
      Reported-by: default avatarYu Liao <liaoyu15@huawei.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Tested-by: default avatarLiu Tie <liutie4@huawei.com>
      Link: https://lore.kernel.org/r/87a5rphara.ffs@tglx
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      54d0d83a
  2. Dec 08, 2023