Changelog in Linux kernel 6.11.8

 
ALSA: firewire-lib: fix return value on fail in amdtp_tscm_init() [+ + +]
Author: Murad Masimov <m.masimov@maxima.ru>
Date:   Fri Nov 1 21:55:13 2024 +0300

    ALSA: firewire-lib: fix return value on fail in amdtp_tscm_init()
    
    [ Upstream commit 8abbf1f01d6a2ef9f911f793e30f7382154b5a3a ]
    
    If amdtp_stream_init() fails in amdtp_tscm_init(), the latter returns zero,
    though it's supposed to return error code, which is checked inside
    init_stream() in file tascam-stream.c.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 47faeea25ef3 ("ALSA: firewire-tascam: add data block processing layer")
    Signed-off-by: Murad Masimov <m.masimov@maxima.ru>
    Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://patch.msgid.link/20241101185517.1819-1-m.masimov@maxima.ru
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: usb-audio: Add quirk for HP 320 FHD Webcam [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 5 13:02:17 2024 +0100

    ALSA: usb-audio: Add quirk for HP 320 FHD Webcam
    
    commit dabc44c28f118910dea96244d903f0c270225669 upstream.
    
    HP 320 FHD Webcam (03f0:654a) seems to have flaky firmware like other
    webcam devices that don't like the frequency inquiries.  Also, Mic
    Capture Volume has an invalid resolution, hence fix it to be 16 (as a
    blind shot).
    
    Link: https://bugzilla.suse.com/show_bug.cgi?id=1232768
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20241105120220.5740-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
arm64/sve: Discard stale CPU state when handling SVE traps [+ + +]
Author: Mark Brown <broonie@kernel.org>
Date:   Wed Oct 30 20:23:50 2024 +0000

    arm64/sve: Discard stale CPU state when handling SVE traps
    
    commit 751ecf6afd6568adc98f2a6052315552c0483d18 upstream.
    
    The logic for handling SVE traps manipulates saved FPSIMD/SVE state
    incorrectly, and a race with preemption can result in a task having
    TIF_SVE set and TIF_FOREIGN_FPSTATE clear even though the live CPU state
    is stale (e.g. with SVE traps enabled). This has been observed to result
    in warnings from do_sve_acc() where SVE traps are not expected while
    TIF_SVE is set:
    
    |         if (test_and_set_thread_flag(TIF_SVE))
    |                 WARN_ON(1); /* SVE access shouldn't have trapped */
    
    Warnings of this form have been reported intermittently, e.g.
    
      https://lore.kernel.org/linux-arm-kernel/CA+G9fYtEGe_DhY2Ms7+L7NKsLYUomGsgqpdBj+QwDLeSg=JhGg@mail.gmail.com/
      https://lore.kernel.org/linux-arm-kernel/000000000000511e9a060ce5a45c@google.com/
    
    The race can occur when the SVE trap handler is preempted before and
    after manipulating the saved FPSIMD/SVE state, starting and ending on
    the same CPU, e.g.
    
    | void do_sve_acc(unsigned long esr, struct pt_regs *regs)
    | {
    |         // Trap on CPU 0 with TIF_SVE clear, SVE traps enabled
    |         // task->fpsimd_cpu is 0.
    |         // per_cpu_ptr(&fpsimd_last_state, 0) is task.
    |
    |         ...
    |
    |         // Preempted; migrated from CPU 0 to CPU 1.
    |         // TIF_FOREIGN_FPSTATE is set.
    |
    |         get_cpu_fpsimd_context();
    |
    |         if (test_and_set_thread_flag(TIF_SVE))
    |                 WARN_ON(1); /* SVE access shouldn't have trapped */
    |
    |         sve_init_regs() {
    |                 if (!test_thread_flag(TIF_FOREIGN_FPSTATE)) {
    |                         ...
    |                 } else {
    |                         fpsimd_to_sve(current);
    |                         current->thread.fp_type = FP_STATE_SVE;
    |                 }
    |         }
    |
    |         put_cpu_fpsimd_context();
    |
    |         // Preempted; migrated from CPU 1 to CPU 0.
    |         // task->fpsimd_cpu is still 0
    |         // If per_cpu_ptr(&fpsimd_last_state, 0) is still task then:
    |         // - Stale HW state is reused (with SVE traps enabled)
    |         // - TIF_FOREIGN_FPSTATE is cleared
    |         // - A return to userspace skips HW state restore
    | }
    
    Fix the case where the state is not live and TIF_FOREIGN_FPSTATE is set
    by calling fpsimd_flush_task_state() to detach from the saved CPU
    state. This ensures that a subsequent context switch will not reuse the
    stale CPU state, and will instead set TIF_FOREIGN_FPSTATE, forcing the
    new state to be reloaded from memory prior to a return to userspace.
    
    Fixes: cccb78ce89c4 ("arm64/sve: Rework SVE access trap to convert state in registers")
    Reported-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Reviewed-by: Mark Rutland <mark.rutland@arm.com>
    Link: https://lore.kernel.org/r/20241030-arm64-fpsimd-foreign-flush-v1-1-bd7bd66905a2@kernel.org
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
arm64: dts: imx8-ss-vpu: Fix imx8qm VPU IRQs [+ + +]
Author: Alexander Stein <alexander.stein@ew.tq-group.com>
Date:   Wed Sep 4 13:41:03 2024 +0200

    arm64: dts: imx8-ss-vpu: Fix imx8qm VPU IRQs
    
    [ Upstream commit eed2d8e8d0051a6551e4dffba99e16eb88c676ac ]
    
    imx8-ss-vpu only contained imx8qxp IRQ numbers, only mu2_m0 uses the
    correct imx8qm IRQ number, as imx8qxp lacks this MU.
    Fix this by providing imx8qm IRQ numbers in the main imx8-ss-vpu.dtsi
    and override the IRQ numbers in SoC-specific imx8qxp-ss-vpu.dtsi, similar
    to reg property for VPU core devices.
    
    Fixes: 0d9968d98467d ("arm64: dts: freescale: imx8q: add imx vpu codec entries")
    Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: imx8mp-phyboard-pollux: Set Video PLL1 frequency to 506.8 MHz [+ + +]
Author: Marek Vasut <marex@denx.de>
Date:   Thu Oct 17 05:11:20 2024 +0200

    arm64: dts: imx8mp-phyboard-pollux: Set Video PLL1 frequency to 506.8 MHz
    
    [ Upstream commit 4fbb73416b10778adfd2c1319e9c5829780d8535 ]
    
    The LVDS panel on this device uses 72.4 MHz pixel clock, set IMX8MP_VIDEO_PLL1
    to 72.4 * 7 = 506.8 MHz so the LDB serializer and LCDIFv3 scanout engine can
    reach accurate pixel clock of exactly 72.4 MHz.
    
    Without this patch, the Video PLL1 frequency is the default set in imx8mp.dtsi
    which is 1039.5 MHz, which divides down to inaccurate pixel clock of 74.25 MHz
    which works for this particular panel by sheer chance.
    
    Stop taking that chance and set correct accurate pixel clock frequency instead.
    
    Fixes: 326d86e197fc ("arm64: dts: imx8mp-phyboard-pollux-rdk: add etml panel support")
    Reported-by: Isaac Scott <isaac.scott@ideasonboard.com>
    Signed-off-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Yannic Moog <y.moog@phytec.de>
    Tested-by: Yannic Moog <y.moog@phytec.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: imx8mp: correct sdhc ipg clk [+ + +]
Author: Peng Fan <peng.fan@nxp.com>
Date:   Sat Oct 12 10:52:21 2024 +0800

    arm64: dts: imx8mp: correct sdhc ipg clk
    
    [ Upstream commit eab6ba2aa3bbaf598a66e31f709bf84b7bb7dc8a ]
    
    The ipg clk for sdhc sources from IPG_CLK_ROOT per i.MX 8M Plus
    Applications Processor Reference Manual, Table 5-2. System Clocks.
    
    Fixes: 6d9b8d20431f ("arm64: dts: freescale: Add i.MX8MP dtsi support")
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sm8450 fix PIPE clock specification for pcie1 [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Sun Oct 6 19:47:56 2024 +0300

    arm64: dts: qcom: sm8450 fix PIPE clock specification for pcie1
    
    [ Upstream commit 5d3d966400d0a094359009147d742b3926a2ea53 ]
    
    For historical reasons on SM8450 the second PCIe host (pcie1) also keeps
    a reference to the PIPE clock coming from the PHY. Commit e76862840660
    ("arm64: dts: qcom: sm8450: correct pcie1 phy clocks inputs to gcc") has
    updated the PHY to use #clock-cells = <1>, making just <&pcie1_phy>
    clock specification invalid. Update corresponding clock entry in the
    PCIe1 host node.
    
     /soc@0/pcie@1c08000: Failed to get clk index: 2 ret: -22
     qcom-pcie 1c08000.pcie: Failed to get clocks
     qcom-pcie 1c08000.pcie: probe with driver qcom-pcie failed with error -22
    
    Fixes: e76862840660 ("arm64: dts: qcom: sm8450: correct pcie1 phy clocks inputs to gcc")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20241006-fix-sm8450-pcie1-v1-1-4f227c9082ed@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Add DTS for FriendlyARM NanoPi R2S Plus [+ + +]
Author: Sergey Bostandzhyan <jin@mediatomb.cc>
Date:   Wed Aug 14 17:00:46 2024 +0000

    arm64: dts: rockchip: Add DTS for FriendlyARM NanoPi R2S Plus
    
    [ Upstream commit b8c02878292200ebb5b4a8cfc9dbf227327908bd ]
    
    The R2S Plus is basically an R2S with additional eMMC.
    
    The eMMC configuration for the DTS has been extracted and copied from
    rk3328-nanopi-r2.dts, v2017.09 branch from the friendlyarm/uboot-rockchip
    repository.
    
    Signed-off-by: Sergey Bostandzhyan <jin@mediatomb.cc>
    Link: https://lore.kernel.org/r/20240814170048.23816-2-jin@mediatomb.cc
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Stable-dep-of: 1b670212ee3d ("arm64: dts: rockchip: Remove undocumented supports-emmc property")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Correct GPIO polarity on brcm BT nodes [+ + +]
Author: Diederik de Haas <didi.debian@cknow.org>
Date:   Fri Oct 18 16:45:50 2024 +0200

    arm64: dts: rockchip: Correct GPIO polarity on brcm BT nodes
    
    [ Upstream commit 08846522d9a7bccf18d4f97c3f39d03c7a193970 ]
    
    Paragraph "3.4 Power up Timing Sequence" of the AzureWave-CM256SM
    datasheet mentions the following about the BT_REG_ON pin, which is
    connected to GPIO0_C4_d:
    
      When this pin is low and WL_REG_ON is high,
      the BT section is in reset.
    
    Therefor set that pin to GPIO_ACTIVE_HIGH so that it can be pulled low
    for a reset.
    If set to GPIO_ACTIVE_LOW, the following errors are observed:
    
      Bluetooth: hci0: command 0x0c03 tx timeout
      Bluetooth: hci0: BCM: Reset failed (-110)
    
    So fix the GPIO polarity by setting it to ACTIVE_HIGH.
    This also matches what other devices with the same BT device have.
    
    Fixes: 2b6a3f857550 ("arm64: dts: rockchip: Fix reset-gpios property on brcm BT nodes")
    Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
    Link: https://lore.kernel.org/r/20241018145053.11928-2-didi.debian@cknow.org
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Designate Turing RK1's system power controller [+ + +]
Author: Sam Edwards <cfsworks@gmail.com>
Date:   Thu Sep 12 11:01:48 2024 -0700

    arm64: dts: rockchip: Designate Turing RK1's system power controller
    
    [ Upstream commit 875ea82c75f56697fa500f30fabaa49f82f9b229 ]
    
    Currently, the Turing RK1 board reboots when told to power off.
    
    Resolve this by designating the RK806 as the system power controller, so
    that the relevant driver can handle system shutdown requests.
    
    Fixes: 2806a69f3fef ("arm64: dts: rockchip: Add Turing RK1 SoM support")
    Signed-off-by: Sam Edwards <CFSworks@gmail.com>
    Link: https://lore.kernel.org/r/20240912180148.205957-1-CFSworks@gmail.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Drop regulator-init-microvolt from two boards [+ + +]
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Oct 8 22:39:28 2024 +0200

    arm64: dts: rockchip: Drop regulator-init-microvolt from two boards
    
    [ Upstream commit 98c3f4a2d61a29a53244ce45e50655140bd47afb ]
    
    rk3568-roc-pc and rk3588-toybrick-x0 re-introduced this property despite
    previous patches removing older instances already.
    
    regulator-init-microvolt is not part of any regulator binding and is
    only used in the Rockchip vendor kernel. So drop it.
    
    It is used by u-boot in some places to setup initial regulator-state,
    but that should happen in the existing -u-boot devicetree additions.
    
    Fixes: 007b4bb47f44 ("arm64: dts: rockchip: add dts for Firefly Station P2 aka rk3568-roc-pc")
    Cc: Furkan Kardame <f.kardame@manjaro.org>
    Fixes: 8ffe365f8dc7 ("arm64: dts: rockchip: Add devicetree support for TB-RK3588X board")
    Cc: Elon Zhang <zhangzj@rock-chips.com>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20241008203940.2573684-3-heiko@sntech.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Fix bluetooth properties on rk3566 box demo [+ + +]
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Oct 8 22:39:29 2024 +0200

    arm64: dts: rockchip: Fix bluetooth properties on rk3566 box demo
    
    [ Upstream commit 2fa98dcc8d3ea2ebbd9e6be778f8bb19231c28be ]
    
    The expected clock-name is different, and extclk also is deprecated
    in favor of txco for clocks that are not crystals.
    
    The wakeup gpio properties are named differently too, when changing
    from vendor-tree to mainline. So fix those to match the binding.
    
    Fixes: 2e0537b16b25 ("arm64: dts: rockchip: Add dts for rockchip rk3566 box demo board")
    Cc: Andy Yan <andyshrk@163.com>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20241008203940.2573684-4-heiko@sntech.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Fix bluetooth properties on Rock960 boards [+ + +]
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Oct 8 22:39:30 2024 +0200

    arm64: dts: rockchip: Fix bluetooth properties on Rock960 boards
    
    [ Upstream commit ea74528aaea5a1dfc8e3de09ef2af37530eca526 ]
    
    The expected clock-name is different, and extclk also is deprecated
    in favor of txco for clocks that are not crystals.
    
    So fix it to match the binding.
    
    Fixes: c72235c288c8 ("arm64: dts: rockchip: Add on-board WiFi/BT support for Rock960 boards")
    Cc: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20241008203940.2573684-5-heiko@sntech.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: fix i2c2 pinctrl-names property on anbernic-rg353p/v [+ + +]
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Oct 8 22:39:27 2024 +0200

    arm64: dts: rockchip: fix i2c2 pinctrl-names property on anbernic-rg353p/v
    
    [ Upstream commit f94b934336e30cebae75d4fbe04a2109a3c8fdec ]
    
    We want to control pins, not beer mugs, so rename pintctrl-names to the
    expected pinctrl-names.
    
    This was not affecting functionality, because the i2c2 controller
    already had a set of pinctrl properties.
    
    Fixes: 523adb553573 ("arm64: dts: rockchip: add Anbernic RG353P and RG503")
    Fixes: 1e141cf12726 ("arm64: dts: rockchip: add Anbernic RG353V and RG353VS")
    Cc: Chris Morgan <macromorgan@hotmail.com>
    Acked-by: Chris Morgan <macromorgan@hotmail.com>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20241008203940.2573684-2-heiko@sntech.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Fix LED triggers on rk3308-roc-cc [+ + +]
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Oct 8 22:39:33 2024 +0200

    arm64: dts: rockchip: Fix LED triggers on rk3308-roc-cc
    
    [ Upstream commit 3a53a7187f41ec3db12cf4c2cb0db4ba87c2f3a1 ]
    
    There are two LEDs on the board, power and user events.
    Currently both are assigned undocumented IR(-remote)
    triggers that are probably only part of the vendor-kernel.
    
    To make dtbs check happier, assign the power-led to a generic
    default-on trigger and the user led to the documented rc-feedback
    trigger that should mostly match its current usage.
    
    Fixes: 4403e1237be3 ("arm64: dts: rockchip: Add devicetree for board roc-rk3308-cc")
    Cc: Andy Yan <andy.yan@rock-chips.com>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20241008203940.2573684-8-heiko@sntech.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Fix reset-gpios property on brcm BT nodes [+ + +]
Author: Diederik de Haas <didi.debian@cknow.org>
Date:   Tue Oct 8 13:15:39 2024 +0200

    arm64: dts: rockchip: Fix reset-gpios property on brcm BT nodes
    
    [ Upstream commit 2b6a3f857550e52b1cd4872ebb13cb3e3cf12f5f ]
    
    For most compatibles, the "brcm,bluetooth.yaml" binding doesn't allow
    the 'reset-gpios' property, but there is a 'shutdown-gpios' property.
    
    Page 12 of the AzureWave-CM256SM datasheet (v1.9) has the following wrt
    pin 34 'BT_REG_ON' (connected to GPIO0_C4_d on the PineNote):
    
      Used by PMU to power up or power down the internal regulators used
      by the Bluetooth section. Also, when deasserted, this pin holds the
      Bluetooth section in reset. This pin has an internal 200k ohm pull
      down resistor that is enabled by default.
    
    So it is safe to replace 'reset-gpios' with 'shutdown-gpios'.
    
    Fixes: d449121e5e8a ("arm64: dts: rockchip: Add Pine64 PineNote board")
    Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
    Link: https://lore.kernel.org/r/20241008113344.23957-5-didi.debian@cknow.org
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Fix rt5651 compatible value on rk3399-eaidk-610 [+ + +]
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Thu Sep 26 15:48:40 2024 +0200

    arm64: dts: rockchip: Fix rt5651 compatible value on rk3399-eaidk-610
    
    [ Upstream commit 2f39bba3b4f037d6c3c9174eed5befcef1c79abb ]
    
    There are no DT bindings and driver support for a "rockchip,rt5651"
    codec.  Replace "rockchip,rt5651" by "realtek,rt5651", which matches the
    "simple-audio-card,name" property in the "rt5651-sound" node.
    
    Fixes: 904f983256fdd24b ("arm64: dts: rockchip: Add dts for a rk3399 based board EAIDK-610")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/a9877b8b1bd0de279d2ec8294d5be14587203a82.1727358193.git.geert+renesas@glider.be
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
arm64: dts: rockchip: Fix rt5651 compatible value on rk3399-sapphire-excavator [+ + +]
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Thu Sep 26 15:48:41 2024 +0200

    arm64: dts: rockchip: Fix rt5651 compatible value on rk3399-sapphire-excavator
    
    [ Upstream commit 577b5761679da90e691acc939ebbe7879fff5f31 ]
    
    There are no DT bindings and driver support for a "rockchip,rt5651"
    codec.  Replace "rockchip,rt5651" by "realtek,rt5651", which matches the
    "simple-audio-card,name" property in the "rt5651-sound" node.
    
    Fixes: 0a3c78e251b3a266 ("arm64: dts: rockchip: Add support for rk3399 excavator main board")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/abc6c89811b3911785601d6d590483eacb145102.1727358193.git.geert+renesas@glider.be
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Fix wakeup prop names on PineNote BT node [+ + +]
Author: Diederik de Haas <didi.debian@cknow.org>
Date:   Tue Oct 8 13:15:38 2024 +0200

    arm64: dts: rockchip: Fix wakeup prop names on PineNote BT node
    
    [ Upstream commit 87299d6ee95a37d2d576dd8077ea6860f77ad8e2 ]
    
    The "brcm,bluetooth.yaml" binding has 'device-wakeup-gpios' and
    'host-wakeup-gpios' property names, not '*-wake-gpios'.
    Fix the incorrect property names.
    
    Note that the "realtek,bluetooth.yaml" binding does use the
    '*-wake-gpios' property names.
    
    Fixes: d449121e5e8a ("arm64: dts: rockchip: Add Pine64 PineNote board")
    Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
    Link: https://lore.kernel.org/r/20241008113344.23957-4-didi.debian@cknow.org
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Move L3 cache outside CPUs in RK3588(S) SoC dtsi [+ + +]
Author: Dragan Simic <dsimic@manjaro.org>
Date:   Thu Sep 26 12:29:13 2024 +0200

    arm64: dts: rockchip: Move L3 cache outside CPUs in RK3588(S) SoC dtsi
    
    [ Upstream commit df5f6f2f62b9b50cef78f32909485b00fc7cf7f2 ]
    
    Move the "l3_cache" node outside the "cpus" node in the base dtsi file for
    Rockchip RK3588(S) SoCs.  The A55 and A76 CPU cores in these SoCs belong to
    the ARM DynamIQ IP core lineup, which places the L3 cache outside the CPUs
    and into the DynamIQ Shared Unit (DSU). [1]  Thus, moving the L3 cache DT
    node one level higher in the DT improves the way the physical topology of
    the RK3588(S) SoCs is represented in the SoC dtsi files.
    
    While there, add a comment that explains it briefly, to save curious readers
    from the need to reference the repository log for a clarification.
    
    [1] ARM DynamIQ Shared Unit revision r4p0 TRM, version 0400-02
    
    Fixes: c9211fa2602b ("arm64: dts: rockchip: Add base DT for rk3588 SoC")
    Helped-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Dragan Simic <dsimic@manjaro.org>
    Link: https://lore.kernel.org/r/84264d0713fb51ae2b9b731e28fc14681beea853.1727345965.git.dsimic@manjaro.org
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Remove #cooling-cells from fan on Theobroma lion [+ + +]
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Oct 8 22:39:32 2024 +0200

    arm64: dts: rockchip: Remove #cooling-cells from fan on Theobroma lion
    
    [ Upstream commit 5ed96580568c4f79a0aff11a67f10b3e9229ba86 ]
    
    All Theobroma boards use a ti,amc6821 as fan controller.
    It normally runs in an automatically controlled way and while it may be
    possible to use it as part of a dt-based thermal management, this is
    not yet specified in the binding, nor implemented in any kernel.
    
    Newer boards already don't contain that #cooling-cells property, but
    older ones do. So remove them for now, they can be re-added if thermal
    integration gets implemented in the future.
    
    There are two further occurences in v6.12-rc in px30-ringneck and
    rk3399-puma, but those already get removed by the i2c-mux conversion
    scheduled for 6.13 . As the undocumented property is in the kernel so
    long, I opted for not causing extra merge conflicts between 6.12 and 6.13
    
    Fixes: d99a02bcfa81 ("arm64: dts: rockchip: add RK3368-uQ7 (Lion) SoM")
    Cc: Quentin Schulz <quentin.schulz@theobroma-systems.com>
    Cc: Klaus Goger <klaus.goger@theobroma-systems.com>
    Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20241008203940.2573684-7-heiko@sntech.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Remove hdmi's 2nd interrupt on rk3328 [+ + +]
Author: Diederik de Haas <didi.debian@cknow.org>
Date:   Tue Oct 8 13:15:37 2024 +0200

    arm64: dts: rockchip: Remove hdmi's 2nd interrupt on rk3328
    
    [ Upstream commit de50a7e3681771c6b990238af82bf1dea9b11b21 ]
    
    The "synopsys,dw-hdmi.yaml" binding specifies that the interrupts
    property of the hdmi node has 'maxItems: 1', so the hdmi node in
    rk3328.dtsi having 2 is incorrect.
    
    Paragraph 1.3 ("System Interrupt connection") of the RK3328 TRM v1.1
    page 16 and 17 define the following hdmi related interrupts:
    -  67 hdmi_intr
    - 103 hdmi_intr_wakeup
    
    The difference of 32 is due to a different base used in the TRM.
    
    The RK3399 (which uses the same binding) has '23: hdmi_irq' and
    '24: hdmi_wakeup_irq' according to its TRM (page 19).
    The RK3568 (also same binding) has '76: hdmi_wakeup' and '77: hdmi'
    according to page 17 of its TRM.
    In both cases the non-wakeup IRQ was used, so use that too for rk3328.
    
    Helped-by: Heiko Stuebner <heiko@sntech.de>
    Fixes: 725e351c265a ("arm64: dts: rockchip: add rk3328 display nodes")
    Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
    Link: https://lore.kernel.org/r/20241008113344.23957-3-didi.debian@cknow.org
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: remove num-slots property from rk3328-nanopi-r2s-plus [+ + +]
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Oct 8 22:39:34 2024 +0200

    arm64: dts: rockchip: remove num-slots property from rk3328-nanopi-r2s-plus
    
    [ Upstream commit b1f8d3b81d9289e171141a7120093ddefe7bd2f4 ]
    
    num-slots was not part of the dw-mmc binding and the last slipage of
    one of them seeping in from the vendor kernel was removed way back in
    2017. Somehow the nanopi-r2s-plus managed to smuggle another on in the
    kernel, so remove that as well.
    
    Fixes: b8c028782922 ("arm64: dts: rockchip: Add DTS for FriendlyARM NanoPi R2S Plus")
    Cc: Sergey Bostandzhyan <jin@mediatomb.cc>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20241008203940.2573684-9-heiko@sntech.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: remove orphaned pinctrl-names from pinephone pro [+ + +]
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Oct 8 22:39:36 2024 +0200

    arm64: dts: rockchip: remove orphaned pinctrl-names from pinephone pro
    
    [ Upstream commit 3577d5e2bc1ff78808cbe2f233ae1837ee2ce84c ]
    
    The patch adding display support for the pinephone pro introduced two
    regulators that contain pinctrl-names props but no pinctrl-assignments.
    
    Looks like someone forgot the pinctrl settings, so remove the orphans
    for now, until that changes.
    
    Fixes: 3e987e1f22b9 ("arm64: dts: rockchip: Add internal display support to rk3399-pinephone-pro")
    Cc: Martijn Braam <martijn@brixit.nl>
    Cc: Javier Martinez Canillas <javierm@redhat.com>
    Cc: Ondrej Jirman <megi@xff.cz>
    Reviewed-by: Ondrej Jirman <megi@xff.cz>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20241008203940.2573684-11-heiko@sntech.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Remove undocumented supports-emmc property [+ + +]
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Oct 8 22:39:31 2024 +0200

    arm64: dts: rockchip: Remove undocumented supports-emmc property
    
    [ Upstream commit 1b670212ee3dd9d14c6d39a042dfe4ae79b49b4e ]
    
    supports-emmc is an undocumented property that slipped into the mainline
    kernel devicetree for some boards. Drop it.
    
    Fixes: c484cf93f61b ("arm64: dts: rockchip: add PX30-µQ7 (Ringneck) SoM with Haikou baseboard")
    Cc: Quentin Schulz <quentin.schulz@theobroma-systems.com>
    Fixes: b8c028782922 ("arm64: dts: rockchip: Add DTS for FriendlyARM NanoPi R2S Plus")
    Cc: Sergey Bostandzhyan <jin@mediatomb.cc>
    Fixes: 8d94da58de53 ("arm64: dts: rockchip: Add EmbedFire LubanCat 1")
    Cc: Wenhao Cui <lasstp5011@gmail.com>
    Fixes: cdf46cdbabfc ("arm64: dts: rockchip: Add dts for EmbedFire rk3568 LubanCat 2")
    Cc: Andy Yan <andyshrk@163.com>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20241008203940.2573684-6-heiko@sntech.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Start cooling maps numbering from zero on ROCK 5B [+ + +]
Author: Dragan Simic <dsimic@manjaro.org>
Date:   Sat Sep 21 23:39:05 2024 +0200

    arm64: dts: rockchip: Start cooling maps numbering from zero on ROCK 5B
    
    [ Upstream commit 6be82067254cba14f7b9ca00613bdb7caac9501f ]
    
    The package cooling maps for the Radxa ROCK 5B were mistakenly named map1
    and map2.  Their numbering should start from zero instead, because there are
    no package cooling maps defined in the parent RK3588 SoC dtsi file, so let's
    rename these cooling maps to map0 and map1.
    
    Fixes: 4a152231b050 ("arm64: dts: rockchip: enable automatic fan control on Rock 5B")
    Signed-off-by: Dragan Simic <dsimic@manjaro.org>
    Link: https://lore.kernel.org/r/335ecd5841ab55f333e17bb391d0e1264fac257b.1726954592.git.dsimic@manjaro.org
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: Kconfig: Make SME depend on BROKEN for now [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Wed Nov 6 16:42:20 2024 +0000

    arm64: Kconfig: Make SME depend on BROKEN for now
    
    commit 81235ae0c846e1fb46a2c6fe9283fe2b2b24f7dc upstream.
    
    Although support for SME was merged in v5.19, we've since uncovered a
    number of issues with the implementation, including issues which might
    corrupt the FPSIMD/SVE/SME state of arbitrary tasks. While there are
    patches to address some of these issues, ongoing review has highlighted
    additional functional problems, and more time is necessary to analyse
    and fix these.
    
    For now, mark SME as BROKEN in the hope that we can fix things properly
    in the near future. As SME is an OPTIONAL part of ARMv9.2+, and there is
    very little extant hardware, this should not adversely affect the vast
    majority of users.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Will Deacon <will@kernel.org>
    Cc: stable@vger.kernel.org # 5.19
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Link: https://lore.kernel.org/r/20241106164220.2789279-1-mark.rutland@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

arm64: smccc: Remove broken support for SMCCCv1.3 SVE discard hint [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Wed Nov 6 16:04:48 2024 +0000

    arm64: smccc: Remove broken support for SMCCCv1.3 SVE discard hint
    
    commit 8c462d56487e3abdbf8a61cedfe7c795a54f4a78 upstream.
    
    SMCCCv1.3 added a hint bit which callers can set in an SMCCC function ID
    (AKA "FID") to indicate that it is acceptable for the SMCCC
    implementation to discard SVE and/or SME state over a specific SMCCC
    call. The kernel support for using this hint is broken and SMCCC calls
    may clobber the SVE and/or SME state of arbitrary tasks, though FPSIMD
    state is unaffected.
    
    The kernel support is intended to use the hint when there is no SVE or
    SME state to save, and to do this it checks whether TIF_FOREIGN_FPSTATE
    is set or TIF_SVE is clear in assembly code:
    
    |        ldr     <flags>, [<current_task>, #TSK_TI_FLAGS]
    |        tbnz    <flags>, #TIF_FOREIGN_FPSTATE, 1f   // Any live FP state?
    |        tbnz    <flags>, #TIF_SVE, 2f               // Does that state include SVE?
    |
    | 1:     orr     <fid>, <fid>, ARM_SMCCC_1_3_SVE_HINT
    | 2:
    |        << SMCCC call using FID >>
    
    This is not safe as-is:
    
    (1) SMCCC calls can be made in a preemptible context and preemption can
        result in TIF_FOREIGN_FPSTATE being set or cleared at arbitrary
        points in time. Thus checking for TIF_FOREIGN_FPSTATE provides no
        guarantee.
    
    (2) TIF_FOREIGN_FPSTATE only indicates that the live FP/SVE/SME state in
        the CPU does not belong to the current task, and does not indicate
        that clobbering this state is acceptable.
    
        When the live CPU state is clobbered it is necessary to update
        fpsimd_last_state.st to ensure that a subsequent context switch will
        reload FP/SVE/SME state from memory rather than consuming the
        clobbered state. This and the SMCCC call itself must happen in a
        critical section with preemption disabled to avoid races.
    
    (3) Live SVE/SME state can exist with TIF_SVE clear (e.g. with only
        TIF_SME set), and checking TIF_SVE alone is insufficient.
    
    Remove the broken support for the SMCCCv1.3 SVE saving hint. This is
    effectively a revert of commits:
    
    * cfa7ff959a78 ("arm64: smccc: Support SMCCC v1.3 SVE register saving hint")
    * a7c3acca5380 ("arm64: smccc: Save lr before calling __arm_smccc_sve_check()")
    
    ... leaving behind the ARM_SMCCC_VERSION_1_3 and ARM_SMCCC_1_3_SVE_HINT
    definitions, since these are simply definitions from the SMCCC
    specification, and the latter is used in KVM via ARM_SMCCC_CALL_HINTS.
    
    If we want to bring this back in future, we'll probably want to handle
    this logic in C where we can use all the usual FPSIMD/SVE/SME helper
    functions, and that'll likely require some rework of the SMCCC code
    and/or its callers.
    
    Fixes: cfa7ff959a78 ("arm64: smccc: Support SMCCC v1.3 SVE register saving hint")
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Will Deacon <will@kernel.org>
    Cc: stable@vger.kernel.org
    Reviewed-by: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20241106160448.2712997-1-mark.rutland@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ARM: dts: rockchip: drop grf reference from rk3036 hdmi [+ + +]
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Oct 8 22:39:38 2024 +0200

    ARM: dts: rockchip: drop grf reference from rk3036 hdmi
    
    [ Upstream commit 1580ccb6ed9dc76b8ff3e2d8912e8215c8b0fa6d ]
    
    Neither the binding nor the driver implementation specify/use the grf
    reference provided in the rk3036. And neither does the newer rk3128
    user of the hdmi controller. So drop the rockchip,grf property.
    
    Fixes: b7217cf19c63 ("ARM: dts: rockchip: add hdmi device node for rk3036")
    Cc: Caesar Wang <wxt@rock-chips.com>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20241008203940.2573684-13-heiko@sntech.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: rockchip: fix rk3036 acodec node [+ + +]
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Oct 8 22:39:37 2024 +0200

    ARM: dts: rockchip: fix rk3036 acodec node
    
    [ Upstream commit c7206853cd7d31c52575fb1dc7616b4398f3bc8f ]
    
    The acodec node is not conformant to the binding.
    
    Set the correct nodename, use the correct compatible, add the needed
    #sound-dai-cells and sort the rockchip,grf below clocks properties
    as expected.
    
    Fixes: faea098e1808 ("ARM: dts: rockchip: add core rk3036 dtsi")
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20241008203940.2573684-12-heiko@sntech.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: rockchip: Fix the realtek audio codec on rk3036-kylin [+ + +]
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Oct 8 22:39:40 2024 +0200

    ARM: dts: rockchip: Fix the realtek audio codec on rk3036-kylin
    
    [ Upstream commit 77a9a7f2d3b94d29d13d71b851114d593a2147cf ]
    
    Both the node name as well as the compatible were not named
    according to the binding expectations, fix that.
    
    Fixes: 47bf3a5c9e2a ("ARM: dts: rockchip: add the sound setup for rk3036-kylin board")
    Cc: Caesar Wang <wxt@rock-chips.com>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20241008203940.2573684-15-heiko@sntech.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: rockchip: Fix the spi controller on rk3036 [+ + +]
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Oct 8 22:39:39 2024 +0200

    ARM: dts: rockchip: Fix the spi controller on rk3036
    
    [ Upstream commit 8bade1ad1f0821aef31f6a8fb1027ae292566d85 ]
    
    Compatible and clock names did not match the existing binding.
    So set the correct values and re-order+rename the clocks.
    
    It looks like no rk3036 board did use the spi controller so far,
    so this was never detected on a running device yet.
    
    Fixes: f629fcfab2cd ("ARM: dts: rockchip: support the spi for rk3036")
    Cc: Caesar Wang <wxt@rock-chips.com>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20241008203940.2573684-14-heiko@sntech.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ASoC: amd: yc: fix internal mic on Xiaomi Book Pro 14 2022 [+ + +]
Author: Mingcong Bai <jeffbai@aosc.io>
Date:   Wed Nov 6 10:40:50 2024 +0800

    ASoC: amd: yc: fix internal mic on Xiaomi Book Pro 14 2022
    
    commit de156f3cf70e17dc6ff4c3c364bb97a6db961ffd upstream.
    
    Xiaomi Book Pro 14 2022 (MIA2210-AD) requires a quirk entry for its
    internal microphone to be enabled.
    
    This is likely due to similar reasons as seen previously on Redmi Book
    14/15 Pro 2022 models (since they likely came with similar firmware):
    
    - commit dcff8b7ca92d ("ASoC: amd: yc: Add Xiaomi Redmi Book Pro 15 2022
      into DMI table")
    - commit c1dd6bf61997 ("ASoC: amd: yc: Add Xiaomi Redmi Book Pro 14 2022
      into DMI table")
    
    A quirk would likely be needed for Xiaomi Book Pro 15 2022 models, too.
    However, I do not have such device on hand so I will leave it for now.
    
    Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
    Link: https://patch.msgid.link/20241106024052.15748-1-jeffbai@aosc.io
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: WangYuli <wangyuli@uniontech.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: SOF: sof-client-probes-ipc4: Set param_size extension bits [+ + +]
Author: Jyri Sarha <jyri.sarha@linux.intel.com>
Date:   Thu Nov 7 15:28:40 2024 +0200

    ASoC: SOF: sof-client-probes-ipc4: Set param_size extension bits
    
    [ Upstream commit 48b86532c10128cf50c854a90c2d5b1410f4012d ]
    
    Write the size of the optional payload of SOF_IPC4_MOD_INIT_INSTANCE
    message to extension param_size-bits.
    
    The previous IPC4 version does not set these bits that should indicate
    the size of the optional payload (struct sof_ipc4_probe_cfg). The old
    firmware side component code works well without these bits, but when
    the probes are converted to use the generic module API, this does not
    work anymore.
    
    Fixes: f5623593060f ("ASoC: SOF: IPC4: probes: Implement IPC4 ops for probes client device")
    Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com>
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Link: https://patch.msgid.link/20241107132840.17386-1-peter.ujfalusi@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: stm32: spdifrx: fix dma channel release in stm32_spdifrx_remove [+ + +]
Author: Amelie Delaunay <amelie.delaunay@foss.st.com>
Date:   Tue Nov 5 15:02:42 2024 +0100

    ASoC: stm32: spdifrx: fix dma channel release in stm32_spdifrx_remove
    
    [ Upstream commit 9bb4af400c386374ab1047df44c508512c08c31f ]
    
    In case of error when requesting ctrl_chan DMA channel, ctrl_chan is not
    null. So the release of the dma channel leads to the following issue:
    [    4.879000] st,stm32-spdifrx 500d0000.audio-controller:
    dma_request_slave_channel error -19
    [    4.888975] Unable to handle kernel NULL pointer dereference
    at virtual address 000000000000003d
    [...]
    [    5.096577] Call trace:
    [    5.099099]  dma_release_channel+0x24/0x100
    [    5.103235]  stm32_spdifrx_remove+0x24/0x60 [snd_soc_stm32_spdifrx]
    [    5.109494]  stm32_spdifrx_probe+0x320/0x4c4 [snd_soc_stm32_spdifrx]
    
    To avoid this issue, release channel only if the pointer is valid.
    
    Fixes: 794df9448edb ("ASoC: stm32: spdifrx: manage rebind issue")
    Signed-off-by: Amelie Delaunay <amelie.delaunay@foss.st.com>
    Signed-off-by: Olivier Moysan <olivier.moysan@foss.st.com>
    Link: https://patch.msgid.link/20241105140242.527279-1-olivier.moysan@foss.st.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
block: fix queue limits checks in blk_rq_map_user_bvec for real [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Oct 28 10:07:48 2024 +0100

    block: fix queue limits checks in blk_rq_map_user_bvec for real
    
    [ Upstream commit be0e822bb3f5259c7f9424ba97e8175211288813 ]
    
    blk_rq_map_user_bvec currently only has ad-hoc checks for queue limits,
    and the last fix to it enabled valid NVMe I/O to pass, but also allowed
    invalid one for drivers that set a max_segment_size or seg_boundary
    limit.
    
    Fix it once for all by using the bio_split_rw_at helper from the I/O
    path that indicates if and where a bio would be have to be split to
    adhere to the queue limits, and it returns a positive value, turn that
    into -EREMOTEIO to retry using the copy path.
    
    Fixes: 2ff949441802 ("block: fix sanity checks in blk_rq_map_user_bvec")
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: John Garry <john.g.garry@oracle.com>
    Link: https://lore.kernel.org/r/20241028090840.446180-1-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

block: rework bio splitting [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Aug 26 19:37:54 2024 +0200

    block: rework bio splitting
    
    [ Upstream commit b35243a447b9fe6457fa8e1352152b818436ba5a ]
    
    The current setup with bio_may_exceed_limit and __bio_split_to_limits
    is a bit of a mess.
    
    Change it so that __bio_split_to_limits does all the work and is just
    a variant of bio_split_to_limits that returns nr_segs.  This is done
    by inlining it and instead have the various bio_split_* helpers directly
    submit the potentially split bios.
    
    To support btrfs, the rw version has a lower level helper split out
    that just returns the offset to split.  This turns out to nicely clean
    up the btrfs flow as well.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Acked-by: David Sterba <dsterba@suse.com>
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Tested-by: Hans Holmberg <hans.holmberg@wdc.com>
    Reviewed-by: Hans Holmberg <hans.holmberg@wdc.com>
    Link: https://lore.kernel.org/r/20240826173820.1690925-2-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: be0e822bb3f5 ("block: fix queue limits checks in blk_rq_map_user_bvec for real")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
btrfs: fix per-subvolume RO/RW flags with new mount API [+ + +]
Author: Qu Wenruo <wqu@suse.com>
Date:   Wed Oct 30 11:25:47 2024 +1030

    btrfs: fix per-subvolume RO/RW flags with new mount API
    
    commit cda7163d4e3d99db93aa38f0e825b8433c7a8452 upstream.
    
    [BUG]
    With util-linux 2.40.2, the 'mount' utility is already utilizing the new
    mount API. e.g:
    
      # strace  mount -o subvol=subv1,ro /dev/test/scratch1 /mnt/test/
      ...
      fsconfig(3, FSCONFIG_SET_STRING, "source", "/dev/mapper/test-scratch1", 0) = 0
      fsconfig(3, FSCONFIG_SET_STRING, "subvol", "subv1", 0) = 0
      fsconfig(3, FSCONFIG_SET_FLAG, "ro", NULL, 0) = 0
      fsconfig(3, FSCONFIG_CMD_CREATE, NULL, NULL, 0) = 0
      fsmount(3, FSMOUNT_CLOEXEC, 0)          = 4
      mount_setattr(4, "", AT_EMPTY_PATH, {attr_set=MOUNT_ATTR_RDONLY, attr_clr=0, propagation=0 /* MS_??? */, userns_fd=0}, 32) = 0
      move_mount(4, "", AT_FDCWD, "/mnt/test", MOVE_MOUNT_F_EMPTY_PATH) = 0
    
    But this leads to a new problem, that per-subvolume RO/RW mount no
    longer works, if the initial mount is RO:
    
      # mount -o subvol=subv1,ro /dev/test/scratch1 /mnt/test
      # mount -o rw,subvol=subv2 /dev/test/scratch1  /mnt/scratch
      # mount | grep mnt
      /dev/mapper/test-scratch1 on /mnt/test type btrfs (ro,relatime,discard=async,space_cache=v2,subvolid=256,subvol=/subv1)
      /dev/mapper/test-scratch1 on /mnt/scratch type btrfs (ro,relatime,discard=async,space_cache=v2,subvolid=257,subvol=/subv2)
      # touch /mnt/scratch/foobar
      touch: cannot touch '/mnt/scratch/foobar': Read-only file system
    
    This is a common use cases on distros.
    
    [CAUSE]
    We have a workaround for remount to handle the RO->RW change, but if the
    mount is using the new mount API, we do not do that, and rely on the
    mount tool NOT to set the ro flag.
    
    But that's not how the mount tool is doing for the new API:
    
      fsconfig(3, FSCONFIG_SET_STRING, "source", "/dev/mapper/test-scratch1", 0) = 0
      fsconfig(3, FSCONFIG_SET_STRING, "subvol", "subv1", 0) = 0
      fsconfig(3, FSCONFIG_SET_FLAG, "ro", NULL, 0) = 0       <<<< Setting RO flag for super block
      fsconfig(3, FSCONFIG_CMD_CREATE, NULL, NULL, 0) = 0
      fsmount(3, FSMOUNT_CLOEXEC, 0)          = 4
      mount_setattr(4, "", AT_EMPTY_PATH, {attr_set=MOUNT_ATTR_RDONLY, attr_clr=0, propagation=0 /* MS_??? */, userns_fd=0}, 32) = 0
      move_mount(4, "", AT_FDCWD, "/mnt/test", MOVE_MOUNT_F_EMPTY_PATH) = 0
    
    This means we will set the super block RO at the first mount.
    
    Later RW mount will not try to reconfigure the fs to RW because the
    mount tool is already using the new API.
    
    This totally breaks the per-subvolume RO/RW mount behavior.
    
    [FIX]
    Do not skip the reconfiguration even if using the new API.  The old
    comments are just expecting any mount tool to properly skip the RO flag
    set even if we specify "ro", which is not the reality.
    
    Update the comments regarding the backward compatibility on the kernel
    level so it works with old and new mount utilities.
    
    CC: stable@vger.kernel.org # 6.8+
    Fixes: f044b318675f ("btrfs: handle the ro->rw transition for mounting different subvolumes")
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: fix the length of reserved qgroup to free [+ + +]
Author: Haisu Wang <haisuwang@tencent.com>
Date:   Fri Oct 25 14:54:40 2024 +0800

    btrfs: fix the length of reserved qgroup to free
    
    commit 2b084d8205949dd804e279df8e68531da78be1e8 upstream.
    
    The dealloc flag may be cleared and the extent won't reach the disk in
    cow_file_range when errors path. The reserved qgroup space is freed in
    commit 30479f31d44d ("btrfs: fix qgroup reserve leaks in
    cow_file_range"). However, the length of untouched region to free needs
    to be adjusted with the correct remaining region size.
    
    Fixes: 30479f31d44d ("btrfs: fix qgroup reserve leaks in cow_file_range")
    CC: stable@vger.kernel.org # 6.11+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: Boris Burkov <boris@bur.io>
    Signed-off-by: Haisu Wang <haisuwang@tencent.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: reinitialize delayed ref list after deleting it from the list [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Nov 4 12:11:15 2024 +0000

    btrfs: reinitialize delayed ref list after deleting it from the list
    
    commit c9a75ec45f1111ef530ab186c2a7684d0a0c9245 upstream.
    
    At insert_delayed_ref() if we need to update the action of an existing
    ref to BTRFS_DROP_DELAYED_REF, we delete the ref from its ref head's
    ref_add_list using list_del(), which leaves the ref's add_list member
    not reinitialized, as list_del() sets the next and prev members of the
    list to LIST_POISON1 and LIST_POISON2, respectively.
    
    If later we end up calling drop_delayed_ref() against the ref, which can
    happen during merging or when destroying delayed refs due to a transaction
    abort, we can trigger a crash since at drop_delayed_ref() we call
    list_empty() against the ref's add_list, which returns false since
    the list was not reinitialized after the list_del() and as a consequence
    we call list_del() again at drop_delayed_ref(). This results in an
    invalid list access since the next and prev members are set to poison
    pointers, resulting in a splat if CONFIG_LIST_HARDENED and
    CONFIG_DEBUG_LIST are set or invalid poison pointer dereferences
    otherwise.
    
    So fix this by deleting from the list with list_del_init() instead.
    
    Fixes: 1d57ee941692 ("btrfs: improve delayed refs iterations")
    CC: stable@vger.kernel.org # 4.19+
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
can: c_can: fix {rx,tx}_errors statistics [+ + +]
Author: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Date:   Mon Oct 14 15:53:13 2024 +0200

    can: c_can: fix {rx,tx}_errors statistics
    
    [ Upstream commit 4d6d26537940f3b3e17138987ed9e4a334780bf7 ]
    
    The c_can_handle_bus_err() function was incorrectly incrementing only the
    receive error counter, even in cases of bit or acknowledgment errors that
    occur during transmission. The patch fixes the issue by incrementing the
    appropriate counter based on the type of error.
    
    Fixes: 881ff67ad450 ("can: c_can: Added support for Bosch C_CAN controller")
    Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
    Link: https://patch.msgid.link/20241014135319.2009782-1-dario.binacchi@amarulasolutions.com
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

can: m_can: m_can_close(): don't call free_irq() for IRQ-less devices [+ + +]
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Mon Sep 30 19:02:30 2024 +0200

    can: m_can: m_can_close(): don't call free_irq() for IRQ-less devices
    
    commit e4de81f9e134c78ff7c75a00e43bd819643530d0 upstream.
    
    In commit b382380c0d2d ("can: m_can: Add hrtimer to generate software
    interrupt") support for IRQ-less devices was added. Instead of an
    interrupt, the interrupt routine is called by a hrtimer-based polling
    loop.
    
    That patch forgot to change free_irq() to be only called for devices
    with IRQs. Fix this, by calling free_irq() conditionally only if an
    IRQ is available for the device (and thus has been requested
    previously).
    
    Fixes: b382380c0d2d ("can: m_can: Add hrtimer to generate software interrupt")
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
    Link: https://patch.msgid.link/20240930-m_can-cleanups-v1-1-001c579cdee4@pengutronix.de
    Cc: <stable@vger.kernel.org> # v6.6+
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

can: mcp251xfd: mcp251xfd_get_tef_len(): fix length calculation [+ + +]
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Tue Oct 1 16:56:22 2024 +0200

    can: mcp251xfd: mcp251xfd_get_tef_len(): fix length calculation
    
    commit 3c1c18551e6ac1b988d0a05c5650e3f6c95a1b8a upstream.
    
    Commit b8e0ddd36ce9 ("can: mcp251xfd: tef: prepare to workaround
    broken TEF FIFO tail index erratum") introduced
    mcp251xfd_get_tef_len() to get the number of unhandled transmit events
    from the Transmit Event FIFO (TEF).
    
    As the TEF has no head pointer, the driver uses the TX FIFO's tail
    pointer instead, assuming that send frames are completed. However the
    check for the TEF being full was not correct. This leads to the driver
    stop working if the TEF is full.
    
    Fix the TEF full check by assuming that if, from the driver's point of
    view, there are no free TX buffers in the chip and the TX FIFO is
    empty, all messages must have been sent and the TEF must therefore be
    full.
    
    Reported-by: Sven Schuchmann <schuchmann@schleissheimer.de>
    Closes: https://patch.msgid.link/FR3P281MB155216711EFF900AD9791B7ED9692@FR3P281MB1552.DEUP281.PROD.OUTLOOK.COM
    Fixes: b8e0ddd36ce9 ("can: mcp251xfd: tef: prepare to workaround broken TEF FIFO tail index erratum")
    Tested-by: Sven Schuchmann <schuchmann@schleissheimer.de>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20241104-mcp251xfd-fix-length-calculation-v3-1-608b6e7e2197@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

can: mcp251xfd: mcp251xfd_ring_alloc(): fix coalescing configuration when switching CAN modes [+ + +]
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Fri Oct 25 14:34:40 2024 +0200

    can: mcp251xfd: mcp251xfd_ring_alloc(): fix coalescing configuration when switching CAN modes
    
    commit eb9a839b3d8a989be5970035a5cf29bcd6ffd24d upstream.
    
    Since commit 50ea5449c563 ("can: mcp251xfd: fix ring configuration
    when switching from CAN-CC to CAN-FD mode"), the current ring and
    coalescing configuration is passed to can_ram_get_layout(). That fixed
    the issue when switching between CAN-CC and CAN-FD mode with
    configured ring (rx, tx) and/or coalescing parameters (rx-frames-irq,
    tx-frames-irq).
    
    However 50ea5449c563 ("can: mcp251xfd: fix ring configuration when
    switching from CAN-CC to CAN-FD mode"), introduced a regression when
    switching CAN modes with disabled coalescing configuration: Even if
    the previous CAN mode has no coalescing configured, the new mode is
    configured with active coalescing. This leads to delayed receiving of
    CAN-FD frames.
    
    This comes from the fact, that ethtool uses usecs = 0 and max_frames =
    1 to disable coalescing, however the driver uses internally
    priv->{rx,tx}_obj_num_coalesce_irq = 0 to indicate disabled
    coalescing.
    
    Fix the regression by assigning struct ethtool_coalesce
    ec->{rx,tx}_max_coalesced_frames_irq = 1 if coalescing is disabled in
    the driver as can_ram_get_layout() expects this.
    
    Reported-by: https://github.com/vdh-robothania
    Closes: https://github.com/raspberrypi/linux/issues/6407
    Fixes: 50ea5449c563 ("can: mcp251xfd: fix ring configuration when switching from CAN-CC to CAN-FD mode")
    Cc: stable@vger.kernel.org
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20241025-mcp251xfd-fix-coalesing-v1-1-9d11416de1df@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

can: {cc770,sja1000}_isa: allow building on x86_64 [+ + +]
Author: Thomas Mühlbacher <tmuehlbacher@posteo.net>
Date:   Thu Sep 19 17:35:22 2024 +0000

    can: {cc770,sja1000}_isa: allow building on x86_64
    
    commit 7b22846f8af5ab2f267de9eb209fb1835ee9978c upstream.
    
    The ISA variable is only defined if X86_32 is also defined. However,
    these drivers are still useful and in use on at least some modern 64-bit
    x86 industrial systems as well. With the correct module parameters, they
    work as long as IO port communication is possible, despite their name
    having ISA in them.
    
    Fixes: a29689e60ed3 ("net: handle HAS_IOPORT dependencies")
    Signed-off-by: Thomas Mühlbacher <tmuehlbacher@posteo.net>
    Link: https://patch.msgid.link/20240919174151.15473-2-tmuehlbacher@posteo.net
    Cc: stable@vger.kernel.org
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
clk: qcom: clk-alpha-pll: Fix pll post div mask when width is not set [+ + +]
Author: Barnabás Czémán <barnabas.czeman@mainlining.org>
Date:   Sun Oct 6 22:51:58 2024 +0200

    clk: qcom: clk-alpha-pll: Fix pll post div mask when width is not set
    
    commit e02bfea4d7ef587bb285ad5825da4e1973ac8263 upstream.
    
    Many qcom clock drivers do not have .width set. In that case value of
    (p)->width - 1 will be negative which breaks clock tree. Fix this
    by checking if width is zero, and pass 3 to GENMASK if that's the case.
    
    Fixes: 1c3541145cbf ("clk: qcom: support for 2 bit PLL post divider")
    Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Christopher Obbard <christopher.obbard@linaro.org>
    Tested-by: Christopher Obbard <christopher.obbard@linaro.org>
    Link: https://lore.kernel.org/r/20241006-fix-postdiv-mask-v3-1-160354980433@mainlining.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks [+ + +]
Author: Qiang Yu <quic_qianyu@quicinc.com>
Date:   Fri Oct 11 03:41:39 2024 -0700

    clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks
    
    commit bf0a800415a7397617765fe5f5278a645195c75a upstream.
    
    The pipediv2_clk's source from the same mux as pipe clock. So they have
    same limitation, which is that the PHY sequence requires to enable these
    local CBCs before the PHY is actually outputting a clock to them. This
    means the clock won't actually turn on when we vote them. Hence, let's
    skip the halt bit check of the pipediv2_clk, otherwise pipediv2_clk may
    stuck at off state during bootup.
    
    Cc: stable@vger.kernel.org
    Fixes: 161b7c401f4b ("clk: qcom: Add Global Clock controller (GCC) driver for X1E80100")
    Suggested-by: Mike Tipton <quic_mdtipton@quicinc.com>
    Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
    Reviewed-by: Konrad Dybcio <konradybcio@kernel.org>
    Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
    Link: https://lore.kernel.org/r/20241011104142.1181773-6-quic_qianyu@quicinc.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

clk: qcom: gcc-x1e80100: Fix USB MP SS1 PHY GDSC pwrsts flags [+ + +]
Author: Abel Vesa <abel.vesa@linaro.org>
Date:   Mon Oct 21 15:46:25 2024 +0300

    clk: qcom: gcc-x1e80100: Fix USB MP SS1 PHY GDSC pwrsts flags
    
    commit e7f37a7d16310d3c9474825de26a67f00983ebea upstream.
    
    Allowing these GDSCs to collapse makes the QMP combo PHYs lose their
    configuration on machine suspend. Currently, the QMP combo PHY driver
    doesn't reinitialise the HW on resume. Under such conditions, the USB
    SuperSpeed support is broken. To avoid this, mark the pwrsts flags with
    RET_ON. This has been already done for USB 0 and 1 SS PHY GDSCs,
    Do this also for the USB MP SS1 PHY GDSC config. The USB MP SS0 PHY GDSC
    already has it.
    
    Fixes: 161b7c401f4b ("clk: qcom: Add Global Clock controller (GCC) driver for X1E80100")
    Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
    Link: https://lore.kernel.org/r/20241021-x1e80100-clk-gcc-fix-usb-mp-phy-gdsc-pwrsts-flags-v2-1-0bfd64556238@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

clk: qcom: videocc-sm8350: use HW_CTRL_TRIGGER for vcodec GDSCs [+ + +]
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Sun Sep 1 11:30:24 2024 +0200

    clk: qcom: videocc-sm8350: use HW_CTRL_TRIGGER for vcodec GDSCs
    
    commit f903663a8dcd6e1656e52856afbf706cc14cbe6d upstream.
    
    A recent change in the venus driver results in a stuck clock on the
    Lenovo ThinkPad X13s, for example, when streaming video in firefox:
    
            video_cc_mvs0_clk status stuck at 'off'
            WARNING: CPU: 6 PID: 2885 at drivers/clk/qcom/clk-branch.c:87 clk_branch_wait+0x144/0x15c
            ...
            Call trace:
             clk_branch_wait+0x144/0x15c
             clk_branch2_enable+0x30/0x40
             clk_core_enable+0xd8/0x29c
             clk_enable+0x2c/0x4c
             vcodec_clks_enable.isra.0+0x94/0xd8 [venus_core]
             coreid_power_v4+0x464/0x628 [venus_core]
             vdec_start_streaming+0xc4/0x510 [venus_dec]
             vb2_start_streaming+0x6c/0x180 [videobuf2_common]
             vb2_core_streamon+0x120/0x1dc [videobuf2_common]
             vb2_streamon+0x1c/0x6c [videobuf2_v4l2]
             v4l2_m2m_ioctl_streamon+0x30/0x80 [v4l2_mem2mem]
             v4l_streamon+0x24/0x30 [videodev]
    
    using the out-of-tree sm8350/sc8280xp venus support. [1]
    
    Update also the sm8350/sc8280xp GDSC definitions so that the hw control
    mode can be changed at runtime as the venus driver now requires.
    
    Fixes: ec9a652e5149 ("venus: pm_helpers: Use dev_pm_genpd_set_hwmode to switch GDSC mode on V6")
    Link: https://lore.kernel.org/lkml/20230731-topic-8280_venus-v1-0-8c8bbe1983a5@linaro.org/ # [1]
    Cc: Jagadeesh Kona <quic_jkona@quicinc.com>
    Cc: Taniya Das <quic_tdas@quicinc.com>
    Cc: Abel Vesa <abel.vesa@linaro.org>
    Cc: Konrad Dybcio <konradybcio@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Tested-by: Steev Klimaszewski <steev@kali.org>
    Link: https://lore.kernel.org/r/20240901093024.18841-1-johan+linaro@kernel.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dm cache: correct the number of origin blocks to match the target length [+ + +]
Author: Ming-Hung Tsai <mtsai@redhat.com>
Date:   Tue Oct 22 15:12:22 2024 +0800

    dm cache: correct the number of origin blocks to match the target length
    
    commit 235d2e739fcbe964c9ce179b4c991025662dcdb6 upstream.
    
    When creating a cache device, the actual size of the cache origin might
    be greater than the specified cache target length. In such case, the
    number of origin blocks should match the cache target length, not the
    full size of the origin device, since access beyond the cache target is
    not possible. This issue occurs when reducing the origin device size
    using lvm, as lvreduce preloads the new cache table before resuming the
    cache origin, which can result in incorrect sizes for the discard bitset
    and smq hotspot blocks.
    
    Reproduce steps:
    
    1. create a cache device consists of 4096 origin blocks
    
    dmsetup create cmeta --table "0 8192 linear /dev/sdc 0"
    dmsetup create cdata --table "0 65536 linear /dev/sdc 8192"
    dmsetup create corig --table "0 524288 linear /dev/sdc 262144"
    dd if=/dev/zero of=/dev/mapper/cmeta bs=4k count=1 oflag=direct
    dmsetup create cache --table "0 524288 cache /dev/mapper/cmeta \
    /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0"
    
    2. reduce the cache origin to 2048 oblocks, in lvreduce's approach
    
    dmsetup reload corig --table "0 262144 linear /dev/sdc 262144"
    dmsetup reload cache --table "0 262144 cache /dev/mapper/cmeta \
    /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0"
    dmsetup suspend cache
    dmsetup suspend corig
    dmsetup suspend cdata
    dmsetup suspend cmeta
    dmsetup resume corig
    dmsetup resume cdata
    dmsetup resume cmeta
    dmsetup resume cache
    
    3. shutdown the cache, and check the number of discard blocks in
       superblock. The value is expected to be 2048, but actually is 4096.
    
    dmsetup remove cache corig cdata cmeta
    dd if=/dev/sdc bs=1c count=8 skip=224 2>/dev/null | hexdump -e '1/8 "%u\n"'
    
    Fix by correcting the origin_blocks initialization in cache_create and
    removing the unused origin_sectors from struct cache_args accordingly.
    
    Signed-off-by: Ming-Hung Tsai <mtsai@redhat.com>
    Fixes: c6b4fcbad044 ("dm: add cache target")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Acked-by: Joe Thornber <thornber@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dm cache: fix flushing uninitialized delayed_work on cache_ctr error [+ + +]
Author: Ming-Hung Tsai <mtsai@redhat.com>
Date:   Tue Oct 22 15:12:49 2024 +0800

    dm cache: fix flushing uninitialized delayed_work on cache_ctr error
    
    commit 135496c208ba26fd68cdef10b64ed7a91ac9a7ff upstream.
    
    An unexpected WARN_ON from flush_work() may occur when cache creation
    fails, caused by destroying the uninitialized delayed_work waker in the
    error path of cache_create(). For example, the warning appears on the
    superblock checksum error.
    
    Reproduce steps:
    
    dmsetup create cmeta --table "0 8192 linear /dev/sdc 0"
    dmsetup create cdata --table "0 65536 linear /dev/sdc 8192"
    dmsetup create corig --table "0 524288 linear /dev/sdc 262144"
    dd if=/dev/urandom of=/dev/mapper/cmeta bs=4k count=1 oflag=direct
    dmsetup create cache --table "0 524288 cache /dev/mapper/cmeta \
    /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0"
    
    Kernel logs:
    
    (snip)
    WARNING: CPU: 0 PID: 84 at kernel/workqueue.c:4178 __flush_work+0x5d4/0x890
    
    Fix by pulling out the cancel_delayed_work_sync() from the constructor's
    error path. This patch doesn't affect the use-after-free fix for
    concurrent dm_resume and dm_destroy (commit 6a459d8edbdb ("dm cache: Fix
    UAF in destroy()")) as cache_dtr is not changed.
    
    Signed-off-by: Ming-Hung Tsai <mtsai@redhat.com>
    Fixes: 6a459d8edbdb ("dm cache: Fix UAF in destroy()")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Acked-by: Joe Thornber <thornber@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dm cache: fix out-of-bounds access to the dirty bitset when resizing [+ + +]
Author: Ming-Hung Tsai <mtsai@redhat.com>
Date:   Tue Oct 22 15:13:16 2024 +0800

    dm cache: fix out-of-bounds access to the dirty bitset when resizing
    
    commit 792227719725497ce10a8039803bec13f89f8910 upstream.
    
    dm-cache checks the dirty bits of the cache blocks to be dropped when
    shrinking the fast device, but an index bug in bitset iteration causes
    out-of-bounds access.
    
    Reproduce steps:
    
    1. create a cache device of 1024 cache blocks (128 bytes dirty bitset)
    
    dmsetup create cmeta --table "0 8192 linear /dev/sdc 0"
    dmsetup create cdata --table "0 131072 linear /dev/sdc 8192"
    dmsetup create corig --table "0 524288 linear /dev/sdc 262144"
    dd if=/dev/zero of=/dev/mapper/cmeta bs=4k count=1 oflag=direct
    dmsetup create cache --table "0 524288 cache /dev/mapper/cmeta \
    /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0"
    
    2. shrink the fast device to 512 cache blocks, triggering out-of-bounds
       access to the dirty bitset (offset 0x80)
    
    dmsetup suspend cache
    dmsetup reload cdata --table "0 65536 linear /dev/sdc 8192"
    dmsetup resume cdata
    dmsetup resume cache
    
    KASAN reports:
    
      BUG: KASAN: vmalloc-out-of-bounds in cache_preresume+0x269/0x7b0
      Read of size 8 at addr ffffc900000f3080 by task dmsetup/131
    
      (...snip...)
      The buggy address belongs to the virtual mapping at
       [ffffc900000f3000, ffffc900000f5000) created by:
       cache_ctr+0x176a/0x35f0
    
      (...snip...)
      Memory state around the buggy address:
       ffffc900000f2f80: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
       ffffc900000f3000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      >ffffc900000f3080: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
                         ^
       ffffc900000f3100: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
       ffffc900000f3180: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
    
    Fix by making the index post-incremented.
    
    Signed-off-by: Ming-Hung Tsai <mtsai@redhat.com>
    Fixes: f494a9c6b1b6 ("dm cache: cache shrinking support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Acked-by: Joe Thornber <thornber@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dm cache: fix potential out-of-bounds access on the first resume [+ + +]
Author: Ming-Hung Tsai <mtsai@redhat.com>
Date:   Tue Oct 22 15:13:54 2024 +0800

    dm cache: fix potential out-of-bounds access on the first resume
    
    commit c0ade5d98979585d4f5a93e4514c2e9a65afa08d upstream.
    
    Out-of-bounds access occurs if the fast device is expanded unexpectedly
    before the first-time resume of the cache table. This happens because
    expanding the fast device requires reloading the cache table for
    cache_create to allocate new in-core data structures that fit the new
    size, and the check in cache_preresume is not performed during the
    first resume, leading to the issue.
    
    Reproduce steps:
    
    1. prepare component devices:
    
    dmsetup create cmeta --table "0 8192 linear /dev/sdc 0"
    dmsetup create cdata --table "0 65536 linear /dev/sdc 8192"
    dmsetup create corig --table "0 524288 linear /dev/sdc 262144"
    dd if=/dev/zero of=/dev/mapper/cmeta bs=4k count=1 oflag=direct
    
    2. load a cache table of 512 cache blocks, and deliberately expand the
       fast device before resuming the cache, making the in-core data
       structures inadequate.
    
    dmsetup create cache --notable
    dmsetup reload cache --table "0 524288 cache /dev/mapper/cmeta \
    /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0"
    dmsetup reload cdata --table "0 131072 linear /dev/sdc 8192"
    dmsetup resume cdata
    dmsetup resume cache
    
    3. suspend the cache to write out the in-core dirty bitset and hint
       array, leading to out-of-bounds access to the dirty bitset at offset
       0x40:
    
    dmsetup suspend cache
    
    KASAN reports:
    
      BUG: KASAN: vmalloc-out-of-bounds in is_dirty_callback+0x2b/0x80
      Read of size 8 at addr ffffc90000085040 by task dmsetup/90
    
      (...snip...)
      The buggy address belongs to the virtual mapping at
       [ffffc90000085000, ffffc90000087000) created by:
       cache_ctr+0x176a/0x35f0
    
      (...snip...)
      Memory state around the buggy address:
       ffffc90000084f00: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
       ffffc90000084f80: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
      >ffffc90000085000: 00 00 00 00 00 00 00 00 f8 f8 f8 f8 f8 f8 f8 f8
                                                 ^
       ffffc90000085080: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
       ffffc90000085100: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
    
    Fix by checking the size change on the first resume.
    
    Signed-off-by: Ming-Hung Tsai <mtsai@redhat.com>
    Fixes: f494a9c6b1b6 ("dm cache: cache shrinking support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Acked-by: Joe Thornber <thornber@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dm cache: optimize dirty bit checking with find_next_bit when resizing [+ + +]
Author: Ming-Hung Tsai <mtsai@redhat.com>
Date:   Tue Oct 22 15:13:39 2024 +0800

    dm cache: optimize dirty bit checking with find_next_bit when resizing
    
    commit f484697e619a83ecc370443a34746379ad99d204 upstream.
    
    When shrinking the fast device, dm-cache iteratively searches for a
    dirty bit among the cache blocks to be dropped, which is less efficient.
    Use find_next_bit instead, as it is twice as fast as the iterative
    approach with test_bit.
    
    Signed-off-by: Ming-Hung Tsai <mtsai@redhat.com>
    Fixes: f494a9c6b1b6 ("dm cache: cache shrinking support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Acked-by: Joe Thornber <thornber@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dm-unstriped: cast an operand to sector_t to prevent potential uint32_t overflow [+ + +]
Author: Zichen Xie <zichenxie0106@gmail.com>
Date:   Mon Oct 21 14:54:45 2024 -0500

    dm-unstriped: cast an operand to sector_t to prevent potential uint32_t overflow
    
    commit 5a4510c762fc04c74cff264cd4d9e9f5bf364bae upstream.
    
    This was found by a static analyzer.
    There may be a potential integer overflow issue in
    unstripe_ctr(). uc->unstripe_offset and uc->unstripe_width are
    defined as "sector_t"(uint64_t), while uc->unstripe,
    uc->chunk_size and uc->stripes are all defined as "uint32_t".
    The result of the calculation will be limited to "uint32_t"
    without correct casting.
    So, we recommend adding an extra cast to prevent potential
    integer overflow.
    
    Fixes: 18a5bf270532 ("dm: add unstriped target")
    Signed-off-by: Zichen Xie <zichenxie0106@gmail.com>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dm: fix a crash if blk_alloc_disk fails [+ + +]
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Mon Oct 7 13:38:12 2024 +0200

    dm: fix a crash if blk_alloc_disk fails
    
    commit fed13a5478680614ba97fc87e71f16e2e197912e upstream.
    
    If blk_alloc_disk fails, the variable md->disk is set to an error value.
    cleanup_mapped_device will see that md->disk is non-NULL and it will
    attempt to access it, causing a crash on this statement
    "md->disk->private_data = NULL;".
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Reported-by: Chenyuan Yang <chenyuan0y@gmail.com>
    Closes: https://marc.info/?l=dm-devel&m=172824125004329&w=2
    Cc: stable@vger.kernel.org
    Reviewed-by: Nitesh Shetty <nj.shetty@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drivers: net: ionic: add missed debugfs cleanup to ionic_probe() error path [+ + +]
Author: Wentao Liang <Wentao_liang_g@163.com>
Date:   Thu Nov 7 10:17:56 2024 +0800

    drivers: net: ionic: add missed debugfs cleanup to ionic_probe() error path
    
    [ Upstream commit 71712cf519faeed529549a79559c06c7fc250a15 ]
    
    The ionic_setup_one() creates a debugfs entry for ionic upon
    successful execution. However, the ionic_probe() does not
    release the dentry before returning, resulting in a memory
    leak.
    
    To fix this bug, we add the ionic_debugfs_del_dev() to release
    the resources in a timely manner before returning.
    
    Fixes: 0de38d9f1dba ("ionic: extract common bits from ionic_probe")
    Signed-off-by: Wentao Liang <Wentao_liang_g@163.com>
    Acked-by: Shannon Nelson <shannon.nelson@amd.com>
    Link: https://patch.msgid.link/20241107021756.1677-1-liangwentao@iscas.ac.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/display: Fix brightness level not retained over reboot [+ + +]
Author: Tom Chung <chiahsuan.chung@amd.com>
Date:   Wed Oct 9 17:09:38 2024 +0800

    drm/amd/display: Fix brightness level not retained over reboot
    
    commit 4f26c95ffc21a91281429ed60180619bae19ae92 upstream.
    
    [Why]
    During boot up and resume the DC layer will reset the panel
    brightness to fix a flicker issue.
    
    It will cause the dm->actual_brightness is not the current panel
    brightness level. (the dm->brightness is the correct panel level)
    
    [How]
    Set the backlight level after do the set mode.
    
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Fixes: d9e865826c20 ("drm/amd/display: Simplify brightness initialization")
    Reported-by: Mark Herbert <mark.herbert42@gmail.com>
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3655
    Reviewed-by: Sun peng Li <sunpeng.li@amd.com>
    Signed-off-by: Tom Chung <chiahsuan.chung@amd.com>
    Signed-off-by: Zaeem Mohamed <zaeem.mohamed@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 7875afafba84817b791be6d2282b836695146060)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amd/display: parse umc_info or vram_info based on ASIC [+ + +]
Author: Aurabindo Pillai <aurabindo.pillai@amd.com>
Date:   Fri Oct 18 10:52:16 2024 -0400

    drm/amd/display: parse umc_info or vram_info based on ASIC
    
    commit 694c79769cb384bca8b1ec1d1e84156e726bd106 upstream.
    
    An upstream bug report suggests that there are production dGPUs that are
    older than DCN401 but still have a umc_info in VBIOS tables with the
    same version as expected for a DCN401 product. Hence, reading this
    tables should be guarded with a version check.
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3678
    Reviewed-by: Dillon Varone <dillon.varone@amd.com>
    Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
    Signed-off-by: Zaeem Mohamed <zaeem.mohamed@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 2551b4a321a68134360b860113dd460133e856e5)
    Fixes: 00c391102abc ("drm/amd/display: Add misc DC changes for DCN401")
    Cc: stable@vger.kernel.org # 6.11.x
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amd/pm: always pick the pptable from IFWI [+ + +]
Author: Kenneth Feng <kenneth.feng@amd.com>
Date:   Fri Nov 1 11:55:25 2024 +0800

    drm/amd/pm: always pick the pptable from IFWI
    
    commit 1356bfc54c8d4c8e7c9fb8553dc8c28e9714b07b upstream.
    
    always pick the pptable from IFWI on smu v14.0.2/3
    
    Signed-off-by: Kenneth Feng <kenneth.feng@amd.com>
    Reviewed-by: Yang Wang <kevinyang.wang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 136ce12bd5907388cb4e9aa63ee5c9c8c441640b)
    Cc: stable@vger.kernel.org # 6.11.x
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amd/pm: correct the workload setting [+ + +]
Author: Kenneth Feng <kenneth.feng@amd.com>
Date:   Wed Oct 30 13:22:44 2024 +0800

    drm/amd/pm: correct the workload setting
    
    commit 74e1006430a5377228e49310f6d915628609929e upstream.
    
    Correct the workload setting in order not to mix the setting
    with the end user. Update the workload mask accordingly.
    
    v2: changes as below:
    1. the end user can not erase the workload from driver except default workload.
    2. always shows the real highest priority workoad to the end user.
    3. the real workload mask is combined with driver workload mask and end user workload mask.
    
    v3: apply this to the other ASICs as well.
    v4: simplify the code
    v5: refine the code based on the review comments.
    
    Signed-off-by: Kenneth Feng <kenneth.feng@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 8cc438be5d49b8326b2fcade0bdb7e6a97df9e0b)
    Cc: stable@vger.kernel.org # 6.11.x
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdgpu: add missing size check in amdgpu_debugfs_gprwave_read() [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Oct 23 16:52:08 2024 -0400

    drm/amdgpu: add missing size check in amdgpu_debugfs_gprwave_read()
    
    commit 4d75b9468021c73108b4439794d69e892b1d24e3 upstream.
    
    Avoid a possible buffer overflow if size is larger than 4K.
    
    Reviewed-by: Yang Wang <kevinyang.wang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit f5d873f5825b40d886d03bd2aede91d4cf002434)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amdgpu: Adjust debugfs eviction and IB access permissions [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Oct 23 16:39:36 2024 -0400

    drm/amdgpu: Adjust debugfs eviction and IB access permissions
    
    commit f790a2c494c4ef587eeeb9fca20124de76a1646f upstream.
    
    Users should not be able to run these.
    
    Reviewed-by: Yang Wang <kevinyang.wang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 7ba9395430f611cfc101b1c2687732baafa239d5)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amdgpu: Adjust debugfs register access permissions [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Oct 23 16:37:52 2024 -0400

    drm/amdgpu: Adjust debugfs register access permissions
    
    commit b46dadf7e3cfe26d0b109c9c3d81b278d6c75361 upstream.
    
    Regular users shouldn't have read access.
    
    Reviewed-by: Yang Wang <kevinyang.wang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit c0cfd2e652553d607b910be47d0cc5a7f3a78641)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amdgpu: Fix DPX valid mode check on GC 9.4.3 [+ + +]
Author: Lijo Lazar <lijo.lazar@amd.com>
Date:   Mon Nov 4 10:36:13 2024 +0530

    drm/amdgpu: Fix DPX valid mode check on GC 9.4.3
    
    commit 3ce3f85787352fa48fc02ef6cbd7a5e5aba93347 upstream.
    
    For DPX mode, the number of memory partitions supported should be less
    than or equal to 2.
    
    Fixes: 1589c82a1085 ("drm/amdgpu: Check memory ranges for valid xcp mode")
    Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 990c4f580742de7bb78fa57420ffd182fc3ab4cd)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amdgpu: prevent NULL pointer dereference if ATIF is not supported [+ + +]
Author: Antonio Quartulli <antonio@mandelbit.com>
Date:   Thu Oct 31 16:28:48 2024 +0100

    drm/amdgpu: prevent NULL pointer dereference if ATIF is not supported
    
    commit a6dd15981c03f2cdc9a351a278f09b5479d53d2e upstream.
    
    acpi_evaluate_object() may return AE_NOT_FOUND (failure), which
    would result in dereferencing buffer.pointer (obj) while being NULL.
    
    Although this case may be unrealistic for the current code, it is
    still better to protect against possible bugs.
    
    Bail out also when status is AE_NOT_FOUND.
    
    This fixes 1 FORWARD_NULL issue reported by Coverity
    Report: CID 1600951:  Null pointer dereferences  (FORWARD_NULL)
    
    Signed-off-by: Antonio Quartulli <antonio@mandelbit.com>
    Fixes: c9b7c809b89f ("drm/amd: Guard against bad data for ATIF ACPI method")
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://lore.kernel.org/r/20241031152848.4716-1-antonio@mandelbit.com
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 91c9e221fe2553edf2db71627d8453f083de87a1)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/imagination: Add a per-file PVR context list [+ + +]
Author: Brendan King <brendan.king@imgtec.com>
Date:   Fri Oct 18 15:41:36 2024 +0000

    drm/imagination: Add a per-file PVR context list
    
    commit b0ef514bc6bbdeb8cc7492c0f473e14cb06b14d4 upstream.
    
    This adds a linked list of VM contexts which is needed for the next patch
    to be able to correctly track VM contexts for destruction on file close.
    
    It is only safe for VM contexts to be removed from the list and destroyed
    when not in interrupt context.
    
    Signed-off-by: Brendan King <brendan.king@imgtec.com>
    Signed-off-by: Matt Coster <matt.coster@imgtec.com>
    Reviewed-by: Frank Binns <frank.binns@imgtec.com>
    Cc: stable@vger.kernel.org
    Link: https://patchwork.freedesktop.org/patch/msgid/e57128ea-f0ce-4e93-a9d4-3f033a8b06fa@imgtec.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/imagination: Break an object reference loop [+ + +]
Author: Brendan King <brendan.king@imgtec.com>
Date:   Fri Oct 18 15:41:40 2024 +0000

    drm/imagination: Break an object reference loop
    
    commit b04ce1e718bd55302b52d05d6873e233cb3ec7a1 upstream.
    
    When remaining resources are being cleaned up on driver close,
    outstanding VM mappings may result in resources being leaked, due
    to an object reference loop, as shown below, with each object (or
    set of objects) referencing the object below it:
    
        PVR GEM Object
        GPU scheduler "finished" fence
        GPU scheduler “scheduled” fence
        PVR driver “done” fence
        PVR Context
        PVR VM Context
        PVR VM Mappings
        PVR GEM Object
    
    The reference that the PVR VM Context has on the VM mappings is a
    soft one, in the sense that the freeing of outstanding VM mappings
    is done as part of VM context destruction; no reference counts are
    involved, as is the case for all the other references in the loop.
    
    To break the reference loop during cleanup, free the outstanding
    VM mappings before destroying the PVR Context associated with the
    VM context.
    
    Signed-off-by: Brendan King <brendan.king@imgtec.com>
    Signed-off-by: Matt Coster <matt.coster@imgtec.com>
    Reviewed-by: Frank Binns <frank.binns@imgtec.com>
    Cc: stable@vger.kernel.org
    Link: https://patchwork.freedesktop.org/patch/msgid/8a25924f-1bb7-4d9a-a346-58e871dfb1d1@imgtec.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/panthor: Be stricter about IO mapping flags [+ + +]
Author: Jann Horn <jannh@google.com>
Date:   Tue Nov 5 00:17:13 2024 +0100

    drm/panthor: Be stricter about IO mapping flags
    
    commit f432a1621f049bb207e78363d9d0e3c6fa2da5db upstream.
    
    The current panthor_device_mmap_io() implementation has two issues:
    
    1. For mapping DRM_PANTHOR_USER_FLUSH_ID_MMIO_OFFSET,
       panthor_device_mmap_io() bails if VM_WRITE is set, but does not clear
       VM_MAYWRITE. That means userspace can use mprotect() to make the mapping
       writable later on. This is a classic Linux driver gotcha.
       I don't think this actually has any impact in practice:
       When the GPU is powered, writes to the FLUSH_ID seem to be ignored; and
       when the GPU is not powered, the dummy_latest_flush page provided by the
       driver is deliberately designed to not do any flushes, so the only thing
       writing to the dummy_latest_flush could achieve would be to make *more*
       flushes happen.
    
    2. panthor_device_mmap_io() does not block MAP_PRIVATE mappings (which are
       mappings without the VM_SHARED flag).
       MAP_PRIVATE in combination with VM_MAYWRITE indicates that the VMA has
       copy-on-write semantics, which for VM_PFNMAP are semi-supported but
       fairly cursed.
       In particular, in such a mapping, the driver can only install PTEs
       during mmap() by calling remap_pfn_range() (because remap_pfn_range()
       wants to **store the physical address of the mapped physical memory into
       the vm_pgoff of the VMA**); installing PTEs later on with a fault
       handler (as panthor does) is not supported in private mappings, and so
       if you try to fault in such a mapping, vmf_insert_pfn_prot() splats when
       it hits a BUG() check.
    
    Fix it by clearing the VM_MAYWRITE flag (userspace writing to the FLUSH_ID
    doesn't make sense) and requiring VM_SHARED (copy-on-write semantics for
    the FLUSH_ID don't make sense).
    
    Reproducers for both scenarios are in the notes of my patch on the mailing
    list; I tested that these bugs exist on a Rock 5B machine.
    
    Note that I only compile-tested the patch, I haven't tested it; I don't
    have a working kernel build setup for the test machine yet. Please test it
    before applying it.
    
    Cc: stable@vger.kernel.org
    Fixes: 5fe909cae118 ("drm/panthor: Add the device logical block")
    Signed-off-by: Jann Horn <jannh@google.com>
    Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
    Reviewed-by: Liviu Dudau <liviu.dudau@arm.com>
    Reviewed-by: Steven Price <steven.price@arm.com>
    Signed-off-by: Steven Price <steven.price@arm.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241105-panthor-flush-page-fixes-v1-1-829aaf37db93@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/panthor: Lock XArray when getting entries for the VM [+ + +]
Author: Liviu Dudau <liviu.dudau@arm.com>
Date:   Wed Nov 6 18:58:06 2024 +0000

    drm/panthor: Lock XArray when getting entries for the VM
    
    commit 444fa5b100e5c90550d6bccfe4476efb0391b3ca upstream.
    
    Similar to commit cac075706f29 ("drm/panthor: Fix race when converting
    group handle to group object") we need to use the XArray's internal
    locking when retrieving a vm pointer from there.
    
    v2: Removed part of the patch that was trying to protect fetching
    the heap pointer from XArray, as that operation is protected by
    the @pool->lock.
    
    Fixes: 647810ec2476 ("drm/panthor: Add the MMU/VM logical block")
    Reported-by: Jann Horn <jannh@google.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
    Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
    Reviewed-by: Steven Price <steven.price@arm.com>
    Signed-off-by: Steven Price <steven.price@arm.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241106185806.389089-1-liviu.dudau@arm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/xe/guc/ct: Flush g2h worker in case of g2h response timeout [+ + +]
Author: Badal Nilawar <badal.nilawar@intel.com>
Date:   Thu Oct 17 16:44:10 2024 +0530

    drm/xe/guc/ct: Flush g2h worker in case of g2h response timeout
    
    [ Upstream commit 22ef43c78647dd37b0dafe2182b8650b99dbbe59 ]
    
    In case if g2h worker doesn't get opportunity to within specified
    timeout delay then flush the g2h worker explicitly.
    
    v2:
      - Describe change in the comment and add TODO (Matt B/John H)
      - Add xe_gt_warn on fence done after G2H flush (John H)
    v3:
      - Updated the comment with root cause
      - Clean up xe_gt_warn message (John H)
    
    Closes: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1620
    Closes: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2902
    Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
    Cc: Matthew Brost <matthew.brost@intel.com>
    Cc: Matthew Auld <matthew.auld@intel.com>
    Cc: John Harrison <John.C.Harrison@Intel.com>
    Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
    Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
    Acked-by: Matthew Brost <matthew.brost@intel.com>
    Signed-off-by: Matthew Brost <matthew.brost@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241017111410.2553784-2-badal.nilawar@intel.com
    (cherry picked from commit e5152723380404acb8175e0777b1cea57f319a01)
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Stable-dep-of: 55e8a3f37e54 ("drm/xe: Move LNL scheduling WA to xe_device.h")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/xe/guc/tlb: Flush g2h worker in case of tlb timeout [+ + +]
Author: Nirmoy Das <nirmoy.das@intel.com>
Date:   Tue Oct 29 13:01:17 2024 +0100

    drm/xe/guc/tlb: Flush g2h worker in case of tlb timeout
    
    [ Upstream commit 1491efb39acee3848b61fcb3e5cc4be8de304352 ]
    
    Flush the g2h worker explicitly if TLB timeout happens which is
    observed on LNL and that points to the recent scheduling issue with
    E-cores on LNL.
    
    This is similar to the recent fix:
    commit e51527233804 ("drm/xe/guc/ct: Flush g2h worker in case of g2h
    response timeout") and should be removed once there is E core
    scheduling fix.
    
    v2: Add platform check(Himal)
    v3: Remove gfx platform check as the issue related to cpu
        platform(John)
        Use the common WA macro(John) and print when the flush
        resolves timeout(Matt B)
    v4: Remove the resolves log and do the flush before taking
        pending_lock(Matt A)
    
    Cc: Badal Nilawar <badal.nilawar@intel.com>
    Cc: Matthew Brost <matthew.brost@intel.com>
    Cc: Matthew Auld <matthew.auld@intel.com>
    Cc: John Harrison <John.C.Harrison@Intel.com>
    Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
    Cc: Lucas De Marchi <lucas.demarchi@intel.com>
    Cc: stable@vger.kernel.org # v6.11+
    Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/2687
    Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
    Reviewed-by: Matthew Auld <matthew.auld@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241029120117.449694-3-nirmoy.das@intel.com
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    (cherry picked from commit e1f6fa55664a0eeb0a641f497e1adfcf6672e995)
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/xe/ufence: Flush xe ordered_wq in case of ufence timeout [+ + +]
Author: Nirmoy Das <nirmoy.das@intel.com>
Date:   Tue Oct 29 13:01:16 2024 +0100

    drm/xe/ufence: Flush xe ordered_wq in case of ufence timeout
    
    [ Upstream commit 7d1e2580ed166f36949b468373b468d188880cd3 ]
    
    Flush xe ordered_wq in case of ufence timeout which is observed
    on LNL and that points to recent scheduling issue with E-cores.
    
    This is similar to the recent fix:
    commit e51527233804 ("drm/xe/guc/ct: Flush g2h worker in case of g2h
    response timeout") and should be removed once there is a E-core
    scheduling fix for LNL.
    
    v2: Add platform check(Himal)
        s/__flush_workqueue/flush_workqueue(Jani)
    v3: Remove gfx platform check as the issue related to cpu
        platform(John)
    v4: Use the Common macro(John) and print when the flush resolves
        timeout(Matt B)
    
    Cc: Badal Nilawar <badal.nilawar@intel.com>
    Cc: Matthew Auld <matthew.auld@intel.com>
    Cc: John Harrison <John.C.Harrison@Intel.com>
    Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
    Cc: Lucas De Marchi <lucas.demarchi@intel.com>
    Cc: stable@vger.kernel.org # v6.11+
    Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/2754
    Suggested-by: Matthew Brost <matthew.brost@intel.com>
    Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
    Reviewed-by: Matthew Auld <matthew.auld@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241029120117.449694-2-nirmoy.das@intel.com
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    (cherry picked from commit 38c4c8722bd74452280951edc44c23de47612001)
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/xe: Drop VM dma-resv lock on xe_sync_in_fence_get failure in exec IOCTL [+ + +]
Author: Matthew Brost <matthew.brost@intel.com>
Date:   Mon Nov 4 20:35:24 2024 -0800

    drm/xe: Drop VM dma-resv lock on xe_sync_in_fence_get failure in exec IOCTL
    
    commit 64a2b6ed4bfd890a0e91955dd8ef8422a3944ed9 upstream.
    
    Upon failure all locks need to be dropped before returning to the user.
    
    Fixes: 58480c1c912f ("drm/xe: Skip VMAs pin when requesting signal to the last XE_EXEC")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Matthew Brost <matthew.brost@intel.com>
    Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
    Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241105043524.4062774-3-matthew.brost@intel.com
    (cherry picked from commit 7d1a4258e602ffdce529f56686925034c1b3b095)
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/xe: Fix possible exec queue leak in exec IOCTL [+ + +]
Author: Matthew Brost <matthew.brost@intel.com>
Date:   Mon Nov 4 20:35:23 2024 -0800

    drm/xe: Fix possible exec queue leak in exec IOCTL
    
    commit af797b831d8975cb4610f396dcb7f03f4b9908e7 upstream.
    
    In a couple of places after an exec queue is looked up the exec IOCTL
    returns on input errors without dropping the exec queue ref. Fix this
    ensuring the exec queue ref is dropped on input error.
    
    Fixes: dd08ebf6c352 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Matthew Brost <matthew.brost@intel.com>
    Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
    Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241105043524.4062774-2-matthew.brost@intel.com
    (cherry picked from commit 07064a200b40ac2195cb6b7b779897d9377e5e6f)
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/xe: Move LNL scheduling WA to xe_device.h [+ + +]
Author: Nirmoy Das <nirmoy.das@intel.com>
Date:   Tue Oct 29 13:01:15 2024 +0100

    drm/xe: Move LNL scheduling WA to xe_device.h
    
    [ Upstream commit 55e8a3f37e54eb1c7b914d6d5565a37282ec1978 ]
    
    Move LNL scheduling WA to xe_device.h so this can be used in other
    places without needing keep the same comment about removal of this WA
    in the future. The WA, which flushes work or workqueues, is now wrapped
    in macros and can be reused wherever needed.
    
    Cc: Badal Nilawar <badal.nilawar@intel.com>
    Cc: Matthew Auld <matthew.auld@intel.com>
    Cc: Matthew Brost <matthew.brost@intel.com>
    Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
    Cc: Lucas De Marchi <lucas.demarchi@intel.com>
    cc: stable@vger.kernel.org # v6.11+
    Suggested-by: John Harrison <John.C.Harrison@Intel.com>
    Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
    Reviewed-by: Matthew Auld <matthew.auld@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241029120117.449694-1-nirmoy.das@intel.com
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    (cherry picked from commit cbe006a6492c01a0058912ae15d473f4c149896c)
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/xe: Set mask bits for CCS_MODE register [+ + +]
Author: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
Date:   Tue Oct 8 13:06:27 2024 +0530

    drm/xe: Set mask bits for CCS_MODE register
    
    commit 7fd3fa006fa56c0ec299c61ecf5c572c723adad5 upstream.
    
    CCS_MODE register requires setting mask bits from Xe2+ platforms. Set
    the mask bits unconditionally, as those bits are unused for older
    platforms.
    
    Signed-off-by: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
    Cc: stable@vger.kernel.org # v6.11+
    Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241008073628.377433-2-balasubramani.vivekanandan@intel.com
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    (cherry picked from commit 23ea2c7572d4735ef66beb1e4feb8ae510b78247)
    [ Fix conflict with mmio refactors ]
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dt-bindings: net: xlnx,axi-ethernet: Correct phy-mode property value [+ + +]
Author: Suraj Gupta <suraj.gupta2@amd.com>
Date:   Mon Oct 28 14:42:14 2024 +0530

    dt-bindings: net: xlnx,axi-ethernet: Correct phy-mode property value
    
    [ Upstream commit b2183187c5fd30659b9caccb92f7e5e680301769 ]
    
    Correct phy-mode property value to 1000base-x.
    
    Fixes: cbb1ca6d5f9a ("dt-bindings: net: xlnx,axi-ethernet: convert bindings document to yaml")
    Signed-off-by: Suraj Gupta <suraj.gupta2@amd.com>
    Reviewed-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Acked-by: Rob Herring (Arm) <robh@kernel.org>
    Link: https://patch.msgid.link/20241028091214.2078726-1-suraj.gupta2@amd.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
e1000e: Remove Meteor Lake SMBUS workarounds [+ + +]
Author: Vitaly Lifshits <vitaly.lifshits@intel.com>
Date:   Tue Oct 1 20:08:48 2024 +0300

    e1000e: Remove Meteor Lake SMBUS workarounds
    
    [ Upstream commit b8473723272e346e22aa487b9046fd324b73a0a5 ]
    
    This is a partial revert to commit 76a0a3f9cc2f ("e1000e: fix force smbus
    during suspend flow"). That commit fixed a sporadic PHY access issue but
    introduced a regression in runtime suspend flows.
    The original issue on Meteor Lake systems was rare in terms of the
    reproduction rate and the number of the systems affected.
    
    After the integration of commit 0a6ad4d9e169 ("e1000e: avoid failing the
    system during pm_suspend"), PHY access loss can no longer cause a
    system-level suspend failure. As it only occurs when the LAN cable is
    disconnected, and is recovered during system resume flow. Therefore, its
    functional impact is low, and the priority is given to stabilizing
    runtime suspend.
    
    Fixes: 76a0a3f9cc2f ("e1000e: fix force smbus during suspend flow")
    Signed-off-by: Vitaly Lifshits <vitaly.lifshits@intel.com>
    Tested-by: Avigail Dahan <avigailx.dahan@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
EDAC/qcom: Make irq configuration optional [+ + +]
Author: Rajendra Nayak <quic_rjendra@quicinc.com>
Date:   Tue Sep 3 15:45:10 2024 +0530

    EDAC/qcom: Make irq configuration optional
    
    [ Upstream commit 0a97195d2181caced187acd7454464b8e37021d7 ]
    
    On most modern qualcomm SoCs, the configuration necessary to enable the
    Tag/Data RAM related irqs being propagated to the SoC irq controller is
    already done in firmware (in DSF or 'DDR System Firmware')
    
    On some like the x1e80100, these registers aren't even accesible to the
    kernel causing a crash when edac device is probed.
    
    Hence, make the irq configuration optional in the driver and mark x1e80100
    as the SoC on which this should be avoided.
    
    Fixes: af16b00578a7 ("arm64: dts: qcom: Add base X1E80100 dtsi and the QCP dts")
    Reported-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Rajendra Nayak <quic_rjendra@quicinc.com>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Reviewed-by: Abel Vesa <abel.vesa@linaro.org>
    Link: https://lore.kernel.org/r/20240903101510.3452734-1-quic_rjendra@quicinc.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
filemap: Fix bounds checking in filemap_read() [+ + +]
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Fri Sep 13 13:57:04 2024 -0400

    filemap: Fix bounds checking in filemap_read()
    
    commit ace149e0830c380ddfce7e466fe860ca502fe4ee upstream.
    
    If the caller supplies an iocb->ki_pos value that is close to the
    filesystem upper limit, and an iterator with a count that causes us to
    overflow that limit, then filemap_read() enters an infinite loop.
    
    This behaviour was discovered when testing xfstests generic/525 with the
    "localio" optimisation for loopback NFS mounts.
    
    Reported-by: Mike Snitzer <snitzer@kernel.org>
    Fixes: c2a9737f45e2 ("vfs,mm: fix a dead loop in truncate_inode_pages_range()")
    Tested-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
firmware: arm_scmi: Fix slab-use-after-free in scmi_bus_notifier() [+ + +]
Author: Xinqi Zhang <quic_xinqzhan@quicinc.com>
Date:   Wed Oct 16 14:13:38 2024 +0800

    firmware: arm_scmi: Fix slab-use-after-free in scmi_bus_notifier()
    
    [ Upstream commit 295416091e44806760ccf753aeafdafc0ae268f3 ]
    
    The scmi_dev->name is released prematurely in __scmi_device_destroy(),
    which causes slab-use-after-free when accessing scmi_dev->name in
    scmi_bus_notifier(). So move the release of scmi_dev->name to
    scmi_device_release() to avoid slab-use-after-free.
    
      |  BUG: KASAN: slab-use-after-free in strncmp+0xe4/0xec
      |  Read of size 1 at addr ffffff80a482bcc0 by task swapper/0/1
      |
      |  CPU: 1 PID: 1 Comm: swapper/0 Not tainted 6.6.38-debug #1
      |  Hardware name: Qualcomm Technologies, Inc. SA8775P Ride (DT)
      |  Call trace:
      |   dump_backtrace+0x94/0x114
      |   show_stack+0x18/0x24
      |   dump_stack_lvl+0x48/0x60
      |   print_report+0xf4/0x5b0
      |   kasan_report+0xa4/0xec
      |   __asan_report_load1_noabort+0x20/0x2c
      |   strncmp+0xe4/0xec
      |   scmi_bus_notifier+0x5c/0x54c
      |   notifier_call_chain+0xb4/0x31c
      |   blocking_notifier_call_chain+0x68/0x9c
      |   bus_notify+0x54/0x78
      |   device_del+0x1bc/0x840
      |   device_unregister+0x20/0xb4
      |   __scmi_device_destroy+0xac/0x280
      |   scmi_device_destroy+0x94/0xd0
      |   scmi_chan_setup+0x524/0x750
      |   scmi_probe+0x7fc/0x1508
      |   platform_probe+0xc4/0x19c
      |   really_probe+0x32c/0x99c
      |   __driver_probe_device+0x15c/0x3c4
      |   driver_probe_device+0x5c/0x170
      |   __driver_attach+0x1c8/0x440
      |   bus_for_each_dev+0xf4/0x178
      |   driver_attach+0x3c/0x58
      |   bus_add_driver+0x234/0x4d4
      |   driver_register+0xf4/0x3c0
      |   __platform_driver_register+0x60/0x88
      |   scmi_driver_init+0xb0/0x104
      |   do_one_initcall+0xb4/0x664
      |   kernel_init_freeable+0x3c8/0x894
      |   kernel_init+0x24/0x1e8
      |   ret_from_fork+0x10/0x20
      |
      |  Allocated by task 1:
      |   kasan_save_stack+0x2c/0x54
      |   kasan_set_track+0x2c/0x40
      |   kasan_save_alloc_info+0x24/0x34
      |   __kasan_kmalloc+0xa0/0xb8
      |   __kmalloc_node_track_caller+0x6c/0x104
      |   kstrdup+0x48/0x84
      |   kstrdup_const+0x34/0x40
      |   __scmi_device_create.part.0+0x8c/0x408
      |   scmi_device_create+0x104/0x370
      |   scmi_chan_setup+0x2a0/0x750
      |   scmi_probe+0x7fc/0x1508
      |   platform_probe+0xc4/0x19c
      |   really_probe+0x32c/0x99c
      |   __driver_probe_device+0x15c/0x3c4
      |   driver_probe_device+0x5c/0x170
      |   __driver_attach+0x1c8/0x440
      |   bus_for_each_dev+0xf4/0x178
      |   driver_attach+0x3c/0x58
      |   bus_add_driver+0x234/0x4d4
      |   driver_register+0xf4/0x3c0
      |   __platform_driver_register+0x60/0x88
      |   scmi_driver_init+0xb0/0x104
      |   do_one_initcall+0xb4/0x664
      |   kernel_init_freeable+0x3c8/0x894
      |   kernel_init+0x24/0x1e8
      |   ret_from_fork+0x10/0x20
      |
      |  Freed by task 1:
      |   kasan_save_stack+0x2c/0x54
      |   kasan_set_track+0x2c/0x40
      |   kasan_save_free_info+0x38/0x5c
      |   __kasan_slab_free+0xe8/0x164
      |   __kmem_cache_free+0x11c/0x230
      |   kfree+0x70/0x130
      |   kfree_const+0x20/0x40
      |   __scmi_device_destroy+0x70/0x280
      |   scmi_device_destroy+0x94/0xd0
      |   scmi_chan_setup+0x524/0x750
      |   scmi_probe+0x7fc/0x1508
      |   platform_probe+0xc4/0x19c
      |   really_probe+0x32c/0x99c
      |   __driver_probe_device+0x15c/0x3c4
      |   driver_probe_device+0x5c/0x170
      |   __driver_attach+0x1c8/0x440
      |   bus_for_each_dev+0xf4/0x178
      |   driver_attach+0x3c/0x58
      |   bus_add_driver+0x234/0x4d4
      |   driver_register+0xf4/0x3c0
      |   __platform_driver_register+0x60/0x88
      |   scmi_driver_init+0xb0/0x104
      |   do_one_initcall+0xb4/0x664
      |   kernel_init_freeable+0x3c8/0x894
      |   kernel_init+0x24/0x1e8
      |   ret_from_fork+0x10/0x20
    
    Fixes: ee7a9c9f67c5 ("firmware: arm_scmi: Add support for multiple device per protocol")
    Signed-off-by: Xinqi Zhang <quic_xinqzhan@quicinc.com>
    Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
    Reviewed-by: Bjorn Andersson <andersson@kernel.org>
    Message-Id: <20241016-fix-arm-scmi-slab-use-after-free-v2-1-1783685ef90d@quicinc.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

firmware: qcom: scm: fix a NULL-pointer dereference [+ + +]
Author: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Date:   Mon Sep 30 10:33:28 2024 +0200

    firmware: qcom: scm: fix a NULL-pointer dereference
    
    [ Upstream commit ca61d6836e6f4442a77762e1074d2706a2a6e578 ]
    
    Some SCM calls can be invoked with __scm being NULL (the driver may not
    have been and will not be probed as there's no SCM entry in device-tree).
    Make sure we don't dereference a NULL pointer.
    
    Fixes: 449d0d84bcd8 ("firmware: qcom: scm: smc: switch to using the SCM allocator")
    Reported-by: Rudraksha Gupta <guptarud@gmail.com>
    Closes: https://lore.kernel.org/lkml/692cfe9a-8c05-4ce4-813e-82b3f310019a@gmail.com/
    Reviewed-by: Konrad Dybcio <konradybcio@kernel.org>
    Tested-by: Rudraksha Gupta <guptarud@gmail.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Stephan Gerhold <stephan.gerhold@linaro.org>
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Reviewed-by: Kuldeep Singh <quic_kuldsing@quicinc.com>
    Link: https://lore.kernel.org/r/20240930083328.17904-1-brgl@bgdev.pl
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

firmware: qcom: scm: Refactor code to support multiple dload mode [+ + +]
Author: Mukesh Ojha <quic_mojha@quicinc.com>
Date:   Mon Jul 15 21:26:54 2024 +0530

    firmware: qcom: scm: Refactor code to support multiple dload mode
    
    [ Upstream commit c802b0a2ed0f67fcec8cc0cac685c8fd0dd0aa6f ]
    
    Currently on Qualcomm SoC, download_mode is enabled if
    CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is selected or
    passed a boolean value from command line.
    
    Refactor the code such that it supports multiple download
    modes and drop CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT config
    instead, give interface to set the download mode from
    module parameter while being backword compatible at the
    same time.
    
    Signed-off-by: Mukesh Ojha <quic_mojha@quicinc.com>
    Link: https://lore.kernel.org/r/20240715155655.1811178-1-quic_mojha@quicinc.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Stable-dep-of: d67907154808 ("firmware: qcom: scm: suppress download mode error")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

firmware: qcom: scm: Return -EOPNOTSUPP for unsupported SHM bridge enabling [+ + +]
Author: Qingqing Zhou <quic_qqzhou@quicinc.com>
Date:   Wed Oct 23 00:51:48 2024 +0530

    firmware: qcom: scm: Return -EOPNOTSUPP for unsupported SHM bridge enabling
    
    [ Upstream commit f489f6c6eb26482010470d77bad3901a3de1b166 ]
    
    When enabling SHM bridge, QTEE returns 0 and sets error 4 in result to
    qcom_scm for unsupported platforms. Currently, tzmem interprets this as
    an unknown error rather than recognizing it as an unsupported platform.
    
    Error log:
    [    0.177224] qcom_scm firmware:scm: error (____ptrval____): Failed to enable the TrustZone memory allocator
    [    0.177244] qcom_scm firmware:scm: probe with driver qcom_scm failed with error 4
    
    To address this, modify the function call qcom_scm_shm_bridge_enable()
    to remap result to indicate an unsupported error. This way, tzmem will
    correctly identify it as an unsupported platform case instead of
    reporting it as an error.
    
    Fixes: 178e19c0df1b ("firmware: qcom: scm: add support for SHM bridge operations")
    Signed-off-by: Qingqing Zhou <quic_qqzhou@quicinc.com>
    Co-developed-by: Kuldeep Singh <quic_kuldsing@quicinc.com>
    Signed-off-by: Kuldeep Singh <quic_kuldsing@quicinc.com>
    Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Reviewed-by: Mukesh Ojha <quic_mojha@quicinc.com>
    Link: https://lore.kernel.org/r/20241022192148.1626633-1-quic_kuldsing@quicinc.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

firmware: qcom: scm: suppress download mode error [+ + +]
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Wed Oct 2 12:01:21 2024 +0200

    firmware: qcom: scm: suppress download mode error
    
    [ Upstream commit d67907154808745b0fae5874edc7b0f78d33991c ]
    
    Stop spamming the logs with errors about missing mechanism for setting
    the so called download (or dump) mode for users that have not requested
    that feature to be enabled in the first place.
    
    This avoids the follow error being logged on boot as well as on
    shutdown when the feature it not available and download mode has not
    been enabled on the kernel command line:
    
            qcom_scm firmware:scm: No available mechanism for setting download mode
    
    Fixes: 79cb2cb8d89b ("firmware: qcom: scm: Disable SDI and write no dump to dump mode")
    Fixes: 781d32d1c970 ("firmware: qcom_scm: Clear download bit during reboot")
    Cc: Mukesh Ojha <quic_mojha@quicinc.com>
    Cc: stable@vger.kernel.org      # 6.4
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Reviewed-by: Mukesh Ojha <quic_mojha@quicinc.com>
    Link: https://lore.kernel.org/r/20241002100122.18809-2-johan+linaro@kernel.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fs/proc: fix compile warning about variable 'vmcore_mmap_ops' [+ + +]
Author: Qi Xi <xiqi2@huawei.com>
Date:   Fri Nov 1 11:48:03 2024 +0800

    fs/proc: fix compile warning about variable 'vmcore_mmap_ops'
    
    commit b8ee299855f08539e04d6c1a6acb3dc9e5423c00 upstream.
    
    When build with !CONFIG_MMU, the variable 'vmcore_mmap_ops'
    is defined but not used:
    
    >> fs/proc/vmcore.c:458:42: warning: unused variable 'vmcore_mmap_ops'
         458 | static const struct vm_operations_struct vmcore_mmap_ops = {
    
    Fix this by only defining it when CONFIG_MMU is enabled.
    
    Link: https://lkml.kernel.org/r/20241101034803.9298-1-xiqi2@huawei.com
    Fixes: 9cb218131de1 ("vmcore: introduce remap_oldmem_pfn_range()")
    Signed-off-by: Qi Xi <xiqi2@huawei.com>
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/lkml/202410301936.GcE8yUos-lkp@intel.com/
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Dave Young <dyoung@redhat.com>
    Cc: Michael Holzheu <holzheu@linux.vnet.ibm.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: Wang ShaoBo <bobo.shaobowang@huawei.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
HID: core: zero-initialize the report buffer [+ + +]
Author: Jiri Kosina <jikos@kernel.org>
Date:   Tue Oct 29 15:44:35 2024 +0100

    HID: core: zero-initialize the report buffer
    
    [ Upstream commit 177f25d1292c7e16e1199b39c85480f7f8815552 ]
    
    Since the report buffer is used by all kinds of drivers in various ways, let's
    zero-initialize it during allocation to make sure that it can't be ever used
    to leak kernel memory via specially-crafted report.
    
    Fixes: 27ce405039bf ("HID: fix data access in implement()")
    Reported-by: Benoît Sevens <bsevens@google.com>
    Acked-by: Benjamin Tissoires <bentiss@kernel.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hv_sock: Initializing vsk->trans to NULL to prevent a dangling pointer [+ + +]
Author: Hyunwoo Kim <v4bel@theori.io>
Date:   Wed Nov 6 04:36:04 2024 -0500

    hv_sock: Initializing vsk->trans to NULL to prevent a dangling pointer
    
    commit e629295bd60abf4da1db85b82819ca6a4f6c1e79 upstream.
    
    When hvs is released, there is a possibility that vsk->trans may not
    be initialized to NULL, which could lead to a dangling pointer.
    This issue is resolved by initializing vsk->trans to NULL.
    
    Signed-off-by: Hyunwoo Kim <v4bel@theori.io>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Link: https://patch.msgid.link/Zys4hCj61V+mQfX2@v4bel-B760M-AORUS-ELITE-AX
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
i2c: designware: do not hold SCL low when I2C_DYNAMIC_TAR_UPDATE is not set [+ + +]
Author: Liu Peibao <loven.liu@jaguarmicro.com>
Date:   Fri Nov 1 16:12:43 2024 +0800

    i2c: designware: do not hold SCL low when I2C_DYNAMIC_TAR_UPDATE is not set
    
    commit 8de3e97f3d3d62cd9f3067f073e8ac93261597db upstream.
    
    When the Tx FIFO is empty and the last command has no STOP bit
    set, the master holds SCL low. If I2C_DYNAMIC_TAR_UPDATE is not
    set, BIT(13) MST_ON_HOLD of IC_RAW_INTR_STAT is not enabled,
    causing the __i2c_dw_disable() timeout. This is quite similar to
    commit 2409205acd3c ("i2c: designware: fix __i2c_dw_disable() in
    case master is holding SCL low"). Also check BIT(7)
    MST_HOLD_TX_FIFO_EMPTY in IC_STATUS, which is available when
    IC_STAT_FOR_CLK_STRETCH is set.
    
    Fixes: 2409205acd3c ("i2c: designware: fix __i2c_dw_disable() in case master is holding SCL low")
    Co-developed-by: Xiaowu Ding <xiaowu.ding@jaguarmicro.com>
    Signed-off-by: Xiaowu Ding <xiaowu.ding@jaguarmicro.com>
    Co-developed-by: Angus Chen <angus.chen@jaguarmicro.com>
    Signed-off-by: Angus Chen <angus.chen@jaguarmicro.com>
    Signed-off-by: Liu Peibao <loven.liu@jaguarmicro.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
i40e: fix race condition by adding filter's intermediate sync state [+ + +]
Author: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Date:   Wed Oct 16 11:30:11 2024 +0200

    i40e: fix race condition by adding filter's intermediate sync state
    
    [ Upstream commit f30490e9695ef7da3d0899c6a0293cc7cd373567 ]
    
    Fix a race condition in the i40e driver that leads to MAC/VLAN filters
    becoming corrupted and leaking. Address the issue that occurs under
    heavy load when multiple threads are concurrently modifying MAC/VLAN
    filters by setting mac and port VLAN.
    
    1. Thread T0 allocates a filter in i40e_add_filter() within
            i40e_ndo_set_vf_port_vlan().
    2. Thread T1 concurrently frees the filter in __i40e_del_filter() within
            i40e_ndo_set_vf_mac().
    3. Subsequently, i40e_service_task() calls i40e_sync_vsi_filters(), which
            refers to the already freed filter memory, causing corruption.
    
    Reproduction steps:
    1. Spawn multiple VFs.
    2. Apply a concurrent heavy load by running parallel operations to change
            MAC addresses on the VFs and change port VLANs on the host.
    3. Observe errors in dmesg:
    "Error I40E_AQ_RC_ENOSPC adding RX filters on VF XX,
            please set promiscuous on manually for VF XX".
    
    Exact code for stable reproduction Intel can't open-source now.
    
    The fix involves implementing a new intermediate filter state,
    I40E_FILTER_NEW_SYNC, for the time when a filter is on a tmp_add_list.
    These filters cannot be deleted from the hash list directly but
    must be removed using the full process.
    
    Fixes: 278e7d0b9d68 ("i40e: store MAC/VLAN filters in a hash with the MAC Address as key")
    Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
    Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
    Reviewed-by: Michal Schmidt <mschmidt@redhat.com>
    Tested-by: Michal Schmidt <mschmidt@redhat.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ice: change q_index variable type to s16 to store -1 value [+ + +]
Author: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
Date:   Mon Oct 28 12:59:22 2024 -0400

    ice: change q_index variable type to s16 to store -1 value
    
    [ Upstream commit 64502dac974a5d9951d16015fa2e16a14e5f2bb2 ]
    
    Fix Flow Director not allowing to re-map traffic to 0th queue when action
    is configured to drop (and vice versa).
    
    The current implementation of ethtool callback in the ice driver forbids
    change Flow Director action from 0 to -1 and from -1 to 0 with an error,
    e.g:
    
     # ethtool -U eth2 flow-type tcp4 src-ip 1.1.1.1 loc 1 action 0
     # ethtool -U eth2 flow-type tcp4 src-ip 1.1.1.1 loc 1 action -1
     rmgr: Cannot insert RX class rule: Invalid argument
    
    We set the value of `u16 q_index = 0` at the beginning of the function
    ice_set_fdir_input_set(). In case of "drop traffic" action (which is
    equal to -1 in ethtool) we store the 0 value. Later, when want to change
    traffic rule to redirect to queue with index 0 it returns an error
    caused by duplicate found.
    
    Fix this behaviour by change of the type of field `q_index` from u16 to s16
    in `struct ice_fdir_fltr`. This allows to store -1 in the field in case
    of "drop traffic" action. What is more, change the variable type in the
    function ice_set_fdir_input_set() and assign at the beginning the new
    `#define ICE_FDIR_NO_QUEUE_IDX` which is -1. Later, if the action is set
    to another value (point specific queue index) the variable value is
    overwritten in the function.
    
    Fixes: cac2a27cd9ab ("ice: Support IPv4 Flow Director filters")
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Signed-off-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
idpf: avoid vport access in idpf_get_link_ksettings [+ + +]
Author: Pavan Kumar Linga <pavan.kumar.linga@intel.com>
Date:   Fri Oct 25 11:38:42 2024 -0700

    idpf: avoid vport access in idpf_get_link_ksettings
    
    commit 81d2fb4c7c18a3b36ba3e00b9d5b753107472d75 upstream.
    
    When the device control plane is removed or the platform
    running device control plane is rebooted, a reset is detected
    on the driver. On driver reset, it releases the resources and
    waits for the reset to complete. If the reset fails, it takes
    the error path and releases the vport lock. At this time if the
    monitoring tools tries to access link settings, it call traces
    for accessing released vport pointer.
    
    To avoid it, move link_speed_mbps to netdev_priv structure
    which removes the dependency on vport pointer and the vport lock
    in idpf_get_link_ksettings. Also use netif_carrier_ok()
    to check the link status and adjust the offsetof to use link_up
    instead of link_speed_mbps.
    
    Fixes: 02cbfba1add5 ("idpf: add ethtool callbacks")
    Cc: stable@vger.kernel.org # 6.7+
    Reviewed-by: Tarun K Singh <tarun.k.singh@intel.com>
    Signed-off-by: Pavan Kumar Linga <pavan.kumar.linga@intel.com>
    Tested-by: Krishneil Singh <krishneil.k.singh@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

idpf: fix idpf_vc_core_init error path [+ + +]
Author: Pavan Kumar Linga <pavan.kumar.linga@intel.com>
Date:   Fri Oct 25 11:38:43 2024 -0700

    idpf: fix idpf_vc_core_init error path
    
    commit 9b58031ff96b84a38d7b73b23c7ecfb2e0557f43 upstream.
    
    In an event where the platform running the device control plane
    is rebooted, reset is detected on the driver. It releases
    all the resources and waits for the reset to complete. Once the
    reset is done, it tries to build the resources back. At this
    time if the device control plane is not yet started, then
    the driver timeouts on the virtchnl message and retries to
    establish the mailbox again.
    
    In the retry flow, mailbox is deinitialized but the mailbox
    workqueue is still alive and polling for the mailbox message.
    This results in accessing the released control queue leading to
    null-ptr-deref. Fix it by unrolling the work queue cancellation
    and mailbox deinitialization in the reverse order which they got
    initialized.
    
    Fixes: 4930fbf419a7 ("idpf: add core init and interrupt request")
    Fixes: 34c21fa894a1 ("idpf: implement virtchnl transaction manager")
    Cc: stable@vger.kernel.org # 6.9+
    Reviewed-by: Tarun K Singh <tarun.k.singh@intel.com>
    Signed-off-by: Pavan Kumar Linga <pavan.kumar.linga@intel.com>
    Tested-by: Krishneil Singh <krishneil.k.singh@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
irqchip/gic-v3: Force propagation of the active state with a read-back [+ + +]
Author: Marc Zyngier <maz@kernel.org>
Date:   Wed Nov 6 08:44:18 2024 +0000

    irqchip/gic-v3: Force propagation of the active state with a read-back
    
    commit 464cb98f1c07298c4c10e714ae0c36338d18d316 upstream.
    
    Christoffer reports that on some implementations, writing to
    GICR_ISACTIVER0 (and similar GICD registers) can race badly with a guest
    issuing a deactivation of that interrupt via the system register interface.
    
    There are multiple reasons to this:
    
     - this uses an early write-acknoledgement memory type (nGnRE), meaning
       that the write may only have made it as far as some interconnect
       by the time the store is considered "done"
    
     - the GIC itself is allowed to buffer the write until it decides to
       take it into account (as long as it is in finite time)
    
    The effects are that the activation may not have taken effect by the time
    the kernel enters the guest, forcing an immediate exit, or that a guest
    deactivation occurs before the interrupt is active, doing nothing.
    
    In order to guarantee that the write to the ISACTIVER register has taken
    effect, read back from it, forcing the interconnect to propagate the write,
    and the GIC to process the write before returning the read.
    
    Reported-by: Christoffer Dall <christoffer.dall@arm.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Christoffer Dall <christoffer.dall@arm.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/all/20241106084418.3794612-1-maz@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
KEYS: trusted: dcp: fix NULL dereference in AEAD crypto operation [+ + +]
Author: David Gstir <david@sigma-star.at>
Date:   Tue Oct 29 12:34:01 2024 +0100

    KEYS: trusted: dcp: fix NULL dereference in AEAD crypto operation
    
    commit 04de7589e0a95167d803ecadd115235ba2c14997 upstream.
    
    When sealing or unsealing a key blob we currently do not wait for
    the AEAD cipher operation to finish and simply return after submitting
    the request. If there is some load on the system we can exit before
    the cipher operation is done and the buffer we read from/write to
    is already removed from the stack. This will e.g. result in NULL
    pointer dereference errors in the DCP driver during blob creation.
    
    Fix this by waiting for the AEAD cipher operation to finish before
    resuming the seal and unseal calls.
    
    Cc: stable@vger.kernel.org # v6.10+
    Fixes: 0e28bf61a5f9 ("KEYS: trusted: dcp: fix leak of blob encryption key")
    Reported-by: Parthiban N <parthiban@linumiz.com>
    Closes: https://lore.kernel.org/keyrings/254d3bb1-6dbc-48b4-9c08-77df04baee2f@linumiz.com/
    Signed-off-by: David Gstir <david@sigma-star.at>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ksmbd: check outstanding simultaneous SMB operations [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Mon Nov 4 13:43:06 2024 +0900

    ksmbd: check outstanding simultaneous SMB operations
    
    commit 0a77d947f599b1f39065015bec99390d0c0022ee upstream.
    
    If Client send simultaneous SMB operations to ksmbd, It exhausts too much
    memory through the "ksmbd_work_cache”. It will cause OOM issue.
    ksmbd has a credit mechanism but it can't handle this problem. This patch
    add the check if it exceeds max credits to prevent this problem by assuming
    that one smb request consumes at least one credit.
    
    Cc: stable@vger.kernel.org # v5.15+
    Reported-by: Norbert Szetei <norbert@doyensec.com>
    Tested-by: Norbert Szetei <norbert@doyensec.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ksmbd: fix slab-use-after-free in ksmbd_smb2_session_create [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Sat Nov 2 18:46:38 2024 +0900

    ksmbd: fix slab-use-after-free in ksmbd_smb2_session_create
    
    commit 0a77715db22611df50b178374c51e2ba0d58866e upstream.
    
    There is a race condition between ksmbd_smb2_session_create and
    ksmbd_expire_session. This patch add missing sessions_table_lock
    while adding/deleting session from global session table.
    
    Cc: stable@vger.kernel.org # v5.15+
    Reported-by: Norbert Szetei <norbert@doyensec.com>
    Tested-by: Norbert Szetei <norbert@doyensec.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ksmbd: fix slab-use-after-free in smb3_preauth_hash_rsp [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Mon Nov 4 13:40:41 2024 +0900

    ksmbd: fix slab-use-after-free in smb3_preauth_hash_rsp
    
    commit b8fc56fbca7482c1e5c0e3351c6ae78982e25ada upstream.
    
    ksmbd_user_session_put should be called under smb3_preauth_hash_rsp().
    It will avoid freeing session before calling smb3_preauth_hash_rsp().
    
    Cc: stable@vger.kernel.org # v5.15+
    Reported-by: Norbert Szetei <norbert@doyensec.com>
    Tested-by: Norbert Szetei <norbert@doyensec.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ksmbd: Fix the missing xa_store error check [+ + +]
Author: Jinjie Ruan <ruanjinjie@huawei.com>
Date:   Mon Oct 28 08:28:30 2024 +0900

    ksmbd: Fix the missing xa_store error check
    
    commit 3abab905b14f4ba756d413f37f1fb02b708eee93 upstream.
    
    xa_store() can fail, it return xa_err(-EINVAL) if the entry cannot
    be stored in an XArray, or xa_err(-ENOMEM) if memory allocation failed,
    so check error for xa_store() to fix it.
    
    Cc: stable@vger.kernel.org
    Fixes: b685757c7b08 ("ksmbd: Implements sess->rpc_handle_list as xarray")
    Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
    Acked-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
KVM: PPC: Book3S HV: Mask off LPCR_MER for a vCPU before running it to avoid spurious interrupts [+ + +]
Author: Gautam Menghani <gautam@linux.ibm.com>
Date:   Mon Oct 28 14:34:09 2024 +0530

    KVM: PPC: Book3S HV: Mask off LPCR_MER for a vCPU before running it to avoid spurious interrupts
    
    commit a373830f96db288a3eb43a8692b6bcd0bd88dfe1 upstream.
    
    Running a L2 vCPU (see [1] for terminology) with LPCR_MER bit set and no
    pending interrupts results in that L2 vCPU getting an infinite flood of
    spurious interrupts. The 'if check' in kvmhv_run_single_vcpu() sets the
    LPCR_MER bit if there are pending interrupts.
    
    The spurious flood problem can be observed in 2 cases:
    1. Crashing the guest while interrupt heavy workload is running
      a. Start a L2 guest and run an interrupt heavy workload (eg: ipistorm)
      b. While the workload is running, crash the guest (make sure kdump
         is configured)
      c. Any one of the vCPUs of the guest will start getting an infinite
         flood of spurious interrupts.
    
    2. Running LTP stress tests in multiple guests at the same time
       a. Start 4 L2 guests.
       b. Start running LTP stress tests on all 4 guests at same time.
       c. In some time, any one/more of the vCPUs of any of the guests will
          start getting an infinite flood of spurious interrupts.
    
    The root cause of both the above issues is the same:
    1. A NMI is sent to a running vCPU that has LPCR_MER bit set.
    2. In the NMI path, all registers are refreshed, i.e, H_GUEST_GET_STATE
       is called for all the registers.
    3. When H_GUEST_GET_STATE is called for LPCR, the vcpu->arch.vcore->lpcr
       of that vCPU at L1 level gets updated with LPCR_MER set to 1, and this
       new value is always used whenever that vCPU runs, regardless of whether
       there was a pending interrupt.
    4. Since LPCR_MER is set, the vCPU in L2 always jumps to the external
       interrupt handler, and this cycle never ends.
    
    Fix the spurious flood by masking off the LPCR_MER bit before running a
    L2 vCPU to ensure that it is not set if there are no pending interrupts.
    
    [1] Terminology:
    1. L0 : PAPR hypervisor running in HV mode
    2. L1 : Linux guest (logical partition) running on top of L0
    3. L2 : KVM guest running on top of L1
    
    Fixes: ec0f6639fa88 ("KVM: PPC: Book3S HV nestedv2: Ensure LPCR_MER bit is passed to the L0")
    Cc: stable@vger.kernel.org # v6.8+
    Signed-off-by: Gautam Menghani <gautam@linux.ibm.com>
    Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 6.11.8 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Nov 14 13:21:16 2024 +0100

    Linux 6.11.8
    
    Link: https://lore.kernel.org/r/20241112101900.865487674@linuxfoundation.org
    Tested-by: Ronald Warsow <rwarsow@gmx.de>
    Tested-by: Luna Jernberg <droidbittin@gmail.com>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Hardik Garg <hargar@linux.microsoft.com>
    Tested-by: Christian Heusel <christian@heusel.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
media: adv7604: prevent underflow condition when reporting colorspace [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Tue Oct 15 12:25:09 2024 +0200

    media: adv7604: prevent underflow condition when reporting colorspace
    
    [ Upstream commit 50b9fa751d1aef5d262bde871c70a7f44262f0bc ]
    
    Currently, adv76xx_log_status() reads some date using
    io_read() which may return negative values. The current logic
    doesn't check such errors, causing colorspace to be reported
    on a wrong way at adv76xx_log_status(), as reported by Coverity.
    
    If I/O error happens there, print a different message, instead
    of reporting bogus messages to userspace.
    
    Fixes: 54450f591c99 ("[media] adv7604: driver for the Analog Devices ADV7604 video decoder")
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Reviewed-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: ar0521: don't overflow when checking PLL values [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Tue Oct 15 11:38:10 2024 +0200

    media: ar0521: don't overflow when checking PLL values
    
    commit 438d3085ba5b8b5bfa5290faa594e577f6ac9aa7 upstream.
    
    The PLL checks are comparing 64 bit integers with 32 bit
    ones, as reported by Coverity. Depending on the values of
    the variables, this may underflow.
    
    Fix it ensuring that both sides of the expression are u64.
    
    Fixes: 852b50aeed15 ("media: On Semi AR0521 sensor driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: av7110: fix a spectre vulnerability [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Tue Oct 15 09:24:24 2024 +0200

    media: av7110: fix a spectre vulnerability
    
    commit 458ea1c0be991573ec436aa0afa23baacfae101a upstream.
    
    As warned by smatch:
            drivers/staging/media/av7110/av7110_ca.c:270 dvb_ca_ioctl() warn: potential spectre issue 'av7110->ci_slot' [w] (local cap)
    
    There is a spectre-related vulnerability at the code. Fix it.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: cx24116: prevent overflows on SNR calculus [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Tue Oct 15 12:14:11 2024 +0200

    media: cx24116: prevent overflows on SNR calculus
    
    commit 576a307a7650bd544fbb24df801b9b7863b85e2f upstream.
    
    as reported by Coverity, if reading SNR registers fail, a negative
    number will be returned, causing an underflow when reading SNR
    registers.
    
    Prevent that.
    
    Fixes: 8953db793d5b ("V4L/DVB (9178): cx24116: Add module parameter to return SNR as ESNO.")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: dvb-core: add missing buffer index check [+ + +]
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Tue Oct 1 11:01:34 2024 +0200

    media: dvb-core: add missing buffer index check
    
    commit fa88dc7db176c79b50adb132a56120a1d4d9d18b upstream.
    
    dvb_vb2_expbuf() didn't check if the given buffer index was
    for a valid buffer. Add this check.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Reported-by: Chenyuan Yang <chenyuan0y@gmail.com>
    Closes: https://lore.kernel.org/linux-media/?q=WARNING+in+vb2_core_reqbufs
    Fixes: 7dc866df4012 ("media: dvb-core: Use vb2_get_buffer() instead of directly access to buffers array")
    Reviewed-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: dvb_frontend: don't play tricks with underflow values [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Tue Oct 15 16:05:16 2024 +0200

    media: dvb_frontend: don't play tricks with underflow values
    
    [ Upstream commit 9883a4d41aba7612644e9bb807b971247cea9b9d ]
    
    fepriv->auto_sub_step is unsigned. Setting it to -1 is just a
    trick to avoid calling continue, as reported by Coverity.
    
    It relies to have this code just afterwards:
    
            if (!ready) fepriv->auto_sub_step++;
    
    Simplify the code by simply setting it to zero and use
    continue to return to the while loop.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: dvbdev: prevent the risk of out of memory access [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Tue Oct 15 15:23:01 2024 +0200

    media: dvbdev: prevent the risk of out of memory access
    
    [ Upstream commit 972e63e895abbe8aa1ccbdbb4e6362abda7cd457 ]
    
    The dvbdev contains a static variable used to store dvb minors.
    
    The behavior of it depends if CONFIG_DVB_DYNAMIC_MINORS is set
    or not. When not set, dvb_register_device() won't check for
    boundaries, as it will rely that a previous call to
    dvb_register_adapter() would already be enforcing it.
    
    On a similar way, dvb_device_open() uses the assumption
    that the register functions already did the needed checks.
    
    This can be fragile if some device ends using different
    calls. This also generate warnings on static check analysers
    like Coverity.
    
    So, add explicit guards to prevent potential risk of OOM issues.
    
    Fixes: 5dd3f3071070 ("V4L/DVB (9361): Dynamic DVB minor allocation")
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: mgb4: protect driver against spectre [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Tue Oct 15 10:33:10 2024 +0200

    media: mgb4: protect driver against spectre
    
    commit 2aee207e5b3c94ef859316008119ea06d6798d49 upstream.
    
    Frequency range is set from sysfs via frequency_range_store(),
    being vulnerable to spectre, as reported by smatch:
    
            drivers/media/pci/mgb4/mgb4_cmt.c:231 mgb4_cmt_set_vin_freq_range() warn: potential spectre issue 'cmt_vals_in' [r]
            drivers/media/pci/mgb4/mgb4_cmt.c:238 mgb4_cmt_set_vin_freq_range() warn: possible spectre second half.  'reg_set'
    
    Fix it.
    
    Fixes: 0ab13674a9bd ("media: pci: mgb4: Added Digiteq Automotive MGB4 driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Reviewed-by: Martin Tůma <martin.tuma@digiteqautomotive.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: pulse8-cec: fix data timestamp at pulse8_setup() [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Wed Oct 16 11:24:15 2024 +0200

    media: pulse8-cec: fix data timestamp at pulse8_setup()
    
    commit ba9cf6b430433e57bfc8072364e944b7c0eca2a4 upstream.
    
    As pointed by Coverity, there is a hidden overflow condition there.
    As date is signed and u8 is unsigned, doing:
    
            date = (data[0] << 24)
    
    With a value bigger than 07f will make all upper bits of date
    0xffffffff. This can be demonstrated with this small code:
    
    <code>
    typedef int64_t time64_t;
    typedef uint8_t u8;
    
    int main(void)
    {
            u8 data[] = { 0xde ,0xad , 0xbe, 0xef };
            time64_t date;
    
            date = (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3];
            printf("Invalid data = 0x%08lx\n", date);
    
            date = ((unsigned)data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3];
            printf("Expected data = 0x%08lx\n", date);
    
            return 0;
    }
    </code>
    
    Fix it by converting the upper bit calculation to unsigned.
    
    Fixes: cea28e7a55e7 ("media: pulse8-cec: reorganize function order")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: s5p-jpeg: prevent buffer overflows [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Tue Oct 15 11:10:31 2024 +0200

    media: s5p-jpeg: prevent buffer overflows
    
    commit 14a22762c3daeac59a5a534e124acbb4d7a79b3a upstream.
    
    The current logic allows word to be less than 2. If this happens,
    there will be buffer overflows, as reported by smatch. Add extra
    checks to prevent it.
    
    While here, remove an unused word = 0 assignment.
    
    Fixes: 6c96dbbc2aa9 ("[media] s5p-jpeg: add support for 5433")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Reviewed-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: stb0899_algo: initialize cfr before using it [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Tue Oct 15 13:29:43 2024 +0200

    media: stb0899_algo: initialize cfr before using it
    
    commit 2d861977e7314f00bf27d0db17c11ff5e85e609a upstream.
    
    The loop at stb0899_search_carrier() starts with a random
    value for cfr, as reported by Coverity.
    
    Initialize it to zero, just like stb0899_dvbs_algo() to ensure
    that carrier search won't bail out.
    
    Fixes: 8bd135bab91f ("V4L/DVB (9375): Add STB0899 support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: uvcvideo: Skip parsing frames of type UVC_VS_UNDEFINED in uvc_parse_format [+ + +]
Author: Benoit Sevens <bsevens@google.com>
Date:   Thu Nov 7 14:22:02 2024 +0000

    media: uvcvideo: Skip parsing frames of type UVC_VS_UNDEFINED in uvc_parse_format
    
    commit ecf2b43018da9579842c774b7f35dbe11b5c38dd upstream.
    
    This can lead to out of bounds writes since frames of this type were not
    taken into account when calculating the size of the frames buffer in
    uvc_parse_streaming.
    
    Fixes: c0efd232929c ("V4L/DVB (8145a): USB Video Class driver")
    Signed-off-by: Benoit Sevens <bsevens@google.com>
    Cc: stable@vger.kernel.org
    Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: v4l2-ctrls-api: fix error handling for v4l2_g_ctrl() [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Tue Oct 15 14:23:38 2024 +0200

    media: v4l2-ctrls-api: fix error handling for v4l2_g_ctrl()
    
    commit 4c76f331a9a173ac8fe1297a9231c2a38f88e368 upstream.
    
    As detected by Coverity, the error check logic at get_ctrl() is
    broken: if ptr_to_user() fails to fill a control due to an error,
    no errors are returned and v4l2_g_ctrl() returns success on a
    failed operation, which may cause applications to fail.
    
    Add an error check at get_ctrl() and ensure that it will
    be returned to userspace without filling the control value if
    get_ctrl() fails.
    
    Fixes: 71c689dc2e73 ("media: v4l2-ctrls: split up into four source files")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: v4l2-tpg: prevent the risk of a division by zero [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Wed Oct 16 11:53:15 2024 +0200

    media: v4l2-tpg: prevent the risk of a division by zero
    
    commit e6a3ea83fbe15d4818d01804e904cbb0e64e543b upstream.
    
    As reported by Coverity, the logic at tpg_precalculate_line()
    blindly rescales the buffer even when scaled_witdh is equal to
    zero. If this ever happens, this will cause a division by zero.
    
    Instead, add a WARN_ON_ONCE() to trigger such cases and return
    without doing any precalculation.
    
    Fixes: 63881df94d3e ("[media] vivid: add the Test Pattern Generator")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: vivid: fix buffer overwrite when using > 32 buffers [+ + +]
Author: Hans Verkuil <hverkuil@xs4all.nl>
Date:   Thu Oct 24 10:21:30 2024 +0200

    media: vivid: fix buffer overwrite when using > 32 buffers
    
    commit 96d8569563916fe2f8fe17317e20e43f54f9ba4b upstream.
    
    The maximum number of buffers that can be requested was increased to
    64 for the video capture queue. But video capture used a must_blank
    array that was still sized for 32 (VIDEO_MAX_FRAME). This caused an
    out-of-bounds write when using buffer indices >= 32.
    
    Create a new define MAX_VID_CAP_BUFFERS that is used to access the
    must_blank array and set max_num_buffers for the video capture queue.
    
    This solves a crash reported by:
    
            https://bugzilla.kernel.org/show_bug.cgi?id=219258
    
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Fixes: cea70ed416b4 ("media: test-drivers: vivid: Increase max supported buffers for capture queues")
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/damon/core: avoid overflow in damon_feed_loop_next_input() [+ + +]
Author: SeongJae Park <sj@kernel.org>
Date:   Thu Oct 31 09:12:03 2024 -0700

    mm/damon/core: avoid overflow in damon_feed_loop_next_input()
    
    commit 4401e9d10ab0281a520b9f8c220f30f60b5c248f upstream.
    
    damon_feed_loop_next_input() is inefficient and fragile to overflows.
    Specifically, 'score_goal_diff_bp' calculation can overflow when 'score'
    is high.  The calculation is actually unnecessary at all because 'goal' is
    a constant of value 10,000.  Calculation of 'compensation' is again
    fragile to overflow.  Final calculation of return value for under-achiving
    case is again fragile to overflow when the current score is
    under-achieving the target.
    
    Add two corner cases handling at the beginning of the function to make the
    body easier to read, and rewrite the body of the function to avoid
    overflows and the unnecessary bp value calcuation.
    
    Link: https://lkml.kernel.org/r/20241031161203.47751-1-sj@kernel.org
    Fixes: 9294a037c015 ("mm/damon/core: implement goal-oriented feedback-driven quota auto-tuning")
    Signed-off-by: SeongJae Park <sj@kernel.org>
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Closes: https://lore.kernel.org/944f3d5b-9177-48e7-8ec9-7f1331a3fea3@roeck-us.net
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Cc: <stable@vger.kernel.org>    [6.8.x]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mm/damon/core: handle zero schemes apply interval [+ + +]
Author: SeongJae Park <sj@kernel.org>
Date:   Thu Oct 31 11:37:57 2024 -0700

    mm/damon/core: handle zero schemes apply interval
    
    commit 8e7bde615f634a82a44b1f3d293c049fd3ef9ca9 upstream.
    
    DAMON's logics to determine if this is the time to apply damos schemes
    assumes next_apply_sis is always set larger than current
    passed_sample_intervals.  And therefore assume continuously incrementing
    passed_sample_intervals will make it reaches to the next_apply_sis in
    future.  The logic hence does apply the scheme and update next_apply_sis
    only if passed_sample_intervals is same to next_apply_sis.
    
    If Schemes apply interval is set as zero, however, next_apply_sis is set
    same to current passed_sample_intervals, respectively.  And
    passed_sample_intervals is incremented before doing the next_apply_sis
    check.  Hence, next_apply_sis becomes larger than next_apply_sis, and the
    logic says it is not the time to apply schemes and update next_apply_sis.
    In other words, DAMON stops applying schemes until passed_sample_intervals
    overflows.
    
    Based on the documents and the common sense, a reasonable behavior for
    such inputs would be applying the schemes for every sampling interval.
    Handle the case by removing the assumption.
    
    Link: https://lkml.kernel.org/r/20241031183757.49610-3-sj@kernel.org
    Fixes: 42f994b71404 ("mm/damon/core: implement scheme-specific apply interval")
    Signed-off-by: SeongJae Park <sj@kernel.org>
    Cc: <stable@vger.kernel.org>    [6.7.x]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mm/damon/core: handle zero {aggregation,ops_update} intervals [+ + +]
Author: SeongJae Park <sj@kernel.org>
Date:   Thu Oct 31 11:37:56 2024 -0700

    mm/damon/core: handle zero {aggregation,ops_update} intervals
    
    commit 3488af0970445ff5532c7e8dc5e6456b877aee5e upstream.
    
    Patch series "mm/damon/core: fix handling of zero non-sampling intervals".
    
    DAMON's internal intervals accounting logic is not correctly handling
    non-sampling intervals of zero values for a wrong assumption.  This could
    cause unexpected monitoring behavior, and even result in infinite hang of
    DAMON sysfs interface user threads in case of zero aggregation interval.
    Fix those by updating the intervals accounting logic.  For details of the
    root case and solutions, please refer to commit messages of fixes.
    
    
    This patch (of 2):
    
    DAMON's logics to determine if this is the time to do aggregation and ops
    update assumes next_{aggregation,ops_update}_sis are always set larger
    than current passed_sample_intervals.  And therefore it further assumes
    continuously incrementing passed_sample_intervals every sampling interval
    will make it reaches to the next_{aggregation,ops_update}_sis in future.
    The logic therefore make the action and update
    next_{aggregation,ops_updaste}_sis only if passed_sample_intervals is same
    to the counts, respectively.
    
    If Aggregation interval or Ops update interval are zero, however,
    next_aggregation_sis or next_ops_update_sis are set same to current
    passed_sample_intervals, respectively.  And passed_sample_intervals is
    incremented before doing the next_{aggregation,ops_update}_sis check.
    Hence, passed_sample_intervals becomes larger than
    next_{aggregation,ops_update}_sis, and the logic says it is not the time
    to do the action and update next_{aggregation,ops_update}_sis forever,
    until an overflow happens.  In other words, DAMON stops doing aggregations
    or ops updates effectively forever, and users cannot get monitoring
    results.
    
    Based on the documents and the common sense, a reasonable behavior for
    such inputs is doing an aggregation and an ops update for every sampling
    interval.  Handle the case by removing the assumption.
    
    Note that this could incur particular real issue for DAMON sysfs interface
    users, in case of zero Aggregation interval.  When user starts DAMON with
    zero Aggregation interval and asks online DAMON parameter tuning via DAMON
    sysfs interface, the request is handled by the aggregation callback.
    Until the callback finishes the work, the user who requested the online
    tuning just waits.  Hence, the user will be stuck until the
    passed_sample_intervals overflows.
    
    Link: https://lkml.kernel.org/r/20241031183757.49610-1-sj@kernel.org
    Link: https://lkml.kernel.org/r/20241031183757.49610-2-sj@kernel.org
    Fixes: 4472edf63d66 ("mm/damon/core: use number of passed access sampling as a timer")
    Signed-off-by: SeongJae Park <sj@kernel.org>
    Cc: <stable@vger.kernel.org>    [6.7.x]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/mlock: set the correct prev on failure [+ + +]
Author: Wei Yang <richard.weiyang@gmail.com>
Date:   Sun Oct 27 12:33:21 2024 +0000

    mm/mlock: set the correct prev on failure
    
    commit faa242b1d2a97143150bdc50d5b61fd70fcd17cd upstream.
    
    After commit 94d7d9233951 ("mm: abstract the vma_merge()/split_vma()
    pattern for mprotect() et al."), if vma_modify_flags() return error, the
    vma is set to an error code.  This will lead to an invalid prev be
    returned.
    
    Generally this shouldn't matter as the caller should treat an error as
    indicating state is now invalidated, however unfortunately
    apply_mlockall_flags() does not check for errors and assumes that
    mlock_fixup() correctly maintains prev even if an error were to occur.
    
    This patch fixes that assumption.
    
    [lorenzo.stoakes@oracle.com: provide a better fix and rephrase the log]
    Link: https://lkml.kernel.org/r/20241027123321.19511-1-richard.weiyang@gmail.com
    Fixes: 94d7d9233951 ("mm: abstract the vma_merge()/split_vma() pattern for mprotect() et al.")
    Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
    Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Reviewed-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Jann Horn <jannh@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/slab: fix warning caused by duplicate kmem_cache creation in kmem_buckets_create [+ + +]
Author: Koichiro Den <koichiro.den@gmail.com>
Date:   Tue Nov 5 11:27:47 2024 +0900

    mm/slab: fix warning caused by duplicate kmem_cache creation in kmem_buckets_create
    
    commit 9c9201afebea1efc7ea4b8f721ee18a05bb8aca1 upstream.
    
    Commit b035f5a6d852 ("mm: slab: reduce the kmalloc() minimum alignment
    if DMA bouncing possible") reduced ARCH_KMALLOC_MINALIGN to 8 on arm64.
    However, with KASAN_HW_TAGS enabled, arch_slab_minalign() becomes 16.
    This causes kmalloc_caches[*][8] to be aliased to kmalloc_caches[*][16],
    resulting in kmem_buckets_create() attempting to create a kmem_cache for
    size 16 twice. This duplication triggers warnings on boot:
    
    [    2.325108] ------------[ cut here ]------------
    [    2.325135] kmem_cache of name 'memdup_user-16' already exists
    [    2.325783] WARNING: CPU: 0 PID: 1 at mm/slab_common.c:107 __kmem_cache_create_args+0xb8/0x3b0
    [    2.327957] Modules linked in:
    [    2.328550] CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.12.0-rc5mm-unstable-arm64+ #12
    [    2.328683] Hardware name: QEMU QEMU Virtual Machine, BIOS 2024.02-2 03/11/2024
    [    2.328790] pstate: 61000009 (nZCv daif -PAN -UAO -TCO +DIT -SSBS BTYPE=--)
    [    2.328911] pc : __kmem_cache_create_args+0xb8/0x3b0
    [    2.328930] lr : __kmem_cache_create_args+0xb8/0x3b0
    [    2.328942] sp : ffff800083d6fc50
    [    2.328961] x29: ffff800083d6fc50 x28: f2ff0000c1674410 x27: ffff8000820b0598
    [    2.329061] x26: 000000007fffffff x25: 0000000000000010 x24: 0000000000002000
    [    2.329101] x23: ffff800083d6fce8 x22: ffff8000832222e8 x21: ffff800083222388
    [    2.329118] x20: f2ff0000c1674410 x19: f5ff0000c16364c0 x18: ffff800083d80030
    [    2.329135] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
    [    2.329152] x14: 0000000000000000 x13: 0a73747369786520 x12: 79646165726c6120
    [    2.329169] x11: 656820747563205b x10: 2d2d2d2d2d2d2d2d x9 : 0000000000000000
    [    2.329194] x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000000000
    [    2.329210] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000
    [    2.329226] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000
    [    2.329291] Call trace:
    [    2.329407]  __kmem_cache_create_args+0xb8/0x3b0
    [    2.329499]  kmem_buckets_create+0xfc/0x320
    [    2.329526]  init_user_buckets+0x34/0x78
    [    2.329540]  do_one_initcall+0x64/0x3c8
    [    2.329550]  kernel_init_freeable+0x26c/0x578
    [    2.329562]  kernel_init+0x3c/0x258
    [    2.329574]  ret_from_fork+0x10/0x20
    [    2.329698] ---[ end trace 0000000000000000 ]---
    
    [    2.403704] ------------[ cut here ]------------
    [    2.404716] kmem_cache of name 'msg_msg-16' already exists
    [    2.404801] WARNING: CPU: 2 PID: 1 at mm/slab_common.c:107 __kmem_cache_create_args+0xb8/0x3b0
    [    2.404842] Modules linked in:
    [    2.404971] CPU: 2 UID: 0 PID: 1 Comm: swapper/0 Tainted: G        W          6.12.0-rc5mm-unstable-arm64+ #12
    [    2.405026] Tainted: [W]=WARN
    [    2.405043] Hardware name: QEMU QEMU Virtual Machine, BIOS 2024.02-2 03/11/2024
    [    2.405057] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [    2.405079] pc : __kmem_cache_create_args+0xb8/0x3b0
    [    2.405100] lr : __kmem_cache_create_args+0xb8/0x3b0
    [    2.405111] sp : ffff800083d6fc50
    [    2.405115] x29: ffff800083d6fc50 x28: fbff0000c1674410 x27: ffff8000820b0598
    [    2.405135] x26: 000000000000ffd0 x25: 0000000000000010 x24: 0000000000006000
    [    2.405153] x23: ffff800083d6fce8 x22: ffff8000832222e8 x21: ffff800083222388
    [    2.405169] x20: fbff0000c1674410 x19: fdff0000c163d6c0 x18: ffff800083d80030
    [    2.405185] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
    [    2.405201] x14: 0000000000000000 x13: 0a73747369786520 x12: 79646165726c6120
    [    2.405217] x11: 656820747563205b x10: 2d2d2d2d2d2d2d2d x9 : 0000000000000000
    [    2.405233] x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000000000
    [    2.405248] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000
    [    2.405271] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000
    [    2.405287] Call trace:
    [    2.405293]  __kmem_cache_create_args+0xb8/0x3b0
    [    2.405305]  kmem_buckets_create+0xfc/0x320
    [    2.405315]  init_msg_buckets+0x34/0x78
    [    2.405326]  do_one_initcall+0x64/0x3c8
    [    2.405337]  kernel_init_freeable+0x26c/0x578
    [    2.405348]  kernel_init+0x3c/0x258
    [    2.405360]  ret_from_fork+0x10/0x20
    [    2.405370] ---[ end trace 0000000000000000 ]---
    
    To address this, alias kmem_cache for sizes smaller than min alignment
    to the aligned sized kmem_cache, as done with the default system kmalloc
    bucket.
    
    Fixes: b32801d1255b ("mm/slab: Introduce kmem_buckets_create() and family")
    Cc: <stable@vger.kernel.org> # v6.11+
    Signed-off-by: Koichiro Den <koichiro.den@gmail.com>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Tested-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/thp: fix deferred split unqueue naming and locking [+ + +]
Author: Hugh Dickins <hughd@google.com>
Date:   Sun Oct 27 13:02:13 2024 -0700

    mm/thp: fix deferred split unqueue naming and locking
    
    commit f8f931bba0f92052cf842b7e30917b1afcc77d5a upstream.
    
    Recent changes are putting more pressure on THP deferred split queues:
    under load revealing long-standing races, causing list_del corruptions,
    "Bad page state"s and worse (I keep BUGs in both of those, so usually
    don't get to see how badly they end up without).  The relevant recent
    changes being 6.8's mTHP, 6.10's mTHP swapout, and 6.12's mTHP swapin,
    improved swap allocation, and underused THP splitting.
    
    Before fixing locking: rename misleading folio_undo_large_rmappable(),
    which does not undo large_rmappable, to folio_unqueue_deferred_split(),
    which is what it does.  But that and its out-of-line __callee are mm
    internals of very limited usability: add comment and WARN_ON_ONCEs to
    check usage; and return a bool to say if a deferred split was unqueued,
    which can then be used in WARN_ON_ONCEs around safety checks (sparing
    callers the arcane conditionals in __folio_unqueue_deferred_split()).
    
    Just omit the folio_unqueue_deferred_split() from free_unref_folios(), all
    of whose callers now call it beforehand (and if any forget then bad_page()
    will tell) - except for its caller put_pages_list(), which itself no
    longer has any callers (and will be deleted separately).
    
    Swapout: mem_cgroup_swapout() has been resetting folio->memcg_data 0
    without checking and unqueueing a THP folio from deferred split list;
    which is unfortunate, since the split_queue_lock depends on the memcg
    (when memcg is enabled); so swapout has been unqueueing such THPs later,
    when freeing the folio, using the pgdat's lock instead: potentially
    corrupting the memcg's list.  __remove_mapping() has frozen refcount to 0
    here, so no problem with calling folio_unqueue_deferred_split() before
    resetting memcg_data.
    
    That goes back to 5.4 commit 87eaceb3faa5 ("mm: thp: make deferred split
    shrinker memcg aware"): which included a check on swapcache before adding
    to deferred queue, but no check on deferred queue before adding THP to
    swapcache.  That worked fine with the usual sequence of events in reclaim
    (though there were a couple of rare ways in which a THP on deferred queue
    could have been swapped out), but 6.12 commit dafff3f4c850 ("mm: split
    underused THPs") avoids splitting underused THPs in reclaim, which makes
    swapcache THPs on deferred queue commonplace.
    
    Keep the check on swapcache before adding to deferred queue?  Yes: it is
    no longer essential, but preserves the existing behaviour, and is likely
    to be a worthwhile optimization (vmstat showed much more traffic on the
    queue under swapping load if the check was removed); update its comment.
    
    Memcg-v1 move (deprecated): mem_cgroup_move_account() has been changing
    folio->memcg_data without checking and unqueueing a THP folio from the
    deferred list, sometimes corrupting "from" memcg's list, like swapout.
    Refcount is non-zero here, so folio_unqueue_deferred_split() can only be
    used in a WARN_ON_ONCE to validate the fix, which must be done earlier:
    mem_cgroup_move_charge_pte_range() first try to split the THP (splitting
    of course unqueues), or skip it if that fails.  Not ideal, but moving
    charge has been requested, and khugepaged should repair the THP later:
    nobody wants new custom unqueueing code just for this deprecated case.
    
    The 87eaceb3faa5 commit did have the code to move from one deferred list
    to another (but was not conscious of its unsafety while refcount non-0);
    but that was removed by 5.6 commit fac0516b5534 ("mm: thp: don't need care
    deferred split queue in memcg charge move path"), which argued that the
    existence of a PMD mapping guarantees that the THP cannot be on a deferred
    list.  As above, false in rare cases, and now commonly false.
    
    Backport to 6.11 should be straightforward.  Earlier backports must take
    care that other _deferred_list fixes and dependencies are included.  There
    is not a strong case for backports, but they can fix cornercases.
    
    Link: https://lkml.kernel.org/r/8dc111ae-f6db-2da7-b25c-7a20b1effe3b@google.com
    Fixes: 87eaceb3faa5 ("mm: thp: make deferred split shrinker memcg aware")
    Fixes: dafff3f4c850 ("mm: split underused THPs")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Yang Shi <shy828301@gmail.com>
    Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
    Cc: Barry Song <baohua@kernel.org>
    Cc: Chris Li <chrisl@kernel.org>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Nhat Pham <nphamcs@gmail.com>
    Cc: Ryan Roberts <ryan.roberts@arm.com>
    Cc: Shakeel Butt <shakeel.butt@linux.dev>
    Cc: Usama Arif <usamaarif642@gmail.com>
    Cc: Wei Yang <richard.weiyang@gmail.com>
    Cc: Zi Yan <ziy@nvidia.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mptcp: no admin perm to list endpoints [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Nov 4 13:31:41 2024 +0100

    mptcp: no admin perm to list endpoints
    
    commit cfbbd4859882a5469f6f4945937a074ee78c4b46 upstream.
    
    During the switch to YNL, the command to list all endpoints has been
    accidentally restricted to users with admin permissions.
    
    It looks like there are no reasons to have this restriction which makes
    it harder for a user to quickly check if the endpoint list has been
    correctly populated by an automated tool. Best to go back to the
    previous behaviour then.
    
    mptcp_pm_gen.c has been modified using ynl-gen-c.py:
    
       $ ./tools/net/ynl/ynl-gen-c.py --mode kernel \
         --spec Documentation/netlink/specs/mptcp_pm.yaml --source \
         -o net/mptcp/mptcp_pm_gen.c
    
    The header file doesn't need to be regenerated.
    
    Fixes: 1d0507f46843 ("net: mptcp: convert netlink from small_ops to ops")
    Cc: stable@vger.kernel.org
    Reviewed-by: Davide Caratti <dcaratti@redhat.com>
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20241104-net-mptcp-misc-6-12-v1-1-c13f2ff1656f@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: use sock_kfree_s instead of kfree [+ + +]
Author: Geliang Tang <geliang@kernel.org>
Date:   Mon Nov 4 13:31:42 2024 +0100

    mptcp: use sock_kfree_s instead of kfree
    
    commit 99635c91fb8b860a6404b9bc8b769df7bdaa2ae3 upstream.
    
    The local address entries on userspace_pm_local_addr_list are allocated
    by sock_kmalloc().
    
    It's then required to use sock_kfree_s() instead of kfree() to free
    these entries in order to adjust the allocated size on the sk side.
    
    Fixes: 24430f8bf516 ("mptcp: add address into userspace pm list")
    Cc: stable@vger.kernel.org
    Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20241104-net-mptcp-misc-6-12-v1-2-c13f2ff1656f@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/smc: do not leave a dangling sk pointer in __smc_create() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Nov 6 22:19:22 2024 +0000

    net/smc: do not leave a dangling sk pointer in __smc_create()
    
    [ Upstream commit d293958a8595ba566fb90b99da4d6263e14fee15 ]
    
    Thanks to commit 4bbd360a5084 ("socket: Print pf->create() when
    it does not clear sock->sk on failure."), syzbot found an issue with AF_SMC:
    
    smc_create must clear sock->sk on failure, family: 43, type: 1, protocol: 0
     WARNING: CPU: 0 PID: 5827 at net/socket.c:1565 __sock_create+0x96f/0xa30 net/socket.c:1563
    Modules linked in:
    CPU: 0 UID: 0 PID: 5827 Comm: syz-executor259 Not tainted 6.12.0-rc6-next-20241106-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
     RIP: 0010:__sock_create+0x96f/0xa30 net/socket.c:1563
    Code: 03 00 74 08 4c 89 e7 e8 4f 3b 85 f8 49 8b 34 24 48 c7 c7 40 89 0c 8d 8b 54 24 04 8b 4c 24 0c 44 8b 44 24 08 e8 32 78 db f7 90 <0f> 0b 90 90 e9 d3 fd ff ff 89 e9 80 e1 07 fe c1 38 c1 0f 8c ee f7
    RSP: 0018:ffffc90003e4fda0 EFLAGS: 00010246
    RAX: 099c6f938c7f4700 RBX: 1ffffffff1a595fd RCX: ffff888034823c00
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: 00000000ffffffe9 R08: ffffffff81567052 R09: 1ffff920007c9f50
    R10: dffffc0000000000 R11: fffff520007c9f51 R12: ffffffff8d2cafe8
    R13: 1ffffffff1a595fe R14: ffffffff9a789c40 R15: ffff8880764298c0
    FS:  000055557b518380(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fa62ff43225 CR3: 0000000031628000 CR4: 00000000003526f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
      sock_create net/socket.c:1616 [inline]
      __sys_socket_create net/socket.c:1653 [inline]
      __sys_socket+0x150/0x3c0 net/socket.c:1700
      __do_sys_socket net/socket.c:1714 [inline]
      __se_sys_socket net/socket.c:1712 [inline]
    
    For reference, see commit 2d859aff775d ("Merge branch
    'do-not-leave-dangling-sk-pointers-in-pf-create-functions'")
    
    Fixes: d25a92ccae6b ("net/smc: Introduce IPPROTO_SMC")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Ignat Korchagin <ignat@cloudflare.com>
    Cc: D. Wythe <alibuda@linux.alibaba.com>
    Cc: Dust Li <dust.li@linux.alibaba.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Reviewed-by: Wenjia Zhang <wenjia@linux.ibm.com>
    Link: https://patch.msgid.link/20241106221922.1544045-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: arc: fix the device for dma_map_single/dma_unmap_single [+ + +]
Author: Johan Jonker <jbx6244@gmail.com>
Date:   Mon Nov 4 21:01:38 2024 +0800

    net: arc: fix the device for dma_map_single/dma_unmap_single
    
    [ Upstream commit 71803c1dfa29e0d13b99e48fda11107cc8caebc7 ]
    
    The ndev->dev and pdev->dev aren't the same device, use ndev->dev.parent
    which has dma_mask, ndev->dev.parent is just pdev->dev.
    Or it would cause the following issue:
    
    [   39.933526] ------------[ cut here ]------------
    [   39.938414] WARNING: CPU: 1 PID: 501 at kernel/dma/mapping.c:149 dma_map_page_attrs+0x90/0x1f8
    
    Fixes: f959dcd6ddfd ("dma-direct: Fix potential NULL pointer dereference")
    Signed-off-by: David Wu <david.wu@rock-chips.com>
    Signed-off-by: Johan Jonker <jbx6244@gmail.com>
    Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: arc: rockchip: fix emac mdio node support [+ + +]
Author: Johan Jonker <jbx6244@gmail.com>
Date:   Mon Nov 4 21:01:39 2024 +0800

    net: arc: rockchip: fix emac mdio node support
    
    [ Upstream commit 0a1c7a7b0adbf595ce7f218609db53749e966573 ]
    
    The binding emac_rockchip.txt is converted to YAML.
    Changed against the original binding is an added MDIO subnode.
    This make the driver failed to find the PHY, and given the 'mdio
    has invalid PHY address' it is probably looking in the wrong node.
    Fix emac_mdio.c so that it can handle both old and new
    device trees.
    
    Fixes: 1dabb74971b3 ("ARM: dts: rockchip: restyle emac nodes")
    Signed-off-by: Johan Jonker <jbx6244@gmail.com>
    Tested-by: Andy Yan <andyshrk@163.com>
    Link: https://lore.kernel.org/r/20220603163539.537-3-jbx6244@gmail.com
    Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dpaa_eth: print FD status in CPU endianness in dpaa_eth_fd tracepoint [+ + +]
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Tue Oct 29 18:31:05 2024 +0200

    net: dpaa_eth: print FD status in CPU endianness in dpaa_eth_fd tracepoint
    
    [ Upstream commit 0144c06c5890d1ad0eea65df074cffaf4eea5a3c ]
    
    Sparse warns:
    
    note: in included file (through ../include/trace/trace_events.h,
    ../include/trace/define_trace.h,
    ../drivers/net/ethernet/freescale/dpaa/dpaa_eth_trace.h):
    warning: incorrect type in assignment (different base types)
       expected unsigned int [usertype] fd_status
       got restricted __be32 const [usertype] status
    
    We take struct qm_fd :: status, store it and print it as an u32,
    though it is a big endian field. We should print the FD status in
    CPU endianness for ease of debug and consistency between PowerPC and
    Arm systems.
    
    Though it is a not often used debug feature, it is best to treat it as
    a bug and backport the format change to all supported stable kernels,
    for consistency.
    
    Fixes: eb11ddf36eb8 ("dpaa_eth: add trace points")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Acked-by: Madalin Bucur <madalin.bucur@oss.nxp.com>
    Link: https://patch.msgid.link/20241029163105.44135-1-vladimir.oltean@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: enetc: allocate vf_state during PF probes [+ + +]
Author: Wei Fang <wei.fang@nxp.com>
Date:   Thu Oct 31 14:02:46 2024 +0800

    net: enetc: allocate vf_state during PF probes
    
    [ Upstream commit e15c5506dd39885cd047f811a64240e2e8ab401b ]
    
    In the previous implementation, vf_state is allocated memory only when VF
    is enabled. However, net_device_ops::ndo_set_vf_mac() may be called before
    VF is enabled to configure the MAC address of VF. If this is the case,
    enetc_pf_set_vf_mac() will access vf_state, resulting in access to a null
    pointer. The simplified error log is as follows.
    
    root@ls1028ardb:~# ip link set eno0 vf 1 mac 00:0c:e7:66:77:89
    [  173.543315] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000004
    [  173.637254] pc : enetc_pf_set_vf_mac+0x3c/0x80 Message from sy
    [  173.641973] lr : do_setlink+0x4a8/0xec8
    [  173.732292] Call trace:
    [  173.734740]  enetc_pf_set_vf_mac+0x3c/0x80
    [  173.738847]  __rtnl_newlink+0x530/0x89c
    [  173.742692]  rtnl_newlink+0x50/0x7c
    [  173.746189]  rtnetlink_rcv_msg+0x128/0x390
    [  173.750298]  netlink_rcv_skb+0x60/0x130
    [  173.754145]  rtnetlink_rcv+0x18/0x24
    [  173.757731]  netlink_unicast+0x318/0x380
    [  173.761665]  netlink_sendmsg+0x17c/0x3c8
    
    Fixes: d4fd0404c1c9 ("enetc: Introduce basic PF and VF ENETC ethernet drivers")
    Signed-off-by: Wei Fang <wei.fang@nxp.com>
    Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Tested-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://patch.msgid.link/20241031060247.1290941-2-wei.fang@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: enetc: set MAC address to the VF net_device [+ + +]
Author: Wei Fang <wei.fang@nxp.com>
Date:   Tue Oct 29 17:04:06 2024 +0800

    net: enetc: set MAC address to the VF net_device
    
    [ Upstream commit badccd49b93bb945bf4e5cc8707db67cdc5e27e5 ]
    
    The MAC address of VF can be configured through the mailbox mechanism of
    ENETC, but the previous implementation forgot to set the MAC address in
    net_device, resulting in the SMAC of the sent frames still being the old
    MAC address. Since the MAC address in the hardware has been changed, Rx
    cannot receive frames with the DMAC address as the new MAC address. The
    most obvious phenomenon is that after changing the MAC address, we can
    see that the MAC address of eno0vf0 has not changed through the "ifconfig
    eno0vf0" command and the IP address cannot be obtained .
    
    root@ls1028ardb:~# ifconfig eno0vf0 down
    root@ls1028ardb:~# ifconfig eno0vf0 hw ether 00:04:9f:3a:4d:56 up
    root@ls1028ardb:~# ifconfig eno0vf0
    eno0vf0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            ether 66:36:2c:3b:87:76  txqueuelen 1000  (Ethernet)
            RX packets 794  bytes 69239 (69.2 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 11  bytes 2226 (2.2 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    Fixes: beb74ac878c8 ("enetc: Add vf to pf messaging support")
    Signed-off-by: Wei Fang <wei.fang@nxp.com>
    Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: Claudiu Manoil <claudiu.manoil@nxp.com>
    Link: https://patch.msgid.link/20241029090406.841836-1-wei.fang@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: hns3: fix kernel crash when uninstalling driver [+ + +]
Author: Peiyang Wang <wangpeiyang1@huawei.com>
Date:   Fri Nov 1 17:15:07 2024 +0800

    net: hns3: fix kernel crash when uninstalling driver
    
    [ Upstream commit df3dff8ab6d79edc942464999d06fbaedf8cdd18 ]
    
    When the driver is uninstalled and the VF is disabled concurrently, a
    kernel crash occurs. The reason is that the two actions call function
    pci_disable_sriov(). The num_VFs is checked to determine whether to
    release the corresponding resources. During the second calling, num_VFs
    is not 0 and the resource release function is called. However, the
    corresponding resource has been released during the first invoking.
    Therefore, the problem occurs:
    
    [15277.839633][T50670] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000020
    ...
    [15278.131557][T50670] Call trace:
    [15278.134686][T50670]  klist_put+0x28/0x12c
    [15278.138682][T50670]  klist_del+0x14/0x20
    [15278.142592][T50670]  device_del+0xbc/0x3c0
    [15278.146676][T50670]  pci_remove_bus_device+0x84/0x120
    [15278.151714][T50670]  pci_stop_and_remove_bus_device+0x6c/0x80
    [15278.157447][T50670]  pci_iov_remove_virtfn+0xb4/0x12c
    [15278.162485][T50670]  sriov_disable+0x50/0x11c
    [15278.166829][T50670]  pci_disable_sriov+0x24/0x30
    [15278.171433][T50670]  hnae3_unregister_ae_algo_prepare+0x60/0x90 [hnae3]
    [15278.178039][T50670]  hclge_exit+0x28/0xd0 [hclge]
    [15278.182730][T50670]  __se_sys_delete_module.isra.0+0x164/0x230
    [15278.188550][T50670]  __arm64_sys_delete_module+0x1c/0x30
    [15278.193848][T50670]  invoke_syscall+0x50/0x11c
    [15278.198278][T50670]  el0_svc_common.constprop.0+0x158/0x164
    [15278.203837][T50670]  do_el0_svc+0x34/0xcc
    [15278.207834][T50670]  el0_svc+0x20/0x30
    
    For details, see the following figure.
    
         rmmod hclge              disable VFs
    ----------------------------------------------------
    hclge_exit()            sriov_numvfs_store()
      ...                     device_lock()
      pci_disable_sriov()     hns3_pci_sriov_configure()
                                pci_disable_sriov()
                                  sriov_disable()
        sriov_disable()             if !num_VFs :
          if !num_VFs :               return;
            return;                 sriov_del_vfs()
          sriov_del_vfs()             ...
            ...                       klist_put()
            klist_put()               ...
            ...                     num_VFs = 0;
          num_VFs = 0;        device_unlock();
    
    In this patch, when driver is removing, we get the device_lock()
    to protect num_VFs, just like sriov_numvfs_store().
    
    Fixes: 0dd8a25f355b ("net: hns3: disable sriov before unload hclge layer")
    Signed-off-by: Peiyang Wang <wangpeiyang1@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20241101091507.3644584-1-shaojijie@huawei.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: phy: ti: add PHY_RST_AFTER_CLK_EN flag [+ + +]
Author: Diogo Silva <diogompaissilva@gmail.com>
Date:   Sat Nov 2 16:15:05 2024 +0100

    net: phy: ti: add PHY_RST_AFTER_CLK_EN flag
    
    [ Upstream commit 256748d5480bb3c4b731236c6d6fc86a8e2815d8 ]
    
    DP83848 datasheet (section 4.7.2) indicates that the reset pin should be
    toggled after the clocks are running. Add the PHY_RST_AFTER_CLK_EN to
    make sure that this indication is respected.
    
    In my experience not having this flag enabled would lead to, on some
    boots, the wrong MII mode being selected if the PHY was initialized on
    the bootloader and was receiving data during Linux boot.
    
    Signed-off-by: Diogo Silva <diogompaissilva@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Fixes: 34e45ad9378c ("net: phy: dp83848: Add TI DP83848 Ethernet PHY")
    Link: https://patch.msgid.link/20241102151504.811306-1-paissilva@ld-100007.ds1.internal
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: stmmac: Fix unbalanced IRQ wake disable warning on single irq case [+ + +]
Author: Nícolas F. R. A. Prado <nfraprado@collabora.com>
Date:   Fri Nov 1 17:17:29 2024 -0400

    net: stmmac: Fix unbalanced IRQ wake disable warning on single irq case
    
    [ Upstream commit 25d70702142ac2115e75e01a0a985c6ea1d78033 ]
    
    Commit a23aa0404218 ("net: stmmac: ethtool: Fixed calltrace caused by
    unbalanced disable_irq_wake calls") introduced checks to prevent
    unbalanced enable and disable IRQ wake calls. However it only
    initialized the auxiliary variable on one of the paths,
    stmmac_request_irq_multi_msi(), missing the other,
    stmmac_request_irq_single().
    
    Add the same initialization on stmmac_request_irq_single() to prevent
    "Unbalanced IRQ <x> wake disable" warnings from being printed the first
    time disable_irq_wake() is called on platforms that run on that code
    path.
    
    Fixes: a23aa0404218 ("net: stmmac: ethtool: Fixed calltrace caused by unbalanced disable_irq_wake calls")
    Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20241101-stmmac-unbalanced-wake-single-fix-v1-1-5952524c97f0@collabora.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: vertexcom: mse102x: Fix possible double free of TX skb [+ + +]
Author: Stefan Wahren <wahrenst@gmx.net>
Date:   Tue Nov 5 17:31:01 2024 +0100

    net: vertexcom: mse102x: Fix possible double free of TX skb
    
    commit 1f26339b2ed63d1e8e18a18674fb73a392f3660e upstream.
    
    The scope of the TX skb is wider than just mse102x_tx_frame_spi(),
    so in case the TX skb room needs to be expanded, we should free the
    the temporary skb instead of the original skb. Otherwise the original
    TX skb pointer would be freed again in mse102x_tx_work(), which leads
    to crashes:
    
      Internal error: Oops: 0000000096000004 [#2] PREEMPT SMP
      CPU: 0 PID: 712 Comm: kworker/0:1 Tainted: G      D            6.6.23
      Hardware name: chargebyte Charge SOM DC-ONE (DT)
      Workqueue: events mse102x_tx_work [mse102x]
      pstate: 20400009 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
      pc : skb_release_data+0xb8/0x1d8
      lr : skb_release_data+0x1ac/0x1d8
      sp : ffff8000819a3cc0
      x29: ffff8000819a3cc0 x28: ffff0000046daa60 x27: ffff0000057f2dc0
      x26: ffff000005386c00 x25: 0000000000000002 x24: 00000000ffffffff
      x23: 0000000000000000 x22: 0000000000000001 x21: ffff0000057f2e50
      x20: 0000000000000006 x19: 0000000000000000 x18: ffff00003fdacfcc
      x17: e69ad452d0c49def x16: 84a005feff870102 x15: 0000000000000000
      x14: 000000000000024a x13: 0000000000000002 x12: 0000000000000000
      x11: 0000000000000400 x10: 0000000000000930 x9 : ffff00003fd913e8
      x8 : fffffc00001bc008
      x7 : 0000000000000000 x6 : 0000000000000008
      x5 : ffff00003fd91340 x4 : 0000000000000000 x3 : 0000000000000009
      x2 : 00000000fffffffe x1 : 0000000000000000 x0 : 0000000000000000
      Call trace:
       skb_release_data+0xb8/0x1d8
       kfree_skb_reason+0x48/0xb0
       mse102x_tx_work+0x164/0x35c [mse102x]
       process_one_work+0x138/0x260
       worker_thread+0x32c/0x438
       kthread+0x118/0x11c
       ret_from_fork+0x10/0x20
      Code: aa1303e0 97fffab6 72001c1f 54000141 (f9400660)
    
    Cc: stable@vger.kernel.org
    Fixes: 2f207cbf0dd4 ("net: vertexcom: Add MSE102x SPI support")
    Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
    Link: https://patch.msgid.link/20241105163101.33216-1-wahrenst@gmx.net
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: wwan: t7xx: Fix off-by-one error in t7xx_dpmaif_rx_buf_alloc() [+ + +]
Author: Jinjie Ruan <ruanjinjie@huawei.com>
Date:   Fri Nov 1 10:53:16 2024 +0800

    net: wwan: t7xx: Fix off-by-one error in t7xx_dpmaif_rx_buf_alloc()
    
    commit 3b557be89fc688dbd9ccf704a70f7600a094f13a upstream.
    
    The error path in t7xx_dpmaif_rx_buf_alloc(), free and unmap the already
    allocated and mapped skb in a loop, but the loop condition terminates when
    the index reaches zero, which fails to free the first allocated skb at
    index zero.
    
    Check with i-- so that skb at index 0 is freed as well.
    
    Cc: stable@vger.kernel.org
    Fixes: d642b012df70 ("net: wwan: t7xx: Add data path interface")
    Acked-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
    Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://patch.msgid.link/20241101025316.3234023-1-ruanjinjie@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: xilinx: axienet: Enqueue Tx packets in dql before dmaengine starts [+ + +]
Author: Suraj Gupta <suraj.gupta2@amd.com>
Date:   Wed Oct 30 11:55:32 2024 +0530

    net: xilinx: axienet: Enqueue Tx packets in dql before dmaengine starts
    
    [ Upstream commit 5ccdcdf186aec6b9111845fd37e1757e9b413e2f ]
    
    Enqueue packets in dql after dma engine starts causes race condition.
    Tx transfer starts once dma engine is started and may execute dql dequeue
    in completion before it gets queued. It results in following kernel crash
    while running iperf stress test:
    
    kernel BUG at lib/dynamic_queue_limits.c:99!
    <snip>
    Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
    pc : dql_completed+0x238/0x248
    lr : dql_completed+0x3c/0x248
    
    Call trace:
      dql_completed+0x238/0x248
      axienet_dma_tx_cb+0xa0/0x170
      xilinx_dma_do_tasklet+0xdc/0x290
      tasklet_action_common+0xf8/0x11c
      tasklet_action+0x30/0x3c
      handle_softirqs+0xf8/0x230
    <snip>
    
    Start dmaengine after enqueue in dql fixes the crash.
    
    Fixes: 6a91b846af85 ("net: axienet: Introduce dmaengine support")
    Signed-off-by: Suraj Gupta <suraj.gupta2@amd.com>
    Link: https://patch.msgid.link/20241030062533.2527042-2-suraj.gupta2@amd.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfilter: nf_tables: wait for rcu grace period on net_device removal [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Tue Nov 5 12:07:22 2024 +0100

    netfilter: nf_tables: wait for rcu grace period on net_device removal
    
    [ Upstream commit c03d278fdf35e73dd0ec543b9b556876b9d9a8dc ]
    
    8c873e219970 ("netfilter: core: free hooks with call_rcu") removed
    synchronize_net() call when unregistering basechain hook, however,
    net_device removal event handler for the NFPROTO_NETDEV was not updated
    to wait for RCU grace period.
    
    Note that 835b803377f5 ("netfilter: nf_tables_netdev: unregister hooks
    on net_device removal") does not remove basechain rules on device
    removal, I was hinted to remove rules on net_device removal later, see
    5ebe0b0eec9d ("netfilter: nf_tables: destroy basechain and rules on
    netdevice removal").
    
    Although NETDEV_UNREGISTER event is guaranteed to be handled after
    synchronize_net() call, this path needs to wait for rcu grace period via
    rcu callback to release basechain hooks if netns is alive because an
    ongoing netlink dump could be in progress (sockets hold a reference on
    the netns).
    
    Note that nf_tables_pre_exit_net() unregisters and releases basechain
    hooks but it is possible to see NETDEV_UNREGISTER at a later stage in
    the netns exit path, eg. veth peer device in another netns:
    
     cleanup_net()
      default_device_exit_batch()
       unregister_netdevice_many_notify()
        notifier_call_chain()
         nf_tables_netdev_event()
          __nft_release_basechain()
    
    In this particular case, same rule of thumb applies: if netns is alive,
    then wait for rcu grace period because netlink dump in the other netns
    could be in progress. Otherwise, if the other netns is going away then
    no netlink dump can be in progress and basechain hooks can be released
    inmediately.
    
    While at it, turn WARN_ON() into WARN_ON_ONCE() for the basechain
    validation, which should not ever happen.
    
    Fixes: 835b803377f5 ("netfilter: nf_tables_netdev: unregister hooks on net_device removal")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nfs: avoid i_lock contention in nfs_clear_invalid_mapping [+ + +]
Author: Mike Snitzer <snitzer@kernel.org>
Date:   Fri Oct 18 17:15:41 2024 -0400

    nfs: avoid i_lock contention in nfs_clear_invalid_mapping
    
    [ Upstream commit 867da60d463bb2a3e28c9235c487e56e96cffa00 ]
    
    Multi-threaded buffered reads to the same file exposed significant
    inode spinlock contention in nfs_clear_invalid_mapping().
    
    Eliminate this spinlock contention by checking flags without locking,
    instead using smp_rmb and smp_load_acquire accordingly, but then take
    spinlock and double-check these inode flags.
    
    Also refactor nfs_set_cache_invalid() slightly to use
    smp_store_release() to pair with nfs_clear_invalid_mapping()'s
    smp_load_acquire().
    
    While this fix is beneficial for all multi-threaded buffered reads
    issued by an NFS client, this issue was identified in the context of
    surprisingly low LOCALIO performance with 4K multi-threaded buffered
    read IO.  This fix dramatically speeds up LOCALIO performance:
    
    before: read: IOPS=1583k, BW=6182MiB/s (6482MB/s)(121GiB/20002msec)
    after:  read: IOPS=3046k, BW=11.6GiB/s (12.5GB/s)(232GiB/20001msec)
    
    Fixes: 17dfeb911339 ("NFS: Fix races in nfs_revalidate_mapping")
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
NFS: Fix attribute delegation behaviour on exclusive create [+ + +]
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Wed Oct 23 09:35:43 2024 -0400

    NFS: Fix attribute delegation behaviour on exclusive create
    
    [ Upstream commit d054c5eb2890633935c23c371f45fb2d6b3b4b64 ]
    
    When the client does an exclusive create and the server decides to store
    the verifier in the timestamps, a SETATTR is subsequently sent to fix up
    those timestamps. When that is the case, suppress the exceptions for
    attribute delegations in nfs4_bitmap_copy_adjust().
    
    Fixes: 32215c1f893a ("NFSv4: Don't request atime/mtime/size if they are delegated to us")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nfs: Fix KMSAN warning in decode_getfattr_attrs() [+ + +]
Author: Roberto Sassu <roberto.sassu@huawei.com>
Date:   Fri Oct 25 16:03:27 2024 +0200

    nfs: Fix KMSAN warning in decode_getfattr_attrs()
    
    commit dc270d7159699ad6d11decadfce9633f0f71c1db upstream.
    
    Fix the following KMSAN warning:
    
    CPU: 1 UID: 0 PID: 7651 Comm: cp Tainted: G    B
    Tainted: [B]=BAD_PAGE
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009)
    =====================================================
    =====================================================
    BUG: KMSAN: uninit-value in decode_getfattr_attrs+0x2d6d/0x2f90
     decode_getfattr_attrs+0x2d6d/0x2f90
     decode_getfattr_generic+0x806/0xb00
     nfs4_xdr_dec_getattr+0x1de/0x240
     rpcauth_unwrap_resp_decode+0xab/0x100
     rpcauth_unwrap_resp+0x95/0xc0
     call_decode+0x4ff/0xb50
     __rpc_execute+0x57b/0x19d0
     rpc_execute+0x368/0x5e0
     rpc_run_task+0xcfe/0xee0
     nfs4_proc_getattr+0x5b5/0x990
     __nfs_revalidate_inode+0x477/0xd00
     nfs_access_get_cached+0x1021/0x1cc0
     nfs_do_access+0x9f/0xae0
     nfs_permission+0x1e4/0x8c0
     inode_permission+0x356/0x6c0
     link_path_walk+0x958/0x1330
     path_lookupat+0xce/0x6b0
     filename_lookup+0x23e/0x770
     vfs_statx+0xe7/0x970
     vfs_fstatat+0x1f2/0x2c0
     __se_sys_newfstatat+0x67/0x880
     __x64_sys_newfstatat+0xbd/0x120
     x64_sys_call+0x1826/0x3cf0
     do_syscall_64+0xd0/0x1b0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    The KMSAN warning is triggered in decode_getfattr_attrs(), when calling
    decode_attr_mdsthreshold(). It appears that fattr->mdsthreshold is not
    initialized.
    
    Fix the issue by initializing fattr->mdsthreshold to NULL in
    nfs_fattr_init().
    
    Cc: stable@vger.kernel.org # v3.5.x
    Fixes: 88034c3d88c2 ("NFSv4.1 mdsthreshold attribute xdr")
    Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
NFS: Further fixes to attribute delegation a/mtime changes [+ + +]
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Wed Oct 23 17:05:48 2024 -0400

    NFS: Further fixes to attribute delegation a/mtime changes
    
    [ Upstream commit 40f45ab3814f2aff1ddada629c910aad982fc8e1 ]
    
    When asked to set both an atime and an mtime to the current system time,
    ensure that the setting is atomic by calling inode_update_timestamps()
    only once with the appropriate flags.
    
    Fixes: e12912d94137 ("NFSv4: Add support for delegated atime and mtime attributes")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
NFSv3: only use NFS timeout for MOUNT when protocols are compatible [+ + +]
Author: NeilBrown <neilb@suse.de>
Date:   Fri Oct 4 11:07:23 2024 +1000

    NFSv3: only use NFS timeout for MOUNT when protocols are compatible
    
    [ Upstream commit 6e2a10343ecb71c4457bc16be05758f9c7aae7d9 ]
    
    If a timeout is specified in the mount options, it currently applies to
    both the NFS protocol and (with v3) the MOUNT protocol.  This is
    sensible when they both use the same underlying protocol, or those
    protocols are compatible w.r.t timeouts as RDMA and TCP are.
    
    However if, for example, NFS is using TCP and MOUNT is using UDP then
    using the same timeout doesn't make much sense.
    
    If you
       mount -o vers=3,proto=tcp,mountproto=udp,timeo=600,retrans=5 \
          server:/path /mountpoint
    
    then the timeo=600 which was intended for the NFS/TCP request will
    apply to the MOUNT/UDP requests with the result that there will only be
    one request sent (because UDP has a maximum timeout of 60 seconds).
    This is not what a reasonable person might expect.
    
    This patch disables the sharing of timeout information in cases where
    the underlying protocols are not compatible.
    
    Fixes: c9301cb35b59 ("nfs: hornor timeo and retrans option when mounting NFSv3")
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
objpool: fix to make percpu slot allocation more robust [+ + +]
Author: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Date:   Mon Oct 28 12:26:27 2024 +0900

    objpool: fix to make percpu slot allocation more robust
    
    commit cb6fcef8b4b6c655b6a25cc3a415cd9eb81b3da8 upstream.
    
    Since gfp & GFP_ATOMIC == GFP_ATOMIC is true for GFP_KERNEL | GFP_HIGH, it
    will use kmalloc if user specifies that combination.  Here the reason why
    combining the __vmalloc_node() and kmalloc_node() is that the vmalloc does
    not support all GFP flag, especially GFP_ATOMIC.  So we should check if
    gfp & (GFP_ATOMIC | GFP_KERNEL) != GFP_ATOMIC for vmalloc first.  This
    ensures caller can sleep.  And for the robustness, even if vmalloc fails,
    it should retry with kmalloc to allocate it.
    
    Link: https://lkml.kernel.org/r/173008598713.1262174.2959179484209897252.stgit@mhiramat.roam.corp.google.com
    Fixes: aff1871bfc81 ("objpool: fix choosing allocation for percpu slots")
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Closes: https://lore.kernel.org/all/CAHk-=whO+vSH+XVRio8byJU8idAWES0SPGVZ7KAVdc4qrV0VUA@mail.gmail.com/
    Cc: Leo Yan <leo.yan@arm.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Wu <wuqiang.matt@bytedance.com>
    Cc: Mikel Rychliski <mikel@mikelr.com>
    Cc: Steven Rostedt (Google) <rostedt@goodmis.org>
    Cc: Viktor Malik <vmalik@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ocfs2: remove entry once instead of null-ptr-dereference in ocfs2_xa_remove() [+ + +]
Author: Andrew Kanner <andrew.kanner@gmail.com>
Date:   Sun Nov 3 20:38:45 2024 +0100

    ocfs2: remove entry once instead of null-ptr-dereference in ocfs2_xa_remove()
    
    commit 0b63c0e01fba40e3992bc627272ec7b618ccaef7 upstream.
    
    Syzkaller is able to provoke null-ptr-dereference in ocfs2_xa_remove():
    
    [   57.319872] (a.out,1161,7):ocfs2_xa_remove:2028 ERROR: status = -12
    [   57.320420] (a.out,1161,7):ocfs2_xa_cleanup_value_truncate:1999 ERROR: Partial truncate while removing xattr overlay.upper.  Leaking 1 clusters and removing the entry
    [   57.321727] BUG: kernel NULL pointer dereference, address: 0000000000000004
    [...]
    [   57.325727] RIP: 0010:ocfs2_xa_block_wipe_namevalue+0x2a/0xc0
    [...]
    [   57.331328] Call Trace:
    [   57.331477]  <TASK>
    [...]
    [   57.333511]  ? do_user_addr_fault+0x3e5/0x740
    [   57.333778]  ? exc_page_fault+0x70/0x170
    [   57.334016]  ? asm_exc_page_fault+0x2b/0x30
    [   57.334263]  ? __pfx_ocfs2_xa_block_wipe_namevalue+0x10/0x10
    [   57.334596]  ? ocfs2_xa_block_wipe_namevalue+0x2a/0xc0
    [   57.334913]  ocfs2_xa_remove_entry+0x23/0xc0
    [   57.335164]  ocfs2_xa_set+0x704/0xcf0
    [   57.335381]  ? _raw_spin_unlock+0x1a/0x40
    [   57.335620]  ? ocfs2_inode_cache_unlock+0x16/0x20
    [   57.335915]  ? trace_preempt_on+0x1e/0x70
    [   57.336153]  ? start_this_handle+0x16c/0x500
    [   57.336410]  ? preempt_count_sub+0x50/0x80
    [   57.336656]  ? _raw_read_unlock+0x20/0x40
    [   57.336906]  ? start_this_handle+0x16c/0x500
    [   57.337162]  ocfs2_xattr_block_set+0xa6/0x1e0
    [   57.337424]  __ocfs2_xattr_set_handle+0x1fd/0x5d0
    [   57.337706]  ? ocfs2_start_trans+0x13d/0x290
    [   57.337971]  ocfs2_xattr_set+0xb13/0xfb0
    [   57.338207]  ? dput+0x46/0x1c0
    [   57.338393]  ocfs2_xattr_trusted_set+0x28/0x30
    [   57.338665]  ? ocfs2_xattr_trusted_set+0x28/0x30
    [   57.338948]  __vfs_removexattr+0x92/0xc0
    [   57.339182]  __vfs_removexattr_locked+0xd5/0x190
    [   57.339456]  ? preempt_count_sub+0x50/0x80
    [   57.339705]  vfs_removexattr+0x5f/0x100
    [...]
    
    Reproducer uses faultinject facility to fail ocfs2_xa_remove() ->
    ocfs2_xa_value_truncate() with -ENOMEM.
    
    In this case the comment mentions that we can return 0 if
    ocfs2_xa_cleanup_value_truncate() is going to wipe the entry
    anyway. But the following 'rc' check is wrong and execution flow do
    'ocfs2_xa_remove_entry(loc);' twice:
    * 1st: in ocfs2_xa_cleanup_value_truncate();
    * 2nd: returning back to ocfs2_xa_remove() instead of going to 'out'.
    
    Fix this by skipping the 2nd removal of the same entry and making
    syzkaller repro happy.
    
    Link: https://lkml.kernel.org/r/20241103193845.2940988-1-andrew.kanner@gmail.com
    Fixes: 399ff3a748cf ("ocfs2: Handle errors while setting external xattr values.")
    Signed-off-by: Andrew Kanner <andrew.kanner@gmail.com>
    Reported-by: syzbot+386ce9e60fa1b18aac5b@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/671e13ab.050a0220.2b8c0f.01d0.GAE@google.com/T/
    Tested-by: syzbot+386ce9e60fa1b18aac5b@syzkaller.appspotmail.com
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
platform/x86/amd/pmc: Detect when STB is not available [+ + +]
Author: Corey Hickey <bugfood-c@fatooh.org>
Date:   Mon Oct 28 11:02:41 2024 -0700

    platform/x86/amd/pmc: Detect when STB is not available
    
    [ Upstream commit bceec87a73804bb4c33b9a6c96e2d27cd893a801 ]
    
    Loading the amd_pmc module as:
    
        amd_pmc enable_stb=1
    
    ...can result in the following messages in the kernel ring buffer:
    
        amd_pmc AMDI0009:00: SMU cmd failed. err: 0xff
        ioremap on RAM at 0x0000000000000000 - 0x0000000000ffffff
        WARNING: CPU: 10 PID: 2151 at arch/x86/mm/ioremap.c:217 __ioremap_caller+0x2cd/0x340
    
    Further debugging reveals that this occurs when the requests for
    S2D_PHYS_ADDR_LOW and S2D_PHYS_ADDR_HIGH return a value of 0,
    indicating that the STB is inaccessible. To prevent the ioremap
    warning and provide clarity to the user, handle the invalid address
    and display an error message.
    
    Link: https://lore.kernel.org/platform-driver-x86/c588ff5d-3e04-4549-9a86-284b9b4419ba@amd.com
    Fixes: 3d7d407dfb05 ("platform/x86: amd-pmc: Add support for AMD Spill to DRAM STB feature")
    Acked-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    Signed-off-by: Corey Hickey <bugfood-c@fatooh.org>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20241028180241.1341624-1-bugfood-ml@fatooh.org
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/x86/amd/pmf: Add SMU metrics table support for 1Ah family 60h model [+ + +]
Author: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Date:   Wed Oct 23 12:02:41 2024 +0530

    platform/x86/amd/pmf: Add SMU metrics table support for 1Ah family 60h model
    
    commit 8ca8d07857c698503b2b3bf615238c87c02f064e upstream.
    
    Add SMU metrics table support for 1Ah family 60h model. This information
    will be used by the PMF driver to alter the system thermals.
    
    Co-developed-by: Patil Rajesh Reddy <Patil.Reddy@amd.com>
    Signed-off-by: Patil Rajesh Reddy <Patil.Reddy@amd.com>
    Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://lore.kernel.org/r/20241023063245.1404420-2-Shyam-sundar.S-k@amd.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

platform/x86/amd/pmf: Relocate CPU ID macros to the PMF header [+ + +]
Author: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Date:   Mon Aug 19 12:04:03 2024 +0530

    platform/x86/amd/pmf: Relocate CPU ID macros to the PMF header
    
    commit 37578054173919d898d2fe0b76d2f5d713937403 upstream.
    
    The CPU ID macros are needed by the Smart PC builder. Therefore, transfer
    the CPU ID macros from core.c to the common PMF header file.
    
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Co-developed-by: Patil Rajesh Reddy <Patil.Reddy@amd.com>
    Signed-off-by: Patil Rajesh Reddy <Patil.Reddy@amd.com>
    Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    Link: https://lore.kernel.org/r/20240819063404.378061-1-Shyam-sundar.S-k@amd.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

platform/x86/amd/pmf: Update SMU metrics table for 1AH family series [+ + +]
Author: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Date:   Mon Aug 19 12:04:04 2024 +0530

    platform/x86/amd/pmf: Update SMU metrics table for 1AH family series
    
    commit 8f2407cb3f1e8586622e80269338efb7bed2f05b upstream.
    
    The SMU metrics table has been revised for the 1AH family series.
    Introduce a new metrics table structure to retrieve comprehensive metrics
    information from the PMFW. This information will be utilized by the PMF
    driver to adjust system thermals.
    
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Co-developed-by: Patil Rajesh Reddy <Patil.Reddy@amd.com>
    Signed-off-by: Patil Rajesh Reddy <Patil.Reddy@amd.com>
    Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    Link: https://lore.kernel.org/r/20240819063404.378061-2-Shyam-sundar.S-k@amd.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
pwm: imx-tpm: Use correct MODULO value for EPWM mode [+ + +]
Author: Erik Schumacher <erik.schumacher@iris-sensing.com>
Date:   Fri Oct 25 08:37:00 2024 +0000

    pwm: imx-tpm: Use correct MODULO value for EPWM mode
    
    commit cc6a931d1f3b412263d515fd93b21fc0ca5147fe upstream.
    
    The modulo register defines the period of the edge-aligned PWM mode
    (which is the only mode implemented). The reference manual states:
    "The EPWM period is determined by (MOD + 0001h) ..." So the value that
    is written to the MOD register must therefore be one less than the
    calculated period length. Return -EINVAL if the calculated length is
    already zero.
    A correct MODULO value is particularly relevant if the PWM has to output
    a high frequency due to a low period value.
    
    Fixes: 738a1cfec2ed ("pwm: Add i.MX TPM PWM driver support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Erik Schumacher <erik.schumacher@iris-sensing.com>
    Link: https://lore.kernel.org/r/1a3890966d68b9f800d457cbf095746627495e18.camel@iris-sensing.com
    Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
regulator: rtq2208: Fix uninitialized use of regulator_config [+ + +]
Author: ChiYuan Huang <cy_huang@richtek.com>
Date:   Fri Oct 25 13:59:18 2024 +0800

    regulator: rtq2208: Fix uninitialized use of regulator_config
    
    [ Upstream commit 2feb023110843acce790e9089e72e9a9503d9fa5 ]
    
    Fix rtq2208 driver uninitialized use to cause kernel error.
    
    Fixes: 85a11f55621a ("regulator: rtq2208: Add Richtek RTQ2208 SubPMIC")
    Signed-off-by: ChiYuan Huang <cy_huang@richtek.com>
    Link: https://patch.msgid.link/00d691cfcc0eae9ce80a37b62e99851e8fdcffe2.1729829243.git.cy_huang@richtek.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "ALSA: hda/conexant: Mute speakers at suspend / shutdown" [+ + +]
Author: Jarosław Janik <jaroslaw.janik@gmail.com>
Date:   Wed Oct 30 18:18:12 2024 +0100

    Revert "ALSA: hda/conexant: Mute speakers at suspend / shutdown"
    
    commit c9363bbb0f68dd1ddb8be7bbfe958cdfcd38d851 upstream.
    
    Commit 4f61c8fe3520 ("ALSA: hda/conexant: Mute speakers at suspend /
    shutdown") mutes speakers on system shutdown or whenever HDA controller
    is suspended by PM; this however interacts badly with Thinkpad's ACPI
    firmware behavior which uses beeps to signal various events (enter/leave
    suspend or hibernation, AC power connect/disconnect, low battery, etc.);
    now those beeps are either muted altogether (for suspend/hibernate/
    shutdown related events) or work more or less randomly (eg. AC
    plug/unplug is only audible when you are playing music at the moment,
    because HDA device is likely in suspend mode otherwise).
    
    Since the original bug report mentioned in 4f61c8fe3520 complained about
    Lenovo's Thinkpad laptop - revert this commit altogether.
    
    Fixes: 4f61c8fe3520 ("ALSA: hda/conexant: Mute speakers at suspend / shutdown")
    Signed-off-by: Jarosław Janik <jaroslaw.janik@gmail.com>
    Link: https://patch.msgid.link/20241030171813.18941-2-jaroslaw.janik@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
rpmsg: glink: Handle rejected intent request better [+ + +]
Author: Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>
Date:   Wed Oct 23 17:24:32 2024 +0000

    rpmsg: glink: Handle rejected intent request better
    
    commit a387e73fedd6307c0e194deaa53c42b153ff0bd6 upstream.
    
    GLINK operates using pre-allocated buffers, aka intents, where incoming
    messages are aggregated before being passed up the stack. In the case
    that no suitable intents have been announced by the receiver, the sender
    can request an intent to be allocated.
    
    The initial implementation of the response to such request dealt
    with two outcomes; granted allocations, and all other cases being
    considered -ECANCELLED (likely from "cancelling the operation as the
    remote is going down").
    
    But on some channels intent allocation is not supported, instead the
    remote will pre-allocate and announce a fixed number of intents for the
    sender to use. If for such channels an rpmsg_send() is being invoked
    before any channels have been announced, an intent request will be
    issued and as this comes back rejected the call fails with -ECANCELED.
    
    Given that this is reported in the same way as the remote being shut
    down, there's no way for the client to differentiate the two cases.
    
    In line with the original GLINK design, change the return value to
    -EAGAIN for the case where the remote rejects an intent allocation
    request.
    
    It's tempting to handle this case in the GLINK core, as we expect
    intents to show up in this case. But there's no way to distinguish
    between this case and a rejection for a too big allocation, nor is it
    possible to predict if a currently used (and seemingly suitable) intent
    will be returned for reuse or not. As such, returning the error to the
    client and allow it to react seems to be the only sensible solution.
    
    In addition to this, commit 'c05dfce0b89e ("rpmsg: glink: Wait for
    intent, not just request ack")' changed the logic such that the code
    always wait for an intent request response and an intent. This works out
    in most cases, but in the event that an intent request is rejected and no
    further intent arrives (e.g. client asks for a too big intent), the code
    will stall for 10 seconds and then return -ETIMEDOUT; instead of a more
    suitable error.
    
    This change also resulted in intent requests racing with the shutdown of
    the remote would be exposed to this same problem, unless some intent
    happens to arrive. A patch for this was developed and posted by Sarannya
    S [1], and has been incorporated here.
    
    To summarize, the intent request can end in 4 ways:
    - Timeout, no response arrived => return -ETIMEDOUT
    - Abort TX, the edge is going away => return -ECANCELLED
    - Intent request was rejected => return -EAGAIN
    - Intent request was accepted, and an intent arrived => return 0
    
    This patch was developed with input from Sarannya S, Deepak Kumar Singh,
    and Chris Lew.
    
    [1] https://lore.kernel.org/all/20240925072328.1163183-1-quic_deesin@quicinc.com/
    
    Fixes: c05dfce0b89e ("rpmsg: glink: Wait for intent, not just request ack")
    Cc: stable@vger.kernel.org
    Tested-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>
    Reviewed-by: Chris Lew <quic_clew@quicinc.com>
    Link: https://lore.kernel.org/r/20241023-pmic-glink-ecancelled-v2-1-ebc268129407@oss.qualcomm.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
rxrpc: Fix missing locking causing hanging calls [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Wed Nov 6 13:03:22 2024 +0000

    rxrpc: Fix missing locking causing hanging calls
    
    [ Upstream commit fc9de52de38f656399d2ce40f7349a6b5f86e787 ]
    
    If a call gets aborted (e.g. because kafs saw a signal) between it being
    queued for connection and the I/O thread picking up the call, the abort
    will be prioritised over the connection and it will be removed from
    local->new_client_calls by rxrpc_disconnect_client_call() without a lock
    being held.  This may cause other calls on the list to disappear if a race
    occurs.
    
    Fix this by taking the client_call_lock when removing a call from whatever
    list its ->wait_link happens to be on.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: linux-afs@lists.infradead.org
    Reported-by: Marc Dionne <marc.dionne@auristor.com>
    Fixes: 9d35d880e0e4 ("rxrpc: Move client call connection to the I/O thread")
    Link: https://patch.msgid.link/726660.1730898202@warthog.procyon.org.uk
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scsi: sd_zbc: Use kvzalloc() to allocate REPORT ZONES buffer [+ + +]
Author: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Date:   Wed Oct 30 12:02:53 2024 +0100

    scsi: sd_zbc: Use kvzalloc() to allocate REPORT ZONES buffer
    
    [ Upstream commit 7ce3e6107103214d354a16729a472f588be60572 ]
    
    We have two reports of failed memory allocation in btrfs' code which is
    calling into report zones.
    
    Both of these reports have the following signature coming from
    __vmalloc_area_node():
    
     kworker/u17:5: vmalloc error: size 0, failed to allocate pages, mode:0x10dc2(GFP_KERNEL|__GFP_HIGHMEM|__GFP_NORETRY|__GFP_ZERO), nodemask=(null),cpuset=/,mems_allowed=0
    
    Further debugging showed these where allocations of one sector (512
    bytes) and at least one of the reporter's systems where low on memory,
    so going through the overhead of allocating a vm area failed.
    
    Switching the allocation from __vmalloc() to kvzalloc() avoids the
    overhead of vmalloc() on small allocations and succeeds.
    
    Note: the buffer is already freed using kvfree() so there's no need to
    adjust the free path.
    
    Cc: Qu Wenru <wqu@suse.com>
    Cc: Naohiro Aota <naohiro.aota@wdc.com>
    Link: https://github.com/kdave/btrfs-progs/issues/779
    Link: https://github.com/kdave/btrfs-progs/issues/915
    Fixes: 23a50861adda ("scsi: sd_zbc: Cleanup sd_zbc_alloc_report_buffer()")
    Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Link: https://lore.kernel.org/r/20241030110253.11718-1-jth@kernel.org
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: ufs: core: Start the RTC update work later [+ + +]
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Thu Oct 31 14:26:24 2024 -0700

    scsi: ufs: core: Start the RTC update work later
    
    commit 54c814c8b23bc7617be3d46abdb896937695dbfa upstream.
    
    The RTC update work involves runtime resuming the UFS controller. Hence,
    only start the RTC update work after runtime power management in the UFS
    driver has been fully initialized. This patch fixes the following kernel
    crash:
    
    Internal error: Oops: 0000000096000006 [#1] PREEMPT SMP
    Workqueue: events ufshcd_rtc_work
    Call trace:
     _raw_spin_lock_irqsave+0x34/0x8c (P)
     pm_runtime_get_if_active+0x24/0x9c (L)
     pm_runtime_get_if_active+0x24/0x9c
     ufshcd_rtc_work+0x138/0x1b4
     process_one_work+0x148/0x288
     worker_thread+0x2cc/0x3d4
     kthread+0x110/0x114
     ret_from_fork+0x10/0x20
    
    Reported-by: Neil Armstrong <neil.armstrong@linaro.org>
    Closes: https://lore.kernel.org/linux-scsi/0c0bc528-fdc2-4106-bc99-f23ae377f6f5@linaro.org/
    Fixes: 6bf999e0eb41 ("scsi: ufs: core: Add UFS RTC support")
    Cc: Bean Huo <beanhuo@micron.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Link: https://lore.kernel.org/r/20241031212632.2799127-1-bvanassche@acm.org
    Reviewed-by: Peter Wang <peter.wang@mediatek.com>
    Reviewed-by: Bean Huo <beanhuo@micron.com>
    Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-HDK
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
sctp: properly validate chunk size in sctp_sf_ootb() [+ + +]
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Oct 29 13:46:21 2024 -0400

    sctp: properly validate chunk size in sctp_sf_ootb()
    
    [ Upstream commit 0ead60804b64f5bd6999eec88e503c6a1a242d41 ]
    
    A size validation fix similar to that in Commit 50619dbf8db7 ("sctp: add
    size validation when walking chunks") is also required in sctp_sf_ootb()
    to address a crash reported by syzbot:
    
      BUG: KMSAN: uninit-value in sctp_sf_ootb+0x7f5/0xce0 net/sctp/sm_statefuns.c:3712
      sctp_sf_ootb+0x7f5/0xce0 net/sctp/sm_statefuns.c:3712
      sctp_do_sm+0x181/0x93d0 net/sctp/sm_sideeffect.c:1166
      sctp_endpoint_bh_rcv+0xc38/0xf90 net/sctp/endpointola.c:407
      sctp_inq_push+0x2ef/0x380 net/sctp/inqueue.c:88
      sctp_rcv+0x3831/0x3b20 net/sctp/input.c:243
      sctp4_rcv+0x42/0x50 net/sctp/protocol.c:1159
      ip_protocol_deliver_rcu+0xb51/0x13d0 net/ipv4/ip_input.c:205
      ip_local_deliver_finish+0x336/0x500 net/ipv4/ip_input.c:233
    
    Reported-by: syzbot+f0cbb34d39392f2746ca@syzkaller.appspotmail.com
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Link: https://patch.msgid.link/a29ebb6d8b9f8affd0f9abb296faafafe10c17d8.1730223981.git.lucien.xin@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
security/keys: fix slab-out-of-bounds in key_task_permission [+ + +]
Author: Chen Ridong <chenridong@huawei.com>
Date:   Tue Oct 8 12:46:39 2024 +0000

    security/keys: fix slab-out-of-bounds in key_task_permission
    
    [ Upstream commit 4a74da044ec9ec8679e6beccc4306b936b62873f ]
    
    KASAN reports an out of bounds read:
    BUG: KASAN: slab-out-of-bounds in __kuid_val include/linux/uidgid.h:36
    BUG: KASAN: slab-out-of-bounds in uid_eq include/linux/uidgid.h:63 [inline]
    BUG: KASAN: slab-out-of-bounds in key_task_permission+0x394/0x410
    security/keys/permission.c:54
    Read of size 4 at addr ffff88813c3ab618 by task stress-ng/4362
    
    CPU: 2 PID: 4362 Comm: stress-ng Not tainted 5.10.0-14930-gafbffd6c3ede #15
    Call Trace:
     __dump_stack lib/dump_stack.c:82 [inline]
     dump_stack+0x107/0x167 lib/dump_stack.c:123
     print_address_description.constprop.0+0x19/0x170 mm/kasan/report.c:400
     __kasan_report.cold+0x6c/0x84 mm/kasan/report.c:560
     kasan_report+0x3a/0x50 mm/kasan/report.c:585
     __kuid_val include/linux/uidgid.h:36 [inline]
     uid_eq include/linux/uidgid.h:63 [inline]
     key_task_permission+0x394/0x410 security/keys/permission.c:54
     search_nested_keyrings+0x90e/0xe90 security/keys/keyring.c:793
    
    This issue was also reported by syzbot.
    
    It can be reproduced by following these steps(more details [1]):
    1. Obtain more than 32 inputs that have similar hashes, which ends with the
       pattern '0xxxxxxxe6'.
    2. Reboot and add the keys obtained in step 1.
    
    The reproducer demonstrates how this issue happened:
    1. In the search_nested_keyrings function, when it iterates through the
       slots in a node(below tag ascend_to_node), if the slot pointer is meta
       and node->back_pointer != NULL(it means a root), it will proceed to
       descend_to_node. However, there is an exception. If node is the root,
       and one of the slots points to a shortcut, it will be treated as a
       keyring.
    2. Whether the ptr is keyring decided by keyring_ptr_is_keyring function.
       However, KEYRING_PTR_SUBTYPE is 0x2UL, the same as
       ASSOC_ARRAY_PTR_SUBTYPE_MASK.
    3. When 32 keys with the similar hashes are added to the tree, the ROOT
       has keys with hashes that are not similar (e.g. slot 0) and it splits
       NODE A without using a shortcut. When NODE A is filled with keys that
       all hashes are xxe6, the keys are similar, NODE A will split with a
       shortcut. Finally, it forms the tree as shown below, where slot 6 points
       to a shortcut.
    
                          NODE A
                  +------>+---+
          ROOT    |       | 0 | xxe6
          +---+   |       +---+
     xxxx | 0 | shortcut  :   : xxe6
          +---+   |       +---+
     xxe6 :   :   |       |   | xxe6
          +---+   |       +---+
          | 6 |---+       :   : xxe6
          +---+           +---+
     xxe6 :   :           | f | xxe6
          +---+           +---+
     xxe6 | f |
          +---+
    
    4. As mentioned above, If a slot(slot 6) of the root points to a shortcut,
       it may be mistakenly transferred to a key*, leading to a read
       out-of-bounds read.
    
    To fix this issue, one should jump to descend_to_node if the ptr is a
    shortcut, regardless of whether the node is root or not.
    
    [1] https://lore.kernel.org/linux-kernel/1cfa878e-8c7b-4570-8606-21daf5e13ce7@huaweicloud.com/
    
    [jarkko: tweaked the commit message a bit to have an appropriate closes
     tag.]
    Fixes: b2a4df200d57 ("KEYS: Expand the capacity of a keyring")
    Reported-by: syzbot+5b415c07907a2990d1a3@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/000000000000cbb7860611f61147@google.com/T/
    Signed-off-by: Chen Ridong <chenridong@huawei.com>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests: hugetlb_dio: check for initial conditions to skip in the start [+ + +]
Author: Muhammad Usama Anjum <usama.anjum@collabora.com>
Date:   Fri Nov 1 19:15:57 2024 +0500

    selftests: hugetlb_dio: check for initial conditions to skip in the start
    
    commit 0268d4579901821ff17259213c2d8c9679995d48 upstream.
    
    The test should be skipped if initial conditions aren't fulfilled in the
    start instead of failing and outputting non-compliant TAP logs.  This kind
    of failure pollutes the results.  The initial conditions are:
    
    - The test should only execute if /tmp file can be allocated.
    - The test should only execute if huge pages are free.
    
    Before:
    TAP version 13
    1..4
    Bail out! Error opening file
    : Read-only file system (30)
     # Planned tests != run tests (4 != 0)
     # Totals: pass:0 fail:0 xfail:0 xpass:0 skip:0 error:0
    
    After:
    TAP version 13
    1..0 # SKIP Unable to allocate file: Read-only file system
    
    Link: https://lkml.kernel.org/r/20241101141557.3159432-1-usama.anjum@collabora.com
    Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
    Fixes: 3a103b5315b7 ("selftest: mm: Test if hugepage does not get leaked during __bio_release_pages()")
    Cc: Muhammad Usama Anjum <usama.anjum@collabora.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Donet Tom <donettom@linux.ibm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
signal: restore the override_rlimit logic [+ + +]
Author: Roman Gushchin <roman.gushchin@linux.dev>
Date:   Mon Nov 4 19:54:19 2024 +0000

    signal: restore the override_rlimit logic
    
    commit 9e05e5c7ee8758141d2db7e8fea2cab34500c6ed upstream.
    
    Prior to commit d64696905554 ("Reimplement RLIMIT_SIGPENDING on top of
    ucounts") UCOUNT_RLIMIT_SIGPENDING rlimit was not enforced for a class of
    signals.  However now it's enforced unconditionally, even if
    override_rlimit is set.  This behavior change caused production issues.
    
    For example, if the limit is reached and a process receives a SIGSEGV
    signal, sigqueue_alloc fails to allocate the necessary resources for the
    signal delivery, preventing the signal from being delivered with siginfo.
    This prevents the process from correctly identifying the fault address and
    handling the error.  From the user-space perspective, applications are
    unaware that the limit has been reached and that the siginfo is
    effectively 'corrupted'.  This can lead to unpredictable behavior and
    crashes, as we observed with java applications.
    
    Fix this by passing override_rlimit into inc_rlimit_get_ucounts() and skip
    the comparison to max there if override_rlimit is set.  This effectively
    restores the old behavior.
    
    Link: https://lkml.kernel.org/r/20241104195419.3962584-1-roman.gushchin@linux.dev
    Fixes: d64696905554 ("Reimplement RLIMIT_SIGPENDING on top of ucounts")
    Signed-off-by: Roman Gushchin <roman.gushchin@linux.dev>
    Co-developed-by: Andrei Vagin <avagin@google.com>
    Signed-off-by: Andrei Vagin <avagin@google.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Acked-by: Alexey Gladkov <legion@kernel.org>
    Cc: Kees Cook <kees@kernel.org>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
staging: vchiq_arm: Use devm_kzalloc() for drv_mgmt allocation [+ + +]
Author: Umang Jain <umang.jain@ideasonboard.com>
Date:   Wed Oct 16 18:32:25 2024 +0530

    staging: vchiq_arm: Use devm_kzalloc() for drv_mgmt allocation
    
    commit 807babf69027b4f1c55e72b06879658e83830880 upstream.
    
    The struct drv_mgmt 'mgmt' is currently allocated dynamically using
    kzalloc(). Unfortunately, it is subjected to memory leaks in the error
    handling paths of the probe() function.
    
    To address this issue, use device resource management
    helper devm_kzalloc(), to ensure cleanup after the allocation.
    
    Cc: stable@vger.kernel.org
    Fixes: 1c9e16b73166 ("staging: vc04_services: vchiq_arm: Split driver static and runtime data")
    Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/20241016130225.61024-3-umang.jain@ideasonboard.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

staging: vchiq_arm: Use devm_kzalloc() for vchiq_arm_state allocation [+ + +]
Author: Umang Jain <umang.jain@ideasonboard.com>
Date:   Wed Oct 16 18:32:24 2024 +0530

    staging: vchiq_arm: Use devm_kzalloc() for vchiq_arm_state allocation
    
    commit 404b739e895522838f1abdc340c554654d671dde upstream.
    
    The struct vchiq_arm_state 'platform_state' is currently allocated
    dynamically using kzalloc(). Unfortunately, it is never freed and is
    subjected to memory leaks in the error handling paths of the probe()
    function.
    
    To address the issue, use device resource management helper
    devm_kzalloc(), to ensure cleanup after its allocation.
    
    Fixes: 71bad7f08641 ("staging: add bcm2708 vchiq driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/20241016130225.61024-2-umang.jain@ideasonboard.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
sunrpc: handle -ENOTCONN in xs_tcp_setup_socket() [+ + +]
Author: NeilBrown <neilb@suse.de>
Date:   Wed Oct 9 16:28:06 2024 +1100

    sunrpc: handle -ENOTCONN in xs_tcp_setup_socket()
    
    [ Upstream commit 10f0740234f0b157b41bdc7e9c3555a9b86c1599 ]
    
    xs_tcp_finish_connecting() can return -ENOTCONN but the switch statement
    in xs_tcp_setup_socket() treats that as an unhandled error.
    
    If we treat it as a known error it would propagate back to
    call_connect_status() which does handle that error code.  This appears
    to be the intention of the commit (given below) which added -ENOTCONN as
    a return status for xs_tcp_finish_connecting().
    
    So add -ENOTCONN to the switch statement as an error to pass through to
    the caller.
    
    Link: https://bugzilla.suse.com/show_bug.cgi?id=1231050
    Link: https://access.redhat.com/discussions/3434091
    Fixes: 01d37c428ae0 ("SUNRPC: xprt_connect() don't abort the task if the transport isn't bound")
    Signed-off-by: NeilBrown <neilb@suse.de>
    Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
thermal/drivers/qcom/lmh: Remove false lockdep backtrace [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Fri Oct 11 08:48:39 2024 +0300

    thermal/drivers/qcom/lmh: Remove false lockdep backtrace
    
    commit f16beaaee248eaa37ad40b5905924fcf70ae02e3 upstream.
    
    Annotate LMH IRQs with lockdep classes so that the lockdep doesn't
    report possible recursive locking issue between LMH and GIC interrupts.
    
    For the reference:
    
           CPU0
           ----
      lock(&irq_desc_lock_class);
      lock(&irq_desc_lock_class);
    
     *** DEADLOCK ***
    
    Call trace:
     dump_backtrace+0x98/0xf0
     show_stack+0x18/0x24
     dump_stack_lvl+0x90/0xd0
     dump_stack+0x18/0x24
     print_deadlock_bug+0x258/0x348
     __lock_acquire+0x1078/0x1f44
     lock_acquire+0x1fc/0x32c
     _raw_spin_lock_irqsave+0x60/0x88
     __irq_get_desc_lock+0x58/0x98
     enable_irq+0x38/0xa0
     lmh_enable_interrupt+0x2c/0x38
     irq_enable+0x40/0x8c
     __irq_startup+0x78/0xa4
     irq_startup+0x78/0x168
     __enable_irq+0x70/0x7c
     enable_irq+0x4c/0xa0
     qcom_cpufreq_ready+0x20/0x2c
     cpufreq_online+0x2a8/0x988
     cpufreq_add_dev+0x80/0x98
     subsys_interface_register+0x104/0x134
     cpufreq_register_driver+0x150/0x234
     qcom_cpufreq_hw_driver_probe+0x2a8/0x388
     platform_probe+0x68/0xc0
     really_probe+0xbc/0x298
     __driver_probe_device+0x78/0x12c
     driver_probe_device+0x3c/0x160
     __device_attach_driver+0xb8/0x138
     bus_for_each_drv+0x84/0xe0
     __device_attach+0x9c/0x188
     device_initial_probe+0x14/0x20
     bus_probe_device+0xac/0xb0
     deferred_probe_work_func+0x8c/0xc8
     process_one_work+0x20c/0x62c
     worker_thread+0x1bc/0x36c
     kthread+0x120/0x124
     ret_from_fork+0x10/0x20
    
    Fixes: 53bca371cdf7 ("thermal/drivers/qcom: Add support for LMh driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241011-lmh-lockdep-v1-1-495cbbe6fef1@linaro.org
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
thermal/of: support thermal zones w/o trips subnode [+ + +]
Author: Icenowy Zheng <uwu@icenowy.me>
Date:   Fri Oct 18 15:31:36 2024 +0800

    thermal/of: support thermal zones w/o trips subnode
    
    [ Upstream commit 725f31f300e300a9d94976bd8f1db6e746f95f63 ]
    
    Although the current device tree binding of thermal zones require the
    trips subnode, the binding in kernel v5.15 does not require it, and many
    device trees shipped with the kernel, for example,
    allwinner/sun50i-a64.dtsi and mediatek/mt8183-kukui.dtsi in ARM64, still
    comply to the old binding and contain no trips subnode.
    
    Allow the code to successfully register thermal zones w/o trips subnode
    for DT binding compatibility now.
    
    Furtherly, the inconsistency between DTs and bindings should be resolved
    by either adding empty trips subnode or dropping the trips subnode
    requirement.
    
    Fixes: d0c75fa2c17f ("thermal/of: Initialize trip points separately")
    Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
    [wenst@chromium.org: Reworked logic and kernel log messages]
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Reviewed-by: Rafael J. Wysocki <rafael@kernel.org>
    Link: https://lore.kernel.org/r/20241018073139.1268995-1-wenst@chromium.org
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
thunderbolt: Add only on-board retimers when !CONFIG_USB4_DEBUGFS_MARGINING [+ + +]
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Thu Oct 24 12:26:53 2024 +0300

    thunderbolt: Add only on-board retimers when !CONFIG_USB4_DEBUGFS_MARGINING
    
    commit bf791751162ac875a9439426d13f8d4d18151549 upstream.
    
    Normally there is no need to enumerate retimers on the other side of the
    cable. This is only needed in special cases where user wants to run
    receiver lane margining against the downstream facing port of a retimer.
    Furthermore this might confuse the userspace tools such as fwupd because
    it cannot read the information it expects from these retimers.
    
    Fix this by changing the retimer enumeration code to add only on-board
    retimers when CONFIG_USB4_DEBUGFS_MARGINING is not enabled.
    
    Reported-by: AceLan Kao <acelan.kao@canonical.com>
    Tested-by: AceLan Kao <acelan.kao@canonical.com>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219420
    Cc: stable@vger.kernel.org
    Fixes: ff6ab055e070 ("thunderbolt: Add receiver lane margining support for retimers")
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

thunderbolt: Fix connection issue with Pluggable UD-4VPD dock [+ + +]
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Tue Nov 5 09:19:02 2024 +0200

    thunderbolt: Fix connection issue with Pluggable UD-4VPD dock
    
    commit bd646c768a934d28e574ee940d6759c7954a024d upstream.
    
    Rick reported that his Pluggable USB4 dock does not work anymore after
    upgrading to v6.10 kernel.
    
    It looks like commit c6ca1ac9f472 ("thunderbolt: Increase sideband
    access polling delay") makes the device router enumeration happen later
    than what might be expected by the dock (although there is no such limit
    in the USB4 spec) which probably makes it assume there is something
    wrong with the high-speed link and reset it. After the link is reset the
    same issue happens again and again.
    
    For this reason lower the sideband access delay from 5ms to 1ms. This
    seems to work fine according to Rick's testing.
    
    Reported-by: Rick Lahaye <rick@581238.xyz>
    Closes: https://lore.kernel.org/linux-usb/000f01db247b$d10e1520$732a3f60$@581238.xyz/
    Tested-by: Rick Lahaye <rick@581238.xyz>
    Fixes: c6ca1ac9f472 ("thunderbolt: Increase sideband access polling delay")
    Cc: stable@vger.kernel.org
    Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tools/lib/thermal: Fix sampling handler context ptr [+ + +]
Author: Emil Dahl Juhl <emdj@bang-olufsen.dk>
Date:   Tue Oct 15 19:18:26 2024 +0200

    tools/lib/thermal: Fix sampling handler context ptr
    
    [ Upstream commit fcd54cf480c87b96313a97dbf898c644b7bb3a2e ]
    
    The sampling handler, provided by the user alongside a void* context,
    was invoked with an internal structure instead of the user context.
    
    Correct the invocation of the sampling handler to pass the user context
    pointer instead.
    
    Note that the approach taken is similar to that in events.c, and will
    reduce the chances of this mistake happening if additional sampling
    callbacks are added.
    
    Fixes: 47c4b0de080a ("tools/lib/thermal: Add a thermal library")
    Signed-off-by: Emil Dahl Juhl <emdj@bang-olufsen.dk>
    Link: https://lore.kernel.org/r/20241015171826.170154-1-emdj@bang-olufsen.dk
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tpm: Lock TPM chip in tpm_pm_suspend() first [+ + +]
Author: Jarkko Sakkinen <jarkko@kernel.org>
Date:   Thu Oct 31 02:16:09 2024 +0200

    tpm: Lock TPM chip in tpm_pm_suspend() first
    
    commit 9265fed6db601ee2ec47577815387458ef4f047a upstream.
    
    Setting TPM_CHIP_FLAG_SUSPENDED in the end of tpm_pm_suspend() can be racy
    according, as this leaves window for tpm_hwrng_read() to be called while
    the operation is in progress. The recent bug report gives also evidence of
    this behaviour.
    
    Aadress this by locking the TPM chip before checking any chip->flags both
    in tpm_pm_suspend() and tpm_hwrng_read(). Move TPM_CHIP_FLAG_SUSPENDED
    check inside tpm_get_random() so that it will be always checked only when
    the lock is reserved.
    
    Cc: stable@vger.kernel.org # v6.4+
    Fixes: 99d464506255 ("tpm: Prevent hwrng from activating during resume")
    Reported-by: Mike Seo <mikeseohyungjin@gmail.com>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219383
    Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
    Tested-by: Mike Seo <mikeseohyungjin@gmail.com>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tracing: Fix tracefs mount options [+ + +]
Author: Kalesh Singh <kaleshsingh@google.com>
Date:   Wed Oct 30 10:17:48 2024 -0700

    tracing: Fix tracefs mount options
    
    commit e4d32142d1de8bcafd90ea5f4f557104f0969c41 upstream.
    
    Commit 78ff64081949 ("vfs: Convert tracefs to use the new mount API")
    converted tracefs to use the new mount APIs caused mount options
    (e.g. gid=<gid>) to not take effect.
    
    The tracefs superblock can be updated from multiple paths:
        - on fs_initcall() to init_trace_printk_function_export()
        - from a work queue to initialize eventfs
          tracer_init_tracefs_work_func()
        - fsconfig() syscall to mount or remount of tracefs
    
    The tracefs superblock root inode gets created early on in
    init_trace_printk_function_export().
    
    With the new mount API, tracefs effectively uses get_tree_single() instead
    of the old API mount_single().
    
    Previously, mount_single() ensured that the options are always applied to
    the superblock root inode:
        (1) If the root inode didn't exist, call fill_super() to create it
            and apply the options.
        (2) If the root inode exists, call reconfigure_single() which
            effectively calls tracefs_apply_options() to parse and apply
            options to the subperblock's fs_info and inode and remount
            eventfs (if necessary)
    
    On the other hand, get_tree_single() effectively calls vfs_get_super()
    which:
        (3) If the root inode doesn't exists, calls fill_super() to create it
            and apply the options.
        (4) If the root inode already exists, updates the fs_context root
            with the superblock's root inode.
    
    (4) above is always the case for tracefs mounts, since the super block's
    root inode will already be created by init_trace_printk_function_export().
    
    This means that the mount options get ignored:
        - Since it isn't applied to the superblock's root inode, it doesn't
          get inherited by the children.
        - Since eventfs is initialized from a separate work queue and
          before call to mount with the options, and it doesn't get remounted
          for mount.
    
    Ensure that the mount options are applied to the super block and eventfs
    is remounted to respect the mount options.
    
    To understand this better, if fstab has the following:
    
     tracefs  /sys/kernel/tracing  tracefs   nosuid,nodev,noexec,gid=tracing 0  0
    
    On boot up, permissions look like:
    
     # ls -l /sys/kernel/tracing/trace
     -rw-r----- 1 root root 0 Nov  1 08:37 /sys/kernel/tracing/trace
    
    When it should look like:
    
     # ls -l /sys/kernel/tracing/trace
     -rw-r----- 1 root tracing 0 Nov  1 08:37 /sys/kernel/tracing/trace
    
    Link: https://lore.kernel.org/r/536e99d3-345c-448b-adee-a21389d7ab4b@redhat.com/
    
    Cc: Eric Sandeen <sandeen@redhat.com>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Ali Zahraee <ahzahraee@gmail.com>
    Cc: Christian Brauner <brauner@kernel.org>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: 78ff64081949 ("vfs: Convert tracefs to use the new mount API")
    Link: https://lore.kernel.org/20241030171928.4168869-2-kaleshsingh@google.com
    Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ucounts: fix counter leak in inc_rlimit_get_ucounts() [+ + +]
Author: Andrei Vagin <avagin@google.com>
Date:   Fri Nov 1 19:19:40 2024 +0000

    ucounts: fix counter leak in inc_rlimit_get_ucounts()
    
    commit 432dc0654c612457285a5dcf9bb13968ac6f0804 upstream.
    
    The inc_rlimit_get_ucounts() increments the specified rlimit counter and
    then checks its limit.  If the value exceeds the limit, the function
    returns an error without decrementing the counter.
    
    Link: https://lkml.kernel.org/r/20241101191940.3211128-1-roman.gushchin@linux.dev
    Fixes: 15bc01effefe ("ucounts: Fix signal ucount refcounting")
    Signed-off-by: Andrei Vagin <avagin@google.com>
    Co-developed-by: Roman Gushchin <roman.gushchin@linux.dev>
    Signed-off-by: Roman Gushchin <roman.gushchin@linux.dev>
    Tested-by: Roman Gushchin <roman.gushchin@linux.dev>
    Acked-by: Alexey Gladkov <legion@kernel.org>
    Cc: Kees Cook <kees@kernel.org>
    Cc: Andrei Vagin <avagin@google.com>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Alexey Gladkov <legion@kernel.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
usb: dwc3: fix fault at system suspend if device was already runtime suspended [+ + +]
Author: Roger Quadros <rogerq@kernel.org>
Date:   Mon Nov 4 16:00:11 2024 +0200

    usb: dwc3: fix fault at system suspend if device was already runtime suspended
    
    commit 9cfb31e4c89d200d8ab7cb1e0bb9e6e8d621ca0b upstream.
    
    If the device was already runtime suspended then during system suspend
    we cannot access the device registers else it will crash.
    
    Also we cannot access any registers after dwc3_core_exit() on some
    platforms so move the dwc3_enable_susphy() call to the top.
    
    Cc: stable@vger.kernel.org # v5.15+
    Reported-by: William McVicker <willmcvicker@google.com>
    Closes: https://lore.kernel.org/all/ZyVfcUuPq56R2m1Y@google.com
    Fixes: 705e3ce37bcc ("usb: dwc3: core: Fix system suspend on TI AM62 platforms")
    Signed-off-by: Roger Quadros <rogerq@kernel.org>
    Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Tested-by: Will McVicker <willmcvicker@google.com>
    Link: https://lore.kernel.org/r/20241104-am62-lpm-usb-fix-v1-1-e93df73a4f0d@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: musb: sunxi: Fix accessing an released usb phy [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Tue Oct 29 23:13:38 2024 +0800

    usb: musb: sunxi: Fix accessing an released usb phy
    
    commit 498dbd9aea205db9da674994b74c7bf8e18448bd upstream.
    
    Commit 6ed05c68cbca ("usb: musb: sunxi: Explicitly release USB PHY on
    exit") will cause that usb phy @glue->xceiv is accessed after released.
    
    1) register platform driver @sunxi_musb_driver
    // get the usb phy @glue->xceiv
    sunxi_musb_probe() -> devm_usb_get_phy().
    
    2) register and unregister platform driver @musb_driver
    musb_probe() -> sunxi_musb_init()
    use the phy here
    //the phy is released here
    musb_remove() -> sunxi_musb_exit() -> devm_usb_put_phy()
    
    3) register @musb_driver again
    musb_probe() -> sunxi_musb_init()
    use the phy here but the phy has been released at 2).
    ...
    
    Fixed by reverting the commit, namely, removing devm_usb_put_phy()
    from sunxi_musb_exit().
    
    Fixes: 6ed05c68cbca ("usb: musb: sunxi: Explicitly release USB PHY on exit")
    Cc: stable@vger.kernel.org
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Link: https://lore.kernel.org/r/20241029-sunxi_fix-v1-1-9431ed2ab826@quicinc.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
USB: serial: io_edgeport: fix use after free in debug printk [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Thu Oct 31 12:48:30 2024 +0300

    USB: serial: io_edgeport: fix use after free in debug printk
    
    commit 37bb5628379295c1254c113a407cab03a0f4d0b4 upstream.
    
    The "dev_dbg(&urb->dev->dev, ..." which happens after usb_free_urb(urb)
    is a use after free of the "urb" pointer.  Store the "dev" pointer at the
    start of the function to avoid this issue.
    
    Fixes: 984f68683298 ("USB: serial: io_edgeport.c: remove dbg() usage")
    Cc: stable@vger.kernel.org
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

USB: serial: option: add Fibocom FG132 0x0112 composition [+ + +]
Author: Reinhard Speyerer <rspmn@arcor.de>
Date:   Fri Oct 18 23:07:06 2024 +0200

    USB: serial: option: add Fibocom FG132 0x0112 composition
    
    commit 393c74ccbd847bacf18865a01b422586fc7341cf upstream.
    
    Add Fibocom FG132 0x0112 composition:
    
    T:  Bus=03 Lev=02 Prnt=06 Port=01 Cnt=02 Dev#= 10 Spd=12   MxCh= 0
    D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2cb7 ProdID=0112 Rev= 5.15
    S:  Manufacturer=Fibocom Wireless Inc.
    S:  Product=Fibocom Module
    S:  SerialNumber=xxxxxxxx
    C:* #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=86(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    
    Signed-off-by: Reinhard Speyerer <rspmn@arcor.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

USB: serial: option: add Quectel RG650V [+ + +]
Author: Benoît Monin <benoit.monin@gmx.fr>
Date:   Thu Oct 24 17:09:19 2024 +0200

    USB: serial: option: add Quectel RG650V
    
    commit 3b05949ba39f305b585452d0e177470607842165 upstream.
    
    Add support for Quectel RG650V which is based on Qualcomm SDX65 chip.
    The composition is DIAG / NMEA / AT / AT / QMI.
    
    T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
    D:  Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
    P:  Vendor=2c7c ProdID=0122 Rev=05.15
    S:  Manufacturer=Quectel
    S:  Product=RG650V-EU
    S:  SerialNumber=xxxxxxx
    C:  #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=896mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=9ms
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=9ms
    I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    E:  Ad=05(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    E:  Ad=88(I) Atr=03(Int.) MxPS=   8 Ivl=9ms
    
    Signed-off-by: Benoît Monin <benoit.monin@gmx.fr>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

USB: serial: qcserial: add support for Sierra Wireless EM86xx [+ + +]
Author: Jack Wu <wojackbb@gmail.com>
Date:   Wed Nov 6 18:50:29 2024 +0800

    USB: serial: qcserial: add support for Sierra Wireless EM86xx
    
    commit 25eb47eed52979c2f5eee3f37e6c67714e02c49c upstream.
    
    Add support for Sierra Wireless EM86xx with USB-id 0x1199:0x90e5 and
    0x1199:0x90e4.
    
    0x1199:0x90e5
    T:  Bus=03 Lev=01 Prnt=01 Port=05 Cnt=01 Dev#= 14 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=1199 ProdID=90e5 Rev= 5.15
    S:  Manufacturer=Sierra Wireless, Incorporated
    S:  Product=Semtech EM8695 Mobile Broadband Adapter
    S:  SerialNumber=004403161882339
    C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    A:  FirstIf#=12 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=qcserial
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=qcserial
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E:  Ad=85(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
    I:* If#=12 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
    E:  Ad=87(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
    I:  If#=13 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:* If#=13 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x1199:0x90e4
    T:  Bus=03 Lev=01 Prnt=01 Port=05 Cnt=01 Dev#= 16 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1199 ProdID=90e4 Rev= 0.00
    S:  Manufacturer=Sierra Wireless, Incorporated
    S:  SerialNumber=004403161882339
    C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=  2mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=10 Driver=qcserial
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Jack Wu <wojackbb@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
usb: typec: fix potential out of bounds in ucsi_ccg_update_set_new_cam_cmd() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Mon Nov 4 20:16:42 2024 +0300

    usb: typec: fix potential out of bounds in ucsi_ccg_update_set_new_cam_cmd()
    
    commit 7dd08a0b4193087976db6b3ee7807de7e8316f96 upstream.
    
    The "*cmd" variable can be controlled by the user via debugfs.  That means
    "new_cam" can be as high as 255 while the size of the uc->updated[] array
    is UCSI_MAX_ALTMODES (30).
    
    The call tree is:
    ucsi_cmd() // val comes from simple_attr_write_xsigned()
    -> ucsi_send_command()
       -> ucsi_send_command_common()
          -> ucsi_run_command() // calls ucsi->ops->sync_control()
             -> ucsi_ccg_sync_control()
    
    Fixes: 170a6726d0e2 ("usb: typec: ucsi: add support for separate DP altmode devices")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/325102b3-eaa8-4918-a947-22aca1146586@stanley.mountain
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: typec: qcom-pmic: init value of hdr_len/txbuf_len earlier [+ + +]
Author: Rex Nie <rex.nie@jaguarmicro.com>
Date:   Wed Oct 30 21:36:32 2024 +0800

    usb: typec: qcom-pmic: init value of hdr_len/txbuf_len earlier
    
    commit 029778a4fd2c90c2e76a902b797c2348a722f1b8 upstream.
    
    If the read of USB_PDPHY_RX_ACKNOWLEDGE_REG failed, then hdr_len and
    txbuf_len are uninitialized. This commit stops to print uninitialized
    value and misleading/false data.
    
    Cc: stable@vger.kernel.org
    Fixes: a4422ff22142 (" usb: typec: qcom: Add Qualcomm PMIC Type-C driver")
    Signed-off-by: Rex Nie <rex.nie@jaguarmicro.com>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Reviewed-by: Bjorn Andersson <andersson@kernel.org>
    Acked-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Link: https://lore.kernel.org/r/20241030133632.2116-1-rex.nie@jaguarmicro.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
virtio_net: Add hash_key_length check [+ + +]
Author: Philo Lu <lulie@linux.alibaba.com>
Date:   Mon Nov 4 16:57:04 2024 +0800

    virtio_net: Add hash_key_length check
    
    [ Upstream commit 3f7d9c1964fcd16d02a8a9d4fd6f6cb60c4cc530 ]
    
    Add hash_key_length check in virtnet_probe() to avoid possible out of
    bound errors when setting/reading the hash key.
    
    Fixes: c7114b1249fa ("drivers/net/virtio_net: Added basic RSS support.")
    Signed-off-by: Philo Lu <lulie@linux.alibaba.com>
    Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
    Acked-by: Joe Damato <jdamato@fastly.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

virtio_net: Support dynamic rss indirection table size [+ + +]
Author: Philo Lu <lulie@linux.alibaba.com>
Date:   Mon Nov 4 16:57:03 2024 +0800

    virtio_net: Support dynamic rss indirection table size
    
    [ Upstream commit 86a48a00efdf61197b6658e52c6140463eb313dc ]
    
    When reading/writing virtio_net_ctrl_rss, we get the indirection table
    size from vi->rss_indir_table_size, which is initialized in
    virtnet_probe(). However, the actual size of indirection_table was set
    as VIRTIO_NET_RSS_MAX_TABLE_LEN=128. This collision may cause issues if
    the vi->rss_indir_table_size exceeds 128.
    
    This patch instead uses dynamic indirection table, allocated with
    vi->rss after vi->rss_indir_table_size initialized. And free it in
    virtnet_remove().
    
    In virtnet_commit_rss_command(), sgs for rss is initialized differently
    with hash_report. So indirection_table is not used if !vi->has_rss, and
    then we don't need to alloc indirection_table for hash_report only uses.
    
    Fixes: c7114b1249fa ("drivers/net/virtio_net: Added basic RSS support.")
    Signed-off-by: Philo Lu <lulie@linux.alibaba.com>
    Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
    Acked-by: Joe Damato <jdamato@fastly.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

virtio_net: Sync rss config to device when virtnet_probe [+ + +]
Author: Philo Lu <lulie@linux.alibaba.com>
Date:   Mon Nov 4 16:57:05 2024 +0800

    virtio_net: Sync rss config to device when virtnet_probe
    
    [ Upstream commit dc749b7b06082ccaacc602e724445da19cd03e9f ]
    
    During virtnet_probe, default rss configuration is initialized, but was
    not committed to the device. This patch fix this by sending rss command
    after device ready in virtnet_probe. Otherwise, the actual rss
    configuration used by device can be different with that read by user
    from driver, which may confuse the user.
    
    If the command committing fails, driver rss will be disabled.
    
    Fixes: c7114b1249fa ("drivers/net/virtio_net: Added basic RSS support.")
    Signed-off-by: Philo Lu <lulie@linux.alibaba.com>
    Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
    Acked-by: Joe Damato <jdamato@fastly.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

virtio_net: Update rss when set queue [+ + +]
Author: Philo Lu <lulie@linux.alibaba.com>
Date:   Mon Nov 4 16:57:06 2024 +0800

    virtio_net: Update rss when set queue
    
    [ Upstream commit 50bfcaedd78e53135ec0504302269b3b65bf1eff ]
    
    RSS configuration should be updated with queue number. In particular, it
    should be updated when (1) rss enabled and (2) default rss configuration
    is used without user modification.
    
    During rss command processing, device updates queue_pairs using
    rss.max_tx_vq. That is, the device updates queue_pairs together with
    rss, so we can skip the sperate queue_pairs update
    (VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET below) and return directly.
    
    Also remove the `vi->has_rss ?` check when setting vi->rss.max_tx_vq,
    because this is not used in the other hash_report case.
    
    Fixes: c7114b1249fa ("drivers/net/virtio_net: Added basic RSS support.")
    Signed-off-by: Philo Lu <lulie@linux.alibaba.com>
    Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
vsock/virtio: Initialization of the dangling pointer occurring in vsk->trans [+ + +]
Author: Hyunwoo Kim <v4bel@theori.io>
Date:   Tue Oct 22 09:32:56 2024 +0200

    vsock/virtio: Initialization of the dangling pointer occurring in vsk->trans
    
    commit 6ca575374dd9a507cdd16dfa0e78c2e9e20bd05f upstream.
    
    During loopback communication, a dangling pointer can be created in
    vsk->trans, potentially leading to a Use-After-Free condition.  This
    issue is resolved by initializing vsk->trans to NULL.
    
    Cc: stable <stable@kernel.org>
    Fixes: 06a8fc78367d ("VSOCK: Introduce virtio_vsock_common.ko")
    Signed-off-by: Hyunwoo Kim <v4bel@theori.io>
    Signed-off-by: Wongi Lee <qwerty@theori.io>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Message-Id: <2024102245-strive-crib-c8d3@gregkh>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
xtensa: Emulate one-byte cmpxchg [+ + +]
Author: Paul E. McKenney <paulmck@kernel.org>
Date:   Wed Mar 27 15:28:04 2024 -0700

    xtensa: Emulate one-byte cmpxchg
    
    commit e799bef0d9c85b963938d8f31806a898385a5b09 upstream.
    
    Use the new cmpxchg_emu_u8() to emulate one-byte cmpxchg() on xtensa.
    
    [ paulmck: Apply kernel test robot feedback. ]
    [ paulmck: Drop two-byte support per Arnd Bergmann feedback. ]
    [ Apply Geert Uytterhoeven feedback. ]
    
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Tested-by: Yujie Liu <yujie.liu@intel.com>
    Cc: Andi Shyti <andi.shyti@linux.intel.com>
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>