Changelog in Linux kernel 6.1.96

 
ACPICA: Revert "ACPICA: avoid Info: mapping multiple BARs. Your kernel is fine." [+ + +]
Author: Raju Rangoju <[email protected]>
Date:   Fri Jun 14 19:31:49 2024 +0530

    ACPICA: Revert "ACPICA: avoid Info: mapping multiple BARs. Your kernel is fine."
    
    [ Upstream commit a83e1385b780d41307433ddbc86e3c528db031f0 ]
    
    Undo the modifications made in commit d410ee5109a1 ("ACPICA: avoid
    "Info: mapping multiple BARs. Your kernel is fine.""). The initial
    purpose of this commit was to stop memory mappings for operation
    regions from overlapping page boundaries, as it can trigger warnings
    if different page attributes are present.
    
    However, it was found that when this situation arises, mapping
    continues until the boundary's end, but there is still an attempt to
    read/write the entire length of the map, leading to a NULL pointer
    deference. For example, if a four-byte mapping request is made but
    only one byte is mapped because it hits the current page boundary's
    end, a four-byte read/write attempt is still made, resulting in a NULL
    pointer deference.
    
    Instead, map the entire length, as the ACPI specification does not
    mandate that it must be within the same page boundary. It is
    permissible for it to be mapped across different regions.
    
    Link: https://github.com/acpica/acpica/pull/954
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218849
    Fixes: d410ee5109a1 ("ACPICA: avoid "Info: mapping multiple BARs. Your kernel is fine."")
    Co-developed-by: Sanath S <[email protected]>
    Signed-off-by: Sanath S <[email protected]>
    Signed-off-by: Raju Rangoju <[email protected]>
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
af_packet: avoid a false positive warning in packet_setsockopt() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Apr 5 11:49:39 2024 +0000

    af_packet: avoid a false positive warning in packet_setsockopt()
    
    [ Upstream commit 86d43e2bf93ccac88ef71cee36a23282ebd9e427 ]
    
    Although the code is correct, the following line
    
            copy_from_sockptr(&req_u.req, optval, len));
    
    triggers this warning :
    
    memcpy: detected field-spanning write (size 28) of single field "dst" at include/linux/sockptr.h:49 (size 16)
    
    Refactor the code to be more explicit.
    
    Reported-by: syzbot <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Kees Cook <[email protected]>
    Cc: Willem de Bruijn <[email protected]>
    Reviewed-by: Kees Cook <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ALSA/hda: intel-dsp-config: Document AVS as dsp_driver option [+ + +]
Author: Peter Ujfalusi <[email protected]>
Date:   Fri Jun 7 09:00:21 2024 +0300

    ALSA/hda: intel-dsp-config: Document AVS as dsp_driver option
    
    [ Upstream commit 2646b43910c0e6d7f4ad535919b44b88f98c688d ]
    
    dsp_driver=4 will force the AVS driver stack to be used, it is better to
    docuement this.
    
    Fixes: 1affc44ea5dd ("ASoC: Intel: avs: PCI driver implementation")
    Signed-off-by: Peter Ujfalusi <[email protected]>
    Reviewed-by: Cezary Rojewski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ALSA: hda/realtek: Add quirks for Lenovo 13X [+ + +]
Author: Stefan Binding <[email protected]>
Date:   Tue Apr 23 17:23:03 2024 +0100

    ALSA: hda/realtek: Add quirks for Lenovo 13X
    
    [ Upstream commit 25f46354dca912c84f1f79468fd636a94b8d287a ]
    
    Add laptop using CS35L41 HDA.
    This laptop does not have _DSD, so require entries in property
    configuration table for cs35l41_hda driver.
    
    Signed-off-by: Stefan Binding <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek: Enable headset mic on IdeaPad 330-17IKB 81DM [+ + +]
Author: Ajrat Makhmutov <[email protected]>
Date:   Sat Jun 15 15:54:57 2024 +0300

    ALSA: hda/realtek: Enable headset mic on IdeaPad 330-17IKB 81DM
    
    [ Upstream commit b1fd0d1285b1eae8b99af36fb26ed2512b809af6 ]
    
    Headset microphone do not work out of the box with this laptop. This
    quirk fixes it. Zihao Wang specified the wrong subsystem id in his patch.
    
    Link: https://lore.kernel.org/all/[email protected]/
    Fixes: 3b79954fd00d ("ALSA: hda/realtek: Add quirk for Yoga Duet 7 13ITL6 speakers")
    Signed-off-by: Ajrat Makhmutov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek: fix mute/micmute LEDs don't work for ProBook 445/465 G11. [+ + +]
Author: Andy Chi <[email protected]>
Date:   Wed Jun 5 17:22:41 2024 +0800

    ALSA: hda/realtek: fix mute/micmute LEDs don't work for ProBook 445/465 G11.
    
    commit ea5f8c4cffcd8a6b62b3a3bd5008275218c9d02a upstream.
    
    HP ProBook 445/465 G11 needs ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF quirk to
    make mic-mute/audio-mute working.
    
    Signed-off-by: Andy Chi <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: hda/realtek: Limit mic boost on N14AP7 [+ + +]
Author: Edson Juliano Drosdeck <[email protected]>
Date:   Wed Jun 5 12:39:23 2024 -0300

    ALSA: hda/realtek: Limit mic boost on N14AP7
    
    commit 86a433862912f52597263aa224a9ed82bcd533bf upstream.
    
    The internal mic boost on the N14AP7 is too high. Fix this by applying the
    ALC269_FIXUP_LIMIT_INT_MIC_BOOST fixup to the machine to limit the gain.
    
    Signed-off-by: Edson Juliano Drosdeck <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: hda/realtek: Remove Framework Laptop 16 from quirks [+ + +]
Author: Dustin L. Howett <[email protected]>
Date:   Wed Jun 5 12:01:32 2024 -0500

    ALSA: hda/realtek: Remove Framework Laptop 16 from quirks
    
    [ Upstream commit e799bdf51d54bebaf939fdb655aad424e624c1b1 ]
    
    The Framework Laptop 16 does not have a combination headphone/headset
    3.5mm jack; however, applying the pincfg from the Laptop 13 (nid=0x19)
    erroneously informs hda that the node is present.
    
    Fixes: 8804fa04a492 ("ALSA: hda/realtek: Add Framework laptop 16 to quirks")
    Signed-off-by: Dustin L. Howett <[email protected]>
    Reviewed-by: Mario Limonciello <[email protected]>
    Link: https://lore.kernel.org/r/20240605-alsa-hda-realtek-remove-framework-laptop-16-from-quirks-v1-1-11d47fe8ec4d@howett.net
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64: dts: freescale: imx8mm-verdin: enable hysteresis on slow input pin [+ + +]
Author: Max Krummenacher <[email protected]>
Date:   Mon Jun 3 16:00:45 2024 +0200

    arm64: dts: freescale: imx8mm-verdin: enable hysteresis on slow input pin
    
    [ Upstream commit 67cc6125fb39902169707cb6277f010e56d4a40a ]
    
    SODIMM 17 can be used as an edge triggered interrupt supplied from an
    off board source.
    
    Enable hysteresis on the pinmuxing to increase immunity against noise
    on the signal.
    
    Fixes: 60f01b5b5c7d ("arm64: dts: imx8mm-verdin: update iomux configuration")
    Signed-off-by: Max Krummenacher <[email protected]>
    Signed-off-by: Shawn Guo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: imx8qm-mek: fix gpio number for reg_usdhc2_vmmc [+ + +]
Author: Frank Li <[email protected]>
Date:   Fri Jun 14 11:06:32 2024 -0400

    arm64: dts: imx8qm-mek: fix gpio number for reg_usdhc2_vmmc
    
    commit dfd239a039b3581ca25f932e66b6e2c2bf77c798 upstream.
    
    The gpio in "reg_usdhc2_vmmc" should be 7 instead of 19.
    
    Cc: [email protected]
    Fixes: 307fd14d4b14 ("arm64: dts: imx: add imx8qm mek support")
    Reviewed-by: Peng Fan <[email protected]>
    Signed-off-by: Frank Li <[email protected]>
    Signed-off-by: Shawn Guo <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: dts: imx93-11x11-evk: Remove the 'no-sdio' property [+ + +]
Author: Fabio Estevam <[email protected]>
Date:   Wed May 29 00:48:54 2024 -0300

    arm64: dts: imx93-11x11-evk: Remove the 'no-sdio' property
    
    [ Upstream commit a5d400b6439ac734a5c0dbb641e26a38736abc17 ]
    
    The usdhc2 port is connected to the microSD slot. The presence of the
    'no-sdio' property prevents Wifi SDIO cards, such as CMP9010-X-EVB [1]
    to be detected.
    
    Remove the 'no-sdio' property so that SDIO cards could also work.
    
    [1] https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-plus-802-15-4/cmp9010-x-evb-iw416-usd-interface-evaluation-board:CMP9010-X-EVB
    
    Fixes: e37907bd8294 ("arm64: dts: freescale: add i.MX93 11x11 EVK basic support")
    Signed-off-by: Fabio Estevam <[email protected]>
    Signed-off-by: Shawn Guo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ARM: dts: samsung: exynos4412-origen: fix keypad no-autorepeat [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Tue Mar 12 19:31:03 2024 +0100

    ARM: dts: samsung: exynos4412-origen: fix keypad no-autorepeat
    
    [ Upstream commit 88208d3cd79821117fd3fb80d9bcab618467d37b ]
    
    Although the Samsung SoC keypad binding defined
    linux,keypad-no-autorepeat property, Linux driver never implemented it
    and always used linux,input-no-autorepeat.  Correct the DTS to use
    property actually implemented.
    
    This also fixes dtbs_check errors like:
    
      exynos4412-origen.dtb: keypad@100a0000: 'linux,keypad-no-autorepeat' does not match any of the regexes: '^key-[0-9a-z]+$', 'pinctrl-[0-9]+'
    
    Cc: <[email protected]>
    Fixes: bd08f6277e44 ("ARM: dts: Add keypad entries to Exynos4412 based Origen")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ARM: dts: samsung: smdk4412: fix keypad no-autorepeat [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Tue Mar 12 19:31:04 2024 +0100

    ARM: dts: samsung: smdk4412: fix keypad no-autorepeat
    
    [ Upstream commit 4ac4c1d794e7ff454d191bbdab7585ed8dbf3758 ]
    
    Although the Samsung SoC keypad binding defined
    linux,keypad-no-autorepeat property, Linux driver never implemented it
    and always used linux,input-no-autorepeat.  Correct the DTS to use
    property actually implemented.
    
    This also fixes dtbs_check errors like:
    
      exynos4412-smdk4412.dtb: keypad@100a0000: 'key-A', 'key-B', 'key-C', 'key-D', 'key-E', 'linux,keypad-no-autorepeat' do not match any of the regexes: '^key-[0-9a-z]+$', 'pinctrl-[0-9]+'
    
    Cc: <[email protected]>
    Fixes: c9b92dd70107 ("ARM: dts: Add keypad entries to SMDK4412")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ARM: dts: samsung: smdkv310: fix keypad no-autorepeat [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Tue Mar 12 19:31:02 2024 +0100

    ARM: dts: samsung: smdkv310: fix keypad no-autorepeat
    
    [ Upstream commit 87d8e522d6f5a004f0aa06c0def302df65aff296 ]
    
    Although the Samsung SoC keypad binding defined
    linux,keypad-no-autorepeat property, Linux driver never implemented it
    and always used linux,input-no-autorepeat.  Correct the DTS to use
    property actually implemented.
    
    This also fixes dtbs_check errors like:
    
      exynos4210-smdkv310.dtb: keypad@100a0000: 'linux,keypad-no-autorepeat' does not match any of the regexes: '^key-[0-9a-z]+$', 'pinctrl-[0-9]+'
    
    Cc: <[email protected]>
    Fixes: 0561ceabd0f1 ("ARM: dts: Add intial dts file for EXYNOS4210 SoC, SMDKV310 and ORIGEN")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ASoC: Intel: sof_sdw: add JD2 quirk for HP Omen 14 [+ + +]
Author: Pierre-Louis Bossart <[email protected]>
Date:   Thu Apr 11 17:03:38 2024 -0500

    ASoC: Intel: sof_sdw: add JD2 quirk for HP Omen 14
    
    [ Upstream commit 4fee07fbf47d2a5f1065d985459e5ce7bf7969f0 ]
    
    The default JD1 does not seem to work, use JD2 instead.
    
    Signed-off-by: Pierre-Louis Bossart <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Avoid hw_desc array overrun in dw-axi-dmac [+ + +]
Author: Joao Pinto <[email protected]>
Date:   Wed Mar 27 10:49:24 2024 +0000

    Avoid hw_desc array overrun in dw-axi-dmac
    
    [ Upstream commit 333e11bf47fa8d477db90e2900b1ed3c9ae9b697 ]
    
    I have a use case where nr_buffers = 3 and in which each descriptor is composed by 3
    segments, resulting in the DMA channel descs_allocated to be 9. Since axi_desc_put()
    handles the hw_desc considering the descs_allocated, this scenario would result in a
    kernel panic (hw_desc array will be overrun).
    
    To fix this, the proposal is to add a new member to the axi_dma_desc structure,
    where we keep the number of allocated hw_descs (axi_desc_alloc()) and use it in
    axi_desc_put() to handle the hw_desc array correctly.
    
    Additionally I propose to remove the axi_chan_start_first_queued() call after completing
    the transfer, since it was identified that unbalance can occur (started descriptors can
    be interrupted and transfer ignored due to DMA channel not being enabled).
    
    Signed-off-by: Joao Pinto <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
batman-adv: bypass empty buckets in batadv_purge_orig_ref() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Sat Mar 30 15:54:38 2024 +0000

    batman-adv: bypass empty buckets in batadv_purge_orig_ref()
    
    [ Upstream commit 40dc8ab605894acae1473e434944924a22cfaaa0 ]
    
    Many syzbot reports are pointing to soft lockups in
    batadv_purge_orig_ref() [1]
    
    Root cause is unknown, but we can avoid spending too much
    time there and perhaps get more interesting reports.
    
    [1]
    
    watchdog: BUG: soft lockup - CPU#0 stuck for 27s! [kworker/u4:6:621]
    Modules linked in:
    irq event stamp: 6182794
     hardirqs last  enabled at (6182793): [<ffff8000801dae10>] __local_bh_enable_ip+0x224/0x44c kernel/softirq.c:386
     hardirqs last disabled at (6182794): [<ffff80008ad66a78>] __el1_irq arch/arm64/kernel/entry-common.c:533 [inline]
     hardirqs last disabled at (6182794): [<ffff80008ad66a78>] el1_interrupt+0x24/0x68 arch/arm64/kernel/entry-common.c:551
     softirqs last  enabled at (6182792): [<ffff80008aab71c4>] spin_unlock_bh include/linux/spinlock.h:396 [inline]
     softirqs last  enabled at (6182792): [<ffff80008aab71c4>] batadv_purge_orig_ref+0x114c/0x1228 net/batman-adv/originator.c:1287
     softirqs last disabled at (6182790): [<ffff80008aab61dc>] spin_lock_bh include/linux/spinlock.h:356 [inline]
     softirqs last disabled at (6182790): [<ffff80008aab61dc>] batadv_purge_orig_ref+0x164/0x1228 net/batman-adv/originator.c:1271
    CPU: 0 PID: 621 Comm: kworker/u4:6 Not tainted 6.8.0-rc7-syzkaller-g707081b61156 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/29/2024
    Workqueue: bat_events batadv_purge_orig
    pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
     pc : should_resched arch/arm64/include/asm/preempt.h:79 [inline]
     pc : __local_bh_enable_ip+0x228/0x44c kernel/softirq.c:388
     lr : __local_bh_enable_ip+0x224/0x44c kernel/softirq.c:386
    sp : ffff800099007970
    x29: ffff800099007980 x28: 1fffe00018fce1bd x27: dfff800000000000
    x26: ffff0000d2620008 x25: ffff0000c7e70de8 x24: 0000000000000001
    x23: 1fffe00018e57781 x22: dfff800000000000 x21: ffff80008aab71c4
    x20: ffff0001b40136c0 x19: ffff0000c72bbc08 x18: 1fffe0001a817bb0
    x17: ffff800125414000 x16: ffff80008032116c x15: 0000000000000001
    x14: 1fffe0001ee9d610 x13: 0000000000000000 x12: 0000000000000003
    x11: 0000000000000000 x10: 0000000000ff0100 x9 : 0000000000000000
    x8 : 00000000005e5789 x7 : ffff80008aab61dc x6 : 0000000000000000
    x5 : 0000000000000000 x4 : 0000000000000001 x3 : 0000000000000000
    x2 : 0000000000000006 x1 : 0000000000000080 x0 : ffff800125414000
    Call trace:
      __daif_local_irq_enable arch/arm64/include/asm/irqflags.h:27 [inline]
      arch_local_irq_enable arch/arm64/include/asm/irqflags.h:49 [inline]
      __local_bh_enable_ip+0x228/0x44c kernel/softirq.c:386
      __raw_spin_unlock_bh include/linux/spinlock_api_smp.h:167 [inline]
      _raw_spin_unlock_bh+0x3c/0x4c kernel/locking/spinlock.c:210
      spin_unlock_bh include/linux/spinlock.h:396 [inline]
      batadv_purge_orig_ref+0x114c/0x1228 net/batman-adv/originator.c:1287
      batadv_purge_orig+0x20/0x70 net/batman-adv/originator.c:1300
      process_one_work+0x694/0x1204 kernel/workqueue.c:2633
      process_scheduled_works kernel/workqueue.c:2706 [inline]
      worker_thread+0x938/0xef4 kernel/workqueue.c:2787
      kthread+0x288/0x310 kernel/kthread.c:388
      ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:860
    Sending NMI from CPU 0 to CPUs 1:
    NMI backtrace for cpu 1
    CPU: 1 PID: 0 Comm: swapper/1 Not tainted 6.8.0-rc7-syzkaller-g707081b61156 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/29/2024
    pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
     pc : arch_local_irq_enable+0x8/0xc arch/arm64/include/asm/irqflags.h:51
     lr : default_idle_call+0xf8/0x128 kernel/sched/idle.c:103
    sp : ffff800093a17d30
    x29: ffff800093a17d30 x28: dfff800000000000 x27: 1ffff00012742fb4
    x26: ffff80008ec9d000 x25: 0000000000000000 x24: 0000000000000002
    x23: 1ffff00011d93a74 x22: ffff80008ec9d3a0 x21: 0000000000000000
    x20: ffff0000c19dbc00 x19: ffff8000802d0fd8 x18: 1fffe00036804396
    x17: ffff80008ec9d000 x16: ffff8000802d089c x15: 0000000000000001
    x14: 1fffe00036805f10 x13: 0000000000000000 x12: 0000000000000003
    x11: 0000000000000001 x10: 0000000000000003 x9 : 0000000000000000
    x8 : 00000000000ce8d1 x7 : ffff8000804609e4 x6 : 0000000000000000
    x5 : 0000000000000001 x4 : 0000000000000001 x3 : ffff80008ad6aac0
    x2 : 0000000000000000 x1 : ffff80008aedea60 x0 : ffff800125436000
    Call trace:
      __daif_local_irq_enable arch/arm64/include/asm/irqflags.h:27 [inline]
      arch_local_irq_enable+0x8/0xc arch/arm64/include/asm/irqflags.h:49
      cpuidle_idle_call kernel/sched/idle.c:170 [inline]
      do_idle+0x1f0/0x4e8 kernel/sched/idle.c:312
      cpu_startup_entry+0x5c/0x74 kernel/sched/idle.c:410
      secondary_start_kernel+0x198/0x1c0 arch/arm64/kernel/smp.c:272
      __secondary_switched+0xb8/0xbc arch/arm64/kernel/head.S:404
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Signed-off-by: Sven Eckelmann <[email protected]>
    Signed-off-by: Simon Wunderlich <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
block/ioctl: prefer different overflow check [+ + +]
Author: Justin Stitt <[email protected]>
Date:   Tue May 7 03:53:49 2024 +0000

    block/ioctl: prefer different overflow check
    
    [ Upstream commit ccb326b5f9e623eb7f130fbbf2505ec0e2dcaff9 ]
    
    Running syzkaller with the newly reintroduced signed integer overflow
    sanitizer shows this report:
    
    [   62.982337] ------------[ cut here ]------------
    [   62.985692] cgroup: Invalid name
    [   62.986211] UBSAN: signed-integer-overflow in ../block/ioctl.c:36:46
    [   62.989370] 9pnet_fd: p9_fd_create_tcp (7343): problem connecting socket to 127.0.0.1
    [   62.992992] 9223372036854775807 + 4095 cannot be represented in type 'long long'
    [   62.997827] 9pnet_fd: p9_fd_create_tcp (7345): problem connecting socket to 127.0.0.1
    [   62.999369] random: crng reseeded on system resumption
    [   63.000634] GUP no longer grows the stack in syz-executor.2 (7353): 20002000-20003000 (20001000)
    [   63.000668] CPU: 0 PID: 7353 Comm: syz-executor.2 Not tainted 6.8.0-rc2-00035-gb3ef86b5a957 #1
    [   63.000677] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [   63.000682] Call Trace:
    [   63.000686]  <TASK>
    [   63.000731]  dump_stack_lvl+0x93/0xd0
    [   63.000919]  __get_user_pages+0x903/0xd30
    [   63.001030]  __gup_longterm_locked+0x153e/0x1ba0
    [   63.001041]  ? _raw_read_unlock_irqrestore+0x17/0x50
    [   63.001072]  ? try_get_folio+0x29c/0x2d0
    [   63.001083]  internal_get_user_pages_fast+0x1119/0x1530
    [   63.001109]  iov_iter_extract_pages+0x23b/0x580
    [   63.001206]  bio_iov_iter_get_pages+0x4de/0x1220
    [   63.001235]  iomap_dio_bio_iter+0x9b6/0x1410
    [   63.001297]  __iomap_dio_rw+0xab4/0x1810
    [   63.001316]  iomap_dio_rw+0x45/0xa0
    [   63.001328]  ext4_file_write_iter+0xdde/0x1390
    [   63.001372]  vfs_write+0x599/0xbd0
    [   63.001394]  ksys_write+0xc8/0x190
    [   63.001403]  do_syscall_64+0xd4/0x1b0
    [   63.001421]  ? arch_exit_to_user_mode_prepare+0x3a/0x60
    [   63.001479]  entry_SYSCALL_64_after_hwframe+0x6f/0x77
    [   63.001535] RIP: 0033:0x7f7fd3ebf539
    [   63.001551] Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 f1 14 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
    [   63.001562] RSP: 002b:00007f7fd32570c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    [   63.001584] RAX: ffffffffffffffda RBX: 00007f7fd3ff3f80 RCX: 00007f7fd3ebf539
    [   63.001590] RDX: 4db6d1e4f7e43360 RSI: 0000000020000000 RDI: 0000000000000004
    [   63.001595] RBP: 00007f7fd3f1e496 R08: 0000000000000000 R09: 0000000000000000
    [   63.001599] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    [   63.001604] R13: 0000000000000006 R14: 00007f7fd3ff3f80 R15: 00007ffd415ad2b8
    ...
    [   63.018142] ---[ end trace ]---
    
    Historically, the signed integer overflow sanitizer did not work in the
    kernel due to its interaction with `-fwrapv` but this has since been
    changed [1] in the newest version of Clang; It was re-enabled in the
    kernel with Commit 557f8c582a9ba8ab ("ubsan: Reintroduce signed overflow
    sanitizer").
    
    Let's rework this overflow checking logic to not actually perform an
    overflow during the check itself, thus avoiding the UBSAN splat.
    
    [1]: https://github.com/llvm/llvm-project/pull/82432
    
    Signed-off-by: Justin Stitt <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Bluetooth: ath3k: Fix multiple issues reported by checkpatch.pl [+ + +]
Author: Uri Arev <[email protected]>
Date:   Sat Apr 6 00:42:24 2024 +0300

    Bluetooth: ath3k: Fix multiple issues reported by checkpatch.pl
    
    [ Upstream commit 68aa21054ec3a1a313af90a5f95ade16c3326d20 ]
    
    This fixes some CHECKs reported by the checkpatch script.
    
    Issues reported in ath3k.c:
    -------
    ath3k.c
    -------
    CHECK: Please don't use multiple blank lines
    +
    +
    
    CHECK: Blank lines aren't necessary after an open brace '{'
    +static const struct usb_device_id ath3k_blist_tbl[] = {
    +
    
    CHECK: Alignment should match open parenthesis
    +static int ath3k_load_firmware(struct usb_device *udev,
    +                               const struct firmware *firmware)
    
    CHECK: Alignment should match open parenthesis
    +               err = usb_bulk_msg(udev, pipe, send_buf, size,
    +                                       &len, 3000);
    
    CHECK: Unnecessary parentheses around 'len != size'
    +               if (err || (len != size)) {
    
    CHECK: Alignment should match open parenthesis
    +static int ath3k_get_version(struct usb_device *udev,
    +                       struct ath3k_version *version)
    
    CHECK: Alignment should match open parenthesis
    +static int ath3k_load_fwfile(struct usb_device *udev,
    +               const struct firmware *firmware)
    
    CHECK: Alignment should match open parenthesis
    +               err = usb_bulk_msg(udev, pipe, send_buf, size,
    +                                       &len, 3000);
    
    CHECK: Unnecessary parentheses around 'len != size'
    +               if (err || (len != size)) {
    
    CHECK: Blank lines aren't necessary after an open brace '{'
    +       switch (fw_version.ref_clock) {
    +
    
    CHECK: Alignment should match open parenthesis
    +       snprintf(filename, ATH3K_NAME_LEN, "ar3k/ramps_0x%08x_%d%s",
    +               le32_to_cpu(fw_version.rom_version), clk_value, ".dfu");
    
    CHECK: Alignment should match open parenthesis
    +static int ath3k_probe(struct usb_interface *intf,
    +                       const struct usb_device_id *id)
    
    CHECK: Alignment should match open parenthesis
    +                       BT_ERR("Firmware file \"%s\" not found",
    +                                                       ATH3K_FIRMWARE);
    
    CHECK: Alignment should match open parenthesis
    +               BT_ERR("Firmware file \"%s\" request failed (err=%d)",
    +                                               ATH3K_FIRMWARE, ret);
    
    total: 0 errors, 0 warnings, 14 checks, 540 lines checked
    
    Signed-off-by: Uri Arev <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bnxt_en: Restore PTP tx_avail count in case of skb_pad() error [+ + +]
Author: Pavan Chebbi <[email protected]>
Date:   Tue Jun 18 14:53:13 2024 -0700

    bnxt_en: Restore PTP tx_avail count in case of skb_pad() error
    
    [ Upstream commit 1e7962114c10957fe4d10a15eb714578a394e90b ]
    
    The current code only restores PTP tx_avail count when we get DMA
    mapping errors.  Fix it so that the PTP tx_avail count will be
    restored for both DMA mapping errors and skb_pad() errors.
    Otherwise PTP TX timestamp will not be available after a PTP
    packet hits the skb_pad() error.
    
    Fixes: 83bb623c968e ("bnxt_en: Transmit and retrieve packet timestamps")
    Reviewed-by: Andy Gospodarek <[email protected]>
    Signed-off-by: Pavan Chebbi <[email protected]>
    Signed-off-by: Michael Chan <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf: Avoid splat in pskb_pull_reason [+ + +]
Author: Florian Westphal <[email protected]>
Date:   Fri Jun 14 12:17:33 2024 +0200

    bpf: Avoid splat in pskb_pull_reason
    
    [ Upstream commit 2bbe3e5a2f4ef69d13be54f1cf895b4658287080 ]
    
    syzkaller builds (CONFIG_DEBUG_NET=y) frequently trigger a debug
    hint in pskb_may_pull.
    
    We'd like to retain this debug check because it might hint at integer
    overflows and other issues (kernel code should pull headers, not huge
    value).
    
    In bpf case, this splat isn't interesting at all: such (nonsensical)
    bpf programs are typically generated by a fuzzer anyway.
    
    Do what Eric suggested and suppress such warning.
    
    For CONFIG_DEBUG_NET=n we don't need the extra check because
    pskb_may_pull will do the right thing: return an error without the
    WARN() backtrace.
    
    Fixes: 219eee9c0d16 ("net: skbuff: add overflow debug check to pull/push helpers")
    Reported-by: [email protected]
    Suggested-by: Eric Dumazet <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Acked-by: Daniel Borkmann <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=0c4150bff9fff3bf023c
    Link: https://lore.kernel.org/netdev/[email protected]/
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
btrfs: retry block group reclaim without infinite loop [+ + +]
Author: Boris Burkov <[email protected]>
Date:   Fri Jun 7 12:50:14 2024 -0700

    btrfs: retry block group reclaim without infinite loop
    
    commit 4eb4e85c4f818491efc67e9373aa16b123c3f522 upstream.
    
    If inc_block_group_ro systematically fails (e.g. due to ETXTBUSY from
    swap) or btrfs_relocate_chunk systematically fails (from lack of
    space), then this worker becomes an infinite loop.
    
    At the very least, this strands the cleaner thread, but can also result
    in hung tasks/RCU stalls on PREEMPT_NONE kernels and if the
    reclaim_bgs_lock mutex is not contended.
    
    I believe the best long term fix is to manage reclaim via work queue,
    where we queue up a relocation on the triggering condition and re-queue
    on failure. In the meantime, this is an easy fix to apply to avoid the
    immediate pain.
    
    Fixes: 7e2718099438 ("btrfs: reinsert BGs failed to reclaim")
    CC: [email protected] # 6.6+
    Signed-off-by: Boris Burkov <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
cifs: fix typo in module parameter enable_gcm_256 [+ + +]
Author: Steve French <[email protected]>
Date:   Wed Jun 19 14:46:48 2024 -0500

    cifs: fix typo in module parameter enable_gcm_256
    
    commit 8bf0287528da1992c5e49d757b99ad6bbc34b522 upstream.
    
    enable_gcm_256 (which allows the server to require the strongest
    encryption) is enabled by default, but the modinfo description
    incorrectly showed it disabled by default. Fix the typo.
    
    Cc: [email protected]
    Fixes: fee742b50289 ("smb3.1.1: enable negotiating stronger encryption by default")
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
cipso: fix total option length computation [+ + +]
Author: Ondrej Mosnacek <[email protected]>
Date:   Fri Jun 7 18:07:52 2024 +0200

    cipso: fix total option length computation
    
    [ Upstream commit 9f36169912331fa035d7b73a91252d7c2512eb1a ]
    
    As evident from the definition of ip_options_get(), the IP option
    IPOPT_END is used to pad the IP option data array, not IPOPT_NOP. Yet
    the loop that walks the IP options to determine the total IP options
    length in cipso_v4_delopt() doesn't take IPOPT_END into account.
    
    Fix it by recognizing the IPOPT_END value as the end of actual options.
    
    Fixes: 014ab19a69c3 ("selinux: Set socket NetLabel based on connection endpoint")
    Signed-off-by: Ondrej Mosnacek <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
crypto: hisilicon/sec - Fix memory leak for sec resource release [+ + +]
Author: Chenghai Huang <[email protected]>
Date:   Sun Apr 7 15:59:58 2024 +0800

    crypto: hisilicon/sec - Fix memory leak for sec resource release
    
    [ Upstream commit bba4250757b4ae1680fea435a358d8093f254094 ]
    
    The AIV is one of the SEC resources. When releasing resources,
    it need to release the AIV resources at the same time.
    Otherwise, memory leakage occurs.
    
    The aiv resource release is added to the sec resource release
    function.
    
    Signed-off-by: Chenghai Huang <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dmaengine: idxd: Fix possible Use-After-Free in irq_process_work_list [+ + +]
Author: Li RongQing <[email protected]>
Date:   Mon Jun 3 09:24:44 2024 +0800

    dmaengine: idxd: Fix possible Use-After-Free in irq_process_work_list
    
    [ Upstream commit e3215deca4520773cd2b155bed164c12365149a7 ]
    
    Use list_for_each_entry_safe() to allow iterating through the list and
    deleting the entry in the iteration process. The descriptor is freed via
    idxd_desc_complete() and there's a slight chance may cause issue for
    the list iterator when the descriptor is reused by another thread
    without it being deleted from the list.
    
    Fixes: 16e19e11228b ("dmaengine: idxd: Fix list corruption in description completion")
    Signed-off-by: Li RongQing <[email protected]>
    Reviewed-by: Dave Jiang <[email protected]>
    Reviewed-by: Fenghua Yu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: ioat: Drop redundant pci_enable_pcie_error_reporting() [+ + +]
Author: Bjorn Helgaas <[email protected]>
Date:   Tue Mar 7 13:26:54 2023 -0600

    dmaengine: ioat: Drop redundant pci_enable_pcie_error_reporting()
    
    [ Upstream commit e32622f84ae289dc7a04e9f01cd62cb914fdc5c6 ]
    
    pci_enable_pcie_error_reporting() enables the device to send ERR_*
    Messages.  Since f26e58bf6f54 ("PCI/AER: Enable error reporting when AER is
    native"), the PCI core does this for all devices during enumeration, so the
    driver doesn't need to do it itself.
    
    Remove the redundant pci_enable_pcie_error_reporting() call from the
    driver.  Also remove the corresponding pci_disable_pcie_error_reporting()
    from the driver .remove() path.
    
    Note that this only controls ERR_* Messages from the device.  An ERR_*
    Message may cause the Root Port to generate an interrupt, depending on the
    AER Root Error Command register managed by the AER service driver.
    
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Acked-by: Dave Jiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Stable-dep-of: 1b11b4ef6bd6 ("dmaengine: ioatdma: Fix leaking on version mismatch")
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: ioat: use PCI core macros for PCIe Capability [+ + +]
Author: Bjorn Helgaas <[email protected]>
Date:   Tue Mar 7 15:46:15 2023 -0600

    dmaengine: ioat: use PCI core macros for PCIe Capability
    
    [ Upstream commit 8f6707d0773be31972768abd6e0bf7b8515b5b1a ]
    
    The PCIe Capability is defined by the PCIe spec, so use the PCI_EXP_DEVCTL
    macros defined by the PCI core instead of defining copies in IOAT.  This
    makes it easier to find all uses of the PCIe Device Control register.  No
    functional change intended.
    
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Acked-by: Dave Jiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Stable-dep-of: f0dc9fda2e0e ("dmaengine: ioatdma: Fix error path in ioat3_dma_probe()")
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: ioatdma: Fix error path in ioat3_dma_probe() [+ + +]
Author: Nikita Shubin <[email protected]>
Date:   Tue May 28 09:09:24 2024 +0300

    dmaengine: ioatdma: Fix error path in ioat3_dma_probe()
    
    [ Upstream commit f0dc9fda2e0ee9e01496c2f5aca3a831131fad79 ]
    
    Make sure we are disabling interrupts and destroying DMA pool if
    pcie_capability_read/write_word() call failed.
    
    Fixes: 511deae0261c ("dmaengine: ioatdma: disable relaxed ordering for ioatdma")
    Signed-off-by: Nikita Shubin <[email protected]>
    Reviewed-by: Dave Jiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: ioatdma: Fix kmemleak in ioat_pci_probe() [+ + +]
Author: Nikita Shubin <[email protected]>
Date:   Tue May 28 09:09:25 2024 +0300

    dmaengine: ioatdma: Fix kmemleak in ioat_pci_probe()
    
    [ Upstream commit 29b7cd255f3628e0d65be33a939d8b5bba10aa62 ]
    
    If probing fails we end up with leaking ioatdma_device and each
    allocated channel.
    
    Following kmemleak easy to reproduce by injecting an error in
    ioat_alloc_chan_resources() when doing ioat_dma_self_test().
    
    unreferenced object 0xffff888014ad5800 (size 1024): [..]
        [<ffffffff827692ca>] kmemleak_alloc+0x4a/0x80
        [<ffffffff81430600>] kmalloc_trace+0x270/0x2f0
        [<ffffffffa000b7d1>] ioat_pci_probe+0xc1/0x1c0 [ioatdma]
    [..]
    
    repeated for each ioatdma channel:
    
    unreferenced object 0xffff8880148e5c00 (size 512): [..]
        [<ffffffff827692ca>] kmemleak_alloc+0x4a/0x80
        [<ffffffff81430600>] kmalloc_trace+0x270/0x2f0
        [<ffffffffa0009641>] ioat_enumerate_channels+0x101/0x2d0 [ioatdma]
        [<ffffffffa000b266>] ioat3_dma_probe+0x4d6/0x970 [ioatdma]
        [<ffffffffa000b891>] ioat_pci_probe+0x181/0x1c0 [ioatdma]
    [..]
    
    Fixes: bf453a0a18b2 ("dmaengine: ioat: Support in-use unbind")
    Signed-off-by: Nikita Shubin <[email protected]>
    Reviewed-by: Dave Jiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: ioatdma: Fix leaking on version mismatch [+ + +]
Author: Nikita Shubin <[email protected]>
Date:   Tue May 28 09:09:23 2024 +0300

    dmaengine: ioatdma: Fix leaking on version mismatch
    
    [ Upstream commit 1b11b4ef6bd68591dcaf8423c7d05e794e6aec6f ]
    
    Fix leaking ioatdma_device if I/OAT version is less than IOAT_VER_3_0.
    
    Fixes: bf453a0a18b2 ("dmaengine: ioat: Support in-use unbind")
    Signed-off-by: Nikita Shubin <[email protected]>
    Reviewed-by: Dave Jiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: ioatdma: Fix missing kmem_cache_destroy() [+ + +]
Author: Nikita Shubin <[email protected]>
Date:   Tue May 14 13:52:31 2024 +0300

    dmaengine: ioatdma: Fix missing kmem_cache_destroy()
    
    [ Upstream commit 5422145d0b749ad554ada772133b9b20f9fb0ec8 ]
    
    Fix missing kmem_cache_destroy() for ioat_sed_cache in
    ioat_exit_module().
    
    Noticed via:
    
    ```
    modprobe ioatdma
    rmmod ioatdma
    modprobe ioatdma
    debugfs: Directory 'ioat_sed_ent' with parent 'slab' already present!
    ```
    
    Fixes: c0f28ce66ecf ("dmaengine: ioatdma: move all the init routines")
    Signed-off-by: Nikita Shubin <[email protected]>
    Acked-by: Dave Jiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/display: Exit idle optimizations before HDCP execution [+ + +]
Author: Nicholas Kazlauskas <[email protected]>
Date:   Mon Feb 12 16:51:59 2024 -0500

    drm/amd/display: Exit idle optimizations before HDCP execution
    
    [ Upstream commit f30a3bea92bdab398531129d187629fb1d28f598 ]
    
    [WHY]
    PSP can access DCN registers during command submission and we need
    to ensure that DCN is not in PG before doing so.
    
    [HOW]
    Add a callback to DM to lock and notify DC for idle optimization exit.
    It can't be DC directly because of a potential race condition with the
    link protection thread and the rest of DM operation.
    
    Cc: Mario Limonciello <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Reviewed-by: Charlene Liu <[email protected]>
    Acked-by: Alex Hung <[email protected]>
    Signed-off-by: Nicholas Kazlauskas <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: revert Exit idle optimizations before HDCP execution [+ + +]
Author: Martin Leung <[email protected]>
Date:   Mon Feb 26 13:20:08 2024 -0500

    drm/amd/display: revert Exit idle optimizations before HDCP execution
    
    commit f2703a3596a279b0be6eeed4c500bdbaa8dc3ce4 upstream.
    
    why and how:
    causes black screen on PNP on DCN 3.5
    
    This reverts commit f30a3bea92bd ("drm/amd/display: Exit idle
    optimizations before HDCP execution")
    
    Cc: Mario Limonciello <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Reviewed-by: Nicholas Kazlauskas <[email protected]>
    Acked-by: Wayne Lin <[email protected]>
    Signed-off-by: Martin Leung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/amdgpu: fix UBSAN warning in kv_dpm.c [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Mon May 20 09:05:21 2024 -0400

    drm/amdgpu: fix UBSAN warning in kv_dpm.c
    
    commit f0d576f840153392d04b2d52cf3adab8f62e8cb6 upstream.
    
    Adds bounds check for sumo_vid_mapping_entry.
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3392
    Reviewed-by: Mario Limonciello <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/i915/mso: using joiner is not possible with eDP MSO [+ + +]
Author: Jani Nikula <[email protected]>
Date:   Fri Jun 14 17:23:11 2024 +0300

    drm/i915/mso: using joiner is not possible with eDP MSO
    
    commit 49cc17967be95d64606d5684416ee51eec35e84a upstream.
    
    It's not possible to use the joiner at the same time with eDP MSO. When
    a panel needs MSO, it's not optional, so MSO trumps joiner.
    
    v3: Only change intel_dp_has_joiner(), leave debugfs alone (Ville)
    
    Fixes: bc71194e8897 ("drm/i915/edp: enable eDP MSO during link training")
    Cc: <[email protected]> # v5.13+
    Cc: Ville Syrjala <[email protected]>
    Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/1668
    Reviewed-by: Ville Syrjälä <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Jani Nikula <[email protected]>
    (cherry picked from commit 8b5a92ca24eb96bb71e2a55e352687487d87687f)
    Signed-off-by: Jani Nikula <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/lima: add mask irq callback to gp and pp [+ + +]
Author: Erico Nunes <[email protected]>
Date:   Fri Apr 5 17:29:49 2024 +0200

    drm/lima: add mask irq callback to gp and pp
    
    [ Upstream commit 49c13b4d2dd4a831225746e758893673f6ae961c ]
    
    This is needed because we want to reset those devices in device-agnostic
    code such as lima_sched.
    In particular, masking irqs will be useful before a hard reset to
    prevent race conditions.
    
    Signed-off-by: Erico Nunes <[email protected]>
    Signed-off-by: Qiang Yu <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/lima: mask irqs in timeout path before hard reset [+ + +]
Author: Erico Nunes <[email protected]>
Date:   Fri Apr 5 17:29:51 2024 +0200

    drm/lima: mask irqs in timeout path before hard reset
    
    [ Upstream commit a421cc7a6a001b70415aa4f66024fa6178885a14 ]
    
    There is a race condition in which a rendering job might take just long
    enough to trigger the drm sched job timeout handler but also still
    complete before the hard reset is done by the timeout handler.
    This runs into race conditions not expected by the timeout handler.
    In some very specific cases it currently may result in a refcount
    imbalance on lima_pm_idle, with a stack dump such as:
    
    [10136.669170] WARNING: CPU: 0 PID: 0 at drivers/gpu/drm/lima/lima_devfreq.c:205 lima_devfreq_record_idle+0xa0/0xb0
    ...
    [10136.669459] pc : lima_devfreq_record_idle+0xa0/0xb0
    ...
    [10136.669628] Call trace:
    [10136.669634]  lima_devfreq_record_idle+0xa0/0xb0
    [10136.669646]  lima_sched_pipe_task_done+0x5c/0xb0
    [10136.669656]  lima_gp_irq_handler+0xa8/0x120
    [10136.669666]  __handle_irq_event_percpu+0x48/0x160
    [10136.669679]  handle_irq_event+0x4c/0xc0
    
    We can prevent that race condition entirely by masking the irqs at the
    beginning of the timeout handler, at which point we give up on waiting
    for that job entirely.
    The irqs will be enabled again at the next hard reset which is already
    done as a recovery by the timeout handler.
    
    Signed-off-by: Erico Nunes <[email protected]>
    Reviewed-by: Qiang Yu <[email protected]>
    Signed-off-by: Qiang Yu <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/radeon: fix UBSAN warning in kv_dpm.c [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Mon May 20 09:11:45 2024 -0400

    drm/radeon: fix UBSAN warning in kv_dpm.c
    
    commit a498df5421fd737d11bfd152428ba6b1c8538321 upstream.
    
    Adds bounds check for sumo_vid_mapping_entry.
    
    Reviewed-by: Mario Limonciello <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drop_monitor: replace spin_lock by raw_spin_lock [+ + +]
Author: Wander Lairson Costa <[email protected]>
Date:   Thu Apr 11 11:13:46 2024 -0300

    drop_monitor: replace spin_lock by raw_spin_lock
    
    [ Upstream commit f1e197a665c2148ebc25fe09c53689e60afea195 ]
    
    trace_drop_common() is called with preemption disabled, and it acquires
    a spin_lock. This is problematic for RT kernels because spin_locks are
    sleeping locks in this configuration, which causes the following splat:
    
    BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
    in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 449, name: rcuc/47
    preempt_count: 1, expected: 0
    RCU nest depth: 2, expected: 2
    5 locks held by rcuc/47/449:
     #0: ff1100086ec30a60 ((softirq_ctrl.lock)){+.+.}-{2:2}, at: __local_bh_disable_ip+0x105/0x210
     #1: ffffffffb394a280 (rcu_read_lock){....}-{1:2}, at: rt_spin_lock+0xbf/0x130
     #2: ffffffffb394a280 (rcu_read_lock){....}-{1:2}, at: __local_bh_disable_ip+0x11c/0x210
     #3: ffffffffb394a160 (rcu_callback){....}-{0:0}, at: rcu_do_batch+0x360/0xc70
     #4: ff1100086ee07520 (&data->lock){+.+.}-{2:2}, at: trace_drop_common.constprop.0+0xb5/0x290
    irq event stamp: 139909
    hardirqs last  enabled at (139908): [<ffffffffb1df2b33>] _raw_spin_unlock_irqrestore+0x63/0x80
    hardirqs last disabled at (139909): [<ffffffffb19bd03d>] trace_drop_common.constprop.0+0x26d/0x290
    softirqs last  enabled at (139892): [<ffffffffb07a1083>] __local_bh_enable_ip+0x103/0x170
    softirqs last disabled at (139898): [<ffffffffb0909b33>] rcu_cpu_kthread+0x93/0x1f0
    Preemption disabled at:
    [<ffffffffb1de786b>] rt_mutex_slowunlock+0xab/0x2e0
    CPU: 47 PID: 449 Comm: rcuc/47 Not tainted 6.9.0-rc2-rt1+ #7
    Hardware name: Dell Inc. PowerEdge R650/0Y2G81, BIOS 1.6.5 04/15/2022
    Call Trace:
     <TASK>
     dump_stack_lvl+0x8c/0xd0
     dump_stack+0x14/0x20
     __might_resched+0x21e/0x2f0
     rt_spin_lock+0x5e/0x130
     ? trace_drop_common.constprop.0+0xb5/0x290
     ? skb_queue_purge_reason.part.0+0x1bf/0x230
     trace_drop_common.constprop.0+0xb5/0x290
     ? preempt_count_sub+0x1c/0xd0
     ? _raw_spin_unlock_irqrestore+0x4a/0x80
     ? __pfx_trace_drop_common.constprop.0+0x10/0x10
     ? rt_mutex_slowunlock+0x26a/0x2e0
     ? skb_queue_purge_reason.part.0+0x1bf/0x230
     ? __pfx_rt_mutex_slowunlock+0x10/0x10
     ? skb_queue_purge_reason.part.0+0x1bf/0x230
     trace_kfree_skb_hit+0x15/0x20
     trace_kfree_skb+0xe9/0x150
     kfree_skb_reason+0x7b/0x110
     skb_queue_purge_reason.part.0+0x1bf/0x230
     ? __pfx_skb_queue_purge_reason.part.0+0x10/0x10
     ? mark_lock.part.0+0x8a/0x520
    ...
    
    trace_drop_common() also disables interrupts, but this is a minor issue
    because we could easily replace it with a local_lock.
    
    Replace the spin_lock with raw_spin_lock to avoid sleeping in atomic
    context.
    
    Signed-off-by: Wander Lairson Costa <[email protected]>
    Reported-by: Hu Chunyu <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dt-bindings: i2c: google,cros-ec-i2c-tunnel: correct path to i2c-controller schema [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Thu Jun 20 13:34:50 2024 +0200

    dt-bindings: i2c: google,cros-ec-i2c-tunnel: correct path to i2c-controller schema
    
    commit 5c8cfd592bb7632200b4edac8f2c7ec892ed9d81 upstream.
    
    The referenced i2c-controller.yaml schema is provided by dtschema
    package (outside of Linux kernel), so use full path to reference it.
    
    Cc: [email protected]
    Fixes: 1acd4577a66f ("dt-bindings: i2c: convert i2c-cros-ec-tunnel to json-schema")
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Reviewed-by: Conor Dooley <[email protected]>
    Signed-off-by: Andi Shyti <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
f2fs: remove clear SB_INLINECRYPT flag in default_options [+ + +]
Author: Yunlei He <[email protected]>
Date:   Tue Mar 26 14:10:43 2024 +0800

    f2fs: remove clear SB_INLINECRYPT flag in default_options
    
    [ Upstream commit ac5eecf481c29942eb9a862e758c0c8b68090c33 ]
    
    In f2fs_remount, SB_INLINECRYPT flag will be clear and re-set.
    If create new file or open file during this gap, these files
    will not use inlinecrypt. Worse case, it may lead to data
    corruption if wrappedkey_v0 is enable.
    
    Thread A:                               Thread B:
    
    -f2fs_remount                           -f2fs_file_open or f2fs_new_inode
      -default_options
            <- clear SB_INLINECRYPT flag
    
                                              -fscrypt_select_encryption_impl
    
      -parse_options
            <- set SB_INLINECRYPT again
    
    Signed-off-by: Yunlei He <[email protected]>
    Reviewed-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
firmware: psci: Fix return value from psci_system_suspend() [+ + +]
Author: Sudeep Holla <[email protected]>
Date:   Wed May 15 10:55:28 2024 +0100

    firmware: psci: Fix return value from psci_system_suspend()
    
    [ Upstream commit e7c3696d4692e8046d25f6e63f983e934e12f2c5 ]
    
    Currently we return the value from invoke_psci_fn() directly as return
    value from psci_system_suspend(). It is wrong to send the PSCI interface
    return value directly. psci_to_linux_errno() provide the mapping from
    PSCI return value to the one that can be returned to the callers within
    the kernel.
    
    Use psci_to_linux_errno() to convert and return the correct value from
    psci_system_suspend().
    
    Fixes: faf7ec4a92c0 ("drivers: firmware: psci: add system suspend support")
    Acked-by: Mark Rutland <[email protected]>
    Signed-off-by: Sudeep Holla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
gcov: add support for GCC 14 [+ + +]
Author: Peter Oberparleiter <[email protected]>
Date:   Mon Jun 10 11:27:43 2024 +0200

    gcov: add support for GCC 14
    
    commit c1558bc57b8e5b4da5d821537cd30e2e660861d8 upstream.
    
    Using gcov on kernels compiled with GCC 14 results in truncated 16-byte
    long .gcda files with no usable data.  To fix this, update GCOV_COUNTERS
    to match the value defined by GCC 14.
    
    Tested with GCC versions 14.1.0 and 13.2.0.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Peter Oberparleiter <[email protected]>
    Reported-by: Allison Henderson <[email protected]>
    Reported-by: Chuck Lever III <[email protected]>
    Tested-by: Chuck Lever <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
HID: Add quirk for Logitech Casa touchpad [+ + +]
Author: Sean O'Brien <[email protected]>
Date:   Mon Apr 29 18:08:05 2024 +0000

    HID: Add quirk for Logitech Casa touchpad
    
    [ Upstream commit dd2c345a94cfa3873cc20db87387ee509c345c1b ]
    
    This device sometimes doesn't send touch release signals when moving
    from >=4 fingers to <4 fingers. Using MT_QUIRK_NOT_SEEN_MEANS_UP instead
    of MT_QUIRK_ALWAYS_VALID makes sure that no touches become stuck.
    
    MT_QUIRK_FORCE_MULTI_INPUT is not necessary for this device, but does no
    harm.
    
    Signed-off-by: Sean O'Brien <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
hid: asus: asus_report_fixup: fix potential read out of bounds [+ + +]
Author: Andrew Ballance <[email protected]>
Date:   Sun Jun 2 03:50:23 2024 -0500

    hid: asus: asus_report_fixup: fix potential read out of bounds
    
    commit 89e1ee118d6f0ee6bd6e80d8fe08839875daa241 upstream.
    
    syzbot reported a potential read out of bounds in asus_report_fixup.
    
    this patch adds checks so that a read out of bounds will not occur
    
    Signed-off-by: Andrew Ballance <[email protected]>
    Reported-by:  <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=07762f019fd03d01f04c
    Fixes: 59d2f5b7392e ("HID: asus: fix more n-key report descriptors if n-key quirked")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Benjamin Tissoires <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
HID: asus: fix more n-key report descriptors if n-key quirked [+ + +]
Author: Luke D. Jones <[email protected]>
Date:   Tue Apr 16 21:03:59 2024 +1200

    HID: asus: fix more n-key report descriptors if n-key quirked
    
    [ Upstream commit 59d2f5b7392e988a391e6924e177c1a68d50223d ]
    
    Adjusts the report descriptor for N-Key devices to
    make the output count 0x01 which completely avoids
    the need for a block of filtering.
    
    Signed-off-by: Luke D. Jones <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
i2c: ocores: set IACK bit after core is enabled [+ + +]
Author: Grygorii Tertychnyi <[email protected]>
Date:   Mon May 20 17:39:32 2024 +0200

    i2c: ocores: set IACK bit after core is enabled
    
    commit 5a72477273066b5b357801ab2d315ef14949d402 upstream.
    
    Setting IACK bit when core is disabled does not clear the "Interrupt Flag"
    bit in the status register, and the interrupt remains pending.
    
    Sometimes it causes failure for the very first message transfer, that is
    usually a device probe.
    
    Hence, set IACK bit after core is enabled to clear pending interrupt.
    
    Fixes: 18f98b1e3147 ("[PATCH] i2c: New bus driver for the OpenCores I2C controller")
    Signed-off-by: Grygorii Tertychnyi <[email protected]>
    Acked-by: Peter Korsgaard <[email protected]>
    Cc: [email protected]
    Signed-off-by: Andi Shyti <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ice: avoid IRQ collision to fix init failure on ACPI S3 resume [+ + +]
Author: En-Wei Wu <[email protected]>
Date:   Thu May 30 22:21:31 2024 +0800

    ice: avoid IRQ collision to fix init failure on ACPI S3 resume
    
    [ Upstream commit bc69ad74867dba1377abe14356c94a946d9837a3 ]
    
    A bug in https://bugzilla.kernel.org/show_bug.cgi?id=218906 describes
    that irdma would break and report hardware initialization failed after
    suspend/resume with Intel E810 NIC (tested on 6.9.0-rc5).
    
    The problem is caused due to the collision between the irq numbers
    requested in irdma and the irq numbers requested in other drivers
    after suspend/resume.
    
    The irq numbers used by irdma are derived from ice's ice_pf->msix_entries
    which stores mappings between MSI-X index and Linux interrupt number.
    It's supposed to be cleaned up when suspend and rebuilt in resume but
    it's not, causing irdma using the old irq numbers stored in the old
    ice_pf->msix_entries to request_irq() when resume. And eventually
    collide with other drivers.
    
    This patch fixes this problem. On suspend, we call ice_deinit_rdma() to
    clean up the ice_pf->msix_entries (and free the MSI-X vectors used by
    irdma if we've dynamically allocated them). On resume, we call
    ice_init_rdma() to rebuild the ice_pf->msix_entries (and allocate the
    MSI-X vectors if we would like to dynamically allocate them).
    
    Fixes: f9f5301e7e2d ("ice: Register auxiliary device to provide RDMA")
    Tested-by: Cyrus Lien <[email protected]>
    Signed-off-by: En-Wei Wu <[email protected]>
    Reviewed-by: Wojciech Drewek <[email protected]>
    Tested-by: Pucha Himasekhar Reddy <[email protected]> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ice: Fix VSI list rule with ICE_SW_LKUP_LAST type [+ + +]
Author: Marcin Szycik <[email protected]>
Date:   Tue Jun 18 14:02:05 2024 -0700

    ice: Fix VSI list rule with ICE_SW_LKUP_LAST type
    
    [ Upstream commit 74382aebc9035470ec4c789bdb0d09d8c14f261e ]
    
    Adding/updating VSI list rule, as well as allocating/freeing VSI list
    resource are called several times with type ICE_SW_LKUP_LAST, which fails
    because ice_update_vsi_list_rule() and ice_aq_alloc_free_vsi_list()
    consider it invalid. Allow calling these functions with ICE_SW_LKUP_LAST.
    
    This fixes at least one issue in switchdev mode, where the same rule with
    different action cannot be added, e.g.:
    
      tc filter add dev $PF1 ingress protocol arp prio 0 flower skip_sw \
        dst_mac ff:ff:ff:ff:ff:ff action mirred egress redirect dev $VF1_PR
      tc filter add dev $PF1 ingress protocol arp prio 0 flower skip_sw \
        dst_mac ff:ff:ff:ff:ff:ff action mirred egress redirect dev $VF2_PR
    
    Fixes: 0f94570d0cae ("ice: allow adding advanced rules")
    Suggested-by: Michal Swiatkowski <[email protected]>
    Reviewed-by: Michal Swiatkowski <[email protected]>
    Reviewed-by: Przemek Kitszel <[email protected]>
    Signed-off-by: Marcin Szycik <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Sujai Buvaneswaran <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ice: move RDMA init to ice_idc.c [+ + +]
Author: Michal Swiatkowski <[email protected]>
Date:   Wed Dec 21 12:38:13 2022 +0100

    ice: move RDMA init to ice_idc.c
    
    [ Upstream commit 2b8db6afbc95258175da69f31c9bfbea539aaa74 ]
    
    Simplify probe flow by moving all RDMA related code to ice_init_rdma().
    Unroll irq allocation if RDMA initialization fails.
    
    Implement ice_deinit_rdma() and use it in remove flow.
    
    Signed-off-by: Michal Swiatkowski <[email protected]>
    Acked-by: Dave Ertman <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Stable-dep-of: bc69ad74867d ("ice: avoid IRQ collision to fix init failure on ACPI S3 resume")
    Signed-off-by: Sasha Levin <[email protected]>

 
io_uring/sqpoll: work around a potential audit memory leak [+ + +]
Author: Jens Axboe <[email protected]>
Date:   Thu Mar 21 07:38:38 2024 -0600

    io_uring/sqpoll: work around a potential audit memory leak
    
    [ Upstream commit c4ce0ab27646f4206a9eb502d6fe45cb080e1cae ]
    
    kmemleak complains that there's a memory leak related to connect
    handling:
    
    unreferenced object 0xffff0001093bdf00 (size 128):
    comm "iou-sqp-455", pid 457, jiffies 4294894164
    hex dump (first 32 bytes):
    02 00 fa ea 7f 00 00 01 00 00 00 00 00 00 00 00  ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    backtrace (crc 2e481b1a):
    [<00000000c0a26af4>] kmemleak_alloc+0x30/0x38
    [<000000009c30bb45>] kmalloc_trace+0x228/0x358
    [<000000009da9d39f>] __audit_sockaddr+0xd0/0x138
    [<0000000089a93e34>] move_addr_to_kernel+0x1a0/0x1f8
    [<000000000b4e80e6>] io_connect_prep+0x1ec/0x2d4
    [<00000000abfbcd99>] io_submit_sqes+0x588/0x1e48
    [<00000000e7c25e07>] io_sq_thread+0x8a4/0x10e4
    [<00000000d999b491>] ret_from_fork+0x10/0x20
    
    which can can happen if:
    
    1) The command type does something on the prep side that triggers an
       audit call.
    2) The thread hasn't done any operations before this that triggered
       an audit call inside ->issue(), where we have audit_uring_entry()
       and audit_uring_exit().
    
    Work around this by issuing a blanket NOP operation before the SQPOLL
    does anything.
    
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iommu/arm-smmu-v3: Free MSIs in case of ENOMEM [+ + +]
Author: Aleksandr Aprelkov <[email protected]>
Date:   Wed Apr 3 12:37:59 2024 +0700

    iommu/arm-smmu-v3: Free MSIs in case of ENOMEM
    
    [ Upstream commit 80fea979dd9d48d67c5b48d2f690c5da3e543ebd ]
    
    If devm_add_action() returns -ENOMEM, then MSIs are allocated but not
    not freed on teardown. Use devm_add_action_or_reset() instead to keep
    the static analyser happy.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Aleksandr Aprelkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [will: Tweak commit message, remove warning message]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ipv6: prevent possible NULL deref in fib6_nh_init() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Jun 14 08:20:02 2024 +0000

    ipv6: prevent possible NULL deref in fib6_nh_init()
    
    [ Upstream commit 2eab4543a2204092c3a7af81d7d6c506e59a03a6 ]
    
    syzbot reminds us that in6_dev_get() can return NULL.
    
    fib6_nh_init()
        ip6_validate_gw(  &idev  )
            ip6_route_check_nh(  idev  )
                *idev = in6_dev_get(dev); // can be NULL
    
    Oops: general protection fault, probably for non-canonical address 0xdffffc00000000bc: 0000 [#1] PREEMPT SMP KASAN PTI
    KASAN: null-ptr-deref in range [0x00000000000005e0-0x00000000000005e7]
    CPU: 0 PID: 11237 Comm: syz-executor.3 Not tainted 6.10.0-rc2-syzkaller-00249-gbe27b8965297 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024
     RIP: 0010:fib6_nh_init+0x640/0x2160 net/ipv6/route.c:3606
    Code: 00 00 fc ff df 4c 8b 64 24 58 48 8b 44 24 28 4c 8b 74 24 30 48 89 c1 48 89 44 24 28 48 8d 98 e0 05 00 00 48 89 d8 48 c1 e8 03 <42> 0f b6 04 38 84 c0 0f 85 b3 17 00 00 8b 1b 31 ff 89 de e8 b8 8b
    RSP: 0018:ffffc900032775a0 EFLAGS: 00010202
    RAX: 00000000000000bc RBX: 00000000000005e0 RCX: 0000000000000000
    RDX: 0000000000000010 RSI: ffffc90003277a54 RDI: ffff88802b3a08d8
    RBP: ffffc900032778b0 R08: 00000000000002fc R09: 0000000000000000
    R10: 00000000000002fc R11: 0000000000000000 R12: ffff88802b3a08b8
    R13: 1ffff9200064eec8 R14: ffffc90003277a00 R15: dffffc0000000000
    FS:  00007f940feb06c0(0000) GS:ffff8880b9400000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000000 CR3: 00000000245e8000 CR4: 00000000003506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
      ip6_route_info_create+0x99e/0x12b0 net/ipv6/route.c:3809
      ip6_route_add+0x28/0x160 net/ipv6/route.c:3853
      ipv6_route_ioctl+0x588/0x870 net/ipv6/route.c:4483
      inet6_ioctl+0x21a/0x280 net/ipv6/af_inet6.c:579
      sock_do_ioctl+0x158/0x460 net/socket.c:1222
      sock_ioctl+0x629/0x8e0 net/socket.c:1341
      vfs_ioctl fs/ioctl.c:51 [inline]
      __do_sys_ioctl fs/ioctl.c:907 [inline]
      __se_sys_ioctl+0xfc/0x170 fs/ioctl.c:893
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f940f07cea9
    
    Fixes: 428604fb118f ("ipv6: do not set routes if disable_ipv6 has been enabled")
    Reported-by: syzbot <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Acked-by: Lorenzo Bianconi <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ipv6: prevent possible NULL dereference in rt6_probe() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Sat Jun 15 15:14:54 2024 +0000

    ipv6: prevent possible NULL dereference in rt6_probe()
    
    [ Upstream commit b86762dbe19a62e785c189f313cda5b989931f37 ]
    
    syzbot caught a NULL dereference in rt6_probe() [1]
    
    Bail out if  __in6_dev_get() returns NULL.
    
    [1]
    Oops: general protection fault, probably for non-canonical address 0xdffffc00000000cb: 0000 [#1] PREEMPT SMP KASAN PTI
    KASAN: null-ptr-deref in range [0x0000000000000658-0x000000000000065f]
    CPU: 1 PID: 22444 Comm: syz-executor.0 Not tainted 6.10.0-rc2-syzkaller-00383-gb8481381d4e2 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/02/2024
     RIP: 0010:rt6_probe net/ipv6/route.c:656 [inline]
     RIP: 0010:find_match+0x8c4/0xf50 net/ipv6/route.c:758
    Code: 14 fd f7 48 8b 85 38 ff ff ff 48 c7 45 b0 00 00 00 00 48 8d b8 5c 06 00 00 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <0f> b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 19
    RSP: 0018:ffffc900034af070 EFLAGS: 00010203
    RAX: dffffc0000000000 RBX: 0000000000000000 RCX: ffffc90004521000
    RDX: 00000000000000cb RSI: ffffffff8990d0cd RDI: 000000000000065c
    RBP: ffffc900034af150 R08: 0000000000000005 R09: 0000000000000000
    R10: 0000000000000001 R11: 0000000000000002 R12: 000000000000000a
    R13: 1ffff92000695e18 R14: ffff8880244a1d20 R15: 0000000000000000
    FS:  00007f4844a5a6c0(0000) GS:ffff8880b9300000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000001b31b27000 CR3: 000000002d42c000 CR4: 00000000003506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
      rt6_nh_find_match+0xfa/0x1a0 net/ipv6/route.c:784
      nexthop_for_each_fib6_nh+0x26d/0x4a0 net/ipv4/nexthop.c:1496
      __find_rr_leaf+0x6e7/0xe00 net/ipv6/route.c:825
      find_rr_leaf net/ipv6/route.c:853 [inline]
      rt6_select net/ipv6/route.c:897 [inline]
      fib6_table_lookup+0x57e/0xa30 net/ipv6/route.c:2195
      ip6_pol_route+0x1cd/0x1150 net/ipv6/route.c:2231
      pol_lookup_func include/net/ip6_fib.h:616 [inline]
      fib6_rule_lookup+0x386/0x720 net/ipv6/fib6_rules.c:121
      ip6_route_output_flags_noref net/ipv6/route.c:2639 [inline]
      ip6_route_output_flags+0x1d0/0x640 net/ipv6/route.c:2651
      ip6_dst_lookup_tail.constprop.0+0x961/0x1760 net/ipv6/ip6_output.c:1147
      ip6_dst_lookup_flow+0x99/0x1d0 net/ipv6/ip6_output.c:1250
      rawv6_sendmsg+0xdab/0x4340 net/ipv6/raw.c:898
      inet_sendmsg+0x119/0x140 net/ipv4/af_inet.c:853
      sock_sendmsg_nosec net/socket.c:730 [inline]
      __sock_sendmsg net/socket.c:745 [inline]
      sock_write_iter+0x4b8/0x5c0 net/socket.c:1160
      new_sync_write fs/read_write.c:497 [inline]
      vfs_write+0x6b6/0x1140 fs/read_write.c:590
      ksys_write+0x1f8/0x260 fs/read_write.c:643
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Fixes: 52e1635631b3 ("[IPV6]: ROUTE: Add router_probe_interval sysctl.")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Jason Xing <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
kbuild: Remove support for Clang's ThinLTO caching [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Wed May 1 15:55:25 2024 -0700

    kbuild: Remove support for Clang's ThinLTO caching
    
    commit aba091547ef6159d52471f42a3ef531b7b660ed8 upstream.
    
    There is an issue in clang's ThinLTO caching (enabled for the kernel via
    '--thinlto-cache-dir') with .incbin, which the kernel occasionally uses
    to include data within the kernel, such as the .config file for
    /proc/config.gz. For example, when changing the .config and rebuilding
    vmlinux, the copy of .config in vmlinux does not match the copy of
    .config in the build folder:
    
      $ echo 'CONFIG_LTO_NONE=n
      CONFIG_LTO_CLANG_THIN=y
      CONFIG_IKCONFIG=y
      CONFIG_HEADERS_INSTALL=y' >kernel/configs/repro.config
    
      $ make -skj"$(nproc)" ARCH=x86_64 LLVM=1 clean defconfig repro.config vmlinux
      ...
    
      $ grep CONFIG_HEADERS_INSTALL .config
      CONFIG_HEADERS_INSTALL=y
    
      $ scripts/extract-ikconfig vmlinux | grep CONFIG_HEADERS_INSTALL
      CONFIG_HEADERS_INSTALL=y
    
      $ scripts/config -d HEADERS_INSTALL
    
      $ make -kj"$(nproc)" ARCH=x86_64 LLVM=1 vmlinux
      ...
        UPD     kernel/config_data
        GZIP    kernel/config_data.gz
        CC      kernel/configs.o
      ...
        LD      vmlinux
      ...
    
      $ grep CONFIG_HEADERS_INSTALL .config
      # CONFIG_HEADERS_INSTALL is not set
    
      $ scripts/extract-ikconfig vmlinux | grep CONFIG_HEADERS_INSTALL
      CONFIG_HEADERS_INSTALL=y
    
    Without '--thinlto-cache-dir' or when using full LTO, this issue does
    not occur.
    
    Benchmarking incremental builds on a few different machines with and
    without the cache shows a 20% increase in incremental build time without
    the cache when measured by touching init/main.c and running 'make all'.
    
    ARCH=arm64 defconfig + CONFIG_LTO_CLANG_THIN=y on an arm64 host:
    
      Benchmark 1: With ThinLTO cache
        Time (mean ± σ):     56.347 s ±  0.163 s    [User: 83.768 s, System: 24.661 s]
        Range (min … max):   56.109 s … 56.594 s    10 runs
    
      Benchmark 2: Without ThinLTO cache
        Time (mean ± σ):     67.740 s ±  0.479 s    [User: 718.458 s, System: 31.797 s]
        Range (min … max):   67.059 s … 68.556 s    10 runs
    
      Summary
        With ThinLTO cache ran
          1.20 ± 0.01 times faster than Without ThinLTO cache
    
    ARCH=x86_64 defconfig + CONFIG_LTO_CLANG_THIN=y on an x86_64 host:
    
      Benchmark 1: With ThinLTO cache
        Time (mean ± σ):     85.772 s ±  0.252 s    [User: 91.505 s, System: 8.408 s]
        Range (min … max):   85.447 s … 86.244 s    10 runs
    
      Benchmark 2: Without ThinLTO cache
        Time (mean ± σ):     103.833 s ±  0.288 s    [User: 232.058 s, System: 8.569 s]
        Range (min … max):   103.286 s … 104.124 s    10 runs
    
      Summary
        With ThinLTO cache ran
          1.21 ± 0.00 times faster than Without ThinLTO cache
    
    While it is unfortunate to take this performance improvement off the
    table, correctness is more important. If/when this is fixed in LLVM, it
    can potentially be brought back in a conditional manner. Alternatively,
    a developer can just disable LTO if doing incremental compiles quickly
    is important, as a full compile cycle can still take over a minute even
    with the cache and it is unlikely that LTO will result in functional
    differences for a kernel change.
    
    Cc: [email protected]
    Fixes: dc5723b02e52 ("kbuild: add support for Clang LTO")
    Reported-by: Yifan Hong <[email protected]>
    Closes: https://github.com/ClangBuiltLinux/linux/issues/2021
    Reported-by: Masami Hiramatsu <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]/
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    [nathan: Address conflict in Makefile]
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
kcov: don't lose track of remote references during softirqs [+ + +]
Author: Aleksandr Nogikh <[email protected]>
Date:   Tue Jun 11 15:32:29 2024 +0200

    kcov: don't lose track of remote references during softirqs
    
    commit 01c8f9806bde438ca1c8cbbc439f0a14a6694f6c upstream.
    
    In kcov_remote_start()/kcov_remote_stop(), we swap the previous KCOV
    metadata of the current task into a per-CPU variable.  However, the
    kcov_mode_enabled(mode) check is not sufficient in the case of remote KCOV
    coverage: current->kcov_mode always remains KCOV_MODE_DISABLED for remote
    KCOV objects.
    
    If the original task that has invoked the KCOV_REMOTE_ENABLE ioctl happens
    to get interrupted and kcov_remote_start() is called, it ultimately leads
    to kcov_remote_stop() NOT restoring the original KCOV reference.  So when
    the task exits, all registered remote KCOV handles remain active forever.
    
    The most uncomfortable effect (at least for syzkaller) is that the bug
    prevents the reuse of the same /sys/kernel/debug/kcov descriptor.  If
    we obtain it in the parent process and then e.g.  drop some
    capabilities and continuously fork to execute individual programs, at
    some point current->kcov of the forked process is lost,
    kcov_task_exit() takes no action, and all KCOV_REMOTE_ENABLE ioctls
    calls from subsequent forks fail.
    
    And, yes, the efficiency is also affected if we keep on losing remote
    kcov objects.
    a) kcov_remote_map keeps on growing forever.
    b) (If I'm not mistaken), we're also not freeing the memory referenced
    by kcov->area.
    
    Fix it by introducing a special kcov_mode that is assigned to the task
    that owns a KCOV remote object.  It makes kcov_mode_enabled() return true
    and yet does not trigger coverage collection in __sanitizer_cov_trace_pc()
    and write_comp_data().
    
    [[email protected]: replace WRITE_ONCE() with an ordinary assignment]
      Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 5ff3b30ab57d ("kcov: collect coverage from interrupts")
    Signed-off-by: Aleksandr Nogikh <[email protected]>
    Reviewed-by: Dmitry Vyukov <[email protected]>
    Reviewed-by: Andrey Konovalov <[email protected]>
    Tested-by: Andrey Konovalov <[email protected]>
    Cc: Alexander Potapenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Marco Elver <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
kheaders: explicitly define file modes for archived headers [+ + +]
Author: Matthias Maennich <[email protected]>
Date:   Tue May 28 11:32:43 2024 +0000

    kheaders: explicitly define file modes for archived headers
    
    [ Upstream commit 3bd27a847a3a4827a948387cc8f0dbc9fa5931d5 ]
    
    Build environments might be running with different umask settings
    resulting in indeterministic file modes for the files contained in
    kheaders.tar.xz. The file itself is served with 444, i.e. world
    readable. Archive the files explicitly with 744,a+X to improve
    reproducibility across build environments.
    
    --mode=0444 is not suitable as directories need to be executable. Also,
    444 makes it hard to delete all the readonly files after extraction.
    
    Cc: [email protected]
    Signed-off-by: Matthias Maennich <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
kselftest: arm64: Add a null pointer check [+ + +]
Author: Kunwu Chan <[email protected]>
Date:   Tue Apr 23 16:21:02 2024 +0800

    kselftest: arm64: Add a null pointer check
    
    [ Upstream commit 80164282b3620a3cb73de6ffda5592743e448d0e ]
    
    There is a 'malloc' call, which can be unsuccessful.
    This patch will add the malloc failure checking
    to avoid possible null dereference and give more information
    about test fail reasons.
    
    Signed-off-by: Kunwu Chan <[email protected]>
    Reviewed-by: Muhammad Usama Anjum <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
KVM: arm64: Disassociate vcpus from redistributor region on teardown [+ + +]
Author: Marc Zyngier <[email protected]>
Date:   Wed Jun 5 18:56:37 2024 +0100

    KVM: arm64: Disassociate vcpus from redistributor region on teardown
    
    commit 0d92e4a7ffd5c42b9fa864692f82476c0bf8bcc8 upstream.
    
    When tearing down a redistributor region, make sure we don't have
    any dangling pointer to that region stored in a vcpu.
    
    Fixes: e5a35635464b ("kvm: arm64: vgic-v3: Introduce vgic_v3_free_redist_region()")
    Reported-by: Alexander Potapenko <[email protected]>
    Reviewed-by: Oliver Upton <[email protected]>
    Signed-off-by: Marc Zyngier <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

KVM: Fix a data race on last_boosted_vcpu in kvm_vcpu_on_spin() [+ + +]
Author: Breno Leitao <[email protected]>
Date:   Fri May 10 02:23:52 2024 -0700

    KVM: Fix a data race on last_boosted_vcpu in kvm_vcpu_on_spin()
    
    commit 49f683b41f28918df3e51ddc0d928cb2e934ccdb upstream.
    
    Use {READ,WRITE}_ONCE() to access kvm->last_boosted_vcpu to ensure the
    loads and stores are atomic.  In the extremely unlikely scenario the
    compiler tears the stores, it's theoretically possible for KVM to attempt
    to get a vCPU using an out-of-bounds index, e.g. if the write is split
    into multiple 8-bit stores, and is paired with a 32-bit load on a VM with
    257 vCPUs:
    
      CPU0                              CPU1
      last_boosted_vcpu = 0xff;
    
                                        (last_boosted_vcpu = 0x100)
                                        last_boosted_vcpu[15:8] = 0x01;
      i = (last_boosted_vcpu = 0x1ff)
                                        last_boosted_vcpu[7:0] = 0x00;
    
      vcpu = kvm->vcpu_array[0x1ff];
    
    As detected by KCSAN:
    
      BUG: KCSAN: data-race in kvm_vcpu_on_spin [kvm] / kvm_vcpu_on_spin [kvm]
    
      write to 0xffffc90025a92344 of 4 bytes by task 4340 on cpu 16:
      kvm_vcpu_on_spin (arch/x86/kvm/../../../virt/kvm/kvm_main.c:4112) kvm
      handle_pause (arch/x86/kvm/vmx/vmx.c:5929) kvm_intel
      vmx_handle_exit (arch/x86/kvm/vmx/vmx.c:?
                     arch/x86/kvm/vmx/vmx.c:6606) kvm_intel
      vcpu_run (arch/x86/kvm/x86.c:11107 arch/x86/kvm/x86.c:11211) kvm
      kvm_arch_vcpu_ioctl_run (arch/x86/kvm/x86.c:?) kvm
      kvm_vcpu_ioctl (arch/x86/kvm/../../../virt/kvm/kvm_main.c:?) kvm
      __se_sys_ioctl (fs/ioctl.c:52 fs/ioctl.c:904 fs/ioctl.c:890)
      __x64_sys_ioctl (fs/ioctl.c:890)
      x64_sys_call (arch/x86/entry/syscall_64.c:33)
      do_syscall_64 (arch/x86/entry/common.c:?)
      entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
    
      read to 0xffffc90025a92344 of 4 bytes by task 4342 on cpu 4:
      kvm_vcpu_on_spin (arch/x86/kvm/../../../virt/kvm/kvm_main.c:4069) kvm
      handle_pause (arch/x86/kvm/vmx/vmx.c:5929) kvm_intel
      vmx_handle_exit (arch/x86/kvm/vmx/vmx.c:?
                            arch/x86/kvm/vmx/vmx.c:6606) kvm_intel
      vcpu_run (arch/x86/kvm/x86.c:11107 arch/x86/kvm/x86.c:11211) kvm
      kvm_arch_vcpu_ioctl_run (arch/x86/kvm/x86.c:?) kvm
      kvm_vcpu_ioctl (arch/x86/kvm/../../../virt/kvm/kvm_main.c:?) kvm
      __se_sys_ioctl (fs/ioctl.c:52 fs/ioctl.c:904 fs/ioctl.c:890)
      __x64_sys_ioctl (fs/ioctl.c:890)
      x64_sys_call (arch/x86/entry/syscall_64.c:33)
      do_syscall_64 (arch/x86/entry/common.c:?)
      entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
    
      value changed: 0x00000012 -> 0x00000000
    
    Fixes: 217ece6129f2 ("KVM: use yield_to instead of sleep in kvm_vcpu_on_spin")
    Cc: [email protected]
    Signed-off-by: Breno Leitao <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

KVM: x86: Always sync PIR to IRR prior to scanning I/O APIC routes [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Mon Jun 10 18:48:45 2024 -0700

    KVM: x86: Always sync PIR to IRR prior to scanning I/O APIC routes
    
    commit f3ced000a2df53f4b12849e121769045a81a3b22 upstream.
    
    Sync pending posted interrupts to the IRR prior to re-scanning I/O APIC
    routes, irrespective of whether the I/O APIC is emulated by userspace or
    by KVM.  If a level-triggered interrupt routed through the I/O APIC is
    pending or in-service for a vCPU, KVM needs to intercept EOIs on said
    vCPU even if the vCPU isn't the destination for the new routing, e.g. if
    servicing an interrupt using the old routing races with I/O APIC
    reconfiguration.
    
    Commit fceb3a36c29a ("KVM: x86: ioapic: Fix level-triggered EOI and
    userspace I/OAPIC reconfigure race") fixed the common cases, but
    kvm_apic_pending_eoi() only checks if an interrupt is in the local
    APIC's IRR or ISR, i.e. misses the uncommon case where an interrupt is
    pending in the PIR.
    
    Failure to intercept EOI can manifest as guest hangs with Windows 11 if
    the guest uses the RTC as its timekeeping source, e.g. if the VMM doesn't
    expose a more modern form of time to the guest.
    
    Cc: [email protected]
    Cc: Adamos Ttofari <[email protected]>
    Cc: Raghavendra Rao Ananta <[email protected]>
    Reviewed-by: Jim Mattson <[email protected]>
    Signed-off-by: Sean Christopherson <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Paolo Bonzini <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Linux: Linux 6.1.96 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Thu Jun 27 13:46:24 2024 +0200

    Linux 6.1.96
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Tested-by: SeongJae Park <[email protected]>
    Tested-by: Mark Brown <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: kernelci.org bot <[email protected]>
    Tested-by: Salvatore Bonaccorso <[email protected]>
    Tested-by: Allen Pais <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Mateusz Jończyk <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Kelsey Steele <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mips: bmips: BCM6358: make sure CBR is correctly set [+ + +]
Author: Christian Marangi <[email protected]>
Date:   Tue Jun 11 13:35:33 2024 +0200

    mips: bmips: BCM6358: make sure CBR is correctly set
    
    [ Upstream commit ce5cdd3b05216b704a704f466fb4c2dff3778caf ]
    
    It was discovered that some device have CBR address set to 0 causing
    kernel panic when arch_sync_dma_for_cpu_all is called.
    
    This was notice in situation where the system is booted from TP1 and
    BMIPS_GET_CBR() returns 0 instead of a valid address and
    !!(read_c0_brcm_cmt_local() & (1 << 31)); not failing.
    
    The current check whether RAC flush should be disabled or not are not
    enough hence lets check if CBR is a valid address or not.
    
    Fixes: ab327f8acdf8 ("mips: bmips: BCM6358: disable RAC flush for TP1")
    Signed-off-by: Christian Marangi <[email protected]>
    Acked-by: Florian Fainelli <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
MIPS: dts: bcm63268: Add missing properties to the TWD node [+ + +]
Author: Florian Fainelli <[email protected]>
Date:   Tue Dec 20 11:09:46 2022 -0800

    MIPS: dts: bcm63268: Add missing properties to the TWD node
    
    commit 24b333a866a10d4be47b9968b9c05a3e9f326ff5 upstream.
    
    We currently have a DTC warning with the current DTS due to the lack of
    a suitable #address-cells and #size-cells property:
    
      DTC     arch/mips/boot/dts/brcm/bcm63268-comtrend-vr-3032u.dtb
    arch/mips/boot/dts/brcm/bcm63268.dtsi:115.5-22: Warning (reg_format): /ubus/timer-mfd@10000080/timer@0:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
    arch/mips/boot/dts/brcm/bcm63268.dtsi:120.5-22: Warning (reg_format): /ubus/timer-mfd@10000080/watchdog@1c:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
    arch/mips/boot/dts/brcm/bcm63268.dtsi:111.4-35: Warning (ranges_format): /ubus/timer-mfd@10000080:ranges: "ranges" property has invalid length (12 bytes) (parent #address-cells == 1, child #address-cells == 2, #size-cells == 1)
    
    Fixes: d3db4b96ab7f ("mips: dts: bcm63268: add TWD block timer")
    Signed-off-by: Florian Fainelli <[email protected]>
    Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

MIPS: Octeon: Add PCIe link status check [+ + +]
Author: Songyang Li <[email protected]>
Date:   Wed Mar 20 23:22:00 2024 +0800

    MIPS: Octeon: Add PCIe link status check
    
    [ Upstream commit 29b83a64df3b42c88c0338696feb6fdcd7f1f3b7 ]
    
    The standard PCIe configuration read-write interface is used to
    access the configuration space of the peripheral PCIe devices
    of the mips processor after the PCIe link surprise down, it can
    generate kernel panic caused by "Data bus error". So it is
    necessary to add PCIe link status check for system protection.
    When the PCIe link is down or in training, assigning a value
    of 0 to the configuration address can prevent read-write behavior
    to the configuration space of peripheral PCIe devices, thereby
    preventing kernel panic.
    
    Signed-off-by: Songyang Li <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

MIPS: Routerboard 532: Fix vendor retry check code [+ + +]
Author: Ilpo Järvinen <[email protected]>
Date:   Wed May 8 15:07:00 2024 +0300

    MIPS: Routerboard 532: Fix vendor retry check code
    
    [ Upstream commit ae9daffd9028f2500c9ac1517e46d4f2b57efb80 ]
    
    read_config_dword() contains strange condition checking ret for a
    number of values. The ret variable, however, is always zero because
    config_access() never returns anything else. Thus, the retry is always
    taken until number of tries is exceeded.
    
    The code looks like it wants to check *val instead of ret to see if the
    read gave an error response.
    
    Fixes: 73b4390fb234 ("[MIPS] Routerboard 532: Support for base system")
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mm/page_table_check: fix crash on ZONE_DEVICE [+ + +]
Author: Peter Xu <[email protected]>
Date:   Wed Jun 5 17:21:46 2024 -0400

    mm/page_table_check: fix crash on ZONE_DEVICE
    
    commit 8bb592c2eca8fd2bc06db7d80b38da18da4a2f43 upstream.
    
    Not all pages may apply to pgtable check.  One example is ZONE_DEVICE
    pages: they map PFNs directly, and they don't allocate page_ext at all
    even if there's struct page around.  One may reference
    devm_memremap_pages().
    
    When both ZONE_DEVICE and page-table-check enabled, then try to map some
    dax memories, one can trigger kernel bug constantly now when the kernel
    was trying to inject some pfn maps on the dax device:
    
     kernel BUG at mm/page_table_check.c:55!
    
    While it's pretty legal to use set_pxx_at() for ZONE_DEVICE pages for page
    fault resolutions, skip all the checks if page_ext doesn't even exist in
    pgtable checker, which applies to ZONE_DEVICE but maybe more.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: df4e817b7108 ("mm: page table check")
    Signed-off-by: Peter Xu <[email protected]>
    Reviewed-by: Pasha Tatashin <[email protected]>
    Reviewed-by: Dan Williams <[email protected]>
    Reviewed-by: Alistair Popple <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm: mmap: allow for the maximum number of bits for randomizing mmap_base by default [+ + +]
Author: Rafael Aquini <[email protected]>
Date:   Thu Jun 6 14:06:22 2024 -0400

    mm: mmap: allow for the maximum number of bits for randomizing mmap_base by default
    
    commit 3afb76a66b5559a7b595155803ce23801558a7a9 upstream.
    
    An ASLR regression was noticed [1] and tracked down to file-mapped areas
    being backed by THP in recent kernels.  The 21-bit alignment constraint
    for such mappings reduces the entropy for randomizing the placement of
    64-bit library mappings and breaks ASLR completely for 32-bit libraries.
    
    The reported issue is easily addressed by increasing vm.mmap_rnd_bits and
    vm.mmap_rnd_compat_bits.  This patch just provides a simple way to set
    ARCH_MMAP_RND_BITS and ARCH_MMAP_RND_COMPAT_BITS to their maximum values
    allowed by the architecture at build time.
    
    [1] https://zolutal.github.io/aslrnt/
    
    [[email protected]: default to `y' if 32-bit, per Rafael]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 1854bc6e2420 ("mm/readahead: Align file mappings for non-DAX")
    Signed-off-by: Rafael Aquini <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Heiko Carstens <[email protected]>
    Cc: Mike Rapoport (IBM) <[email protected]>
    Cc: Paul E. McKenney <[email protected]>
    Cc: Petr Mladek <[email protected]>
    Cc: Samuel Holland <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net/sched: act_api: fix possible infinite loop in tcf_idr_check_alloc() [+ + +]
Author: David Ruth <[email protected]>
Date:   Fri Jun 14 19:03:26 2024 +0000

    net/sched: act_api: fix possible infinite loop in tcf_idr_check_alloc()
    
    [ Upstream commit d864319871b05fadd153e0aede4811ca7008f5d6 ]
    
    syzbot found hanging tasks waiting on rtnl_lock [1]
    
    A reproducer is available in the syzbot bug.
    
    When a request to add multiple actions with the same index is sent, the
    second request will block forever on the first request. This holds
    rtnl_lock, and causes tasks to hang.
    
    Return -EAGAIN to prevent infinite looping, while keeping documented
    behavior.
    
    [1]
    
    INFO: task kworker/1:0:5088 blocked for more than 143 seconds.
    Not tainted 6.9.0-rc4-syzkaller-00173-g3cdb45594619 #0
    "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    task:kworker/1:0 state:D stack:23744 pid:5088 tgid:5088 ppid:2 flags:0x00004000
    Workqueue: events_power_efficient reg_check_chans_work
    Call Trace:
    <TASK>
    context_switch kernel/sched/core.c:5409 [inline]
    __schedule+0xf15/0x5d00 kernel/sched/core.c:6746
    __schedule_loop kernel/sched/core.c:6823 [inline]
    schedule+0xe7/0x350 kernel/sched/core.c:6838
    schedule_preempt_disabled+0x13/0x30 kernel/sched/core.c:6895
    __mutex_lock_common kernel/locking/mutex.c:684 [inline]
    __mutex_lock+0x5b8/0x9c0 kernel/locking/mutex.c:752
    wiphy_lock include/net/cfg80211.h:5953 [inline]
    reg_leave_invalid_chans net/wireless/reg.c:2466 [inline]
    reg_check_chans_work+0x10a/0x10e0 net/wireless/reg.c:2481
    
    Fixes: 0190c1d452a9 ("net: sched: atomically check-allocate action")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=b87c222546179f4513a7
    Signed-off-by: David Ruth <[email protected]>
    Reviewed-by: Jamal Hadi Salim <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/sched: act_api: rely on rcu in tcf_idr_check_alloc [+ + +]
Author: Pedro Tammela <[email protected]>
Date:   Mon Dec 11 15:18:06 2023 -0300

    net/sched: act_api: rely on rcu in tcf_idr_check_alloc
    
    [ Upstream commit 4b55e86736d5b492cf689125da2600f59c7d2c39 ]
    
    Instead of relying only on the idrinfo->lock mutex for
    bind/alloc logic, rely on a combination of rcu + mutex + atomics
    to better scale the case where multiple rtnl-less filters are
    binding to the same action object.
    
    Action binding happens when an action index is specified explicitly and
    an action exists which such index exists. Example:
      tc actions add action drop index 1
      tc filter add ... matchall action drop index 1
      tc filter add ... matchall action drop index 1
      tc filter add ... matchall action drop index 1
      tc filter ls ...
         filter protocol all pref 49150 matchall chain 0 filter protocol all pref 49150 matchall chain 0 handle 0x1
         not_in_hw
               action order 1: gact action drop
                random type none pass val 0
                index 1 ref 4 bind 3
    
       filter protocol all pref 49151 matchall chain 0 filter protocol all pref 49151 matchall chain 0 handle 0x1
         not_in_hw
               action order 1: gact action drop
                random type none pass val 0
                index 1 ref 4 bind 3
    
       filter protocol all pref 49152 matchall chain 0 filter protocol all pref 49152 matchall chain 0 handle 0x1
         not_in_hw
               action order 1: gact action drop
                random type none pass val 0
                index 1 ref 4 bind 3
    
    When no index is specified, as before, grab the mutex and allocate
    in the idr the next available id. In this version, as opposed to before,
    it's simplified to store the -EBUSY pointer instead of the previous
    alloc + replace combination.
    
    When an index is specified, rely on rcu to find if there's an object in
    such index. If there's none, fallback to the above, serializing on the
    mutex and reserving the specified id. If there's one, it can be an -EBUSY
    pointer, in which case we just try again until it's an action, or an action.
    Given the rcu guarantees, the action found could be dead and therefore
    we need to bump the refcount if it's not 0, handling the case it's
    in fact 0.
    
    As bind and the action refcount are already atomics, these increments can
    happen without the mutex protection while many tcf_idr_check_alloc race
    to bind to the same action instance.
    
    In case binding encounters a parallel delete or add, it will return
    -EAGAIN in order to try again. Both filter and action apis already
    have the retry machinery in-place. In case it's an unlocked filter it
    retries under the rtnl lock.
    
    Signed-off-by: Pedro Tammela <[email protected]>
    Acked-by: Jamal Hadi Salim <[email protected]>
    Reviewed-by: Vlad Buslov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: d864319871b0 ("net/sched: act_api: fix possible infinite loop in tcf_idr_check_alloc()")
    Signed-off-by: Sasha Levin <[email protected]>

net/sched: fix false lockdep warning on qdisc root lock [+ + +]
Author: Davide Caratti <[email protected]>
Date:   Thu Apr 18 15:50:11 2024 +0200

    net/sched: fix false lockdep warning on qdisc root lock
    
    [ Upstream commit af0cb3fa3f9ed258d14abab0152e28a0f9593084 ]
    
    Xiumei and Christoph reported the following lockdep splat, complaining of
    the qdisc root lock being taken twice:
    
     ============================================
     WARNING: possible recursive locking detected
     6.7.0-rc3+ #598 Not tainted
     --------------------------------------------
     swapper/2/0 is trying to acquire lock:
     ffff888177190110 (&sch->q.lock){+.-.}-{2:2}, at: __dev_queue_xmit+0x1560/0x2e70
    
     but task is already holding lock:
     ffff88811995a110 (&sch->q.lock){+.-.}-{2:2}, at: __dev_queue_xmit+0x1560/0x2e70
    
     other info that might help us debug this:
      Possible unsafe locking scenario:
    
            CPU0
            ----
       lock(&sch->q.lock);
       lock(&sch->q.lock);
    
      *** DEADLOCK ***
    
      May be due to missing lock nesting notation
    
     5 locks held by swapper/2/0:
      #0: ffff888135a09d98 ((&in_dev->mr_ifc_timer)){+.-.}-{0:0}, at: call_timer_fn+0x11a/0x510
      #1: ffffffffaaee5260 (rcu_read_lock){....}-{1:2}, at: ip_finish_output2+0x2c0/0x1ed0
      #2: ffffffffaaee5200 (rcu_read_lock_bh){....}-{1:2}, at: __dev_queue_xmit+0x209/0x2e70
      #3: ffff88811995a110 (&sch->q.lock){+.-.}-{2:2}, at: __dev_queue_xmit+0x1560/0x2e70
      #4: ffffffffaaee5200 (rcu_read_lock_bh){....}-{1:2}, at: __dev_queue_xmit+0x209/0x2e70
    
     stack backtrace:
     CPU: 2 PID: 0 Comm: swapper/2 Not tainted 6.7.0-rc3+ #598
     Hardware name: Red Hat KVM, BIOS 1.13.0-2.module+el8.3.0+7353+9de0a3cc 04/01/2014
     Call Trace:
      <IRQ>
      dump_stack_lvl+0x4a/0x80
      __lock_acquire+0xfdd/0x3150
      lock_acquire+0x1ca/0x540
      _raw_spin_lock+0x34/0x80
      __dev_queue_xmit+0x1560/0x2e70
      tcf_mirred_act+0x82e/0x1260 [act_mirred]
      tcf_action_exec+0x161/0x480
      tcf_classify+0x689/0x1170
      prio_enqueue+0x316/0x660 [sch_prio]
      dev_qdisc_enqueue+0x46/0x220
      __dev_queue_xmit+0x1615/0x2e70
      ip_finish_output2+0x1218/0x1ed0
      __ip_finish_output+0x8b3/0x1350
      ip_output+0x163/0x4e0
      igmp_ifc_timer_expire+0x44b/0x930
      call_timer_fn+0x1a2/0x510
      run_timer_softirq+0x54d/0x11a0
      __do_softirq+0x1b3/0x88f
      irq_exit_rcu+0x18f/0x1e0
      sysvec_apic_timer_interrupt+0x6f/0x90
      </IRQ>
    
    This happens when TC does a mirred egress redirect from the root qdisc of
    device A to the root qdisc of device B. As long as these two locks aren't
    protecting the same qdisc, they can be acquired in chain: add a per-qdisc
    lockdep key to silence false warnings.
    This dynamic key should safely replace the static key we have in sch_htb:
    it was added to allow enqueueing to the device "direct qdisc" while still
    holding the qdisc root lock.
    
    v2: don't use static keys anymore in HTB direct qdiscs (thanks Eric Dumazet)
    
    CC: Maxim Mikityanskiy <[email protected]>
    CC: Xiumei Mu <[email protected]>
    Reported-by: Christoph Paasch <[email protected]>
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/451
    Signed-off-by: Davide Caratti <[email protected]>
    Link: https://lore.kernel.org/r/7dc06d6158f72053cf877a82e2a7a5bd23692faa.1713448007.git.dcaratti@redhat.com
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/sched: unregister lockdep keys in qdisc_create/qdisc_alloc error path [+ + +]
Author: Davide Caratti <[email protected]>
Date:   Tue Apr 30 19:11:13 2024 +0200

    net/sched: unregister lockdep keys in qdisc_create/qdisc_alloc error path
    
    commit 86735b57c905e775f05de995df35379366b72168 upstream.
    
    Naresh and Eric report several errors (corrupted elements in the dynamic
    key hash list), when running tdc.py or syzbot. The error path of
    qdisc_alloc() and qdisc_create() frees the qdisc memory, but it forgets
    to unregister the lockdep key, thus causing use-after-free like the
    following one:
    
     ==================================================================
     BUG: KASAN: slab-use-after-free in lockdep_register_key+0x5f2/0x700
     Read of size 8 at addr ffff88811236f2a8 by task ip/7925
    
     CPU: 26 PID: 7925 Comm: ip Kdump: loaded Not tainted 6.9.0-rc2+ #648
     Hardware name: Supermicro SYS-6027R-72RF/X9DRH-7TF/7F/iTF/iF, BIOS 3.0  07/26/2013
     Call Trace:
      <TASK>
      dump_stack_lvl+0x7c/0xc0
      print_report+0xc9/0x610
      kasan_report+0x89/0xc0
      lockdep_register_key+0x5f2/0x700
      qdisc_alloc+0x21d/0xb60
      qdisc_create_dflt+0x63/0x3c0
      attach_one_default_qdisc.constprop.37+0x8e/0x170
      dev_activate+0x4bd/0xc30
      __dev_open+0x275/0x380
      __dev_change_flags+0x3f1/0x570
      dev_change_flags+0x7c/0x160
      do_setlink+0x1ea1/0x34b0
      __rtnl_newlink+0x8c9/0x1510
      rtnl_newlink+0x61/0x90
      rtnetlink_rcv_msg+0x2f0/0xbc0
      netlink_rcv_skb+0x120/0x380
      netlink_unicast+0x420/0x630
      netlink_sendmsg+0x732/0xbc0
      __sock_sendmsg+0x1ea/0x280
      ____sys_sendmsg+0x5a9/0x990
      ___sys_sendmsg+0xf1/0x180
      __sys_sendmsg+0xd3/0x180
      do_syscall_64+0x96/0x180
      entry_SYSCALL_64_after_hwframe+0x71/0x79
     RIP: 0033:0x7f9503f4fa07
     Code: 0a 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b9 0f 1f 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 89 74 24 10
     RSP: 002b:00007fff6c729068 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
     RAX: ffffffffffffffda RBX: 000000006630c681 RCX: 00007f9503f4fa07
     RDX: 0000000000000000 RSI: 00007fff6c7290d0 RDI: 0000000000000003
     RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000078
     R10: 000000000000009b R11: 0000000000000246 R12: 0000000000000001
     R13: 00007fff6c729180 R14: 0000000000000000 R15: 000055bf67dd9040
      </TASK>
    
     Allocated by task 7745:
      kasan_save_stack+0x1c/0x40
      kasan_save_track+0x10/0x30
      __kasan_kmalloc+0x7b/0x90
      __kmalloc_node+0x1ff/0x460
      qdisc_alloc+0xae/0xb60
      qdisc_create+0xdd/0xfb0
      tc_modify_qdisc+0x37e/0x1960
      rtnetlink_rcv_msg+0x2f0/0xbc0
      netlink_rcv_skb+0x120/0x380
      netlink_unicast+0x420/0x630
      netlink_sendmsg+0x732/0xbc0
      __sock_sendmsg+0x1ea/0x280
      ____sys_sendmsg+0x5a9/0x990
      ___sys_sendmsg+0xf1/0x180
      __sys_sendmsg+0xd3/0x180
      do_syscall_64+0x96/0x180
      entry_SYSCALL_64_after_hwframe+0x71/0x79
    
     Freed by task 7745:
      kasan_save_stack+0x1c/0x40
      kasan_save_track+0x10/0x30
      kasan_save_free_info+0x36/0x60
      __kasan_slab_free+0xfe/0x180
      kfree+0x113/0x380
      qdisc_create+0xafb/0xfb0
      tc_modify_qdisc+0x37e/0x1960
      rtnetlink_rcv_msg+0x2f0/0xbc0
      netlink_rcv_skb+0x120/0x380
      netlink_unicast+0x420/0x630
      netlink_sendmsg+0x732/0xbc0
      __sock_sendmsg+0x1ea/0x280
      ____sys_sendmsg+0x5a9/0x990
      ___sys_sendmsg+0xf1/0x180
      __sys_sendmsg+0xd3/0x180
      do_syscall_64+0x96/0x180
      entry_SYSCALL_64_after_hwframe+0x71/0x79
    
    Fix this ensuring that lockdep_unregister_key() is called before the
    qdisc struct is freed, also in the error path of qdisc_create() and
    qdisc_alloc().
    
    Fixes: af0cb3fa3f9e ("net/sched: fix false lockdep warning on qdisc root lock")
    Reported-by: Linux Kernel Functional Testing <[email protected]>
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Signed-off-by: Davide Caratti <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Tested-by: Naresh Kamboju <[email protected]>
    Tested-by: Ido Schimmel <[email protected]>
    Link: https://lore.kernel.org/r/2aa1ca0c0a3aa0acc15925c666c777a4b5de553c.1714496886.git.dcaratti@redhat.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net: do not leave a dangling sk pointer, when socket creation fails [+ + +]
Author: Ignat Korchagin <[email protected]>
Date:   Mon Jun 17 22:02:05 2024 +0100

    net: do not leave a dangling sk pointer, when socket creation fails
    
    commit 6cd4a78d962bebbaf8beb7d2ead3f34120e3f7b2 upstream.
    
    It is possible to trigger a use-after-free by:
      * attaching an fentry probe to __sock_release() and the probe calling the
        bpf_get_socket_cookie() helper
      * running traceroute -I 1.1.1.1 on a freshly booted VM
    
    A KASAN enabled kernel will log something like below (decoded and stripped):
    ==================================================================
    BUG: KASAN: slab-use-after-free in __sock_gen_cookie (./arch/x86/include/asm/atomic64_64.h:15 ./include/linux/atomic/atomic-arch-fallback.h:2583 ./include/linux/atomic/atomic-instrumented.h:1611 net/core/sock_diag.c:29)
    Read of size 8 at addr ffff888007110dd8 by task traceroute/299
    
    CPU: 2 PID: 299 Comm: traceroute Tainted: G            E      6.10.0-rc2+ #2
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
    Call Trace:
     <TASK>
    dump_stack_lvl (lib/dump_stack.c:117 (discriminator 1))
    print_report (mm/kasan/report.c:378 mm/kasan/report.c:488)
    ? __sock_gen_cookie (./arch/x86/include/asm/atomic64_64.h:15 ./include/linux/atomic/atomic-arch-fallback.h:2583 ./include/linux/atomic/atomic-instrumented.h:1611 net/core/sock_diag.c:29)
    kasan_report (mm/kasan/report.c:603)
    ? __sock_gen_cookie (./arch/x86/include/asm/atomic64_64.h:15 ./include/linux/atomic/atomic-arch-fallback.h:2583 ./include/linux/atomic/atomic-instrumented.h:1611 net/core/sock_diag.c:29)
    kasan_check_range (mm/kasan/generic.c:183 mm/kasan/generic.c:189)
    __sock_gen_cookie (./arch/x86/include/asm/atomic64_64.h:15 ./include/linux/atomic/atomic-arch-fallback.h:2583 ./include/linux/atomic/atomic-instrumented.h:1611 net/core/sock_diag.c:29)
    bpf_get_socket_ptr_cookie (./arch/x86/include/asm/preempt.h:94 ./include/linux/sock_diag.h:42 net/core/filter.c:5094 net/core/filter.c:5092)
    bpf_prog_875642cf11f1d139___sock_release+0x6e/0x8e
    bpf_trampoline_6442506592+0x47/0xaf
    __sock_release (net/socket.c:652)
    __sock_create (net/socket.c:1601)
    ...
    Allocated by task 299 on cpu 2 at 78.328492s:
    kasan_save_stack (mm/kasan/common.c:48)
    kasan_save_track (mm/kasan/common.c:68)
    __kasan_slab_alloc (mm/kasan/common.c:312 mm/kasan/common.c:338)
    kmem_cache_alloc_noprof (mm/slub.c:3941 mm/slub.c:4000 mm/slub.c:4007)
    sk_prot_alloc (net/core/sock.c:2075)
    sk_alloc (net/core/sock.c:2134)
    inet_create (net/ipv4/af_inet.c:327 net/ipv4/af_inet.c:252)
    __sock_create (net/socket.c:1572)
    __sys_socket (net/socket.c:1660 net/socket.c:1644 net/socket.c:1706)
    __x64_sys_socket (net/socket.c:1718)
    do_syscall_64 (arch/x86/entry/common.c:52 arch/x86/entry/common.c:83)
    entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
    
    Freed by task 299 on cpu 2 at 78.328502s:
    kasan_save_stack (mm/kasan/common.c:48)
    kasan_save_track (mm/kasan/common.c:68)
    kasan_save_free_info (mm/kasan/generic.c:582)
    poison_slab_object (mm/kasan/common.c:242)
    __kasan_slab_free (mm/kasan/common.c:256)
    kmem_cache_free (mm/slub.c:4437 mm/slub.c:4511)
    __sk_destruct (net/core/sock.c:2117 net/core/sock.c:2208)
    inet_create (net/ipv4/af_inet.c:397 net/ipv4/af_inet.c:252)
    __sock_create (net/socket.c:1572)
    __sys_socket (net/socket.c:1660 net/socket.c:1644 net/socket.c:1706)
    __x64_sys_socket (net/socket.c:1718)
    do_syscall_64 (arch/x86/entry/common.c:52 arch/x86/entry/common.c:83)
    entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
    
    Fix this by clearing the struct socket reference in sk_common_release() to cover
    all protocol families create functions, which may already attached the
    reference to the sk object with sock_init_data().
    
    Fixes: c5dbb89fc2ac ("bpf: Expose bpf_get_socket_cookie to tracing programs")
    Suggested-by: Kuniyuki Iwashima <[email protected]>
    Signed-off-by: Ignat Korchagin <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/netdev/[email protected]/T/
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: D. Wythe <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: dsa: realtek: keep default LED state in rtl8366rb [+ + +]
Author: Luiz Angelo Daros de Luca <[email protected]>
Date:   Sat Apr 27 02:11:28 2024 -0300

    net: dsa: realtek: keep default LED state in rtl8366rb
    
    [ Upstream commit 5edc6585aafefa3d44fb8a84adf241d90227f7a3 ]
    
    This switch family supports four LEDs for each of its six ports. Each
    LED group is composed of one of these four LEDs from all six ports. LED
    groups can be configured to display hardware information, such as link
    activity, or manually controlled through a bitmap in registers
    RTL8366RB_LED_0_1_CTRL_REG and RTL8366RB_LED_2_3_CTRL_REG.
    
    After a reset, the default LED group configuration for groups 0 to 3
    indicates, respectively, link activity, link at 1000M, 100M, and 10M, or
    RTL8366RB_LED_CTRL_REG as 0x5432. These configurations are commonly used
    for LED indications. However, the driver was replacing that
    configuration to use manually controlled LEDs (RTL8366RB_LED_FORCE)
    without providing a way for the OS to control them. The default
    configuration is deemed more useful than fixed, uncontrollable turned-on
    LEDs.
    
    The driver was enabling/disabling LEDs during port_enable/disable.
    However, these events occur when the port is administratively controlled
    (up or down) and are not related to link presence. Additionally, when a
    port N was disabled, the driver was turning off all LEDs for group N,
    not only the corresponding LED for port N in any of those 4 groups. In
    such cases, if port 0 was brought down, the LEDs for all ports in LED
    group 0 would be turned off. As another side effect, the driver was
    wrongly warning that port 5 didn't have an LED ("no LED for port 5").
    Since showing the administrative state of ports is not an orthodox way
    to use LEDs, it was not worth it to fix it and all this code was
    dropped.
    
    The code to disable LEDs was simplified only changing each LED group to
    the RTL8366RB_LED_OFF state. Registers RTL8366RB_LED_0_1_CTRL_REG and
    RTL8366RB_LED_2_3_CTRL_REG are only used when the corresponding LED
    group is configured with RTL8366RB_LED_FORCE and they don't need to be
    cleaned. The code still references an LED controlled by
    RTL8366RB_INTERRUPT_CONTROL_REG, but as of now, no test device has
    actually used it. Also, some magic numbers were replaced by macros.
    
    Signed-off-by: Luiz Angelo Daros de Luca <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: lan743x: disable WOL upon resume to restore full data path operation [+ + +]
Author: Raju Lakkaraju <[email protected]>
Date:   Fri Jun 14 22:41:55 2024 +0530

    net: lan743x: disable WOL upon resume to restore full data path operation
    
    [ Upstream commit 7725363936a88351b71495774c1e0e852ae4cdca ]
    
    When Wake-on-LAN (WoL) is active and the system is in suspend mode, triggering
    a system event can wake the system from sleep, which may block the data path.
    To restore normal data path functionality after waking, disable all wake-up
    events. Furthermore, clear all Write 1 to Clear (W1C) status bits by writing
    1's to them.
    
    Fixes: 4d94282afd95 ("lan743x: Add power management support")
    Reviewed-by: Wojciech Drewek <[email protected]>
    Signed-off-by: Raju Lakkaraju <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: lan743x: Support WOL at both the PHY and MAC appropriately [+ + +]
Author: Raju Lakkaraju <[email protected]>
Date:   Fri Jun 14 22:41:56 2024 +0530

    net: lan743x: Support WOL at both the PHY and MAC appropriately
    
    [ Upstream commit 8c248cd836014339498486f14f435c0e344183a7 ]
    
    Prevent options not supported by the PHY from being requested to it by the MAC
    Whenever a WOL option is supported by both, the PHY is given priority
    since that usually leads to better power savings.
    
    Fixes: e9e13b6adc33 ("lan743x: fix for potential NULL pointer dereference with bare card")
    Reviewed-by: Wojciech Drewek <[email protected]>
    Signed-off-by: Raju Lakkaraju <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: mxl-gpy: enhance delay time required by loopback disable function [+ + +]
Author: Xu Liang <[email protected]>
Date:   Wed Mar 15 00:30:23 2023 +0800

    net: phy: mxl-gpy: enhance delay time required by loopback disable function
    
    [ Upstream commit 0ba13995be9b416ea1d3daaf3ba871a67f45899b ]
    
    GPY2xx devices need 3 seconds to fully switch out of loopback mode
    before it can safely re-enter loopback mode. Implement timeout mechanism
    to guarantee 3 seconds waited before re-enter loopback mode.
    
    Signed-off-by: Xu Liang <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: c44d3ffd85db ("net: phy: mxl-gpy: Remove interrupt mask clearing from config_init")
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: mxl-gpy: Remove interrupt mask clearing from config_init [+ + +]
Author: Raju Lakkaraju <[email protected]>
Date:   Fri Jun 14 22:41:57 2024 +0530

    net: phy: mxl-gpy: Remove interrupt mask clearing from config_init
    
    [ Upstream commit c44d3ffd85db03ebcc3090e55589e10d5af9f3a9 ]
    
    When the system resumes from sleep, the phy_init_hw() function invokes
    config_init(), which clears all interrupt masks and causes wake events to be
    lost in subsequent wake sequences. Remove interrupt mask clearing from
    config_init() and preserve relevant masks in config_intr().
    
    Fixes: 7d901a1e878a ("net: phy: add Maxlinear GPY115/21x/24x driver")
    Reviewed-by: Wojciech Drewek <[email protected]>
    Signed-off-by: Raju Lakkaraju <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: stmmac: Assign configured channel value to EXTTS event [+ + +]
Author: Oleksij Rempel <[email protected]>
Date:   Tue Jun 18 09:38:21 2024 +0200

    net: stmmac: Assign configured channel value to EXTTS event
    
    commit 8851346912a1fa33e7a5966fe51f07313b274627 upstream.
    
    Assign the configured channel value to the EXTTS event in the timestamp
    interrupt handler. Without assigning the correct channel, applications
    like ts2phc will refuse to accept the event, resulting in errors such
    as:
    ...
    ts2phc[656.834]: config item end1.ts2phc.pin_index is 0
    ts2phc[656.834]: config item end1.ts2phc.channel is 3
    ts2phc[656.834]: config item end1.ts2phc.extts_polarity is 2
    ts2phc[656.834]: config item end1.ts2phc.extts_correction is 0
    ...
    ts2phc[656.862]: extts on unexpected channel
    ts2phc[658.141]: extts on unexpected channel
    ts2phc[659.140]: extts on unexpected channel
    
    Fixes: f4da56529da60 ("net: stmmac: Add support for external trigger timestamping")
    Cc: [email protected]
    Signed-off-by: Oleksij Rempel <[email protected]>
    Reviewed-by: Wojciech Drewek <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: stmmac: No need to calculate speed divider when offload is disabled [+ + +]
Author: Xiaolei Wang <[email protected]>
Date:   Mon Jun 17 09:39:22 2024 +0800

    net: stmmac: No need to calculate speed divider when offload is disabled
    
    [ Upstream commit b8c43360f6e424131fa81d3ba8792ad8ff25a09e ]
    
    commit be27b8965297 ("net: stmmac: replace priv->speed with
    the portTransmitRate from the tc-cbs parameters") introduced
    a problem. When deleting, it prompts "Invalid portTransmitRate
    0 (idleSlope - sendSlope)" and exits. Add judgment on cbs.enable.
    Only when offload is enabled, speed divider needs to be calculated.
    
    Fixes: be27b8965297 ("net: stmmac: replace priv->speed with the portTransmitRate from the tc-cbs parameters")
    Signed-off-by: Xiaolei Wang <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: ax88179_178a: improve reset check [+ + +]
Author: Jose Ignacio Tornos Martinez <[email protected]>
Date:   Mon Jun 17 12:28:21 2024 +0200

    net: usb: ax88179_178a: improve reset check
    
    commit 7be4cb7189f747b4e5b6977d0e4387bde3204e62 upstream.
    
    After ecf848eb934b ("net: usb: ax88179_178a: fix link status when link is
    set to down/up") to not reset from usbnet_open after the reset from
    usbnet_probe at initialization stage to speed up this, some issues have
    been reported.
    
    It seems to happen that if the initialization is slower, and some time
    passes between the probe operation and the open operation, the second reset
    from open is necessary too to have the device working. The reason is that
    if there is no activity with the phy, this is "disconnected".
    
    In order to improve this, the solution is to detect when the phy is
    "disconnected", and we can use the phy status register for this. So we will
    only reset the device from reset operation in this situation, that is, only
    if necessary.
    
    The same bahavior is happening when the device is stopped (link set to
    down) and later is restarted (link set to up), so if the phy keeps working
    we only need to enable the mac again, but if enough time passes between the
    device stop and restart, reset is necessary, and we can detect the
    situation checking the phy status register too.
    
    cc: [email protected] # 6.6+
    Fixes: ecf848eb934b ("net: usb: ax88179_178a: fix link status when link is set to down/up")
    Reported-by: Yongqin Liu <[email protected]>
    Reported-by: Antje Miederhöfer <[email protected]>
    Reported-by: Arne Fitzenreiter <[email protected]>
    Tested-by: Yongqin Liu <[email protected]>
    Tested-by: Antje Miederhöfer <[email protected]>
    Signed-off-by: Jose Ignacio Tornos Martinez <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: usb: rtl8150 fix unintiatilzed variables in rtl8150_get_link_ksettings [+ + +]
Author: Oliver Neukum <[email protected]>
Date:   Wed Jun 19 15:28:03 2024 +0200

    net: usb: rtl8150 fix unintiatilzed variables in rtl8150_get_link_ksettings
    
    [ Upstream commit fba383985354e83474f95f36d7c65feb75dba19d ]
    
    This functions retrieves values by passing a pointer. As the function
    that retrieves them can fail before touching the pointers, the variables
    must be initialized.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: [email protected]
    Signed-off-by: Oliver Neukum <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netfilter: ipset: Fix suspicious rcu_dereference_protected() [+ + +]
Author: Jozsef Kadlecsik <[email protected]>
Date:   Mon Jun 17 11:18:15 2024 +0200

    netfilter: ipset: Fix suspicious rcu_dereference_protected()
    
    [ Upstream commit 8ecd06277a7664f4ef018abae3abd3451d64e7a6 ]
    
    When destroying all sets, we are either in pernet exit phase or
    are executing a "destroy all sets command" from userspace. The latter
    was taken into account in ip_set_dereference() (nfnetlink mutex is held),
    but the former was not. The patch adds the required check to
    rcu_dereference_protected() in ip_set_dereference().
    
    Fixes: 4e7aaa6b82d6 ("netfilter: ipset: Fix race between namespace cleanup and gc in the list:set type")
    Reported-by: [email protected]
    Reported-by: [email protected]
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-lkp/[email protected]
    Signed-off-by: Jozsef Kadlecsik <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netns: Make get_net_ns() handle zero refcount net [+ + +]
Author: Yue Haibing <[email protected]>
Date:   Fri Jun 14 21:13:02 2024 +0800

    netns: Make get_net_ns() handle zero refcount net
    
    [ Upstream commit ff960f9d3edbe08a736b5a224d91a305ccc946b0 ]
    
    Syzkaller hit a warning:
    refcount_t: addition on 0; use-after-free.
    WARNING: CPU: 3 PID: 7890 at lib/refcount.c:25 refcount_warn_saturate+0xdf/0x1d0
    Modules linked in:
    CPU: 3 PID: 7890 Comm: tun Not tainted 6.10.0-rc3-00100-gcaa4f9578aba-dirty #310
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
    RIP: 0010:refcount_warn_saturate+0xdf/0x1d0
    Code: 41 49 04 31 ff 89 de e8 9f 1e cd fe 84 db 75 9c e8 76 26 cd fe c6 05 b6 41 49 04 01 90 48 c7 c7 b8 8e 25 86 e8 d2 05 b5 fe 90 <0f> 0b 90 90 e9 79 ff ff ff e8 53 26 cd fe 0f b6 1
    RSP: 0018:ffff8881067b7da0 EFLAGS: 00010286
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff811c72ac
    RDX: ffff8881026a2140 RSI: ffffffff811c72b5 RDI: 0000000000000001
    RBP: ffff8881067b7db0 R08: 0000000000000000 R09: 205b5d3730353139
    R10: 0000000000000000 R11: 205d303938375420 R12: ffff8881086500c4
    R13: ffff8881086500c4 R14: ffff8881086500b0 R15: ffff888108650040
    FS:  00007f5b2961a4c0(0000) GS:ffff88823bd00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000055d7ed36fd18 CR3: 00000001482f6000 CR4: 00000000000006f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     ? show_regs+0xa3/0xc0
     ? __warn+0xa5/0x1c0
     ? refcount_warn_saturate+0xdf/0x1d0
     ? report_bug+0x1fc/0x2d0
     ? refcount_warn_saturate+0xdf/0x1d0
     ? handle_bug+0xa1/0x110
     ? exc_invalid_op+0x3c/0xb0
     ? asm_exc_invalid_op+0x1f/0x30
     ? __warn_printk+0xcc/0x140
     ? __warn_printk+0xd5/0x140
     ? refcount_warn_saturate+0xdf/0x1d0
     get_net_ns+0xa4/0xc0
     ? __pfx_get_net_ns+0x10/0x10
     open_related_ns+0x5a/0x130
     __tun_chr_ioctl+0x1616/0x2370
     ? __sanitizer_cov_trace_switch+0x58/0xa0
     ? __sanitizer_cov_trace_const_cmp2+0x1c/0x30
     ? __pfx_tun_chr_ioctl+0x10/0x10
     tun_chr_ioctl+0x2f/0x40
     __x64_sys_ioctl+0x11b/0x160
     x64_sys_call+0x1211/0x20d0
     do_syscall_64+0x9e/0x1d0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f5b28f165d7
    Code: b3 66 90 48 8b 05 b1 48 2d 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 81 48 2d 00 8
    RSP: 002b:00007ffc2b59c5e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f5b28f165d7
    RDX: 0000000000000000 RSI: 00000000000054e3 RDI: 0000000000000003
    RBP: 00007ffc2b59c650 R08: 00007f5b291ed8c0 R09: 00007f5b2961a4c0
    R10: 0000000029690010 R11: 0000000000000246 R12: 0000000000400730
    R13: 00007ffc2b59cf40 R14: 0000000000000000 R15: 0000000000000000
     </TASK>
    Kernel panic - not syncing: kernel: panic_on_warn set ...
    
    This is trigger as below:
              ns0                                    ns1
    tun_set_iff() //dev is tun0
       tun->dev = dev
    //ip link set tun0 netns ns1
                                           put_net() //ref is 0
    __tun_chr_ioctl() //TUNGETDEVNETNS
       net = dev_net(tun->dev);
       open_related_ns(&net->ns, get_net_ns); //ns1
         get_net_ns()
            get_net() //addition on 0
    
    Use maybe_get_net() in get_net_ns in case net's ref is zero to fix this
    
    Fixes: 0c3e0e3bb623 ("tun: Add ioctl() TUNGETDEVNETNS cmd to allow obtaining real net ns of tun device")
    Signed-off-by: Yue Haibing <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netpoll: Fix race condition in netpoll_owner_active [+ + +]
Author: Breno Leitao <[email protected]>
Date:   Mon Apr 29 03:04:33 2024 -0700

    netpoll: Fix race condition in netpoll_owner_active
    
    [ Upstream commit c2e6a872bde9912f1a7579639c5ca3adf1003916 ]
    
    KCSAN detected a race condition in netpoll:
    
            BUG: KCSAN: data-race in net_rx_action / netpoll_send_skb
            write (marked) to 0xffff8881164168b0 of 4 bytes by interrupt on cpu 10:
            net_rx_action (./include/linux/netpoll.h:90 net/core/dev.c:6712 net/core/dev.c:6822)
    <snip>
            read to 0xffff8881164168b0 of 4 bytes by task 1 on cpu 2:
            netpoll_send_skb (net/core/netpoll.c:319 net/core/netpoll.c:345 net/core/netpoll.c:393)
            netpoll_send_udp (net/core/netpoll.c:?)
    <snip>
            value changed: 0x0000000a -> 0xffffffff
    
    This happens because netpoll_owner_active() needs to check if the
    current CPU is the owner of the lock, touching napi->poll_owner
    non atomically. The ->poll_owner field contains the current CPU holding
    the lock.
    
    Use an atomic read to check if the poll owner is the current CPU.
    
    Signed-off-by: Breno Leitao <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netrom: Fix a memory leak in nr_heartbeat_expiry() [+ + +]
Author: Gavrilov Ilia <[email protected]>
Date:   Thu Jun 13 08:23:00 2024 +0000

    netrom: Fix a memory leak in nr_heartbeat_expiry()
    
    [ Upstream commit 0b9130247f3b6a1122478471ff0e014ea96bb735 ]
    
    syzbot reported a memory leak in nr_create() [0].
    
    Commit 409db27e3a2e ("netrom: Fix use-after-free of a listening socket.")
    added sock_hold() to the nr_heartbeat_expiry() function, where
    a) a socket has a SOCK_DESTROY flag or
    b) a listening socket has a SOCK_DEAD flag.
    
    But in the case "a," when the SOCK_DESTROY flag is set, the file descriptor
    has already been closed and the nr_release() function has been called.
    So it makes no sense to hold the reference count because no one will
    call another nr_destroy_socket() and put it as in the case "b."
    
    nr_connect
      nr_establish_data_link
        nr_start_heartbeat
    
    nr_release
      switch (nr->state)
      case NR_STATE_3
        nr->state = NR_STATE_2
        sock_set_flag(sk, SOCK_DESTROY);
    
                            nr_rx_frame
                              nr_process_rx_frame
                                switch (nr->state)
                                case NR_STATE_2
                                  nr_state2_machine()
                                    nr_disconnect()
                                      nr_sk(sk)->state = NR_STATE_0
                                      sock_set_flag(sk, SOCK_DEAD)
    
                            nr_heartbeat_expiry
                              switch (nr->state)
                              case NR_STATE_0
                                if (sock_flag(sk, SOCK_DESTROY) ||
                                   (sk->sk_state == TCP_LISTEN
                                     && sock_flag(sk, SOCK_DEAD)))
                                   sock_hold()  // ( !!! )
                                   nr_destroy_socket()
    
    To fix the memory leak, let's call sock_hold() only for a listening socket.
    
    Found by InfoTeCS on behalf of Linux Verification Center
    (linuxtesting.org) with Syzkaller.
    
    [0]: https://syzkaller.appspot.com/bug?extid=d327a1f3b12e1e206c16
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=d327a1f3b12e1e206c16
    Fixes: 409db27e3a2e ("netrom: Fix use-after-free of a listening socket.")
    Signed-off-by: Gavrilov Ilia <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
octeontx2-pf: Add error handling to VLAN unoffload handling [+ + +]
Author: Simon Horman <[email protected]>
Date:   Mon Jun 17 17:50:26 2024 +0100

    octeontx2-pf: Add error handling to VLAN unoffload handling
    
    [ Upstream commit b95a4afe2defd6f46891985f9436a568cd35a31c ]
    
    otx2_sq_append_skb makes used of __vlan_hwaccel_push_inside()
    to unoffload VLANs - push them from skb meta data into skb data.
    However, it omitts a check for __vlan_hwaccel_push_inside()
    returning NULL.
    
    Found by inspection based on [1] and [2].
    Compile tested only.
    
    [1] Re: [PATCH net-next v1] net: stmmac: Enable TSO on VLANs
        https://lore.kernel.org/all/[email protected]/
    [2] Re: [PATCH net-next v2] net: stmmac: Enable TSO on VLANs
        https://lore.kernel.org/all/CANn89i+11L5=tKsa7V7Aeyxaj6nYGRwy35PAbCRYJ73G+b25sg@mail.gmail.com/
    
    Fixes: fd9d7859db6c ("octeontx2-pf: Implement ingress/egress VLAN offload")
    Signed-off-by: Simon Horman <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
padata: Disable BH when taking works lock on MT path [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Wed Apr 3 17:36:18 2024 +0800

    padata: Disable BH when taking works lock on MT path
    
    [ Upstream commit 58329c4312031603bb1786b44265c26d5065fe72 ]
    
    As the old padata code can execute in softirq context, disable
    softirqs for the new padata_do_mutithreaded code too as otherwise
    lockdep will get antsy.
    
    Reported-by: [email protected]
    Signed-off-by: Herbert Xu <[email protected]>
    Acked-by: Daniel Jordan <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
 
PCI/PM: Avoid D3cold for HP Pavilion 17 PC/1972 PCIe Ports [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Thu Mar 7 10:37:09 2024 -0600

    PCI/PM: Avoid D3cold for HP Pavilion 17 PC/1972 PCIe Ports
    
    [ Upstream commit 256df20c590bf0e4d63ac69330cf23faddac3e08 ]
    
    Hewlett-Packard HP Pavilion 17 Notebook PC/1972 is an Intel Ivy Bridge
    system with a muxless AMD Radeon dGPU.  Attempting to use the dGPU fails
    with the following sequence:
    
      ACPI Error: Aborting method \AMD3._ON due to previous error (AE_AML_LOOP_TIMEOUT) (20230628/psparse-529)
      radeon 0000:01:00.0: not ready 1023ms after resume; waiting
      radeon 0000:01:00.0: not ready 2047ms after resume; waiting
      radeon 0000:01:00.0: not ready 4095ms after resume; waiting
      radeon 0000:01:00.0: not ready 8191ms after resume; waiting
      radeon 0000:01:00.0: not ready 16383ms after resume; waiting
      radeon 0000:01:00.0: not ready 32767ms after resume; waiting
      radeon 0000:01:00.0: not ready 65535ms after resume; giving up
      radeon 0000:01:00.0: Unable to change power state from D3cold to D0, device inaccessible
    
    The issue is that the Root Port the dGPU is connected to can't handle the
    transition from D3cold to D0 so the dGPU can't properly exit runtime PM.
    
    The existing logic in pci_bridge_d3_possible() checks for systems that are
    newer than 2015 to decide that D3 is safe.  This would nominally work for
    an Ivy Bridge system (which was discontinued in 2015), but this system
    appears to have continued to receive BIOS updates until 2017 and so this
    existing logic doesn't appropriately capture it.
    
    Add the system to bridge_d3_blacklist to prevent D3cold from being used.
    
    Link: https://lore.kernel.org/r/[email protected]
    Reported-by: Eric Heintzmann <[email protected]>
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3229
    Signed-off-by: Mario Limonciello <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Tested-by: Eric Heintzmann <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
perf script: Show also errors for --insn-trace option [+ + +]
Author: Adrian Hunter <[email protected]>
Date:   Fri Mar 15 09:13:33 2024 +0200

    perf script: Show also errors for --insn-trace option
    
    [ Upstream commit d4a98b45fbe6d06f4b79ed90d0bb05ced8674c23 ]
    
    The trace could be misleading if trace errors are not taken into
    account, so display them also by adding the itrace "e" option.
    
    Note --call-trace and --call-ret-trace already add the itrace "e"
    option.
    
    Fixes: b585ebdb5912cf14 ("perf script: Add --insn-trace for instruction decoding")
    Reviewed-by: Andi Kleen <[email protected]>
    Signed-off-by: Adrian Hunter <[email protected]>
    Cc: Andi Kleen <[email protected]>
    Cc: Ian Rogers <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
perf: script: add raw|disasm arguments to --insn-trace option [+ + +]
Author: Changbin Du <[email protected]>
Date:   Sat Feb 17 15:40:45 2024 +0800

    perf: script: add raw|disasm arguments to --insn-trace option
    
    [ Upstream commit 6750ba4b6442fa5ea4bf5c0e4b4ff8b0249ef71d ]
    
    Now '--insn-trace' accept a argument to specify the output format:
      - raw: display raw instructions.
      - disasm: display mnemonic instructions (if capstone is installed).
    
    $ sudo perf script --insn-trace=raw
                  ls 1443864 [006] 2275506.209908875:      7f216b426100 _start+0x0 (/usr/lib/x86_64-linux-gnu/ld-2.31.so) insn: 48 89 e7
                  ls 1443864 [006] 2275506.209908875:      7f216b426103 _start+0x3 (/usr/lib/x86_64-linux-gnu/ld-2.31.so) insn: e8 e8 0c 00 00
                  ls 1443864 [006] 2275506.209908875:      7f216b426df0 _dl_start+0x0 (/usr/lib/x86_64-linux-gnu/ld-2.31.so) insn: f3 0f 1e fa
    
    $ sudo perf script --insn-trace=disasm
                  ls 1443864 [006] 2275506.209908875:      7f216b426100 _start+0x0 (/usr/lib/x86_64-linux-gnu/ld-2.31.so)           movq %rsp, %rdi
                  ls 1443864 [006] 2275506.209908875:      7f216b426103 _start+0x3 (/usr/lib/x86_64-linux-gnu/ld-2.31.so)           callq _dl_start+0x0
                  ls 1443864 [006] 2275506.209908875:      7f216b426df0 _dl_start+0x0 (/usr/lib/x86_64-linux-gnu/ld-2.31.so)        illegal instruction
                  ls 1443864 [006] 2275506.209908875:      7f216b426df4 _dl_start+0x4 (/usr/lib/x86_64-linux-gnu/ld-2.31.so)        pushq %rbp
                  ls 1443864 [006] 2275506.209908875:      7f216b426df5 _dl_start+0x5 (/usr/lib/x86_64-linux-gnu/ld-2.31.so)        movq %rsp, %rbp
                  ls 1443864 [006] 2275506.209908875:      7f216b426df8 _dl_start+0x8 (/usr/lib/x86_64-linux-gnu/ld-2.31.so)        pushq %r15
    
    Signed-off-by: Changbin Du <[email protected]>
    Reviewed-by: Adrian Hunter <[email protected]>
    Cc: [email protected]
    Cc: Thomas Richter <[email protected]>
    Cc: Andi Kleen <[email protected]>
    Signed-off-by: Namhyung Kim <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: d4a98b45fbe6 ("perf script: Show also errors for --insn-trace option")
    Signed-off-by: Sasha Levin <[email protected]>

 
platform/x86: p2sb: Don't init until unassigned resources have been assigned [+ + +]
Author: Ben Fradella <[email protected]>
Date:   Thu May 9 16:49:34 2024 +0000

    platform/x86: p2sb: Don't init until unassigned resources have been assigned
    
    [ Upstream commit 2c6370e6607663fc5fa0fd9ed58e2e01014898c7 ]
    
    The P2SB could get an invalid BAR from the BIOS, and that won't be fixed
    up until pcibios_assign_resources(), which is an fs_initcall().
    
    - Move p2sb_fs_init() to an fs_initcall_sync(). This is still early
      enough to avoid a race with any dependent drivers.
    
    - Add a check for IORESOURCE_UNSET in p2sb_valid_resource() to catch
      unset BARs going forward.
    
    - Return error values from p2sb_fs_init() so that the 'initcall_debug'
      cmdline arg provides useful data.
    
    Signed-off-by: Ben Fradella <[email protected]>
    Acked-by: Andy Shevchenko <[email protected]>
    Tested-by: Klara Modin <[email protected]>
    Reviewed-by: Shin'ichiro Kawasaki <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

platform/x86: toshiba_acpi: Add quirk for buttons on Z830 [+ + +]
Author: Arvid Norlander <[email protected]>
Date:   Wed Jan 31 12:16:41 2024 +0100

    platform/x86: toshiba_acpi: Add quirk for buttons on Z830
    
    [ Upstream commit 23f1d8b47d125dcd8c1ec62a91164e6bc5d691d0 ]
    
    The Z830 has some buttons that will only work properly as "quickstart"
    buttons. To enable them in that mode, a value between 1 and 7 must be
    used for HCI_HOTKEY_EVENT. Windows uses 0x5 on this laptop so use that for
    maximum predictability and compatibility.
    
    As there is not yet a known way of auto detection, this patch uses a DMI
    quirk table. A module parameter is exposed to allow setting this on other
    models for testing.
    
    Signed-off-by: Arvid Norlander <[email protected]>
    Tested-by: Hans de Goede <[email protected]>
    Reviewed-by: Hans de Goede <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pmdomain: ti-sci: Fix duplicate PD referrals [+ + +]
Author: Tomi Valkeinen <[email protected]>
Date:   Mon Apr 15 19:00:23 2024 +0300

    pmdomain: ti-sci: Fix duplicate PD referrals
    
    [ Upstream commit 670c900f69645db394efb38934b3344d8804171a ]
    
    When the dts file has multiple referrers to a single PD (e.g.
    simple-framebuffer and dss nodes both point to the DSS power-domain) the
    ti-sci driver will create two power domains, both with the same ID, and
    that will cause problems as one of the power domains will hide the other
    one.
    
    Fix this checking if a PD with the ID has already been created, and only
    create a PD for new IDs.
    
    Fixes: efa5c01cd7ee ("soc: ti: ti_sci_pm_domains: switch to use multiple genpds instead of one")
    Signed-off-by: Tomi Valkeinen <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
power: supply: cros_usbpd: provide ID table for avoiding fallback match [+ + +]
Author: Tzung-Bi Shih <[email protected]>
Date:   Mon Apr 1 11:00:49 2024 +0800

    power: supply: cros_usbpd: provide ID table for avoiding fallback match
    
    [ Upstream commit 0f8678c34cbfdc63569a9b0ede1fe235ec6ec693 ]
    
    Instead of using fallback driver name match, provide ID table[1] for the
    primary match.
    
    [1]: https://elixir.bootlin.com/linux/v6.8/source/drivers/base/platform.c#L1353
    
    Reviewed-by: Benson Leung <[email protected]>
    Reviewed-by: Prashant Malani <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Tzung-Bi Shih <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/io: Avoid clang null pointer arithmetic warnings [+ + +]
Author: Michael Ellerman <[email protected]>
Date:   Fri May 3 17:56:18 2024 +1000

    powerpc/io: Avoid clang null pointer arithmetic warnings
    
    [ Upstream commit 03c0f2c2b2220fc9cf8785cd7b61d3e71e24a366 ]
    
    With -Wextra clang warns about pointer arithmetic using a null pointer.
    When building with CONFIG_PCI=n, that triggers a warning in the IO
    accessors, eg:
    
      In file included from linux/arch/powerpc/include/asm/io.h:672:
      linux/arch/powerpc/include/asm/io-defs.h:23:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
         23 | DEF_PCI_AC_RET(inb, u8, (unsigned long port), (port), pio, port)
            | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ...
      linux/arch/powerpc/include/asm/io.h:591:53: note: expanded from macro '__do_inb'
        591 | #define __do_inb(port)          readb((PCI_IO_ADDR)_IO_BASE + port);
            |                                       ~~~~~~~~~~~~~~~~~~~~~ ^
    
    That is because when CONFIG_PCI=n, _IO_BASE is defined as 0.
    
    Although _IO_BASE is defined as plain 0, the cast (PCI_IO_ADDR) converts
    it to void * before the addition with port happens.
    
    Instead the addition can be done first, and then the cast. The resulting
    value will be the same, but avoids the warning, and also avoids void
    pointer arithmetic which is apparently non-standard.
    
    Reported-by: Naresh Kamboju <[email protected]>
    Closes: https://lore.kernel.org/all/CA+G9fYtEh8zmq8k8wE-8RZwW-Qr927RLTn+KqGnq1F=ptaaNsA@mail.gmail.com
    Signed-off-by: Michael Ellerman <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/pseries: Enforce hcall result buffer validity and size [+ + +]
Author: Nathan Lynch <[email protected]>
Date:   Mon Apr 8 09:08:31 2024 -0500

    powerpc/pseries: Enforce hcall result buffer validity and size
    
    [ Upstream commit ff2e185cf73df480ec69675936c4ee75a445c3e4 ]
    
    plpar_hcall(), plpar_hcall9(), and related functions expect callers to
    provide valid result buffers of certain minimum size. Currently this
    is communicated only through comments in the code and the compiler has
    no idea.
    
    For example, if I write a bug like this:
    
      long retbuf[PLPAR_HCALL_BUFSIZE]; // should be PLPAR_HCALL9_BUFSIZE
      plpar_hcall9(H_ALLOCATE_VAS_WINDOW, retbuf, ...);
    
    This compiles with no diagnostics emitted, but likely results in stack
    corruption at runtime when plpar_hcall9() stores results past the end
    of the array. (To be clear this is a contrived example and I have not
    found a real instance yet.)
    
    To make this class of error less likely, we can use explicitly-sized
    array parameters instead of pointers in the declarations for the hcall
    APIs. When compiled with -Warray-bounds[1], the code above now
    provokes a diagnostic like this:
    
    error: array argument is too small;
    is of size 32, callee requires at least 72 [-Werror,-Warray-bounds]
       60 |                 plpar_hcall9(H_ALLOCATE_VAS_WINDOW, retbuf,
          |                 ^                                   ~~~~~~
    
    [1] Enabled for LLVM builds but not GCC for now. See commit
        0da6e5fd6c37 ("gcc: disable '-Warray-bounds' for gcc-13 too") and
        related changes.
    
    Signed-off-by: Nathan Lynch <[email protected]>
    Signed-off-by: Michael Ellerman <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
ptp: fix integer overflow in max_vclocks_store [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Mon Jun 17 12:34:32 2024 +0300

    ptp: fix integer overflow in max_vclocks_store
    
    [ Upstream commit 81d23d2a24012e448f651e007fac2cfd20a45ce0 ]
    
    On 32bit systems, the "4 * max" multiply can overflow.  Use kcalloc()
    to do the allocation to prevent this.
    
    Fixes: 44c494c8e30e ("ptp: track available ptp vclocks information")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Wojciech Drewek <[email protected]>
    Reviewed-by: Jiri Pirko <[email protected]>
    Reviewed-by: Heng Qi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
qca_spi: Make interrupt remembering atomic [+ + +]
Author: Stefan Wahren <[email protected]>
Date:   Fri Jun 14 16:50:30 2024 +0200

    qca_spi: Make interrupt remembering atomic
    
    [ Upstream commit 2d7198278ece01818cd95a3beffbdf8b2a353fa0 ]
    
    The whole mechanism to remember occurred SPI interrupts is not atomic,
    which could lead to unexpected behavior. So fix this by using atomic bit
    operations instead.
    
    Fixes: 291ab06ecf67 ("net: qualcomm: new Ethernet over SPI driver for QCA7000")
    Signed-off-by: Stefan Wahren <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rcutorture: Fix invalid context warning when enable srcu barrier testing [+ + +]
Author: Zqiang <[email protected]>
Date:   Mon Mar 25 15:52:19 2024 +0800

    rcutorture: Fix invalid context warning when enable srcu barrier testing
    
    [ Upstream commit 668c0406d887467d53f8fe79261dda1d22d5b671 ]
    
    When the torture_type is set srcu or srcud and cb_barrier is
    non-zero, running the rcutorture test will trigger the
    following warning:
    
    [  163.910989][    C1] BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
    [  163.910994][    C1] in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 0, name: swapper/1
    [  163.910999][    C1] preempt_count: 10001, expected: 0
    [  163.911002][    C1] RCU nest depth: 0, expected: 0
    [  163.911005][    C1] INFO: lockdep is turned off.
    [  163.911007][    C1] irq event stamp: 30964
    [  163.911010][    C1] hardirqs last  enabled at (30963): [<ffffffffabc7df52>] do_idle+0x362/0x500
    [  163.911018][    C1] hardirqs last disabled at (30964): [<ffffffffae616eff>] sysvec_call_function_single+0xf/0xd0
    [  163.911025][    C1] softirqs last  enabled at (0): [<ffffffffabb6475f>] copy_process+0x16ff/0x6580
    [  163.911033][    C1] softirqs last disabled at (0): [<0000000000000000>] 0x0
    [  163.911038][    C1] Preemption disabled at:
    [  163.911039][    C1] [<ffffffffacf1964b>] stack_depot_save_flags+0x24b/0x6c0
    [  163.911063][    C1] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G        W          6.8.0-rc4-rt4-yocto-preempt-rt+ #3 1e39aa9a737dd024a3275c4f835a872f673a7d3a
    [  163.911071][    C1] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.2-0-gea1b7a073390-prebuilt.qemu.org 04/01/2014
    [  163.911075][    C1] Call Trace:
    [  163.911078][    C1]  <IRQ>
    [  163.911080][    C1]  dump_stack_lvl+0x88/0xd0
    [  163.911089][    C1]  dump_stack+0x10/0x20
    [  163.911095][    C1]  __might_resched+0x36f/0x530
    [  163.911105][    C1]  rt_spin_lock+0x82/0x1c0
    [  163.911112][    C1]  spin_lock_irqsave_ssp_contention+0xb8/0x100
    [  163.911121][    C1]  srcu_gp_start_if_needed+0x782/0xf00
    [  163.911128][    C1]  ? _raw_spin_unlock_irqrestore+0x46/0x70
    [  163.911136][    C1]  ? debug_object_active_state+0x336/0x470
    [  163.911148][    C1]  ? __pfx_srcu_gp_start_if_needed+0x10/0x10
    [  163.911156][    C1]  ? __pfx_lock_release+0x10/0x10
    [  163.911165][    C1]  ? __pfx_rcu_torture_barrier_cbf+0x10/0x10
    [  163.911188][    C1]  __call_srcu+0x9f/0xe0
    [  163.911196][    C1]  call_srcu+0x13/0x20
    [  163.911201][    C1]  srcu_torture_call+0x1b/0x30
    [  163.911224][    C1]  rcu_torture_barrier1cb+0x4a/0x60
    [  163.911247][    C1]  __flush_smp_call_function_queue+0x267/0xca0
    [  163.911256][    C1]  ? __pfx_rcu_torture_barrier1cb+0x10/0x10
    [  163.911281][    C1]  generic_smp_call_function_single_interrupt+0x13/0x20
    [  163.911288][    C1]  __sysvec_call_function_single+0x7d/0x280
    [  163.911295][    C1]  sysvec_call_function_single+0x93/0xd0
    [  163.911302][    C1]  </IRQ>
    [  163.911304][    C1]  <TASK>
    [  163.911308][    C1]  asm_sysvec_call_function_single+0x1b/0x20
    [  163.911313][    C1] RIP: 0010:default_idle+0x17/0x20
    [  163.911326][    C1] RSP: 0018:ffff888001997dc8 EFLAGS: 00000246
    [  163.911333][    C1] RAX: 0000000000000000 RBX: dffffc0000000000 RCX: ffffffffae618b51
    [  163.911337][    C1] RDX: 0000000000000000 RSI: ffffffffaea80920 RDI: ffffffffaec2de80
    [  163.911342][    C1] RBP: ffff888001997dc8 R08: 0000000000000001 R09: ffffed100d740cad
    [  163.911346][    C1] R10: ffffed100d740cac R11: ffff88806ba06563 R12: 0000000000000001
    [  163.911350][    C1] R13: ffffffffafe460c0 R14: ffffffffafe460c0 R15: 0000000000000000
    [  163.911358][    C1]  ? ct_kernel_exit.constprop.3+0x121/0x160
    [  163.911369][    C1]  ? lockdep_hardirqs_on+0xc4/0x150
    [  163.911376][    C1]  arch_cpu_idle+0x9/0x10
    [  163.911383][    C1]  default_idle_call+0x7a/0xb0
    [  163.911390][    C1]  do_idle+0x362/0x500
    [  163.911398][    C1]  ? __pfx_do_idle+0x10/0x10
    [  163.911404][    C1]  ? complete_with_flags+0x8b/0xb0
    [  163.911416][    C1]  cpu_startup_entry+0x58/0x70
    [  163.911423][    C1]  start_secondary+0x221/0x280
    [  163.911430][    C1]  ? __pfx_start_secondary+0x10/0x10
    [  163.911440][    C1]  secondary_startup_64_no_verify+0x17f/0x18b
    [  163.911455][    C1]  </TASK>
    
    This commit therefore use smp_call_on_cpu() instead of
    smp_call_function_single(), make rcu_torture_barrier1cb() invoked
    happens on task-context.
    
    Signed-off-by: Zqiang <[email protected]>
    Signed-off-by: Paul E. McKenney <[email protected]>
    Signed-off-by: Uladzislau Rezki (Sony) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

rcutorture: Fix rcu_torture_one_read() pipe_count overflow comment [+ + +]
Author: Paul E. McKenney <[email protected]>
Date:   Wed Mar 6 19:21:47 2024 -0800

    rcutorture: Fix rcu_torture_one_read() pipe_count overflow comment
    
    [ Upstream commit 8b9b443fa860276822b25057cb3ff3b28734dec0 ]
    
    The "pipe_count > RCU_TORTURE_PIPE_LEN" check has a comment saying "Should
    not happen, but...".  This is only true when testing an RCU whose grace
    periods are always long enough.  This commit therefore fixes this comment.
    
    Reported-by: Linus Torvalds <[email protected]>
    Closes: https://lore.kernel.org/lkml/CAHk-=wi7rJ-eGq+xaxVfzFEgbL9tdf6Kc8Z89rCpfcQOKm74Tw@mail.gmail.com/
    Signed-off-by: Paul E. McKenney <[email protected]>
    Signed-off-by: Uladzislau Rezki (Sony) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

rcutorture: Make stall-tasks directly exit when rcutorture tests end [+ + +]
Author: Zqiang <[email protected]>
Date:   Thu Mar 21 16:28:50 2024 +0800

    rcutorture: Make stall-tasks directly exit when rcutorture tests end
    
    [ Upstream commit 431315a563015f259b28e34c5842f6166439e969 ]
    
    When the rcutorture tests start to exit, the rcu_torture_cleanup() is
    invoked to stop kthreads and release resources, if the stall-task
    kthreads exist, cpu-stall has started and the rcutorture.stall_cpu
    is set to a larger value, the rcu_torture_cleanup() will be blocked
    for a long time and the hung-task may occur, this commit therefore
    add kthread_should_stop() to the loop of cpu-stall operation, when
    rcutorture tests ends, no need to wait for cpu-stall to end, exit
    directly.
    
    Use the following command to test:
    
    insmod rcutorture.ko torture_type=srcu fwd_progress=0 stat_interval=4
    stall_cpu_block=1 stall_cpu=200 stall_cpu_holdoff=10 read_exit_burst=0
    object_debug=1
    rmmod rcutorture
    
    [15361.918610] INFO: task rmmod:878 blocked for more than 122 seconds.
    [15361.918613]       Tainted: G        W
    6.8.0-rc2-yoctodev-standard+ #25
    [15361.918615] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
    disables this message.
    [15361.918616] task:rmmod           state:D stack:0     pid:878
    tgid:878   ppid:773    flags:0x00004002
    [15361.918621] Call Trace:
    [15361.918623]  <TASK>
    [15361.918626]  __schedule+0xc0d/0x28f0
    [15361.918631]  ? __pfx___schedule+0x10/0x10
    [15361.918635]  ? rcu_is_watching+0x19/0xb0
    [15361.918638]  ? schedule+0x1f6/0x290
    [15361.918642]  ? __pfx_lock_release+0x10/0x10
    [15361.918645]  ? schedule+0xc9/0x290
    [15361.918648]  ? schedule+0xc9/0x290
    [15361.918653]  ? trace_preempt_off+0x54/0x100
    [15361.918657]  ? schedule+0xc9/0x290
    [15361.918661]  schedule+0xd0/0x290
    [15361.918665]  schedule_timeout+0x56d/0x7d0
    [15361.918669]  ? debug_smp_processor_id+0x1b/0x30
    [15361.918672]  ? rcu_is_watching+0x19/0xb0
    [15361.918676]  ? __pfx_schedule_timeout+0x10/0x10
    [15361.918679]  ? debug_smp_processor_id+0x1b/0x30
    [15361.918683]  ? rcu_is_watching+0x19/0xb0
    [15361.918686]  ? wait_for_completion+0x179/0x4c0
    [15361.918690]  ? __pfx_lock_release+0x10/0x10
    [15361.918693]  ? __kasan_check_write+0x18/0x20
    [15361.918696]  ? wait_for_completion+0x9d/0x4c0
    [15361.918700]  ? _raw_spin_unlock_irq+0x36/0x50
    [15361.918703]  ? wait_for_completion+0x179/0x4c0
    [15361.918707]  ? _raw_spin_unlock_irq+0x36/0x50
    [15361.918710]  ? wait_for_completion+0x179/0x4c0
    [15361.918714]  ? trace_preempt_on+0x54/0x100
    [15361.918718]  ? wait_for_completion+0x179/0x4c0
    [15361.918723]  wait_for_completion+0x181/0x4c0
    [15361.918728]  ? __pfx_wait_for_completion+0x10/0x10
    [15361.918738]  kthread_stop+0x152/0x470
    [15361.918742]  _torture_stop_kthread+0x44/0xc0 [torture
    7af7f9cbba28271a10503b653f9e05d518fbc8c3]
    [15361.918752]  rcu_torture_cleanup+0x2ac/0xe90 [rcutorture
    f2cb1f556ee7956270927183c4c2c7749a336529]
    [15361.918766]  ? __pfx_rcu_torture_cleanup+0x10/0x10 [rcutorture
    f2cb1f556ee7956270927183c4c2c7749a336529]
    [15361.918777]  ? __kasan_check_write+0x18/0x20
    [15361.918781]  ? __mutex_unlock_slowpath+0x17c/0x670
    [15361.918789]  ? __might_fault+0xcd/0x180
    [15361.918793]  ? find_module_all+0x104/0x1d0
    [15361.918799]  __x64_sys_delete_module+0x2a4/0x3f0
    [15361.918803]  ? __pfx___x64_sys_delete_module+0x10/0x10
    [15361.918807]  ? syscall_exit_to_user_mode+0x149/0x280
    
    Signed-off-by: Zqiang <[email protected]>
    Signed-off-by: Paul E. McKenney <[email protected]>
    Signed-off-by: Uladzislau Rezki (Sony) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/mlx5: Add check for srq max_sge attribute [+ + +]
Author: Patrisious Haddad <[email protected]>
Date:   Tue May 28 15:52:56 2024 +0300

    RDMA/mlx5: Add check for srq max_sge attribute
    
    [ Upstream commit 36ab7ada64caf08f10ee5a114d39964d1f91e81d ]
    
    max_sge attribute is passed by the user, and is inserted and used
    unchecked, so verify that the value doesn't exceed maximum allowed value
    before using it.
    
    Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
    Signed-off-by: Patrisious Haddad <[email protected]>
    Link: https://lore.kernel.org/r/277ccc29e8d57bfd53ddeb2ac633f2760cf8cdd0.1716900410.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
regulator: bd71815: fix ramp values [+ + +]
Author: Kalle Niemi <[email protected]>
Date:   Wed Jun 12 14:42:34 2024 +0300

    regulator: bd71815: fix ramp values
    
    [ Upstream commit 4cac29b846f38d5f0654cdfff5c5bfc37305081c ]
    
    Ramp values are inverted. This caused wrong values written to register
    when ramp values were defined in device tree.
    
    Invert values in table to fix this.
    
    Signed-off-by: Kalle Niemi <[email protected]>
    Fixes: 1aad39001e85 ("regulator: Support ROHM BD71815 regulators")
    Reviewed-by: Matti Vaittinen <[email protected]>
    Link: https://lore.kernel.org/r/ZmmJXtuVJU6RgQAH@latitude5580
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

regulator: core: Fix modpost error "regulator_get_regmap" undefined [+ + +]
Author: Biju Das <[email protected]>
Date:   Mon Jun 10 20:55:32 2024 +0100

    regulator: core: Fix modpost error "regulator_get_regmap" undefined
    
    [ Upstream commit 3f60497c658d2072714d097a177612d34b34aa3d ]
    
    Fix the modpost error "regulator_get_regmap" undefined by adding export
    symbol.
    
    Fixes: 04eca28cde52 ("regulator: Add helpers for low-level register access")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]
    Signed-off-by: Biju Das <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "kheaders: substituting --sort in archive creation" [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Sun May 21 22:23:35 2023 +0900

    Revert "kheaders: substituting --sort in archive creation"
    
    [ Upstream commit 49c386ebbb43394ff4773ce24f726f6afc4c30c8 ]
    
    This reverts commit 700dea5a0bea9f64eba89fae7cb2540326fdfdc1.
    
    The reason for that commit was --sort=ORDER introduced in
    tar 1.28 (2014). More than 3 years have passed since then.
    
    Requiring GNU tar 1.28 should be fine now because we require
    GCC 5.1 (2015).
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Reviewed-by: Nicolas Schier <[email protected]>
    Stable-dep-of: 3bd27a847a3a ("kheaders: explicitly define file modes for archived headers")
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "mm: mmap: allow for the maximum number of bits for randomizing mmap_base by default" [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Mon Jun 17 12:57:03 2024 -0700

    Revert "mm: mmap: allow for the maximum number of bits for randomizing mmap_base by default"
    
    commit 14d7c92f8df9c0964ae6f8b813c1b3ac38120825 upstream.
    
    This reverts commit 3afb76a66b5559a7b595155803ce23801558a7a9.
    
    This was a wrongheaded workaround for an issue that had already been
    fixed much better by commit 4ef9ad19e176 ("mm: huge_memory: don't force
    huge page alignment on 32 bit").
    
    Asking users questions at kernel compile time that they can't make sense
    of is not a viable strategy.  And the fact that even the kernel VM
    maintainers apparently didn't catch that this "fix" is not a fix any
    more pretty much proves the point that people can't be expected to
    understand the implications of the question.
    
    It may well be the case that we could improve things further, and that
    __thp_get_unmapped_area() should take the mapping randomization into
    account even for 64-bit kernels.  Maybe we should not be so eager to use
    THP mappings.
    
    But in no case should this be a kernel config option.
    
    Cc: Rafael Aquini <[email protected]>
    Cc: Andrew Morton <[email protected]>
    Cc: Jiri Slaby <[email protected]>
    Cc: Suren Baghdasaryan <[email protected]>
    Cc: Matthew Wilcox (Oracle) <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
sched: act_ct: add netns into the key of tcf_ct_flow_table [+ + +]
Author: Xin Long <[email protected]>
Date:   Sat Jun 15 17:47:30 2024 -0400

    sched: act_ct: add netns into the key of tcf_ct_flow_table
    
    [ Upstream commit 88c67aeb14070bab61d3dd8be96c8b42ebcaf53a ]
    
    zones_ht is a global hashtable for flow_table with zone as key. However,
    it does not consider netns when getting a flow_table from zones_ht in
    tcf_ct_init(), and it means an act_ct action in netns A may get a
    flow_table that belongs to netns B if it has the same zone value.
    
    In Shuang's test with the TOPO:
    
      tcf2_c <---> tcf2_sw1 <---> tcf2_sw2 <---> tcf2_s
    
    tcf2_sw1 and tcf2_sw2 saw the same flow and used the same flow table,
    which caused their ct entries entering unexpected states and the
    TCP connection not able to end normally.
    
    This patch fixes the issue simply by adding netns into the key of
    tcf_ct_flow_table so that an act_ct action gets a flow_table that
    belongs to its own netns in tcf_ct_init().
    
    Note that for easy coding we don't use tcf_ct_flow_table.nf_ft.net,
    as the ct_ft is initialized after inserting it to the hashtable in
    tcf_ct_flow_table_get() and also it requires to implement several
    functions in rhashtable_params including hashfn, obj_hashfn and
    obj_cmpfn.
    
    Fixes: 64ff70b80fd4 ("net/sched: act_ct: Offload established connections to flow table")
    Reported-by: Shuang Li <[email protected]>
    Signed-off-by: Xin Long <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://lore.kernel.org/r/1db5b6cc6902c5fc6f8c6cbd85494a2008087be5.1718488050.git.lucien.xin@gmail.com
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
scsi: qedi: Fix crash while reading debugfs attribute [+ + +]
Author: Manish Rangankar <[email protected]>
Date:   Mon Apr 15 12:51:55 2024 +0530

    scsi: qedi: Fix crash while reading debugfs attribute
    
    [ Upstream commit 28027ec8e32ecbadcd67623edb290dad61e735b5 ]
    
    The qedi_dbg_do_not_recover_cmd_read() function invokes sprintf() directly
    on a __user pointer, which results into the crash.
    
    To fix this issue, use a small local stack buffer for sprintf() and then
    call simple_read_from_buffer(), which in turns make the copy_to_user()
    call.
    
    BUG: unable to handle page fault for address: 00007f4801111000
    PGD 8000000864df6067 P4D 8000000864df6067 PUD 864df7067 PMD 846028067 PTE 0
    Oops: 0002 [#1] PREEMPT SMP PTI
    Hardware name: HPE ProLiant DL380 Gen10/ProLiant DL380 Gen10, BIOS U30 06/15/2023
    RIP: 0010:memcpy_orig+0xcd/0x130
    RSP: 0018:ffffb7a18c3ffc40 EFLAGS: 00010202
    RAX: 00007f4801111000 RBX: 00007f4801111000 RCX: 000000000000000f
    RDX: 000000000000000f RSI: ffffffffc0bfd7a0 RDI: 00007f4801111000
    RBP: ffffffffc0bfd7a0 R08: 725f746f6e5f6f64 R09: 3d7265766f636572
    R10: ffffb7a18c3ffd08 R11: 0000000000000000 R12: 00007f4881110fff
    R13: 000000007fffffff R14: ffffb7a18c3ffca0 R15: ffffffffc0bfd7af
    FS:  00007f480118a740(0000) GS:ffff98e38af00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f4801111000 CR3: 0000000864b8e001 CR4: 00000000007706e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    PKRU: 55555554
    Call Trace:
     <TASK>
     ? __die_body+0x1a/0x60
     ? page_fault_oops+0x183/0x510
     ? exc_page_fault+0x69/0x150
     ? asm_exc_page_fault+0x22/0x30
     ? memcpy_orig+0xcd/0x130
     vsnprintf+0x102/0x4c0
     sprintf+0x51/0x80
     qedi_dbg_do_not_recover_cmd_read+0x2f/0x50 [qedi 6bcfdeeecdea037da47069eca2ba717c84a77324]
     full_proxy_read+0x50/0x80
     vfs_read+0xa5/0x2e0
     ? folio_add_new_anon_rmap+0x44/0xa0
     ? set_pte_at+0x15/0x30
     ? do_pte_missing+0x426/0x7f0
     ksys_read+0xa5/0xe0
     do_syscall_64+0x58/0x80
     ? __count_memcg_events+0x46/0x90
     ? count_memcg_event_mm+0x3d/0x60
     ? handle_mm_fault+0x196/0x2f0
     ? do_user_addr_fault+0x267/0x890
     ? exc_page_fault+0x69/0x150
     entry_SYSCALL_64_after_hwframe+0x72/0xdc
    RIP: 0033:0x7f4800f20b4d
    
    Tested-by: Martin Hoyer <[email protected]>
    Reviewed-by: John Meneghini <[email protected]>
    Signed-off-by: Manish Rangankar <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
seg6: fix parameter passing when calling NF_HOOK() in End.DX4 and End.DX6 behaviors [+ + +]
Author: Jianguo Wu <[email protected]>
Date:   Thu Jun 13 17:42:46 2024 +0800

    seg6: fix parameter passing when calling NF_HOOK() in End.DX4 and End.DX6 behaviors
    
    [ Upstream commit 9a3bc8d16e0aacd65c31aaf23a2bced3288a7779 ]
    
    input_action_end_dx4() and input_action_end_dx6() are called NF_HOOK() for
    PREROUTING hook, in PREROUTING hook, we should passing a valid indev,
    and a NULL outdev to NF_HOOK(), otherwise may trigger a NULL pointer
    dereference, as below:
    
        [74830.647293] BUG: kernel NULL pointer dereference, address: 0000000000000090
        [74830.655633] #PF: supervisor read access in kernel mode
        [74830.657888] #PF: error_code(0x0000) - not-present page
        [74830.659500] PGD 0 P4D 0
        [74830.660450] Oops: 0000 [#1] PREEMPT SMP PTI
        ...
        [74830.664953] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
        [74830.666569] RIP: 0010:rpfilter_mt+0x44/0x15e [ipt_rpfilter]
        ...
        [74830.689725] Call Trace:
        [74830.690402]  <IRQ>
        [74830.690953]  ? show_trace_log_lvl+0x1c4/0x2df
        [74830.692020]  ? show_trace_log_lvl+0x1c4/0x2df
        [74830.693095]  ? ipt_do_table+0x286/0x710 [ip_tables]
        [74830.694275]  ? __die_body.cold+0x8/0xd
        [74830.695205]  ? page_fault_oops+0xac/0x140
        [74830.696244]  ? exc_page_fault+0x62/0x150
        [74830.697225]  ? asm_exc_page_fault+0x22/0x30
        [74830.698344]  ? rpfilter_mt+0x44/0x15e [ipt_rpfilter]
        [74830.699540]  ipt_do_table+0x286/0x710 [ip_tables]
        [74830.700758]  ? ip6_route_input+0x19d/0x240
        [74830.701752]  nf_hook_slow+0x3f/0xb0
        [74830.702678]  input_action_end_dx4+0x19b/0x1e0
        [74830.703735]  ? input_action_end_t+0xe0/0xe0
        [74830.704734]  seg6_local_input_core+0x2d/0x60
        [74830.705782]  lwtunnel_input+0x5b/0xb0
        [74830.706690]  __netif_receive_skb_one_core+0x63/0xa0
        [74830.707825]  process_backlog+0x99/0x140
        [74830.709538]  __napi_poll+0x2c/0x160
        [74830.710673]  net_rx_action+0x296/0x350
        [74830.711860]  __do_softirq+0xcb/0x2ac
        [74830.713049]  do_softirq+0x63/0x90
    
    input_action_end_dx4() passing a NULL indev to NF_HOOK(), and finally
    trigger a NULL dereference in rpfilter_mt()->rpfilter_is_loopback():
    
        static bool
        rpfilter_is_loopback(const struct sk_buff *skb,
                           const struct net_device *in)
        {
                // in is NULL
                return skb->pkt_type == PACKET_LOOPBACK ||
                     in->flags & IFF_LOOPBACK;
        }
    
    Fixes: 7a3f5b0de364 ("netfilter: add netfilter hooks to SRv6 data plane")
    Signed-off-by: Jianguo Wu <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/bpf: Fix flaky test btf_map_in_map/lookup_update [+ + +]
Author: Yonghong Song <[email protected]>
Date:   Thu Mar 21 23:13:53 2024 -0700

    selftests/bpf: Fix flaky test btf_map_in_map/lookup_update
    
    [ Upstream commit 14bb1e8c8d4ad5d9d2febb7d19c70a3cf536e1e5 ]
    
    Recently, I frequently hit the following test failure:
    
      [root@arch-fb-vm1 bpf]# ./test_progs -n 33/1
      test_lookup_update:PASS:skel_open 0 nsec
      [...]
      test_lookup_update:PASS:sync_rcu 0 nsec
      test_lookup_update:FAIL:map1_leak inner_map1 leaked!
      #33/1    btf_map_in_map/lookup_update:FAIL
      #33      btf_map_in_map:FAIL
    
    In the test, after map is closed and then after two rcu grace periods,
    it is assumed that map_id is not available to user space.
    
    But the above assumption cannot be guaranteed. After zero or one
    or two rcu grace periods in different siturations, the actual
    freeing-map-work is put into a workqueue. Later on, when the work
    is dequeued, the map will be actually freed.
    See bpf_map_put() in kernel/bpf/syscall.c.
    
    By using workqueue, there is no ganrantee that map will be actually
    freed after a couple of rcu grace periods. This patch removed
    such map leak detection and then the test can pass consistently.
    
    Signed-off-by: Yonghong Song <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

selftests/bpf: Prevent client connect before server bind in test_tc_tunnel.sh [+ + +]
Author: Alessandro Carminati (Red Hat) <[email protected]>
Date:   Thu Mar 14 10:59:11 2024 +0000

    selftests/bpf: Prevent client connect before server bind in test_tc_tunnel.sh
    
    [ Upstream commit f803bcf9208a2540acb4c32bdc3616673169f490 ]
    
    In some systems, the netcat server can incur in delay to start listening.
    When this happens, the test can randomly fail in various points.
    This is an example error message:
    
       # ip gre none gso
       # encap 192.168.1.1 to 192.168.1.2, type gre, mac none len 2000
       # test basic connectivity
       # Ncat: Connection refused.
    
    The issue stems from a race condition between the netcat client and server.
    The test author had addressed this problem by implementing a sleep, which
    I have removed in this patch.
    This patch introduces a function capable of sleeping for up to two seconds.
    However, it can terminate the waiting period early if the port is reported
    to be listening.
    
    Signed-off-by: Alessandro Carminati (Red Hat) <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
serial: exar: adding missing CTI and Exar PCI ids [+ + +]
Author: Parker Newman <[email protected]>
Date:   Tue Apr 16 08:55:28 2024 -0400

    serial: exar: adding missing CTI and Exar PCI ids
    
    [ Upstream commit b86ae40ffcf5a16b9569b1016da4a08c4f352ca2 ]
    
    - Added Connect Tech and Exar IDs not already in pci_ids.h
    
    Signed-off-by: Parker Newman <[email protected]>
    Link: https://lore.kernel.org/r/7c3d8e795a864dd9b0a00353b722060dc27c4e09.1713270624.git.pnewman@connecttech.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

serial: imx: Introduce timeout when waiting on transmitter empty [+ + +]
Author: Esben Haabendal <[email protected]>
Date:   Thu Apr 11 14:19:23 2024 +0200

    serial: imx: Introduce timeout when waiting on transmitter empty
    
    [ Upstream commit e533e4c62e9993e62e947ae9bbec34e4c7ae81c2 ]
    
    By waiting at most 1 second for USR2_TXDC to be set, we avoid a potential
    deadlock.
    
    In case of the timeout, there is not much we can do, so we simply ignore
    the transmitter state and optimistically try to continue.
    
    Signed-off-by: Esben Haabendal <[email protected]>
    Acked-by: Marc Kleine-Budde <[email protected]>
    Link: https://lore.kernel.org/r/919647898c337a46604edcabaf13d42d80c0915d.1712837613.git.esben@geanix.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
spi: stm32: qspi: Clamp stm32_qspi_get_mode() output to CCR_BUSWIDTH_4 [+ + +]
Author: Patrice Chotard <[email protected]>
Date:   Tue Jun 18 15:29:50 2024 +0200

    spi: stm32: qspi: Clamp stm32_qspi_get_mode() output to CCR_BUSWIDTH_4
    
    commit 63deee52811b2f84ed2da55ad47252f0e8145d62 upstream.
    
    In case usage of OCTAL mode, buswidth parameter can take the value 8.
    As return value of stm32_qspi_get_mode() is used to configure fields
    of CCR registers that are 2 bits only (fields IMODE, ADMODE, ADSIZE,
     DMODE), clamp return value of stm32_qspi_get_mode() to 4.
    
    Fixes: a557fca630cc ("spi: stm32_qspi: Add transfer_one_message() spi callback")
    Cc: [email protected]
    Signed-off-by: Patrice Chotard <[email protected]>
    Link: https://msgid.link/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

spi: stm32: qspi: Fix dual flash mode sanity test in stm32_qspi_setup() [+ + +]
Author: Patrice Chotard <[email protected]>
Date:   Tue Jun 18 15:29:49 2024 +0200

    spi: stm32: qspi: Fix dual flash mode sanity test in stm32_qspi_setup()
    
    commit c2bd0791c5f02e964402624dfff45ca8995f5397 upstream.
    
    Misplaced parenthesis make test of mode wrong in case mode is equal to
    SPI_TX_OCTAL or SPI_RX_OCTAL.
    
    Simplify this sanity test, if one of this bit is set, property
    cs-gpio must be present in DT.
    
    Fixes: a557fca630cc ("spi: stm32_qspi: Add transfer_one_message() spi callback")
    Cc: [email protected]
    Signed-off-by: Patrice Chotard <[email protected]>
    Link: https://msgid.link/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
tcp: clear tp->retrans_stamp in tcp_rcv_fastopen_synack() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Jun 14 13:06:15 2024 +0000

    tcp: clear tp->retrans_stamp in tcp_rcv_fastopen_synack()
    
    commit 9e046bb111f13461d3f9331e24e974324245140e upstream.
    
    Some applications were reporting ETIMEDOUT errors on apparently
    good looking flows, according to packet dumps.
    
    We were able to root cause the issue to an accidental setting
    of tp->retrans_stamp in the following scenario:
    
    - client sends TFO SYN with data.
    - server has TFO disabled, ACKs only SYN but not payload.
    - client receives SYNACK covering only SYN.
    - tcp_ack() eats SYN and sets tp->retrans_stamp to 0.
    - tcp_rcv_fastopen_synack() calls tcp_xmit_retransmit_queue()
      to retransmit TFO payload w/o SYN, sets tp->retrans_stamp to "now",
      but we are not in any loss recovery state.
    - TFO payload is ACKed.
    - we are not in any loss recovery state, and don't see any dupacks,
      so we don't get to any code path that clears tp->retrans_stamp.
    - tp->retrans_stamp stays non-zero for the lifetime of the connection.
    - after first RTO, tcp_clamp_rto_to_user_timeout() clamps second RTO
      to 1 jiffy due to bogus tp->retrans_stamp.
    - on clamped RTO with non-zero icsk_retransmits, retransmits_timed_out()
      sets start_ts from tp->retrans_stamp from TFO payload retransmit
      hours/days ago, and computes bogus long elapsed time for loss recovery,
      and suffers ETIMEDOUT early.
    
    Fixes: a7abf3cd76e1 ("tcp: consider using standard rtx logic in tcp_rcv_fastopen_synack()")
    CC: [email protected]
    Co-developed-by: Neal Cardwell <[email protected]>
    Signed-off-by: Neal Cardwell <[email protected]>
    Co-developed-by: Yuchung Cheng <[email protected]>
    Signed-off-by: Yuchung Cheng <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
tipc: force a dst refcount before doing decryption [+ + +]
Author: Xin Long <[email protected]>
Date:   Sat Jun 15 14:27:20 2024 -0400

    tipc: force a dst refcount before doing decryption
    
    [ Upstream commit 2ebe8f840c7450ecbfca9d18ac92e9ce9155e269 ]
    
    As it says in commit 3bc07321ccc2 ("xfrm: Force a dst refcount before
    entering the xfrm type handlers"):
    
    "Crypto requests might return asynchronous. In this case we leave the
     rcu protected region, so force a refcount on the skb's destination
     entry before we enter the xfrm type input/output handlers."
    
    On TIPC decryption path it has the same problem, and skb_dst_force()
    should be called before doing decryption to avoid a possible crash.
    
    Shuang reported this issue when this warning is triggered:
    
      [] WARNING: include/net/dst.h:337 tipc_sk_rcv+0x1055/0x1ea0 [tipc]
      [] Kdump: loaded Tainted: G W --------- - - 4.18.0-496.el8.x86_64+debug
      [] Workqueue: crypto cryptd_queue_worker
      [] RIP: 0010:tipc_sk_rcv+0x1055/0x1ea0 [tipc]
      [] Call Trace:
      [] tipc_sk_mcast_rcv+0x548/0xea0 [tipc]
      [] tipc_rcv+0xcf5/0x1060 [tipc]
      [] tipc_aead_decrypt_done+0x215/0x2e0 [tipc]
      [] cryptd_aead_crypt+0xdb/0x190
      [] cryptd_queue_worker+0xed/0x190
      [] process_one_work+0x93d/0x17e0
    
    Fixes: fc1b6d6de220 ("tipc: introduce TIPC encryption & authentication")
    Reported-by: Shuang Li <[email protected]>
    Signed-off-by: Xin Long <[email protected]>
    Link: https://lore.kernel.org/r/fbe3195fad6997a4eec62d9bf076b2ad03ac336b.1718476040.git.lucien.xin@gmail.com
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tracing: Add MODULE_DESCRIPTION() to preemptirq_delay_test [+ + +]
Author: Jeff Johnson <[email protected]>
Date:   Sat May 18 15:54:49 2024 -0700

    tracing: Add MODULE_DESCRIPTION() to preemptirq_delay_test
    
    [ Upstream commit 23748e3e0fbfe471eff5ce439921629f6a427828 ]
    
    Fix the 'make W=1' warning:
    
    WARNING: modpost: missing MODULE_DESCRIPTION() in kernel/trace/preemptirq_delay_test.o
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: [email protected]
    Cc: Mathieu Desnoyers <[email protected]>
    Fixes: f96e8577da10 ("lib: Add module for testing preemptoff/irqsoff latency tracers")
    Acked-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tracing: Build event generation tests only as modules [+ + +]
Author: Masami Hiramatsu (Google) <[email protected]>
Date:   Tue Jun 11 22:30:37 2024 +0900

    tracing: Build event generation tests only as modules
    
    [ Upstream commit 3572bd5689b0812b161b40279e39ca5b66d73e88 ]
    
    The kprobes and synth event generation test modules add events and lock
    (get a reference) those event file reference in module init function,
    and unlock and delete it in module exit function. This is because those
    are designed for playing as modules.
    
    If we make those modules as built-in, those events are left locked in the
    kernel, and never be removed. This causes kprobe event self-test failure
    as below.
    
    [   97.349708] ------------[ cut here ]------------
    [   97.353453] WARNING: CPU: 3 PID: 1 at kernel/trace/trace_kprobe.c:2133 kprobe_trace_self_tests_init+0x3f1/0x480
    [   97.357106] Modules linked in:
    [   97.358488] CPU: 3 PID: 1 Comm: swapper/0 Not tainted 6.9.0-g699646734ab5-dirty #14
    [   97.361556] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
    [   97.363880] RIP: 0010:kprobe_trace_self_tests_init+0x3f1/0x480
    [   97.365538] Code: a8 24 08 82 e9 ae fd ff ff 90 0f 0b 90 48 c7 c7 e5 aa 0b 82 e9 ee fc ff ff 90 0f 0b 90 48 c7 c7 2d 61 06 82 e9 8e fd ff ff 90 <0f> 0b 90 48 c7 c7 33 0b 0c 82 89 c6 e8 6e 03 1f ff 41 ff c7 e9 90
    [   97.370429] RSP: 0000:ffffc90000013b50 EFLAGS: 00010286
    [   97.371852] RAX: 00000000fffffff0 RBX: ffff888005919c00 RCX: 0000000000000000
    [   97.373829] RDX: ffff888003f40000 RSI: ffffffff8236a598 RDI: ffff888003f40a68
    [   97.375715] RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000000
    [   97.377675] R10: ffffffff811c9ae5 R11: ffffffff8120c4e0 R12: 0000000000000000
    [   97.379591] R13: 0000000000000001 R14: 0000000000000015 R15: 0000000000000000
    [   97.381536] FS:  0000000000000000(0000) GS:ffff88807dcc0000(0000) knlGS:0000000000000000
    [   97.383813] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   97.385449] CR2: 0000000000000000 CR3: 0000000002244000 CR4: 00000000000006b0
    [   97.387347] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   97.389277] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   97.391196] Call Trace:
    [   97.391967]  <TASK>
    [   97.392647]  ? __warn+0xcc/0x180
    [   97.393640]  ? kprobe_trace_self_tests_init+0x3f1/0x480
    [   97.395181]  ? report_bug+0xbd/0x150
    [   97.396234]  ? handle_bug+0x3e/0x60
    [   97.397311]  ? exc_invalid_op+0x1a/0x50
    [   97.398434]  ? asm_exc_invalid_op+0x1a/0x20
    [   97.399652]  ? trace_kprobe_is_busy+0x20/0x20
    [   97.400904]  ? tracing_reset_all_online_cpus+0x15/0x90
    [   97.402304]  ? kprobe_trace_self_tests_init+0x3f1/0x480
    [   97.403773]  ? init_kprobe_trace+0x50/0x50
    [   97.404972]  do_one_initcall+0x112/0x240
    [   97.406113]  do_initcall_level+0x95/0xb0
    [   97.407286]  ? kernel_init+0x1a/0x1a0
    [   97.408401]  do_initcalls+0x3f/0x70
    [   97.409452]  kernel_init_freeable+0x16f/0x1e0
    [   97.410662]  ? rest_init+0x1f0/0x1f0
    [   97.411738]  kernel_init+0x1a/0x1a0
    [   97.412788]  ret_from_fork+0x39/0x50
    [   97.413817]  ? rest_init+0x1f0/0x1f0
    [   97.414844]  ret_from_fork_asm+0x11/0x20
    [   97.416285]  </TASK>
    [   97.417134] irq event stamp: 13437323
    [   97.418376] hardirqs last  enabled at (13437337): [<ffffffff8110bc0c>] console_unlock+0x11c/0x150
    [   97.421285] hardirqs last disabled at (13437370): [<ffffffff8110bbf1>] console_unlock+0x101/0x150
    [   97.423838] softirqs last  enabled at (13437366): [<ffffffff8108e17f>] handle_softirqs+0x23f/0x2a0
    [   97.426450] softirqs last disabled at (13437393): [<ffffffff8108e346>] __irq_exit_rcu+0x66/0xd0
    [   97.428850] ---[ end trace 0000000000000000 ]---
    
    And also, since we can not cleanup dynamic_event file, ftracetest are
    failed too.
    
    To avoid these issues, build these tests only as modules.
    
    Link: https://lore.kernel.org/all/171811263754.85078.5877446624311852525.stgit@devnote2/
    
    Fixes: 9fe41efaca08 ("tracing: Add synth event generation test module")
    Fixes: 64836248dda2 ("tracing: Add kprobe event command generation test module")
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Reviewed-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tty: add the option to have a tty reject a new ldisc [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Tue Apr 23 09:33:39 2024 -0700

    tty: add the option to have a tty reject a new ldisc
    
    [ Upstream commit 6bd23e0c2bb6c65d4f5754d1456bc9a4427fc59b ]
    
    ... and use it to limit the virtual terminals to just N_TTY.  They are
    kind of special, and in particular, the "con_write()" routine violates
    the "writes cannot sleep" rule that some ldiscs rely on.
    
    This avoids the
    
       BUG: sleeping function called from invalid context at kernel/printk/printk.c:2659
    
    when N_GSM has been attached to a virtual console, and gsmld_write()
    calls con_write() while holding a spinlock, and con_write() then tries
    to get the console lock.
    
    Tested-by: Tetsuo Handa <[email protected]>
    Cc: Jiri Slaby <[email protected]>
    Cc: Andrew Morton <[email protected]>
    Cc: Daniel Starke <[email protected]>
    Reported-by: syzbot <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=dbac96d8e73b61aa559c
    Signed-off-by: Linus Torvalds <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
udf: udftime: prevent overflow in udf_disk_stamp_to_time() [+ + +]
Author: Roman Smirnov <[email protected]>
Date:   Wed Mar 27 16:27:55 2024 +0300

    udf: udftime: prevent overflow in udf_disk_stamp_to_time()
    
    [ Upstream commit 3b84adf460381169c085e4bc09e7b57e9e16db0a ]
    
    An overflow can occur in a situation where src.centiseconds
    takes the value of 255. This situation is unlikely, but there
    is no validation check anywere in the code.
    
    Found by Linux Verification Center (linuxtesting.org) with Svace.
    
    Suggested-by: Jan Kara <[email protected]>
    Signed-off-by: Roman Smirnov <[email protected]>
    Reviewed-by: Sergey Shtylyov <[email protected]>
    Signed-off-by: Jan Kara <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
usb: dwc3: pci: Don't set "linux,phy_charger_detect" property on Lenovo Yoga Tab2 1380 [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Sat Apr 6 16:01:27 2024 +0200

    usb: dwc3: pci: Don't set "linux,phy_charger_detect" property on Lenovo Yoga Tab2 1380
    
    [ Upstream commit 0fb782b5d5c462b2518b3b4fe7d652114c28d613 ]
    
    The Lenovo Yoga Tablet 2 Pro 1380 model is the exception to the rule that
    devices which use the Crystal Cove PMIC without using ACPI for battery and
    AC power_supply class support use the USB-phy for charger detection.
    
    Unlike the Lenovo Yoga Tablet 2 830 / 1050 models this model has an extra
    LC824206XA Micro USB switch which does the charger detection.
    
    Add a DMI quirk to not set the "linux,phy_charger_detect" property on
    the 1380 model. This quirk matches on the BIOS version to differentiate
    the 1380 model from the 830 and 1050 models which otherwise have
    the same DMI strings.
    
    Signed-off-by: Hans de Goede <[email protected]>
    Acked-by: Thinh Nguyen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: gadget: function: Remove usage of the deprecated ida_simple_xx() API [+ + +]
Author: Christophe JAILLET <[email protected]>
Date:   Sun Apr 14 17:10:32 2024 +0200

    usb: gadget: function: Remove usage of the deprecated ida_simple_xx() API
    
    [ Upstream commit 920e7522e3bab5ebc2fb0cc1a034f4470c87fa97 ]
    
    ida_alloc() and ida_free() should be preferred to the deprecated
    ida_simple_get() and ida_simple_remove().
    
    Note that the upper limit of ida_simple_get() is exclusive, but the one of
    ida_alloc_max() is inclusive. So a -1 has been added when needed.
    
    Signed-off-by: Christophe JAILLET <[email protected]>
    Link: https://lore.kernel.org/r/7cd361e2b377a5373968fa7deee4169229992a1e.1713107386.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: misc: uss720: check for incompatible versions of the Belkin F5U002 [+ + +]
Author: Alex Henrie <[email protected]>
Date:   Tue Mar 26 09:07:11 2024 -0600

    usb: misc: uss720: check for incompatible versions of the Belkin F5U002
    
    [ Upstream commit 3295f1b866bfbcabd625511968e8a5c541f9ab32 ]
    
    The incompatible device in my possession has a sticker that says
    "F5U002 Rev 2" and "P80453-B", and lsusb identifies it as
    "050d:0002 Belkin Components IEEE-1284 Controller". There is a bug
    report from 2007 from Michael Trausch who was seeing the exact same
    errors that I saw in 2024 trying to use this cable.
    
    Link: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Alex Henrie <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
virtio_net: checksum offloading handling fix [+ + +]
Author: Heng Qi <[email protected]>
Date:   Mon Jun 17 21:15:23 2024 +0800

    virtio_net: checksum offloading handling fix
    
    [ Upstream commit 604141c036e1b636e2a71cf6e1aa09d1e45f40c2 ]
    
    In virtio spec 0.95, VIRTIO_NET_F_GUEST_CSUM was designed to handle
    partially checksummed packets, and the validation of fully checksummed
    packets by the device is independent of VIRTIO_NET_F_GUEST_CSUM
    negotiation. However, the specification erroneously stated:
    
      "If VIRTIO_NET_F_GUEST_CSUM is not negotiated, the device MUST set flags
       to zero and SHOULD supply a fully checksummed packet to the driver."
    
    This statement is inaccurate because even without VIRTIO_NET_F_GUEST_CSUM
    negotiation, the device can still set the VIRTIO_NET_HDR_F_DATA_VALID flag.
    Essentially, the device can facilitate the validation of these packets'
    checksums - a process known as RX checksum offloading - removing the need
    for the driver to do so.
    
    This scenario is currently not implemented in the driver and requires
    correction. The necessary specification correction[1] has been made and
    approved in the virtio TC vote.
    [1] https://lists.oasis-open.org/archives/virtio-comment/202401/msg00011.html
    
    Fixes: 4f49129be6fa ("virtio-net: Set RXCSUM feature if GUEST_CSUM is available")
    Signed-off-by: Heng Qi <[email protected]>
    Reviewed-by: Jiri Pirko <[email protected]>
    Acked-by: Jason Wang <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
wifi: ath9k: work around memset overflow warning [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Thu Apr 4 09:35:59 2024 +0300

    wifi: ath9k: work around memset overflow warning
    
    [ Upstream commit 61752ac69b69ed2e04444d090f6917c77ab36d42 ]
    
    gcc-9 and some other older versions produce a false-positive warning
    for zeroing two fields
    
    In file included from include/linux/string.h:369,
                     from drivers/net/wireless/ath/ath9k/main.c:18:
    In function 'fortify_memset_chk',
        inlined from 'ath9k_ps_wakeup' at drivers/net/wireless/ath/ath9k/main.c:140:3:
    include/linux/fortify-string.h:462:25: error: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Werror=attribute-warning]
      462 |                         __write_overflow_field(p_size_field, size);
          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Using a struct_group seems to reliably avoid the warning and
    not make the code much uglier. The combined memset() should even
    save a couple of cpu cycles.
    
    Signed-off-by: Arnd Bergmann <[email protected]>
    Acked-by: Toke Høiland-Jørgensen <[email protected]>
    Reviewed-by: Kees Cook <[email protected]>
    Signed-off-by: Kalle Valo <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7921s: fix potential hung tasks during chip recovery [+ + +]
Author: Leon Yen <[email protected]>
Date:   Thu Mar 7 17:46:32 2024 +0800

    wifi: mt76: mt7921s: fix potential hung tasks during chip recovery
    
    [ Upstream commit ecf0b2b8a37c8464186620bef37812a117ff6366 ]
    
    During chip recovery (e.g. chip reset), there is a possible situation that
    kernel worker reset_work is holding the lock and waiting for kernel thread
    stat_worker to be parked, while stat_worker is waiting for the release of
    the same lock.
    It causes a deadlock resulting in the dumping of hung tasks messages and
    possible rebooting of the device.
    
    This patch prevents the execution of stat_worker during the chip recovery.
    
    Signed-off-by: Leon Yen <[email protected]>
    Signed-off-by: Ming Yen Hsieh <[email protected]>
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/cpu/vfm: Add new macros to work with (vendor/family/model) values [+ + +]
Author: Tony Luck <[email protected]>
Date:   Tue Apr 16 14:19:04 2024 -0700

    x86/cpu/vfm: Add new macros to work with (vendor/family/model) values
    
    [ Upstream commit e6dfdc2e89a0adedf455814c91b977d6a584cc88 ]
    
    To avoid adding a slew of new macros for each new Intel CPU family
    switch over from providing CPU model number #defines to a new
    scheme that encodes vendor, family, and model in a single number.
    
      [ bp: s/casted/cast/g ]
    
    Signed-off-by: Tony Luck <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Reviewed-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: 93022482b294 ("x86/cpu: Fix x86_match_cpu() to match just X86_VENDOR_INTEL")
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/cpu: Fix x86_match_cpu() to match just X86_VENDOR_INTEL [+ + +]
Author: Tony Luck <[email protected]>
Date:   Mon May 20 15:45:33 2024 -0700

    x86/cpu: Fix x86_match_cpu() to match just X86_VENDOR_INTEL
    
    [ Upstream commit 93022482b2948a9a7e9b5a2bb685f2e1cb4c3348 ]
    
    Code in v6.9 arch/x86/kernel/smpboot.c was changed by commit
    
      4db64279bc2b ("x86/cpu: Switch to new Intel CPU model defines") from:
    
      static const struct x86_cpu_id intel_cod_cpu[] = {
              X86_MATCH_INTEL_FAM6_MODEL(HASWELL_X, 0),       /* COD */
              X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_X, 0),     /* COD */
              X86_MATCH_INTEL_FAM6_MODEL(ANY, 1),             /* SNC */     <--- 443
              {}
      };
    
      static bool match_llc(struct cpuinfo_x86 *c, struct cpuinfo_x86 *o)
      {
              const struct x86_cpu_id *id = x86_match_cpu(intel_cod_cpu);
    
    to:
    
      static const struct x86_cpu_id intel_cod_cpu[] = {
               X86_MATCH_VFM(INTEL_HASWELL_X,   0),    /* COD */
               X86_MATCH_VFM(INTEL_BROADWELL_X, 0),    /* COD */
               X86_MATCH_VFM(INTEL_ANY,         1),    /* SNC */
               {}
       };
    
      static bool match_llc(struct cpuinfo_x86 *c, struct cpuinfo_x86 *o)
      {
              const struct x86_cpu_id *id = x86_match_cpu(intel_cod_cpu);
    
    On an Intel CPU with SNC enabled this code previously matched the rule on line
    443 to avoid printing messages about insane cache configuration.  The new code
    did not match any rules.
    
    Expanding the macros for the intel_cod_cpu[] array shows that the old is
    equivalent to:
    
      static const struct x86_cpu_id intel_cod_cpu[] = {
      [0] = { .vendor = 0, .family = 6, .model = 0x3F, .steppings = 0, .feature = 0, .driver_data = 0 },
      [1] = { .vendor = 0, .family = 6, .model = 0x4F, .steppings = 0, .feature = 0, .driver_data = 0 },
      [2] = { .vendor = 0, .family = 6, .model = 0x00, .steppings = 0, .feature = 0, .driver_data = 1 },
      [3] = { .vendor = 0, .family = 0, .model = 0x00, .steppings = 0, .feature = 0, .driver_data = 0 }
      }
    
    while the new code expands to:
    
      static const struct x86_cpu_id intel_cod_cpu[] = {
      [0] = { .vendor = 0, .family = 6, .model = 0x3F, .steppings = 0, .feature = 0, .driver_data = 0 },
      [1] = { .vendor = 0, .family = 6, .model = 0x4F, .steppings = 0, .feature = 0, .driver_data = 0 },
      [2] = { .vendor = 0, .family = 0, .model = 0x00, .steppings = 0, .feature = 0, .driver_data = 1 },
      [3] = { .vendor = 0, .family = 0, .model = 0x00, .steppings = 0, .feature = 0, .driver_data = 0 }
      }
    
    Looking at the code for x86_match_cpu():
    
      const struct x86_cpu_id *x86_match_cpu(const struct x86_cpu_id *match)
      {
               const struct x86_cpu_id *m;
               struct cpuinfo_x86 *c = &boot_cpu_data;
    
               for (m = match;
                    m->vendor | m->family | m->model | m->steppings | m->feature;
                    m++) {
                    ...
               }
               return NULL;
    
    it is clear that there was no match because the ANY entry in the table (array
    index 2) is now the loop termination condition (all of vendor, family, model,
    steppings, and feature are zero).
    
    So this code was working before because the "ANY" check was looking for any
    Intel CPU in family 6. But fails now because the family is a wild card. So the
    root cause is that x86_match_cpu() has never been able to match on a rule with
    just X86_VENDOR_INTEL and all other fields set to wildcards.
    
    Add a new flags field to struct x86_cpu_id that has a bit set to indicate that
    this entry in the array is valid. Update X86_MATCH*() macros to set that bit.
    Change the end-marker check in x86_match_cpu() to just check the flags field
    for this bit.
    
    Backporter notes: The commit in Fixes is really the one that is broken:
    you can't have m->vendor as part of the loop termination conditional in
    x86_match_cpu() because it can happen - as it has happened above
    - that that whole conditional is 0 albeit vendor == 0 is a valid case
    - X86_VENDOR_INTEL is 0.
    
    However, the only case where the above happens is the SNC check added by
    4db64279bc2b1 so you only need this fix if you have backported that
    other commit
    
      4db64279bc2b ("x86/cpu: Switch to new Intel CPU model defines")
    
    Fixes: 644e9cbbe3fc ("Add driver auto probing for x86 features v4")
    Suggested-by: Thomas Gleixner <[email protected]>
    Suggested-by: Borislav Petkov <[email protected]>
    Signed-off-by: Tony Luck <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Cc: <[email protected]> # see above
    Link: https://lore.kernel.org/r/20240517144312.GBZkdtAOuJZCvxhFbJ@fat_crate.local
    Signed-off-by: Sasha Levin <[email protected]>

 
xfrm6: check ip6_dst_idev() return value in xfrm6_get_saddr() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Sat Jun 15 15:42:31 2024 +0000

    xfrm6: check ip6_dst_idev() return value in xfrm6_get_saddr()
    
    [ Upstream commit d46401052c2d5614da8efea5788532f0401cb164 ]
    
    ip6_dst_idev() can return NULL, xfrm6_get_saddr() must act accordingly.
    
    syzbot reported:
    
    Oops: general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] PREEMPT SMP KASAN PTI
    KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
    CPU: 1 PID: 12 Comm: kworker/u8:1 Not tainted 6.10.0-rc2-syzkaller-00383-gb8481381d4e2 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/02/2024
    Workqueue: wg-kex-wg1 wg_packet_handshake_send_worker
     RIP: 0010:xfrm6_get_saddr+0x93/0x130 net/ipv6/xfrm6_policy.c:64
    Code: df 48 89 fa 48 c1 ea 03 80 3c 02 00 0f 85 97 00 00 00 4c 8b ab d8 00 00 00 48 b8 00 00 00 00 00 fc ff df 4c 89 ea 48 c1 ea 03 <80> 3c 02 00 0f 85 86 00 00 00 4d 8b 6d 00 e8 ca 13 47 01 48 b8 00
    RSP: 0018:ffffc90000117378 EFLAGS: 00010246
    RAX: dffffc0000000000 RBX: ffff88807b079dc0 RCX: ffffffff89a0d6d7
    RDX: 0000000000000000 RSI: ffffffff89a0d6e9 RDI: ffff88807b079e98
    RBP: ffff88807ad73248 R08: 0000000000000007 R09: fffffffffffff000
    R10: ffff88807b079dc0 R11: 0000000000000007 R12: ffffc90000117480
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    FS:  0000000000000000(0000) GS:ffff8880b9300000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f4586d00440 CR3: 0000000079042000 CR4: 00000000003506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
      xfrm_get_saddr net/xfrm/xfrm_policy.c:2452 [inline]
      xfrm_tmpl_resolve_one net/xfrm/xfrm_policy.c:2481 [inline]
      xfrm_tmpl_resolve+0xa26/0xf10 net/xfrm/xfrm_policy.c:2541
      xfrm_resolve_and_create_bundle+0x140/0x2570 net/xfrm/xfrm_policy.c:2835
      xfrm_bundle_lookup net/xfrm/xfrm_policy.c:3070 [inline]
      xfrm_lookup_with_ifid+0x4d1/0x1e60 net/xfrm/xfrm_policy.c:3201
      xfrm_lookup net/xfrm/xfrm_policy.c:3298 [inline]
      xfrm_lookup_route+0x3b/0x200 net/xfrm/xfrm_policy.c:3309
      ip6_dst_lookup_flow+0x15c/0x1d0 net/ipv6/ip6_output.c:1256
      send6+0x611/0xd20 drivers/net/wireguard/socket.c:139
      wg_socket_send_skb_to_peer+0xf9/0x220 drivers/net/wireguard/socket.c:178
      wg_socket_send_buffer_to_peer+0x12b/0x190 drivers/net/wireguard/socket.c:200
      wg_packet_send_handshake_initiation+0x227/0x360 drivers/net/wireguard/send.c:40
      wg_packet_handshake_send_worker+0x1c/0x30 drivers/net/wireguard/send.c:51
      process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
      process_scheduled_works kernel/workqueue.c:3312 [inline]
      worker_thread+0x6c8/0xf70 kernel/workqueue.c:3393
      kthread+0x2c1/0x3a0 kernel/kthread.c:389
      ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
      ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: syzbot <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>