Changelog in Linux kernel 6.6.45

 
ALSA: hda/realtek: Add quirk for Acer Aspire E5-574G [+ + +]
Author: Mavroudis Chatzilazaridis <[email protected]>
Date:   Sun Jul 28 12:36:04 2024 +0000

    ALSA: hda/realtek: Add quirk for Acer Aspire E5-574G
    
    commit 3c0b6f924e1259ade38587ea719b693f6f6f2f3e upstream.
    
    ALC255_FIXUP_ACER_LIMIT_INT_MIC_BOOST fixes combo jack detection and
    limits the internal microphone boost that causes clipping on this model.
    
    Signed-off-by: Mavroudis Chatzilazaridis <[email protected]>
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: hda: Conditionally use snooping for AMD HDMI [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Wed Jul 31 19:05:15 2024 +0200

    ALSA: hda: Conditionally use snooping for AMD HDMI
    
    [ Upstream commit 478689b5990deb626a0b3f1ebf165979914d6be4 ]
    
    The recent regression report revealed that the use of WC pages for AMD
    HDMI device together with AMD IOMMU leads to unexpected truncation or
    noises.  The issue seems triggered by the change in the kernel core
    memory allocation that enables IOMMU driver to use always S/G
    buffers.  Meanwhile, the use of WC pages has been a workaround for the
    similar issue with standard pages in the past.  So, now we need to
    apply the workaround conditionally, namely, only when IOMMU isn't in
    place.
    
    This patch modifies the workaround code to check the DMA ops at first
    and apply the snoop-off only when needed.
    
    Fixes: f5ff79fddf0e ("dma-mapping: remove CONFIG_DMA_REMAP")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=219087
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda: conexant: Fix headset auto detect fail in the polling mode [+ + +]
Author: songxiebing <[email protected]>
Date:   Fri Jul 26 18:07:26 2024 +0800

    ALSA: hda: conexant: Fix headset auto detect fail in the polling mode
    
    [ Upstream commit e60dc98122110594d0290845160f12916192fc6d ]
    
    The previous fix (7aeb25908648) only handles the unsol_event reporting
    during interrupts and does not include the polling mode used to set
    jackroll_ms, so now we are replacing it with
    snd_hda_jack_detect_enable_callback.
    
    Fixes: 7aeb25908648 ("ALSA: hda/conexant: Fix headset auto detect fail in cx8070 and SN6140")
    Co-developed-by: bo liu <[email protected]>
    Signed-off-by: bo liu <[email protected]>
    Signed-off-by: songxiebing <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: seq: ump: Optimize conversions from SysEx to UMP [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Fri Jul 26 16:34:54 2024 +0200

    ALSA: seq: ump: Optimize conversions from SysEx to UMP
    
    commit 952b13c215234855d75ef4b5bb0138075e73677c upstream.
    
    The current conversion from the legacy SysEx event to UMP SysEx packet
    in the sequencer core has a couple of issues:
    
    * The first packet trims the SysEx start byte (0xf0), hence it
      contains only 5 bytes instead of 6.  This isn't wrong, per
      specification, but it's strange not to fill 6 bytes.
    
    * When the SysEx end marker (0xf7) is placed at the first byte of the
      next packet, it'll end up with an empty data just with the END
      status.  It can be rather folded into the previous packet with the
      END status.
    
    This patch tries to address those issues.  The first packet may have 6
    bytes even with the SysEx start, and an empty packet with the SysEx
    end marker is omitted.
    
    Fixes: e9e02819a98a ("ALSA: seq: Automatic conversion of UMP events")
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: usb-audio: Correct surround channels in UAC1 channel map [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Wed Jul 31 16:19:41 2024 +0200

    ALSA: usb-audio: Correct surround channels in UAC1 channel map
    
    commit b7b7e1ab7619deb3b299b5e5c619c3e6f183a12d upstream.
    
    USB-audio driver puts SNDRV_CHMAP_SL and _SR as left and right
    surround channels for UAC1 channel map, respectively.  But they should
    have been SNDRV_CHMAP_RL and _RR; the current value *_SL and _SR are
    rather "side" channels, not "surround".  I guess I took those
    mistakenly when I read the spec mentioning "surround left".
    
    This patch corrects those entries to be the right channels.
    
    Suggested-by: Sylvain BERTRAND <[email protected]>
    Closes: https://lore.kernel.orgZ/qIyJD8lhd8hFhlC@freedom
    Fixes: 04324ccc75f9 ("ALSA: usb-audio: add channel map support")
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
arm64: dts: qcom: ipq8074: Disable SS instance in Parkmode for USB [+ + +]
Author: Krishna Kurapati <[email protected]>
Date:   Thu Jul 4 20:58:42 2024 +0530

    arm64: dts: qcom: ipq8074: Disable SS instance in Parkmode for USB
    
    [ Upstream commit dc6ba95c6c4400a84cca5b419b34ae852a08cfb5 ]
    
    For Gen-1 targets like IPQ8074, it is seen that stressing out the
    controller in host mode results in HC died error:
    
     xhci-hcd.12.auto: xHCI host not responding to stop endpoint command
     xhci-hcd.12.auto: xHCI host controller not responding, assume dead
     xhci-hcd.12.auto: HC died; cleaning up
    
    And at this instant only restarting the host mode fixes it. Disable
    SuperSpeed instance in park mode for IPQ8074 to mitigate this issue.
    
    Cc: [email protected]
    Fixes: 5e09bc51d07b ("arm64: dts: ipq8074: enable USB support")
    Signed-off-by: Krishna Kurapati <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: msm8998: Disable SS instance in Parkmode for USB [+ + +]
Author: Krishna Kurapati <[email protected]>
Date:   Thu Jul 4 20:58:43 2024 +0530

    arm64: dts: qcom: msm8998: Disable SS instance in Parkmode for USB
    
    [ Upstream commit 0046325ae52079b46da13a7f84dd7b2a6f7c38f8 ]
    
    For Gen-1 targets like MSM8998, it is seen that stressing out the
    controller in host mode results in HC died error:
    
     xhci-hcd.12.auto: xHCI host not responding to stop endpoint command
     xhci-hcd.12.auto: xHCI host controller not responding, assume dead
     xhci-hcd.12.auto: HC died; cleaning up
    
    And at this instant only restarting the host mode fixes it. Disable
    SuperSpeed instance in park mode for MSM8998 to mitigate this issue.
    
    Cc: [email protected]
    Fixes: 026dad8f5873 ("arm64: dts: qcom: msm8998: Add USB-related nodes")
    Signed-off-by: Krishna Kurapati <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: msm8998: switch USB QMP PHY to new style of bindings [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Fri Aug 25 00:19:46 2023 +0300

    arm64: dts: qcom: msm8998: switch USB QMP PHY to new style of bindings
    
    [ Upstream commit b7efebfeb2e8ad8187cdabba5f0212ba2e6c1069 ]
    
    Change the USB QMP PHY to use newer style of QMP PHY bindings (single
    resource region, no per-PHY subnodes).
    
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Stable-dep-of: 0046325ae520 ("arm64: dts: qcom: msm8998: Disable SS instance in Parkmode for USB")
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc7180: Disable SuperSpeed instances in park mode [+ + +]
Author: Krishna Kurapati <[email protected]>
Date:   Tue Jun 4 11:36:58 2024 +0530

    arm64: dts: qcom: sc7180: Disable SuperSpeed instances in park mode
    
    [ Upstream commit 5b8baed4b88132c12010ce6ca1b56f00d122e376 ]
    
    On SC7180, in host mode, it is observed that stressing out controller
    results in HC died error:
    
     xhci-hcd.12.auto: xHCI host not responding to stop endpoint command
     xhci-hcd.12.auto: xHCI host controller not responding, assume dead
     xhci-hcd.12.auto: HC died; cleaning up
    
    And at this instant only restarting the host mode fixes it. Disable
    SuperSpeed instances in park mode for SC7180 to mitigate this issue.
    
    Reported-by: Doug Anderson <[email protected]>
    Cc: [email protected]
    Fixes: 0b766e7fe5a2 ("arm64: dts: qcom: sc7180: Add USB related nodes")
    Signed-off-by: Krishna Kurapati <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc7180: switch USB+DP QMP PHY to new style of bindings [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Jul 11 15:09:11 2023 +0300

    arm64: dts: qcom: sc7180: switch USB+DP QMP PHY to new style of bindings
    
    [ Upstream commit ebb840b00b7f9fc15153b37a7d9ec5b47a5308c1 ]
    
    Change the USB QMP PHY to use newer style of QMP PHY bindings (single
    resource region, no per-PHY subnodes).
    
    Reviewed-by: Neil Armstrong <[email protected]>
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Stable-dep-of: 5b8baed4b881 ("arm64: dts: qcom: sc7180: Disable SuperSpeed instances in park mode")
    Signed-off-by: Sasha Levin <[email protected]>
arm64: dts: qcom: sc7280: Disable SuperSpeed instances in park mode [+ + +]
Author: Krishna Kurapati <[email protected]>
Date:   Tue Jun 4 11:36:59 2024 +0530

    arm64: dts: qcom: sc7280: Disable SuperSpeed instances in park mode
    
    [ Upstream commit 3d930f1750ce30a6c36dbc71f8ff7e20322b94d7 ]
    
    On SC7280, in host mode, it is observed that stressing out controller
    results in HC died error:
    
     xhci-hcd.12.auto: xHCI host not responding to stop endpoint command
     xhci-hcd.12.auto: xHCI host controller not responding, assume dead
     xhci-hcd.12.auto: HC died; cleaning up
    
    And at this instant only restarting the host mode fixes it. Disable
    SuperSpeed instances in park mode for SC7280 to mitigate this issue.
    
    Reported-by: Doug Anderson <[email protected]>
    Cc: [email protected]
    Fixes: bb9efa59c665 ("arm64: dts: qcom: sc7280: Add USB related nodes")
    Signed-off-by: Krishna Kurapati <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc7280: switch USB+DP QMP PHY to new style of bindings [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Jul 11 15:09:13 2023 +0300

    arm64: dts: qcom: sc7280: switch USB+DP QMP PHY to new style of bindings
    
    [ Upstream commit 36888ed83f998c3335272f9e353eaf6d109e2429 ]
    
    Change the USB QMP PHY to use newer style of QMP PHY bindings (single
    resource region, no per-PHY subnodes).
    
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Stable-dep-of: 3d930f1750ce ("arm64: dts: qcom: sc7280: Disable SuperSpeed instances in park mode")
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm845: Disable SS instance in Parkmode for USB [+ + +]
Author: Krishna Kurapati <[email protected]>
Date:   Thu Jul 4 20:58:48 2024 +0530

    arm64: dts: qcom: sdm845: Disable SS instance in Parkmode for USB
    
    [ Upstream commit cf4d6d54eadb60d2ee4d31c9d92299f5e8dcb55c ]
    
    For Gen-1 targets like SDM845, it is seen that stressing out the
    controller in host mode results in HC died error:
    
     xhci-hcd.12.auto: xHCI host not responding to stop endpoint command
     xhci-hcd.12.auto: xHCI host controller not responding, assume dead
     xhci-hcd.12.auto: HC died; cleaning up
    
    And at this instant only restarting the host mode fixes it. Disable
    SuperSpeed instance in park mode for SDM845 to mitigate this issue.
    
    Cc: [email protected]
    Fixes: ca4db2b538a1 ("arm64: dts: qcom: sdm845: Add USB-related nodes")
    Signed-off-by: Krishna Kurapati <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm845: switch USB QMP PHY to new style of bindings [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Fri Aug 25 00:19:47 2023 +0300

    arm64: dts: qcom: sdm845: switch USB QMP PHY to new style of bindings
    
    [ Upstream commit ca5ca568d7388b38039c8d658735fc539352b1db ]
    
    Change the USB QMP PHY to use newer style of QMP PHY bindings (single
    resource region, no per-PHY subnodes).
    
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Stable-dep-of: cf4d6d54eadb ("arm64: dts: qcom: sdm845: Disable SS instance in Parkmode for USB")
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm845: switch USB+DP QMP PHY to new style of bindings [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Jul 11 15:09:14 2023 +0300

    arm64: dts: qcom: sdm845: switch USB+DP QMP PHY to new style of bindings
    
    [ Upstream commit a9ecdec45a3a59057a68cf61ba4569d34caea5fc ]
    
    Change the USB QMP PHY to use newer style of QMP PHY bindings (single
    resource region, no per-PHY subnodes).
    
    Reviewed-by: Neil Armstrong <[email protected]>
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Stable-dep-of: cf4d6d54eadb ("arm64: dts: qcom: sdm845: Disable SS instance in Parkmode for USB")
    Signed-off-by: Sasha Levin <[email protected]>

arm64: jump_label: Ensure patched jump_labels are visible to all CPUs [+ + +]
Author: Will Deacon <[email protected]>
Date:   Wed Jul 31 14:36:01 2024 +0100

    arm64: jump_label: Ensure patched jump_labels are visible to all CPUs
    
    [ Upstream commit cfb00a35786414e7c0e6226b277d9f09657eae74 ]
    
    Although the Arm architecture permits concurrent modification and
    execution of NOP and branch instructions, it still requires some
    synchronisation to ensure that other CPUs consistently execute the newly
    written instruction:
    
     >  When the modified instructions are observable, each PE that is
     >  executing the modified instructions must execute an ISB or perform a
     >  context synchronizing event to ensure execution of the modified
     >  instructions
    
    Prior to commit f6cc0c501649 ("arm64: Avoid calling stop_machine() when
    patching jump labels"), the arm64 jump_label patching machinery
    performed synchronisation using stop_machine() after each modification,
    however this was problematic when flipping static keys from atomic
    contexts (namely, the arm_arch_timer CPU hotplug startup notifier) and
    so we switched to the _nosync() patching routines to avoid "scheduling
    while atomic" BUG()s during boot.
    
    In hindsight, the analysis of the issue in f6cc0c501649 isn't quite
    right: it cites the use of IPIs in the default patching routines as the
    cause of the lockup, whereas stop_machine() does not rely on IPIs and
    the I-cache invalidation is performed using __flush_icache_range(),
    which elides the call to kick_all_cpus_sync(). In fact, the blocking
    wait for other CPUs is what triggers the BUG() and the problem remains
    even after f6cc0c501649, for example because we could block on the
    jump_label_mutex. Eventually, the arm_arch_timer driver was fixed to
    avoid the static key entirely in commit a862fc2254bd
    ("clocksource/arm_arch_timer: Remove use of workaround static key").
    
    This all leaves the jump_label patching code in a funny situation on
    arm64 as we do not synchronise with other CPUs to reduce the likelihood
    of a bug which no longer exists. Consequently, toggling a static key on
    one CPU cannot be assumed to take effect on other CPUs, leading to
    potential issues, for example with missing preempt notifiers.
    
    Rather than revert f6cc0c501649 and go back to stop_machine() for each
    patch site, implement arch_jump_label_transform_apply() and kick all
    the other CPUs with an IPI at the end of patching.
    
    Cc: Alexander Potapenko <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Marc Zyngier <[email protected]>
    Fixes: f6cc0c501649 ("arm64: Avoid calling stop_machine() when patching jump labels")
    Signed-off-by: Will Deacon <[email protected]>
    Reviewed-by: Catalin Marinas <[email protected]>
    Reviewed-by: Marc Zyngier <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ARM: 9406/1: Fix callchain_trace() return value [+ + +]
Author: Jinjie Ruan <[email protected]>
Date:   Thu Jun 27 08:29:59 2024 +0100

    ARM: 9406/1: Fix callchain_trace() return value
    
    [ Upstream commit 4e7b4ff2dcaed228cb2fb7bfe720262c98ec1bb9 ]
    
    perf_callchain_store() return 0 on success, -1 otherwise, fix
    callchain_trace() to return correct bool value. So walk_stackframe() can
    have a chance to stop walking the stack ahead.
    
    Fixes: 70ccc7c0667b ("ARM: 9258/1: stacktrace: Make stack walk callback consistent with generic code")
    Signed-off-by: Jinjie Ruan <[email protected]>
    Signed-off-by: Russell King (Oracle) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Bluetooth: btintel: Fail setup on error [+ + +]
Author: Kiran K <[email protected]>
Date:   Wed Jul 3 14:22:42 2024 +0530

    Bluetooth: btintel: Fail setup on error
    
    [ Upstream commit e22a3a9d4134d7e6351a2998771522e74bcc58da ]
    
    Do not attempt to send any hci command to controller if *setup* function
    fails.
    
    Fixes: af395330abed ("Bluetooth: btintel: Add Intel devcoredump support")
    Signed-off-by: Kiran K <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: hci_sync: Fix suspending with wrong filter policy [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Mon Jul 15 10:40:03 2024 -0400

    Bluetooth: hci_sync: Fix suspending with wrong filter policy
    
    [ Upstream commit 96b82af36efaa1787946e021aa3dc5410c05beeb ]
    
    When suspending the scan filter policy cannot be 0x00 (no acceptlist)
    since that means the host has to process every advertisement report
    waking up the system, so this attempts to check if hdev is marked as
    suspended and if the resulting filter policy would be 0x00 (no
    acceptlist) then skip passive scanning if thre no devices in the
    acceptlist otherwise reset the filter policy to 0x01 so the acceptlist
    is used since the devices programmed there can still wakeup be system.
    
    Fixes: 182ee45da083 ("Bluetooth: hci_sync: Rework hci_suspend_notifier")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
btrfs: do not subtract delalloc from avail bytes [+ + +]
Author: Naohiro Aota <[email protected]>
Date:   Thu Jul 11 23:50:58 2024 +0900

    btrfs: do not subtract delalloc from avail bytes
    
    commit d89c285d28491d8f10534c262ac9e6bdcbe1b4d2 upstream.
    
    The block group's avail bytes printed when dumping a space info subtract
    the delalloc_bytes. However, as shown in btrfs_add_reserved_bytes() and
    btrfs_free_reserved_bytes(), it is added or subtracted along with
    "reserved" for the delalloc case, which means the "delalloc_bytes" is a
    part of the "reserved" bytes. So, excluding it to calculate the avail space
    counts delalloc_bytes twice, which can lead to an invalid result.
    
    Fixes: e50b122b832b ("btrfs: print available space for a block group when dumping a space info")
    CC: [email protected] # 6.6+
    Signed-off-by: Naohiro Aota <[email protected]>
    Reviewed-by: Boris Burkov <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

btrfs: zoned: fix zone_unusable accounting on making block group read-write again [+ + +]
Author: Naohiro Aota <[email protected]>
Date:   Wed Feb 15 09:18:02 2023 +0900

    btrfs: zoned: fix zone_unusable accounting on making block group read-write again
    
    commit 8cd44dd1d17a23d5cc8c443c659ca57aa76e2fa5 upstream.
    
    When btrfs makes a block group read-only, it adds all free regions in the
    block group to space_info->bytes_readonly. That free space excludes
    reserved and pinned regions. OTOH, when btrfs makes the block group
    read-write again, it moves all the unused regions into the block group's
    zone_unusable. That unused region includes reserved and pinned regions.
    As a result, it counts too much zone_unusable bytes.
    
    Fortunately (or unfortunately), having erroneous zone_unusable does not
    affect the calculation of space_info->bytes_readonly, because free
    space (num_bytes in btrfs_dec_block_group_ro) calculation is done based on
    the erroneous zone_unusable and it reduces the num_bytes just to cancel the
    error.
    
    This behavior can be easily discovered by adding a WARN_ON to check e.g,
    "bg->pinned > 0" in btrfs_dec_block_group_ro(), and running fstests test
    case like btrfs/282.
    
    Fix it by properly considering pinned and reserved in
    btrfs_dec_block_group_ro(). Also, add a WARN_ON and introduce
    btrfs_space_info_update_bytes_zone_unusable() to catch a similar mistake.
    
    Fixes: 169e0da91a21 ("btrfs: zoned: track unusable bytes for zones")
    CC: [email protected] # 5.15+
    Signed-off-by: Naohiro Aota <[email protected]>
    Reviewed-by: Josef Bacik <[email protected]>
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
cpufreq: qcom-nvmem: fix memory leaks in probe error paths [+ + +]
Author: Javier Carrasco <[email protected]>
Date:   Thu May 23 23:24:59 2024 +0200

    cpufreq: qcom-nvmem: fix memory leaks in probe error paths
    
    [ Upstream commit d01c84b97f19f1137211e90b0a910289a560019e ]
    
    The code refactoring added new error paths between the np device node
    allocation and the call to of_node_put(), which leads to memory leaks if
    any of those errors occur.
    
    Add the missing of_node_put() in the error paths that require it.
    
    Cc: [email protected]
    Fixes: 57f2f8b4aa0c ("cpufreq: qcom: Refactor the driver to make it easier to extend")
    Signed-off-by: Javier Carrasco <[email protected]>
    Signed-off-by: Viresh Kumar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cpufreq: qcom-nvmem: Simplify driver data allocation [+ + +]
Author: Stephan Gerhold <[email protected]>
Date:   Wed Oct 18 10:06:02 2023 +0200

    cpufreq: qcom-nvmem: Simplify driver data allocation
    
    [ Upstream commit 2a5d46c3ad6b0e62d2b04356ad999d504fb564e0 ]
    
    Simplify the allocation and cleanup of driver data by using devm
    together with a flexible array. Prepare for adding additional per-CPU
    data by defining a struct qcom_cpufreq_drv_cpu instead of storing the
    opp_tokens directly.
    
    Signed-off-by: Stephan Gerhold <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Signed-off-by: Viresh Kumar <[email protected]>
    Stable-dep-of: d01c84b97f19 ("cpufreq: qcom-nvmem: fix memory leaks in probe error paths")
    Signed-off-by: Sasha Levin <[email protected]>

 
dmaengine: fsl-edma: add address for channel mux register in fsl_edma_chan [+ + +]
Author: Frank Li <[email protected]>
Date:   Thu Dec 21 10:35:25 2023 -0500

    dmaengine: fsl-edma: add address for channel mux register in fsl_edma_chan
    
    [ Upstream commit e0a08ed25492b6437e366b347113db484037b9b9 ]
    
    iMX95 move channel mux register to management page address space. This
    prepare to support iMX95.
    
    Add mux_addr in struct fsl_edma_chan. No function change.
    
    Signed-off-by: Frank Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Stable-dep-of: 8ddad5589970 ("dmaengine: fsl-edma: change the memory access from local into remote mode in i.MX 8QM")
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: fsl-edma: add i.MX8ULP edma support [+ + +]
Author: Joy Zou <[email protected]>
Date:   Sat Mar 23 11:34:54 2024 -0400

    dmaengine: fsl-edma: add i.MX8ULP edma support
    
    [ Upstream commit d8d4355861d874cbd1395ec0edcbe4e0f6940738 ]
    
    Add support for the i.MX8ULP platform to the eDMA driver. Introduce the use
    of the correct FSL_EDMA_DRV_HAS_CHCLK flag to handle per-channel clock
    configurations.
    
    Signed-off-by: Joy Zou <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Stable-dep-of: 8ddad5589970 ("dmaengine: fsl-edma: change the memory access from local into remote mode in i.MX 8QM")
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: fsl-edma: change the memory access from local into remote mode in i.MX 8QM [+ + +]
Author: Joy Zou <[email protected]>
Date:   Fri May 10 11:09:34 2024 +0800

    dmaengine: fsl-edma: change the memory access from local into remote mode in i.MX 8QM
    
    [ Upstream commit 8ddad558997002ce67980e30c9e8dfaa696e163b ]
    
    Fix the issue where MEM_TO_MEM fail on i.MX8QM due to the requirement
    that both source and destination addresses need pass through the IOMMU.
    Typically, peripheral FIFO addresses bypass the IOMMU, necessitating
    only one of the source or destination to go through it.
    
    Set "is_remote" to true to ensure both source and destination
    addresses pass through the IOMMU.
    
    iMX8 Spec define "Local" and "Remote" bus as below.
    Local bus: bypass IOMMU to directly access other peripheral register,
    such as FIFO.
    Remote bus: go through IOMMU to access system memory.
    
    The test fail log as follow:
    [ 66.268506] dmatest: dma0chan0-copy0: result #1: 'test timed out' with src_off=0x100 dst_off=0x80 len=0x3ec0 (0)
    [ 66.278785] dmatest: dma0chan0-copy0: summary 1 tests, 1 failures 0.32 iops 4 KB/s (0)
    
    Fixes: 72f5801a4e2b ("dmaengine: fsl-edma: integrate v3 support")
    Signed-off-by: Joy Zou <[email protected]>
    Cc: [email protected]
    Reviewed-by: Frank Li <[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: fsl-edma: clean up unused "fsl,imx8qm-adma" compatible string [+ + +]
Author: Joy Zou <[email protected]>
Date:   Wed Apr 24 14:45:07 2024 +0800

    dmaengine: fsl-edma: clean up unused "fsl,imx8qm-adma" compatible string
    
    [ Upstream commit 77584368a0f3d9eba112c3df69f1df7f282dbfe9 ]
    
    The eDMA hardware issue only exist imx8QM A0. A0 never mass production.
    So remove the workaround safely.
    
    Signed-off-by: Joy Zou <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Stable-dep-of: 8ddad5589970 ("dmaengine: fsl-edma: change the memory access from local into remote mode in i.MX 8QM")
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/i915/hdcp: Fix HDCP2_STREAM_STATUS macro [+ + +]
Author: Suraj Kandpal <[email protected]>
Date:   Tue Jul 30 09:25:05 2024 +0530

    drm/i915/hdcp: Fix HDCP2_STREAM_STATUS macro
    
    [ Upstream commit 555069117390a5d581863bc797fb546bb4417c31 ]
    
    Fix HDCP2_STREAM_STATUS macro, it called pipe instead of port never
    threw a compile error as no one used it.
    
    --v2
    -Add Fixes [Jani]
    
    Fixes: d631b984cc90 ("drm/i915/hdcp: Add HDCP 2.2 stream register")
    Signed-off-by: Suraj Kandpal <[email protected]>
    Reviewed-by: Jani Nikula <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    (cherry picked from commit 73d7cd542bbd0a7c6881ea0df5255f190a1e7236)
    Signed-off-by: Joonas Lahtinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/i915: Fix possible int overflow in skl_ddi_calculate_wrpll() [+ + +]
Author: Nikita Zhandarovich <[email protected]>
Date:   Mon Jul 29 10:40:35 2024 -0700

    drm/i915: Fix possible int overflow in skl_ddi_calculate_wrpll()
    
    commit 5b511572660190db1dc8ba412efd0be0d3781ab6 upstream.
    
    On the off chance that clock value ends up being too high (by means
    of skl_ddi_calculate_wrpll() having been called with big enough
    value of crtc_state->port_clock * 1000), one possible consequence
    may be that the result will not be able to fit into signed int.
    
    Fix this issue by moving conversion of clock parameter from kHz to Hz
    into the body of skl_ddi_calculate_wrpll(), as well as casting the
    same parameter to u64 type while calculating the value for AFE clock.
    This both mitigates the overflow problem and avoids possible erroneous
    integer promotion mishaps.
    
    Found by Linux Verification Center (linuxtesting.org) with static
    analysis tool SVACE.
    
    Fixes: 82d354370189 ("drm/i915/skl: Implementation of SKL DPLL programming")
    Cc: [email protected]
    Signed-off-by: Nikita Zhandarovich <[email protected]>
    Reviewed-by: Jani Nikula <[email protected]>
    Signed-off-by: Jani Nikula <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    (cherry picked from commit 833cf12846aa19adf9b76bc79c40747726f3c0c1)
    Signed-off-by: Joonas Lahtinen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/nouveau: prime: fix refcount underflow [+ + +]
Author: Danilo Krummrich <[email protected]>
Date:   Thu Jul 18 18:58:46 2024 +0200

    drm/nouveau: prime: fix refcount underflow
    
    [ Upstream commit a9bf3efc33f1fbf88787a277f7349459283c9b95 ]
    
    Calling nouveau_bo_ref() on a nouveau_bo without initializing it (and
    hence the backing ttm_bo) leads to a refcount underflow.
    
    Instead of calling nouveau_bo_ref() in the unwind path of
    drm_gem_object_init(), clean things up manually.
    
    Fixes: ab9ccb96a6e6 ("drm/nouveau: use prime helpers")
    Reviewed-by: Ben Skeggs <[email protected]>
    Reviewed-by: Christian König <[email protected]>
    Signed-off-by: Danilo Krummrich <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    (cherry picked from commit 1b93f3e89d03cfc576636e195466a0d728ad8de5)
    Signed-off-by: Danilo Krummrich <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/virtio: Fix type of dma-fence context variable [+ + +]
Author: Dmitry Osipenko <[email protected]>
Date:   Sun Jul 14 23:50:09 2024 +0300

    drm/virtio: Fix type of dma-fence context variable
    
    commit 445d336cd15860f1efb441e6d694f829fbf679eb upstream.
    
    Type of DMA fence context is u64. Fence-waiting code uses u32 for the
    context variable, fix it.
    
    Fixes: e4812ab8e6b1 ("drm/virtio: Refactor and optimize job submission code path")
    Cc: <[email protected]> # v6.4+
    Signed-off-by: Dmitry Osipenko <[email protected]>
    Reviewed-by: Rob Clark <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/vmwgfx: Fix a deadlock in dma buf fence polling [+ + +]
Author: Zack Rusin <[email protected]>
Date:   Mon Jul 22 14:41:13 2024 -0400

    drm/vmwgfx: Fix a deadlock in dma buf fence polling
    
    commit e58337100721f3cc0c7424a18730e4f39844934f upstream.
    
    Introduce a version of the fence ops that on release doesn't remove
    the fence from the pending list, and thus doesn't require a lock to
    fix poll->fence wait->fence unref deadlocks.
    
    vmwgfx overwrites the wait callback to iterate over the list of all
    fences and update their status, to do that it holds a lock to prevent
    the list modifcations from other threads. The fence destroy callback
    both deletes the fence and removes it from the list of pending
    fences, for which it holds a lock.
    
    dma buf polling cb unrefs a fence after it's been signaled: so the poll
    calls the wait, which signals the fences, which are being destroyed.
    The destruction tries to acquire the lock on the pending fences list
    which it can never get because it's held by the wait from which it
    was called.
    
    Old bug, but not a lot of userspace apps were using dma-buf polling
    interfaces. Fix those, in particular this fixes KDE stalls/deadlock.
    
    Signed-off-by: Zack Rusin <[email protected]>
    Fixes: 2298e804e96e ("drm/vmwgfx: rework to new fence interface, v2")
    Cc: Broadcom internal kernel review list <[email protected]>
    Cc: [email protected]
    Cc: <[email protected]> # v6.2+
    Reviewed-by: Maaz Mombasawala <[email protected]>
    Reviewed-by: Martin Krastev <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/vmwgfx: Fix overlay when using Screen Targets [+ + +]
Author: Ian Forbes <[email protected]>
Date:   Fri Jul 19 11:36:27 2024 -0500

    drm/vmwgfx: Fix overlay when using Screen Targets
    
    [ Upstream commit cb372a505a994cb39aa75acfb8b3bcf94787cf94 ]
    
    This code was never updated to support Screen Targets.
    Fixes a bug where Xv playback displays a green screen instead of actual
    video contents when 3D acceleration is disabled in the guest.
    
    Fixes: c8261a961ece ("vmwgfx: Major KMS refactoring / cleanup in preparation of screen targets")
    Reported-by: Doug Brown <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Ian Forbes <[email protected]>
    Tested-by: Doug Brown <[email protected]>
    Signed-off-by: Zack Rusin <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/vmwgfx: Trigger a modeset when the screen moves [+ + +]
Author: Ian Forbes <[email protected]>
Date:   Mon Jun 24 15:59:51 2024 -0500

    drm/vmwgfx: Trigger a modeset when the screen moves
    
    [ Upstream commit 75c3e8a26a35d4f3eee299b3cc7e465f166f4e2d ]
    
    When multi-monitor is cycled the X,Y position of the Screen Target will
    likely change but the resolution will not. We need to trigger a modeset
    when this occurs in order to recreate the Screen Target with the correct
    X,Y position.
    
    Fixes a bug where multiple displays are shown in a single scrollable
    host window rather than in 2+ windows on separate host displays.
    
    Fixes: 426826933109 ("drm/vmwgfx: Filter modes which exceed graphics memory")
    Signed-off-by: Ian Forbes <[email protected]>
    Signed-off-by: Zack Rusin <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
ext4: check the extent status again before inserting delalloc block [+ + +]
Author: Zhang Yi <[email protected]>
Date:   Fri May 17 20:39:57 2024 +0800

    ext4: check the extent status again before inserting delalloc block
    
    [ Upstream commit 0ea6560abb3bac1ffcfa4bf6b2c4d344fdc27b3c ]
    
    ext4_da_map_blocks looks up for any extent entry in the extent status
    tree (w/o i_data_sem) and then the looks up for any ondisk extent
    mapping (with i_data_sem in read mode).
    
    If it finds a hole in the extent status tree or if it couldn't find any
    entry at all, it then takes the i_data_sem in write mode to add a da
    entry into the extent status tree. This can actually race with page
    mkwrite & fallocate path.
    
    Note that this is ok between
    1. ext4 buffered-write path v/s ext4_page_mkwrite(), because of the
       folio lock
    2. ext4 buffered write path v/s ext4 fallocate because of the inode
       lock.
    
    But this can race between ext4_page_mkwrite() & ext4 fallocate path
    
    ext4_page_mkwrite()             ext4_fallocate()
     block_page_mkwrite()
      ext4_da_map_blocks()
       //find hole in extent status tree
                                     ext4_alloc_file_blocks()
                                      ext4_map_blocks()
                                       //allocate block and unwritten extent
       ext4_insert_delayed_block()
        ext4_da_reserve_space()
         //reserve one more block
        ext4_es_insert_delayed_block()
         //drop unwritten extent and add delayed extent by mistake
    
    Then, the delalloc extent is wrong until writeback and the extra
    reserved block can't be released any more and it triggers below warning:
    
     EXT4-fs (pmem2): Inode 13 (00000000bbbd4d23): i_reserved_data_blocks(1) not cleared!
    
    Fix the problem by looking up extent status tree again while the
    i_data_sem is held in write mode. If it still can't find any entry, then
    we insert a new da entry into the extent status tree.
    
    Cc: [email protected]
    Signed-off-by: Zhang Yi <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ext4: convert to exclusive lock while inserting delalloc extents [+ + +]
Author: Zhang Yi <[email protected]>
Date:   Sat Jan 27 09:58:01 2024 +0800

    ext4: convert to exclusive lock while inserting delalloc extents
    
    [ Upstream commit acf795dc161f3cf481db20f05db4250714e375e5 ]
    
    ext4_da_map_blocks() only hold i_data_sem in shared mode and i_rwsem
    when inserting delalloc extents, it could be raced by another querying
    path of ext4_map_blocks() without i_rwsem, .e.g buffered read path.
    Suppose we buffered read a file containing just a hole, and without any
    cached extents tree, then it is raced by another delayed buffered write
    to the same area or the near area belongs to the same hole, and the new
    delalloc extent could be overwritten to a hole extent.
    
     pread()                           pwrite()
      filemap_read_folio()
       ext4_mpage_readpages()
        ext4_map_blocks()
         down_read(i_data_sem)
         ext4_ext_determine_hole()
         //find hole
         ext4_ext_put_gap_in_cache()
          ext4_es_find_extent_range()
          //no delalloc extent
                                        ext4_da_map_blocks()
                                         down_read(i_data_sem)
                                         ext4_insert_delayed_block()
                                         //insert delalloc extent
          ext4_es_insert_extent()
          //overwrite delalloc extent to hole
    
    This race could lead to inconsistent delalloc extents tree and
    incorrect reserved space counter. Fix this by converting to hold
    i_data_sem in exclusive mode when adding a new delalloc extent in
    ext4_da_map_blocks().
    
    Cc: [email protected]
    Signed-off-by: Zhang Yi <[email protected]>
    Suggested-by: Jan Kara <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Stable-dep-of: 0ea6560abb3b ("ext4: check the extent status again before inserting delalloc block")
    Signed-off-by: Sasha Levin <[email protected]>

ext4: factor out a common helper to query extent map [+ + +]
Author: Zhang Yi <[email protected]>
Date:   Fri May 17 20:39:56 2024 +0800

    ext4: factor out a common helper to query extent map
    
    [ Upstream commit 8e4e5cdf2fdeb99445a468b6b6436ad79b9ecb30 ]
    
    Factor out a new common helper ext4_map_query_blocks() from the
    ext4_da_map_blocks(), it query and return the extent map status on the
    inode's extent path, no logic changes.
    
    Signed-off-by: Zhang Yi <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Reviewed-by: Ritesh Harjani (IBM) <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Stable-dep-of: 0ea6560abb3b ("ext4: check the extent status again before inserting delalloc block")
    Signed-off-by: Sasha Levin <[email protected]>

ext4: refactor ext4_da_map_blocks() [+ + +]
Author: Zhang Yi <[email protected]>
Date:   Sat Jan 27 09:58:00 2024 +0800

    ext4: refactor ext4_da_map_blocks()
    
    [ Upstream commit 3fcc2b887a1ba4c1f45319cd8c54daa263ecbc36 ]
    
    Refactor and cleanup ext4_da_map_blocks(), reduce some unnecessary
    parameters and branches, no logic changes.
    
    Signed-off-by: Zhang Yi <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Stable-dep-of: 0ea6560abb3b ("ext4: check the extent status again before inserting delalloc block")
    Signed-off-by: Sasha Levin <[email protected]>

 
f2fs: assign CURSEG_ALL_DATA_ATGC if blkaddr is valid [+ + +]
Author: Jaegeuk Kim <[email protected]>
Date:   Tue Jun 18 02:15:38 2024 +0000

    f2fs: assign CURSEG_ALL_DATA_ATGC if blkaddr is valid
    
    [ Upstream commit 8cb1f4080dd91c6e6b01dbea013a3f42341cb6a1 ]
    
    mkdir /mnt/test/comp
    f2fs_io setflags compression /mnt/test/comp
    dd if=/dev/zero of=/mnt/test/comp/testfile bs=16k count=1
    truncate --size 13 /mnt/test/comp/testfile
    
    In the above scenario, we can get a BUG_ON.
     kernel BUG at fs/f2fs/segment.c:3589!
     Call Trace:
      do_write_page+0x78/0x390 [f2fs]
      f2fs_outplace_write_data+0x62/0xb0 [f2fs]
      f2fs_do_write_data_page+0x275/0x740 [f2fs]
      f2fs_write_single_data_page+0x1dc/0x8f0 [f2fs]
      f2fs_write_multi_pages+0x1e5/0xae0 [f2fs]
      f2fs_write_cache_pages+0xab1/0xc60 [f2fs]
      f2fs_write_data_pages+0x2d8/0x330 [f2fs]
      do_writepages+0xcf/0x270
      __writeback_single_inode+0x44/0x350
      writeback_sb_inodes+0x242/0x530
      __writeback_inodes_wb+0x54/0xf0
      wb_writeback+0x192/0x310
      wb_workfn+0x30d/0x400
    
    The reason is we gave CURSEG_ALL_DATA_ATGC to COMPR_ADDR where the
    page was set the gcing flag by set_cluster_dirty().
    
    Cc: [email protected]
    Fixes: 4961acdd65c9 ("f2fs: fix to tag gcing flag on page during block migration")
    Reviewed-by: Chao Yu <[email protected]>
    Tested-by: Will McVicker <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

f2fs: fix to avoid use SSR allocate when do defragment [+ + +]
Author: Zhiguo Niu <[email protected]>
Date:   Wed May 29 17:47:00 2024 +0800

    f2fs: fix to avoid use SSR allocate when do defragment
    
    [ Upstream commit 21327a042dd94bc73181d7300e688699cb1f467e ]
    
    SSR allocate mode will be used when doing file defragment
    if ATGC is working at the same time, that is because
    set_page_private_gcing may make CURSEG_ALL_DATA_ATGC segment
    type got in f2fs_allocate_data_block when defragment page
    is writeback, which may cause file fragmentation is worse.
    
    A file with 2 fragmentations is changed as following after defragment:
    
    ----------------file info-------------------
    sensorsdata :
    --------------------------------------------
    dev       [254:48]
    ino       [0x    3029 : 12329]
    mode      [0x    81b0 : 33200]
    nlink     [0x       1 : 1]
    uid       [0x    27e6 : 10214]
    gid       [0x    27e6 : 10214]
    size      [0x  242000 : 2367488]
    blksize   [0x    1000 : 4096]
    blocks    [0x    1210 : 4624]
    --------------------------------------------
    
    file_pos   start_blk     end_blk        blks
           0    11361121    11361207          87
      356352    11361215    11361216           2
      364544    11361218    11361218           1
      368640    11361220    11361221           2
      376832    11361224    11361225           2
      385024    11361227    11361238          12
      434176    11361240    11361252          13
      487424    11361254    11361254           1
      491520    11361271    11361279           9
      528384     3681794     3681795           2
      536576     3681797     3681797           1
      540672     3681799     3681799           1
      544768     3681803     3681803           1
      548864     3681805     3681805           1
      552960     3681807     3681807           1
      557056     3681809     3681809           1
    
    Signed-off-by: Zhiguo Niu <[email protected]>
    Reviewed-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Stable-dep-of: 8cb1f4080dd9 ("f2fs: assign CURSEG_ALL_DATA_ATGC if blkaddr is valid")
    Signed-off-by: Sasha Levin <[email protected]>

 
fbdev/vesafb: Replace references to global screen_info by local pointer [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Wed Dec 6 14:50:28 2023 +0100

    fbdev/vesafb: Replace references to global screen_info by local pointer
    
    [ Upstream commit 3218286bbb78cac3dde713514529e0480d678173 ]
    
    Get the global screen_info's address once and access the data via
    this pointer. Limits the use of global state.
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Reviewed-by: Javier Martinez Canillas <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Stable-dep-of: c2bc958b2b03 ("fbdev: vesafb: Detect VGA compatibility from screen info's VESA attributes")
    Signed-off-by: Sasha Levin <[email protected]>

 
fbdev: vesafb: Detect VGA compatibility from screen info's VESA attributes [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Mon Jun 17 13:06:27 2024 +0200

    fbdev: vesafb: Detect VGA compatibility from screen info's VESA attributes
    
    [ Upstream commit c2bc958b2b03e361f14df99983bc64a39a7323a3 ]
    
    Test the vesa_attributes field in struct screen_info for compatibility
    with VGA hardware. Vesafb currently tests bit 1 in screen_info's
    capabilities field which indicates a 64-bit lfb address and is
    unrelated to VGA compatibility.
    
    Section 4.4 of the Vesa VBE 2.0 specifications defines that bit 5 in
    the mode's attributes field signals VGA compatibility. The mode is
    compatible with VGA hardware if the bit is clear. In that case, the
    driver can access VGA state of the VBE's underlying hardware. The
    vesafb driver uses this feature to program the color LUT in palette
    modes. Without, colors might be incorrect.
    
    The problem got introduced in commit 89ec4c238e7a ("[PATCH] vesafb: Fix
    incorrect logo colors in x86_64"). It incorrectly stores the mode
    attributes in the screen_info's capabilities field and updates vesafb
    accordingly. Later, commit 5e8ddcbe8692 ("Video mode probing support for
    the new x86 setup code") fixed the screen_info, but did not update vesafb.
    Color output still tends to work, because bit 1 in capabilities is
    usually 0.
    
    Besides fixing the bug in vesafb, this commit introduces a helper that
    reads the correct bit from screen_info.
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Fixes: 5e8ddcbe8692 ("Video mode probing support for the new x86 setup code")
    Reviewed-by: Javier Martinez Canillas <[email protected]>
    Cc: <[email protected]> # v2.6.23+
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
firmware/sysfb: Update screen_info for relocated EFI framebuffers [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Mon Feb 12 10:06:15 2024 +0100

    firmware/sysfb: Update screen_info for relocated EFI framebuffers
    
    [ Upstream commit 78aa89d1dfba1e3cf4a2e053afa3b4c4ec622371 ]
    
    On ARM PCI systems, the PCI hierarchy might be reconfigured during
    boot and the firmware framebuffer might move as a result of that.
    The values in screen_info will then be invalid.
    
    Work around this problem by tracking the framebuffer's initial
    location before it get relocated; then fix the screen_info state
    between reloaction and creating the firmware framebuffer's device.
    
    This functionality has been lifted from efifb. See the commit message
    of commit 55d728a40d36 ("efi/fb: Avoid reconfiguration of BAR that
    covers the framebuffer") for more information.
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Reviewed-by: Javier Martinez Canillas <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Stable-dep-of: c2bc958b2b03 ("fbdev: vesafb: Detect VGA compatibility from screen info's VESA attributes")
    Signed-off-by: Sasha Levin <[email protected]>

 
HID: amd_sfh: Move sensor discovery before HID device initialization [+ + +]
Author: Basavaraj Natikar <[email protected]>
Date:   Thu Jul 18 16:46:16 2024 +0530

    HID: amd_sfh: Move sensor discovery before HID device initialization
    
    [ Upstream commit 8031b001da700474c11d28629581480b12a0d8d4 ]
    
    Sensors discovery is independent of HID device initialization. If sensor
    discovery fails after HID initialization, then the HID device needs to be
    deinitialized. Therefore, sensors discovery should be moved before HID
    device initialization.
    
    Fixes: 7bcfdab3f0c6 ("HID: amd_sfh: if no sensors are enabled, clean up")
    Tested-by: Aurinko <[email protected]>
    Signed-off-by: Basavaraj Natikar <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Benjamin Tissoires <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: wacom: Modify pen IDs [+ + +]
Author: Tatsunosuke Tobita <[email protected]>
Date:   Tue Jul 9 14:57:28 2024 +0900

    HID: wacom: Modify pen IDs
    
    commit f0d17d696dfce77c9abc830e4ac2d677890a2dad upstream.
    
    The pen ID, 0x80842, was not the correct ID for wacom driver to
    treat. The ID was corrected to 0x8842.
    Also, 0x4200 was not the expected ID used on any Wacom device.
    Therefore, 0x4200 was removed.
    
    Signed-off-by: Tatsunosuke Tobita <[email protected]>
    Signed-off-by: Tatsunosuke Tobita <[email protected]>
    Fixes: bfdc750c4cb2 ("HID: wacom: add three styli to wacom_intuos_get_tool_type")
    Cc: [email protected] #6.2
    Reviewed-by: Ping Cheng <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Benjamin Tissoires <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
i915/perf: Remove code to update PWR_CLK_STATE for gen12 [+ + +]
Author: Umesh Nerlige Ramappa <[email protected]>
Date:   Fri Jun 28 17:56:43 2024 -0700

    i915/perf: Remove code to update PWR_CLK_STATE for gen12
    
    [ Upstream commit 4bc14b9cfaa2149d41baef2f2620e9f82d9847d7 ]
    
    PWR_CLK_STATE only needs to be modified up until gen11. For gen12 this
    code is not applicable. Remove code to update context image with
    PWR_CLK_STATE for gen12.
    
    Fixes: 00a7f0d7155c ("drm/i915/tgl: Add perf support on TGL")
    Signed-off-by: Umesh Nerlige Ramappa <[email protected]>
    Reviewed-by: Ashutosh Dixit <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    (cherry picked from commit 7b5bdae7740eb6a3d09f9cd4e4b07362a15b86b3)
    Signed-off-by: Joonas Lahtinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ice: add missing WRITE_ONCE when clearing ice_rx_ring::xdp_prog [+ + +]
Author: Maciej Fijalkowski <[email protected]>
Date:   Fri Jul 26 20:17:15 2024 +0200

    ice: add missing WRITE_ONCE when clearing ice_rx_ring::xdp_prog
    
    [ Upstream commit 6044ca26210ba72b3dcc649fae1cbedd9e6ab018 ]
    
    It is read by data path and modified from process context on remote cpu
    so it is needed to use WRITE_ONCE to clear the pointer.
    
    Fixes: efc2214b6047 ("ice: Add support for XDP")
    Reviewed-by: Shannon Nelson <[email protected]>
    Tested-by: Chandan Kumar Rout <[email protected]> (A Contingent Worker at Intel)
    Signed-off-by: Maciej Fijalkowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ice: don't busy wait for Rx queue disable in ice_qp_dis() [+ + +]
Author: Maciej Fijalkowski <[email protected]>
Date:   Fri Jul 26 20:17:10 2024 +0200

    ice: don't busy wait for Rx queue disable in ice_qp_dis()
    
    [ Upstream commit 1ff72a2f67791cd4ddad19ed830445f57b30e992 ]
    
    When ice driver is spammed with multiple xdpsock instances and flow
    control is enabled, there are cases when Rx queue gets stuck and unable
    to reflect the disable state in QRX_CTRL register. Similar issue has
    previously been addressed in commit 13a6233b033f ("ice: Add support to
    enable/disable all Rx queues before waiting").
    
    To workaround this, let us simply not wait for a disabled state as later
    patch will make sure that regardless of the encountered error in the
    process of disabling a queue pair, the Rx queue will be enabled.
    
    Fixes: 2d4238f55697 ("ice: Add support for AF_XDP")
    Reviewed-by: Shannon Nelson <[email protected]>
    Tested-by: Chandan Kumar Rout <[email protected]> (A Contingent Worker at Intel)
    Signed-off-by: Maciej Fijalkowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ice: replace synchronize_rcu with synchronize_net [+ + +]
Author: Maciej Fijalkowski <[email protected]>
Date:   Fri Jul 26 20:17:11 2024 +0200

    ice: replace synchronize_rcu with synchronize_net
    
    [ Upstream commit 405d9999aa0b4ae467ef391d1d9c7e0d30ad0841 ]
    
    Given that ice_qp_dis() is called under rtnl_lock, synchronize_net() can
    be called instead of synchronize_rcu() so that XDP rings can finish its
    job in a faster way. Also let us do this as earlier in XSK queue disable
    flow.
    
    Additionally, turn off regular Tx queue before disabling irqs and NAPI.
    
    Fixes: 2d4238f55697 ("ice: Add support for AF_XDP")
    Reviewed-by: Shannon Nelson <[email protected]>
    Tested-by: Chandan Kumar Rout <[email protected]> (A Contingent Worker at Intel)
    Signed-off-by: Maciej Fijalkowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ice: respect netif readiness in AF_XDP ZC related ndo's [+ + +]
Author: Michal Kubiak <[email protected]>
Date:   Fri Jul 26 20:17:09 2024 +0200

    ice: respect netif readiness in AF_XDP ZC related ndo's
    
    [ Upstream commit ec145a18687fec8dd97eeb4f30057fa4debef577 ]
    
    Address a scenario in which XSK ZC Tx produces descriptors to XDP Tx
    ring when link is either not yet fully initialized or process of
    stopping the netdev has already started. To avoid this, add checks
    against carrier readiness in ice_xsk_wakeup() and in ice_xmit_zc().
    One could argue that bailing out early in ice_xsk_wakeup() would be
    sufficient but given the fact that we produce Tx descriptors on behalf
    of NAPI that is triggered for Rx traffic, the latter is also needed.
    
    Bringing link up is an asynchronous event executed within
    ice_service_task so even though interface has been brought up there is
    still a time frame where link is not yet ok.
    
    Without this patch, when AF_XDP ZC Tx is used simultaneously with stack
    Tx, Tx timeouts occur after going through link flap (admin brings
    interface down then up again). HW seem to be unable to transmit
    descriptor to the wire after HW tail register bump which in turn causes
    bit __QUEUE_STATE_STACK_XOFF to be set forever as
    netdev_tx_completed_queue() sees no cleaned bytes on the input.
    
    Fixes: 126cdfe1007a ("ice: xsk: Improve AF_XDP ZC Tx and use batching API")
    Fixes: 2d4238f55697 ("ice: Add support for AF_XDP")
    Reviewed-by: Shannon Nelson <[email protected]>
    Tested-by: Chandan Kumar Rout <[email protected]> (A Contingent Worker at Intel)
    Signed-off-by: Michal Kubiak <[email protected]>
    Signed-off-by: Maciej Fijalkowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
igc: Fix double reset adapter triggered from a single taprio cmd [+ + +]
Author: Faizal Rahim <[email protected]>
Date:   Tue Jul 30 10:33:02 2024 -0700

    igc: Fix double reset adapter triggered from a single taprio cmd
    
    [ Upstream commit b9e7fc0aeda79031a101610b2fcb12bf031056e9 ]
    
    Following the implementation of "igc: Add TransmissionOverrun counter"
    patch, when a taprio command is triggered by user, igc processes two
    commands: TAPRIO_CMD_REPLACE followed by TAPRIO_CMD_STATS. However, both
    commands unconditionally pass through igc_tsn_offload_apply() which
    evaluates and triggers reset adapter. The double reset causes issues in
    the calculation of adapter->qbv_count in igc.
    
    TAPRIO_CMD_REPLACE command is expected to reset the adapter since it
    activates qbv. It's unexpected for TAPRIO_CMD_STATS to do the same
    because it doesn't configure any driver-specific TSN settings. So, the
    evaluation in igc_tsn_offload_apply() isn't needed for TAPRIO_CMD_STATS.
    
    To address this, commands parsing are relocated to
    igc_tsn_enable_qbv_scheduling(). Commands that don't require an adapter
    reset will exit after processing, thus avoiding igc_tsn_offload_apply().
    
    Fixes: d3750076d464 ("igc: Add TransmissionOverrun counter")
    Signed-off-by: Faizal Rahim <[email protected]>
    Acked-by: Vinicius Costa Gomes <[email protected]>
    Reviewed-by: Vladimir Oltean <[email protected]>
    Tested-by: Mor Bar-Gabay <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ipv6: fix ndisc_is_useropt() handling for PIO [+ + +]
Author: Maciej Żenczykowski <[email protected]>
Date:   Mon Jul 29 17:17:48 2024 -0700

    ipv6: fix ndisc_is_useropt() handling for PIO
    
    [ Upstream commit a46c68debf3be3a477a69ccbf0a1d050df841676 ]
    
    The current logic only works if the PIO is between two
    other ND user options.  This fixes it so that the PIO
    can also be either before or after other ND user options
    (for example the first or last option in the RA).
    
    side note: there's actually Android tests verifying
    a portion of the old broken behaviour, so:
      https://android-review.googlesource.com/c/kernel/tests/+/3196704
    fixes those up.
    
    Cc: Jen Linkova <[email protected]>
    Cc: Lorenzo Colitti <[email protected]>
    Cc: Patrick Rohr <[email protected]>
    Cc: David Ahern <[email protected]>
    Cc: YOSHIFUJI Hideaki / 吉藤英明 <[email protected]>
    Cc: Jakub Kicinski <[email protected]>
    Signed-off-by: Maciej Żenczykowski <[email protected]>
    Fixes: 048c796beb6e ("ipv6: adjust ndisc_is_useropt() to also return true for PIO")
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
KVM: nVMX: Add a helper to get highest pending from Posted Interrupt vector [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Fri Jun 7 10:26:04 2024 -0700

    KVM: nVMX: Add a helper to get highest pending from Posted Interrupt vector
    
    [ Upstream commit d83c36d822be44db4bad0c43bea99c8908f54117 ]
    
    Add a helper to retrieve the highest pending vector given a Posted
    Interrupt descriptor.  While the actual operation is straightforward, it's
    surprisingly easy to mess up, e.g. if one tries to reuse lapic.c's
    find_highest_vector(), which doesn't work with PID.PIR due to the APIC's
    IRR and ISR component registers being physically discontiguous (they're
    4-byte registers aligned at 16-byte intervals).
    
    To make PIR handling more consistent with respect to IRR and ISR handling,
    return -1 to indicate "no interrupt pending".
    
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

KVM: nVMX: Check for pending posted interrupts when looking for nested events [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Fri Jun 7 10:26:07 2024 -0700

    KVM: nVMX: Check for pending posted interrupts when looking for nested events
    
    [ Upstream commit 27c4fa42b11af780d49ce704f7fa67b3c2544df4 ]
    
    Check for pending (and notified!) posted interrupts when checking if L2
    has a pending wake event, as fully posted/notified virtual interrupt is a
    valid wake event for HLT.
    
    Note that KVM must check vmx->nested.pi_pending to avoid prematurely
    waking L2, e.g. even if KVM sees a non-zero PID.PIR and PID.0N=1, the
    virtual interrupt won't actually be recognized until a notification IRQ is
    received by the vCPU or the vCPU does (nested) VM-Enter.
    
    Fixes: 26844fee6ade ("KVM: x86: never write to memory from kvm_vcpu_check_block()")
    Cc: [email protected]
    Cc: Maxim Levitsky <[email protected]>
    Reported-by: Jim Mattson <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

KVM: VMX: Move posted interrupt descriptor out of VMX code [+ + +]
Author: Jacob Pan <[email protected]>
Date:   Tue Apr 23 10:41:03 2024 -0700

    KVM: VMX: Move posted interrupt descriptor out of VMX code
    
    [ Upstream commit 699f67512f04cbaee965fad872702c06eaf440f6 ]
    
    To prepare native usage of posted interrupts, move the PID declarations out
    of VMX code such that they can be shared.
    
    Signed-off-by: Jacob Pan <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Acked-by: Sean Christopherson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: d83c36d822be ("KVM: nVMX: Add a helper to get highest pending from Posted Interrupt vector")
    Signed-off-by: Sasha Levin <[email protected]>

KVM: VMX: Split off vmx_onhyperv.{ch} from hyperv.{ch} [+ + +]
Author: Vitaly Kuznetsov <[email protected]>
Date:   Tue Dec 5 11:36:17 2023 +0100

    KVM: VMX: Split off vmx_onhyperv.{ch} from hyperv.{ch}
    
    [ Upstream commit 50a82b0eb88c108d1ebc73a97f5b81df0d5918e0 ]
    
    hyperv.{ch} is currently a mix of stuff which is needed by both Hyper-V on
    KVM and KVM on Hyper-V. As a preparation to making Hyper-V emulation
    optional, put KVM-on-Hyper-V specific code into dedicated files.
    
    No functional change intended.
    
    Reviewed-by: Maxim Levitsky <[email protected]>
    Tested-by: Jeremi Piotrowski <[email protected]>
    Signed-off-by: Vitaly Kuznetsov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Stable-dep-of: d83c36d822be ("KVM: nVMX: Add a helper to get highest pending from Posted Interrupt vector")
    Signed-off-by: Sasha Levin <[email protected]>

 
leds: trigger: Call synchronize_rcu() before calling trig->activate() [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Fri May 31 14:01:24 2024 +0200

    leds: trigger: Call synchronize_rcu() before calling trig->activate()
    
    [ Upstream commit b1bbd20f35e19774ea01989320495e09ac44fba3 ]
    
    Some triggers call led_trigger_event() from their activate() callback
    to initialize the brightness of the LED for which the trigger is being
    activated.
    
    In order for the LED's initial state to be set correctly this requires that
    the led_trigger_event() call uses the new version of trigger->led_cdevs,
    which has the new LED.
    
    AFAICT led_trigger_event() will always use the new version when it is
    running on the same CPU as where the list_add_tail_rcu() call was made,
    which is why the missing synchronize_rcu() has not lead to bug reports.
    But if activate() is pre-empted, sleeps or uses a worker then
    the led_trigger_event() call may run on another CPU which may still use
    the old trigger->led_cdevs list.
    
    Add a synchronize_rcu() call to ensure that any led_trigger_event() calls
    done from activate() always use the new list.
    
    Triggers using led_trigger_event() from their activate() callback are:
    net/bluetooth/leds.c, net/rfkill/core.c and drivers/tty/vt/keyboard.c.
    
    Signed-off-by: Hans de Goede <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Stable-dep-of: ab477b766edd ("leds: triggers: Flush pending brightness before activating trigger")
    Signed-off-by: Sasha Levin <[email protected]>

leds: trigger: Remove unused function led_trigger_rename_static() [+ + +]
Author: Heiner Kallweit <[email protected]>
Date:   Fri Dec 8 23:56:41 2023 +0100

    leds: trigger: Remove unused function led_trigger_rename_static()
    
    [ Upstream commit c82a1662d4548c454de5343b88f69b9fc82266b3 ]
    
    This function was added with a8df7b1ab70b ("leds: add led_trigger_rename
    function") 11 yrs ago, but it has no users. So remove it.
    
    Signed-off-by: Heiner Kallweit <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Stable-dep-of: ab477b766edd ("leds: triggers: Flush pending brightness before activating trigger")
    Signed-off-by: Sasha Levin <[email protected]>

leds: trigger: Store brightness set by led_trigger_event() [+ + +]
Author: Heiner Kallweit <[email protected]>
Date:   Mon Mar 4 21:57:30 2024 +0100

    leds: trigger: Store brightness set by led_trigger_event()
    
    [ Upstream commit 822c91e72eac568ed8d83765634f00decb45666c ]
    
    If a simple trigger is assigned to a LED, then the LED may be off until
    the next led_trigger_event() call. This may be an issue for simple
    triggers with rare led_trigger_event() calls, e.g. power supply
    charging indicators (drivers/power/supply/power_supply_leds.c).
    Therefore persist the brightness value of the last led_trigger_event()
    call and use this value if the trigger is assigned to a LED.
    In addition add a getter for the trigger brightness value.
    
    Signed-off-by: Heiner Kallweit <[email protected]>
    Reviewed-by: Takashi Iwai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Stable-dep-of: ab477b766edd ("leds: triggers: Flush pending brightness before activating trigger")
    Signed-off-by: Sasha Levin <[email protected]>

leds: triggers: Flush pending brightness before activating trigger [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Thu Jun 13 17:24:51 2024 +0200

    leds: triggers: Flush pending brightness before activating trigger
    
    [ Upstream commit ab477b766edd3bfb6321a6e3df4c790612613fae ]
    
    The race fixed in timer_trig_activate() between a blocking
    set_brightness() call and trigger->activate() can affect any trigger.
    So move the call to flush_work() into led_trigger_set() where it can
    avoid the race for all triggers.
    
    Fixes: 0db37915d912 ("leds: avoid races with workqueue")
    Fixes: 8c0f693c6eff ("leds: avoid flush_work in atomic context")
    Cc: [email protected]
    Tested-by: Dustin L. Howett <[email protected]>
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 6.6.45 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Sun Aug 11 12:47:28 2024 +0200

    Linux 6.6.45
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Miguel Ojeda <[email protected]>
    Tested-by: Takeshi Ogasawara <[email protected]>
    Tested-by: Allen Pais <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: kernelci.org bot <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
MIPS: dts: loongson: Fix liointc IRQ polarity [+ + +]
Author: Jiaxun Yang <[email protected]>
Date:   Fri Jun 14 16:40:10 2024 +0100

    MIPS: dts: loongson: Fix liointc IRQ polarity
    
    [ Upstream commit dbb69b9d6234aad23b3ecd33e5bc8a8ae1485b7d ]
    
    All internal liointc interrupts are high level triggered.
    
    Fixes: b1a792601f26 ("MIPS: Loongson64: DeviceTree for Loongson-2K1000")
    Cc: [email protected]
    Signed-off-by: Jiaxun Yang <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

MIPS: dts: loongson: Fix ls2k1000-rtc interrupt [+ + +]
Author: Jiaxun Yang <[email protected]>
Date:   Fri Jun 14 16:40:11 2024 +0100

    MIPS: dts: loongson: Fix ls2k1000-rtc interrupt
    
    [ Upstream commit f70fd92df7529e7283e02a6c3a2510075f13ba30 ]
    
    The correct interrupt line for RTC is line 8 on liointc1.
    
    Fixes: e47084e116fc ("MIPS: Loongson64: DTS: Add RTC support to Loongson-2K1000")
    Cc: [email protected]
    Signed-off-by: Jiaxun Yang <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

MIPS: Loongson64: DTS: Fix PCIe port nodes for ls7a [+ + +]
Author: Jiaxun Yang <[email protected]>
Date:   Tue May 7 19:51:22 2024 +0100

    MIPS: Loongson64: DTS: Fix PCIe port nodes for ls7a
    
    [ Upstream commit d89a415ff8d5e0aad4963f2d8ebb0f9e8110b7fa ]
    
    Add various required properties to silent warnings:
    
    arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi:116.16-297.5: Warning (interrupt_provider): /bus@10000000/pci@1a000000: '#interrupt-cells' found, but node is not an interrupt provider
    arch/mips/boot/dts/loongson/loongson64_2core_2k1000.dtb: Warning (interrupt_map): Failed prerequisite 'interrupt_provider'
    
    Signed-off-by: Jiaxun Yang <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Stable-dep-of: dbb69b9d6234 ("MIPS: dts: loongson: Fix liointc IRQ polarity")
    Signed-off-by: Sasha Levin <[email protected]>

 
mm/page_alloc: fix pcp->count race between drain_pages_zone() vs __rmqueue_pcplist() [+ + +]
Author: Li Zhijian <[email protected]>
Date:   Tue Jul 23 14:44:28 2024 +0800

    mm/page_alloc: fix pcp->count race between drain_pages_zone() vs __rmqueue_pcplist()
    
    [ Upstream commit 66eca1021a42856d6af2a9802c99e160278aed91 ]
    
    It's expected that no page should be left in pcp_list after calling
    zone_pcp_disable() in offline_pages().  Previously, it's observed that
    offline_pages() gets stuck [1] due to some pages remaining in pcp_list.
    
    Cause:
    There is a race condition between drain_pages_zone() and __rmqueue_pcplist()
    involving the pcp->count variable. See below scenario:
    
             CPU0                              CPU1
        ----------------                    ---------------
                                          spin_lock(&pcp->lock);
                                          __rmqueue_pcplist() {
    zone_pcp_disable() {
                                            /* list is empty */
                                            if (list_empty(list)) {
                                              /* add pages to pcp_list */
                                              alloced = rmqueue_bulk()
      mutex_lock(&pcp_batch_high_lock)
      ...
      __drain_all_pages() {
        drain_pages_zone() {
          /* read pcp->count, it's 0 here */
          count = READ_ONCE(pcp->count)
          /* 0 means nothing to drain */
                                              /* update pcp->count */
                                              pcp->count += alloced << order;
          ...
                                          ...
                                          spin_unlock(&pcp->lock);
    
    In this case, after calling zone_pcp_disable() though, there are still some
    pages in pcp_list. And these pages in pcp_list are neither movable nor
    isolated, offline_pages() gets stuck as a result.
    
    Solution:
    Expand the scope of the pcp->lock to also protect pcp->count in
    drain_pages_zone(), to ensure no pages are left in the pcp list after
    zone_pcp_disable()
    
    [1] https://lore.kernel.org/linux-mm/[email protected]/
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 4b23a68f9536 ("mm/page_alloc: protect PCP lists with a spinlock")
    Signed-off-by: Li Zhijian <[email protected]>
    Reported-by: Yao Xingtao <[email protected]>
    Reviewed-by: Vlastimil Babka <[email protected]>
    Cc: David Hildenbrand <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mm: page_alloc: control latency caused by zone PCP draining [+ + +]
Author: Lucas Stach <[email protected]>
Date:   Mon Mar 18 21:07:36 2024 +0100

    mm: page_alloc: control latency caused by zone PCP draining
    
    [ Upstream commit 55f77df7d715110299f12c27f4365bd6332d1adb ]
    
    Patch series "mm/treewide: Remove pXd_huge() API", v2.
    
    In previous work [1], we removed the pXd_large() API, which is arch
    specific.  This patchset further removes the hugetlb pXd_huge() API.
    
    Hugetlb was never special on creating huge mappings when compared with
    other huge mappings.  Having a standalone API just to detect such pgtable
    entries is more or less redundant, especially after the pXd_leaf() API set
    is introduced with/without CONFIG_HUGETLB_PAGE.
    
    When looking at this problem, a few issues are also exposed that we don't
    have a clear definition of the *_huge() variance API.  This patchset
    started by cleaning these issues first, then replace all *_huge() users to
    use *_leaf(), then drop all *_huge() code.
    
    On x86/sparc, swap entries will be reported "true" in pXd_huge(), while
    for all the rest archs they're reported "false" instead.  This part is
    done in patch 1-5, in which I suspect patch 1 can be seen as a bug fix,
    but I'll leave that to hmm experts to decide.
    
    Besides, there are three archs (arm, arm64, powerpc) that have slightly
    different definitions between the *_huge() v.s.  *_leaf() variances.  I
    tackled them separately so that it'll be easier for arch experts to chim
    in when necessary.  This part is done in patch 6-9.
    
    The final patches 10-14 do the rest on the final removal, since *_leaf()
    will be the ultimate API in the future, and we seem to have quite some
    confusions on how *_huge() APIs can be defined, provide a rich comment for
    *_leaf() API set to define them properly to avoid future misuse, and
    hopefully that'll also help new archs to start support huge mappings and
    avoid traps (like either swap entries, or PROT_NONE entry checks).
    
    [1] https://lore.kernel.org/r/[email protected]
    
    This patch (of 14):
    
    When the complete PCP is drained a much larger number of pages than the
    usual batch size might be freed at once, causing large IRQ and preemption
    latency spikes, as they are all freed while holding the pcp and zone
    spinlocks.
    
    To avoid those latency spikes, limit the number of pages freed in a single
    bulk operation to common batch limits.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Lucas Stach <[email protected]>
    Signed-off-by: Peter Xu <[email protected]>
    Cc: Christophe Leroy <[email protected]>
    Cc: Jason Gunthorpe <[email protected]>
    Cc: "Matthew Wilcox (Oracle)" <[email protected]>
    Cc: Mike Rapoport (IBM) <[email protected]>
    Cc: Muchun Song <[email protected]>
    Cc: Alistair Popple <[email protected]>
    Cc: Andreas Larsson <[email protected]>
    Cc: "Aneesh Kumar K.V" <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Bjorn Andersson <[email protected]>
    Cc: Borislav Petkov <[email protected]>
    Cc: Catalin Marinas <[email protected]>
    Cc: Dave Hansen <[email protected]>
    Cc: David S. Miller <[email protected]>
    Cc: Fabio Estevam <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Konrad Dybcio <[email protected]>
    Cc: Krzysztof Kozlowski <[email protected]>
    Cc: Mark Salter <[email protected]>
    Cc: Michael Ellerman <[email protected]>
    Cc: Naoya Horiguchi <[email protected]>
    Cc: "Naveen N. Rao" <[email protected]>
    Cc: Nicholas Piggin <[email protected]>
    Cc: Russell King <[email protected]>
    Cc: Shawn Guo <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Cc: Will Deacon <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 66eca1021a42 ("mm/page_alloc: fix pcp->count race between drain_pages_zone() vs __rmqueue_pcplist()")
    Signed-off-by: Sasha Levin <[email protected]>

mm: restrict the pcp batch scale factor to avoid too long latency [+ + +]
Author: Huang Ying <[email protected]>
Date:   Mon Oct 16 13:29:57 2023 +0800

    mm: restrict the pcp batch scale factor to avoid too long latency
    
    [ Upstream commit 52166607ecc980391b1fffbce0be3074a96d0c7b ]
    
    In page allocator, PCP (Per-CPU Pageset) is refilled and drained in
    batches to increase page allocation throughput, reduce page
    allocation/freeing latency per page, and reduce zone lock contention.  But
    too large batch size will cause too long maximal allocation/freeing
    latency, which may punish arbitrary users.  So the default batch size is
    chosen carefully (in zone_batchsize(), the value is 63 for zone > 1GB) to
    avoid that.
    
    In commit 3b12e7e97938 ("mm/page_alloc: scale the number of pages that are
    batch freed"), the batch size will be scaled for large number of page
    freeing to improve page freeing performance and reduce zone lock
    contention.  Similar optimization can be used for large number of pages
    allocation too.
    
    To find out a suitable max batch scale factor (that is, max effective
    batch size), some tests and measurement on some machines were done as
    follows.
    
    A set of debug patches are implemented as follows,
    
    - Set PCP high to be 2 * batch to reduce the effect of PCP high
    
    - Disable free batch size scaling to get the raw performance.
    
    - The code with zone lock held is extracted from rmqueue_bulk() and
      free_pcppages_bulk() to 2 separate functions to make it easy to
      measure the function run time with ftrace function_graph tracer.
    
    - The batch size is hard coded to be 63 (default), 127, 255, 511,
      1023, 2047, 4095.
    
    Then will-it-scale/page_fault1 is used to generate the page
    allocation/freeing workload.  The page allocation/freeing throughput
    (page/s) is measured via will-it-scale.  The page allocation/freeing
    average latency (alloc/free latency avg, in us) and allocation/freeing
    latency at 99 percentile (alloc/free latency 99%, in us) are measured with
    ftrace function_graph tracer.
    
    The test results are as follows,
    
    Sapphire Rapids Server
    ======================
    Batch   throughput      free latency    free latency    alloc latency   alloc latency
            page/s          avg / us        99% / us        avg / us        99% / us
    -----   ----------      ------------    ------------    -------------   -------------
      63    513633.4         2.33            3.57            2.67             6.83
     127    517616.7         4.35            6.65            4.22            13.03
     255    520822.8         8.29           13.32            7.52            25.24
     511    524122.0        15.79           23.42           14.02            49.35
    1023    525980.5        30.25           44.19           25.36            94.88
    2047    526793.6        59.39           84.50           45.22           140.81
    
    Ice Lake Server
    ===============
    Batch   throughput      free latency    free latency    alloc latency   alloc latency
            page/s          avg / us        99% / us        avg / us        99% / us
    -----   ----------      ------------    ------------    -------------   -------------
      63    620210.3         2.21            3.68            2.02            4.35
     127    627003.0         4.09            6.86            3.51            8.28
     255    630777.5         7.70           13.50            6.17           15.97
     511    633651.5        14.85           22.62           11.66           31.08
    1023    637071.1        28.55           42.02           20.81           54.36
    2047    638089.7        56.54           84.06           39.28           91.68
    
    Cascade Lake Server
    ===================
    Batch   throughput      free latency    free latency    alloc latency   alloc latency
            page/s          avg / us        99% / us        avg / us        99% / us
    -----   ----------      ------------    ------------    -------------   -------------
      63    404706.7         3.29             5.03           3.53             4.75
     127    422475.2         6.12             9.09           6.36             8.76
     255    411522.2        11.68            16.97          10.90            16.39
     511    428124.1        22.54            31.28          19.86            32.25
    1023    414718.4        43.39            62.52          40.00            66.33
    2047    429848.7        86.64           120.34          71.14           106.08
    
    Commet Lake Desktop
    ===================
    Batch   throughput      free latency    free latency    alloc latency   alloc latency
            page/s          avg / us        99% / us        avg / us        99% / us
    -----   ----------      ------------    ------------    -------------   -------------
    
      63    795183.13        2.18            3.55            2.03            3.05
     127    803067.85        3.91            6.56            3.85            5.52
     255    812771.10        7.35           10.80            7.14           10.20
     511    817723.48       14.17           27.54           13.43           30.31
    1023    818870.19       27.72           40.10           27.89           46.28
    
    Coffee Lake Desktop
    ===================
    Batch   throughput      free latency    free latency    alloc latency   alloc latency
            page/s          avg / us        99% / us        avg / us        99% / us
    -----   ----------      ------------    ------------    -------------   -------------
      63    510542.8         3.13             4.40           2.48            3.43
     127    514288.6         5.97             7.89           4.65            6.04
     255    516889.7        11.86            15.58           8.96           12.55
     511    519802.4        23.10            28.81          16.95           26.19
    1023    520802.7        45.30            52.51          33.19           45.95
    2047    519997.1        90.63           104.00          65.26           81.74
    
    From the above data, to restrict the allocation/freeing latency to be less
    than 100 us in most times, the max batch scale factor needs to be less
    than or equal to 5.
    
    Although it is reasonable to use 5 as max batch scale factor for the
    systems tested, there are also slower systems.  Where smaller value should
    be used to constrain the page allocation/freeing latency.
    
    So, in this patch, a new kconfig option (PCP_BATCH_SCALE_MAX) is added to
    set the max batch scale factor.  Whose default value is 5, and users can
    reduce it when necessary.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: "Huang, Ying" <[email protected]>
    Acked-by: Andrew Morton <[email protected]>
    Acked-by: Mel Gorman <[email protected]>
    Cc: Vlastimil Babka <[email protected]>
    Cc: David Hildenbrand <[email protected]>
    Cc: Johannes Weiner <[email protected]>
    Cc: Dave Hansen <[email protected]>
    Cc: Michal Hocko <[email protected]>
    Cc: Pavel Tatashin <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Christoph Lameter <[email protected]>
    Cc: Arjan van de Ven <[email protected]>
    Cc: Sudeep Holla <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 66eca1021a42 ("mm/page_alloc: fix pcp->count race between drain_pages_zone() vs __rmqueue_pcplist()")
    Signed-off-by: Sasha Levin <[email protected]>

 
mptcp: distinguish rcv vs sent backup flag in requests [+ + +]
Author: Matthieu Baerts (NGI0) <[email protected]>
Date:   Sat Jul 27 12:01:24 2024 +0200

    mptcp: distinguish rcv vs sent backup flag in requests
    
    commit efd340bf3d7779a3a8ec954d8ec0fb8a10f24982 upstream.
    
    When sending an MP_JOIN + SYN + ACK, it is possible to mark the subflow
    as 'backup' by setting the flag with the same name. Before this patch,
    the backup was set if the other peer set it in its MP_JOIN + SYN
    request.
    
    It is not correct: the backup flag should be set in the MPJ+SYN+ACK only
    if the host asks for it, and not mirroring what was done by the other
    peer. It is then required to have a dedicated bit for each direction,
    similar to what is done in the subflow context.
    
    Fixes: f296234c98a8 ("mptcp: Add handling of incoming MP_JOIN requests")
    Cc: [email protected]
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: fix bad RCVPRUNED mib accounting [+ + +]
Author: Paolo Abeni <[email protected]>
Date:   Wed Jul 31 12:10:14 2024 +0200

    mptcp: fix bad RCVPRUNED mib accounting
    
    commit 0a567c2a10033bf04ed618368d179bce6977984b upstream.
    
    Since its introduction, the mentioned MIB accounted for the wrong
    event: wake-up being skipped as not-needed on some edge condition
    instead of incoming skb being dropped after landing in the (subflow)
    receive queue.
    
    Move the increment in the correct location.
    
    Fixes: ce599c516386 ("mptcp: properly account bulk freed memory")
    Cc: [email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: fix duplicate data handling [+ + +]
Author: Paolo Abeni <[email protected]>
Date:   Wed Jul 31 12:10:15 2024 +0200

    mptcp: fix duplicate data handling
    
    commit 68cc924729ffcfe90d0383177192030a9aeb2ee4 upstream.
    
    When a subflow receives and discards duplicate data, the mptcp
    stack assumes that the consumed offset inside the current skb is
    zero.
    
    With multiple subflows receiving data simultaneously such assertion
    does not held true. As a result the subflow-level copied_seq will
    be incorrectly increased and later on the same subflow will observe
    a bad mapping, leading to subflow reset.
    
    Address the issue taking into account the skb consumed offset in
    mptcp_subflow_discard_data().
    
    Fixes: 04e4cd4f7ca4 ("mptcp: cleanup mptcp_subflow_discard_data()")
    Cc: [email protected]
    Link: https://github.com/multipath-tcp/mptcp_net-next/issues/501
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: fix NL PM announced address accounting [+ + +]
Author: Paolo Abeni <[email protected]>
Date:   Sat Jul 27 11:04:00 2024 +0200

    mptcp: fix NL PM announced address accounting
    
    commit 4b317e0eb287bd30a1b329513531157c25e8b692 upstream.
    
    Currently the per connection announced address counter is never
    decreased. As a consequence, after connection establishment, if
    the NL PM deletes an endpoint and adds a new/different one, no
    additional subflow is created for the new endpoint even if the
    current limits allow that.
    
    Address the issue properly updating the signaled address counter
    every time the NL PM removes such addresses.
    
    Fixes: 01cacb00b35c ("mptcp: add netlink-based PM")
    Cc: [email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: fix user-space PM announced address accounting [+ + +]
Author: Paolo Abeni <[email protected]>
Date:   Sat Jul 27 11:03:59 2024 +0200

    mptcp: fix user-space PM announced address accounting
    
    commit 167b93258d1e2230ee3e8a97669b4db4cc9e90aa upstream.
    
    Currently the per-connection announced address counter is never
    decreased. When the user-space PM is in use, this just affect
    the information exposed via diag/sockopt, but it could still foul
    the PM to wrong decision.
    
    Add the missing accounting for the user-space PM's sake.
    
    Fixes: 8b1c94da1e48 ("mptcp: only send RM_ADDR in nl_cmd_remove")
    Cc: [email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: give rcvlowat some love [+ + +]
Author: Paolo Abeni <[email protected]>
Date:   Mon Oct 23 13:44:38 2023 -0700

    mptcp: give rcvlowat some love
    
    [ Upstream commit 5684ab1a0effbfeb706f47d85785f653005b97b1 ]
    
    The MPTCP protocol allow setting sk_rcvlowat, but the value there
    is currently ignored.
    
    Additionally, the default subflows sk_rcvlowat basically disables per
    subflow delayed ack: the MPTCP protocol move the incoming data from the
    subflows into the msk socket as soon as the TCP stacks invokes the subflow
    data_ready callback. Later, when __tcp_ack_snd_check() takes action,
    the subflow-level copied_seq matches rcv_nxt, and that mandate for an
    immediate ack.
    
    Let the mptcp receive path be aware of such threshold, explicitly tracking
    the amount of data available to be ready and checking vs sk_rcvlowat in
    mptcp_poll() and before waking-up readers.
    
    Additionally implement the set_rcvlowat() callback, to properly handle
    the rcvbuf auto-tuning on sk_rcvlowat changes.
    
    Finally to properly handle delayed ack, force the subflow level threshold
    to 0 and instead explicitly ask for an immediate ack when the msk level th
    is not reached.
    
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Mat Martineau <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 05f76b2d634e ("tcp: Adjust clamping window for applications specifying SO_RCVBUF")
    Signed-off-by: Sasha Levin <[email protected]>

mptcp: mib: count MPJ with backup flag [+ + +]
Author: Matthieu Baerts (NGI0) <[email protected]>
Date:   Sat Jul 27 12:01:26 2024 +0200

    mptcp: mib: count MPJ with backup flag
    
    commit 4dde0d72ccec500c60c798e036b852e013d6e124 upstream.
    
    Without such counters, it is difficult to easily debug issues with MPJ
    not having the backup flags on production servers.
    
    This is not strictly a fix, but it eases to validate the following
    patches without requiring to take packet traces, to query ongoing
    connections with Netlink with admin permissions, or to guess by looking
    at the behaviour of the packet scheduler. Also, the modification is self
    contained, isolated, well controlled, and the increments are done just
    after others, there from the beginning. It looks then safe, and helpful
    to backport this.
    
    Fixes: 4596a2c1b7f5 ("mptcp: allow creating non-backup subflows")
    Cc: [email protected]
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: pm: only set request_bkup flag when sending MP_PRIO [+ + +]
Author: Matthieu Baerts (NGI0) <[email protected]>
Date:   Sat Jul 27 12:01:25 2024 +0200

    mptcp: pm: only set request_bkup flag when sending MP_PRIO
    
    commit 4258b94831bb7ff28ab80e3c8d94db37db930728 upstream.
    
    The 'backup' flag from mptcp_subflow_context structure is supposed to be
    set only when the other peer flagged a subflow as backup, not the
    opposite.
    
    Fixes: 067065422fcd ("mptcp: add the outgoing MP_PRIO support")
    Cc: [email protected]
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: prevent BPF accessing lowat from a subflow socket. [+ + +]
Author: Paolo Abeni <[email protected]>
Date:   Fri Mar 29 19:50:36 2024 +0100

    mptcp: prevent BPF accessing lowat from a subflow socket.
    
    commit fcf4692fa39e86a590c14a4af2de704e1d20a3b5 upstream.
    
    Alexei reported the following splat:
    
     WARNING: CPU: 32 PID: 3276 at net/mptcp/subflow.c:1430 subflow_data_ready+0x147/0x1c0
     Modules linked in: dummy bpf_testmod(O) [last unloaded: bpf_test_no_cfi(O)]
     CPU: 32 PID: 3276 Comm: test_progs Tainted: GO       6.8.0-12873-g2c43c33bfd23
     Call Trace:
      <TASK>
      mptcp_set_rcvlowat+0x79/0x1d0
      sk_setsockopt+0x6c0/0x1540
      __bpf_setsockopt+0x6f/0x90
      bpf_sock_ops_setsockopt+0x3c/0x90
      bpf_prog_509ce5db2c7f9981_bpf_test_sockopt_int+0xb4/0x11b
      bpf_prog_dce07e362d941d2b_bpf_test_socket_sockopt+0x12b/0x132
      bpf_prog_348c9b5faaf10092_skops_sockopt+0x954/0xe86
      __cgroup_bpf_run_filter_sock_ops+0xbc/0x250
      tcp_connect+0x879/0x1160
      tcp_v6_connect+0x50c/0x870
      mptcp_connect+0x129/0x280
      __inet_stream_connect+0xce/0x370
      inet_stream_connect+0x36/0x50
      bpf_trampoline_6442491565+0x49/0xef
      inet_stream_connect+0x5/0x50
      __sys_connect+0x63/0x90
      __x64_sys_connect+0x14/0x20
    
    The root cause of the issue is that bpf allows accessing mptcp-level
    proto_ops from a tcp subflow scope.
    
    Fix the issue detecting the problematic call and preventing any action.
    
    Reported-by: Alexei Starovoitov <[email protected]>
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/482
    Fixes: 5684ab1a0eff ("mptcp: give rcvlowat some love")
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Mat Martineau <[email protected]>
    Reviewed-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://lore.kernel.org/r/d8cb7d8476d66cb0812a6e29cd1e626869d9d53e.1711738080.git.pabeni@redhat.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: sched: check both directions for backup [+ + +]
Author: Matthieu Baerts (NGI0) <[email protected]>
Date:   Sat Jul 27 12:01:23 2024 +0200

    mptcp: sched: check both directions for backup
    
    commit b6a66e521a2032f7fcba2af5a9bcbaeaa19b7ca3 upstream.
    
    The 'mptcp_subflow_context' structure has two items related to the
    backup flags:
    
     - 'backup': the subflow has been marked as backup by the other peer
    
     - 'request_bkup': the backup flag has been set by the host
    
    Before this patch, the scheduler was only looking at the 'backup' flag.
    That can make sense in some cases, but it looks like that's not what we
    wanted for the general use, because either the path-manager was setting
    both of them when sending an MP_PRIO, or the receiver was duplicating
    the 'backup' flag in the subflow request.
    
    Note that the use of these two flags in the path-manager are going to be
    fixed in the next commits, but this change here is needed not to modify
    the behaviour.
    
    Fixes: f296234c98a8 ("mptcp: Add handling of incoming MP_JOIN requests")
    Cc: [email protected]
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net/iucv: fix use after free in iucv_sock_close() [+ + +]
Author: Alexandra Winter <[email protected]>
Date:   Mon Jul 29 14:28:16 2024 +0200

    net/iucv: fix use after free in iucv_sock_close()
    
    [ Upstream commit f558120cd709682b739207b48cf7479fd9568431 ]
    
    iucv_sever_path() is called from process context and from bh context.
    iucv->path is used as indicator whether somebody else is taking care of
    severing the path (or it is already removed / never existed).
    This needs to be done with atomic compare and swap, otherwise there is a
    small window where iucv_sock_close() will try to work with a path that has
    already been severed and freed by iucv_callback_connrej() called by
    iucv_tasklet_fn().
    
    Example:
    [452744.123844] Call Trace:
    [452744.123845] ([<0000001e87f03880>] 0x1e87f03880)
    [452744.123966]  [<00000000d593001e>] iucv_path_sever+0x96/0x138
    [452744.124330]  [<000003ff801ddbca>] iucv_sever_path+0xc2/0xd0 [af_iucv]
    [452744.124336]  [<000003ff801e01b6>] iucv_sock_close+0xa6/0x310 [af_iucv]
    [452744.124341]  [<000003ff801e08cc>] iucv_sock_release+0x3c/0xd0 [af_iucv]
    [452744.124345]  [<00000000d574794e>] __sock_release+0x5e/0xe8
    [452744.124815]  [<00000000d5747a0c>] sock_close+0x34/0x48
    [452744.124820]  [<00000000d5421642>] __fput+0xba/0x268
    [452744.124826]  [<00000000d51b382c>] task_work_run+0xbc/0xf0
    [452744.124832]  [<00000000d5145710>] do_notify_resume+0x88/0x90
    [452744.124841]  [<00000000d5978096>] system_call+0xe2/0x2c8
    [452744.125319] Last Breaking-Event-Address:
    [452744.125321]  [<00000000d5930018>] iucv_path_sever+0x90/0x138
    [452744.125324]
    [452744.125325] Kernel panic - not syncing: Fatal exception in interrupt
    
    Note that bh_lock_sock() is not serializing the tasklet context against
    process context, because the check for sock_owned_by_user() and
    corresponding handling is missing.
    
    Ideas for a future clean-up patch:
    A) Correct usage of bh_lock_sock() in tasklet context, as described in
    Link: https://lore.kernel.org/netdev/1280155406.2899.407.camel@edumazet-laptop/
    Re-enqueue, if needed. This may require adding return values to the
    tasklet functions and thus changes to all users of iucv.
    
    B) Change iucv tasklet into worker and use only lock_sock() in af_iucv.
    
    Fixes: 7d316b945352 ("af_iucv: remove IUCV-pathes completely")
    Reviewed-by: Halil Pasic <[email protected]>
    Signed-off-by: Alexandra Winter <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5: Always drain health in shutdown callback [+ + +]
Author: Shay Drory <[email protected]>
Date:   Tue Jul 30 09:16:30 2024 +0300

    net/mlx5: Always drain health in shutdown callback
    
    [ Upstream commit 1b75da22ed1e6171e261bc9265370162553d5393 ]
    
    There is no point in recovery during device shutdown. if health
    work started need to wait for it to avoid races and NULL pointer
    access.
    
    Hence, drain health WQ on shutdown callback.
    
    Fixes: 1958fc2f0712 ("net/mlx5: SF, Add auxiliary device driver")
    Fixes: d2aa060d40fa ("net/mlx5: Cancel health poll before sending panic teardown command")
    Signed-off-by: Shay Drory <[email protected]>
    Reviewed-by: Moshe Shemesh <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Wojciech Drewek <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Fix error handling in irq_pool_request_irq [+ + +]
Author: Shay Drory <[email protected]>
Date:   Tue Jul 30 09:16:31 2024 +0300

    net/mlx5: Fix error handling in irq_pool_request_irq
    
    [ Upstream commit a4557b0b57c40871ff00da4f623cf79211e052f3 ]
    
    In case mlx5_irq_alloc fails, the previously allocated index remains
    in the XArray, which could lead to inconsistencies.
    
    Fix it by adding error handling that erases the allocated index
    from the XArray if mlx5_irq_alloc returns an error.
    
    Fixes: c36326d38d93 ("net/mlx5: Round-Robin EQs over IRQs")
    Signed-off-by: Shay Drory <[email protected]>
    Reviewed-by: Maher Sanalla <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Wojciech Drewek <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Fix missing lock on sync reset reload [+ + +]
Author: Moshe Shemesh <[email protected]>
Date:   Tue Jul 30 09:16:34 2024 +0300

    net/mlx5: Fix missing lock on sync reset reload
    
    [ Upstream commit 572f9caa9e7295f8c8822e4122c7ae8f1c412ff9 ]
    
    On sync reset reload work, when remote host updates devlink on reload
    actions performed on that host, it misses taking devlink lock before
    calling devlink_remote_reload_actions_performed() which results in
    triggering lock assert like the following:
    
    WARNING: CPU: 4 PID: 1164 at net/devlink/core.c:261 devl_assert_locked+0x3e/0x50
    …
     CPU: 4 PID: 1164 Comm: kworker/u96:6 Tainted: G S      W          6.10.0-rc2+ #116
     Hardware name: Supermicro SYS-2028TP-DECTR/X10DRT-PT, BIOS 2.0 12/18/2015
     Workqueue: mlx5_fw_reset_events mlx5_sync_reset_reload_work [mlx5_core]
     RIP: 0010:devl_assert_locked+0x3e/0x50
    …
     Call Trace:
      <TASK>
      ? __warn+0xa4/0x210
      ? devl_assert_locked+0x3e/0x50
      ? report_bug+0x160/0x280
      ? handle_bug+0x3f/0x80
      ? exc_invalid_op+0x17/0x40
      ? asm_exc_invalid_op+0x1a/0x20
      ? devl_assert_locked+0x3e/0x50
      devlink_notify+0x88/0x2b0
      ? mlx5_attach_device+0x20c/0x230 [mlx5_core]
      ? __pfx_devlink_notify+0x10/0x10
      ? process_one_work+0x4b6/0xbb0
      process_one_work+0x4b6/0xbb0
    […]
    
    Fixes: 84a433a40d0e ("net/mlx5: Lock mlx5 devlink reload callbacks")
    Signed-off-by: Moshe Shemesh <[email protected]>
    Reviewed-by: Maor Gottlieb <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Wojciech Drewek <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Lag, don't use the hardcoded value of the first port [+ + +]
Author: Mark Bloch <[email protected]>
Date:   Tue Jul 30 09:16:33 2024 +0300

    net/mlx5: Lag, don't use the hardcoded value of the first port
    
    [ Upstream commit 3fda84dc090390573cfbd0b1d70372663315de21 ]
    
    The cited commit didn't change the body of the loop as it should.
    It shouldn't be using MLX5_LAG_P1.
    
    Fixes: 7e978e7714d6 ("net/mlx5: Lag, use actual number of lag ports")
    Signed-off-by: Mark Bloch <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Wojciech Drewek <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5e: Add a check for the return value from mlx5_port_set_eth_ptys [+ + +]
Author: Shahar Shitrit <[email protected]>
Date:   Tue Jul 30 09:16:37 2024 +0300

    net/mlx5e: Add a check for the return value from mlx5_port_set_eth_ptys
    
    [ Upstream commit 3f8e82a020a5c22f9b791f4ac499b8e18007fbda ]
    
    Since the documentation for mlx5_toggle_port_link states that it should
    only be used after setting the port register, we add a check for the
    return value from mlx5_port_set_eth_ptys to ensure the register was
    successfully set before calling it.
    
    Fixes: 667daedaecd1 ("net/mlx5e: Toggle link only after modifying port parameters")
    Signed-off-by: Shahar Shitrit <[email protected]>
    Reviewed-by: Carolina Jubran <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Wojciech Drewek <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5e: Fix CT entry update leaks of modify header context [+ + +]
Author: Chris Mi <[email protected]>
Date:   Tue Jul 30 09:16:36 2024 +0300

    net/mlx5e: Fix CT entry update leaks of modify header context
    
    [ Upstream commit 025f2b85a5e5a46df14ecf162c3c80a957a36d0b ]
    
    The cited commit allocates a new modify header to replace the old
    one when updating CT entry. But if failed to allocate a new one, eg.
    exceed the max number firmware can support, modify header will be
    an error pointer that will trigger a panic when deallocating it. And
    the old modify header point is copied to old attr. When the old
    attr is freed, the old modify header is lost.
    
    Fix it by restoring the old attr to attr when failed to allocate a
    new modify header context. So when the CT entry is freed, the right
    modify header context will be freed. And the panic of accessing
    error pointer is also fixed.
    
    Fixes: 94ceffb48eac ("net/mlx5e: Implement CT entry update")
    Signed-off-by: Chris Mi <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Wojciech Drewek <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5e: Require mlx5 tc classifier action support for IPsec prio capability [+ + +]
Author: Rahul Rameshbabu <[email protected]>
Date:   Tue Jul 30 09:16:35 2024 +0300

    net/mlx5e: Require mlx5 tc classifier action support for IPsec prio capability
    
    [ Upstream commit 06827e27fdcd197557be72b2229dbd362303794f ]
    
    Require mlx5 classifier action support when creating IPSec chains in
    offload path. MLX5_IPSEC_CAP_PRIO should only be set if CONFIG_MLX5_CLS_ACT
    is enabled. If CONFIG_MLX5_CLS_ACT=n and MLX5_IPSEC_CAP_PRIO is set,
    configuring IPsec offload will fail due to the mlxx5 ipsec chain rules
    failing to be created due to lack of classifier action support.
    
    Fixes: fa5aa2f89073 ("net/mlx5e: Use chains for IPsec policy priority offload")
    Signed-off-by: Rahul Rameshbabu <[email protected]>
    Reviewed-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Wojciech Drewek <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net: axienet: start napi before enabling Rx/Tx [+ + +]
Author: Andy Chiu <[email protected]>
Date:   Fri Jul 26 15:06:50 2024 +0800

    net: axienet: start napi before enabling Rx/Tx
    
    [ Upstream commit 799a829507506924add8a7620493adc1c3cfda30 ]
    
    softirq may get lost if an Rx interrupt comes before we call
    napi_enable. Move napi_enable in front of axienet_setoptions(), which
    turns on the device, to address the issue.
    
    Link: https://lists.gnu.org/archive/html/qemu-devel/2024-07/msg06160.html
    Fixes: cc37610caaf8 ("net: axienet: implement NAPI and GRO receive")
    Signed-off-by: Andy Chiu <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: mvpp2: Don't re-use loop iterator [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Wed Jul 24 11:06:56 2024 -0500

    net: mvpp2: Don't re-use loop iterator
    
    [ Upstream commit 0aa3ca956c46d849775eae1816cef8fe4bc8b50e ]
    
    This function has a nested loop.  The problem is that both the inside
    and outside loop use the same variable as an iterator.  I found this
    via static analysis so I'm not sure the impact.  It could be that it
    loops forever or, more likely, the loop exits early.
    
    Fixes: 3a616b92a9d1 ("net: mvpp2: Add TX flow control support for jumbo frames")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: micrel: Fix the KSZ9131 MDI-X status issue [+ + +]
Author: Raju Lakkaraju <[email protected]>
Date:   Thu Jul 25 12:41:25 2024 +0530

    net: phy: micrel: Fix the KSZ9131 MDI-X status issue
    
    [ Upstream commit 84383b5ef4cd21b4a67de92afdc05a03b5247db9 ]
    
    The MDIX status is not accurately reflecting the current state after the link
    partner has manually altered its MDIX configuration while operating in forced
    mode.
    
    Access information about Auto mdix completion and pair selection from the
    KSZ9131's Auto/MDI/MDI-X status register
    
    Fixes: b64e6a8794d9 ("net: phy: micrel: Add PHY Auto/MDI/MDI-X set driver for KSZ9131")
    Signed-off-by: Raju Lakkaraju <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: realtek: add support for RTL8366S Gigabit PHY [+ + +]
Author: Mark Mentovai <[email protected]>
Date:   Thu Jul 25 16:41:44 2024 -0400

    net: phy: realtek: add support for RTL8366S Gigabit PHY
    
    [ Upstream commit 225990c487c1023e7b3aa89beb6a68011fbc0461 ]
    
    The PHY built in to the Realtek RTL8366S switch controller was
    previously supported by genphy_driver. This PHY does not implement MMD
    operations. Since commit 9b01c885be36 ("net: phy: c22: migrate to
    genphy_c45_write_eee_adv()"), MMD register reads have been made during
    phy_probe to determine EEE support. For genphy_driver, these reads are
    transformed into 802.3 annex 22D clause 45-over-clause 22
    mmd_phy_indirect operations that perform MII register writes to
    MII_MMD_CTRL and MII_MMD_DATA. This overwrites those two MII registers,
    which on this PHY are reserved and have another function, rendering the
    PHY unusable while so configured.
    
    Proper support for this PHY is restored by providing a phy_driver that
    declares MMD operations as unsupported by using the helper functions
    provided for that purpose, while remaining otherwise identical to
    genphy_driver.
    
    Fixes: 9b01c885be36 ("net: phy: c22: migrate to genphy_c45_write_eee_adv()")
    Reported-by: Russell Senior <[email protected]>
    Closes: https://github.com/openwrt/openwrt/issues/15981
    Link: https://github.com/openwrt/openwrt/issues/15739
    Signed-off-by: Mark Mentovai <[email protected]>
    Reviewed-by: Maxime Chevallier <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: sr9700: fix uninitialized variable use in sr_mdio_read [+ + +]
Author: Ma Ke <[email protected]>
Date:   Thu Jul 25 10:29:42 2024 +0800

    net: usb: sr9700: fix uninitialized variable use in sr_mdio_read
    
    commit 08f3a5c38087d1569e982a121aad1e6acbf145ce upstream.
    
    It could lead to error happen because the variable res is not updated if
    the call to sr_share_read_word returns an error. In this particular case
    error code was returned and res stayed uninitialized. Same issue also
    applies to sr_read_reg.
    
    This can be avoided by checking the return value of sr_share_read_word
    and sr_read_reg, and propagating the error if the read operation failed.
    
    Found by code review.
    
    Cc: [email protected]
    Fixes: c9b37458e956 ("USB2NET : SR9700 : One chip USB 1.1 USB2NET SR9700Device Driver Support")
    Signed-off-by: Ma Ke <[email protected]>
    Reviewed-by: Shigeru Yoshida <[email protected]>
    Reviewed-by: Hariprasad Kelam <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
netfilter: iptables: Fix null-ptr-deref in iptable_nat_table_init(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Thu Jul 25 12:28:20 2024 -0700

    netfilter: iptables: Fix null-ptr-deref in iptable_nat_table_init().
    
    [ Upstream commit 5830aa863981d43560748aa93589c0695191d95d ]
    
    We had a report that iptables-restore sometimes triggered null-ptr-deref
    at boot time. [0]
    
    The problem is that iptable_nat_table_init() is exposed to user space
    before the kernel fully initialises netns.
    
    In the small race window, a user could call iptable_nat_table_init()
    that accesses net_generic(net, iptable_nat_net_id), which is available
    only after registering iptable_nat_net_ops.
    
    Let's call register_pernet_subsys() before xt_register_template().
    
    [0]:
    bpfilter: Loaded bpfilter_umh pid 11702
    Started bpfilter
    BUG: kernel NULL pointer dereference, address: 0000000000000013
     PF: supervisor write access in kernel mode
     PF: error_code(0x0002) - not-present page
    PGD 0 P4D 0
    PREEMPT SMP NOPTI
    CPU: 2 PID: 11879 Comm: iptables-restor Not tainted 6.1.92-99.174.amzn2023.x86_64 #1
    Hardware name: Amazon EC2 c6i.4xlarge/, BIOS 1.0 10/16/2017
    RIP: 0010:iptable_nat_table_init (net/ipv4/netfilter/iptable_nat.c:87 net/ipv4/netfilter/iptable_nat.c:121) iptable_nat
    Code: 10 4c 89 f6 48 89 ef e8 0b 19 bb ff 41 89 c4 85 c0 75 38 41 83 c7 01 49 83 c6 28 41 83 ff 04 75 dc 48 8b 44 24 08 48 8b 0c 24 <48> 89 08 4c 89 ef e8 a2 3b a2 cf 48 83 c4 10 44 89 e0 5b 5d 41 5c
    RSP: 0018:ffffbef902843cd0 EFLAGS: 00010246
    RAX: 0000000000000013 RBX: ffff9f4b052caa20 RCX: ffff9f4b20988d80
    RDX: 0000000000000000 RSI: 0000000000000064 RDI: ffffffffc04201c0
    RBP: ffff9f4b29394000 R08: ffff9f4b07f77258 R09: ffff9f4b07f77240
    R10: 0000000000000000 R11: ffff9f4b09635388 R12: 0000000000000000
    R13: ffff9f4b1a3c6c00 R14: ffff9f4b20988e20 R15: 0000000000000004
    FS:  00007f6284340000(0000) GS:ffff9f51fe280000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000013 CR3: 00000001d10a6005 CR4: 00000000007706e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    PKRU: 55555554
    Call Trace:
     <TASK>
     ? show_trace_log_lvl (arch/x86/kernel/dumpstack.c:259)
     ? show_trace_log_lvl (arch/x86/kernel/dumpstack.c:259)
     ? xt_find_table_lock (net/netfilter/x_tables.c:1259)
     ? __die_body.cold (arch/x86/kernel/dumpstack.c:478 arch/x86/kernel/dumpstack.c:420)
     ? page_fault_oops (arch/x86/mm/fault.c:727)
     ? exc_page_fault (./arch/x86/include/asm/irqflags.h:40 ./arch/x86/include/asm/irqflags.h:75 arch/x86/mm/fault.c:1470 arch/x86/mm/fault.c:1518)
     ? asm_exc_page_fault (./arch/x86/include/asm/idtentry.h:570)
     ? iptable_nat_table_init (net/ipv4/netfilter/iptable_nat.c:87 net/ipv4/netfilter/iptable_nat.c:121) iptable_nat
     xt_find_table_lock (net/netfilter/x_tables.c:1259)
     xt_request_find_table_lock (net/netfilter/x_tables.c:1287)
     get_info (net/ipv4/netfilter/ip_tables.c:965)
     ? security_capable (security/security.c:809 (discriminator 13))
     ? ns_capable (kernel/capability.c:376 kernel/capability.c:397)
     ? do_ipt_get_ctl (net/ipv4/netfilter/ip_tables.c:1656)
     ? bpfilter_send_req (net/bpfilter/bpfilter_kern.c:52) bpfilter
     nf_getsockopt (net/netfilter/nf_sockopt.c:116)
     ip_getsockopt (net/ipv4/ip_sockglue.c:1827)
     __sys_getsockopt (net/socket.c:2327)
     __x64_sys_getsockopt (net/socket.c:2342 net/socket.c:2339 net/socket.c:2339)
     do_syscall_64 (arch/x86/entry/common.c:51 arch/x86/entry/common.c:81)
     entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121)
    RIP: 0033:0x7f62844685ee
    Code: 48 8b 0d 45 28 0f 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 49 89 ca b8 37 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 0a c3 66 0f 1f 84 00 00 00 00 00 48 8b 15 09
    RSP: 002b:00007ffd1f83d638 EFLAGS: 00000246 ORIG_RAX: 0000000000000037
    RAX: ffffffffffffffda RBX: 00007ffd1f83d680 RCX: 00007f62844685ee
    RDX: 0000000000000040 RSI: 0000000000000000 RDI: 0000000000000004
    RBP: 0000000000000004 R08: 00007ffd1f83d670 R09: 0000558798ffa2a0
    R10: 00007ffd1f83d680 R11: 0000000000000246 R12: 00007ffd1f83e3b2
    R13: 00007f628455baa0 R14: 00007ffd1f83d7b0 R15: 00007f628457a008
     </TASK>
    Modules linked in: iptable_nat(+) bpfilter rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace fscache veth xt_state xt_connmark xt_nat xt_statistic xt_MASQUERADE xt_mark xt_addrtype ipt_REJECT nf_reject_ipv4 nft_chain_nat nf_nat xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 xt_comment nft_compat nf_tables nfnetlink overlay nls_ascii nls_cp437 vfat fat ghash_clmulni_intel aesni_intel ena crypto_simd ptp cryptd i8042 pps_core serio button sunrpc sch_fq_codel configfs loop dm_mod fuse dax dmi_sysfs crc32_pclmul crc32c_intel efivarfs
    CR2: 0000000000000013
    
    Fixes: fdacd57c79b7 ("netfilter: x_tables: never register tables by default")
    Reported-by: Takahiro Kawahara <[email protected]>
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Florian Westphal <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: iptables: Fix potential null-ptr-deref in ip6table_nat_table_init(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Thu Jul 25 12:28:21 2024 -0700

    netfilter: iptables: Fix potential null-ptr-deref in ip6table_nat_table_init().
    
    [ Upstream commit c22921df777de5606f1047b1345b8d22ef1c0b34 ]
    
    ip6table_nat_table_init() accesses net->gen->ptr[ip6table_nat_net_ops.id],
    but the function is exposed to user space before the entry is allocated
    via register_pernet_subsys().
    
    Let's call register_pernet_subsys() before xt_register_template().
    
    Fixes: fdacd57c79b7 ("netfilter: x_tables: never register tables by default")
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Florian Westphal <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
PCI: Add pci_get_base_class() helper [+ + +]
Author: Sui Jingfeng <[email protected]>
Date:   Fri Aug 25 14:27:10 2023 +0800

    PCI: Add pci_get_base_class() helper
    
    [ Upstream commit d427da2323b093a65d8317783e76ab8fad2e2ef0 ]
    
    There is no function to get all PCI devices in a system by matching
    against the base class code only, ignoring the sub-class code and
    the programming interface.  Add pci_get_base_class() to suit the
    need.
    
    For example, if a driver wants to process all PCI display devices in
    a system, it can do so like this:
    
      pdev = NULL;
      while ((pdev = pci_get_base_class(PCI_BASE_CLASS_DISPLAY, pdev))) {
        do_something_for_pci_display_device(pdev);
      }
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sui Jingfeng <[email protected]>
    [bhelgaas: reword commit log]
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Alex Deucher <[email protected]>
    Stable-dep-of: c2bc958b2b03 ("fbdev: vesafb: Detect VGA compatibility from screen info's VESA attributes")
    Signed-off-by: Sasha Levin <[email protected]>

 
perf tool: fix dereferencing NULL al->maps [+ + +]
Author: Casey Chen <[email protected]>
Date:   Mon Jul 22 15:15:48 2024 -0600

    perf tool: fix dereferencing NULL al->maps
    
    [ Upstream commit 4c17736689ccfc44ec7dcc472577f25c34cf8724 ]
    
    With 0dd5041c9a0e ("perf addr_location: Add init/exit/copy functions"),
    when cpumode is 3 (macro PERF_RECORD_MISC_HYPERVISOR),
    thread__find_map() could return with al->maps being NULL.
    
    The path below could add a callchain_cursor_node with NULL ms.maps.
    
    add_callchain_ip()
      thread__find_symbol(.., &al)
        thread__find_map(.., &al)   // al->maps becomes NULL
      ms.maps = maps__get(al.maps)
      callchain_cursor_append(..., &ms, ...)
        node->ms.maps = maps__get(ms->maps)
    
    Then the path below would dereference NULL maps and get segfault.
    
    fill_callchain_info()
      maps__machine(node->ms.maps);
    
    Fix it by checking if maps is NULL in fill_callchain_info().
    
    Fixes: 0dd5041c9a0e ("perf addr_location: Add init/exit/copy functions")
    Signed-off-by: Casey Chen <[email protected]>
    Reviewed-by: Ian Rogers <[email protected]>
    Reviewed-by: Arnaldo Carvalho de Melo <[email protected]>
    Acked-by: Namhyung Kim <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Namhyung Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
perf: imx_perf: fix counter start and config sequence [+ + +]
Author: Xu Yang <[email protected]>
Date:   Wed May 29 16:03:55 2024 +0800

    perf: imx_perf: fix counter start and config sequence
    
    [ Upstream commit ac9aa295f7a89d38656739628796f086f0b160e2 ]
    
    In current driver, the counter will start firstly and then be configured.
    This sequence is not correct for AXI filter events since the correct
    AXI_MASK and AXI_ID are not set yet. Then the results may be inaccurate.
    
    Reviewed-by: Frank Li <[email protected]>
    Fixes: 55691f99d417 ("drivers/perf: imx_ddr: Add support for NXP i.MX9 SoC DDRC PMU driver")
    cc: [email protected]
    Signed-off-by: Xu Yang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

perf: riscv: Fix selecting counters in legacy mode [+ + +]
Author: Shifrin Dmitry <[email protected]>
Date:   Mon Jul 29 15:58:58 2024 +0300

    perf: riscv: Fix selecting counters in legacy mode
    
    [ Upstream commit 941a8e9b7a86763ac52d5bf6ccc9986d37fde628 ]
    
    It is required to check event type before checking event config.
    Events with the different types can have the same config.
    This check is missed for legacy mode code
    
    For such perf usage:
        sysctl -w kernel.perf_user_access=2
        perf stat -e cycles,L1-dcache-loads --
    driver will try to force both events to CYCLE counter.
    
    This commit implements event type check before forcing
    events on the special counters.
    
    Signed-off-by: Shifrin Dmitry <[email protected]>
    Reviewed-by: Atish Patra <[email protected]>
    Fixes: cc4c07c89aad ("drivers: perf: Implement perf event mmap support in the SBI backend")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Palmer Dabbelt <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
platform/chrome: cros_ec_proto: Lock device when updating MKBP version [+ + +]
Author: Patryk Duda <[email protected]>
Date:   Tue Jul 30 10:44:25 2024 +0000

    platform/chrome: cros_ec_proto: Lock device when updating MKBP version
    
    commit df615907f1bf907260af01ccb904d0e9304b5278 upstream.
    
    The cros_ec_get_host_command_version_mask() function requires that the
    caller must have ec_dev->lock mutex before calling it. This requirement
    was not met and as a result it was possible that two commands were sent
    to the device at the same time.
    
    The problem was observed while using UART backend which doesn't use any
    additional locks, unlike SPI backend which locks the controller until
    response is received.
    
    Fixes: f74c7557ed0d ("platform/chrome: cros_ec_proto: Update version on GET_NEXT_EVENT failure")
    Cc: [email protected]
    Signed-off-by: Patryk Duda <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Tzung-Bi Shih <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Linux: protect the fetch of ->fd[fd] in do_dup2() from mispredictions [+ + +]
Author: Al Viro <[email protected]>
Date:   Thu Aug 1 15:22:22 2024 -0400

    protect the fetch of ->fd[fd] in do_dup2() from mispredictions
    
    commit 8aa37bde1a7b645816cda8b80df4753ecf172bf1 upstream.
    
    both callers have verified that fd is not greater than ->max_fds;
    however, misprediction might end up with
            tofree = fdt->fd[fd];
    being speculatively executed.  That's wrong for the same reasons
    why it's wrong in close_fd()/file_close_fd_locked(); the same
    solution applies - array_index_nospec(fd, fdt->max_fds) could differ
    from fd only in case of speculative execution on mispredicted path.
    
    Cc: [email protected]
    Signed-off-by: Al Viro <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
r8169: don't increment tx_dropped in case of NETDEV_TX_BUSY [+ + +]
Author: Heiner Kallweit <[email protected]>
Date:   Tue Jul 30 21:51:52 2024 +0200

    r8169: don't increment tx_dropped in case of NETDEV_TX_BUSY
    
    commit d516b187a9cc2e842030dd005be2735db3e8f395 upstream.
    
    The skb isn't consumed in case of NETDEV_TX_BUSY, therefore don't
    increment the tx_dropped counter.
    
    Fixes: 188f4af04618 ("r8169: use NETDEV_TX_{BUSY/OK}")
    Cc: [email protected]
    Suggested-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Heiner Kallweit <[email protected]>
    Reviewed-by: Wojciech Drewek <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Revert "ALSA: firewire-lib: obsolete workqueue for period update" [+ + +]
Author: Edmund Raile <[email protected]>
Date:   Tue Jul 30 19:53:26 2024 +0000

    Revert "ALSA: firewire-lib: obsolete workqueue for period update"
    
    commit 6ccf9984d6be3c2f804087b736db05c2ec42664b upstream.
    
    prepare resolution of AB/BA deadlock competition for substream lock:
    restore workqueue previously used for process context:
    
    revert commit b5b519965c4c ("ALSA: firewire-lib: obsolete workqueue
    for period update")
    
    Cc: [email protected]
    Link: https://lore.kernel.org/r/kwryofzdmjvzkuw6j3clftsxmoolynljztxqwg76hzeo4simnl@jn3eo7pe642q/
    Signed-off-by: Edmund Raile <[email protected]>
    Reviewed-by: Takashi Sakamoto <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Revert "ALSA: firewire-lib: operate for period elapse event in process context" [+ + +]
Author: Edmund Raile <[email protected]>
Date:   Tue Jul 30 19:53:29 2024 +0000

    Revert "ALSA: firewire-lib: operate for period elapse event in process context"
    
    commit 3dab73ab925a51ab05543b491bf17463a48ca323 upstream.
    
    Commit 7ba5ca32fe6e ("ALSA: firewire-lib: operate for period elapse event
    in process context") removed the process context workqueue from
    amdtp_domain_stream_pcm_pointer() and update_pcm_pointers() to remove
    its overhead.
    
    With RME Fireface 800, this lead to a regression since
    Kernels 5.14.0, causing an AB/BA deadlock competition for the
    substream lock with eventual system freeze under ALSA operation:
    
    thread 0:
        * (lock A) acquire substream lock by
            snd_pcm_stream_lock_irq() in
            snd_pcm_status64()
        * (lock B) wait for tasklet to finish by calling
            tasklet_unlock_spin_wait() in
            tasklet_disable_in_atomic() in
            ohci_flush_iso_completions() of ohci.c
    
    thread 1:
        * (lock B) enter tasklet
        * (lock A) attempt to acquire substream lock,
            waiting for it to be released:
            snd_pcm_stream_lock_irqsave() in
            snd_pcm_period_elapsed() in
            update_pcm_pointers() in
            process_ctx_payloads() in
            process_rx_packets() of amdtp-stream.c
    
    ? tasklet_unlock_spin_wait
     </NMI>
     <TASK>
    ohci_flush_iso_completions firewire_ohci
    amdtp_domain_stream_pcm_pointer snd_firewire_lib
    snd_pcm_update_hw_ptr0 snd_pcm
    snd_pcm_status64 snd_pcm
    
    ? native_queued_spin_lock_slowpath
     </NMI>
     <IRQ>
    _raw_spin_lock_irqsave
    snd_pcm_period_elapsed snd_pcm
    process_rx_packets snd_firewire_lib
    irq_target_callback snd_firewire_lib
    handle_it_packet firewire_ohci
    context_tasklet firewire_ohci
    
    Restore the process context work queue to prevent deadlock
    AB/BA deadlock competition for ALSA substream lock of
    snd_pcm_stream_lock_irq() in snd_pcm_status64()
    and snd_pcm_stream_lock_irqsave() in snd_pcm_period_elapsed().
    
    revert commit 7ba5ca32fe6e ("ALSA: firewire-lib: operate for period
    elapse event in process context")
    
    Replace inline description to prevent future deadlock.
    
    Cc: [email protected]
    Fixes: 7ba5ca32fe6e ("ALSA: firewire-lib: operate for period elapse event in process context")
    Reported-by: edmund.raile <[email protected]>
    Closes: https://lore.kernel.org/r/kwryofzdmjvzkuw6j3clftsxmoolynljztxqwg76hzeo4simnl@jn3eo7pe642q/
    Signed-off-by: Edmund Raile <[email protected]>
    Reviewed-by: Takashi Sakamoto <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
riscv/mm: Add handling for VM_FAULT_SIGSEGV in mm_fault_error() [+ + +]
Author: Zhe Qiao <[email protected]>
Date:   Wed Jul 31 16:45:47 2024 +0800

    riscv/mm: Add handling for VM_FAULT_SIGSEGV in mm_fault_error()
    
    [ Upstream commit 0c710050c47d45eb77b28c271cddefc5c785cb40 ]
    
    Handle VM_FAULT_SIGSEGV in the page fault path so that we correctly
    kill the process and we don't BUG() the kernel.
    
    Fixes: 07037db5d479 ("RISC-V: Paging and MMU")
    Signed-off-by: Zhe Qiao <[email protected]>
    Reviewed-by: Alexandre Ghiti <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Palmer Dabbelt <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
riscv: Fix linear mapping checks for non-contiguous memory regions [+ + +]
Author: Stuart Menefy <[email protected]>
Date:   Sat Jun 22 12:42:16 2024 +0100

    riscv: Fix linear mapping checks for non-contiguous memory regions
    
    [ Upstream commit 3b6564427aea83b7a35a15ca278291d50a1edcfc ]
    
    The RISC-V kernel already has checks to ensure that memory which would
    lie outside of the linear mapping is not used. However those checks
    use memory_limit, which is used to implement the mem= kernel command
    line option (to limit the total amount of memory, not its address
    range). When memory is made up of two or more non-contiguous memory
    banks this check is incorrect.
    
    Two changes are made here:
     - add a call in setup_bootmem() to memblock_cap_memory_range() which
       will cause any memory which falls outside the linear mapping to be
       removed from the memory regions.
     - remove the check in create_linear_mapping_page_table() which was
       intended to remove memory which is outside the liner mapping based
       on memory_limit, as it is no longer needed. Note a check for
       mapping more memory than memory_limit (to implement mem=) is
       unnecessary because of the existing call to
       memblock_enforce_memory_limit().
    
    This issue was seen when booting on a SV39 platform with two memory
    banks:
      0x00,80000000 1GiB
      0x20,00000000 32GiB
    This memory range is 158GiB from top to bottom, but the linear mapping
    is limited to 128GiB, so the lower block of RAM will be mapped at
    PAGE_OFFSET, and the upper block straddles the top of the linear
    mapping.
    
    This causes the following Oops:
    [    0.000000] Linux version 6.10.0-rc2-gd3b8dd5b51dd-dirty ([email protected]) (riscv64-codasip-linux-gcc (GCC) 13.2.0, GNU ld (GNU Binutils) 2.41.0.20231213) #20 SMP Sat Jun 22 11:34:22 BST 2024
    [    0.000000] memblock_add: [0x0000000080000000-0x00000000bfffffff] early_init_dt_add_memory_arch+0x4a/0x52
    [    0.000000] memblock_add: [0x0000002000000000-0x00000027ffffffff] early_init_dt_add_memory_arch+0x4a/0x52
    ...
    [    0.000000] memblock_alloc_try_nid: 23724 bytes align=0x8 nid=-1 from=0x0000000000000000 max_addr=0x0000000000000000 early_init_dt_alloc_memory_arch+0x1e/0x48
    [    0.000000] memblock_reserve: [0x00000027ffff5350-0x00000027ffffaffb] memblock_alloc_range_nid+0xb8/0x132
    [    0.000000] Unable to handle kernel paging request at virtual address fffffffe7fff5350
    [    0.000000] Oops [#1]
    [    0.000000] Modules linked in:
    [    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 6.10.0-rc2-gd3b8dd5b51dd-dirty #20
    [    0.000000] Hardware name: codasip,a70x (DT)
    [    0.000000] epc : __memset+0x8c/0x104
    [    0.000000]  ra : memblock_alloc_try_nid+0x74/0x84
    [    0.000000] epc : ffffffff805e88c8 ra : ffffffff806148f6 sp : ffffffff80e03d50
    [    0.000000]  gp : ffffffff80ec4158 tp : ffffffff80e0bec0 t0 : fffffffe7fff52f8
    [    0.000000]  t1 : 00000027ffffb000 t2 : 5f6b636f6c626d65 s0 : ffffffff80e03d90
    [    0.000000]  s1 : 0000000000005cac a0 : fffffffe7fff5350 a1 : 0000000000000000
    [    0.000000]  a2 : 0000000000005cac a3 : fffffffe7fffaff8 a4 : 000000000000002c
    [    0.000000]  a5 : ffffffff805e88c8 a6 : 0000000000005cac a7 : 0000000000000030
    [    0.000000]  s2 : fffffffe7fff5350 s3 : ffffffffffffffff s4 : 0000000000000000
    [    0.000000]  s5 : ffffffff8062347e s6 : 0000000000000000 s7 : 0000000000000001
    [    0.000000]  s8 : 0000000000002000 s9 : 00000000800226d0 s10: 0000000000000000
    [    0.000000]  s11: 0000000000000000 t3 : ffffffff8080a928 t4 : ffffffff8080a928
    [    0.000000]  t5 : ffffffff8080a928 t6 : ffffffff8080a940
    [    0.000000] status: 0000000200000100 badaddr: fffffffe7fff5350 cause: 000000000000000f
    [    0.000000] [<ffffffff805e88c8>] __memset+0x8c/0x104
    [    0.000000] [<ffffffff8062349c>] early_init_dt_alloc_memory_arch+0x1e/0x48
    [    0.000000] [<ffffffff8043e892>] __unflatten_device_tree+0x52/0x114
    [    0.000000] [<ffffffff8062441e>] unflatten_device_tree+0x9e/0xb8
    [    0.000000] [<ffffffff806046fe>] setup_arch+0xd4/0x5bc
    [    0.000000] [<ffffffff806007aa>] start_kernel+0x76/0x81a
    [    0.000000] Code: b823 02b2 bc23 02b2 b023 04b2 b423 04b2 b823 04b2 (bc23) 04b2
    [    0.000000] ---[ end trace 0000000000000000 ]---
    [    0.000000] Kernel panic - not syncing: Attempted to kill the idle task!
    [    0.000000] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---
    
    The problem is that memblock (unaware that some physical memory cannot
    be used) has allocated memory from the top of memory but which is
    outside the linear mapping region.
    
    Signed-off-by: Stuart Menefy <[email protected]>
    Fixes: c99127c45248 ("riscv: Make sure the linear mapping does not use the kernel mapping")
    Reviewed-by: David McKay <[email protected]>
    Reviewed-by: Alexandre Ghiti <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Palmer Dabbelt <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

riscv: remove unused functions in traps_misaligned.c [+ + +]
Author: Clément Léger <[email protected]>
Date:   Wed Oct 4 17:13:58 2023 +0200

    riscv: remove unused functions in traps_misaligned.c
    
    [ Upstream commit f19c3b4239f5bfb69aacbaf75d4277c095e7aa7d ]
    
    Replace macros by the only two function calls that are done from this
    file, store_u8() and load_u8().
    
    Signed-off-by: Clément Léger <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Palmer Dabbelt <[email protected]>
    Stable-dep-of: fb197c5d2fd2 ("riscv/purgatory: align riscv_kernel_entry")
    Signed-off-by: Sasha Levin <[email protected]>

 
rtnetlink: Don't ignore IFLA_TARGET_NETNSID when ifname is specified in rtnl_dellink(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Fri Jul 26 17:19:53 2024 -0700

    rtnetlink: Don't ignore IFLA_TARGET_NETNSID when ifname is specified in rtnl_dellink().
    
    [ Upstream commit 9415d375d8520e0ed55f0c0b058928da9a5b5b3d ]
    
    The cited commit accidentally replaced tgt_net with net in rtnl_dellink().
    
    As a result, IFLA_TARGET_NETNSID is ignored if the interface is specified
    with IFLA_IFNAME or IFLA_ALT_IFNAME.
    
    Let's pass tgt_net to rtnl_dev_get().
    
    Fixes: cc6090e985d7 ("net: rtnetlink: introduce helper to get net_device instance by ifname")
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Jakub Kicinski <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rust: SHADOW_CALL_STACK is incompatible with Rust [+ + +]
Author: Alice Ryhl <[email protected]>
Date:   Mon Jul 29 14:22:49 2024 +0000

    rust: SHADOW_CALL_STACK is incompatible with Rust
    
    commit f126745da81783fb1d082e67bf14c6795e489a88 upstream.
    
    When using the shadow call stack sanitizer, all code must be compiled
    with the -ffixed-x18 flag, but this flag is not currently being passed
    to Rust. This results in crashes that are extremely difficult to debug.
    
    To ensure that nobody else has to go through the same debugging session
    that I had to, prevent configurations that enable both SHADOW_CALL_STACK
    and RUST.
    
    It is rather common for people to backport 724a75ac9542 ("arm64: rust:
    Enable Rust support for AArch64"), so I recommend applying this fix all
    the way back to 6.1.
    
    Cc: [email protected] # 6.1 and later
    Fixes: 724a75ac9542 ("arm64: rust: Enable Rust support for AArch64")
    Signed-off-by: Alice Ryhl <[email protected]>
    Acked-by: Miguel Ojeda <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
sched: act_ct: take care of padding in struct zones_ht_key [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Thu Jul 25 09:27:45 2024 +0000

    sched: act_ct: take care of padding in struct zones_ht_key
    
    [ Upstream commit 2191a54f63225b548fd8346be3611c3219a24738 ]
    
    Blamed commit increased lookup key size from 2 bytes to 16 bytes,
    because zones_ht_key got a struct net pointer.
    
    Make sure rhashtable_lookup() is not using the padding bytes
    which are not initialized.
    
     BUG: KMSAN: uninit-value in rht_ptr_rcu include/linux/rhashtable.h:376 [inline]
     BUG: KMSAN: uninit-value in __rhashtable_lookup include/linux/rhashtable.h:607 [inline]
     BUG: KMSAN: uninit-value in rhashtable_lookup include/linux/rhashtable.h:646 [inline]
     BUG: KMSAN: uninit-value in rhashtable_lookup_fast include/linux/rhashtable.h:672 [inline]
     BUG: KMSAN: uninit-value in tcf_ct_flow_table_get+0x611/0x2260 net/sched/act_ct.c:329
      rht_ptr_rcu include/linux/rhashtable.h:376 [inline]
      __rhashtable_lookup include/linux/rhashtable.h:607 [inline]
      rhashtable_lookup include/linux/rhashtable.h:646 [inline]
      rhashtable_lookup_fast include/linux/rhashtable.h:672 [inline]
      tcf_ct_flow_table_get+0x611/0x2260 net/sched/act_ct.c:329
      tcf_ct_init+0xa67/0x2890 net/sched/act_ct.c:1408
      tcf_action_init_1+0x6cc/0xb30 net/sched/act_api.c:1425
      tcf_action_init+0x458/0xf00 net/sched/act_api.c:1488
      tcf_action_add net/sched/act_api.c:2061 [inline]
      tc_ctl_action+0x4be/0x19d0 net/sched/act_api.c:2118
      rtnetlink_rcv_msg+0x12fc/0x1410 net/core/rtnetlink.c:6647
      netlink_rcv_skb+0x375/0x650 net/netlink/af_netlink.c:2550
      rtnetlink_rcv+0x34/0x40 net/core/rtnetlink.c:6665
      netlink_unicast_kernel net/netlink/af_netlink.c:1331 [inline]
      netlink_unicast+0xf52/0x1260 net/netlink/af_netlink.c:1357
      netlink_sendmsg+0x10da/0x11e0 net/netlink/af_netlink.c:1901
      sock_sendmsg_nosec net/socket.c:730 [inline]
      __sock_sendmsg+0x30f/0x380 net/socket.c:745
      ____sys_sendmsg+0x877/0xb60 net/socket.c:2597
      ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2651
      __sys_sendmsg net/socket.c:2680 [inline]
      __do_sys_sendmsg net/socket.c:2689 [inline]
      __se_sys_sendmsg net/socket.c:2687 [inline]
      __x64_sys_sendmsg+0x307/0x4a0 net/socket.c:2687
      x64_sys_call+0x2dd6/0x3c10 arch/x86/include/generated/asm/syscalls_64.h:47
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Local variable key created at:
      tcf_ct_flow_table_get+0x4a/0x2260 net/sched/act_ct.c:324
      tcf_ct_init+0xa67/0x2890 net/sched/act_ct.c:1408
    
    Fixes: 88c67aeb1407 ("sched: act_ct: add netns into the key of tcf_ct_flow_table")
    Reported-by: [email protected]
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Xin Long <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Reviewed-by: Xin Long <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests: mptcp: always close input's FD if opened [+ + +]
Author: Liu Jing <[email protected]>
Date:   Sat Jul 27 11:04:03 2024 +0200

    selftests: mptcp: always close input's FD if opened
    
    commit 7c70bcc2a84cf925f655ea1ac4b8088062b144a3 upstream.
    
    In main_loop_s function, when the open(cfg_input, O_RDONLY) function is
    run, the last fd is not closed if the "--cfg_repeat > 0" branch is not
    taken.
    
    Fixes: 05be5e273c84 ("selftests: mptcp: add disconnect tests")
    Cc: [email protected]
    Signed-off-by: Liu Jing <[email protected]>
    Reviewed-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

selftests: mptcp: join: check backup support in signal endp [+ + +]
Author: Matthieu Baerts (NGI0) <[email protected]>
Date:   Sat Jul 27 12:01:29 2024 +0200

    selftests: mptcp: join: check backup support in signal endp
    
    commit f833470c27832136d4416d8fc55d658082af0989 upstream.
    
    Before the previous commit, 'signal' endpoints with the 'backup' flag
    were ignored when sending the MP_JOIN.
    
    The MPTCP Join selftest has then been modified to validate this case:
    the "single address, backup" test, is now validating the MP_JOIN with a
    backup flag as it is what we expect it to do with such name. The
    previous version has been kept, but renamed to "single address, switch
    to backup" to avoid confusions.
    
    The "single address with port, backup" test is also now validating the
    MPJ with a backup flag, which makes more sense than checking the switch
    to backup with an MP_PRIO.
    
    The "mpc backup both sides" test is now validating that the backup flag
    is also set in MP_JOIN from and to the addresses used in the initial
    subflow, using the special ID 0.
    
    The 'Fixes' tag here below is the same as the one from the previous
    commit: this patch here is not fixing anything wrong in the selftests,
    but it validates the previous fix for an issue introduced by this commit
    ID.
    
    Fixes: 4596a2c1b7f5 ("mptcp: allow creating non-backup subflows")
    Cc: [email protected]
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

selftests: mptcp: join: validate backup in MPJ [+ + +]
Author: Matthieu Baerts (NGI0) <[email protected]>
Date:   Sat Jul 27 12:01:27 2024 +0200

    selftests: mptcp: join: validate backup in MPJ
    
    commit 935ff5bb8a1cfcdf8e60c8f5c794d0bbbc234437 upstream.
    
    A peer can notify the other one that a subflow has to be treated as
    "backup" by two different ways: either by sending a dedicated MP_PRIO
    notification, or by setting the backup flag in the MP_JOIN handshake.
    
    The selftests were previously monitoring the former, but not the latter.
    This is what is now done here by looking at these new MIB counters when
    validating the 'backup' cases:
    
      MPTcpExtMPJoinSynBackupRx
      MPTcpExtMPJoinSynAckBackupRx
    
    The 'Fixes' tag here below is the same as the one from the previous
    commit: this patch here is not fixing anything wrong in the selftests,
    but it will help to validate a new fix for an issue introduced by this
    commit ID.
    
    Fixes: 4596a2c1b7f5 ("mptcp: allow creating non-backup subflows")
    Cc: [email protected]
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
sysctl: allow change system v ipc sysctls inside ipc namespace [+ + +]
Author: Alexey Gladkov <[email protected]>
Date:   Mon Jan 15 15:46:41 2024 +0000

    sysctl: allow change system v ipc sysctls inside ipc namespace
    
    [ Upstream commit 50ec499b9a43e46200c9f7b7d723ab2e4af540b3 ]
    
    Patch series "Allow to change ipc/mq sysctls inside ipc namespace", v3.
    
    Right now ipc and mq limits count as per ipc namespace, but only real root
    can change them.  By default, the current values of these limits are such
    that it can only be reduced.  Since only root can change the values, it is
    impossible to reduce these limits in the rootless container.
    
    We can allow limit changes within ipc namespace because mq parameters are
    limited by RLIMIT_MSGQUEUE and ipc parameters are not limited to anything
    other than cgroups.
    
    This patch (of 3):
    
    Rootless containers are not allowed to modify kernel IPC parameters.
    
    All default limits are set to such high values that in fact there are no
    limits at all.  All limits are not inherited and are initialized to
    default values when a new ipc_namespace is created.
    
    For new ipc_namespace:
    
    size_t       ipc_ns.shm_ctlmax = SHMMAX; // (ULONG_MAX - (1UL << 24))
    size_t       ipc_ns.shm_ctlall = SHMALL; // (ULONG_MAX - (1UL << 24))
    int          ipc_ns.shm_ctlmni = IPCMNI; // (1 << 15)
    int          ipc_ns.shm_rmid_forced = 0;
    unsigned int ipc_ns.msg_ctlmax = MSGMAX; // 8192
    unsigned int ipc_ns.msg_ctlmni = MSGMNI; // 32000
    unsigned int ipc_ns.msg_ctlmnb = MSGMNB; // 16384
    
    The shm_tot (total amount of shared pages) has also ceased to be global,
    it is located in ipc_namespace and is not inherited from anywhere.
    
    In such conditions, it cannot be said that these limits limit anything.
    The real limiter for them is cgroups.
    
    If we allow rootless containers to change these parameters, then it can
    only be reduced.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/d2f4603305cbfed58a24755aa61d027314b73a45.1705333426.git.legion@kernel.org
    Signed-off-by: Alexey Gladkov <[email protected]>
    Signed-off-by: Eric W. Biederman <[email protected]>
    Link: https://lkml.kernel.org/r/e2d84d3ec0172cfff759e6065da84ce0cc2736f8.1663756794.git.legion@kernel.org
    Cc: Christian Brauner <[email protected]>
    Cc: Joel Granados <[email protected]>
    Cc: Kees Cook <[email protected]>
    Cc: Luis Chamberlain <[email protected]>
    Cc: Manfred Spraul <[email protected]>
    Cc: Davidlohr Bueso <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 98ca62ba9e2b ("sysctl: always initialize i_uid/i_gid")
    Signed-off-by: Sasha Levin <[email protected]>

sysctl: allow to change limits for posix messages queues [+ + +]
Author: Alexey Gladkov <[email protected]>
Date:   Mon Jan 15 15:46:43 2024 +0000

    sysctl: allow to change limits for posix messages queues
    
    [ Upstream commit f9436a5d0497f759330d07e1189565edd4456be8 ]
    
    All parameters of posix messages queues (queues_max/msg_max/msgsize_max)
    end up being limited by RLIMIT_MSGQUEUE.  The code in mqueue_get_inode is
    where that limiting happens.
    
    The RLIMIT_MSGQUEUE is bound to the user namespace and is counted
    hierarchically.
    
    We can allow root in the user namespace to modify the posix messages
    queues parameters.
    
    Link: https://lkml.kernel.org/r/6ad67f23d1459a4f4339f74aa73bac0ecf3995e1.1705333426.git.legion@kernel.org
    Signed-off-by: Alexey Gladkov <[email protected]>
    Signed-off-by: Eric W. Biederman <[email protected]>
    Link: https://lkml.kernel.org/r/7eb21211c8622e91d226e63416b1b93c079f60ee.1663756794.git.legion@kernel.org
    Cc: Christian Brauner <[email protected]>
    Cc: Davidlohr Bueso <[email protected]>
    Cc: Joel Granados <[email protected]>
    Cc: Kees Cook <[email protected]>
    Cc: Luis Chamberlain <[email protected]>
    Cc: Manfred Spraul <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 98ca62ba9e2b ("sysctl: always initialize i_uid/i_gid")
    Signed-off-by: Sasha Levin <[email protected]>

sysctl: always initialize i_uid/i_gid [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Tue Apr 2 23:10:34 2024 +0200

    sysctl: always initialize i_uid/i_gid
    
    [ Upstream commit 98ca62ba9e2be5863c7d069f84f7166b45a5b2f4 ]
    
    Always initialize i_uid/i_gid inside the sysfs core so set_ownership()
    can safely skip setting them.
    
    Commit 5ec27ec735ba ("fs/proc/proc_sysctl.c: fix the default values of
    i_uid/i_gid on /proc/sys inodes.") added defaults for i_uid/i_gid when
    set_ownership() was not implemented. It also missed adjusting
    net_ctl_set_ownership() to use the same default values in case the
    computation of a better value failed.
    
    Fixes: 5ec27ec735ba ("fs/proc/proc_sysctl.c: fix the default values of i_uid/i_gid on /proc/sys inodes.")
    Cc: [email protected]
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Signed-off-by: Joel Granados <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

sysctl: treewide: drop unused argument ctl_table_root::set_ownership(table) [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Fri Mar 15 19:11:30 2024 +0100

    sysctl: treewide: drop unused argument ctl_table_root::set_ownership(table)
    
    [ Upstream commit 520713a93d550406dae14d49cdb8778d70cecdfd ]
    
    Remove the 'table' argument from set_ownership as it is never used. This
    change is a step towards putting "struct ctl_table" into .rodata and
    eventually having sysctl core only use "const struct ctl_table".
    
    The patch was created with the following coccinelle script:
    
      @@
      identifier func, head, table, uid, gid;
      @@
    
      void func(
        struct ctl_table_header *head,
      - struct ctl_table *table,
        kuid_t *uid, kgid_t *gid)
      { ... }
    
    No additional occurrences of 'set_ownership' were found after doing a
    tree-wide search.
    
    Reviewed-by: Joel Granados <[email protected]>
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Signed-off-by: Joel Granados <[email protected]>
    Stable-dep-of: 98ca62ba9e2b ("sysctl: always initialize i_uid/i_gid")
    Signed-off-by: Sasha Levin <[email protected]>

 
tcp: Adjust clamping window for applications specifying SO_RCVBUF [+ + +]
Author: Subash Abhinov Kasiviswanathan <[email protected]>
Date:   Fri Jul 26 13:41:05 2024 -0700

    tcp: Adjust clamping window for applications specifying SO_RCVBUF
    
    [ Upstream commit 05f76b2d634e65ab34472802d9b142ea9e03f74e ]
    
    tp->scaling_ratio is not updated based on skb->len/skb->truesize once
    SO_RCVBUF is set leading to the maximum window scaling to be 25% of
    rcvbuf after
    commit dfa2f0483360 ("tcp: get rid of sysctl_tcp_adv_win_scale")
    and 50% of rcvbuf after
    commit 697a6c8cec03 ("tcp: increase the default TCP scaling ratio").
    50% tries to emulate the behavior of older kernels using
    sysctl_tcp_adv_win_scale with default value.
    
    Systems which were using a different values of sysctl_tcp_adv_win_scale
    in older kernels ended up seeing reduced download speeds in certain
    cases as covered in https://lists.openwall.net/netdev/2024/05/15/13
    While the sysctl scheme is no longer acceptable, the value of 50% is
    a bit conservative when the skb->len/skb->truesize ratio is later
    determined to be ~0.66.
    
    Applications not specifying SO_RCVBUF update the window scaling and
    the receiver buffer every time data is copied to userspace. This
    computation is now used for applications setting SO_RCVBUF to update
    the maximum window scaling while ensuring that the receive buffer
    is within the application specified limit.
    
    Fixes: dfa2f0483360 ("tcp: get rid of sysctl_tcp_adv_win_scale")
    Signed-off-by: Sean Tranchetti <[email protected]>
    Signed-off-by: Subash Abhinov Kasiviswanathan <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tcp: annotate data-races around tp->window_clamp [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Thu Apr 4 11:42:31 2024 +0000

    tcp: annotate data-races around tp->window_clamp
    
    [ Upstream commit f410cbea9f3d2675b4c8e52af1d1985b11b387d1 ]
    
    tp->window_clamp can be read locklessly, add READ_ONCE()
    and WRITE_ONCE() annotations.
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Jason Xing <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 05f76b2d634e ("tcp: Adjust clamping window for applications specifying SO_RCVBUF")
    Signed-off-by: Sasha Levin <[email protected]>

 
thermal/drivers/broadcom: Fix race between removal and clock disable [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Tue Jul 9 14:59:31 2024 +0200

    thermal/drivers/broadcom: Fix race between removal and clock disable
    
    [ Upstream commit e90c369cc2ffcf7145a46448de101f715a1f5584 ]
    
    During the probe, driver enables clocks necessary to access registers
    (in get_temp()) and then registers thermal zone with managed-resources
    (devm) interface.  Removal of device is not done in reversed order,
    because:
    1. Clock will be disabled in driver remove() callback - thermal zone is
       still registered and accessible to users,
    2. devm interface will unregister thermal zone.
    
    This leaves short window between (1) and (2) for accessing the
    get_temp() callback with disabled clock.
    
    Fix this by enabling clock also via devm-interface, so entire cleanup
    path will be in proper, reversed order.
    
    Fixes: 8454c8c09c77 ("thermal/drivers/bcm2835: Remove buggy call to thermal_of_zone_unregister")
    Cc: [email protected]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Daniel Lezcano <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
thermal: bcm2835: Convert to platform remove callback returning void [+ + +]
Author: Uwe Kleine-König <[email protected]>
Date:   Wed Sep 27 21:37:08 2023 +0200

    thermal: bcm2835: Convert to platform remove callback returning void
    
    [ Upstream commit f29ecd3748a28d0b52512afc81b3c13fd4a00c9b ]
    
    The .remove() callback for a platform driver returns an int which makes
    many driver authors wrongly assume it's possible to do error handling by
    returning an error code. However the value returned is ignored (apart
    from emitting a warning) and this typically results in resource leaks.
    
    To improve here there is a quest to make the remove callback return
    void. In the first step of this quest all drivers are converted to
    .remove_new(), which already returns void. Eventually after all drivers
    are converted, .remove_new() will be renamed to .remove().
    
    Trivially convert this driver from always returning zero in the remove
    callback to the void returning variant.
    
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Acked-by: Daniel Lezcano <[email protected]>
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Stable-dep-of: e90c369cc2ff ("thermal/drivers/broadcom: Fix race between removal and clock disable")
    Signed-off-by: Sasha Levin <[email protected]>

 
video: Add helpers for decoding screen_info [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Mon Feb 12 10:06:09 2024 +0100

    video: Add helpers for decoding screen_info
    
    [ Upstream commit 75fa9b7e375e35739663cde0252d31e586c6314a ]
    
    The plain values as stored in struct screen_info need to be decoded
    before being used. Add helpers that decode the type of video output
    and the framebuffer I/O aperture.
    
    Old or non-x86 systems may not set the type of video directly, but
    only indicate the presence by storing 0x01 in orig_video_isVGA. The
    decoding logic in screen_info_video_type() takes this into account.
    It then follows similar code in vgacon's vgacon_startup() to detect
    the video type from the given values.
    
    A call to screen_info_resources() returns all known resources of the
    given screen_info. The resources' values have been taken from existing
    code in vgacon and vga16fb. These drivers can later be converted to
    use the new interfaces.
    
    v2:
            * return ssize_t from screen_info_resources()
            * don't call __screen_info_has_lfb() unnecessarily
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Reviewed-by: Javier Martinez Canillas <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Stable-dep-of: c2bc958b2b03 ("fbdev: vesafb: Detect VGA compatibility from screen info's VESA attributes")
    Signed-off-by: Sasha Levin <[email protected]>

video: Provide screen_info_get_pci_dev() to find screen_info's PCI device [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Mon Feb 12 10:06:10 2024 +0100

    video: Provide screen_info_get_pci_dev() to find screen_info's PCI device
    
    [ Upstream commit 036105e3a776b6fc2fe0d262896a23ff2cc2e6b1 ]
    
    Add screen_info_get_pci_dev() to find the PCI device of an instance
    of screen_info. Does nothing on systems without PCI bus.
    
    v3:
            * search PCI device with pci_get_base_class() (Sui)
    v2:
            * remove ret from screen_info_pci_dev() (Javier)
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Reviewed-by: Javier Martinez Canillas <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Stable-dep-of: c2bc958b2b03 ("fbdev: vesafb: Detect VGA compatibility from screen info's VESA attributes")
    Signed-off-by: Sasha Levin <[email protected]>

 
wifi: cfg80211: fix reporting failed MLO links status with cfg80211_connect_done [+ + +]
Author: Veerendranath Jakkam <[email protected]>
Date:   Wed Jul 24 18:23:27 2024 +0530

    wifi: cfg80211: fix reporting failed MLO links status with cfg80211_connect_done
    
    [ Upstream commit baeaabf970b9a90999f62ae27edf63f6cb86c023 ]
    
    Individual MLO links connection status is not copied to
    EVENT_CONNECT_RESULT data while processing the connect response
    information in cfg80211_connect_done(). Due to this failed links
    are wrongly indicated with success status in EVENT_CONNECT_RESULT.
    
    To fix this, copy the individual MLO links status to the
    EVENT_CONNECT_RESULT data.
    
    Fixes: 53ad07e9823b ("wifi: cfg80211: support reporting failed links")
    Signed-off-by: Veerendranath Jakkam <[email protected]>
    Reviewed-by: Carlos Llamas <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [commit message editorial changes]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>