Changelog in Linux kernel 6.12.13

 
ACPI: fan: cleanup resources in the error path of .probe() [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Wed Dec 11 12:28:12 2024 +0900

    ACPI: fan: cleanup resources in the error path of .probe()
    
    [ Upstream commit c759bc8e9046f9812238f506d70f07d3ea4206d4 ]
    
    Call thermal_cooling_device_unregister() and sysfs_remove_link() in the
    error path of acpi_fan_probe() to fix possible memory leak.
    
    This bug was found by an experimental static analysis tool that I am
    developing.
    
    Fixes: 05a83d972293 ("ACPI: register ACPI Fan as generic thermal cooling device")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Link: https://patch.msgid.link/20241211032812.210164-1-joe@pf.is.s.u-tokyo.ac.jp
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
afs: Fix cleanup of immediately failed async calls [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Mon Dec 16 20:41:14 2024 +0000

    afs: Fix cleanup of immediately failed async calls
    
    [ Upstream commit 9750be93b2be12b6d92323b97d7c055099d279e6 ]
    
    If we manage to begin an async call, but fail to transmit any data on it
    due to a signal, we then abort it which causes a race between the
    notification of call completion from rxrpc and our attempt to cancel the
    notification.  The notification will be necessary, however, for async
    FetchData to terminate the netfs subrequest.
    
    However, since we get a notification from rxrpc upon completion of a call
    (aborted or otherwise), we can just leave it to that.
    
    This leads to calls not getting cleaned up, but appearing in
    /proc/net/rxrpc/calls as being aborted with code 6.
    
    Fix this by making the "error_do_abort:" case of afs_make_call() abort the
    call and then abandon it to the notification handler.
    
    Fixes: 34fa47612bfe ("afs: Fix race in async call refcounting")
    Reported-by: Marc Dionne <marc.dionne@auristor.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Link: https://lore.kernel.org/r/20241216204124.3752367-25-dhowells@redhat.com
    cc: linux-afs@lists.infradead.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

afs: Fix directory format encoding struct [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Mon Dec 16 20:41:03 2024 +0000

    afs: Fix directory format encoding struct
    
    [ Upstream commit 07a10767853adcbdbf436dc91393b729b52c4e81 ]
    
    The AFS directory format structure, union afs_xdr_dir_block::meta, has too
    many alloc counter slots declared and so pushes the hash table along and
    over the data.  This doesn't cause a problem at the moment because I'm
    currently ignoring the hash table and only using the correct number of
    alloc_ctrs in the code anyway.  In future, however, I should start using
    the hash table to try and speed up afs_lookup().
    
    Fix this by using the correct constant to declare the counter array.
    
    Fixes: 4ea219a839bf ("afs: Split the directory content defs into a header")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Link: https://lore.kernel.org/r/20241216204124.3752367-14-dhowells@redhat.com
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

afs: Fix EEXIST error returned from afs_rmdir() to be ENOTEMPTY [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Mon Dec 16 20:41:02 2024 +0000

    afs: Fix EEXIST error returned from afs_rmdir() to be ENOTEMPTY
    
    [ Upstream commit b49194da2aff2c879dec9c59ef8dec0f2b0809ef ]
    
    AFS servers pass back a code indicating EEXIST when they're asked to remove
    a directory that is not empty rather than ENOTEMPTY because not all the
    systems that an AFS server can run on have the latter error available and
    AFS preexisted the addition of that error in general.
    
    Fix afs_rmdir() to translate EEXIST to ENOTEMPTY.
    
    Fixes: 260a980317da ("[AFS]: Add "directory write" support.")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Link: https://lore.kernel.org/r/20241216204124.3752367-13-dhowells@redhat.com
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

afs: Fix the fallback handling for the YFS.RemoveFile2 RPC call [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Tue Jan 14 14:46:03 2025 +0000

    afs: Fix the fallback handling for the YFS.RemoveFile2 RPC call
    
    [ Upstream commit e30458d690f35abb01de8b3cbc09285deb725d00 ]
    
    Fix a pair of bugs in the fallback handling for the YFS.RemoveFile2 RPC
    call:
    
     (1) Fix the abort code check to also look for RXGEN_OPCODE.  The lack of
         this masks the second bug.
    
     (2) call->server is now not used for ordinary filesystem RPC calls that
         have an operation descriptor.  Fix to use call->op->server instead.
    
    Fixes: e49c7b2f6de7 ("afs: Build an abstraction around an "operation" concept")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Link: https://lore.kernel.org/r/109541.1736865963@warthog.procyon.org.uk
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ALSA: hda/realtek - Fixed headphone distorted sound on Acer Aspire A115-31 laptop [+ + +]
Author: Kailang Yang <kailang@realtek.com>
Date:   Mon Dec 30 14:44:01 2024 +0800

    ALSA: hda/realtek - Fixed headphone distorted sound on Acer Aspire A115-31 laptop
    
    [ Upstream commit 5cb4e5b056772e341b590755a976081776422053 ]
    
    Sound played through headphones is distorted.
    
    Fixes: 34ab5bbc6e82 ("ALSA: hda/realtek - Add Headset Mic supported Acer NB platform")
    Closes: https://lore.kernel.org/linux-sound/e142749b-7714-4733-9452-918fbe328c8f@gmail.com/
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Link: https://lore.kernel.org/0a89b6c18ed94378a105fa61e9f290e4@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda: Fix compilation of snd_hdac_adsp_xxx() helpers [+ + +]
Author: Cezary Rojewski <cezary.rojewski@intel.com>
Date:   Fri Jan 10 12:33:25 2025 +0100

    ALSA: hda: Fix compilation of snd_hdac_adsp_xxx() helpers
    
    [ Upstream commit 7579790915387396e26041ceafbc07348658edef ]
    
    The snd_hdac_adsp_xxx() wrap snd_hdac_reg_xxx() helpers to simplify
    register access for AudioDSP drivers e.g.: the avs-driver. Byte- and
    word-variants of said helps do not expand to bare readx/writex()
    operations but functions instead and, due to pointer type
    incompatibility, cause compilation to fail.
    
    As the macros are utilized by the avs-driver alone, relocate the code
    introduced with commit c19bd02e9029 ("ALSA: hda: Add helper macros for
    DSP capable devices") into the avs/ directory and update it to operate
    on 'adev' i.e.: the avs-driver-context directly to fix the issue.
    
    Fixes: c19bd02e9029 ("ALSA: hda: Add helper macros for DSP capable devices")
    Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Acked-by: Mark Brown <broonie@kernel.org>
    Link: https://patch.msgid.link/20250110113326.3809897-2-cezary.rojewski@intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: seq: Make dependency on UMP clearer [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 1 13:55:47 2025 +0100

    ALSA: seq: Make dependency on UMP clearer
    
    [ Upstream commit 9001d515443518d72222ba4d58e247696b625071 ]
    
    CONFIG_SND_SEQ_UMP_CLIENT is a Kconfig for a sequencer client
    corresponding to the UMP rawmidi, while we have another major knob
    CONFIG_SND_SEQ_UMP that specifies whether the sequencer core supports
    UMP packets or not.  Strictly speaking both of them are independent,
    but practically seen, it makes no sense to enable
    CONFIG_SND_SEQ_UMP_CLIENT without UMP support itself.
    
    This patch makes such an implicit dependency clearer.  Now
    CONFIG_SND_SEQ_UMP_CLIENT depends on both CONFIG_SND_UMP and
    CONFIG_SND_SEQ_UMP.  Meanwhile, CONFIG_SND_SEQ_UMP is enabled as
    default when CONFIG_SND_UMP is set.
    
    Fixes: 81fd444aa371 ("ALSA: seq: Bind UMP device")
    Link: https://patch.msgid.link/20250101125548.25961-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: usb-audio: Add delay quirk for iBasso DC07 Pro [+ + +]
Author: Lianqin Hu <hulianqin@vivo.com>
Date:   Sun Jan 26 03:51:11 2025 +0000

    ALSA: usb-audio: Add delay quirk for iBasso DC07 Pro
    
    commit d85fc52cbb9a719c8335d93a28d6a79d7acd419f upstream.
    
    Audio control requests that sets sampling frequency sometimes fail on
    this card. Adding delay between control messages eliminates that problem.
    
    usb 1-1: New USB device found, idVendor=2fc6, idProduct=f0b7
    usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    usb 1-1: Product: iBasso DC07 Pro
    usb 1-1: Manufacturer: iBasso
    usb 1-1: SerialNumber: CTUA171130B
    
    Signed-off-by: Lianqin Hu <hulianqin@vivo.com>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/TYUPR06MB62174A48D04E09A37996DF84D2ED2@TYUPR06MB6217.apcprd06.prod.outlook.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
arm64: defconfig: remove obsolete CONFIG_SM_DISPCC_8650 [+ + +]
Author: Ross Burton <ross.burton@arm.com>
Date:   Fri Dec 13 16:12:58 2024 +0000

    arm64: defconfig: remove obsolete CONFIG_SM_DISPCC_8650
    
    [ Upstream commit 9be2923ff9641d6491b8ea43791382966505435f ]
    
    This option was removed from the Kconfig in commit 802b83205519 ("clk:
    qcom: fold dispcc-sm8650 info dispcc-sm8550") but it was not removed
    from the defconfig.
    
    Fixes: 802b83205519 ("clk: qcom: fold dispcc-sm8650 info dispcc-sm8550")
    Signed-off-by: Ross Burton <ross.burton@arm.com>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20241213-clkmaster-v1-1-dcbf7fad37b1@arm.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: allwinner: a64: explicitly assign clock parent for TCON0 [+ + +]
Author: Vasily Khoruzhick <anarsoul@gmail.com>
Date:   Fri Jan 3 23:36:59 2025 -0800

    arm64: dts: allwinner: a64: explicitly assign clock parent for TCON0
    
    [ Upstream commit 8715c91a836502929c637c76a26335ede8818acf ]
    
    TCON0 seems to need a different clock parent depending on output type.
    For RGB it has to be PLL-VIDEO0-2X, while for DSI it has to be PLL-MIPI,
    so select it explicitly.
    
    Video output doesn't work if incorrect clock is assigned.
    
    On my Pinebook I manually configured PLL-VIDEO0-2X and PLL-MIPI to the same
    rate, and while video output works fine with PLL-VIDEO0-2X, it doesn't
    work at all (as in no picture) with PLL-MIPI.
    
    Fixes: ca1170b69968 ("clk: sunxi-ng: a64: force select PLL_MIPI in TCON0 mux")
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Reviewed-by: Chen-Yu Tsai <wens@csie.org>
    Tested-by: Frank Oltmanns <frank@oltmanns.dev> # on PinePhone
    Tested-by: Stuart Gathman <stuart@gathman.org> # on OG Pinebook
    Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
    Link: https://patch.msgid.link/20250104074035.1611136-4-anarsoul@gmail.com
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: imx93: Use IMX93_CLK_SPDIF_IPG as SPDIF IPG clock [+ + +]
Author: Shengjiu Wang <shengjiu.wang@nxp.com>
Date:   Tue Nov 19 09:58:05 2024 +0800

    arm64: dts: imx93: Use IMX93_CLK_SPDIF_IPG as SPDIF IPG clock
    
    [ Upstream commit 570b890e66334f283710af36feb2115f16c7a27c ]
    
    IMX93_CLK_BUS_WAKEUP is not accurate IPG clock, which
    missed the clock gate part.
    
    IMX93_CLK_SPDIF_IPG is the correct clock.
    
    Fixes: 1c4a4f7362fd ("arm64: dts: imx93: Add audio device nodes")
    Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Acked-by: Shawn Guo <shawnguo@kernel.org>
    Link: https://lore.kernel.org/r/20241119015805.3840606-4-shengjiu.wang@nxp.com
    Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: marvell: cn9131-cf-solidwan: fix cp1 comphy links [+ + +]
Author: Josua Mayer <josua@solid-run.com>
Date:   Tue Nov 19 18:33:08 2024 +0100

    arm64: dts: marvell: cn9131-cf-solidwan: fix cp1 comphy links
    
    [ Upstream commit 09cdb973afa7a18ce8e66807daff94609cc4b8a4 ]
    
    Marvell CN913x platforms use common phy framework for configuring and
    linking serdes lanes according to their usage.
    Each CP (X) features 5 serdes lanes (Y) represented by cpX_comphyY
    nodes.
    
    CN9131 SolidWAN uses CP1 serdes lanes 3 and 5 for eth1 and eth2 of CP1
    respectively. Devicetree however wrongly links from these ports to the
    comphy of CP0.
    
    Replace the wrong links to cp0_comphy with cp1_comphy inside cp1_eth1,
    cp1_eth2.
    
    Fixes: 1280840d2030 ("arm64: dts: add description for solidrun cn9131 solidwan board")
    Signed-off-by: Josua Mayer <josua@solid-run.com>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: medaitek: mt8395-nio-12l: Drop regulator-compatible property [+ + +]
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Wed Dec 11 13:24:25 2024 +0800

    arm64: dts: medaitek: mt8395-nio-12l: Drop regulator-compatible property
    
    [ Upstream commit ab60442f26b15ba69b210974722a851ed03188ff ]
    
    The "regulator-compatible" property has been deprecated since 2012 in
    commit 13511def87b9 ("regulator: deprecate regulator-compatible DT
    property"), which is so old it's not even mentioned in the converted
    regulator bindings YAML file. It should not have been used for new
    submissions such as the MT6315.
    
    Drop the "regulator-compatible" property from the board dts. The
    property values are the same as the node name, so everything should
    continue to work.
    
    Fixes: 96564b1e2ea4 ("arm64: dts: mediatek: Introduce the MT8395 Radxa NIO 12L board")
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20241211052427.4178367-8-wenst@chromium.org
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: add per-SoC compatibles for keypad nodes [+ + +]
Author: Val Packett <val@packett.cool>
Date:   Wed Dec 25 16:26:20 2024 -0300

    arm64: dts: mediatek: add per-SoC compatibles for keypad nodes
    
    [ Upstream commit 6139d9e9e397dc9711cf10f8f548a8f9da3b5323 ]
    
    The mt6779-keypad binding specifies using a compatible for the
    actual SoC before the generic MT6779 one.
    
    Fixes: a8013418d35c ("arm64: dts: mediatek: mt8183: add keyboard node")
    Fixes: 6ff945376556 ("arm64: dts: mediatek: Initial mt8365-evk support")
    Signed-off-by: Val Packett <val@packett.cool>
    Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20241225192631.25017-3-val@packett.cool
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt7988: Add missing clock-div property for i2c [+ + +]
Author: Frank Wunderlich <frank-w@public-files.de>
Date:   Tue Dec 17 10:12:19 2024 +0100

    arm64: dts: mediatek: mt7988: Add missing clock-div property for i2c
    
    [ Upstream commit e14b49db0087aa5d72f736d7306220ff2e3777f5 ]
    
    I2C binding requires clock-div property.
    
    Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
    Fixes: 660c230bf302 ("arm64: dts: mediatek: mt7988: add I2C controllers")
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20241217091238.16032-6-linux@fw-web.de
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8173-elm: Drop regulator-compatible property [+ + +]
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Wed Dec 11 13:24:21 2024 +0800

    arm64: dts: mediatek: mt8173-elm: Drop regulator-compatible property
    
    [ Upstream commit 4b907b3ea5fba240808136cc5599d14b52230b39 ]
    
    The "regulator-compatible" property has been deprecated since 2012 in
    commit 13511def87b9 ("regulator: deprecate regulator-compatible DT
    property"), which is so old it's not even mentioned in the converted
    regulator bindings YAML file. It is also not listed in the MT6397
    regulator bindings. Having them present produces a whole bunch of
    validation errors:
    
        Unevaluated properties are not allowed ('regulator-compatible' was unexpected)
    
    Drop the "regulator-compatible" property from the board dts. The
    property values are the same as the node name, so everything should
    continue to work.
    
    Fixes: 689b937bedde ("arm64: dts: mediatek: add mt8173 elm and hana board")
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20241211052427.4178367-4-wenst@chromium.org
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8173-elm: Fix MT6397 PMIC sub-node names [+ + +]
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Tue Dec 10 17:26:12 2024 +0800

    arm64: dts: mediatek: mt8173-elm: Fix MT6397 PMIC sub-node names
    
    [ Upstream commit beb06b727194f68b0a4b5183e50c88265ce185af ]
    
    The MT6397 PMIC bindings specify exact names for its sub-nodes. The
    names used in the current dts don't match, causing a validation error.
    
    Fix up the names. Also drop the label for the regulators node, since
    any reference should be against the individual regulator sub-nodes.
    
    Fixes: 689b937bedde ("arm64: dts: mediatek: add mt8173 elm and hana board")
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Link: https://lore.kernel.org/r/20241210092614.3951748-1-wenst@chromium.org
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8173-evb: Drop regulator-compatible property [+ + +]
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Wed Dec 11 13:24:20 2024 +0800

    arm64: dts: mediatek: mt8173-evb: Drop regulator-compatible property
    
    [ Upstream commit a6d5983e40f5d5b219337569cdd269727f5a3e2e ]
    
    The "regulator-compatible" property has been deprecated since 2012 in
    commit 13511def87b9 ("regulator: deprecate regulator-compatible DT
    property"), which is so old it's not even mentioned in the converted
    regulator bindings YAML file. It is also not listed in the MT6397
    regulator bindings. Having them present produces a whole bunch of
    validation errors:
    
        Unevaluated properties are not allowed ('regulator-compatible' was unexpected)
    
    Drop the "regulator-compatible" property from the board dts. The
    property values are the same as the node name, so everything should
    continue to work.
    
    Fixes: 16ea61fc5614 ("arm64: dts: mt8173-evb: Add PMIC support")
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20241211052427.4178367-3-wenst@chromium.org
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8173-evb: Fix MT6397 PMIC sub-node names [+ + +]
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Tue Dec 10 17:26:13 2024 +0800

    arm64: dts: mediatek: mt8173-evb: Fix MT6397 PMIC sub-node names
    
    [ Upstream commit 9545ba142865b9099d43c972b9ebcf463606499a ]
    
    The MT6397 PMIC bindings specify exact names for its sub-nodes. The
    names used in the current dts don't match, causing a validation error.
    
    Fix up the names. Also drop the label for the regulators node, since
    any reference should be against the individual regulator sub-nodes.
    
    Fixes: 16ea61fc5614 ("arm64: dts: mt8173-evb: Add PMIC support")
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Link: https://lore.kernel.org/r/20241210092614.3951748-2-wenst@chromium.org
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8183-kukui-jacuzzi: Drop pp3300_panel voltage settings [+ + +]
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Wed Oct 30 15:02:20 2024 +0800

    arm64: dts: mediatek: mt8183-kukui-jacuzzi: Drop pp3300_panel voltage settings
    
    [ Upstream commit 0b5b1c881a909f17c05ef4b1ccb421e077f6e466 ]
    
    The pp3300_panel fixed regulator is just a load switch. It does not have
    any regulating capabilities. Thus having voltage constraints on it is
    wrong.
    
    Remove the voltage constraints.
    
    Fixes: cabc71b08eb5 ("arm64: dts: mt8183: Add kukui-jacuzzi-damu board")
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Link: https://lore.kernel.org/r/20241030070224.1006331-2-wenst@chromium.org
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8183: kenzo: Support second source touchscreen [+ + +]
Author: Hsin-Te Yuan <yuanhsinte@chromium.org>
Date:   Fri Dec 13 05:27:47 2024 +0000

    arm64: dts: mediatek: mt8183: kenzo: Support second source touchscreen
    
    [ Upstream commit 5ec5dc73c5ac0c6e06803dc3b5aea4493e856568 ]
    
    Some kenzo devices use second source touchscreen.
    
    Fixes: 0a9cefe21aec ("arm64: dts: mt8183: Add kukui-jacuzzi-kenzo board")
    Signed-off-by: Hsin-Te Yuan <yuanhsinte@chromium.org>
    Link: https://lore.kernel.org/r/20241213-touchscreen-v3-1-7c1f670913f9@chromium.org
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8183: willow: Support second source touchscreen [+ + +]
Author: Hsin-Te Yuan <yuanhsinte@chromium.org>
Date:   Fri Dec 13 05:27:48 2024 +0000

    arm64: dts: mediatek: mt8183: willow: Support second source touchscreen
    
    [ Upstream commit 9594935260d76bffe200bea6cfab6ba0752e70d9 ]
    
    Some willow devices use second source touchscreen.
    
    Fixes: f006bcf1c972 ("arm64: dts: mt8183: Add kukui-jacuzzi-willow board")
    Signed-off-by: Hsin-Te Yuan <yuanhsinte@chromium.org>
    Link: https://lore.kernel.org/r/20241213-touchscreen-v3-2-7c1f670913f9@chromium.org
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8186: Move wakeup to MTU3 to get working suspend [+ + +]
Author: Nícolas F. R. A. Prado <nfraprado@collabora.com>
Date:   Wed Nov 6 16:01:45 2024 -0500

    arm64: dts: mediatek: mt8186: Move wakeup to MTU3 to get working suspend
    
    [ Upstream commit 253b4e96f5783fddede1b82274a7b4e0aa57d761 ]
    
    The current DT has the wakeup-source and mediatek,syscon-wakeup
    properties in the XHCI nodes, which configures USB wakeup after powering
    down the XHCI hardware block. However, since the XHCI controller is
    behind an MTU3 (USB3 DRD controller), the MTU3 only gets powered down
    after USB wakeup has been configured, causing the system to detect a
    wakeup, and results in broken suspend support as the system resumes
    immediately.
    
    Move the wakeup properties to the MTU3 nodes so that USB wakeup is only
    enabled after the MTU3 has powered down.
    
    With this change in place, it is possible to suspend and resume, and
    also to wakeup through USB, as tested on the Google Steelix (Lenovo 300e
    Yoga Chromebook Gen 4).
    
    Fixes: f6c3e61c5486 ("arm64: dts: mediatek: mt8186: Add MTU3 nodes")
    Reported-by: Wojciech Macek <wmacek@google.com>
    Suggested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20241106-mt8186-suspend-with-usb-wakeup-v1-1-07734a4c8236@collabora.com
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8192-asurada: Drop regulator-compatible property [+ + +]
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Wed Dec 11 13:24:22 2024 +0800

    arm64: dts: mediatek: mt8192-asurada: Drop regulator-compatible property
    
    [ Upstream commit d1fb968551c8688652b8b817bb081fdc9c25cd48 ]
    
    The "regulator-compatible" property has been deprecated since 2012 in
    commit 13511def87b9 ("regulator: deprecate regulator-compatible DT
    property"), which is so old it's not even mentioned in the converted
    regulator bindings YAML file. It should not have been used for new
    submissions such as the MT6315.
    
    Drop the "regulator-compatible" property from the board dts. The
    property values are the same as the node name, so everything should
    continue to work.
    
    Fixes: 3183cb62b033 ("arm64: dts: mediatek: asurada: Add SPMI regulators")
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20241211052427.4178367-5-wenst@chromium.org
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8195-cherry: Drop regulator-compatible property [+ + +]
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Wed Dec 11 13:24:23 2024 +0800

    arm64: dts: mediatek: mt8195-cherry: Drop regulator-compatible property
    
    [ Upstream commit 4dbaa5d5def2c49e44efaa5e796c23d9b904be09 ]
    
    The "regulator-compatible" property has been deprecated since 2012 in
    commit 13511def87b9 ("regulator: deprecate regulator-compatible DT
    property"), which is so old it's not even mentioned in the converted
    regulator bindings YAML file. It should not have been used for new
    submissions such as the MT6315.
    
    Drop the "regulator-compatible" property from the board dts. The
    property values are the same as the node name, so everything should
    continue to work.
    
    Fixes: 260c04d425eb ("arm64: dts: mediatek: cherry: Enable MT6315 regulators on SPMI bus")
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20241211052427.4178367-6-wenst@chromium.org
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8195-demo: Drop regulator-compatible property [+ + +]
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Wed Dec 11 13:24:24 2024 +0800

    arm64: dts: mediatek: mt8195-demo: Drop regulator-compatible property
    
    [ Upstream commit 2a8af9b95f504260a6d8200a11f0ae5c90e9f787 ]
    
    The "regulator-compatible" property has been deprecated since 2012 in
    commit 13511def87b9 ("regulator: deprecate regulator-compatible DT
    property"), which is so old it's not even mentioned in the converted
    regulator bindings YAML file. It is also not listed in the MT6360
    regulator and charger bindings.
    
    Drop the "regulator-compatible" property from the board dts. The MT6360
    bindings actually require the lowercase name, so with the property
    present the regulators were likely not actually working.
    
    Fixes: 6147314aeedc ("arm64: dts: mediatek: Add device-tree for MT8195 Demo board")
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20241211052427.4178367-7-wenst@chromium.org
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8195: Remove suspend-breaking reset from pcie1 [+ + +]
Author: Nícolas F. R. A. Prado <nfraprado@collabora.com>
Date:   Wed Dec 18 19:01:08 2024 -0300

    arm64: dts: mediatek: mt8195: Remove suspend-breaking reset from pcie1
    
    [ Upstream commit 3d7fdd8e38aafd4858935df2392762c1ab8fb40f ]
    
    The MAC reset for PCIe port 1 on MT8195 when asserted during suspend
    causes the system to hang during resume with the following error (with
    no_console_suspend enabled):
    
      mtk-pcie-gen3 112f8000.pcie: PCIe link down, current LTSSM state: detect.quiet (0x0)
      mtk-pcie-gen3 112f8000.pcie: PM: dpm_run_callback(): genpd_resume_noirq+0x0/0x24 returns -110
      mtk-pcie-gen3 112f8000.pcie: PM: failed to resume noirq: error -110
    
    This issue is specific to MT8195. On MT8192 with the PCIe reset,
    MT8192_INFRA_RST4_PCIE_TOP_SWRST, added to the DT node, the issue is not
    observed.
    
    Since without the reset, the PCIe controller and WiFi card connected to
    it, work just as well, remove the reset to allow the system to suspend
    and resume properly.
    
    Fixes: ecc0af6a3fe6 ("arm64: dts: mt8195: Add pcie and pcie phy nodes")
    Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Link: https://lore.kernel.org/r/20241218-mt8195-pcie1-reset-suspend-fix-v1-1-1c021dda42a6@collabora.com
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8395-genio-1200-evk: Drop regulator-compatible property [+ + +]
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Wed Dec 11 13:24:26 2024 +0800

    arm64: dts: mediatek: mt8395-genio-1200-evk: Drop regulator-compatible property
    
    [ Upstream commit b99bf07c2c8b3c85c1935ddca2a73bc686f8d847 ]
    
    The "regulator-compatible" property has been deprecated since 2012 in
    commit 13511def87b9 ("regulator: deprecate regulator-compatible DT
    property"), which is so old it's not even mentioned in the converted
    regulator bindings YAML file. It should not have been used for new
    submissions such as the MT6315.
    
    Drop the "regulator-compatible" property from the board dts. The
    property values are the same as the node name, so everything should
    continue to work.
    
    Fixes: f2b543a191b6 ("arm64: dts: mediatek: add device-tree for Genio 1200 EVK board")
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20241211052427.4178367-9-wenst@chromium.org
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8516: add i2c clock-div property [+ + +]
Author: Val Packett <val@packett.cool>
Date:   Wed Dec 4 16:05:06 2024 -0300

    arm64: dts: mediatek: mt8516: add i2c clock-div property
    
    [ Upstream commit eb72341fd92b7af510d236e5a8554d855ed38d3c ]
    
    Move the clock-div property from the pumpkin board dtsi to the SoC's
    since it belongs to the SoC itself and is required on other devices.
    
    Fixes: 5236347bde42 ("arm64: dts: mediatek: add dtsi for MT8516")
    Signed-off-by: Val Packett <val@packett.cool>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20241204190524.21862-4-val@packett.cool
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8516: fix GICv2 range [+ + +]
Author: Val Packett <val@packett.cool>
Date:   Wed Dec 4 16:05:04 2024 -0300

    arm64: dts: mediatek: mt8516: fix GICv2 range
    
    [ Upstream commit e3ee31e4409f051c021a30122f3c470f093a7386 ]
    
    On the MT8167 which is based on the MT8516 DTS, the following error
    was appearing on boot, breaking interrupt operation:
    
    GICv2 detected, but range too small and irqchip.gicv2_force_probe not set
    
    Similar to what's been proposed for MT7622 which has the same issue,
    fix by using the range reported by force_probe.
    
    Link: https://lore.kernel.org/all/YmhNSLgp%2Fyg8Vr1F@makrotopia.org/
    Fixes: 5236347bde42 ("arm64: dts: mediatek: add dtsi for MT8516")
    Signed-off-by: Val Packett <val@packett.cool>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20241204190524.21862-2-val@packett.cool
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8516: fix wdt irq type [+ + +]
Author: Val Packett <val@packett.cool>
Date:   Wed Dec 4 16:05:05 2024 -0300

    arm64: dts: mediatek: mt8516: fix wdt irq type
    
    [ Upstream commit 03a80442030e7147391738fb6cbe5fa0b3b91bb1 ]
    
    The GICv2 does not support EDGE_FALLING interrupts, so the watchdog
    would refuse to attach due to a failing check coming from the GIC driver.
    
    Fixes: 5236347bde42 ("arm64: dts: mediatek: add dtsi for MT8516")
    Signed-off-by: Val Packett <val@packett.cool>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20241204190524.21862-3-val@packett.cool
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mediatek: mt8516: reserve 192 KiB for TF-A [+ + +]
Author: Val Packett <val@packett.cool>
Date:   Wed Dec 4 16:05:07 2024 -0300

    arm64: dts: mediatek: mt8516: reserve 192 KiB for TF-A
    
    [ Upstream commit 2561c7d5d497b988deccc36fe5eac7fd50b937f8 ]
    
    The Android DTB for the related MT8167 reserves 0x30000. This is likely
    correct for MT8516 Android devices as well, and there's never any harm
    in reserving 64KiB more.
    
    Fixes: 5236347bde42 ("arm64: dts: mediatek: add dtsi for MT8516")
    Signed-off-by: Val Packett <val@packett.cool>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20241204190524.21862-5-val@packett.cool
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: mt8183: set DMIC one-wire mode on Damu [+ + +]
Author: Hsin-Yi Wang <hsinyi@chromium.org>
Date:   Wed Nov 13 16:16:53 2024 +0800

    arm64: dts: mt8183: set DMIC one-wire mode on Damu
    
    [ Upstream commit 6c379e8b984815fc8f876e4bc78c4d563f13ddae ]
    
    Sets DMIC one-wire mode on Damu.
    
    Fixes: cabc71b08eb5 ("arm64: dts: mt8183: Add kukui-jacuzzi-damu board")
    Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Hsin-Te Yuan <yuanhsinte@chromium.org>
    Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com>
    Link: https://lore.kernel.org/r/20241113-damu-v4-1-6911b69610dd@chromium.org
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: msm8916: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:00 2024 +0200

    arm64: dts: qcom: msm8916: correct sleep clock frequency
    
    [ Upstream commit f088b921890cef28862913e5627bb2e2b5f82125 ]
    
    The MSM8916 platform uses PM8916 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: f4fb6aeafaaa ("arm64: dts: qcom: msm8916: Add fixed rate on-board oscillators")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-1-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: msm8939: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:01 2024 +0200

    arm64: dts: qcom: msm8939: correct sleep clock frequency
    
    [ Upstream commit 5c775f586cde4fca3c5591c43b6dc8b243bc304c ]
    
    The MSM8939 platform uses PM8916 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: 61550c6c156c ("arm64: dts: qcom: Add msm8939 SoC")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-2-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: msm8994: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:02 2024 +0200

    arm64: dts: qcom: msm8994: correct sleep clock frequency
    
    [ Upstream commit a4148d869d47d8c86da0291dd95d411a5ebe90c8 ]
    
    The MSM8994 platform uses PM8994/6 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: feeaf56ac78d ("arm64: dts: msm8994 SoC and Huawei Angler (Nexus 6P) support")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-3-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: msm8994: Describe USB interrupts [+ + +]
Author: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Date:   Fri Nov 29 23:12:48 2024 +0100

    arm64: dts: qcom: msm8994: Describe USB interrupts
    
    [ Upstream commit c910544d2234709660d60f80345c285616e73b1c ]
    
    Previously the interrupt lanes were not described, fix that.
    
    Fixes: d9be0bc95f25 ("arm64: dts: qcom: msm8994: Add USB support")
    Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Tested-by: Petr Vorel <petr.vorel@gmail.com>
    Link: https://lore.kernel.org/r/20241129-topic-qcom_usb_dtb_fixup-v1-4-cba24120c058@oss.qualcomm.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: msm8996-xiaomi-gemini: Fix LP5562 LED1 reg property [+ + +]
Author: Marek Vasut <marex@denx.de>
Date:   Sun Oct 6 04:19:48 2024 +0200

    arm64: dts: qcom: msm8996-xiaomi-gemini: Fix LP5562 LED1 reg property
    
    [ Upstream commit 02e784c5023232c48c6ec79b52ac8929d4e4db34 ]
    
    The LP5562 led@1 reg property should likely be set to 1 to match
    the unit. Fix it.
    
    Fixes: 4ac46b3682c5 ("arm64: dts: qcom: msm8996: xiaomi-gemini: Add support for Xiaomi Mi 5")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241006022012.366601-1-marex@denx.de
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: msm8996: Fix up USB3 interrupts [+ + +]
Author: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Date:   Fri Nov 29 23:12:47 2024 +0100

    arm64: dts: qcom: msm8996: Fix up USB3 interrupts
    
    [ Upstream commit 9cb9c9f4e1380da317a056afd26d66a835c5796c ]
    
    Add the missing interrupt lines and fix qusb2_phy being an impostor
    of hs_phy_irq.
    
    This happens to also fix warnings such as:
    
    usb@6af8800: interrupt-names: ['hs_phy_irq', 'ss_phy_irq'] is too short
    
    Fixes: 4753492de9df ("arm64: dts: qcom: msm8996: Add usb3 interrupts")
    Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20241129-topic-qcom_usb_dtb_fixup-v1-3-cba24120c058@oss.qualcomm.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: q[dr]u1000: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:04 2024 +0200

    arm64: dts: qcom: q[dr]u1000: correct sleep clock frequency
    
    [ Upstream commit 5546604e034b6c383b65676ff8615b346897eccd ]
    
    The Q[DR]U1000 platforms use PM8150 to provide sleep clock. According to
    the documentation, that clock has 32.7645 kHz frequency. Correct the
    sleep clock definition.
    
    Fixes: d1f2cfe2f669 ("arm64: dts: qcom: Add base QDU1000/QRU1000 IDP DTs")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-5-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: qcm6490-shift-otter: remove invalid orientation-switch [+ + +]
Author: Neil Armstrong <neil.armstrong@linaro.org>
Date:   Mon Dec 30 13:44:44 2024 +0100

    arm64: dts: qcom: qcm6490-shift-otter: remove invalid orientation-switch
    
    [ Upstream commit abb00f0fbf31d71b9f725e58d6a29634175f28a8 ]
    
    The orientation-switch property is not documented in the PHY bindings,
    remove it.
    
    This fixes:
    qcm6490-shift-otter.dts: phy@88e3000: 'orientation-switch' does not match any of the regexes: 'pinctrl-[0-9]+'
            from schema $id: http://devicetree.org/schemas/phy/qcom,usb-snps-femto-v2.yaml#
    
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20241230-topic-misc-dt-fixes-v4-1-1e6880e9dda3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: qcs404: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:03 2024 +0200

    arm64: dts: qcom: qcs404: correct sleep clock frequency
    
    [ Upstream commit 1473ff0b69de68b23ce9874548cdabc64d72725e ]
    
    The QCS40x platforms use PMS405 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: 9181bb939984 ("arm64: dts: qcom: Add SDX75 platform and IDP board support")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-4-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: qrb4210-rb2: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:05 2024 +0200

    arm64: dts: qcom: qrb4210-rb2: correct sleep clock frequency
    
    [ Upstream commit 298192f365a343d84e9d2755e47bebebf0cfb82e ]
    
    Qualcomm RB2 board uses PM6125 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: 8d58a8c0d930 ("arm64: dts: qcom: Add base qrb4210-rb2 board dts")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-6-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sa8775p: Update sleep_clk frequency [+ + +]
Author: Taniya Das <quic_tdas@quicinc.com>
Date:   Fri Oct 25 14:22:53 2024 +0530

    arm64: dts: qcom: sa8775p: Update sleep_clk frequency
    
    [ Upstream commit 30f7dfd2c4899630becf477447e8bbe92683d2c6 ]
    
    Fix the sleep_clk frequency is 32000 on SA8775P.
    
    Fixes: 603f96d4c9d0 ("arm64: dts: qcom: add initial support for qcom sa8775p-ride")
    Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
    Signed-off-by: Taniya Das <quic_tdas@quicinc.com>
    Link: https://lore.kernel.org/r/20241025-sa8775p-mm-v4-resend-patches-v6-1-329a2cac09ae@quicinc.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sc7180-trogdor-pompom: rename 5v-choke thermal zone [+ + +]
Author: Neil Armstrong <neil.armstrong@linaro.org>
Date:   Mon Dec 30 13:44:47 2024 +0100

    arm64: dts: qcom: sc7180-trogdor-pompom: rename 5v-choke thermal zone
    
    [ Upstream commit 9180b38d706c29ed212181a77999c35ae9ff6879 ]
    
    Rename the 5v-choke thermal zone to satisfy the bindings.
    
    This fixes:
    sc7180-trogdor-pompom-r2-lte.dts: thermal-zones: '5v-choke-thermal' does not match any of the regexes: '^[a-zA-Z][a-zA-Z0-9\\-]{1,10}-thermal$', 'pinctrl-[0-9]+'
            from schema $id: http://devicetree.org/schemas/thermal/thermal-zones.yaml#
    
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20241230-topic-misc-dt-fixes-v4-4-1e6880e9dda3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sc7180-trogdor-quackingstick: add missing avee-supply [+ + +]
Author: Neil Armstrong <neil.armstrong@linaro.org>
Date:   Mon Dec 30 13:44:46 2024 +0100

    arm64: dts: qcom: sc7180-trogdor-quackingstick: add missing avee-supply
    
    [ Upstream commit aa09de104d421e7ff8d8cde9af98568ce62a002c ]
    
    The bindings requires the avee-supply, use the same regulator as
    the avdd (positive voltage) which would also provide the negative
    voltage by definition.
    
    The fixes:
    sc7180-trogdor-quackingstick-r0.dts: panel@0: 'avee-supply' is a required property
            from schema $id: http://devicetree.org/schemas/display/panel/boe,tv101wum-nl6.yaml#
    
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20241230-topic-misc-dt-fixes-v4-3-1e6880e9dda3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sc7180: change labels to lower-case [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Tue Oct 22 17:47:29 2024 +0200

    arm64: dts: qcom: sc7180: change labels to lower-case
    
    [ Upstream commit e5f90735136562c0653714b43ff1aeb331600d24 ]
    
    DTS coding style expects labels to be lowercase.  No functional impact.
    Verified with comparing decompiled DTB (dtx_diff and fdtdump+diff).
    
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Link: https://lore.kernel.org/r/20241022-dts-qcom-label-v3-4-0505bc7d2c56@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Stable-dep-of: 092febd32a99 ("arm64: dts: qcom: sc7180: fix psci power domain node names")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sc7180: fix psci power domain node names [+ + +]
Author: Neil Armstrong <neil.armstrong@linaro.org>
Date:   Mon Dec 30 13:44:48 2024 +0100

    arm64: dts: qcom: sc7180: fix psci power domain node names
    
    [ Upstream commit 092febd32a99800902f865ed86b83314faa9c7e4 ]
    
    Rename the psci power domain node names to match the bindings.
    
    This Fixes:
    sc7180-acer-aspire1.dts: psci: 'cpu-cluster0', 'cpu0', 'cpu1', 'cpu2', 'cpu3', 'cpu4', 'cpu5', 'cpu6', 'cpu7' do not match any of the regexes: '^power-domain-', 'pinctrl-[0-9]+'
    
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20241230-topic-misc-dt-fixes-v4-5-1e6880e9dda3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sc7280: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:07 2024 +0200

    arm64: dts: qcom: sc7280: correct sleep clock frequency
    
    [ Upstream commit f6ccdca14eac545320ab03d6ca91ca343e7372e5 ]
    
    The SC7280 platform uses PMK8350 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: 7a1f4e7f740d ("arm64: dts: qcom: sc7280: Add basic dts/dtsi files for sc7280 soc")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-8-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sc8280xp: Fix interrupt type of camss interrupts [+ + +]
Author: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Date:   Wed Nov 27 14:29:48 2024 +0200

    arm64: dts: qcom: sc8280xp: Fix interrupt type of camss interrupts
    
    [ Upstream commit b08535cd41c27b4f32319b5bff754c9da6dc2205 ]
    
    Qualcomm IP catalog says that all CAMSS interrupts are edge rising,
    fix it in the CAMSS device tree node for sc8280xp SoC.
    
    Fixes: 5994dd60753e ("arm64: dts: qcom: sc8280xp: camss: Add CAMSS block definition")
    Signed-off-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
    Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Tested-by: Johan Hovold <johan+linaro@kernel.org>
    Link: https://lore.kernel.org/r/20241127122950.885982-5-vladimir.zapolskiy@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sc8280xp: Fix up remoteproc register space sizes [+ + +]
Author: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Date:   Thu Dec 12 23:19:37 2024 +0100

    arm64: dts: qcom: sc8280xp: Fix up remoteproc register space sizes
    
    [ Upstream commit 7ec7e327286182c65d0b5b81dff498d620fe9e8c ]
    
    Make sure the remoteproc reg ranges reflect the entire register space
    they refer to.
    
    Since they're unused by the driver, there's no functional change.
    
    Fixes: 152d1faf1e2f ("arm64: dts: qcom: add SC8280XP platform")
    Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Link: https://lore.kernel.org/r/20241212-topic-8280_rproc_reg-v1-1-bd1c696e91b0@oss.qualcomm.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: Convert mezzanine riser to dtso [+ + +]
Author: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Date:   Fri Oct 25 16:43:24 2024 +0100

    arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: Convert mezzanine riser to dtso
    
    [ Upstream commit 30df676a31b7a4881352097d8ae7c2bb83515a17 ]
    
    Convert the navigation / camera mezzanine from its own dts to a dtso. A
    small amount of additional includes / address / cell size change needs to
    be applied to convert.
    
    Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> # rb3
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20241025-b4-linux-next-24-10-25-camss-dts-fixups-v1-2-cdff2f1a5792@linaro.org
    [bjorn: Corrected up makefile syntax, added missing cells for cci_i2c1]
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Stable-dep-of: 80b47f14d543 ("arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: remove disabled ov7251 camera")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: remove disabled ov7251 camera [+ + +]
Author: Neil Armstrong <neil.armstrong@linaro.org>
Date:   Mon Dec 30 13:44:45 2024 +0100

    arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: remove disabled ov7251 camera
    
    [ Upstream commit 80b47f14d5433068dd6738c9e6e17ff6648bae41 ]
    
    The ov7251node has bindings check errors in the endpoint, and the
    camera node was disabled since the beginning. Even when switching the
    node to okay, the endpoint description to the csiphy is missing along
    with the csiphy parameters.
    
    Drop the ov7251 camera entirely until it's properly described.
    
    This obviously fixes:
    sdm845-db845c-navigation-mezzanine.dtso: camera@60: port:endpoint:data-lanes: [0, 1] is too long
            from schema $id: http://devicetree.org/schemas/media/i2c/ovti,ov7251.yaml#
    
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20241230-topic-misc-dt-fixes-v4-2-1e6880e9dda3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sdm845: Fix interrupt types of camss interrupts [+ + +]
Author: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Date:   Wed Nov 27 14:29:49 2024 +0200

    arm64: dts: qcom: sdm845: Fix interrupt types of camss interrupts
    
    [ Upstream commit cb96722b728e81ad97f5b5b20dea64cd294a5452 ]
    
    Qualcomm IP catalog says that all CAMSS interrupts is edge rising,
    fix it in the CAMSS device tree node for sdm845 SoC.
    
    Fixes: d48a6698a6b7 ("arm64: dts: qcom: sdm845: Add CAMSS ISP node")
    Signed-off-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
    Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Link: https://lore.kernel.org/r/20241127122950.885982-6-vladimir.zapolskiy@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sdx75: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:08 2024 +0200

    arm64: dts: qcom: sdx75: correct sleep clock frequency
    
    [ Upstream commit b8021da9ddc65fa041e12ea1e0ff2dfce5c926eb ]
    
    The SDX75 platform uses PMK8550 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: 9181bb939984 ("arm64: dts: qcom: Add SDX75 platform and IDP board support")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-9-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sm4450: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:09 2024 +0200

    arm64: dts: qcom: sm4450: correct sleep clock frequency
    
    [ Upstream commit 158e67cf3619dbb5b9914bb364889041f4b90eea ]
    
    The SM4450 platform uses PM4450 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: 7a1fd03e7410 ("arm64: dts: qcom: Adds base SM4450 DTSI")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-10-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sm6125: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:10 2024 +0200

    arm64: dts: qcom: sm6125: correct sleep clock frequency
    
    [ Upstream commit b3c547e1507862f0e4d46432b665c5c6e61e14d6 ]
    
    The SM6125 platform uses PM6125 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: cff4bbaf2a2d ("arm64: dts: qcom: Add support for SM6125")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-11-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sm6375: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:11 2024 +0200

    arm64: dts: qcom: sm6375: correct sleep clock frequency
    
    [ Upstream commit 223382c94f1f07c475d39713e4c058401480b441 ]
    
    The SM6375 platform uses PM6125 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: 59d34ca97f91 ("arm64: dts: qcom: Add initial device tree for SM6375")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-12-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sm7225-fairphone-fp4: Drop extra qcom,msm-id value [+ + +]
Author: Luca Weiss <luca.weiss@fairphone.com>
Date:   Fri Dec 20 09:55:01 2024 +0100

    arm64: dts: qcom: sm7225-fairphone-fp4: Drop extra qcom,msm-id value
    
    [ Upstream commit 7fb88e0d4dc1a40a29d49b603faa1484334c60f3 ]
    
    The ID 434 is for SM6350 while 459 is for SM7225. Fairphone 4 is only
    SM7225, so drop the unused 434 entry.
    
    Fixes: 4cbea668767d ("arm64: dts: qcom: sm7225: Add device tree for Fairphone 4")
    Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20241220-fp4-msm-id-v1-1-2b75af02032a@fairphone.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sm8150-microsoft-surface-duo: fix typos in da7280 properties [+ + +]
Author: Neil Armstrong <neil.armstrong@linaro.org>
Date:   Mon Dec 30 13:44:49 2024 +0100

    arm64: dts: qcom: sm8150-microsoft-surface-duo: fix typos in da7280 properties
    
    [ Upstream commit 9875adffb87da5c40f4013e55104f5e2fc071c2a ]
    
    The dlg,const-op-mode & dlg,periodic-op-mode were mis-names with twice
    the "dlg," prefix, drop one to match the bindings.
    
    This fixes:
    sm8150-microsoft-surface-duo.dtb: da7280@4a: 'dlg,const-op-mode' is a required property
            from schema $id: http://devicetree.org/schemas/input/dlg,da7280.yaml#
    m8150-microsoft-surface-duo.dtb: da7280@4a: 'dlg,periodic-op-mode' is a required property
            from schema $id: http://devicetree.org/schemas/input/dlg,da7280.yaml#
    sm8150-microsoft-surface-duo.dtb: da7280@4a: 'dlg,dlg,const-op-mode', 'dlg,dlg,periodic-op-mode' do not match any of the regexes: 'pinctrl-[0-9]+'
            from schema $id: http://devicetree.org/schemas/input/dlg,da7280.yaml#
    
    With the dlg,da7280.yaml converted from dlg,da7280.txt at [1].
    
    [1] https://lore.kernel.org/all/20241206-topic-misc-da7280-convert-v2-1-1c3539f75604@linaro.org/
    
    Fixes: d1f781db47a8 ("arm64: dts: qcom: add initial device-tree for Microsoft Surface Duo")
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20241230-topic-misc-dt-fixes-v4-6-1e6880e9dda3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sm8250: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:12 2024 +0200

    arm64: dts: qcom: sm8250: correct sleep clock frequency
    
    [ Upstream commit 75420e437eed69fa95d1d7c339dad86dea35319a ]
    
    The SM8250 platform uses PM8150 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: 9ff8b0591fcf ("arm64: dts: qcom: sm8250: use the right clock-freqency for sleep-clk")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-13-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sm8250: Fix interrupt types of camss interrupts [+ + +]
Author: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Date:   Wed Nov 27 14:29:50 2024 +0200

    arm64: dts: qcom: sm8250: Fix interrupt types of camss interrupts
    
    [ Upstream commit 6c7bba42ebc3da56e64d4aec4c4a31dd454e05fd ]
    
    Qualcomm IP catalog says that all CAMSS interrupts is edge rising,
    fix it in the CAMSS device tree node for sm8250 SoC.
    
    Fixes: 30325603b910 ("arm64: dts: qcom: sm8250: camss: Add CAMSS block definition")
    Signed-off-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
    Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Link: https://lore.kernel.org/r/20241127122950.885982-7-vladimir.zapolskiy@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sm8350: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:13 2024 +0200

    arm64: dts: qcom: sm8350: correct sleep clock frequency
    
    [ Upstream commit f4cc8c75cfc5d06084a31da2ff67e477565f0cae ]
    
    The SM8350 platform uses PMK8350 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: b7e8f433a673 ("arm64: dts: qcom: Add basic devicetree support for SM8350 SoC")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-14-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sm8450: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:14 2024 +0200

    arm64: dts: qcom: sm8450: correct sleep clock frequency
    
    [ Upstream commit c375ff3b887abf376607d4769c1114c5e3b6ea72 ]
    
    The SM8450 platform uses PMK8350 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: 5188049c9b36 ("arm64: dts: qcom: Add base SM8450 DTSI")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-15-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sm8550: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:15 2024 +0200

    arm64: dts: qcom: sm8550: correct sleep clock frequency
    
    [ Upstream commit e59334a088c3e722c0a287d4616af997f46c985e ]
    
    The SM8550 platform uses PMK8550 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: 0b12da4e28d8 ("arm64: dts: qcom: add base AIM300 dtsi")
    Fixes: b5e25ded2721 ("arm64: dts: qcom: sm8550: add support for the SM8550-HDK board")
    Fixes: 71342fb91eae ("arm64: dts: qcom: Add base SM8550 MTP dts")
    Fixes: d228efe88469 ("arm64: dts: qcom: sm8550-qrd: add QRD8550")
    Fixes: ba2c082a401f ("arm64: dts: qcom: sm8550: Add support for Samsung Galaxy Z Fold5")
    Fixes: 39c596304e44 ("arm64: dts: qcom: Add SM8550 Xperia 1 V")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-16-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sm8650: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:16 2024 +0200

    arm64: dts: qcom: sm8650: correct sleep clock frequency
    
    [ Upstream commit 448db0ba6ad2aafee2cbd91b491246749f6a6abc ]
    
    The SM8650 platform uses PMK8550 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: 6fbdb3c1fac7 ("arm64: dts: qcom: sm8650: add initial SM8650 MTP dts")
    Fixes: a834911d50c1 ("arm64: dts: qcom: sm8650: add initial SM8650 QRD dts")
    Fixes: 01061441029e ("arm64: dts: qcom: sm8650: add support for the SM8650-HDK board")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-17-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sm8650: Fix CDSP context banks unit addresses [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Mon Nov 4 15:42:04 2024 +0100

    arm64: dts: qcom: sm8650: Fix CDSP context banks unit addresses
    
    [ Upstream commit ff2b76ae689b71e2d7a2e70bfd8d71537c39164d ]
    
    There is a mismatch between 'reg' property and unit address for last
    there CDSP compute context banks.  Current values were taken as-is from
    downstream source.  Considering that 'reg' is used by Linux driver as
    SID of context bank and that least significant bytes of IOMMU value
    match the 'reg', assume the unit-address is wrong and needs fixing.
    This also won't have any practical impact, except adhering to Devicetree
    spec.
    
    Fixes: dae8cdb0a9e1 ("arm64: dts: qcom: sm8650: Add three missing fastrpc-compute-cb nodes")
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@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/20241104144204.114279-1-krzysztof.kozlowski@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: x1e80100-romulus: Update firmware nodes [+ + +]
Author: Joel Stanley <joel@jms.id.au>
Date:   Wed Jan 8 23:14:59 2025 +1030

    arm64: dts: qcom: x1e80100-romulus: Update firmware nodes
    
    [ Upstream commit 983833061d9599a534e44fd6d335080d1a0ba985 ]
    
    Other x1e machines use _dtbs.elf for these firmwares, which matches the
    filenames shipped by Windows.
    
    Fixes: 09d77be56093 ("arm64: dts: qcom: Add support for X1-based Surface Laptop 7 devices")
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20250108124500.44011-1-joel@jms.id.au
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: x1e80100: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Dec 24 12:17:17 2024 +0200

    arm64: dts: qcom: x1e80100: correct sleep clock frequency
    
    [ Upstream commit 67e25a3e12d128336114a5d1572e055a8bd33129 ]
    
    The X1E80100 platform uses PMK8550 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: af16b00578a7 ("arm64: dts: qcom: Add base X1E80100 dtsi and the QCP dts")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-18-e9b08fbeadd3@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: renesas: rzg3s-smarc: Fix the debug serial alias [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Fri Nov 15 15:43:58 2024 +0200

    arm64: dts: renesas: rzg3s-smarc: Fix the debug serial alias
    
    [ Upstream commit 08811b984f5af8eeda4fb157894fe9bf230ec1e1 ]
    
    The debug serial of the RZ/G3S is SCIF0 which is routed on the Renesas
    RZ SMARC Carrier II board on the SER3_UART. Use serial3 alias for it for
    better hardware description. Along with it, the chosen properties were
    moved to the device tree corresponding to the RZ SMARC Carrier II board.
    
    Fixes: adb4f0c5699c ("arm64: dts: renesas: Add initial support for RZ/G3S SMARC SoM")
    Fixes: d1ae4200bb26 ("arm64: dts: renesas: Add initial device tree for RZ SMARC Carrier-II Board")
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/20241115134401.3893008-6-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: fix num-channels property of wolfvision pf5 mic [+ + +]
Author: Michael Riesch <michael.riesch@wolfvision.net>
Date:   Wed Dec 18 11:43:11 2024 +0100

    arm64: dts: rockchip: fix num-channels property of wolfvision pf5 mic
    
    [ Upstream commit 11d07966c83f5eccf6b927cb32862aef58488e23 ]
    
    The Rockchip RK3568 PDM block always considers stereo inputs. Therefore,
    the number of channels must be always an even number, even if a single
    mono microphone is attached.
    
    Fixes: 0be29f76633a ("arm64: dts: rockchip: add wolfvision pf5 mainboard")
    Signed-off-by: Michael Riesch <michael.riesch@wolfvision.net>
    Link: https://lore.kernel.org/r/20241218-b4-wolfvision-pf5-update-v1-1-1d1959858708@wolfvision.net
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Fix sdmmc access on rk3308-rock-s0 v1.1 boards [+ + +]
Author: Jonas Karlman <jonas@kwiboo.se>
Date:   Tue Nov 19 23:08:36 2024 +0000

    arm64: dts: rockchip: Fix sdmmc access on rk3308-rock-s0 v1.1 boards
    
    [ Upstream commit 26c100232b09ced0857306ac9831a4fa9c9aa231 ]
    
    BootROM leave GPIO4_D6 configured as SDMMC_PWREN function and DW MCI
    driver set PRWEN high on MMC_POWER_UP and low on MMC_POWER_OFF.
    Similarly U-Boot also set PRWEN high before accessing mmc.
    
    However, HW revision prior to v1.2 must pull GPIO4_D6 low to access
    sdmmc. For HW revision v1.2 the state of GPIO4_D6 has no impact.
    
    Model an always-on active low fixed regulator using GPIO4_D6 to fix
    use of sdmmc on older HW revisions of the board.
    
    Fixes: adeb5d2a4ba4 ("arm64: dts: rockchip: Add Radxa ROCK S0")
    Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
    Link: https://lore.kernel.org/r/20241119230838.4137130-1-jonas@kwiboo.se
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: ti: k3-am62: Remove duplicate GICR reg [+ + +]
Author: Bryan Brattlof <bb@ti.com>
Date:   Tue Dec 10 14:59:24 2024 -0600

    arm64: dts: ti: k3-am62: Remove duplicate GICR reg
    
    [ Upstream commit 72c691d77ea5d0c4636fd3e9f0ad80d813c7d1a7 ]
    
    The GIC Redistributor control register range is mapped twice. Remove
    the extra entry from the reg range.
    
    Fixes: f1d17330a5be ("arm64: dts: ti: Introduce base support for AM62x SoC")
    Reported-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Bryan Brattlof <bb@ti.com>
    Link: https://lore.kernel.org/r/20241210-am62-gic-fixup-v1-1-758b4d5b4a0a@ti.com
    Signed-off-by: Nishanth Menon <nm@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: ti: k3-am62a: Remove duplicate GICR reg [+ + +]
Author: Bryan Brattlof <bb@ti.com>
Date:   Tue Dec 10 14:59:25 2024 -0600

    arm64: dts: ti: k3-am62a: Remove duplicate GICR reg
    
    [ Upstream commit 6f0232577e260cdbc25508e27bb0b75ade7e7ebc ]
    
    The GIC Redistributor control range is mapped twice. Remove the extra
    entry from the reg range.
    
    Fixes: 5fc6b1b62639 ("arm64: dts: ti: Introduce AM62A7 family of SoCs")
    Reported-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Bryan Brattlof <bb@ti.com>
    Link: https://lore.kernel.org/r/20241210-am62-gic-fixup-v1-2-758b4d5b4a0a@ti.com
    Signed-off-by: Nishanth Menon <nm@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: ti: k3-am642-hummingboard-t: Convert overlay to board dts [+ + +]
Author: Josua Mayer <josua@solid-run.com>
Date:   Wed Jan 1 13:30:22 2025 +0100

    arm64: dts: ti: k3-am642-hummingboard-t: Convert overlay to board dts
    
    [ Upstream commit e2b69180431968250bf3c0c581155f1b37d057c1 ]
    
    SolidRun HummingBoard-T has two options for M.2 connector, supporting
    either PCI-E or USB-3.1 Gen 1 - depending on configuration of a mux
    on the serdes lane.
    The required configurations in device-tree were modeled as overlays.
    
    The USB-3.1 overlay uses /delete-property/ to unset a boolean property
    on the usb controller limiting it to USB-2.0 by default.
    Overlays can not delete a property from the base dtb, therefore this
    overlay is at this time useless.
    
    Convert both overlays into full dts by including the base board dts.
    While the pcie overlay was functional, both are converted for a
    consistent user experience when selecting between the two mutually
    exclusive configurations.
    
    Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Closes: https://lore.kernel.org/linux-devicetree/CAMuHMdXTgpTnJ9U7egC2XjFXXNZ5uiY1O+WxNd6LPJW5Rs5KTw@mail.gmail.com
    Fixes: bbef42084cc1 ("arm64: dts: ti: hummingboard-t: add overlays for m.2 pci-e and usb-3")
    Signed-off-by: Josua Mayer <josua@solid-run.com>
    Link: https://lore.kernel.org/r/20250101-am64-hb-fix-overlay-v2-1-78143f5da28c@solid-run.com
    Signed-off-by: Nishanth Menon <nm@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: tegra: Fix DMA ID for SPI2 [+ + +]
Author: Akhil R <akhilrajeev@nvidia.com>
Date:   Fri Dec 6 16:22:00 2024 +0530

    arm64: tegra: Fix DMA ID for SPI2
    
    [ Upstream commit 346bf459db26325c09ed841fdfd6678de1b1cb3a ]
    
    DMA ID for SPI2 is '16'. Update the incorrect value in the devicetree.
    
    Fixes: bb9667d8187b ("arm64: tegra: Add SPI device tree nodes for Tegra234")
    Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
    Link: https://lore.kernel.org/r/20241206105201.53596-1-akhilrajeev@nvidia.com
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ARM: at91: pm: change BU Power Switch to automatic mode [+ + +]
Author: Nicolas Ferre <nicolas.ferre@microchip.com>
Date:   Mon Nov 25 17:56:48 2024 +0100

    ARM: at91: pm: change BU Power Switch to automatic mode
    
    [ Upstream commit 6fc5bdfa872b7da51b5507a1327a17c3db2fcf95 ]
    
    Change how the Backup Unit Power is configured and force the
    automatic/hardware mode.
    This change eliminates the need for software management of the power
    switch, ensuring it transitions to the backup power source before
    entering low power modes.
    
    This is done in the only location where this switch was configured. It's
    usually done in the bootloader.
    
    Previously, the loss of the VDDANA (or VDDIN33) power source was not
    automatically compensated by an alternative power source. This resulted
    in the loss of Backup Unit content, including Backup Self-refresh low
    power mode information, OTP emulation configuration, and boot
    configuration, for instance.
    
    Fixes: ac809e7879b1 ("ARM: at91: pm: switch backup area to vbat in backup mode")
    Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Link: https://lore.kernel.org/r/20241125165648.509162-1-nicolas.ferre@microchip.com
    Signed-off-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: aspeed: yosemite4: Add required properties for IOE on fan boards [+ + +]
Author: Ricky CX Wu <ricky.cx.wu.wiwynn@gmail.com>
Date:   Thu Oct 3 15:42:45 2024 +0800

    ARM: dts: aspeed: yosemite4: Add required properties for IOE on fan boards
    
    [ Upstream commit c64ac96f8f8d957cdc6ec3c93dd9a6c4e6d78506 ]
    
    Add the required properties for IO expander on fan boards.
    
    Fixes: 2b8d94f4b4a4 ("ARM: dts: aspeed: yosemite4: add Facebook Yosemite 4 BMC")
    Signed-off-by: Ricky CX Wu <ricky.cx.wu.wiwynn@gmail.com>
    Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>
    Link: https://patch.msgid.link/20241003074251.3818101-5-Delphine_CC_Chiu@wiwynn.com
    Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: aspeed: yosemite4: correct the compatible string for max31790 [+ + +]
Author: Ricky CX Wu <ricky.cx.wu.wiwynn@gmail.com>
Date:   Thu Oct 3 15:42:46 2024 +0800

    ARM: dts: aspeed: yosemite4: correct the compatible string for max31790
    
    [ Upstream commit b1a1ecb669bfa763ee5e86a038d7c9363eee7548 ]
    
    Fix the compatible string for max31790 to match the binding document.
    
    Fixes: 2b8d94f4b4a4 ("ARM: dts: aspeed: yosemite4: add Facebook Yosemite 4 BMC")
    Signed-off-by: Ricky CX Wu <ricky.cx.wu.wiwynn@gmail.com>
    Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>
    Link: https://patch.msgid.link/20241003074251.3818101-6-Delphine_CC_Chiu@wiwynn.com
    Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: aspeed: yosemite4: correct the compatible string of adm1272 [+ + +]
Author: Ricky CX Wu <ricky.cx.wu.wiwynn@gmail.com>
Date:   Fri Sep 27 16:52:13 2024 +0800

    ARM: dts: aspeed: yosemite4: correct the compatible string of adm1272
    
    [ Upstream commit ece3e20e3389ec8a32944ad44746ee379bf1d3eb ]
    
    Remove the space in the compatible string of adm1272 to match the
    pattern of compatible.
    
    Fixes: 2b8d94f4b4a4 ("ARM: dts: aspeed: yosemite4: add Facebook Yosemite 4 BMC")
    Signed-off-by: Ricky CX Wu <ricky.cx.wu.wiwynn@gmail.com>
    Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>
    Fixes: 2b8d94f4b4a4765d ("ARM: dts: aspeed: yosemite4: add Facebook Yosemite 4 BMC")
    Reviewed-by: Andrew Jeffery <andrew@codeconstruct.com.au>
    Link: https://patch.msgid.link/20240927085213.331127-1-Delphine_CC_Chiu@wiwynn.com
    Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: imx7-tqma7: add missing vs-supply for LM75A (rev. 01xxx) [+ + +]
Author: Alexander Stein <alexander.stein@ew.tq-group.com>
Date:   Fri Nov 8 14:49:21 2024 +0100

    ARM: dts: imx7-tqma7: add missing vs-supply for LM75A (rev. 01xxx)
    
    [ Upstream commit 78e08cebfe41a99d12a3a79d3e3be913559182e2 ]
    
    Add missing supply for LM75. Fixes the kernel warning:
      lm75 0-0048: supply vs not found, using dummy regulator
    
    Fixes: c9d4affbe60a ("ARM: dts: imx: tqma7: add lm75a sensor (rev. 01xxx)")
    Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
    Reviewed-by: Markus Niebel <markus.niebel@ew.tq-group.com>
    Reviewed-by: Bruno Thomsen <bruno.thomsen@gmail.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: mediatek: mt7623: fix IR nodename [+ + +]
Author: Rafał Miłecki <rafal@milecki.pl>
Date:   Mon Jun 17 11:46:33 2024 +0200

    ARM: dts: mediatek: mt7623: fix IR nodename
    
    [ Upstream commit 90234cf9b37c57201a24b78c217a91a8af774109 ]
    
    Fix following validation error:
    arch/arm/boot/dts/mediatek/mt7623a-rfb-emmc.dtb: cir@10013000: $nodename:0: 'cir@10013000' does not match '^ir(-receiver)?(@[a-f0-9]+)?$'
            from schema $id: http://devicetree.org/schemas/media/mediatek,mt7622-cir.yaml#
    
    Fixes: 91044f38dae7 ("arm: dts: mt7623: add ir nodes to the mt7623.dtsi file")
    Cc: linux-media@vger.kernel.org
    Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
    Link: https://lore.kernel.org/r/20240617094634.23173-1-zajec5@gmail.com
    Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: microchip: sama5d27_wlsom1_ek: Add no-1-8-v property to sdmmc0 node [+ + +]
Author: Cristian Birsan <cristian.birsan@microchip.com>
Date:   Tue Nov 19 18:01:07 2024 +0200

    ARM: dts: microchip: sama5d27_wlsom1_ek: Add no-1-8-v property to sdmmc0 node
    
    [ Upstream commit 4d9e5965df04c0adf260c3009c55d5fe240f7286 ]
    
    Add no-1-8-v property to sdmmc0 node to keep VDDSDMMC power rail at 3.3V.
    This property will stop the LDO regulator from switching to 1.8V when the
    MMC core detects an UHS SD Card. VDDSDMMC power rail is used by all the
    SDMMC interface pins in GPIO mode (PA0 - PA13).
    
    On this board, PA10 is used as GPIO to enable the power switch controlling
    USB Vbus for the USB Host. The change is needed to fix the PA10 voltage
    level to 3.3V instead of 1.8V.
    
    Fixes: 5d4c3cfb63fe ("ARM: dts: at91: sama5d27_wlsom1: add SAMA5D27 wlsom1 and wlsom1-ek")
    Suggested-by: Mihai Sain <mihai.sain@microchip.com>
    Signed-off-by: Cristian Birsan <cristian.birsan@microchip.com>
    Tested-by: Andrei Simion <andrei.simion@microchip.com>
    Link: https://lore.kernel.org/r/20241119160107.598411-3-cristian.birsan@microchip.com
    Signed-off-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: microchip: sama5d29_curiosity: Add no-1-8-v property to sdmmc0 node [+ + +]
Author: Cristian Birsan <cristian.birsan@microchip.com>
Date:   Tue Nov 19 18:01:06 2024 +0200

    ARM: dts: microchip: sama5d29_curiosity: Add no-1-8-v property to sdmmc0 node
    
    [ Upstream commit c21c23a0f2e9869676eff0d53fb89e151e14c873 ]
    
    Add no-1-8-v property to sdmmc0 node to keep VDDSDMMC power rail at 3.3V.
    This property will stop the LDO regulator from switching to 1.8V when the
    MMC core detects an UHS SD Card. VDDSDMMC power rail is used by all the
    SDMMC interface pins in GPIO mode (PA0 - PA13).
    
    On this board, PA6 is used as GPIO to enable the power switch controlling
    USB Vbus for the USB Host. The change is needed to fix the PA6 voltage
    level to 3.3V instead of 1.8V.
    
    Fixes: d85c4229e925 ("ARM: dts: at91: sama5d29_curiosity: Add device tree for sama5d29_curiosity board")
    Suggested-by: Mihai Sain <mihai.sain@microchip.com>
    Signed-off-by: Cristian Birsan <cristian.birsan@microchip.com>
    Tested-by: Andrei Simion <andrei.simion@microchip.com>
    Link: https://lore.kernel.org/r/20241119160107.598411-2-cristian.birsan@microchip.com
    Signed-off-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
arm: dts: socfpga: use reset-name "stmmaceth-ocp" instead of "ahb" [+ + +]
Author: Mamta Shukla <mamta.shukla@leica-geosystems.com>
Date:   Mon Oct 28 15:59:07 2024 +0100

    arm: dts: socfpga: use reset-name "stmmaceth-ocp" instead of "ahb"
    
    [ Upstream commit 62a40a0d5634834790f7166ab592be247390d857 ]
    
    The ahb reset is deasserted in probe before first register access, while the
    stmmacheth-ocp reset needs to be asserted every time before changing the phy
    mode in Arria10[1].
    
    Changed in Upstream to "ahb"(331085a423b  arm64: dts: socfpga: change the
    reset-name of "stmmaceth-ocp" to "ahb" ).This change was intended for arm64
    socfpga and it is not applicable to Arria10.
    
    Further with STMMAC-SELFTEST Driver enabled, ethtool test also FAILS.
    $ ethtool -t eth0
    [  322.946709] socfpga-dwmac ff800000.ethernet eth0: entered promiscuous mode
    [  323.374558] socfpga-dwmac ff800000.ethernet eth0: left promiscuous mode
    The test result is FAIL
    The test extra info:
     1. MAC Loopback                 0
     2. PHY Loopback                 -110
     3. MMC Counters                 -110
     4. EEE                          -95
     5. Hash Filter MC               0
     6. Perfect Filter UC            -110
     7. MC Filter                    -110
     8. UC Filter                    0
     9. Flow Control                 -110
    10. RSS                          -95
    11. VLAN Filtering               -95
    12. VLAN Filtering (perf)        -95
    13. Double VLAN Filter           -95
    14. Double VLAN Filter (perf)    -95
    15. Flexible RX Parser           -95
    16. SA Insertion (desc)          -95
    17. SA Replacement (desc)        -95
    18. SA Insertion (reg)           -95
    19. SA Replacement (reg)         -95
    20. VLAN TX Insertion            -95
    21. SVLAN TX Insertion           -95
    22. L3 DA Filtering              -95
    23. L3 SA Filtering              -95
    24. L4 DA TCP Filtering          -95
    25. L4 SA TCP Filtering          -95
    26. L4 DA UDP Filtering          -95
    27. L4 SA UDP Filtering          -95
    28. ARP Offload                  -95
    29. Jumbo Frame                  -110
    30. Multichannel Jumbo           -95
    31. Split Header                 -95
    32. TBS (ETF Scheduler)          -95
    
    [  324.881327] socfpga-dwmac ff800000.ethernet eth0: Link is Down
    [  327.995360] socfpga-dwmac ff800000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
    
    Link:[1] https://www.intel.com/content/www/us/en/docs/programmable/683711/21-2/functional-description-of-the-emac.html
    Fixes: 331085a423b ("arm64: dts: socfpga: change the reset-name of "stmmaceth-ocp" to "ahb")
    Signed-off-by: Mamta Shukla <mamta.shukla@leica-geosystems.com>
    Tested-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
    Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ARM: dts: stm32: Deduplicate serial aliases and chosen node for STM32MP15xx DHCOM SoM [+ + +]
Author: Marek Vasut <marex@denx.de>
Date:   Wed Nov 6 00:29:44 2024 +0100

    ARM: dts: stm32: Deduplicate serial aliases and chosen node for STM32MP15xx DHCOM SoM
    
    [ Upstream commit 73317d327123472cb70e9ecbe050310f1d235e93 ]
    
    Deduplicate /aliases { serialN = ... } and /chosen node into
    stm32mp15xx-dhcom-som.dtsi , since the content is identical
    on all carrier boards using the STM32MP15xx DHCOM SoM. No
    functional change.
    
    Signed-off-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
    Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Stable-dep-of: 479b8227ffc4 ("ARM: dts: stm32: Swap USART3 and UART8 alias on STM32MP15xx DHCOM SoM")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: stm32: Fix IPCC EXTI declaration on stm32mp151 [+ + +]
Author: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
Date:   Fri Dec 6 18:17:59 2024 +0100

    ARM: dts: stm32: Fix IPCC EXTI declaration on stm32mp151
    
    [ Upstream commit 4ea654242e0c75bdf6b45d3c619c5fdcb2e9312a ]
    
    The GIC IRQ type used for IPCC RX should be IRQ_TYPE_LEVEL_HIGH.
    Replacing the interrupt with the EXTI event changes the type to
    the numeric value 1, meaning IRQ_TYPE_EDGE_RISING.
    
    The issue is that EXTI event 61 is a direct event.The IRQ type of
    direct events is not used by EXTI and is propagated to the parent
    IRQ controller of EXTI, the GIC.
    
    Align the IRQ type to the value expected by the GIC by replacing
    the second parameter "1" with IRQ_TYPE_LEVEL_HIGH.
    
    Fixes: 7d9802bb0e34 ("ARM: dts: stm32: remove the IPCC "wakeup" IRQ on stm32mp151")
    Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
    Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: stm32: Increase CPU core voltage on STM32MP13xx DHCOR SoM [+ + +]
Author: Marek Vasut <marex@denx.de>
Date:   Tue Nov 5 23:46:22 2024 +0100

    ARM: dts: stm32: Increase CPU core voltage on STM32MP13xx DHCOR SoM
    
    [ Upstream commit a4422a9183278162093d4524fdf4b6bbd7dd8a28 ]
    
    The STM32MP13xx DHCOR DHSBC is populated with STM32MP13xx part capable
    of 1 GHz operation, increase the CPU core voltage to 1.35 V to make
    sure the SoC is stable even if the blobs unconditionally force the CPU
    to 1 GHz operation.
    
    It is not possible to make use of CPUfreq on the STM32MP13xx because
    the SCMI protocol 0x13 is not implemented by upstream OpTee-OS which
    is the SCMI provider.
    
    Fixes: 6331bddce649 ("ARM: dts: stm32: Add support for STM32MP13xx DHCOR SoM and DHSBC board")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: stm32: Swap USART3 and UART8 alias on STM32MP15xx DHCOM SoM [+ + +]
Author: Marek Vasut <marex@denx.de>
Date:   Fri Dec 13 23:36:25 2024 +0100

    ARM: dts: stm32: Swap USART3 and UART8 alias on STM32MP15xx DHCOM SoM
    
    [ Upstream commit 479b8227ffc433929ba49200182b6383569f9615 ]
    
    Swap USART3 and UART8 aliases on STM32MP15xx DHCOM SoM,
    make sure UART8 is listed first, USART3 second, because
    the UART8 is labeled as UART2 on the SoM pinout, while
    USART3 is labeled as UART3 on the SoM pinout.
    
    Fixes: 34e0c7847dcf ("ARM: dts: stm32: Add DH Electronics DHCOM STM32MP1 SoM and PDK2 board")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
    Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: omap1: Fix up the Retu IRQ on Nokia 770 [+ + +]
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Wed Jan 1 14:12:15 2025 +0200

    ARM: omap1: Fix up the Retu IRQ on Nokia 770
    
    [ Upstream commit ad455e48bba7f21bb5108406da0854cf8dede8ea ]
    
    The Retu IRQ is off by one, as a result the power button does not work.
    Fix it.
    
    Fixes: 084b6f216778 ("ARM: omap1: Fix up the Nokia 770 board device IRQs")
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/Z3UxH_fOzuftjnuX@darkstar.musicnaut.iki.fi
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ASoC: amd: acp: Fix possible deadlock [+ + +]
Author: Daniel Baluta <daniel.baluta@nxp.com>
Date:   Mon Jan 27 10:34:22 2025 +0200

    ASoC: amd: acp: Fix possible deadlock
    
    [ Upstream commit 3ff53862c322aa7bb115d84348d5a641dc905d87 ]
    
    On error path, function acp_i2s_set_tdm_slot returns without releasing
    the lock and this could result in potential deadlocks in the future.
    
    Error reported by sparse:
    sound/soc/amd/acp/acp-i2s.c:95:12: error: context imbalance in
    'acp_i2s_set_tdm_slot' - different lock contexts for basic block
    
    Fixes: cd60dec8994c ("ASoC: amd: acp: Refactor TDM slots selction based on acp revision id")
    Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Link: https://patch.msgid.link/20250127083422.20406-1-daniel.baluta@nxp.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: cs40l50: Use *-y for Makefile [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Dec 3 15:18:16 2024 +0100

    ASoC: cs40l50: Use *-y for Makefile
    
    [ Upstream commit 3f0b8d367db5b0c0a0096b1c2ff02ec7c5c893b6 ]
    
    We should use *-y instead of *-objs in Makefile for the module
    objects.  *-objs is used rather for host programs.
    
    Fixes: c486def5b3ba ("ASoC: cs40l50: Support I2S streaming to CS40L50")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://patch.msgid.link/20241203141823.22393-2-tiwai@suse.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: da7213: Initialize the mutex [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Thu Jan 23 14:10:36 2025 +0200

    ASoC: da7213: Initialize the mutex
    
    commit 4a32a38cb68f55ff9e100df348ddb3d4b3e50643 upstream.
    
    Initialize the struct da7213_priv::ctrl_lock mutex. Without it the
    following stack trace is displayed when rebooting and lockdep is enabled:
    
    DEBUG_LOCKS_WARN_ON(lock->magic != lock)
    WARNING: CPU: 0 PID: 180 at kernel/locking/mutex.c:564 __mutex_lock+0x254/0x4e4
    CPU: 0 UID: 0 PID: 180 Comm: alsactl Not tainted 6.13.0-next-20250123-arm64-renesas-00002-g132083a22d3d #30
    Hardware name: Renesas SMARC EVK version 2 based on r9a08g045s33 (DT)
    pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : __mutex_lock+0x254/0x4e4
    lr : __mutex_lock+0x254/0x4e4
    sp : ffff800082c13c00
    x29: ffff800082c13c00 x28: ffff00001002b500 x27: 0000000000000000
    x26: 0000000000000000 x25: ffff800080b30db4 x24: 0000000000000002
    x23: ffff800082c13c70 x22: 0000ffffc2a68a70 x21: ffff000010348000
    x20: 0000000000000000 x19: ffff00000be2e488 x18: 0000000000000000
    x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
    x14: 00000000000003c1 x13: 00000000000003c1 x12: 0000000000000000
    x11: 0000000000000011 x10: 0000000000001420 x9 : ffff800082c13a70
    x8 : 0000000000000001 x7 : ffff800082c13a50 x6 : ffff800082c139e0
    x5 : ffff800082c14000 x4 : ffff800082c13a50 x3 : 0000000000000000
    x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff00001002b500
    Call trace:
      __mutex_lock+0x254/0x4e4 (P)
      mutex_lock_nested+0x20/0x28
      da7213_volsw_locked_get+0x34/0x60
      snd_ctl_elem_read+0xbc/0x114
      snd_ctl_ioctl+0x878/0xa70
      __arm64_sys_ioctl+0x94/0xc8
      invoke_syscall+0x44/0x104
      el0_svc_common.constprop.0+0xb4/0xd4
      do_el0_svc+0x18/0x20
      el0_svc+0x3c/0xf0
      el0t_64_sync_handler+0xc0/0xc4
      el0t_64_sync+0x154/0x158
     irq event stamp: 7713
     hardirqs last  enabled at (7713): [<ffff800080170d94>] ktime_get_coarse_real_ts64+0xf0/0x10c
     hardirqs last disabled at (7712): [<ffff800080170d58>] ktime_get_coarse_real_ts64+0xb4/0x10c
     softirqs last  enabled at (7550): [<ffff8000800179d4>] fpsimd_restore_current_state+0x30/0xb8
     softirqs last disabled at (7548): [<ffff8000800179a8>] fpsimd_restore_current_state+0x4/0xb8
     ---[ end trace 0000000000000000 ]---
    
    Fixes: 64c3259b5f86 ("ASoC: da7213: Add new kcontrol for tonegen")
    Cc: stable@vger.kernel.org
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Link: https://patch.msgid.link/20250123121036.70406-1-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: Intel: avs: Do not readq() u32 registers [+ + +]
Author: Cezary Rojewski <cezary.rojewski@intel.com>
Date:   Thu Jan 9 13:22:04 2025 +0100

    ASoC: Intel: avs: Do not readq() u32 registers
    
    [ Upstream commit bca0fa5f6b5e96c03daac1ed62b1e5c5057a2048 ]
    
    Register reporting ROM status is 4-bytes wide.
    
    Fixes: 092cf7b26a48 ("ASoC: Intel: avs: Code loading over HDA")
    Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Link: https://patch.msgid.link/20250109122216.3667847-2-cezary.rojewski@intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: Intel: avs: Fix init-config parsing [+ + +]
Author: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Date:   Thu Jan 9 13:22:07 2025 +0100

    ASoC: Intel: avs: Fix init-config parsing
    
    [ Upstream commit e9ca3db9f01a7ce91ceab35cd5fa52f0c5aca174 ]
    
    When parsing init configs correct token should be looked up.
    
    Fixes: 1b4217ebbb3e ("ASoC: Intel: avs: Add topology parsing support for initial config")
    Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
    Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Link: https://patch.msgid.link/20250109122216.3667847-5-cezary.rojewski@intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: Intel: avs: Fix the minimum firmware version numbers [+ + +]
Author: Cezary Rojewski <cezary.rojewski@intel.com>
Date:   Thu Jan 9 13:22:05 2025 +0100

    ASoC: Intel: avs: Fix the minimum firmware version numbers
    
    [ Upstream commit dbda5c35b88794f6e5efe1b5b20044b0b3a340d4 ]
    
    For few TGL-based platforms the minor version number for AudioDSP
    firmware is incorrect forcing users to utilize ignore_fw_version module
    parameter.
    
    Fixes: 5acb19ecd198 ("ASoC: Intel: avs: TGL-based platforms support")
    Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Link: https://patch.msgid.link/20250109122216.3667847-3-cezary.rojewski@intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: Intel: avs: Fix theoretical infinite loop [+ + +]
Author: Cezary Rojewski <cezary.rojewski@intel.com>
Date:   Thu Jan 9 13:22:06 2025 +0100

    ASoC: Intel: avs: Fix theoretical infinite loop
    
    [ Upstream commit cf4d74256fe103ece7b2647550e6c063048e5682 ]
    
    While 'stack_dump_size' is a u32 bitfield of 16 bits, u32 has a bigger
    upper bound than the type u16 of loop counter 'offset' what in theory
    may lead to infinite loop condition.
    
    Found out by Coverity static analyzer.
    
    Fixes: c8c960c10971 ("ASoC: Intel: avs: APL-based platforms support")
    Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Link: https://patch.msgid.link/20250109122216.3667847-4-cezary.rojewski@intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: Intel: sof_sdw: correct mach_params->dmic_num [+ + +]
Author: Bard Liao <yung-chuan.liao@linux.intel.com>
Date:   Fri Dec 6 15:58:54 2024 +0800

    ASoC: Intel: sof_sdw: correct mach_params->dmic_num
    
    [ Upstream commit 4ab80a2961c75562ffbac1f80de151a978c31659 ]
    
    mach_params->dmic_num will be used to set the cfg-mics value of
    card->components string which should be the dmic channels. However
    dmic_num is dmic link number and could be set due to the SOC_SDW_PCH_DMIC
    quirk. Set mach_params->dmic_num to the default value if the dmic link
    is created due to the SOC_SDW_PCH_DMIC quirk.
    
    Fixes: 7db9f6361170 ("ASoC: Intel: sof_sdw: overwrite mach_params->dmic_num")
    Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Link: https://patch.msgid.link/20241206075903.195730-2-yung-chuan.liao@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: Intel: sof_sdw: Fix DMI match for Lenovo 83JX, 83MC and 83NM [+ + +]
Author: Simon Trimmer <simont@opensource.cirrus.com>
Date:   Thu Jan 2 20:33:35 2025 +0800

    ASoC: Intel: sof_sdw: Fix DMI match for Lenovo 83JX, 83MC and 83NM
    
    [ Upstream commit 17615e4216115a0454e0f2007267a006231dcb7d ]
    
    Update the DMI match for a Lenovo laptop to a new DMI identifier.
    
    This laptop ships with a different DMI identifier to what was expected
    and now has three match entries. It also has the DMICs connected to the
    host rather than the cs42l43 codec.
    
    Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
    Fixes: 83c062ae81e8 ("ASoC: Intel: sof_sdw: Add quirks for some new Lenovo laptops")
    Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Link: https://patch.msgid.link/20250102123335.256698-3-yung-chuan.liao@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: Intel: sof_sdw: Fix DMI match for Lenovo 83LC [+ + +]
Author: Simon Trimmer <simont@opensource.cirrus.com>
Date:   Thu Jan 2 20:33:34 2025 +0800

    ASoC: Intel: sof_sdw: Fix DMI match for Lenovo 83LC
    
    [ Upstream commit c9e05763f334845ba69494dd71d7cbfd05fd0e6e ]
    
    Update the DMI match for a Lenovo laptop to the new DMI identifier.
    
    This laptop ships with a different DMI identifier to what was expected,
    and also has the DMICs connected to the host rather than the cs42l43
    codec.
    
    Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
    Fixes: 83c062ae81e8 ("ASoC: Intel: sof_sdw: Add quirks for some new Lenovo laptops")
    Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Link: https://patch.msgid.link/20250102123335.256698-2-yung-chuan.liao@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: mediatek: mt8365: Use *-y for Makefile [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Dec 3 15:18:17 2024 +0100

    ASoC: mediatek: mt8365: Use *-y for Makefile
    
    [ Upstream commit e9d2a2f49244d9737f0ec33f4b7f3580faecd805 ]
    
    We should use *-y instead of *-objs in Makefile for the module
    objects.  *-objs is used rather for host programs.
    
    Fixes: 5bbfdad8cf8d ("ASoC: mediatek: Add MT8365 support")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://patch.msgid.link/20241203141823.22393-3-tiwai@suse.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: renesas: rz-ssi: Use only the proper amount of dividers [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Tue Dec 10 19:09:34 2024 +0200

    ASoC: renesas: rz-ssi: Use only the proper amount of dividers
    
    [ Upstream commit 55c209cd4318c701e6e88e0b2512a0f12dd02a7d ]
    
    There is no need to populate the ckdv[] with invalid dividers as that
    part will not be indexed anyway. The ssi->audio_mck/bclk_rate should
    always be >= 0. While at it, change the ckdv type as u8, as the divider
    128 was previously using the s8 sign bit.
    
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Fixes: 03e786bd43410fa9 ("ASoC: sh: Add RZ/G2L SSIF-2 driver")
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://patch.msgid.link/20241210170953.2936724-6-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: rockchip: i2s_tdm: Re-add the set_sysclk callback [+ + +]
Author: Detlev Casanova <detlev.casanova@collabora.com>
Date:   Fri Jan 17 11:31:02 2025 -0500

    ASoC: rockchip: i2s_tdm: Re-add the set_sysclk callback
    
    [ Upstream commit 5323186e2e8d33c073fad51e24f18e2d6dbae2da ]
    
    In commit
    9e2ab4b18ebd ("ASoC: rockchip: i2s-tdm: Fix inaccurate sampling rates"),
    the set_sysclk callback was removed as considered unused as the mclk rate
    can be set in the hw_params callback.
    The difference between hw_params and set_sysclk is that the former is
    called with the audio sampling rate set in the params (e.g.: 48000 Hz)
    while the latter is called with a clock rate already computed with
      sampling_rate * mclk-fs (e.g.: 48000 * 256)
    
    For HDMI audio using the Rockchip I2S TDM driver, the mclk-fs value must
    be set to 128 instead of the default 256, and that value is set in the
    device tree at the machine driver level (like a simple-audio-card
    compatible node).
    Therefore, the i2s_tdm driver has no idea that another mclk-fs value can
    be configured and simply computes the mclk rate in the hw_params callback
    with DEFAULT_MCLK_FS * params_rate(params), which is wrong for HDMI
    audio.
    
    Re-add the set_sysclk callback so that the mclk rate is computed by the
    machine driver which has the correct mclk-fs value set in its device tree
    node.
    
    Fixes: 9e2ab4b18ebd ("ASoC: rockchip: i2s-tdm: Fix inaccurate sampling rates")
    Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com>
    Link: https://patch.msgid.link/20250117163102.65807-1-detlev.casanova@collabora.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: sun4i-spdif: Add clock multiplier settings [+ + +]
Author: George Lander <lander@jagmn.com>
Date:   Mon Nov 11 17:55:29 2024 +0100

    ASoC: sun4i-spdif: Add clock multiplier settings
    
    [ Upstream commit 0a2319308de88b9e819c0b43d0fccd857123eb31 ]
    
    There have been intermittent issues with the SPDIF output on H3
    and H2+ devices which has been fixed by setting the s_clk to 4
    times the audio pll.
    Add a quirk for the clock multiplier as not every supported SoC
    requires it. Without the multiplier, the audio at normal sampling
    rates was distorted and did not play at higher sampling rates.
    
    Fixes: 1bd92af877ab ("ASoC: sun4i-spdif: Add support for the H3 SoC")
    Signed-off-by: George Lander <lander@jagmn.com>
    Signed-off-by: Marcus Cooper <codekipper@gmail.com>
    Link: https://patch.msgid.link/20241111165600.57219-2-codekipper@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: wcd937x: Use *-y for Makefile [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Dec 3 15:18:20 2024 +0100

    ASoC: wcd937x: Use *-y for Makefile
    
    [ Upstream commit 582057d2233a5a38e1aec3f4a6d66b362b42076c ]
    
    We should use *-y instead of *-objs in Makefile for the module
    objects.  *-objs is used rather for host programs.
    
    Fixes: 313e978df7fc ("ASoC: codecs: wcd937x: add audio routing and Kconfig")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://patch.msgid.link/20241203141823.22393-6-tiwai@suse.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ax25: rcu protect dev->ax25_ptr [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jan 3 21:05:14 2025 +0000

    ax25: rcu protect dev->ax25_ptr
    
    [ Upstream commit 95fc45d1dea8e1253f8ec58abc5befb71553d666 ]
    
    syzbot found a lockdep issue [1].
    
    We should remove ax25 RTNL dependency in ax25_setsockopt()
    
    This should also fix a variety of possible UAF in ax25.
    
    [1]
    
    WARNING: possible circular locking dependency detected
    6.13.0-rc3-syzkaller-00762-g9268abe611b0 #0 Not tainted
    ------------------------------------------------------
    syz.5.1818/12806 is trying to acquire lock:
     ffffffff8fcb3988 (rtnl_mutex){+.+.}-{4:4}, at: ax25_setsockopt+0xa55/0xe90 net/ax25/af_ax25.c:680
    
    but task is already holding lock:
     ffff8880617ac258 (sk_lock-AF_AX25){+.+.}-{0:0}, at: lock_sock include/net/sock.h:1618 [inline]
     ffff8880617ac258 (sk_lock-AF_AX25){+.+.}-{0:0}, at: ax25_setsockopt+0x209/0xe90 net/ax25/af_ax25.c:574
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #1 (sk_lock-AF_AX25){+.+.}-{0:0}:
            lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
            lock_sock_nested+0x48/0x100 net/core/sock.c:3642
            lock_sock include/net/sock.h:1618 [inline]
            ax25_kill_by_device net/ax25/af_ax25.c:101 [inline]
            ax25_device_event+0x24d/0x580 net/ax25/af_ax25.c:146
            notifier_call_chain+0x1a5/0x3f0 kernel/notifier.c:85
           __dev_notify_flags+0x207/0x400
            dev_change_flags+0xf0/0x1a0 net/core/dev.c:9026
            dev_ifsioc+0x7c8/0xe70 net/core/dev_ioctl.c:563
            dev_ioctl+0x719/0x1340 net/core/dev_ioctl.c:820
            sock_do_ioctl+0x240/0x460 net/socket.c:1234
            sock_ioctl+0x626/0x8e0 net/socket.c:1339
            vfs_ioctl fs/ioctl.c:51 [inline]
            __do_sys_ioctl fs/ioctl.c:906 [inline]
            __se_sys_ioctl+0xf5/0x170 fs/ioctl.c:892
            do_syscall_x64 arch/x86/entry/common.c:52 [inline]
            do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
           entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    -> #0 (rtnl_mutex){+.+.}-{4:4}:
            check_prev_add kernel/locking/lockdep.c:3161 [inline]
            check_prevs_add kernel/locking/lockdep.c:3280 [inline]
            validate_chain+0x18ef/0x5920 kernel/locking/lockdep.c:3904
            __lock_acquire+0x1397/0x2100 kernel/locking/lockdep.c:5226
            lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
            __mutex_lock_common kernel/locking/mutex.c:585 [inline]
            __mutex_lock+0x1ac/0xee0 kernel/locking/mutex.c:735
            ax25_setsockopt+0xa55/0xe90 net/ax25/af_ax25.c:680
            do_sock_setsockopt+0x3af/0x720 net/socket.c:2324
            __sys_setsockopt net/socket.c:2349 [inline]
            __do_sys_setsockopt net/socket.c:2355 [inline]
            __se_sys_setsockopt net/socket.c:2352 [inline]
            __x64_sys_setsockopt+0x1ee/0x280 net/socket.c:2352
            do_syscall_x64 arch/x86/entry/common.c:52 [inline]
            do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
           entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    other info that might help us debug this:
    
     Possible unsafe locking scenario:
    
           CPU0                    CPU1
           ----                    ----
      lock(sk_lock-AF_AX25);
                                   lock(rtnl_mutex);
                                   lock(sk_lock-AF_AX25);
      lock(rtnl_mutex);
    
     *** DEADLOCK ***
    
    1 lock held by syz.5.1818/12806:
      #0: ffff8880617ac258 (sk_lock-AF_AX25){+.+.}-{0:0}, at: lock_sock include/net/sock.h:1618 [inline]
      #0: ffff8880617ac258 (sk_lock-AF_AX25){+.+.}-{0:0}, at: ax25_setsockopt+0x209/0xe90 net/ax25/af_ax25.c:574
    
    stack backtrace:
    CPU: 1 UID: 0 PID: 12806 Comm: syz.5.1818 Not tainted 6.13.0-rc3-syzkaller-00762-g9268abe611b0 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    Call Trace:
     <TASK>
      __dump_stack lib/dump_stack.c:94 [inline]
      dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
      print_circular_bug+0x13a/0x1b0 kernel/locking/lockdep.c:2074
      check_noncircular+0x36a/0x4a0 kernel/locking/lockdep.c:2206
      check_prev_add kernel/locking/lockdep.c:3161 [inline]
      check_prevs_add kernel/locking/lockdep.c:3280 [inline]
      validate_chain+0x18ef/0x5920 kernel/locking/lockdep.c:3904
      __lock_acquire+0x1397/0x2100 kernel/locking/lockdep.c:5226
      lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
      __mutex_lock_common kernel/locking/mutex.c:585 [inline]
      __mutex_lock+0x1ac/0xee0 kernel/locking/mutex.c:735
      ax25_setsockopt+0xa55/0xe90 net/ax25/af_ax25.c:680
      do_sock_setsockopt+0x3af/0x720 net/socket.c:2324
      __sys_setsockopt net/socket.c:2349 [inline]
      __do_sys_setsockopt net/socket.c:2355 [inline]
      __se_sys_setsockopt net/socket.c:2352 [inline]
      __x64_sys_setsockopt+0x1ee/0x280 net/socket.c:2352
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f7b62385d29
    
    Fixes: c433570458e4 ("ax25: fix a use-after-free in ax25_fillin_cb()")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Link: https://patch.msgid.link/20250103210514.87290-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bgmac: reduce max frame size to support just MTU 1500 [+ + +]
Author: Rafał Miłecki <rafal@milecki.pl>
Date:   Mon Jan 27 09:51:59 2025 -0800

    bgmac: reduce max frame size to support just MTU 1500
    
    [ Upstream commit 752e5fcc2e77358936d36ef8e522d6439372e201 ]
    
    bgmac allocates new replacement buffer before handling each received
    frame. Allocating & DMA-preparing 9724 B each time consumes a lot of CPU
    time. Ideally bgmac should just respect currently set MTU but it isn't
    the case right now. For now just revert back to the old limited frame
    size.
    
    This change bumps NAT masquerade speed by ~95%.
    
    Since commit 8218f62c9c9b ("mm: page_frag: use initial zero offset for
    page_frag_alloc_align()"), the bgmac driver fails to open its network
    interface successfully and runs out of memory in the following call
    stack:
    
    bgmac_open
      -> bgmac_dma_init
        -> bgmac_dma_rx_skb_for_slot
          -> netdev_alloc_frag
    
    BGMAC_RX_ALLOC_SIZE = 10048 and PAGE_FRAG_CACHE_MAX_SIZE = 32768.
    
    Eventually we land into __page_frag_alloc_align() with the following
    parameters across multiple successive calls:
    
    __page_frag_alloc_align: fragsz=10048, align_mask=-1, size=32768, offset=0
    __page_frag_alloc_align: fragsz=10048, align_mask=-1, size=32768, offset=10048
    __page_frag_alloc_align: fragsz=10048, align_mask=-1, size=32768, offset=20096
    __page_frag_alloc_align: fragsz=10048, align_mask=-1, size=32768, offset=30144
    
    So in that case we do indeed have offset + fragsz (40192) > size (32768)
    and so we would eventually return NULL. Reverting to the older 1500
    bytes MTU allows the network driver to be usable again.
    
    Fixes: 8c7da63978f1 ("bgmac: configure MTU and add support for frames beyond 8192 byte size")
    Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
    [florian: expand commit message about recent commits]
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Link: https://patch.msgid.link/20250127175159.1788246-1-florian.fainelli@broadcom.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
block: check BLK_FEAT_POLL under q_usage_count [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Fri Jan 10 06:47:11 2025 +0100

    block: check BLK_FEAT_POLL under q_usage_count
    
    [ Upstream commit 958148a6ac061a9a80a184ea678a5fa872d0c56f ]
    
    Otherwise feature reconfiguration can race with I/O submission.
    
    Also drop the bio_clear_polled in the error path, as the flag does not
    matter for instant error completions, it is a left over from when we
    allowed polled I/O to proceed unpolled in this case.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Link: https://lore.kernel.org/r/20250110054726.1499538-4-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: d432c817c21a ("block: don't update BLK_FEAT_POLL in __blk_mq_update_nr_hw_queues")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

block: copy back bounce buffer to user-space correctly in case of split [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Nov 28 16:52:32 2024 +0530

    block: copy back bounce buffer to user-space correctly in case of split
    
    [ Upstream commit 031141976be0bd5f385775727a4ed3cc845eb7ba ]
    
    Copy back the bounce buffer to user-space in entirety when the parent
    bio completes. The existing code uses bip_iter.bi_size for sizing the
    copy, which can be modified. So move away from that and fetch it from
    the vector passed to the block layer. While at it, switch to using
    better variable names.
    
    Fixes: 492c5d455969f ("block: bio-integrity: directly map user buffers")
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Anuj Gupta <anuj20.g@samsung.com>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Link: https://lore.kernel.org/r/20241128112240.8867-3-anuj20.g@samsung.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

block: don't update BLK_FEAT_POLL in __blk_mq_update_nr_hw_queues [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Fri Jan 10 06:47:12 2025 +0100

    block: don't update BLK_FEAT_POLL in __blk_mq_update_nr_hw_queues
    
    [ Upstream commit d432c817c21a48c3baaa0d28e4d3e74b6aa238a0 ]
    
    When __blk_mq_update_nr_hw_queues changes the number of tag sets, it
    might have to disable poll queues.  Currently it does so by adjusting
    the BLK_FEAT_POLL, which is a bit against the intent of features that
    describe hardware / driver capabilities, but more importantly causes
    nasty lock order problems with the broadly held freeze when updating the
    number of hardware queues and the limits lock.  Fix this by leaving
    BLK_FEAT_POLL alone, and instead check for the number of poll queues in
    the bio submission and poll handlers.  While this adds extra work to the
    fast path, the variables are in cache lines used by these operations
    anyway, so it should be cheap enough.
    
    Fixes: 8023e144f9d6 ("block: move the poll flag to queue_limits")
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
    Link: https://lore.kernel.org/r/20250110054726.1499538-5-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

block: retry call probe after request_module in blk_request_module [+ + +]
Author: Yang Erkun <yangerkun@huawei.com>
Date:   Mon Dec 9 19:04:35 2024 +0800

    block: retry call probe after request_module in blk_request_module
    
    [ Upstream commit 457ef47c08d2979f3e59ce66267485c3faed70c8 ]
    
    Set kernel config:
    
     CONFIG_BLK_DEV_LOOP=m
     CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
    
    Do latter:
    
     mknod loop0 b 7 0
     exec 4<> loop0
    
    Before commit e418de3abcda ("block: switch gendisk lookup to a simple
    xarray"), lookup_gendisk will first use base_probe to load module loop,
    and then the retry will call loop_probe to prepare the loop disk. Finally
    open for this disk will success. However, after this commit, we lose the
    retry logic, and open will fail with ENXIO. Block device autoloading is
    deprecated and will be removed soon, but maybe we should keep open success
    until we really remove it. So, give a retry to fix it.
    
    Fixes: e418de3abcda ("block: switch gendisk lookup to a simple xarray")
    Suggested-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Yang Erkun <yangerkun@huawei.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20241209110435.3670985-1-yangerkun@huaweicloud.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Bluetooth: btbcm: Fix NULL deref in btbcm_get_board_name() [+ + +]
Author: Charles Han <hanchunchao@inspur.com>
Date:   Fri Dec 27 17:20:46 2024 +0800

    Bluetooth: btbcm: Fix NULL deref in btbcm_get_board_name()
    
    [ Upstream commit b88655bc6593c6a7fdc1248b212d17e581c4334e ]
    
    devm_kstrdup() can return a NULL pointer on failure,but this
    returned value in btbcm_get_board_name() is not checked.
    Add NULL check in btbcm_get_board_name(), to handle kernel NULL
    pointer dereference error.
    
    Fixes: f9183eaad915 ("Bluetooth: btbcm: Use devm_kstrdup()")
    Signed-off-by: Charles Han <hanchunchao@inspur.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: btnxpuart: Fix glitches seen in dual A2DP streaming [+ + +]
Author: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
Date:   Mon Jan 20 19:49:46 2025 +0530

    Bluetooth: btnxpuart: Fix glitches seen in dual A2DP streaming
    
    [ Upstream commit 7de119bb79a63f6a1959b83117a98734914fb0b0 ]
    
    This fixes a regression caused by previous commit for fixing truncated
    ACL data, which is causing some intermittent glitches when running two
    A2DP streams.
    
    serdev_device_write_buf() is the root cause of the glitch, which is
    reverted, and the TX work will continue to write until the queue is empty.
    
    This change fixes both issues. No A2DP streaming glitches or truncated
    ACL data issue observed.
    
    Fixes: 8023dd220425 ("Bluetooth: btnxpuart: Fix driver sending truncated data")
    Fixes: 689ca16e5232 ("Bluetooth: NXP: Add protocol support for NXP Bluetooth chipsets")
    Signed-off-by: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: btrtl: check for NULL in btrtl_setup_realtek() [+ + +]
Author: Max Chou <max.chou@realtek.com>
Date:   Tue Dec 31 14:57:19 2024 +0800

    Bluetooth: btrtl: check for NULL in btrtl_setup_realtek()
    
    [ Upstream commit 3c15082f3567032d196e8760753373332508c2ca ]
    
    If insert an USB dongle which chip is not maintained in ic_id_table, it
    will hit the NULL point accessed. Add a null point check to avoid the
    Kernel Oops.
    
    Fixes: b39910bb54d9 ("Bluetooth: Populate hci_set_hw_info for Intel and Realtek")
    Reviewed-by: Alex Lu <alex_lu@realsil.com.cn>
    Signed-off-by: Max Chou <max.chou@realtek.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: btusb: mediatek: Add locks for usb_driver_claim_interface() [+ + +]
Author: Douglas Anderson <dianders@chromium.org>
Date:   Wed Jan 15 19:36:36 2025 -0800

    Bluetooth: btusb: mediatek: Add locks for usb_driver_claim_interface()
    
    [ Upstream commit e9087e828827e5a5c85e124ce77503f2b81c3491 ]
    
    The documentation for usb_driver_claim_interface() says that "the
    device lock" is needed when the function is called from places other
    than probe(). This appears to be the lock for the USB interface
    device. The Mediatek btusb code gets called via this path:
    
      Workqueue: hci0 hci_power_on [bluetooth]
      Call trace:
       usb_driver_claim_interface
       btusb_mtk_claim_iso_intf
       btusb_mtk_setup
       hci_dev_open_sync
       hci_power_on
       process_scheduled_works
       worker_thread
       kthread
    
    With the above call trace the device lock hasn't been claimed. Claim
    it.
    
    Without this fix, we'd sometimes see the error "Failed to claim iso
    interface". Sometimes we'd even see worse errors, like a NULL pointer
    dereference (where `intf->dev.driver` was NULL) with a trace like:
    
      Call trace:
       usb_suspend_both
       usb_runtime_suspend
       __rpm_callback
       rpm_suspend
       pm_runtime_work
       process_scheduled_works
    
    Both errors appear to be fixed with the proper locking.
    
    Fixes: ceac1cb0259d ("Bluetooth: btusb: mediatek: add ISO data transmission functions")
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpf: bpf_local_storage: Always use bpf_mem_alloc in PREEMPT_RT [+ + +]
Author: Martin KaFai Lau <martin.lau@kernel.org>
Date:   Wed Dec 18 11:30:00 2024 -0800

    bpf: bpf_local_storage: Always use bpf_mem_alloc in PREEMPT_RT
    
    [ Upstream commit 8eef6ac4d70eb1f0099fff93321d90ce8fa49ee1 ]
    
    In PREEMPT_RT, kmalloc(GFP_ATOMIC) is still not safe in non preemptible
    context. bpf_mem_alloc must be used in PREEMPT_RT. This patch is
    to enforce bpf_mem_alloc in the bpf_local_storage when CONFIG_PREEMPT_RT
    is enabled.
    
    [   35.118559] BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
    [   35.118566] in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 1832, name: test_progs
    [   35.118569] preempt_count: 1, expected: 0
    [   35.118571] RCU nest depth: 1, expected: 1
    [   35.118577] INFO: lockdep is turned off.
        ...
    [   35.118647]  __might_resched+0x433/0x5b0
    [   35.118677]  rt_spin_lock+0xc3/0x290
    [   35.118700]  ___slab_alloc+0x72/0xc40
    [   35.118723]  __kmalloc_noprof+0x13f/0x4e0
    [   35.118732]  bpf_map_kzalloc+0xe5/0x220
    [   35.118740]  bpf_selem_alloc+0x1d2/0x7b0
    [   35.118755]  bpf_local_storage_update+0x2fa/0x8b0
    [   35.118784]  bpf_sk_storage_get_tracing+0x15a/0x1d0
    [   35.118791]  bpf_prog_9a118d86fca78ebb_trace_inet_sock_set_state+0x44/0x66
    [   35.118795]  bpf_trace_run3+0x222/0x400
    [   35.118820]  __bpf_trace_inet_sock_set_state+0x11/0x20
    [   35.118824]  trace_inet_sock_set_state+0x112/0x130
    [   35.118830]  inet_sk_state_store+0x41/0x90
    [   35.118836]  tcp_set_state+0x3b3/0x640
    
    There is no need to adjust the gfp_flags passing to the
    bpf_mem_cache_alloc_flags() which only honors the GFP_KERNEL.
    The verifier has ensured GFP_KERNEL is passed only in sleepable context.
    
    It has been an old issue since the first introduction of the
    bpf_local_storage ~5 years ago, so this patch targets the bpf-next.
    
    bpf_mem_alloc is needed to solve it, so the Fixes tag is set
    to the commit when bpf_mem_alloc was first used in the bpf_local_storage.
    
    Fixes: 08a7ce384e33 ("bpf: Use bpf_mem_cache_alloc/free in bpf_local_storage_elem")
    Reported-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
    Link: https://lore.kernel.org/r/20241218193000.2084281-1-martin.lau@linux.dev
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bpf: Cancel the running bpf_timer through kworker for PREEMPT_RT [+ + +]
Author: Hou Tao <houtao1@huawei.com>
Date:   Fri Jan 17 18:18:15 2025 +0800

    bpf: Cancel the running bpf_timer through kworker for PREEMPT_RT
    
    [ Upstream commit 58f038e6d209d2dd862fcf5de55407855856794d ]
    
    During the update procedure, when overwrite element in a pre-allocated
    htab, the freeing of old_element is protected by the bucket lock. The
    reason why the bucket lock is necessary is that the old_element has
    already been stashed in htab->extra_elems after alloc_htab_elem()
    returns. If freeing the old_element after the bucket lock is unlocked,
    the stashed element may be reused by concurrent update procedure and the
    freeing of old_element will run concurrently with the reuse of the
    old_element. However, the invocation of check_and_free_fields() may
    acquire a spin-lock which violates the lockdep rule because its caller
    has already held a raw-spin-lock (bucket lock). The following warning
    will be reported when such race happens:
    
      BUG: scheduling while atomic: test_progs/676/0x00000003
      3 locks held by test_progs/676:
      #0: ffffffff864b0240 (rcu_read_lock_trace){....}-{0:0}, at: bpf_prog_test_run_syscall+0x2c0/0x830
      #1: ffff88810e961188 (&htab->lockdep_key){....}-{2:2}, at: htab_map_update_elem+0x306/0x1500
      #2: ffff8881f4eac1b8 (&base->softirq_expiry_lock){....}-{2:2}, at: hrtimer_cancel_wait_running+0xe9/0x1b0
      Modules linked in: bpf_testmod(O)
      Preemption disabled at:
      [<ffffffff817837a3>] htab_map_update_elem+0x293/0x1500
      CPU: 0 UID: 0 PID: 676 Comm: test_progs Tainted: G ... 6.12.0+ #11
      Tainted: [W]=WARN, [O]=OOT_MODULE
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996)...
      Call Trace:
      <TASK>
      dump_stack_lvl+0x57/0x70
      dump_stack+0x10/0x20
      __schedule_bug+0x120/0x170
      __schedule+0x300c/0x4800
      schedule_rtlock+0x37/0x60
      rtlock_slowlock_locked+0x6d9/0x54c0
      rt_spin_lock+0x168/0x230
      hrtimer_cancel_wait_running+0xe9/0x1b0
      hrtimer_cancel+0x24/0x30
      bpf_timer_delete_work+0x1d/0x40
      bpf_timer_cancel_and_free+0x5e/0x80
      bpf_obj_free_fields+0x262/0x4a0
      check_and_free_fields+0x1d0/0x280
      htab_map_update_elem+0x7fc/0x1500
      bpf_prog_9f90bc20768e0cb9_overwrite_cb+0x3f/0x43
      bpf_prog_ea601c4649694dbd_overwrite_timer+0x5d/0x7e
      bpf_prog_test_run_syscall+0x322/0x830
      __sys_bpf+0x135d/0x3ca0
      __x64_sys_bpf+0x75/0xb0
      x64_sys_call+0x1b5/0xa10
      do_syscall_64+0x3b/0xc0
      entry_SYSCALL_64_after_hwframe+0x4b/0x53
      ...
      </TASK>
    
    It seems feasible to break the reuse and refill of per-cpu extra_elems
    into two independent parts: reuse the per-cpu extra_elems with bucket
    lock being held and refill the old_element as per-cpu extra_elems after
    the bucket lock is unlocked. However, it will make the concurrent
    overwrite procedures on the same CPU return unexpected -E2BIG error when
    the map is full.
    
    Therefore, the patch fixes the lock problem by breaking the cancelling
    of bpf_timer into two steps for PREEMPT_RT:
    1) use hrtimer_try_to_cancel() and check its return value
    2) if the timer is running, use hrtimer_cancel() through a kworker to
       cancel it again
    Considering that the current implementation of hrtimer_cancel() will try
    to acquire a being held softirq_expiry_lock when the current timer is
    running, these steps above are reasonable. However, it also has
    downside. When the timer is running, the cancelling of the timer is
    delayed when releasing the last map uref. The delay is also fixable
    (e.g., break the cancelling of bpf timer into two parts: one part in
    locked scope, another one in unlocked scope), it can be revised later if
    necessary.
    
    It is a bit hard to decide the right fix tag. One reason is that the
    problem depends on PREEMPT_RT which is enabled in v6.12. Considering the
    softirq_expiry_lock lock exists since v5.4 and bpf_timer is introduced
    in v5.15, the bpf_timer commit is used in the fixes tag and an extra
    depends-on tag is added to state the dependency on PREEMPT_RT.
    
    Fixes: b00628b1c7d5 ("bpf: Introduce bpf timers.")
    Depends-on: v6.12+ with PREEMPT_RT enabled
    Reported-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Closes: https://lore.kernel.org/bpf/20241106084527.4gPrMnHt@linutronix.de
    Signed-off-by: Hou Tao <houtao1@huawei.com>
    Reviewed-by: Toke Høiland-Jørgensen <toke@kernel.org>
    Link: https://lore.kernel.org/r/20250117101816.2101857-5-houtao@huaweicloud.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bpf: Reject struct_ops registration that uses module ptr and the module btf_id is missing [+ + +]
Author: Martin KaFai Lau <martin.lau@kernel.org>
Date:   Fri Dec 20 12:18:18 2024 -0800

    bpf: Reject struct_ops registration that uses module ptr and the module btf_id is missing
    
    [ Upstream commit 96ea081ed52bf077cad6d00153b6fba68e510767 ]
    
    There is a UAF report in the bpf_struct_ops when CONFIG_MODULES=n.
    In particular, the report is on tcp_congestion_ops that has
    a "struct module *owner" member.
    
    For struct_ops that has a "struct module *owner" member,
    it can be extended either by the regular kernel module or
    by the bpf_struct_ops. bpf_try_module_get() will be used
    to do the refcounting and different refcount is done
    based on the owner pointer. When CONFIG_MODULES=n,
    the btf_id of the "struct module" is missing:
    
    WARN: resolve_btfids: unresolved symbol module
    
    Thus, the bpf_try_module_get() cannot do the correct refcounting.
    
    Not all subsystem's struct_ops requires the "struct module *owner" member.
    e.g. the recent sched_ext_ops.
    
    This patch is to disable bpf_struct_ops registration if
    the struct_ops has the "struct module *" member and the
    "struct module" btf_id is missing. The btf_type_is_fwd() helper
    is moved to the btf.h header file for this test.
    
    This has happened since the beginning of bpf_struct_ops which has gone
    through many changes. The Fixes tag is set to a recent commit that this
    patch can apply cleanly. Considering CONFIG_MODULES=n is not
    common and the age of the issue, targeting for bpf-next also.
    
    Fixes: 1611603537a4 ("bpf: Create argument information for nullable arguments.")
    Reported-by: Robert Morris <rtm@csail.mit.edu>
    Closes: https://lore.kernel.org/bpf/74665.1733669976@localhost/
    Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
    Tested-by: Eduard Zingerman <eddyz87@gmail.com>
    Acked-by: Eduard Zingerman <eddyz87@gmail.com>
    Link: https://lore.kernel.org/r/20241220201818.127152-1-martin.lau@linux.dev
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bpf: Send signals asynchronously if !preemptible [+ + +]
Author: Puranjay Mohan <puranjay@kernel.org>
Date:   Wed Jan 15 10:36:47 2025 +0000

    bpf: Send signals asynchronously if !preemptible
    
    [ Upstream commit 87c544108b612512b254c8f79aa5c0a8546e2cc4 ]
    
    BPF programs can execute in all kinds of contexts and when a program
    running in a non-preemptible context uses the bpf_send_signal() kfunc,
    it will cause issues because this kfunc can sleep.
    Change `irqs_disabled()` to `!preemptible()`.
    
    Reported-by: syzbot+97da3d7e0112d59971de@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/67486b09.050a0220.253251.0084.GAE@google.com/
    Fixes: 1bc7896e9ef4 ("bpf: Fix deadlock with rq_lock in bpf_send_signal()")
    Signed-off-by: Puranjay Mohan <puranjay@kernel.org>
    Acked-by: Yonghong Song <yonghong.song@linux.dev>
    Link: https://lore.kernel.org/r/20250115103647.38487-1-puranjay@kernel.org
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bpf: tcp: Mark bpf_load_hdr_opt() arg2 as read-write [+ + +]
Author: Daniel Xu <dxu@dxuuu.xyz>
Date:   Tue Jan 14 13:28:43 2025 -0700

    bpf: tcp: Mark bpf_load_hdr_opt() arg2 as read-write
    
    [ Upstream commit 8ac412a3361173e3000b16167af3d1f6f90af613 ]
    
    MEM_WRITE attribute is defined as: "Non-presence of MEM_WRITE means that
    MEM is only being read". bpf_load_hdr_opt() both reads and writes from
    its arg2 - void *search_res.
    
    This matters a lot for the next commit where we more precisely track
    stack accesses. Without this annotation, the verifier will make false
    assumptions about the contents of memory written to by helpers and
    possibly prune valid branches.
    
    Fixes: 6fad274f06f0 ("bpf: Add MEM_WRITE attribute")
    Acked-by: Martin KaFai Lau <martin.lau@kernel.org>
    Signed-off-by: Daniel Xu <dxu@dxuuu.xyz>
    Link: https://lore.kernel.org/r/730e45f8c39be2a5f3d8c4406cceca9d574cbf14.1736886479.git.dxu@dxuuu.xyz
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bpf: Use refcount_t instead of atomic_t for mmap_count [+ + +]
Author: Pei Xiao <xiaopei01@kylinos.cn>
Date:   Mon Dec 30 15:16:55 2024 +0800

    bpf: Use refcount_t instead of atomic_t for mmap_count
    
    [ Upstream commit dfa94ce54f4139c893b9c4ec17df6f7c6a7515d3 ]
    
    Use an API that resembles more the actual use of mmap_count.
    
    Found by cocci:
    kernel/bpf/arena.c:245:6-25: WARNING: atomic_dec_and_test variation before object free at line 249.
    
    Fixes: b90d77e5fd78 ("bpf: Fix remap of arena.")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202412292037.LXlYSHKl-lkp@intel.com/
    Signed-off-by: Pei Xiao <xiaopei01@kylinos.cn>
    Link: https://lore.kernel.org/r/6ecce439a6bc81adb85d5080908ea8959b792a50.1735542814.git.xiaopei01@kylinos.cn
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
btrfs: do proper folio cleanup when run_delalloc_nocow() failed [+ + +]
Author: Qu Wenruo <wqu@suse.com>
Date:   Thu Dec 12 16:43:59 2024 +1030

    btrfs: do proper folio cleanup when run_delalloc_nocow() failed
    
    commit c2b47df81c8e20a8e8cd94f0d7df211137ae94ed upstream.
    
    [BUG]
    With CONFIG_DEBUG_VM set, test case generic/476 has some chance to crash
    with the following VM_BUG_ON_FOLIO():
    
      BTRFS error (device dm-3): cow_file_range failed, start 1146880 end 1253375 len 106496 ret -28
      BTRFS error (device dm-3): run_delalloc_nocow failed, start 1146880 end 1253375 len 106496 ret -28
      page: refcount:4 mapcount:0 mapping:00000000592787cc index:0x12 pfn:0x10664
      aops:btrfs_aops [btrfs] ino:101 dentry name(?):"f1774"
      flags: 0x2fffff80004028(uptodate|lru|private|node=0|zone=2|lastcpupid=0xfffff)
      page dumped because: VM_BUG_ON_FOLIO(!folio_test_locked(folio))
      ------------[ cut here ]------------
      kernel BUG at mm/page-writeback.c:2992!
      Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
      CPU: 2 UID: 0 PID: 3943513 Comm: kworker/u24:15 Tainted: G           OE      6.12.0-rc7-custom+ #87
      Tainted: [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
      Hardware name: QEMU KVM Virtual Machine, BIOS unknown 2/2/2022
      Workqueue: events_unbound btrfs_async_reclaim_data_space [btrfs]
      pc : folio_clear_dirty_for_io+0x128/0x258
      lr : folio_clear_dirty_for_io+0x128/0x258
      Call trace:
       folio_clear_dirty_for_io+0x128/0x258
       btrfs_folio_clamp_clear_dirty+0x80/0xd0 [btrfs]
       __process_folios_contig+0x154/0x268 [btrfs]
       extent_clear_unlock_delalloc+0x5c/0x80 [btrfs]
       run_delalloc_nocow+0x5f8/0x760 [btrfs]
       btrfs_run_delalloc_range+0xa8/0x220 [btrfs]
       writepage_delalloc+0x230/0x4c8 [btrfs]
       extent_writepage+0xb8/0x358 [btrfs]
       extent_write_cache_pages+0x21c/0x4e8 [btrfs]
       btrfs_writepages+0x94/0x150 [btrfs]
       do_writepages+0x74/0x190
       filemap_fdatawrite_wbc+0x88/0xc8
       start_delalloc_inodes+0x178/0x3a8 [btrfs]
       btrfs_start_delalloc_roots+0x174/0x280 [btrfs]
       shrink_delalloc+0x114/0x280 [btrfs]
       flush_space+0x250/0x2f8 [btrfs]
       btrfs_async_reclaim_data_space+0x180/0x228 [btrfs]
       process_one_work+0x164/0x408
       worker_thread+0x25c/0x388
       kthread+0x100/0x118
       ret_from_fork+0x10/0x20
      Code: 910a8021 a90363f7 a9046bf9 94012379 (d4210000)
      ---[ end trace 0000000000000000 ]---
    
    [CAUSE]
    The first two lines of extra debug messages show the problem is caused
    by the error handling of run_delalloc_nocow().
    
    E.g. we have the following dirtied range (4K blocksize 4K page size):
    
        0                 16K                  32K
        |//////////////////////////////////////|
        |  Pre-allocated  |
    
    And the range [0, 16K) has a preallocated extent.
    
    - Enter run_delalloc_nocow() for range [0, 16K)
      Which found range [0, 16K) is preallocated, can do the proper NOCOW
      write.
    
    - Enter fallback_to_fow() for range [16K, 32K)
      Since the range [16K, 32K) is not backed by preallocated extent, we
      have to go COW.
    
    - cow_file_range() failed for range [16K, 32K)
      So cow_file_range() will do the clean up by clearing folio dirty,
      unlock the folios.
    
      Now the folios in range [16K, 32K) is unlocked.
    
    - Enter extent_clear_unlock_delalloc() from run_delalloc_nocow()
      Which is called with PAGE_START_WRITEBACK to start page writeback.
      But folios can only be marked writeback when it's properly locked,
      thus this triggered the VM_BUG_ON_FOLIO().
    
    Furthermore there is another hidden but common bug that
    run_delalloc_nocow() is not clearing the folio dirty flags in its error
    handling path.
    This is the common bug shared between run_delalloc_nocow() and
    cow_file_range().
    
    [FIX]
    - Clear folio dirty for range [@start, @cur_offset)
      Introduce a helper, cleanup_dirty_folios(), which
      will find and lock the folio in the range, clear the dirty flag and
      start/end the writeback, with the extra handling for the
      @locked_folio.
    
    - Introduce a helper to clear folio dirty, start and end writeback
    
    - Introduce a helper to record the last failed COW range end
      This is to trace which range we should skip, to avoid double
      unlocking.
    
    - Skip the failed COW range for the error handling
    
    CC: stable@vger.kernel.org
    Reviewed-by: Boris Burkov <boris@bur.io>
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: improve the warning and error message for btrfs_remove_qgroup() [+ + +]
Author: Qu Wenruo <wqu@suse.com>
Date:   Mon Nov 11 07:29:07 2024 +1030

    btrfs: improve the warning and error message for btrfs_remove_qgroup()
    
    [ Upstream commit c0def46dec9c547679a25fe7552c4bcbec0b0dd2 ]
    
    [WARNING]
    There are several warnings about the recently introduced qgroup
    auto-removal that it triggers WARN_ON() for the non-zero rfer/excl
    numbers, e.g:
    
     ------------[ cut here ]------------
     WARNING: CPU: 67 PID: 2882 at fs/btrfs/qgroup.c:1854 btrfs_remove_qgroup+0x3df/0x450
     CPU: 67 UID: 0 PID: 2882 Comm: btrfs-cleaner Kdump: loaded Not tainted 6.11.6-300.fc41.x86_64 #1
     RIP: 0010:btrfs_remove_qgroup+0x3df/0x450
     Call Trace:
      <TASK>
      btrfs_qgroup_cleanup_dropped_subvolume+0x97/0xc0
      btrfs_drop_snapshot+0x44e/0xa80
      btrfs_clean_one_deleted_snapshot+0xc3/0x110
      cleaner_kthread+0xd8/0x130
      kthread+0xd2/0x100
      ret_from_fork+0x34/0x50
      ret_from_fork_asm+0x1a/0x30
      </TASK>
     ---[ end trace 0000000000000000 ]---
     BTRFS warning (device sda): to be deleted qgroup 0/319 has non-zero numbers, rfer 258478080 rfer_cmpr 258478080 excl 0 excl_cmpr 0
    
    [CAUSE]
    Although the root cause is still unclear, as if qgroup is consistent a
    fully dropped subvolume (with extra transaction committed) should lead
    to all zero numbers for the qgroup.
    
    My current guess is the subvolume drop triggered the new subtree drop
    threshold thus marked qgroup inconsistent, then rescan cleared it but
    some corner case is not properly handled during subvolume dropping.
    
    But at least for this particular case, since it's only the rfer/excl not
    properly reset to 0, and qgroup is already marked inconsistent, there is
    nothing to be worried for the end users.
    
    The user space tool utilizing qgroup would queue a rescan to handle
    everything, so the kernel wanring is a little overkilled.
    
    [ENHANCEMENT]
    Enhance the warning inside btrfs_remove_qgroup() by:
    
    - Only do WARN() if CONFIG_BTRFS_DEBUG is enabled
      As explained the kernel can handle inconsistent qgroups by simply do a
      rescan, there is nothing to bother the end users.
    
    - Treat the reserved space leak the same as non-zero numbers
      By outputting the values and trigger a WARN() if it's a debug build.
      So far I haven't experienced any case related to reserved space so I
      hope we will never need to bother them.
    
    Fixes: 839d6ea4f86d ("btrfs: automatically remove the subvolume qgroup")
    Link: https://github.com/kdave/btrfs-progs/issues/922
    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: Sasha Levin <sashal@kernel.org>

btrfs: output the reason for open_ctree() failure [+ + +]
Author: Qu Wenruo <wqu@suse.com>
Date:   Tue Dec 10 15:23:06 2024 +1030

    btrfs: output the reason for open_ctree() failure
    
    commit d0f038104fa37380e2a725e669508e43d0c503e9 upstream.
    
    There is a recent ML report that mounting a large fs backed by hardware
    RAID56 controller (with one device missing) took too much time, and
    systemd seems to kill the mount attempt.
    
    In that case, the only error message is:
    
      BTRFS error (device sdj): open_ctree failed
    
    There is no reason on why the failure happened, making it very hard to
    understand the reason.
    
    At least output the error number (in the particular case it should be
    -EINTR) to provide some clue.
    
    Link: https://lore.kernel.org/linux-btrfs/9b9c4d2810abcca2f9f76e32220ed9a90febb235.camel@scientia.org/
    Reported-by: Christoph Anton Mitterer <calestyo@scientia.org>
    Cc: stable@vger.kernel.org
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    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: subpage: fix the bitmap dump of the locked flags [+ + +]
Author: Qu Wenruo <wqu@suse.com>
Date:   Thu Dec 12 16:44:00 2024 +1030

    btrfs: subpage: fix the bitmap dump of the locked flags
    
    [ Upstream commit 396294d1afee65a203d6cabd843d0782e5d7388e ]
    
    We're dumping the locked bitmap into the @checked_bitmap variable,
    printing incorrect values during debug.
    
    Thankfully even during my development I haven't hit a case where I need
    to dump the locked bitmap.  But for the sake of consistency, fix it by
    dupping the locked bitmap into @locked_bitmap variable for output.
    
    Fixes: 75258f20fb70 ("btrfs: subpage: dump extra subpage bitmaps for debug")
    Reviewed-by: Boris Burkov <boris@bur.io>
    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: Sasha Levin <sashal@kernel.org>

 
cifs: Fix getting and setting SACLs over SMB1 [+ + +]
Author: Pali Rohár <pali@kernel.org>
Date:   Mon Oct 14 13:43:23 2024 +0200

    cifs: Fix getting and setting SACLs over SMB1
    
    [ Upstream commit 8b19dfb34d17e77a0809d433cc128b779282131b ]
    
    SMB1 callback get_cifs_acl_by_fid() currently ignores its last argument and
    therefore ignores request for SACL_SECINFO. Fix this issue by correctly
    propagating info argument from get_cifs_acl() and get_cifs_acl_by_fid() to
    CIFSSMBGetCIFSACL() function and pass SACL_SECINFO when requested.
    
    For accessing SACLs it is needed to open object with SYSTEM_SECURITY
    access. Pass this flag when trying to get or set SACLs.
    
    Same logic is in the SMB2+ code path.
    
    This change fixes getting and setting of "system.cifs_ntsd_full" and
    "system.smb3_ntsd_full" xattrs over SMB1 as currently it silentely ignored
    SACL part of passed xattr buffer.
    
    Fixes: 3970acf7ddb9 ("SMB3: Add support for getting and setting SACLs")
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cifs: Use cifs_autodisable_serverino() for disabling CIFS_MOUNT_SERVER_INUM in readdir.c [+ + +]
Author: Pali Rohár <pali@kernel.org>
Date:   Thu Jan 2 21:38:48 2025 +0100

    cifs: Use cifs_autodisable_serverino() for disabling CIFS_MOUNT_SERVER_INUM in readdir.c
    
    [ Upstream commit 015683d4ed0d23698c71f2194f09bd17dbfad044 ]
    
    In all other places is used function cifs_autodisable_serverino() for
    disabling CIFS_MOUNT_SERVER_INUM mount flag. So use is also in readir.c
    _initiate_cifs_search() function. Benefit of cifs_autodisable_serverino()
    is that it also prints dmesg message that server inode numbers are being
    disabled.
    
    Fixes: ec06aedd4454 ("cifs: clean up handling when server doesn't consistently support inode numbers")
    Fixes: f534dc994397 ("cifs: clear server inode number flag while autodisabling")
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cifs: Validate EAs for WSL reparse points [+ + +]
Author: Pali Rohár <pali@kernel.org>
Date:   Thu Dec 26 15:20:39 2024 +0100

    cifs: Validate EAs for WSL reparse points
    
    [ Upstream commit ef201e8759d20bf82b5943101147072de12bc524 ]
    
    Major and minor numbers for char and block devices are mandatory for stat.
    So check that the WSL EA $LXDEV is present for WSL CHR and BLK reparse
    points.
    
    WSL reparse point tag determinate type of the file. But file type is
    present also in the WSL EA $LXMOD. So check that both file types are same.
    
    Fixes: 78e26bec4d6d ("smb: client: parse uid, gid, mode and dev from WSL reparse points")
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
clk: analogbits: Fix incorrect calculation of vco rate delta [+ + +]
Author: Bo Gan <ganboing@gmail.com>
Date:   Thu Aug 29 23:16:39 2024 -0700

    clk: analogbits: Fix incorrect calculation of vco rate delta
    
    [ Upstream commit d7f12857f095ef38523399d47e68787b357232f6 ]
    
    In wrpll_configure_for_rate() we try to determine the best PLL
    configuration for a target rate. However, in the loop where we try
    values of R, we should compare the derived `vco` with `target_vco_rate`.
    However, we were in fact comparing it with `target_rate`, which is
    actually after Q shift. This is incorrect, and sometimes can result in
    suboptimal clock rates. Fix it.
    
    Fixes: 7b9487a9a5c4 ("clk: analogbits: add Wide-Range PLL library")
    Signed-off-by: Bo Gan <ganboing@gmail.com>
    Link: https://lore.kernel.org/r/20240830061639.2316-1-ganboing@gmail.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: fix an OF node reference leak in of_clk_get_parent_name() [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Tue Dec 10 22:09:12 2024 +0900

    clk: fix an OF node reference leak in of_clk_get_parent_name()
    
    [ Upstream commit 28fa3291cad1c201967ef93edc6e7f8ccc9afbc0 ]
    
    Current implementation of of_clk_get_parent_name() leaks an OF node
    reference on error path. Add a of_node_put() call before returning an
    error.
    
    This bug was found by an experimental static analysis tool that I am
    developing.
    
    Fixes: 8da411cc1964 ("clk: let of_clk_get_parent_name() fail for invalid clock-indices")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Link: https://lore.kernel.org/r/20241210130913.3615205-1-joe@pf.is.s.u-tokyo.ac.jp
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: imx8mp: Fix clkout1/2 support [+ + +]
Author: Marek Vasut <marex@denx.de>
Date:   Tue Nov 12 02:36:54 2024 +0100

    clk: imx8mp: Fix clkout1/2 support
    
    [ Upstream commit a9b7c84d22fb1687d63ca2a386773015cf59436b ]
    
    The CLKOUTn may be fed from PLL1/2/3, but the PLL1/2/3 has to be enabled
    first by setting PLL_CLKE bit 11 in CCM_ANALOG_SYS_PLLn_GEN_CTRL register.
    The CCM_ANALOG_SYS_PLLn_GEN_CTRL bit 11 is modeled by plln_out clock. Fix
    the clock tree and place the clkout1/2 under plln_sel instead of plain plln
    to let the clock subsystem correctly control the bit 11 and enable the PLL
    in case the CLKOUTn is supplied by PLL1/2/3.
    
    Fixes: 43896f56b59e ("clk: imx8mp: add clkout1/2 support")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Peng Fan <peng.fan@nxp.com>
    Link: https://lore.kernel.org/r/20241112013718.333771-1-marex@denx.de
    Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: imx93: Add IMX93_CLK_SPDIF_IPG clock [+ + +]
Author: Shengjiu Wang <shengjiu.wang@nxp.com>
Date:   Tue Nov 19 09:58:04 2024 +0800

    clk: imx93: Add IMX93_CLK_SPDIF_IPG clock
    
    [ Upstream commit 6a7853544482e2336b5b8bb9a4b964f9d687f290 ]
    
    Split IMX93_CLK_SPDIF_IPG from IMX93_CLK_SPDIF_GATE
    because the IMX93_CLK_SPDIF_GATE controls the gate
    of IPG clock and root clock. Without this change,
    disabling IMX93_CLK_SPDIF_GATE would also disable
    the IPG clock, causing register access failures.
    
    Fixes: 1c4a4f7362fd ("arm64: dts: imx93: Add audio device nodes")
    Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Link: https://lore.kernel.org/r/20241119015805.3840606-3-shengjiu.wang@nxp.com
    Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: imx93: Move IMX93_CLK_END macro to clk driver [+ + +]
Author: Pengfei Li <pengfei.li_1@nxp.com>
Date:   Wed Oct 23 11:46:47 2024 -0700

    clk: imx93: Move IMX93_CLK_END macro to clk driver
    
    [ Upstream commit 0af18ba60752e8a4ba34404c1d9a4a799da690f5 ]
    
    IMX93_CLK_END was previously defined in imx93-clock.h to indicate
    the number of clocks. However, it is not part of the ABI. For starters
    it does no really appear in DTS. But what's more important - new clocks
    are described later, which contradicts this define in binding header.
    So move this macro to clock driver.
    
    Signed-off-by: Pengfei Li <pengfei.li_1@nxp.com>
    Reviewed-by: Abel Vesa <abel.vesa@linaro.org>
    Link: https://lore.kernel.org/r/20241023184651.381265-2-pengfei.li_1@nxp.com
    Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
    Stable-dep-of: 6a7853544482 ("clk: imx93: Add IMX93_CLK_SPDIF_IPG clock")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: imx: add i.MX91 clk [+ + +]
Author: Pengfei Li <pengfei.li_1@nxp.com>
Date:   Wed Oct 23 11:46:50 2024 -0700

    clk: imx: add i.MX91 clk
    
    [ Upstream commit a27bfff88dd2e1279c858311bc57ce4deb44f684 ]
    
    Reuse i.MX93 clk driver for i.MX91, because i.MX91 reuses the
    Clock Control Module from i.MX93, with only a few clocks removed
    and a few clocks added.
    
    For clocks specific to i.MX93 use PLAT_IMX93 to flag them, for
    clocks specific to i.MX91, use PLAT_IMX91 to flag them. Others
    are shared by both.
    
    Signed-off-by: Pengfei Li <pengfei.li_1@nxp.com>
    Reviewed-by: Peng Fan <peng.fan@nxp.com>
    Link: https://lore.kernel.org/r/20241023184651.381265-5-pengfei.li_1@nxp.com
    Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
    Stable-dep-of: 6a7853544482 ("clk: imx93: Add IMX93_CLK_SPDIF_IPG clock")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: imx: Apply some clks only for i.MX93 [+ + +]
Author: Peng Fan <peng.fan@nxp.com>
Date:   Wed Dec 25 08:14:43 2024 +0800

    clk: imx: Apply some clks only for i.MX93
    
    [ Upstream commit 48806be086360846bb308c5ee21fcab8405a3da7 ]
    
    Enable the LVDS gate, MIPI DSI, PXP, FLEXIO and MU only for i.MX93,
    because i.MX91 does not support them.
    
    Update enet clk entry format to align with others.
    
    Fixes: a27bfff88dd2 ("clk: imx: add i.MX91 clk")
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Reviewed-by: Abel Vesa <abel.vesa@linaro.org>
    Link: https://lore.kernel.org/r/20241225001443.883131-1-peng.fan@oss.nxp.com
    Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: qcom: camcc-x1e80100: Set titan_top_gdsc as the parent GDSC of subordinate GDSCs [+ + +]
Author: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Date:   Fri Dec 27 13:23:03 2024 +0000

    clk: qcom: camcc-x1e80100: Set titan_top_gdsc as the parent GDSC of subordinate GDSCs
    
    [ Upstream commit d9377941f2732d2f6f53ec9520321a19c687717a ]
    
    The Titan TOP GDSC is the parent GDSC for all other GDSCs in the CAMCC
    block. None of the subordinate blocks will switch on without the parent
    GDSC switched on.
    
    Fixes: 76126a5129b5 ("clk: qcom: Add camcc clock driver for x1e80100")
    Acked-by: Rajendra Nayak <quic_rjendra@quicinc.com>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
    Link: https://lore.kernel.org/r/20241227-b4-linux-next-24-12-16-titan-top-gdsc-v1-1-c96ef62fc307@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: qcom: gcc-sdm845: Do not use shared clk_ops for QUPs [+ + +]
Author: Amit Pundir <amit.pundir@linaro.org>
Date:   Mon Dec 9 23:19:12 2024 +0530

    clk: qcom: gcc-sdm845: Do not use shared clk_ops for QUPs
    
    [ Upstream commit f760a4bb5e927a133dcd75f7b69ccae2a331e42c ]
    
    Similar to the earlier fixes meant for sm8x50 and x1e platforms,
    we have to stop using the shared clk ops for sdm845 QUPs as well.
    
    As Stephen Boyd pointed out in earlier fixes, there wasn't a problem
    to mark QUP clks shared until we started parking shared RCGs at clk
    registration time in commit 01a0a6cc8cfd ("clk: qcom: Park shared RCGs
    upon registration"). Parking at init is actually harmful to the UART
    when earlycon is used. If the device is pumping out data while the
    frequency changes and we see garbage on the serial console until the
    driver can probe and actually set a proper frequency.
    
    This patch reverts the QUP clk sharing ops part of commit 06391eddb60a
    ("clk: qcom: Add Global Clock controller (GCC) driver for SDM845"), so
    that the QUPs on sdm845 don't get parked during clk registration and
    break UART operations.
    
    Fixes: 01a0a6cc8cfd ("clk: qcom: Park shared RCGs upon registration")
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Link: https://lore.kernel.org/r/20241209174912.2526928-1-amit.pundir@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: qcom: gcc-x1e80100: Do not turn off usb_2 controller GDSC [+ + +]
Author: Abel Vesa <abel.vesa@linaro.org>
Date:   Tue Jan 7 17:55:23 2025 +0200

    clk: qcom: gcc-x1e80100: Do not turn off usb_2 controller GDSC
    
    commit d26c4ad3fa53e76a602a9974ade171c8399f2a29 upstream.
    
    Allowing the usb_2 controller GDSC to be turned off during system suspend
    renders the controller unable to resume.
    
    So use PWRSTS_RET_ON instead in order to make sure this the GDSC doesn't
    go down.
    
    Fixes: 161b7c401f4b ("clk: qcom: Add Global Clock controller (GCC) driver for X1E80100")
    Cc: stable@vger.kernel.org      # 6.8
    Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
    Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
    Tested-by: Johan Hovold <johan+linaro@kernel.org>
    Link: https://lore.kernel.org/r/20250107-x1e80100-clk-gcc-fix-usb2-gdsc-pwrsts-v1-1-e15d1a5e7d80@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

clk: ralink: mtmips: remove duplicated 'xtal' clock for Ralink SoC RT3883 [+ + +]
Author: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Date:   Wed Jan 8 10:36:36 2025 +0100

    clk: ralink: mtmips: remove duplicated 'xtal' clock for Ralink SoC RT3883
    
    [ Upstream commit 830d8062d25581cf0beaa334486eea06834044da ]
    
    Ralink SoC RT3883 has already 'xtal' defined as a base clock so there is no
    need to redefine it again in fixed clocks section. Hence, remove the duplicate
    one from there.
    
    Fixes: d34db686a3d7 ("clk: ralink: mtmips: fix clocks probe order in oldest ralink SoCs")
    Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
    Link: https://lore.kernel.org/r/20250108093636.265033-1-sergio.paracuellos@gmail.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: renesas: cpg-mssr: Fix 'soc' node handling in cpg_mssr_reserved_init() [+ + +]
Author: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Date:   Thu Oct 31 13:43:16 2024 +0100

    clk: renesas: cpg-mssr: Fix 'soc' node handling in cpg_mssr_reserved_init()
    
    [ Upstream commit a6ca7e6240f0651412da6a17d0e7a8f66d3455a6 ]
    
    A device_node reference obtained via of_find_node_by_path() requires
    explicit calls to of_node_put() after it is no longer required to avoid
    leaking the resource.
    
    Instead of adding the missing calls to of_node_put() in all execution
    paths, use the cleanup attribute for 'soc' by means of the __free()
    macro, which automatically calls of_node_put() when the variable goes
    out of scope.
    
    Fixes: 6aa175476490 ("clk: renesas: cpg-mssr: Ignore all clocks assigned to non-Linux system")
    Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/20241031-clk-renesas-cpg-mssr-cleanup-v2-1-0010936d1154@gmail.com
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: sunxi-ng: a64: drop redundant CLK_PLL_VIDEO0_2X and CLK_PLL_MIPI [+ + +]
Author: Vasily Khoruzhick <anarsoul@gmail.com>
Date:   Fri Jan 3 23:36:58 2025 -0800

    clk: sunxi-ng: a64: drop redundant CLK_PLL_VIDEO0_2X and CLK_PLL_MIPI
    
    [ Upstream commit 0f368cb7ef103f284f75e962c4c89da5aa8ccec7 ]
    
    Drop redundant CLK_PLL_VIDEO0_2X and CLK_PLL.MIPI. These are now
    defined in dt-bindings/clock/sun50i-a64-ccu.h
    
    Fixes: ca1170b69968 ("clk: sunxi-ng: a64: force select PLL_MIPI in TCON0 mux")
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Reviewed-by: Chen-Yu Tsai <wens@csie.org>
    Tested-by: Frank Oltmanns <frank@oltmanns.dev> # on pinephone
    Tested-by: Stuart Gathman <stuart@gathman.org> # on OG pinebook
    Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
    Link: https://patch.msgid.link/20250104074035.1611136-3-anarsoul@gmail.com
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: sunxi-ng: a64: stop force-selecting PLL-MIPI as TCON0 parent [+ + +]
Author: Vasily Khoruzhick <anarsoul@gmail.com>
Date:   Fri Jan 3 23:37:00 2025 -0800

    clk: sunxi-ng: a64: stop force-selecting PLL-MIPI as TCON0 parent
    
    [ Upstream commit 383ca7bee8a93be9ff5a072936981c2710d2856b ]
    
    Stop force-selecting PLL-MIPI as TCON0 parent, since it breaks video
    output on Pinebook that uses RGB to eDP bridge.
    
    Partially revert commit ca1170b69968 ("clk: sunxi-ng: a64: force
    select PLL_MIPI in TCON0 mux"), while still leaving
    CLK_SET_RATE_NO_REPARENT flag set, since we do not want the clock to
    be reparented.
    
    The issue is that apparently different TCON0 outputs require a different
    clock, or the mux might be selecting the output type.
    
    I did an experiment: I manually configured PLL_MIPI and PLL_VIDEO0_2X
    to the same clock rate and flipped the switch with devmem. Experiment
    clearly showed that whenever PLL_MIPI is selected as TCON0 clock parent,
    the video output stops working.
    
    Therefore, TCON0 clock parent corresponding to the output type must be
    assigned in the device tree.
    
    Fixes: ca1170b69968 ("clk: sunxi-ng: a64: force select PLL_MIPI in TCON0 mux")
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Reviewed-by: Chen-Yu Tsai <wens@csie.org>
    Tested-by: Frank Oltmanns <frank@oltmanns.dev> # on PinePhone
    Tested-by: Stuart Gathman <stuart@gathman.org> # on OG Pinebook
    Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
    Link: https://patch.msgid.link/20250104074035.1611136-5-anarsoul@gmail.com
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: thead: Add CLK_IGNORE_UNUSED to fix TH1520 boot [+ + +]
Author: Drew Fustini <dfustini@tenstorrent.com>
Date:   Mon Jan 13 12:31:25 2025 -0800

    clk: thead: Add CLK_IGNORE_UNUSED to fix TH1520 boot
    
    [ Upstream commit 037705e94bf6e1810b7f9dc077d0e23292229e74 ]
    
    Add the CLK_IGNORE_UNUSED flag to apb_pclk, cpu2peri_x2h_clk,
    perisys_apb2_hclk and perisys_apb3_hclk.
    
    Without this flag, the boot hangs after "clk: Disabling unused clocks"
    unless clk_ignore_unused is in the kernel cmdline.
    
    Fixes: ae81b69fd2b1 ("clk: thead: Add support for T-Head TH1520 AP_SUBSYS clocks")
    Signed-off-by: Drew Fustini <dfustini@tenstorrent.com>
    Link: https://lore.kernel.org/r/20250113-th1520-clk_ignore_unused-v1-2-0b08fb813438@tenstorrent.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: thead: Fix clk gate registration to pass flags [+ + +]
Author: Drew Fustini <dfustini@tenstorrent.com>
Date:   Mon Jan 13 12:31:24 2025 -0800

    clk: thead: Fix clk gate registration to pass flags
    
    [ Upstream commit a826e53fd78c7f07b8ff83446c44b227b2181920 ]
    
    Modify the call to devm_clk_hw_register_gate_parent_data() to actually
    pass the clk flags from hw.init instead of just 0. This is necessary to
    allow individual clk gates to specify their own clk flags.
    
    Fixes: ae81b69fd2b1 ("clk: thead: Add support for T-Head TH1520 AP_SUBSYS clocks")
    Signed-off-by: Drew Fustini <dfustini@tenstorrent.com>
    Link: https://lore.kernel.org/r/20250113-th1520-clk_ignore_unused-v1-1-0b08fb813438@tenstorrent.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: thead: Fix cpu2vp_clk for TH1520 AP_SUBSYS clocks [+ + +]
Author: Drew Fustini <dfustini@tenstorrent.com>
Date:   Fri Dec 27 19:48:04 2024 -0800

    clk: thead: Fix cpu2vp_clk for TH1520 AP_SUBSYS clocks
    
    [ Upstream commit 3a43cd19f1b8d3f57f835ae50cc869f07902c062 ]
    
    cpu2vp_clk is a gate but was mistakenly in th1520_div_clks[] instead
    of th1520_gate_clks[].
    
    Fixes: ae81b69fd2b1 ("clk: thead: Add support for T-Head TH1520 AP_SUBSYS clocks")
    Signed-off-by: Drew Fustini <dfustini@tenstorrent.com>
    Link: https://lore.kernel.org/r/20241228034802.1573554-1-dfustini@tenstorrent.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
coredump: Do not lock during 'comm' reporting [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Sat Sep 28 14:08:31 2024 -0700

    coredump: Do not lock during 'comm' reporting
    
    [ Upstream commit 200f091c95bbc4b8660636bd345805c45d6eced7 ]
    
    The 'comm' member will always be NUL terminated, and this is not
    fast-path, so we can just perform a direct memcpy during a coredump
    instead of potentially deadlocking while holding the task struct lock.
    
    Reported-by: Vegard Nossum <vegard.nossum@oracle.com>
    Closes: https://lore.kernel.org/all/d122ece6-3606-49de-ae4d-8da88846bef2@oracle.com
    Fixes: c114e9948c2b ("coredump: Standartize and fix logging")
    Tested-by: Vegard Nossum <vegard.nossum@oracle.com>
    Link: https://lore.kernel.org/r/20240928210830.work.307-kees@kernel.org
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
 
cpufreq: ACPI: Fix max-frequency computation [+ + +]
Author: Gautham R. Shenoy <gautham.shenoy@amd.com>
Date:   Mon Jan 13 10:11:07 2025 +0530

    cpufreq: ACPI: Fix max-frequency computation
    
    [ Upstream commit 0834667545962ef1c5e8684ed32b45d9c574acd3 ]
    
    Commit 3c55e94c0ade ("cpufreq: ACPI: Extend frequency tables to cover
    boost frequencies") introduced an assumption in acpi_cpufreq_cpu_init()
    that the first entry in the P-state table was the nominal frequency.
    This assumption is incorrect. The frequency corresponding to the P0
    P-State need not be the same as the nominal frequency advertised via
    CPPC.
    
    Since the driver is using the CPPC.highest_perf and CPPC.nominal_perf
    to compute the boost-ratio, it makes sense to use CPPC.nominal_freq to
    compute the max-frequency. CPPC.nominal_freq is advertised on
    platforms supporting CPPC revisions 3 or higher.
    
    Hence, fallback to using the first entry in the P-State table only on
    platforms that do not advertise CPPC.nominal_freq.
    
    Fixes: 3c55e94c0ade ("cpufreq: ACPI: Extend frequency tables to cover boost frequencies")
    Tested-by: Dhananjay Ugwekar <Dhananjay.Ugwekar@amd.com>
    Signed-off-by: Gautham R. Shenoy <gautham.shenoy@amd.com>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://patch.msgid.link/20250113044107.566-1-gautham.shenoy@amd.com
    [ rjw: Retain reverse X-mas tree ordering of local variable declarations ]
    [ rjw: Subject and changelog edits ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cpufreq: qcom: Fix qcom_cpufreq_hw_recalc_rate() to query LUT if LMh IRQ is not available [+ + +]
Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Date:   Thu Dec 5 22:20:28 2024 +0530

    cpufreq: qcom: Fix qcom_cpufreq_hw_recalc_rate() to query LUT if LMh IRQ is not available
    
    [ Upstream commit 85d8b11351a8f15d6ec7a5e97909861cb3b6bcec ]
    
    Currently, qcom_cpufreq_hw_recalc_rate() returns the LMh throttled
    frequency for the domain even if LMh IRQ is not available. But as per
    qcom_cpufreq_hw_get(), the driver has to query LUT entries to get the
    actual frequency of the domain. So do the same in
    qcom_cpufreq_hw_recalc_rate().
    
    While doing so, refactor the existing qcom_cpufreq_hw_get() function so
    that qcom_cpufreq_hw_recalc_rate() can make use of the existing code and
    avoid code duplication. This also requires setting the
    qcom_cpufreq_data::policy even if LMh IRQ is not available.
    
    Fixes: 4370232c727b ("cpufreq: qcom-hw: Add CPU clock provider support")
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cpufreq: qcom: Implement clk_ops::determine_rate() for qcom_cpufreq* clocks [+ + +]
Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Date:   Thu Dec 5 22:20:29 2024 +0530

    cpufreq: qcom: Implement clk_ops::determine_rate() for qcom_cpufreq* clocks
    
    [ Upstream commit a9ba290d0b829012574b6821ba08815046e60c94 ]
    
    determine_rate() callback is used by the clk_set_rate() API to get the
    closest rate of the target rate supported by the clock. If this callback
    is not implemented (nor round_rate() callback), then the API will assume
    that the clock cannot set the requested rate. And since there is no parent,
    it will return -EINVAL.
    
    This is not an issue right now as clk_set_rate() mistakenly compares the
    target rate with cached rate and bails out early. But once that is fixed
    to compare the target rate with the actual rate of the clock (returned by
    recalc_rate()), then clk_set_rate() for this clock will start to fail as
    below:
    
    cpu cpu0: _opp_config_clk_single: failed to set clock rate: -22
    
    So implement the determine_rate() callback that just returns the actual
    rate at which the clock is passed to the CPUs in a domain.
    
    Fixes: 4370232c727b ("cpufreq: qcom-hw: Add CPU clock provider support")
    Reported-by: Johan Hovold <johan+linaro@kernel.org>
    Suggested-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Reviewed-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cpufreq: schedutil: Fix superfluous updates caused by need_freq_update [+ + +]
Author: Sultan Alsawaf (unemployed) <sultan@kerneltoast.com>
Date:   Wed Dec 11 17:57:32 2024 -0800

    cpufreq: schedutil: Fix superfluous updates caused by need_freq_update
    
    [ Upstream commit 8e461a1cb43d69d2fc8a97e61916dce571e6bb31 ]
    
    A redundant frequency update is only truly needed when there is a policy
    limits change with a driver that specifies CPUFREQ_NEED_UPDATE_LIMITS.
    
    In spite of that, drivers specifying CPUFREQ_NEED_UPDATE_LIMITS receive a
    frequency update _all the time_, not just for a policy limits change,
    because need_freq_update is never cleared.
    
    Furthermore, ignore_dl_rate_limit()'s usage of need_freq_update also leads
    to a redundant frequency update, regardless of whether or not the driver
    specifies CPUFREQ_NEED_UPDATE_LIMITS, when the next chosen frequency is the
    same as the current one.
    
    Fix the superfluous updates by only honoring CPUFREQ_NEED_UPDATE_LIMITS
    when there's a policy limits change, and clearing need_freq_update when a
    requisite redundant update occurs.
    
    This is neatly achieved by moving up the CPUFREQ_NEED_UPDATE_LIMITS test
    and instead setting need_freq_update to false in sugov_update_next_freq().
    
    Fixes: 600f5badb78c ("cpufreq: schedutil: Don't skip freq update when limits change")
    Signed-off-by: Sultan Alsawaf (unemployed) <sultan@kerneltoast.com>
    Reviewed-by: Christian Loehle <christian.loehle@arm.com>
    Link: https://patch.msgid.link/20241212015734.41241-2-sultan@kerneltoast.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cpupower: fix TSC MHz calculation [+ + +]
Author: He Rongguang <herongguang@linux.alibaba.com>
Date:   Thu Dec 12 10:14:59 2024 +0800

    cpupower: fix TSC MHz calculation
    
    [ Upstream commit 9d6c0e58514f8b57cd9c2c755e41623d6a966025 ]
    
    Commit 'cpupower: Make TSC read per CPU for Mperf monitor' (c2adb1877b7)
    changes TSC counter reads per cpu, but left time diff global (from start
    of all cpus to end of all cpus), thus diff(time) is too large for a
    cpu's tsc counting, resulting in far less than acutal TSC_Mhz and thus
    `cpupower monitor` showing far less than actual cpu realtime frequency.
    
    /proc/cpuinfo shows frequency:
    cat /proc/cpuinfo | egrep -e 'processor' -e 'MHz'
    ...
    processor : 171
    cpu MHz   : 4108.498
    ...
    
    before fix (System 100% busy):
        | Mperf              || Idle_Stats
     CPU| C0   | Cx   | Freq  || POLL | C1   | C2
     171|  0.77| 99.23|  2279||  0.00|  0.00|  0.00
    
    after fix (System 100% busy):
        | Mperf              || Idle_Stats
     CPU| C0   | Cx   | Freq  || POLL | C1   | C2
     171|  0.46| 99.54|  4095||  0.00|  0.00|  0.00
    
    Fixes: c2adb1877b76 ("cpupower: Make TSC read per CPU for Mperf monitor")
    Signed-off-by: He Rongguang <herongguang@linux.alibaba.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
crypto: api - Fix boot-up self-test race [+ + +]
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Fri Nov 15 09:29:02 2024 +0800

    crypto: api - Fix boot-up self-test race
    
    [ Upstream commit 8dd458cbc5be9ce4427ffce7a9dcdbff4dfc4ac9 ]
    
    During the boot process self-tests are postponed so that all
    algorithms are registered when the test starts.  In the event
    that algorithms are still being registered during these tests,
    which can occur either because the algorithm is registered at
    late_initcall, or because a self-test itself triggers the creation
    of an instance, some self-tests may never start at all.
    
    Fix this by setting the flag at the start of crypto_start_tests.
    
    Note that this race is theoretical and has never been observed
    in practice.
    
    Fixes: adad556efcdd ("crypto: api - Fix built-in testing dependency failures")
    Signed-off-by: Herbert Xu <herbert.xu@redhat.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: caam - use JobR's space to access page 0 regs [+ + +]
Author: Gaurav Jain <gaurav.jain@nxp.com>
Date:   Tue Nov 26 12:16:07 2024 +0530

    crypto: caam - use JobR's space to access page 0 regs
    
    [ Upstream commit 73a7496c218b7ca19ba276f54758e7f0adf269c5 ]
    
    On iMX8DXL/QM/QXP(SECO) & iMX8ULP(ELE) SoCs, access to controller
    region(CAAM page 0) is not permitted from non secure world.
    use JobR's register space to access page 0 registers.
    
    Fixes: 6a83830f649a ("crypto: caam - warn if blob_gen key is insecure")
    Signed-off-by: Gaurav Jain <gaurav.jain@nxp.com>
    Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
    Reviewed-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: hisilicon/sec2 - fix for aead icv error [+ + +]
Author: Wenkai Lin <linwenkai6@hisilicon.com>
Date:   Fri Dec 13 17:13:34 2024 +0800

    crypto: hisilicon/sec2 - fix for aead icv error
    
    [ Upstream commit fd337f852b2677b53d0859a47b58e6e6bd189f30 ]
    
    When the AEAD algorithm is used for encryption or decryption,
    the input authentication length varies, the hardware needs to
    obtain the input length to pass the integrity check verification.
    Currently, the driver uses a fixed authentication length,which
    causes decryption failure, so the length configuration is modified.
    In addition, the step of setting the auth length is unnecessary,
    so it was deleted from the setkey function.
    
    Fixes: 2f072d75d1ab ("crypto: hisilicon - Add aead support on SEC2")
    Signed-off-by: Wenkai Lin <linwenkai6@hisilicon.com>
    Signed-off-by: Chenghai Huang <huangchenghai2@huawei.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: hisilicon/sec2 - fix for aead invalid authsize [+ + +]
Author: Wenkai Lin <linwenkai6@hisilicon.com>
Date:   Fri Dec 13 17:13:35 2024 +0800

    crypto: hisilicon/sec2 - fix for aead invalid authsize
    
    [ Upstream commit a5a9d959936499a3106a1bf3b9070875d0d3dec4 ]
    
    When the digest alg is HMAC-SHAx or another, the authsize may be less
    than 4 bytes and mac_len of the BD is set to zero, the hardware considers
    it a BD configuration error and reports a ras error, so the sec driver
    needs to switch to software calculation in this case, this patch add a
    check for it and remove unnecessary check that has been done by crypto.
    
    Fixes: 2f072d75d1ab ("crypto: hisilicon - Add aead support on SEC2")
    Signed-off-by: Wenkai Lin <linwenkai6@hisilicon.com>
    Signed-off-by: Chenghai Huang <huangchenghai2@huawei.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: iaa - Fix IAA disabling that occurs when sync_mode is set to 'async' [+ + +]
Author: Kanchana P Sridhar <kanchana.p.sridhar@intel.com>
Date:   Sat Dec 21 14:07:07 2024 -0800

    crypto: iaa - Fix IAA disabling that occurs when sync_mode is set to 'async'
    
    [ Upstream commit 4ebd9a5ca478673cfbb38795cc5b3adb4f35fe04 ]
    
    With the latest mm-unstable, setting the iaa_crypto sync_mode to 'async'
    causes crypto testmgr.c test_acomp() failure and dmesg call traces, and
    zswap being unable to use 'deflate-iaa' as a compressor:
    
    echo async > /sys/bus/dsa/drivers/crypto/sync_mode
    
    [  255.271030] zswap: compressor deflate-iaa not available
    [  369.960673] INFO: task cryptomgr_test:4889 blocked for more than 122 seconds.
    [  369.970127]       Not tainted 6.13.0-rc1-mm-unstable-12-16-2024+ #324
    [  369.977411] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [  369.986246] task:cryptomgr_test  state:D stack:0     pid:4889  tgid:4889  ppid:2      flags:0x00004000
    [  369.986253] Call Trace:
    [  369.986256]  <TASK>
    [  369.986260]  __schedule+0x45c/0xfa0
    [  369.986273]  schedule+0x2e/0xb0
    [  369.986277]  schedule_timeout+0xe7/0x100
    [  369.986284]  ? __prepare_to_swait+0x4e/0x70
    [  369.986290]  wait_for_completion+0x8d/0x120
    [  369.986293]  test_acomp+0x284/0x670
    [  369.986305]  ? __pfx_cryptomgr_test+0x10/0x10
    [  369.986312]  alg_test_comp+0x263/0x440
    [  369.986315]  ? sched_balance_newidle+0x259/0x430
    [  369.986320]  ? __pfx_cryptomgr_test+0x10/0x10
    [  369.986323]  alg_test.part.27+0x103/0x410
    [  369.986326]  ? __schedule+0x464/0xfa0
    [  369.986330]  ? __pfx_cryptomgr_test+0x10/0x10
    [  369.986333]  cryptomgr_test+0x20/0x40
    [  369.986336]  kthread+0xda/0x110
    [  369.986344]  ? __pfx_kthread+0x10/0x10
    [  369.986346]  ret_from_fork+0x2d/0x40
    [  369.986355]  ? __pfx_kthread+0x10/0x10
    [  369.986358]  ret_from_fork_asm+0x1a/0x30
    [  369.986365]  </TASK>
    
    This happens because the only async polling without interrupts that
    iaa_crypto currently implements is with the 'sync' mode. With 'async',
    iaa_crypto calls to compress/decompress submit the descriptor and return
    -EINPROGRESS, without any mechanism in the driver to poll for
    completions. Hence callers such as test_acomp() in crypto/testmgr.c or
    zswap, that wrap the calls to crypto_acomp_compress() and
    crypto_acomp_decompress() in synchronous wrappers, will block
    indefinitely. Even before zswap can notice this problem, the crypto
    testmgr.c's test_acomp() will fail and prevent registration of
    "deflate-iaa" as a valid crypto acomp algorithm, thereby disallowing the
    use of "deflate-iaa" as a zswap compress (zswap will fall-back to the
    default compressor in this case).
    
    To fix this issue, this patch modifies the iaa_crypto sync_mode set
    function to treat 'async' equivalent to 'sync', so that the correct and
    only supported driver async polling without interrupts implementation is
    enabled, and zswap can use 'deflate-iaa' as the compressor.
    
    Hence, with this patch, this is what will happen:
    
    echo async > /sys/bus/dsa/drivers/crypto/sync_mode
    cat /sys/bus/dsa/drivers/crypto/sync_mode
    sync
    
    There are no crypto/testmgr.c test_acomp() errors, no call traces and zswap
    can use 'deflate-iaa' without any errors. The iaa_crypto documentation has
    also been updated to mention this caveat with 'async' and what to expect
    with this fix.
    
    True iaa_crypto async polling without interrupts is enabled in patch
    "crypto: iaa - Implement batch_compress(), batch_decompress() API in
    iaa_crypto." [1] which is under review as part of the "zswap IAA compress
    batching" patch-series [2]. Until this is merged, we would appreciate it if
    this current patch can be considered for a hotfix.
    
    [1]: https://patchwork.kernel.org/project/linux-mm/patch/20241221063119.29140-5-kanchana.p.sridhar@intel.com/
    [2]: https://patchwork.kernel.org/project/linux-mm/list/?series=920084
    
    Fixes: 09646c98d ("crypto: iaa - Add irq support for the crypto async interface")
    Signed-off-by: Kanchana P Sridhar <kanchana.p.sridhar@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: ixp4xx - fix OF node reference leaks in init_ixp_crypto() [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Sun Dec 15 16:27:20 2024 +0900

    crypto: ixp4xx - fix OF node reference leaks in init_ixp_crypto()
    
    [ Upstream commit 472a989029aac2b78ef2f0b18b27c568bf76d104 ]
    
    init_ixp_crypto() calls of_parse_phandle_with_fixed_args() multiple
    times, but does not release all the obtained refcounts. Fix it by adding
    of_node_put() calls.
    
    This bug was found by an experimental static analysis tool that I am
    developing.
    
    Fixes: 76f24b4f46b8 ("crypto: ixp4xx - Add device tree support")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: tegra - do not transfer req when tegra init fails [+ + +]
Author: Chen Ridong <chenridong@huawei.com>
Date:   Mon Nov 11 01:28:27 2024 +0000

    crypto: tegra - do not transfer req when tegra init fails
    
    [ Upstream commit 15589bda46830695a3261518bb7627afac61f519 ]
    
    The tegra_cmac_init or tegra_sha_init function may return an error when
    memory is exhausted. It should not transfer the request when they return
    an error.
    
    Fixes: 0880bb3b00c8 ("crypto: tegra - Add Tegra Security Engine driver")
    Signed-off-by: Chen Ridong <chenridong@huawei.com>
    Acked-by: Akhil R <akhilrajeev@nvidia.com>
    Acked-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dev: Acquire netdev_rename_lock before restoring dev->name in dev_change_name(). [+ + +]
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Wed Jan 15 18:55:43 2025 +0900

    dev: Acquire netdev_rename_lock before restoring dev->name in dev_change_name().
    
    [ Upstream commit e361560a7912958ba3059f51e7dd21612d119169 ]
    
    The cited commit forgot to add netdev_rename_lock in one of the
    error paths in dev_change_name().
    
    Let's hold netdev_rename_lock before restoring the old dev->name.
    
    Fixes: 0840556e5a3a ("net: Protect dev->name by seqlock.")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250115095545.52709-2-kuniyu@amazon.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dlm: fix removal of rsb struct that is master and dir record [+ + +]
Author: Alexander Aring <aahringo@redhat.com>
Date:   Tue Nov 19 15:56:44 2024 -0500

    dlm: fix removal of rsb struct that is master and dir record
    
    [ Upstream commit 134129520beaf3339482c557361ea0bde709cf36 ]
    
    An rsb struct was not being removed in the case where it
    was both the master and the dir record.  This case (master
    and dir node) was missed in the condition for doing add_scan()
    from deactivate_rsb().  Fixing this triggers a related WARN_ON
    that needs to be fixed, and requires adjusting where two
    del_scan() calls are made.
    
    Fixes: c217adfc8caa ("dlm: fix add_scan and del_scan usage")
    Signed-off-by: Alexander Aring <aahringo@redhat.com>
    Signed-off-by: David Teigland <teigland@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dlm: fix srcu_read_lock() return type to int [+ + +]
Author: Alexander Aring <aahringo@redhat.com>
Date:   Mon Dec 2 10:26:37 2024 -0500

    dlm: fix srcu_read_lock() return type to int
    
    [ Upstream commit 57cdd1a1cf1464199678f9338049b63fb5d5b41c ]
    
    The return type of srcu_read_lock() is int and not bool. Whereas we
    using the ret variable only to evaluate a bool type of
    dlm_lowcomms_con_has_addr() to check if an address is already being set.
    
    Fixes: 6f0b0b5d7ae7 ("fs: dlm: remove dlm_node_addrs lookup list")
    Signed-off-by: Alexander Aring <aahringo@redhat.com>
    Signed-off-by: David Teigland <teigland@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dma-mapping: save base/size instead of pointer to shared DMA pool [+ + +]
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Nov 12 19:39:37 2024 +0100

    dma-mapping: save base/size instead of pointer to shared DMA pool
    
    commit 22293c33738c14bb84b9d3e771bc37150e7cf8e7 upstream.
    
    On RZ/Five, which is non-coherent, and uses CONFIG_DMA_GLOBAL_POOL=y:
    
        Oops - store (or AMO) access fault [#1]
        CPU: 0 UID: 0 PID: 1 Comm: swapper Not tainted 6.12.0-rc1-00015-g8a6e02d0c00e #201
        Hardware name: Renesas SMARC EVK based on r9a07g043f01 (DT)
        epc : __memset+0x60/0x100
         ra : __dma_alloc_from_coherent+0x150/0x17a
        epc : ffffffff8062d2bc ra : ffffffff80053a94 sp : ffffffc60000ba20
         gp : ffffffff812e9938 tp : ffffffd601920000 t0 : ffffffc6000d0000
         t1 : 0000000000000000 t2 : ffffffffe9600000 s0 : ffffffc60000baa0
         s1 : ffffffc6000d0000 a0 : ffffffc6000d0000 a1 : 0000000000000000
         a2 : 0000000000001000 a3 : ffffffc6000d1000 a4 : 0000000000000000
         a5 : 0000000000000000 a6 : ffffffd601adacc0 a7 : ffffffd601a841a8
         s2 : ffffffd6018573c0 s3 : 0000000000001000 s4 : ffffffd6019541e0
         s5 : 0000000200000022 s6 : ffffffd6018f8410 s7 : ffffffd6018573e8
         s8 : 0000000000000001 s9 : 0000000000000001 s10: 0000000000000010
         s11: 0000000000000000 t3 : 0000000000000000 t4 : ffffffffdefe62d1
         t5 : 000000001cd6a3a9 t6 : ffffffd601b2aad6
        status: 0000000200000120 badaddr: ffffffc6000d0000 cause: 0000000000000007
        [<ffffffff8062d2bc>] __memset+0x60/0x100
        [<ffffffff80053e1a>] dma_alloc_from_global_coherent+0x1c/0x28
        [<ffffffff80053056>] dma_direct_alloc+0x98/0x112
        [<ffffffff8005238c>] dma_alloc_attrs+0x78/0x86
        [<ffffffff8035fdb4>] rz_dmac_probe+0x3f6/0x50a
        [<ffffffff803a0694>] platform_probe+0x4c/0x8a
    
    If CONFIG_DMA_GLOBAL_POOL=y, the reserved_mem structure passed to
    rmem_dma_setup() is saved for later use, by saving the passed pointer.
    However, when dma_init_reserved_memory() is called later, the pointer
    has become stale, causing a crash.
    
    E.g. in the RZ/Five case, the referenced memory now contains the
    reserved_mem structure for the "mmode_resv0@30000" node (with base
    0x30000 and size 0x10000), instead of the correct "pma_resv0@58000000"
    node (with base 0x58000000 and size 0x8000000).
    
    Fix this by saving the needed reserved_mem structure's contents instead.
    
    Fixes: 8a6e02d0c00e7b62 ("of: reserved_mem: Restructure how the reserved memory regions are processed")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Oreoluwa Babatunde <quic_obabatun@quicinc.com>
    Tested-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dmaengine: ti: edma: fix OF node reference leaks in edma_driver [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Thu Dec 19 11:05:07 2024 +0900

    dmaengine: ti: edma: fix OF node reference leaks in edma_driver
    
    [ Upstream commit e883c64778e5a9905fce955681f8ee38c7197e0f ]
    
    The .probe() of edma_driver calls of_parse_phandle_with_fixed_args() but
    does not release the obtained OF nodes. Thus add a of_node_put() call.
    
    This bug was found by an experimental verification tool that I am
    developing.
    
    Fixes: 1be5336bc7ba ("dmaengine: edma: New device tree binding")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/20241219020507.1983124-3-joe@pf.is.s.u-tokyo.ac.jp
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
driver core: class: Fix wild pointer dereferences in API class_dev_iter_next() [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Sun Jan 5 16:34:02 2025 +0800

    driver core: class: Fix wild pointer dereferences in API class_dev_iter_next()
    
    [ Upstream commit e128f82f7006991c99a58114f70ef61e937b1ac1 ]
    
    There are a potential wild pointer dereferences issue regarding APIs
    class_dev_iter_(init|next|exit)(), as explained by below typical usage:
    
    // All members of @iter are wild pointers.
    struct class_dev_iter iter;
    
    // class_dev_iter_init(@iter, @class, ...) checks parameter @class for
    // potential class_to_subsys() error, and it returns void type and does
    // not initialize its output parameter @iter, so caller can not detect
    // the error and continues to invoke class_dev_iter_next(@iter) even if
    // @iter still contains wild pointers.
    class_dev_iter_init(&iter, ...);
    
    // Dereference these wild pointers in @iter here once suffer the error.
    while (dev = class_dev_iter_next(&iter)) { ... };
    
    // Also dereference these wild pointers here.
    class_dev_iter_exit(&iter);
    
    Actually, all callers of these APIs have such usage pattern in kernel tree.
    Fix by:
    - Initialize output parameter @iter by memset() in class_dev_iter_init()
      and give callers prompt by pr_crit() for the error.
    - Check if @iter is valid in class_dev_iter_next().
    
    Fixes: 7b884b7f24b4 ("driver core: class.c: convert to only use class_to_subsys")
    Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Link: https://lore.kernel.org/r/20250105-class_fix-v6-1-3a2f1768d4d4@quicinc.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drivers/card_reader/rtsx_usb: Restore interrupt based detection [+ + +]
Author: Sean Rhodes <sean@starlabs.systems>
Date:   Tue Nov 19 08:58:15 2024 +0000

    drivers/card_reader/rtsx_usb: Restore interrupt based detection
    
    commit 235b630eda072d7e7b102ab346d6b8a2c028a772 upstream.
    
    This commit reintroduces interrupt-based card detection previously
    used in the rts5139 driver. This functionality was removed in commit
    00d8521dcd23 ("staging: remove rts5139 driver code").
    
    Reintroducing this mechanism fixes presence detection for certain card
    readers, which with the current driver, will taken approximately 20
    seconds to enter S3 as `mmc_rescan` has to be frozen.
    
    Fixes: 00d8521dcd23 ("staging: remove rts5139 driver code")
    Cc: stable@vger.kernel.org
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sean Rhodes <sean@starlabs.systems>
    Link: https://lore.kernel.org/r/20241119085815.11769-1-sean@starlabs.systems
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amd/display: Add hubp cache reset when powergating [+ + +]
Author: Aric Cyr <Aric.Cyr@amd.com>
Date:   Thu Jan 9 15:03:48 2025 -0500

    drm/amd/display: Add hubp cache reset when powergating
    
    commit 01130f5260e5868fb6b15ab8c00dbc894139f48e upstream.
    
    [Why]
    When HUBP is power gated, the SW state can get out of sync with the
    hardware state causing cursor to not be programmed correctly.
    
    [How]
    Similar to DPP, add a HUBP reset function which is called wherever
    HUBP is initialized or powergated.  This function will clear the cursor
    position and attribute cache allowing for proper programming when the
    HUBP is brought back up.
    
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Sung Lee <sung.lee@amd.com>
    Signed-off-by: Aric Cyr <Aric.Cyr@amd.com>
    Signed-off-by: Wayne Lin <wayne.lin@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amd/display: Reduce accessing remote DPCD overhead [+ + +]
Author: Wayne Lin <Wayne.Lin@amd.com>
Date:   Mon Dec 9 15:25:35 2024 +0800

    drm/amd/display: Reduce accessing remote DPCD overhead
    
    commit adb4998f4928a17d91be054218a902ba9f8c1f93 upstream.
    
    [Why]
    Observed frame rate get dropped by tool like glxgear. Even though the
    output to monitor is 60Hz, the rendered frame rate drops to 30Hz lower.
    
    It's due to code path in some cases will trigger
    dm_dp_mst_is_port_support_mode() to read out remote Link status to
    assess the available bandwidth for dsc maniplation. Overhead of keep
    reading remote DPCD is considerable.
    
    [How]
    Store the remote link BW in mst_local_bw and use end-to-end full_pbn
    as an indicator to decide whether update the remote link bw or not.
    
    Whenever we need the info to assess the BW, visit the stored one first.
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3720
    Fixes: fa57924c76d9 ("drm/amd/display: Refactor function dm_dp_mst_is_port_support_mode()")
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Jerry Zuo <jerry.zuo@amd.com>
    Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
    Signed-off-by: Tom Chung <chiahsuan.chung@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 4a9a918545455a5979c6232fcf61ed3d8f0db3ae)
    Cc: stable@vger.kernel.org
    Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amd/pm: Fix an error handling path in vega10_enable_se_edc_force_stall_config() [+ + +]
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Tue Nov 19 21:23:18 2024 +0100

    drm/amd/pm: Fix an error handling path in vega10_enable_se_edc_force_stall_config()
    
    [ Upstream commit a3300782d5375e280ba7040f323d01960bfe3396 ]
    
    In case of error after a amdgpu_gfx_rlc_enter_safe_mode() call, it is not
    balanced by a corresponding amdgpu_gfx_rlc_exit_safe_mode() call.
    
    Add the missing call.
    
    Fixes: 9b7b8154cdb8 ("drm/amd/powerplay: added didt support for vega10")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu/vcn: reset fw_shared under SRIOV [+ + +]
Author: Bokun Zhang <bokun.zhang@amd.com>
Date:   Wed Dec 11 15:42:56 2024 -0600

    drm/amdgpu/vcn: reset fw_shared under SRIOV
    
    [ Upstream commit 3676f37a88432132bcff55a17dc48911239b6d98 ]
    
    - The previous patch only considered the case for baremetal
      and is not applicable for SRIOV code path. We also need to
      init fw_share for SRIOV VF
    
    Fixes: 928cd772e18f ("drm/amdgpu/vcn: reset fw_shared when VCPU buffers corrupted on vcn v4.0.3")
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Bokun Zhang <bokun.zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu: fix gpu recovery disable with per queue reset [+ + +]
Author: Jonathan Kim <jonathan.kim@amd.com>
Date:   Wed Jan 8 14:39:58 2025 -0500

    drm/amdgpu: fix gpu recovery disable with per queue reset
    
    [ Upstream commit 86bde64cb7957be393f84e5d35fb8dfc91e4ae7e ]
    
    Per queue reset should be bypassed when gpu recovery is disabled
    with module parameter.
    
    Fixes: ee0a469cf917 ("drm/amdkfd: support per-queue reset on gfx9")
    Signed-off-by: Jonathan Kim <jonathan.kim@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: Fix potential NULL pointer dereference in atomctrl_get_smc_sclk_range_table [+ + +]
Author: Ivan Stepchenko <sid@itb.spb.ru>
Date:   Mon Dec 2 11:00:43 2024 +0300

    drm/amdgpu: Fix potential NULL pointer dereference in atomctrl_get_smc_sclk_range_table
    
    [ Upstream commit 357445e28ff004d7f10967aa93ddb4bffa5c3688 ]
    
    The function atomctrl_get_smc_sclk_range_table() does not check the return
    value of smu_atom_get_data_table(). If smu_atom_get_data_table() fails to
    retrieve SMU_Info table, it returns NULL which is later dereferenced.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    In practice this should never happen as this code only gets called
    on polaris chips and the vbios data table will always be present on
    those chips.
    
    Fixes: a23eefa2f461 ("drm/amd/powerplay: enable dpm for baffin.")
    Signed-off-by: Ivan Stepchenko <sid@itb.spb.ru>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: tear down ttm range manager for doorbell in amdgpu_ttm_fini() [+ + +]
Author: Jiang Liu <gerry@linux.alibaba.com>
Date:   Mon Dec 23 00:27:21 2024 +0800

    drm/amdgpu: tear down ttm range manager for doorbell in amdgpu_ttm_fini()
    
    [ Upstream commit 60a2c0c12b644450e420ffc42291d1eb248bacb7 ]
    
    Tear down ttm range manager for doorbell in function amdgpu_ttm_fini(),
    to avoid memory leakage.
    
    Fixes: 792b84fb9038 ("drm/amdgpu: initialize ttm for doorbells")
    Signed-off-by: Jiang Liu <gerry@linux.alibaba.com>
    Signed-off-by: Kent Russell <kent.russell@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/bridge: it6505: Change definition of AUX_FIFO_MAX_SIZE [+ + +]
Author: Hermes Wu <hermes.wu@ite.com.tw>
Date:   Mon Dec 30 18:51:19 2024 +0800

    drm/bridge: it6505: Change definition of AUX_FIFO_MAX_SIZE
    
    [ Upstream commit c14870218c14532b0f0a7805b96a4d3c92d06fb2 ]
    
    The hardware AUX FIFO is 16 bytes
    Change definition of AUX_FIFO_MAX_SIZE to 16
    
    Fixes: b5c84a9edcd4 ("drm/bridge: add it6505 driver")
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Hermes Wu <hermes.wu@ite.com.tw>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241230-v7-upstream-v7-1-e0fdd4844703@ite.corp-partner.google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/connector: Allow clearing HDMI infoframes [+ + +]
Author: Derek Foreman <derek.foreman@collabora.com>
Date:   Mon Dec 2 12:19:39 2024 -0600

    drm/connector: Allow clearing HDMI infoframes
    
    [ Upstream commit d34357743b360c99903b5a59daab08f55b2f41a1 ]
    
    Our infoframe setting code currently lacks the ability to clear
    infoframes. For some of the infoframes, we only need to replace them,
    so if an error occurred when generating a new infoframe we would leave
    a stale frame instead of clearing the frame.
    
    However, the Dynamic Range and Mastering (DRM) infoframe should only
    be present when displaying HDR content (ie: the HDR_OUTPUT_METADATA blob
    is set). If we can't clear infoframes, the stale DRM infoframe will
    remain and we can never set the display back to SDR mode.
    
    With this change, we clear infoframes when they can not, or should not,
    be generated. This fixes switching to an SDR mode from an HDR one.
    
    Fixes: f378b77227bc ("drm/connector: hdmi: Add Infoframes generation")
    Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241202181939.724011-1-derek.foreman@collabora.com
    Signed-off-by: Maxime Ripard <mripard@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/etnaviv: Fix page property being used for non writecombine buffers [+ + +]
Author: Sui Jingfeng <sui.jingfeng@linux.dev>
Date:   Mon Nov 4 08:41:56 2024 +0800

    drm/etnaviv: Fix page property being used for non writecombine buffers
    
    [ Upstream commit 834f304192834d6f0941954f3277ae0ba11a9a86 ]
    
    In the etnaviv_gem_vmap_impl() function, the driver vmap whatever buffers
    with write combine(WC) page property, this is incorrect. Cached buffers
    should be mapped with the cached page property and uncached buffers should
    be mapped with the uncached page property.
    
    Fixes: a0a5ab3e99b8 ("drm/etnaviv: call correct function when trying to vmap a DMABUF")
    Signed-off-by: Sui Jingfeng <sui.jingfeng@linux.dev>
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/dp: set safe_to_exit_level before printing it [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Mon Dec 2 12:06:31 2024 +0200

    drm/msm/dp: set safe_to_exit_level before printing it
    
    [ Upstream commit 7dee35d79bb046bfd425aa9e58a82414f67c1cec ]
    
    Rather than printing random garbage from stack and pretending that it is
    the default safe_to_exit_level, set the variable beforehand.
    
    Fixes: d13e36d7d222 ("drm/msm/dp: add audio support for Display Port on MSM")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202411081748.0PPL9MIj-lkp@intel.com/
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Patchwork: https://patchwork.freedesktop.org/patch/626804/
    Link: https://lore.kernel.org/r/20241202-fd-dp-audio-fixup-v2-1-d9187ea96dad@linaro.org
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/dpu: link DSPP_2/_3 blocks on SC8180X [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Fri Dec 20 03:28:31 2024 +0200

    drm/msm/dpu: link DSPP_2/_3 blocks on SC8180X
    
    [ Upstream commit 0986163245df6bece47113e506143a7e87b0097d ]
    
    Link DSPP_2 to the LM_2 and DSPP_3 to the LM_3 mixer blocks. This allows
    using colour transformation matrix (aka night mode) with more outputs at
    the same time.
    
    Fixes: f5abecfe339e ("drm/msm/dpu: enable DSPP and DSC on sc8180x")
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/629954/
    Link: https://lore.kernel.org/r/20241220-dpu-fix-catalog-v2-3-38fa961ea992@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: link DSPP_2/_3 blocks on SM8150 [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Fri Dec 20 03:28:30 2024 +0200

    drm/msm/dpu: link DSPP_2/_3 blocks on SM8150
    
    [ Upstream commit ac440a31e523805939215b24d2f0c451b48d5891 ]
    
    Link DSPP_2 to the LM_2 and DSPP_3 to the LM_3 mixer blocks. This allows
    using colour transformation matrix (aka night mode) with more outputs at
    the same time.
    
    Fixes: 05ae91d960fd ("drm/msm/dpu: enable DSPP support on SM8[12]50")
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/629952/
    Link: https://lore.kernel.org/r/20241220-dpu-fix-catalog-v2-2-38fa961ea992@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: link DSPP_2/_3 blocks on SM8250 [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Fri Dec 20 03:28:32 2024 +0200

    drm/msm/dpu: link DSPP_2/_3 blocks on SM8250
    
    [ Upstream commit 8252028092f86d413b3a83e5e76a9615073a0c7f ]
    
    Link DSPP_2 to the LM_2 and DSPP_3 to the LM_3 mixer blocks. This allows
    using colour transformation matrix (aka night mode) with more outputs at
    the same time.
    
    Fixes: 05ae91d960fd ("drm/msm/dpu: enable DSPP support on SM8[12]50")
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/629956/
    Link: https://lore.kernel.org/r/20241220-dpu-fix-catalog-v2-4-38fa961ea992@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: link DSPP_2/_3 blocks on SM8350 [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Fri Dec 20 03:28:33 2024 +0200

    drm/msm/dpu: link DSPP_2/_3 blocks on SM8350
    
    [ Upstream commit 42323d3c9e04c725d27606c31663b80a7cc30218 ]
    
    Link DSPP_2 to the LM_2 and DSPP_3 to the LM_3 mixer blocks. This allows
    using colour transformation matrix (aka night mode) with more outputs at
    the same time.
    
    Fixes: 0e91bcbb0016 ("drm/msm/dpu: Add SM8350 to hw catalog")
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/629959/
    Link: https://lore.kernel.org/r/20241220-dpu-fix-catalog-v2-5-38fa961ea992@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: link DSPP_2/_3 blocks on SM8550 [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Fri Dec 20 03:28:34 2024 +0200

    drm/msm/dpu: link DSPP_2/_3 blocks on SM8550
    
    [ Upstream commit e21f9d85b05361bc343b11ecf84ac12c9cccbc3e ]
    
    Link DSPP_2 to the LM_2 and DSPP_3 to the LM_3 mixer blocks. This allows
    using colour transformation matrix (aka night mode) with more outputs at
    the same time.
    
    Fixes: efcd0107727c ("drm/msm/dpu: add support for SM8550")
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/629961/
    Link: https://lore.kernel.org/r/20241220-dpu-fix-catalog-v2-6-38fa961ea992@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: link DSPP_2/_3 blocks on SM8650 [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Fri Dec 20 03:28:35 2024 +0200

    drm/msm/dpu: link DSPP_2/_3 blocks on SM8650
    
    [ Upstream commit 3d3ca0915aa3692a837f7235ca9d12db26f09911 ]
    
    Link DSPP_2 to the LM_2 and DSPP_3 to the LM_3 mixer blocks. This allows
    using colour transformation matrix (aka night mode) with more outputs at
    the same time.
    
    Fixes: b94747f7d8c7 ("drm/msm/dpu: add support for SM8650 DPU")
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/629962/
    Link: https://lore.kernel.org/r/20241220-dpu-fix-catalog-v2-7-38fa961ea992@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: link DSPP_2/_3 blocks on X1E80100 [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Fri Dec 20 03:28:36 2024 +0200

    drm/msm/dpu: link DSPP_2/_3 blocks on X1E80100
    
    [ Upstream commit 3a7a4bebe0dbe22686da7de573f183e0c842883a ]
    
    Link DSPP_2 to the LM_2 and DSPP_3 to the LM_3 mixer blocks. This allows
    using colour transformation matrix (aka night mode) with more outputs at
    the same time.
    
    Fixes: e3b1f369db5a ("drm/msm/dpu: Add X1E80100 support")
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/629966/
    Link: https://lore.kernel.org/r/20241220-dpu-fix-catalog-v2-8-38fa961ea992@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: provide DSPP and correct LM config for SDM670 [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Fri Dec 20 03:28:29 2024 +0200

    drm/msm/dpu: provide DSPP and correct LM config for SDM670
    
    [ Upstream commit 9a20f33495bfd45ca6712213f30697f686d0b6fd ]
    
    On SDM670 the DPU has two DSPP blocks compared to 4 DSPP blocks on
    SDM845. Currently SDM670 just reuses LMs and DSPPs from SDM845. Define
    platform-specific configuration for those blocks.
    
    Fixes: e140b7e496b7 ("drm/msm/dpu: Add hw revision 4.1 (SDM670)")
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/629951/
    Link: https://lore.kernel.org/r/20241220-dpu-fix-catalog-v2-1-38fa961ea992@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/hdmi: simplify code in pll_get_integloop_gain [+ + +]
Author: Rex Nie <rex.nie@jaguarmicro.com>
Date:   Tue Nov 12 15:41:00 2024 +0800

    drm/msm/hdmi: simplify code in pll_get_integloop_gain
    
    [ Upstream commit c1beb6f75d5e60e4e57a837c665a52eb79eb19ba ]
    
    In pll_get_integloop_gain(), digclk_divsel=1 or 2, base=63 or 196ULL,
    so the base may be 63, 126, 196, 392. The condition base <= 2046
    always true.
    
    Fixes: caedbf17c48d ("drm/msm: add msm8998 hdmi phy/pll support")
    Signed-off-by: Rex Nie <rex.nie@jaguarmicro.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Patchwork: https://patchwork.freedesktop.org/patch/624153/
    Link: https://lore.kernel.org/r/20241112074101.2206-1-rex.nie@jaguarmicro.com
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/mdp4: correct LCDC regulator name [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Sat Apr 20 05:33:03 2024 +0300

    drm/msm/mdp4: correct LCDC regulator name
    
    [ Upstream commit 8aa337cbe7a61a5a98a4d3f446fc968b3bac914a ]
    
    Correct c&p error from the conversion of LCDC regulators to the bulk
    API.
    
    Fixes: 54f1fbcb47d4 ("drm/msm/mdp4: use bulk regulators API for LCDC encoder")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Patchwork: https://patchwork.freedesktop.org/patch/590412/
    Link: https://lore.kernel.org/r/20240420-mdp4-fixes-v1-3-96a70f64fa85@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm: Check return value of of_dma_configure() [+ + +]
Author: Sui Jingfeng <sui.jingfeng@linux.dev>
Date:   Mon Nov 4 17:07:38 2024 +0800

    drm/msm: Check return value of of_dma_configure()
    
    [ Upstream commit b34a7401ffaee45354e81b38a4d072794079cfd6 ]
    
    Because the of_dma_configure() will returns '-EPROBE_DEFER' if the probe
    procedure of the specific platform IOMMU driver is not finished yet. It
    can also return other error code for various reasons.
    
    Stop pretending that it will always suceess, quit if it fail.
    
    Signed-off-by: Sui Jingfeng <sui.jingfeng@linux.dev>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Fixes: 29ac8979cdf7 ("drm/msm/a6xx: use msm_gem for GMU memory objects")
    Fixes: 5a903a44a984 ("drm/msm/a6xx: Introduce GMU wrapper support")
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/622782/
    Link: https://lore.kernel.org/r/20241104090738.529848-1-sui.jingfeng@linux.dev
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm: don't clean up priv->kms prematurely [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Sat Apr 20 05:33:01 2024 +0300

    drm/msm: don't clean up priv->kms prematurely
    
    [ Upstream commit ebc0deda3c2948d40419677d388b4e6081688a06 ]
    
    MSM display drivers provide kms structure allocated during probe().
    Don't clean up priv->kms field in case of an error. Otherwise probe
    functions might fail after KMS probe deferral.
    
    Fixes: a2ab5d5bb6b1 ("drm/msm: allow passing struct msm_kms to msm_drv_probe()")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Fixes: 506efcba3129 ("drm/msm: carve out KMS code from msm_drv.c")
    Patchwork: https://patchwork.freedesktop.org/patch/590411/
    Link: https://lore.kernel.org/r/20240420-mdp4-fixes-v1-1-96a70f64fa85@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/panthor: Preserve the result returned by panthor_fw_resume() [+ + +]
Author: Boris Brezillon <boris.brezillon@collabora.com>
Date:   Wed Dec 11 08:54:15 2024 +0100

    drm/panthor: Preserve the result returned by panthor_fw_resume()
    
    [ Upstream commit 4bd56ca8226dda6115bca385b166ef87e867d807 ]
    
    WARN() will return true if the condition is true, false otherwise.
    If we store the return of drm_WARN_ON() in ret, we lose the actual
    error code.
    
    v3:
    - Add R-b
    v2:
    - Add R-b
    
    Fixes: 5fe909cae118 ("drm/panthor: Add the device logical block")
    Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
    Reviewed-by: Steven Price <steven.price@arm.com>
    Reviewed-by: Adrian Larumbe <adrian.larumbe@collabora.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241211075419.2333731-2-boris.brezillon@collabora.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/rockchip: vop2: Add check for 32 bpp format for rk3588 [+ + +]
Author: Andy Yan <andy.yan@rock-chips.com>
Date:   Sat Dec 14 16:17:05 2024 +0800

    drm/rockchip: vop2: Add check for 32 bpp format for rk3588
    
    [ Upstream commit 7e8a56c703c67bfa8d3f71a0c1c297bb1252b897 ]
    
    RK3588 only support DRM_FORMAT_XRGB2101010/XBGR2101010 in afbc mode.
    
    Fixes: 5a028e8f062f ("drm/rockchip: vop2: Add support for rk3588")
    Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241214081719.3330518-7-andyshrk@163.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/rockchip: vop2: Check linear format for Cluster windows on rk3566/8 [+ + +]
Author: Andy Yan <andy.yan@rock-chips.com>
Date:   Sat Dec 14 16:17:04 2024 +0800

    drm/rockchip: vop2: Check linear format for Cluster windows on rk3566/8
    
    [ Upstream commit df063c0b8ffbdca486ab2f802e716973985d8f86 ]
    
    The Cluster windows on rk3566/8 only support afbc mode.
    
    Fixes: 604be85547ce ("drm/rockchip: Add VOP2 driver")
    Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241214081719.3330518-6-andyshrk@163.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/rockchip: vop2: Fix cluster windows alpha ctrl regsiters offset [+ + +]
Author: Andy Yan <andy.yan@rock-chips.com>
Date:   Mon Dec 9 20:29:15 2024 +0800

    drm/rockchip: vop2: Fix cluster windows alpha ctrl regsiters offset
    
    [ Upstream commit 17b4b10a0df1a1421d5fbdc03bad0bd3799bc966 ]
    
    The phy_id of cluster windws are not increase one for each window.
    
    Fixes: 604be85547ce ("drm/rockchip: Add VOP2 driver")
    Tested-by: Derek Foreman <derek.foreman@collabora.com>
    Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241209122943.2781431-6-andyshrk@163.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/rockchip: vop2: fix rk3588 dp+dsi maxclk verification [+ + +]
Author: Heiko Stuebner <heiko.stuebner@cherry.de>
Date:   Fri Nov 15 16:11:31 2024 +0100

    drm/rockchip: vop2: fix rk3588 dp+dsi maxclk verification
    
    [ Upstream commit 5807f4ee6d32a4cce9a4df36f0d455c64c861947 ]
    
    The clock is in Hz while the value checked against is in kHz, so
    actual frequencies will never be able to be below to max value.
    Fix this by specifying the max-value in Hz too.
    
    Fixes: 5a028e8f062f ("drm/rockchip: vop2: Add support for rk3588")
    Signed-off-by: Heiko Stuebner <heiko.stuebner@cherry.de>
    Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
    Acked-by: Andy Yan <andyshrk@163.com>
    Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Tested-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241115151131.416830-1-heiko@sntech.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/rockchip: vop2: Fix the mixer alpha setup for layer 0 [+ + +]
Author: Andy Yan <andy.yan@rock-chips.com>
Date:   Mon Dec 9 20:29:16 2024 +0800

    drm/rockchip: vop2: Fix the mixer alpha setup for layer 0
    
    [ Upstream commit 6b4dfdcde3573a12b72d2869dabd4ca37ad7e9c7 ]
    
    The alpha setup should start from the second layer, the current calculation
    starts incorrectly from the first layer, a negative offset will be obtained
    in the following formula:
    
    offset = (mixer_id + zpos - 1) * 0x10
    
    Fixes: 604be85547ce ("drm/rockchip: Add VOP2 driver")
    Tested-by: Derek Foreman <derek.foreman@collabora.com>
    Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241209122943.2781431-7-andyshrk@163.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/rockchip: vop2: Fix the windows switch between different layers [+ + +]
Author: Andy Yan <andy.yan@rock-chips.com>
Date:   Sat Dec 14 16:17:01 2024 +0800

    drm/rockchip: vop2: Fix the windows switch between different layers
    
    [ Upstream commit 0ca953ac226eaffbe1a795f5e517095a8d494921 ]
    
    Every layer of vop2 should bind a window, and we also need to make
    sure that this window is not used by other layer.
    
    0x5 is a reserved layer sel value on rk3568, but it will select
    Cluster3 on rk3588, configure unused layers to 0x5  will lead
    alpha blending error on rk3588.
    
    When we bind a window from layerM to layerN, we move the old window
    on layerN to layerM.
    
    Fixes: 604be85547ce ("drm/rockchip: Add VOP2 driver")
    Tested-by: Derek Foreman <derek.foreman@collabora.com>
    Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241214081719.3330518-3-andyshrk@163.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/rockchip: vop2: include rockchip_drm_drv.h [+ + +]
Author: Min-Hua Chen <minhuadotchen@gmail.com>
Date:   Sat Dec 14 16:17:06 2024 +0800

    drm/rockchip: vop2: include rockchip_drm_drv.h
    
    [ Upstream commit 77b1ccb2a27c7b3b118a03bf1730def92070d31b ]
    
    Move rockchip_drm_drv.h in rockchip_drm_vop2.h to fix the follow
    sparse warning:
    
    ARCH=arm64 LLVM=1 make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
    mrproper defconfig all  -j12
    
    drivers/gpu/drm/rockchip/rockchip_vop2_reg.c:502:24: sparse:
    warning: symbol 'vop2_platform_driver' was not declared. Should it
    be static?
    
    It is also beneficial for the upcoming support for rk3576.
    
    Fixes: 604be85547ce ("drm/rockchip: Add VOP2 driver")
    Signed-off-by: Min-Hua Chen <minhuadotchen@gmail.com>
    Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
    Reviewed-by: Min-Hua Chen <minhuadotchen@gmail.com>
    Tested-by: Detlev Casanova <detlev.casanova@collabora.com>
    Tested-by: Michael Riesch <michael.riesch@wolfvision.net> # on RK3568
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241214081719.3330518-8-andyshrk@163.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/rockchip: vop2: Set AXI id for rk3588 [+ + +]
Author: Andy Yan <andy.yan@rock-chips.com>
Date:   Sat Dec 14 16:17:02 2024 +0800

    drm/rockchip: vop2: Set AXI id for rk3588
    
    [ Upstream commit 7b256880fdb2d7f23393b87bb557090f049e686a ]
    
    There are two AXI bus in vop2, windows attached on the same bus must
    have a unique channel YUV and RGB channel ID.
    
    The default IDs will conflict with each other on the rk3588, so they
    need to be reassigned.
    
    Fixes: 5a028e8f062f ("drm/rockchip: vop2: Add support for rk3588")
    Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
    Tested-by: Derek Foreman <derek.foreman@collabora.com>
    Tested-by: Detlev Casanova <detlev.casanova@collabora.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241214081719.3330518-4-andyshrk@163.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/rockchip: vop2: Setup delay cycle for Esmart2/3 [+ + +]
Author: Andy Yan <andy.yan@rock-chips.com>
Date:   Sat Dec 14 16:17:03 2024 +0800

    drm/rockchip: vop2: Setup delay cycle for Esmart2/3
    
    [ Upstream commit c766998ba6df126ab6934d32ff2ff080316ec630 ]
    
    Each layer needs to set the correct delay cycle to display properly
    without unexpected offset on screen.
    
    Fixes: 5a028e8f062f ("drm/rockchip: vop2: Add support for rk3588")
    Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
    Tested-by: Derek Foreman <derek.foreman@collabora.com>
    Tested-by: Detlev Casanova <detlev.casanova@collabora.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241214081719.3330518-5-andyshrk@163.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/v3d: Fix performance counter source settings on V3D 7.x [+ + +]
Author: Maíra Canal <mcanal@igalia.com>
Date:   Wed Nov 6 09:16:51 2024 -0300

    drm/v3d: Fix performance counter source settings on V3D 7.x
    
    [ Upstream commit e987e22e9229d70c2083a91cc61269b2c4924955 ]
    
    When the new register addresses were introduced for V3D 7.x, we added
    new masks for performance counter sources on V3D 7.x.  Nevertheless,
    we never apply these new masks when setting the sources.
    
    Fix the performance counter source settings on V3D 7.x by introducing
    a new macro, `V3D_SET_FIELD_VER`, which allows fields setting to vary
    by version. Using this macro, we can provide different values for
    source mask based on the V3D version, ensuring that sources are
    correctly configure on V3D 7.x.
    
    Fixes: 0ad5bc1ce463 ("drm/v3d: fix up register addresses for V3D 7.x")
    Signed-off-by: Maíra Canal <mcanal@igalia.com>
    Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
    Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241106121736.5707-1-mcanal@igalia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dt-bindings: clock: Add i.MX91 clock support [+ + +]
Author: Pengfei Li <pengfei.li_1@nxp.com>
Date:   Wed Oct 23 11:46:49 2024 -0700

    dt-bindings: clock: Add i.MX91 clock support
    
    [ Upstream commit f029d870096fcd8565a2ee8c2d0078b9aaec4fdb ]
    
    i.MX91 has similar Clock Control Module(CCM) design as i.MX93, only add
    few new clock compared to i.MX93.
    Add a new compatible string and some new clocks for i.MX91.
    
    Signed-off-by: Pengfei Li <pengfei.li_1@nxp.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Link: https://lore.kernel.org/r/20241023184651.381265-4-pengfei.li_1@nxp.com
    Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
    Stable-dep-of: 32e9dea2645f ("dt-bindings: clock: imx93: Add SPDIF IPG clk")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dt-bindings: clock: imx93: Add SPDIF IPG clk [+ + +]
Author: Shengjiu Wang <shengjiu.wang@nxp.com>
Date:   Tue Nov 19 09:58:03 2024 +0800

    dt-bindings: clock: imx93: Add SPDIF IPG clk
    
    [ Upstream commit 32e9dea2645fa10dfa08b4e333918affaf1e4de5 ]
    
    Add SPDIF IPG clk. The SPDIF IPG clock and root clock
    share same clock gate.
    
    Fixes: 1c4a4f7362fd ("arm64: dts: imx93: Add audio device nodes")
    Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Link: https://lore.kernel.org/r/20241119015805.3840606-2-shengjiu.wang@nxp.com
    Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dt-bindings: clock: imx93: Drop IMX93_CLK_END macro definition [+ + +]
Author: Pengfei Li <pengfei.li_1@nxp.com>
Date:   Wed Oct 23 11:46:48 2024 -0700

    dt-bindings: clock: imx93: Drop IMX93_CLK_END macro definition
    
    [ Upstream commit c0813ce2e5b0d1174782aff30d366509377abc7b ]
    
    IMX93_CLK_END should be dropped as it is not part of the ABI.
    
    Signed-off-by: Pengfei Li <pengfei.li_1@nxp.com>
    Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Acked-by: Peng Fan <peng.fan@nxp.com>
    Acked-by: Conor Dooley <conor.dooley@microchip.com>
    Link: https://lore.kernel.org/r/20241023184651.381265-3-pengfei.li_1@nxp.com
    Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
    Stable-dep-of: 32e9dea2645f ("dt-bindings: clock: imx93: Add SPDIF IPG clk")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dt-bindings: clock: sunxi: Export PLL_VIDEO_2X and PLL_MIPI [+ + +]
Author: Vasily Khoruzhick <anarsoul@gmail.com>
Date:   Fri Jan 3 23:36:57 2025 -0800

    dt-bindings: clock: sunxi: Export PLL_VIDEO_2X and PLL_MIPI
    
    [ Upstream commit 9897831de614f1d8d5184547f0e7bf7665eed436 ]
    
    Export PLL_VIDEO_2X and PLL_MIPI, these will be used to explicitly
    select TCON0 clock parent in dts
    
    Fixes: ca1170b69968 ("clk: sunxi-ng: a64: force select PLL_MIPI in TCON0 mux")
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Reviewed-by: Chen-Yu Tsai <wens@csie.org>
    Tested-by: Frank Oltmanns <frank@oltmanns.dev> # on PinePhone
    Tested-by: Stuart Gathman <stuart@gathman.org> # on OG Pinebook
    Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
    Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
    Link: https://patch.msgid.link/20250104074035.1611136-2-anarsoul@gmail.com
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Stable-dep-of: 0f368cb7ef10 ("clk: sunxi-ng: a64: drop redundant CLK_PLL_VIDEO0_2X and CLK_PLL_MIPI")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dt-bindings: leds: class-multicolor: Fix path to color definitions [+ + +]
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Thu Nov 14 13:44:29 2024 +0100

    dt-bindings: leds: class-multicolor: Fix path to color definitions
    
    [ Upstream commit 609bc99a4452ffbce82d10f024a85d911c42e6cd ]
    
    The LED color definitions have always been in
    include/dt-bindings/leds/common.h in upstream.
    
    Fixes: 5c7f8ffe741daae7 ("dt: bindings: Add multicolor class dt bindings documention")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Acked-by: Conor Dooley <conor.dooley@microchip.com>
    Link: https://lore.kernel.org/r/a3c7ea92e90b77032f2e480d46418b087709286d.1731588129.git.geert+renesas@glider.be
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dt-bindings: mfd: bd71815: Fix rsense and typos [+ + +]
Author: Matti Vaittinen <mazziesaccount@gmail.com>
Date:   Tue Nov 12 19:01:06 2024 +0200

    dt-bindings: mfd: bd71815: Fix rsense and typos
    
    [ Upstream commit 6856edf7ead8c54803216a38a7b227bcb3dadff7 ]
    
    The sense resistor used for measuring currents is typically some tens of
    milli Ohms. It has accidentally been documented to be tens of mega Ohms.
    Fix the size of this resistor and a few copy-paste errors while at it.
    
    Drop the unsuitable 'rohm,charger-sense-resistor-ohms' property (which
    can't represent resistors smaller than one Ohm), and introduce a new
    'rohm,charger-sense-resistor-micro-ohms' property with appropriate
    minimum, maximum and default values instead.
    
    Fixes: 4238dc1e6490 ("dt_bindings: mfd: Add ROHM BD71815 PMIC")
    Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
    Acked-by: Conor Dooley <conor.dooley@microchip.com>
    Link: https://lore.kernel.org/r/0efd8e9de0ae8d62ee4c6b78cc565b04007a245d.1731430700.git.mazziesaccount@gmail.com
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dt-bindings: mmc: controller: clarify the address-cells description [+ + +]
Author: Neil Armstrong <neil.armstrong@linaro.org>
Date:   Thu Nov 28 16:16:41 2024 +0100

    dt-bindings: mmc: controller: clarify the address-cells description
    
    [ Upstream commit b2b8e93ec00b8110cb37cbde5400d5abfdaed6a7 ]
    
    The term "slot ID" has nothing to do with the SDIO function number
    which is specified in the reg property of the subnodes, rephrase
    the description to be more accurate.
    
    Fixes: f9b7989859dd ("dt-bindings: mmc: Add YAML schemas for the generic MMC options")
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Acked-by: Rob Herring (Arm) <robh@kernel.org>
    Message-ID: <20241128-topic-amlogic-arm32-upstream-bindings-fixes-convert-meson-mx-sdio-v4-1-11d9f9200a59@linaro.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dts: arm64: mediatek: mt8195: Remove MT8183 compatible for OVL [+ + +]
Author: Jason-JH.Lin <jason-jh.lin@mediatek.com>
Date:   Fri Dec 20 02:15:31 2024 +0800

    dts: arm64: mediatek: mt8195: Remove MT8183 compatible for OVL
    
    [ Upstream commit ce3dbc46d7e30a84b8e99c730e3172dd5efbf094 ]
    
    The OVL hardware capabilities have changed starting from MT8195,
    making the MT8183 compatible no longer applicable.
    Therefore, it is necessary to remove the MT8183 compatible for OVL.
    
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
    Fixes: b852ee68fd72 ("arm64: dts: mt8195: Add display node for vdosys0")
    Link: https://lore.kernel.org/r/20241219181531.4282-5-jason-jh.lin@mediatek.com
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
efi: sysfb_efi: fix W=1 warnings when EFI is not set [+ + +]
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Tue Jan 7 15:53:09 2025 -0800

    efi: sysfb_efi: fix W=1 warnings when EFI is not set
    
    [ Upstream commit 19fdc68aa7b90b1d3d600e873a3e050a39e7663d ]
    
    A build with W=1 fails because there are code and data that are not
    needed or used when CONFIG_EFI is not set. Move the "#ifdef CONFIG_EFI"
    block to earlier in the source file so that the unused code/data are
    not built.
    
    drivers/firmware/efi/sysfb_efi.c:345:39: warning: ‘efifb_fwnode_ops’ defined but not used [-Wunused-const-variable=]
      345 | static const struct fwnode_operations efifb_fwnode_ops = {
          |                                       ^~~~~~~~~~~~~~~~
    drivers/firmware/efi/sysfb_efi.c:238:35: warning: ‘efifb_dmi_swap_width_height’ defined but not used [-Wunused-const-variable=]
      238 | static const struct dmi_system_id efifb_dmi_swap_width_height[] __initconst = {
          |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/firmware/efi/sysfb_efi.c:188:35: warning: ‘efifb_dmi_system_table’ defined but not used [-Wunused-const-variable=]
      188 | static const struct dmi_system_id efifb_dmi_system_table[] __initconst = {
          |                                   ^~~~~~~~~~~~~~~~~~~~~~
    
    Fixes: 15d27b15de96 ("efi: sysfb_efi: fix build when EFI is not set")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202501071933.20nlmJJt-lkp@intel.com/
    Cc: David Rheinsberg <david@readahead.eu>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Cc: Javier Martinez Canillas <javierm@redhat.com>
    Cc: Peter Jones <pjones@redhat.com>
    Cc: Simona Vetter <simona@ffwll.ch>
    Cc: linux-fbdev@vger.kernel.org
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: linux-efi@vger.kernel.org
    Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
erofs: fix potential return value overflow of z_erofs_shrink_scan() [+ + +]
Author: Gao Xiang <xiang@kernel.org>
Date:   Tue Jan 14 12:00:58 2025 +0800

    erofs: fix potential return value overflow of z_erofs_shrink_scan()
    
    [ Upstream commit db902986dee453bfb5835cbc8efa67154ab34caf ]
    
    z_erofs_shrink_scan() could return small numbers due to the mistyped
    `freed`.
    
    Although I don't think it has any visible impact.
    
    Fixes: 3883a79abd02 ("staging: erofs: introduce VLE decompression support")
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20250114040058.459981-1-hsiangkao@linux.alibaba.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

erofs: get rid of erofs_{find,insert}_workgroup [+ + +]
Author: Gao Xiang <xiang@kernel.org>
Date:   Mon Oct 21 11:53:21 2024 +0800

    erofs: get rid of erofs_{find,insert}_workgroup
    
    [ Upstream commit b091e8ed24b7965953147a389bac1dc7c3e8a11c ]
    
    Just fold them into the only two callers since
    they are simple enough.
    
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20241021035323.3280682-1-hsiangkao@linux.alibaba.com
    Stable-dep-of: db902986dee4 ("erofs: fix potential return value overflow of z_erofs_shrink_scan()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

erofs: move erofs_workgroup operations into zdata.c [+ + +]
Author: Gao Xiang <xiang@kernel.org>
Date:   Mon Oct 21 11:53:22 2024 +0800

    erofs: move erofs_workgroup operations into zdata.c
    
    [ Upstream commit 9c91f959626e6d9f460b8906e27c37fca1b6456a ]
    
    Move related helpers into zdata.c as an intermediate step of getting
    rid of `struct erofs_workgroup`, and rename:
    
     erofs_workgroup_put => z_erofs_put_pcluster
     erofs_workgroup_get => z_erofs_get_pcluster
     erofs_try_to_release_workgroup => erofs_try_to_release_pcluster
     erofs_shrink_workstation => z_erofs_shrink_scan
    
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20241021035323.3280682-2-hsiangkao@linux.alibaba.com
    Stable-dep-of: db902986dee4 ("erofs: fix potential return value overflow of z_erofs_shrink_scan()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

erofs: sunset `struct erofs_workgroup` [+ + +]
Author: Gao Xiang <xiang@kernel.org>
Date:   Mon Oct 21 11:53:23 2024 +0800

    erofs: sunset `struct erofs_workgroup`
    
    [ Upstream commit bf1aa03980f4eb1599b866ccd2c4ac577ef56a8a ]
    
    `struct erofs_workgroup` was introduced to provide a unique header
    for all physically indexed objects.  However, after big pclusters and
    shared pclusters are implemented upstream, it seems that all EROFS
    encoded data (which requires transformation) can be represented with
    `struct z_erofs_pcluster` directly.
    
    Move all members into `struct z_erofs_pcluster` for simplicity.
    
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20241021035323.3280682-3-hsiangkao@linux.alibaba.com
    Stable-dep-of: db902986dee4 ("erofs: fix potential return value overflow of z_erofs_shrink_scan()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ethtool: Fix access to uninitialized fields in set RXNFC command [+ + +]
Author: Gal Pressman <gal@nvidia.com>
Date:   Mon Dec 2 18:48:05 2024 +0200

    ethtool: Fix access to uninitialized fields in set RXNFC command
    
    commit 94071909477677fc2a1abf3fb281f203f66cf3ca upstream.
    
    The check for non-zero ring with RSS is only relevant for
    ETHTOOL_SRXCLSRLINS command, in other cases the check tries to access
    memory which was not initialized by the userspace tool. Only perform the
    check in case of ETHTOOL_SRXCLSRLINS.
    
    Without this patch, filter deletion (for example) could statistically
    result in a false error:
      # ethtool --config-ntuple eth3 delete 484
      rmgr: Cannot delete RX class rule: Invalid argument
      Cannot delete classification rule
    
    Fixes: 9e43ad7a1ede ("net: ethtool: only allow set_rxnfc with rss + ring_cookie if driver opts in")
    Link: https://lore.kernel.org/netdev/871a9ecf-1e14-40dd-bbd7-e90c92f89d47@nvidia.com/
    Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Gal Pressman <gal@nvidia.com>
    Reviewed-by: Edward Cree <ecree.xilinx@gmail.com>
    Link: https://patch.msgid.link/20241202164805.1637093-1-gal@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ethtool: Fix set RXNFC command with symmetric RSS hash [+ + +]
Author: Gal Pressman <gal@nvidia.com>
Date:   Sun Jan 26 21:18:45 2025 +0200

    ethtool: Fix set RXNFC command with symmetric RSS hash
    
    [ Upstream commit 4f5a52adeb1ad675ca33f1e1eacd9c0bbaf393d4 ]
    
    The sanity check that both source and destination are set when symmetric
    RSS hash is requested is only relevant for ETHTOOL_SRXFH (rx-flow-hash),
    it should not be performed on any other commands (e.g.
    ETHTOOL_SRXCLSRLINS/ETHTOOL_SRXCLSRLDEL).
    
    This resolves accessing uninitialized 'info.data' field, and fixes false
    errors in rule insertion:
      # ethtool --config-ntuple eth2 flow-type ip4 dst-ip 255.255.255.255 action -1 loc 0
      rmgr: Cannot insert RX class rule: Invalid argument
      Cannot insert classification rule
    
    Fixes: 13e59344fb9d ("net: ethtool: add support for symmetric-xor RSS hash")
    Cc: Ahmed Zaki <ahmed.zaki@intel.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Gal Pressman <gal@nvidia.com>
    Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Reviewed-by: Edward Cree <ecree.xilinx@gmail.com>
    Reviewed-by: Ahmed Zaki <ahmed.zaki@intel.com>
    Link: https://patch.msgid.link/20250126191845.316589-1-gal@nvidia.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ethtool: ntuple: fix rss + ring_cookie check [+ + +]
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Fri Jan 31 17:30:38 2025 -0800

    ethtool: ntuple: fix rss + ring_cookie check
    
    commit 2b91cc1214b165c25ac9b0885db89a0d3224028a upstream.
    
    The info.flow_type is for RXFH commands, ntuple flow_type is inside
    the flow spec. The check currently does nothing, as info.flow_type
    is 0 (or even uninitialized by user space) for ETHTOOL_SRXCLSRLINS.
    
    Fixes: 9e43ad7a1ede ("net: ethtool: only allow set_rxnfc with rss + ring_cookie if driver opts in")
    Reviewed-by: Gal Pressman <gal@nvidia.com>
    Reviewed-by: Joe Damato <jdamato@fastly.com>
    Link: https://patch.msgid.link/20250201013040.725123-3-kuba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
f2fs: Introduce linear search for dentries [+ + +]
Author: Daniel Lee <chullee@google.com>
Date:   Fri Dec 20 15:41:31 2024 -0800

    f2fs: Introduce linear search for dentries
    
    commit 91b587ba79e1b68bb718d12b0758dbcdab4e9cb7 upstream.
    
    This patch addresses an issue where some files in case-insensitive
    directories become inaccessible due to changes in how the kernel function,
    utf8_casefold(), generates case-folded strings from the commit 5c26d2f1d3f5
    ("unicode: Don't special case ignorable code points").
    
    F2FS uses these case-folded names to calculate hash values for locating
    dentries and stores them on disk. Since utf8_casefold() can produce
    different output across kernel versions, stored hash values and newly
    calculated hash values may differ. This results in affected files no
    longer being found via the hash-based lookup.
    
    To resolve this, the patch introduces a linear search fallback.
    If the initial hash-based search fails, F2FS will sequentially scan the
    directory entries.
    
    Fixes: 5c26d2f1d3f5 ("unicode: Don't special case ignorable code points")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=219586
    Signed-off-by: Daniel Lee <chullee@google.com>
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Cc: Daniel Rosenberg <drosen@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fbdev: omapfb: Fix an OF node leak in dss_of_port_get_parent_device() [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Wed Jan 8 10:15:37 2025 +0900

    fbdev: omapfb: Fix an OF node leak in dss_of_port_get_parent_device()
    
    [ Upstream commit de124b61e179e690277116e6be512e4f422b5dd8 ]
    
    dss_of_port_get_parent_device() leaks an OF node reference when i >= 2
    and struct device_node *np is present. Since of_get_next_parent()
    obtains a reference of the returned OF node, call of_node_put() before
    returning NULL.
    
    This was found by an experimental verifier that I am developing, and no
    runtime test was able to be performed due to that lack of actual
    devices.
    
    Fixes: f76ee892a99e ("omapfb: copy omapdss & displays for omapfb")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
firewire: test: Fix potential null dereference in firewire kunit test [+ + +]
Author: Charles Han <hanchunchao@inspur.com>
Date:   Fri Jan 10 16:42:37 2025 +0800

    firewire: test: Fix potential null dereference in firewire kunit test
    
    [ Upstream commit 352fafe97784e81a10a7c74bd508f71a19b53c2a ]
    
    kunit_kzalloc() may return a NULL pointer, dereferencing it without
    NULL check may lead to NULL dereference.
    Add a NULL check for test_state.
    
    Fixes: 1c8506d62624 ("firewire: test: add test of device attributes for simple AV/C device")
    Signed-off-by: Charles Han <hanchunchao@inspur.com>
    Link: https://lore.kernel.org/r/20250110084237.8877-1-hanchunchao@inspur.com
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
firmware: qcom: scm: Cleanup global '__scm' on probe failures [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Mon Dec 9 15:27:57 2024 +0100

    firmware: qcom: scm: Cleanup global '__scm' on probe failures
    
    [ Upstream commit 1e76b546e6fca7eb568161f408133904ca6bcf4f ]
    
    If SCM driver fails the probe, it should not leave global '__scm'
    variable assigned, because external users of this driver will assume the
    probe finished successfully.  For example TZMEM parts ('__scm->mempool')
    are initialized later in the probe, but users of it (__scm_smc_call())
    rely on the '__scm' variable.
    
    This fixes theoretical NULL pointer exception, triggered via introducing
    probe deferral in SCM driver with call trace:
    
      qcom_tzmem_alloc+0x70/0x1ac (P)
      qcom_tzmem_alloc+0x64/0x1ac (L)
      qcom_scm_assign_mem+0x78/0x194
      qcom_rmtfs_mem_probe+0x2d4/0x38c
      platform_probe+0x68/0xc8
    
    Fixes: 40289e35ca52 ("firmware: qcom: scm: enable the TZ mem allocator")
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Link: https://lore.kernel.org/r/20241209-qcom-scm-missing-barriers-and-all-sort-of-srap-v2-4-9061013c8d92@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fs: fix proc_handler for sysctl_nr_open [+ + +]
Author: Jinliang Zheng <alexjlzheng@gmail.com>
Date:   Sun Nov 24 11:46:36 2024 +0800

    fs: fix proc_handler for sysctl_nr_open
    
    [ Upstream commit d727935cad9f6f52c8d184968f9720fdc966c669 ]
    
    Use proc_douintvec_minmax() instead of proc_dointvec_minmax() to handle
    sysctl_nr_open, because its data type is unsigned int, not int.
    
    Fixes: 9b80a184eaad ("fs/file: more unsigned file descriptors")
    Signed-off-by: Jinliang Zheng <alexjlzheng@tencent.com>
    Link: https://lore.kernel.org/r/20241124034636.325337-1-alexjlzheng@tencent.com
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
genirq: Make handle_enforce_irqctx() unconditionally available [+ + +]
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Dec 10 11:20:43 2024 +0100

    genirq: Make handle_enforce_irqctx() unconditionally available
    
    [ Upstream commit 8d187a77f04c14fb459a5301d69f733a5a1396bc ]
    
    Commit 1b57d91b969c ("irqchip/gic-v2, v3: Prevent SW resends entirely")
    sett the flag which enforces interrupt handling in interrupt context and
    prevents software base resends for ARM GIC v2/v3.
    
    But it missed that the helper function which checks the flag was hidden
    behind CONFIG_GENERIC_PENDING_IRQ, which is not set by ARM[64].
    
    Make the helper unconditionally available so that the enforcement actually
    works.
    
    Fixes: 1b57d91b969c ("irqchip/gic-v2, v3: Prevent SW resends entirely")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/all/20241210101811.497716609@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
genksyms: fix memory leak when the same symbol is added from source [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Fri Jan 3 16:30:38 2025 +0900

    genksyms: fix memory leak when the same symbol is added from source
    
    [ Upstream commit 45c9c4101d3d2fdfa00852274bbebba65fcc3cf2 ]
    
    When a symbol that is already registered is added again, __add_symbol()
    returns without freeing the symbol definition, making it unreachable.
    
    The following test cases demonstrate different memory leak points.
    
    [Test Case 1]
    
    Forward declaration with exactly the same definition
    
      $ cat foo.c
      #include <linux/export.h>
      void foo(void);
      void foo(void) {}
      EXPORT_SYMBOL(foo);
    
    [Test Case 2]
    
    Forward declaration with a different definition (e.g. attribute)
    
      $ cat foo.c
      #include <linux/export.h>
      void foo(void);
      __attribute__((__section__(".ref.text"))) void foo(void) {}
      EXPORT_SYMBOL(foo);
    
    [Test Case 3]
    
    Preserving an overridden symbol (compile with KBUILD_PRESERVE=1)
    
      $ cat foo.c
      #include <linux/export.h>
      void foo(void);
      void foo(void) { }
      EXPORT_SYMBOL(foo);
    
      $ cat foo.symref
      override foo void foo ( int )
    
    The memory leaks in Test Case 1 and 2 have existed since the introduction
    of genksyms into the kernel tree. [1]
    
    The memory leak in Test Case 3 was introduced by commit 5dae9a550a74
    ("genksyms: allow to ignore symbol checksum changes").
    
    When multiple init_declarators are reduced to an init_declarator_list,
    the decl_spec must be duplicated. Otherwise, the following Test Case 4
    would result in a double-free bug.
    
    [Test Case 4]
    
      $ cat foo.c
      #include <linux/export.h>
    
      extern int foo, bar;
    
      int foo, bar;
      EXPORT_SYMBOL(foo);
    
    In this case, 'foo' and 'bar' share the same decl_spec, 'int'. It must
    be unshared before being passed to add_symbol().
    
    [1]: https://git.kernel.org/pub/scm/linux/kernel/git/history/history.git/commit/?id=46bd1da672d66ccd8a639d3c1f8a166048cca608
    
    Fixes: 5dae9a550a74 ("genksyms: allow to ignore symbol checksum changes")
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

genksyms: fix memory leak when the same symbol is read from *.symref file [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Fri Jan 3 16:30:39 2025 +0900

    genksyms: fix memory leak when the same symbol is read from *.symref file
    
    [ Upstream commit be2fa44b5180a1f021efb40c55fdf63c249c3209 ]
    
    When a symbol that is already registered is read again from *.symref
    file, __add_symbol() removes the previous one from the hash table without
    freeing it.
    
    [Test Case]
    
      $ cat foo.c
      #include <linux/export.h>
      void foo(void);
      void foo(void) {}
      EXPORT_SYMBOL(foo);
    
      $ cat foo.symref
      foo void foo ( void )
      foo void foo ( void )
    
    When a symbol is removed from the hash table, it must be freed along
    with its ->name and ->defn members. However, sym->name cannot be freed
    because it is sometimes shared with node->string, but not always. If
    sym->name and node->string share the same memory, free(sym->name) could
    lead to a double-free bug.
    
    To resolve this issue, always assign a strdup'ed string to sym->name.
    
    Fixes: 64e6c1e12372 ("genksyms: track symbol checksum changes")
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gpio: mxc: remove dead code after switch to DT-only [+ + +]
Author: Ahmad Fatoum <a.fatoum@pengutronix.de>
Date:   Mon Jan 13 23:19:11 2025 +0100

    gpio: mxc: remove dead code after switch to DT-only
    
    [ Upstream commit b049e7abe9001a780d58e78e3833dcceee22f396 ]
    
    struct platform_device::id was only set by board code, but since i.MX
    became a devicetree-only platform, this will always be -1
    (PLATFORM_DEVID_NONE).
    
    Note: of_alias_get_id() returns a negative number on error and base
    treats all negative errors the same, so we need not add any additional
    error handling.
    
    Fixes: 0f2c7af45d7e ("gpio: mxc: Convert the driver to DT-only")
    Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
    Reviewed-by: Andy Shevchenko <andy@kernel.org>
    Link: https://lore.kernel.org/r/20250113-b4-imx-gpio-base-warning-v1-3-0a28731a5cf6@pengutronix.de
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gpio: pca953x: log an error when failing to get the reset GPIO [+ + +]
Author: Luca Ceresoli <luca.ceresoli@bootlin.com>
Date:   Thu Dec 19 10:39:46 2024 +0100

    gpio: pca953x: log an error when failing to get the reset GPIO
    
    [ Upstream commit 7cef813a91c468253c80633891393478b9f2c966 ]
    
    When the dirver fails getting this GPIO, it fails silently. Log an error
    message to make debugging a lot easier by just reading dmesg.
    
    Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
    Fixes: 054ccdef8b28 ("gpio: pca953x: Add optional reset gpio control")
    Link: https://lore.kernel.org/r/20241219-pca953x-log-no-reset-gpio-v1-1-9aa7bcc45ead@bootlin.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hexagon: Fix unbalanced spinlock in die() [+ + +]
Author: Lin Yujun <linyujun809@huawei.com>
Date:   Mon May 22 02:56:08 2023 +0000

    hexagon: Fix unbalanced spinlock in die()
    
    [ Upstream commit 03410e87563a122075c3721acc7d5510e41d8332 ]
    
    die executes holding the spinlock of &die.lock and unlock
    it after printing the oops message.
    However in the code if the notify_die() returns NOTIFY_STOP
    , die() exit with returning 1 but never unlocked the spinlock.
    
    Fix this by adding spin_unlock_irq(&die.lock) before returning.
    
    Fixes: cf9750bae262 ("Hexagon: Provide basic debugging and system trap support.")
    Signed-off-by: Lin Yujun <linyujun809@huawei.com>
    Link: https://lore.kernel.org/r/20230522025608.2515558-1-linyujun809@huawei.com
    Signed-off-by: Brian Cain <bcain@quicinc.com>
    Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hexagon: fix using plain integer as NULL pointer warning in cmpxchg [+ + +]
Author: Willem de Bruijn <willemb@google.com>
Date:   Tue Dec 3 17:17:34 2024 -0500

    hexagon: fix using plain integer as NULL pointer warning in cmpxchg
    
    [ Upstream commit 8a20030038742b9915c6d811a4e6c14b126cafb4 ]
    
    Sparse reports
    
        net/ipv4/inet_diag.c:1511:17: sparse: sparse: Using plain integer as NULL pointer
    
    Due to this code calling cmpxchg on a non-integer type
    struct inet_diag_handler *
    
        return !cmpxchg((const struct inet_diag_handler**)&inet_diag_table[type],
                        NULL, h) ? 0 : -EEXIST;
    
    While hexagon's cmpxchg assigns an integer value to a variable of this
    type.
    
        __typeof__(*(ptr)) __oldval = 0;
    
    Update this assignment to cast 0 to the correct type.
    
    The original issue is easily reproduced at head with the below block,
    and is absent after this change.
    
        make LLVM=1 ARCH=hexagon defconfig
        make C=1 LLVM=1 ARCH=hexagon net/ipv4/inet_diag.o
    
    Fixes: 99a70aa051d2 ("Hexagon: Add processor and system headers")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202411091538.PGSTqUBi-lkp@intel.com/
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Tested-by: Christian Gmeiner <cgmeiner@igalia.com>
    Link: https://lore.kernel.org/r/20241203221736.282020-1-willemdebruijn.kernel@gmail.com
    Signed-off-by: Brian Cain <bcain@quicinc.com>
    Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
HID: core: Fix assumption that Resolution Multipliers must be in Logical Collections [+ + +]
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Dec 31 14:23:12 2024 -0500

    HID: core: Fix assumption that Resolution Multipliers must be in Logical Collections
    
    commit 64f2657b579343cf923aa933f08074e6258eb07b upstream.
    
    A report in 2019 by the syzbot fuzzer was found to be connected to two
    errors in the HID core associated with Resolution Multipliers.  One of
    the errors was fixed by commit ea427a222d8b ("HID: core: Fix deadloop
    in hid_apply_multiplier."), but the other has not been fixed.
    
    This error arises because hid_apply_multipler() assumes that every
    Resolution Multiplier control is contained in a Logical Collection,
    i.e., there's no way the routine can ever set multiplier_collection to
    NULL.  This is in spite of the fact that the function starts with a
    big comment saying:
    
             * "The Resolution Multiplier control must be contained in the same
             * Logical Collection as the control(s) to which it is to be applied.
               ...
             *  If no Logical Collection is
             * defined, the Resolution Multiplier is associated with all
             * controls in the report."
             * HID Usage Table, v1.12, Section 4.3.1, p30
             *
             * Thus, search from the current collection upwards until we find a
             * logical collection...
    
    The comment and the code overlook the possibility that none of the
    collections found may be a Logical Collection.
    
    The fix is to set the multiplier_collection pointer to NULL if the
    collection found isn't a Logical Collection.
    
    Reported-by: syzbot+ec5f884c4a135aa0dbb9@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/000000000000109c040597dc5843@google.com/
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Cc: Peter Hutterer <peter.hutterer@who-t.net>
    Fixes: 5a4abb36f312 ("HID: core: process the Resolution Multiplier")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

HID: fix generic desktop D-Pad controls [+ + +]
Author: Terry Tritton <terry.tritton@linaro.org>
Date:   Fri Dec 20 19:23:18 2024 +0000

    HID: fix generic desktop D-Pad controls
    
    [ Upstream commit 80818fdc068eaab729bb793d790ae9fd053f7053 ]
    
    The addition of the "System Do Not Disturb" event code caused the Generic
    Desktop D-Pad configuration to be skipped. This commit allows both to be
    configured without conflicting with each other.
    
    Fixes: 22d6d060ac77 ("input: Add support for "Do Not Disturb"")
    Signed-off-by: Terry Tritton <terry.tritton@linaro.org>
    Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
    Reviewed-by: Carlos Llamas <cmllamas@google.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: hid-thrustmaster: Fix warning in thrustmaster_probe by adding endpoint check [+ + +]
Author: Karol Przybylski <karprzy7@gmail.com>
Date:   Thu Dec 5 23:22:21 2024 +0100

    HID: hid-thrustmaster: Fix warning in thrustmaster_probe by adding endpoint check
    
    [ Upstream commit 50420d7c79c37a3efe4010ff9b1bb14bc61ebccf ]
    
    syzbot has found a type mismatch between a USB pipe and the transfer
    endpoint, which is triggered by the hid-thrustmaster driver[1].
    There is a number of similar, already fixed issues [2].
    In this case as in others, implementing check for endpoint type fixes the issue.
    
    [1] https://syzkaller.appspot.com/bug?extid=040e8b3db6a96908d470
    [2] https://syzkaller.appspot.com/bug?extid=348331f63b034f89b622
    
    Fixes: c49c33637802 ("HID: support for initialization of some Thrustmaster wheels")
    Reported-by: syzbot+040e8b3db6a96908d470@syzkaller.appspotmail.com
    Tested-by: syzbot+040e8b3db6a96908d470@syzkaller.appspotmail.com
    Signed-off-by: Karol Przybylski <karprzy7@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: multitouch: fix support for Goodix PID 0x01e9 [+ + +]
Author: Jiri Kosina <jikos@kernel.org>
Date:   Thu Dec 12 10:19:32 2024 +0100

    HID: multitouch: fix support for Goodix PID 0x01e9
    
    [ Upstream commit 8ade5e05bd094485ce370fad66a6a3fb6f50bfbc ]
    
    Commit c8000deb68365b ("HID: multitouch: Add support for GT7868Q") added
    support for 0x01e8 and 0x01e9, but the mt_device[] entries were added
    twice for 0x01e8 and there was none added for 0x01e9. Fix that.
    
    Fixes: c8000deb68365b ("HID: multitouch: Add support for GT7868Q")
    Reported-by: He Lugang <helugang@uniontech.com>
    Reported-by: WangYuli <wangyuli@uniontech.com>
    Reported-by: Ulrich Müller <ulm@gentoo.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hostfs: fix string handling in __dentry_name() [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sat Jan 11 01:37:44 2025 -0500

    hostfs: fix string handling in __dentry_name()
    
    [ Upstream commit 60a6002432448bb3f291d80768ae98d62efc9c77 ]
    
    strcpy() should not be used with destination potentially overlapping
    the source; what's more, strscpy() in there is pointless - we already
    know the amount we want to copy; might as well use memcpy().
    
    Fixes: c278e81b8a02 "hostfs: Remove open coded strcpy()"
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hwmon: (nct6775): Actually make use of the HWMON_NCT6775 symbol namespace [+ + +]
Author: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Date:   Tue Dec 3 18:31:49 2024 +0100

    hwmon: (nct6775): Actually make use of the HWMON_NCT6775 symbol namespace
    
    [ Upstream commit 2505f87eb3af55f3dd7f57d7cb7783b94b52a2d9 ]
    
    DEFAULT_SYMBOL_NAMESPACE must already be defined when <linux/export.h>
    is included. So move the define above the include block.
    
    Fixes: c3963bc0a0cf ("hwmon: (nct6775) Split core and platform driver")
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hwmon: Fix help text for aspeed-g6-pwm-tach [+ + +]
Author: Joel Stanley <joel@jms.id.au>
Date:   Fri Jan 10 22:17:36 2025 +1030

    hwmon: Fix help text for aspeed-g6-pwm-tach
    
    [ Upstream commit c8571eab11131cce6dcce76b3345c1524e074071 ]
    
    The help text has the wrong module name mentioned, and the capitalisation
    of the title is inconsistent.
    
    Fixes: 7e1449cd15d1 ("hwmon: (aspeed-g6-pwm-tacho): Support for ASPEED g6 PWM/Fan tach")
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Link: https://lore.kernel.org/r/20250110114737.64035-1-joel@jms.id.au
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i2c: designware: Actually make use of the I2C_DW_COMMON and I2C_DW symbol namespaces [+ + +]
Author: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Date:   Mon Dec 30 16:59:49 2024 +0100

    i2c: designware: Actually make use of the I2C_DW_COMMON and I2C_DW symbol namespaces
    
    [ Upstream commit f0a4e9fa656ceb3b2e4c296cf6226798d804fa22 ]
    
    DEFAULT_SYMBOL_NAMESPACE must already be defined when <linux/export.h>
    is included. So move the define above the include block.
    
    Fixes: fd57a3325a77 ("i2c: designware: Move exports to I2C_DW namespaces")
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i3c: dw: Fix use-after-free in dw_i3c_master driver due to race condition [+ + +]
Author: Pei Xiao <xiaopei01@kylinos.cn>
Date:   Wed Nov 27 18:35:11 2024 +0800

    i3c: dw: Fix use-after-free in dw_i3c_master driver due to race condition
    
    [ Upstream commit b75439c945b94dd8a2b645355bdb56f948052601 ]
    
    In dw_i3c_common_probe, &master->hj_work is bound with
    dw_i3c_hj_work. And dw_i3c_master_irq_handler can call
    dw_i3c_master_irq_handle_ibis function to start the work.
    
    If we remove the module which will call dw_i3c_common_remove to
    make cleanup, it will free master->base through i3c_master_unregister
    while the work mentioned above will be used. The sequence of operations
    that may lead to a UAF bug is as follows:
    
    CPU0                                      CPU1
    
                                         | dw_i3c_hj_work
    dw_i3c_common_remove                 |
    i3c_master_unregister(&master->base) |
    device_unregister(&master->dev)      |
    device_release                       |
    //free master->base                  |
                                         | i3c_master_do_daa(&master->base)
                                         | //use master->base
    
    Fix it by ensuring that the work is canceled before proceeding with
    the cleanup in dw_i3c_common_remove.
    
    Fixes: 1dd728f5d4d4 ("i3c: master: Add driver for Synopsys DesignWare IP")
    Signed-off-by: Pei Xiao <xiaopei01@kylinos.cn>
    Acked-by: Mukesh Kumar Savaliya <quic_msavaliy@quicinc.com>
    Link: https://lore.kernel.org/r/bfc49c9527be5b513e7ceafeba314ca40a5be4bc.1732703537.git.xiaopei01@kylinos.cn
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iavf: allow changing VLAN state without calling PF [+ + +]
Author: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Date:   Thu Sep 5 11:14:10 2024 +0200

    iavf: allow changing VLAN state without calling PF
    
    [ Upstream commit ee7d79433d783346430ee32f28c9df44a88b3bb6 ]
    
    First case:
    > ip l a l $VF name vlanx type vlan id 100
    > ip l d vlanx
    > ip l a l $VF name vlanx type vlan id 100
    
    As workqueue can be execute after sometime, there is a window to have
    call trace like that:
    - iavf_del_vlan
    - iavf_add_vlan
    - iavf_del_vlans (wq)
    
    It means that our VLAN 100 will change the state from IAVF_VLAN_ACTIVE
    to IAVF_VLAN_REMOVE (iavf_del_vlan). After that in iavf_add_vlan state
    won't be changed because VLAN 100 is on the filter list. The final
    result is that the VLAN 100 filter isn't added in hardware (no
    iavf_add_vlans call).
    
    To fix that change the state if the filter wasn't removed yet directly
    to active. It is save as IAVF_VLAN_REMOVE means that virtchnl message
    wasn't sent yet.
    
    Second case:
    > ip l a l $VF name vlanx type vlan id 100
    Any type of VF reset ex. change trust
    > ip l s $PF vf $VF_NUM trust on
    > ip l d vlanx
    > ip l a l $VF name vlanx type vlan id 100
    
    In case of reset iavf driver is responsible for readding all filters
    that are being used. To do that all VLAN filters state are changed to
    IAVF_VLAN_ADD. Here is even longer window for changing VLAN state from
    kernel side, as workqueue isn't called immediately. We can have call
    trace like that:
    
    - changing to IAVF_VLAN_ADD (after reset)
    - iavf_del_vlan (called from kernel ops)
    - iavf_del_vlans (wq)
    
    Not exsisitng VLAN filters will be removed from hardware. It isn't a
    bug, ice driver will handle it fine. However, we can have call trace
    like that:
    
    - changing to IAVF_VLAN_ADD (after reset)
    - iavf_del_vlan (called from kernel ops)
    - iavf_add_vlan (called from kernel ops)
    - iavf_del_vlans (wq)
    
    With fix for previous case we end up with no VLAN filters in hardware.
    We have to remove VLAN filters if the state is IAVF_VLAN_ADD and delete
    VLAN was called. It is save as IAVF_VLAN_ADD means that virtchnl message
    wasn't sent yet.
    
    Fixes: 0c0da0e95105 ("iavf: refactor VLAN filter states")
    Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ice: extend dump serdes equalizer values feature [+ + +]
Author: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
Date:   Tue Oct 1 06:26:05 2024 -0400

    ice: extend dump serdes equalizer values feature
    
    [ Upstream commit 99dbcab0cdd60e35d9f208b2f7515a19ba523ff6 ]
    
    Extend the work done in commit 70838938e89c ("ice: Implement driver
    functionality to dump serdes equalizer values") by adding the new set of
    Rx registers that can be read using command:
      $ ethtool -d interface_name
    
    Rx equalization parameters are E810 PHY registers used by end user to
    gather information about configuration and status to debug link and
    connection issues in the field.
    
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Signed-off-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
    Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Stable-dep-of: c5cc2a27e04f ("ice: remove invalid parameter of equalizer")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ice: fix ice_parser_rt::bst_key array size [+ + +]
Author: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Date:   Thu Dec 19 12:55:16 2024 +0100

    ice: fix ice_parser_rt::bst_key array size
    
    [ Upstream commit 18625e26fefced78f2ae28b25e80a07079821e04 ]
    
    Fix &ice_parser_rt::bst_key size. It was wrongly set to 10 instead of 20
    in the initial impl commit (see Fixes tag). All usage code assumed it was
    of size 20. That was also the initial size present up to v2 of the intro
    series [2], but halved by v3 [3] refactor described as "Replace magic
    hardcoded values with macros." The introducing series was so big that
    some ugliness was unnoticed, same for bugs :/
    
    ICE_BST_KEY_TCAM_SIZE and ICE_BST_TCAM_KEY_SIZE were differing by one.
    There was tmp variable @j in the scope of edited function, but was not
    used in all places. This ugliness is now gone.
    I'm moving ice_parser_rt::pg_prio a few positions up, to fill up one of
    the holes in order to compensate for the added 10 bytes to the ::bst_key,
    resulting in the same size of the whole as prior to the fix, and minimal
    changes in the offsets of the fields.
    
    Extend also the debug dump print of the key to cover all bytes. To not
    have string with 20 "%02x" and 20 params, switch to
    ice_debug_array_w_prefix().
    
    This fix obsoletes Ahmed's attempt at [1].
    
    [1] https://lore.kernel.org/intel-wired-lan/20240823230847.172295-1-ahmed.zaki@intel.com
    [2] https://lore.kernel.org/intel-wired-lan/20230605054641.2865142-13-junfeng.guo@intel.com
    [3] https://lore.kernel.org/intel-wired-lan/20230817093442.2576997-13-junfeng.guo@intel.com
    
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Closes: https://lore.kernel.org/intel-wired-lan/b1fb6ff9-b69e-4026-9988-3c783d86c2e0@stanley.mountain
    Fixes: 9a4c07aaa0f5 ("ice: add parser execution main loop")
    CC: Ahmed Zaki <ahmed.zaki@intel.com>
    Reviewed-by: Larysa Zaremba <larysa.zaremba@intel.com>
    Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ice: remove invalid parameter of equalizer [+ + +]
Author: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
Date:   Tue Dec 31 10:50:44 2024 +0100

    ice: remove invalid parameter of equalizer
    
    [ Upstream commit c5cc2a27e04f2fcd77c74ada9aef76a758a24697 ]
    
    It occurred that in the commit 70838938e89c ("ice: Implement driver
    functionality to dump serdes equalizer values") the invalid DRATE parameter
    for reading has been added. The output of the command:
    
      $ ethtool -d <ethX>
    
    returns the garbage value in the place where DRATE value should be
    stored.
    
    Remove mentioned parameter to prevent return of corrupted data to
    userspace.
    
    Fixes: 70838938e89c ("ice: Implement driver functionality to dump serdes equalizer values")
    Signed-off-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
    Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Tested-by: Rinitha S <sx.rinitha@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>

ice: rework of dump serdes equalizer values feature [+ + +]
Author: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
Date:   Tue Oct 1 06:26:04 2024 -0400

    ice: rework of dump serdes equalizer values feature
    
    [ Upstream commit 8ea085937dad2d0b5399bc58722934f562b9abef ]
    
    Refactor function ice_get_tx_rx_equa() to iterate over new table of
    params instead of multiple calls to ice_aq_get_phy_equalization().
    
    Subsequent commit will extend that function by add more serdes equalizer
    values to dump.
    
    Shorten the fields of struct ice_serdes_equalization_to_ethtool for
    readability purposes.
    
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Signed-off-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
    Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Stable-dep-of: c5cc2a27e04f ("ice: remove invalid parameter of equalizer")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
idpf: Acquire the lock before accessing the xn->salt [+ + +]
Author: Manoj Vishwanathan <manojvishy@google.com>
Date:   Mon Dec 16 16:27:33 2024 +0000

    idpf: Acquire the lock before accessing the xn->salt
    
    [ Upstream commit d15fe4edd7decdf14d8ad2b78df100ea23302065 ]
    
    The transaction salt was being accessed before acquiring the
    idpf_vc_xn_lock when idpf has to forward the virtchnl reply.
    
    Fixes: 34c21fa894a1 ("idpf: implement virtchnl transaction manager")
    Signed-off-by: Manoj Vishwanathan <manojvishy@google.com>
    Signed-off-by: David Decotigny <decot@google.com>
    Signed-off-by: Brian Vazquez <brianvv@google.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Reviewed-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: Sasha Levin <sashal@kernel.org>

idpf: add read memory barrier when checking descriptor done bit [+ + +]
Author: Emil Tantilov <emil.s.tantilov@intel.com>
Date:   Thu Nov 21 20:40:59 2024 -0800

    idpf: add read memory barrier when checking descriptor done bit
    
    [ Upstream commit 396f0165672c6a74d7379027d344b83b5f05948c ]
    
    Add read memory barrier to ensure the order of operations when accessing
    control queue descriptors. Specifically, we want to avoid cases where loads
    can be reordered:
    
    1. Load #1 is dispatched to read descriptor flags.
    2. Load #2 is dispatched to read some other field from the descriptor.
    3. Load #2 completes, accessing memory/cache at a point in time when the DD
       flag is zero.
    4. NIC DMA overwrites the descriptor, now the DD flag is one.
    5. Any fields loaded before step 4 are now inconsistent with the actual
       descriptor state.
    
    Add read memory barrier between steps 1 and 2, so that load #2 is not
    executed until load #1 has completed.
    
    Fixes: 8077c727561a ("idpf: add controlq init and reset checks")
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Reviewed-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
    Suggested-by: Lance Richardson <rlance@google.com>
    Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
    Tested-by: Krishneil Singh <krishneil.k.singh@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

idpf: convert workqueues to unbound [+ + +]
Author: Marco Leogrande <leogrande@google.com>
Date:   Mon Dec 16 16:27:34 2024 +0000

    idpf: convert workqueues to unbound
    
    [ Upstream commit 9a5b021cb8186f1854bac2812bd4f396bb1e881c ]
    
    When a workqueue is created with `WQ_UNBOUND`, its work items are
    served by special worker-pools, whose host workers are not bound to
    any specific CPU. In the default configuration (i.e. when
    `queue_delayed_work` and friends do not specify which CPU to run the
    work item on), `WQ_UNBOUND` allows the work item to be executed on any
    CPU in the same node of the CPU it was enqueued on. While this
    solution potentially sacrifices locality, it avoids contention with
    other processes that might dominate the CPU time of the processor the
    work item was scheduled on.
    
    This is not just a theoretical problem: in a particular scenario
    misconfigured process was hogging most of the time from CPU0, leaving
    less than 0.5% of its CPU time to the kworker. The IDPF workqueues
    that were using the kworker on CPU0 suffered large completion delays
    as a result, causing performance degradation, timeouts and eventual
    system crash.
    
    Tested:
    
    * I have also run a manual test to gauge the performance
      improvement. The test consists of an antagonist process
      (`./stress --cpu 2`) consuming as much of CPU 0 as possible. This
      process is run under `taskset 01` to bind it to CPU0, and its
      priority is changed with `chrt -pQ 9900 10000 ${pid}` and
      `renice -n -20 ${pid}` after start.
    
      Then, the IDPF driver is forced to prefer CPU0 by editing all calls
      to `queue_delayed_work`, `mod_delayed_work`, etc... to use CPU 0.
    
      Finally, `ktraces` for the workqueue events are collected.
    
      Without the current patch, the antagonist process can force
      arbitrary delays between `workqueue_queue_work` and
      `workqueue_execute_start`, that in my tests were as high as
      `30ms`. With the current patch applied, the workqueue can be
      migrated to another unloaded CPU in the same node, and, keeping
      everything else equal, the maximum delay I could see was `6us`.
    
    Fixes: 0fe45467a104 ("idpf: add create vport and netdev configuration")
    Signed-off-by: Marco Leogrande <leogrande@google.com>
    Signed-off-by: Manoj Vishwanathan <manojvishy@google.com>
    Signed-off-by: Brian Vazquez <brianvv@google.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Reviewed-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: Sasha Levin <sashal@kernel.org>

idpf: fix transaction timeouts on reset [+ + +]
Author: Emil Tantilov <emil.s.tantilov@intel.com>
Date:   Thu Dec 19 18:09:32 2024 -0800

    idpf: fix transaction timeouts on reset
    
    [ Upstream commit 137da75ba72593598898a4e79da34f4b2da5d151 ]
    
    Restore the call to idpf_vc_xn_shutdown() at the beginning of
    idpf_vc_core_deinit() provided the function is not called on remove.
    In the reset path the mailbox is destroyed, leading to all transactions
    timing out.
    
    Fixes: 09d0fb5cb30e ("idpf: deinit virtchnl transaction manager after vport and vectors")
    Reviewed-by: Larysa Zaremba <larysa.zaremba@intel.com>
    Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Tested-by: Krishneil Singh <krishneil.k.singh@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
inet: ipmr: fix data-races [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Jan 14 22:10:49 2025 +0000

    inet: ipmr: fix data-races
    
    [ Upstream commit 3440fa34ad99d471f1085bc2f4dedeaebc310261 ]
    
    Following fields of 'struct mr_mfc' can be updated
    concurrently (no lock protection) from ip_mr_forward()
    and ip6_mr_forward()
    
    - bytes
    - pkt
    - wrong_if
    - lastuse
    
    They also can be read from other functions.
    
    Convert bytes, pkt and wrong_if to atomic_long_t,
    and use READ_ONCE()/WRITE_ONCE() for lastuse.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://patch.msgid.link/20250114221049.1190631-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
inetpeer: do not get a refcount in inet_getpeer() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Dec 15 17:56:29 2024 +0000

    inetpeer: do not get a refcount in inet_getpeer()
    
    [ Upstream commit a853c609504e2d1d83e71285e3622fda1f1451d8 ]
    
    All inet_getpeer() callers except ip4_frag_init() don't need
    to acquire a permanent refcount on the inetpeer.
    
    They can switch to full RCU protection.
    
    Move the refcount_inc_not_zero() into ip4_frag_init(),
    so that all the other callers no longer have to
    perform a pair of expensive atomic operations on
    a possibly contended cache line.
    
    inet_putpeer() no longer needs to be exported.
    
    After this patch, my DUT can receive 8,400,000 UDP packets
    per second targeting closed ports, using 50% less cpu cycles
    than before.
    
    Also change two calls to l3mdev_master_ifindex() by
    l3mdev_master_ifindex_rcu() (Ido ideas)
    
    Fixes: 8c2bd38b95f7 ("icmp: change the order of rate limits")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20241215175629.1248773-5-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

inetpeer: remove create argument of inet_getpeer() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Dec 15 17:56:27 2024 +0000

    inetpeer: remove create argument of inet_getpeer()
    
    [ Upstream commit 7a596a50c4a4eab946aec149171c72321b4934aa ]
    
    All callers of inet_getpeer() want to create an inetpeer.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20241215175629.1248773-3-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: a853c609504e ("inetpeer: do not get a refcount in inet_getpeer()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

inetpeer: remove create argument of inet_getpeer_v[46]() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Dec 15 17:56:26 2024 +0000

    inetpeer: remove create argument of inet_getpeer_v[46]()
    
    [ Upstream commit 661cd8fc8e9039819ca0c22e0add52b632240a9e ]
    
    All callers of inet_getpeer_v4() and inet_getpeer_v6()
    want to create an inetpeer.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20241215175629.1248773-2-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: a853c609504e ("inetpeer: do not get a refcount in inet_getpeer()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

inetpeer: update inetpeer timestamp in inet_getpeer() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Dec 15 17:56:28 2024 +0000

    inetpeer: update inetpeer timestamp in inet_getpeer()
    
    [ Upstream commit 50b362f21d6c10b0f7939c1482c6a1b43da82f1a ]
    
    inet_putpeer() will be removed in the following patch,
    because we will no longer use refcounts.
    
    Update inetpeer timestamp (p->dtime) at lookup time.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20241215175629.1248773-4-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: a853c609504e ("inetpeer: do not get a refcount in inet_getpeer()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
io_uring/uring_cmd: use cached cmd_op in io_uring_cmd_sock() [+ + +]
Author: Jens Axboe <axboe@kernel.dk>
Date:   Wed Jan 22 17:29:31 2025 -0700

    io_uring/uring_cmd: use cached cmd_op in io_uring_cmd_sock()
    
    [ Upstream commit d58d82bd0efd6c8edd452fc2f6c6dd052ec57cb2 ]
    
    io_uring_cmd_sock() does a normal read of cmd->sqe->cmd_op, where it
    really should be using a READ_ONCE() as ->sqe may still be pointing to
    the original SQE. Since the prep side already does this READ_ONCE() and
    stores it locally, use that value rather than re-read it.
    
    Fixes: 8e9fad0e70b7b ("io_uring: Add io_uring command support for sockets")
    Link: https://lore.kernel.org/r/20250121-uring-sockcmd-fix-v1-1-add742802a29@google.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iommu/amd: Remove unused amd_iommu_domain_update() [+ + +]
Author: Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
Date:   Fri Jan 10 12:34:59 2025 -0400

    iommu/amd: Remove unused amd_iommu_domain_update()
    
    [ Upstream commit 1a684b099fac9a37e6fe2f0e594adbb1eff5181a ]
    
    All the callers have been removed by the below commit, remove the
    implementation and prototypes.
    
    Fixes: 322d889ae7d3 ("iommu/amd: Remove amd_iommu_domain_update() from page table freeing")
    Reviewed-by: Vasant Hegde <vasant.hegde@amd.com>
    Signed-off-by: Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Link: https://lore.kernel.org/r/1-v2-9776c53c2966+1c7-amd_paging_flags_jgg@nvidia.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iommu/arm-smmuv3: Update comments about ATS and bypass [+ + +]
Author: Jason Gunthorpe <jgg@ziepe.ca>
Date:   Thu Dec 5 11:40:15 2024 -0400

    iommu/arm-smmuv3: Update comments about ATS and bypass
    
    [ Upstream commit 9b640ae7fbba13d45a8b9712dff2911a0c2b5ff4 ]
    
    The SMMUv3 spec has a note that BYPASS and ATS don't work together under
    the STE EATS field definition. However there is another section "13.6.4
    Full ATS skipping stage 1" that explains under certain conditions BYPASS
    and ATS do work together if the STE is using S1DSS to select BYPASS and
    the CD table has the possibility for a substream.
    
    When these comments were written the understanding was that all forms of
    BYPASS just didn't work and this was to be a future problem to solve.
    
    It turns out that ATS and IDENTITY will always work just fine:
    
     - If STE.Config = BYPASS then the PCI ATS is disabled
    
     - If a PASID domain is attached then S1DSS = BYPASS and ATS will be
       enabled. This meets the requirements of 13.6.4 to automatically
       generate 1:1 ATS replies on the RID.
    
    Update the comments to reflect this.
    
    Fixes: 7497f4211f4f ("iommu/arm-smmu-v3: Make changing domains be hitless for ATS")
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Link: https://lore.kernel.org/r/0-v1-f27174f44f39+27a33-smmuv3_ats_note_jgg@nvidia.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iommu: iommufd: fix WARNING in iommufd_device_unbind [+ + +]
Author: Suraj Sonawane <surajsonawane0215@gmail.com>
Date:   Sun Nov 24 01:29:00 2024 +0530

    iommu: iommufd: fix WARNING in iommufd_device_unbind
    
    [ Upstream commit d9df72c6acd683adf6dd23c061f3a414ec00b1f8 ]
    
    Fix an issue detected by syzbot:
    
    WARNING in iommufd_device_unbind iommufd: Time out waiting for iommufd object to become free
    
    Resolve a warning in iommufd_device_unbind caused by a timeout while
    waiting for the shortterm_users reference count to reach zero. The
    existing 10-second timeout is insufficient in some scenarios, resulting in
    failures the above warning.
    
    Increase the timeout in iommufd_object_dec_wait_shortterm from 10 seconds
    to 60 seconds to allow sufficient time for the reference count to drop to
    zero. This change prevents premature timeouts and reduces the likelihood
    of warnings during iommufd_device_unbind.
    
    Fixes: 6f9c4d8c468c ("iommufd: Do not UAF during iommufd_put_object()")
    Link: https://patch.msgid.link/r/20241123195900.3176-1-surajsonawane0215@gmail.com
    Reported-by: syzbot+c92878e123785b1fa2db@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=c92878e123785b1fa2db
    Tested-by: syzbot+c92878e123785b1fa2db@syzkaller.appspotmail.com
    Signed-off-by: Suraj Sonawane <surajsonawane0215@gmail.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iommufd/iova_bitmap: Fix shift-out-of-bounds in iova_bitmap_offset_to_index() [+ + +]
Author: Qasim Ijaz <qasdev00@gmail.com>
Date:   Mon Jan 13 22:38:20 2025 +0000

    iommufd/iova_bitmap: Fix shift-out-of-bounds in iova_bitmap_offset_to_index()
    
    [ Upstream commit e24c1551059268b37f6f40639883eafb281b8b9c ]
    
    Resolve a UBSAN shift-out-of-bounds issue in iova_bitmap_offset_to_index()
    where shifting the constant "1" (of type int) by bitmap->mapped.pgshift
    (an unsigned long value) could result in undefined behavior.
    
    The constant "1" defaults to a 32-bit "int", and when "pgshift" exceeds
    31 (e.g., pgshift = 63) the shift operation overflows, as the result
    cannot be represented in a 32-bit type.
    
    To resolve this, the constant is updated to "1UL", promoting it to an
    unsigned long type to match the operand's type.
    
    Fixes: 58ccf0190d19 ("vfio: Add an IOVA bitmap support")
    Link: https://patch.msgid.link/r/20250113223820.10713-1-qasdev00@gmail.com
    Reported-by: syzbot <syzbot+85992ace37d5b7b51635@syzkaller.appspotmail.com>
    Closes: https://syzkaller.appspot.com/bug?extid=85992ace37d5b7b51635
    Signed-off-by: Qasim Ijaz <qasdev00@gmail.com>
    Reviewed-by: Joao Martins <joao.m.martins@oracle.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipmi: ipmb: Add check devm_kasprintf() returned value [+ + +]
Author: Charles Han <hanchunchao@inspur.com>
Date:   Thu Sep 26 17:44:19 2024 +0800

    ipmi: ipmb: Add check devm_kasprintf() returned value
    
    [ Upstream commit 2378bd0b264ad3a1f76bd957caf33ee0c7945351 ]
    
    devm_kasprintf() can return a NULL pointer on failure but this
    returned value is not checked.
    
    Fixes: 51bd6f291583 ("Add support for IPMB driver")
    Signed-off-by: Charles Han <hanchunchao@inspur.com>
    Message-ID: <20240926094419.25900-1-hanchunchao@inspur.com>
    Signed-off-by: Corey Minyard <corey@minyard.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ipmi: ssif_bmc: Fix new request loss when bmc ready for a response [+ + +]
Author: Quan Nguyen <quan@os.amperecomputing.com>
Date:   Tue Jan 7 10:47:34 2025 +0700

    ipmi: ssif_bmc: Fix new request loss when bmc ready for a response
    
    [ Upstream commit 83d8c79aa958e37724ed9c14dc7d0f66a48ad864 ]
    
    Cosmo found that when there is a new request comes in while BMC is
    ready for a response, the complete_response(), which is called to
    complete the pending response, would accidentally clear out that new
    request and force ssif_bmc to move back to abort state again.
    
    This commit is to address that issue.
    
    Fixes: dd2bc5cc9e25 ("ipmi: ssif_bmc: Add SSIF BMC driver")
    Reported-by: Cosmo Chou <chou.cosmo@gmail.com>
    Closes: https://lore.kernel.org/lkml/20250101165431.2113407-1-chou.cosmo@gmail.com/
    Signed-off-by: Quan Nguyen <quan@os.amperecomputing.com>
    Message-ID: <20250107034734.1842247-1-quan@os.amperecomputing.com>
    Signed-off-by: Corey Minyard <corey@minyard.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipmr: do not call mr_mfc_uses_dev() for unres entries [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Jan 21 18:12:41 2025 +0000

    ipmr: do not call mr_mfc_uses_dev() for unres entries
    
    [ Upstream commit 15a901361ec3fb1c393f91880e1cbf24ec0a88bd ]
    
    syzbot found that calling mr_mfc_uses_dev() for unres entries
    would crash [1], because c->mfc_un.res.minvif / c->mfc_un.res.maxvif
    alias to "struct sk_buff_head unresolved", which contain two pointers.
    
    This code never worked, lets remove it.
    
    [1]
    Unable to handle kernel paging request at virtual address ffff5fff2d536613
    KASAN: maybe wild-memory-access in range [0xfffefff96a9b3098-0xfffefff96a9b309f]
    Modules linked in:
    CPU: 1 UID: 0 PID: 7321 Comm: syz.0.16 Not tainted 6.13.0-rc7-syzkaller-g1950a0af2d55 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
     pc : mr_mfc_uses_dev net/ipv4/ipmr_base.c:290 [inline]
     pc : mr_table_dump+0x5a4/0x8b0 net/ipv4/ipmr_base.c:334
     lr : mr_mfc_uses_dev net/ipv4/ipmr_base.c:289 [inline]
     lr : mr_table_dump+0x694/0x8b0 net/ipv4/ipmr_base.c:334
    Call trace:
      mr_mfc_uses_dev net/ipv4/ipmr_base.c:290 [inline] (P)
      mr_table_dump+0x5a4/0x8b0 net/ipv4/ipmr_base.c:334 (P)
      mr_rtm_dumproute+0x254/0x454 net/ipv4/ipmr_base.c:382
      ipmr_rtm_dumproute+0x248/0x4b4 net/ipv4/ipmr.c:2648
      rtnl_dump_all+0x2e4/0x4e8 net/core/rtnetlink.c:4327
      rtnl_dumpit+0x98/0x1d0 net/core/rtnetlink.c:6791
      netlink_dump+0x4f0/0xbc0 net/netlink/af_netlink.c:2317
      netlink_recvmsg+0x56c/0xe64 net/netlink/af_netlink.c:1973
      sock_recvmsg_nosec net/socket.c:1033 [inline]
      sock_recvmsg net/socket.c:1055 [inline]
      sock_read_iter+0x2d8/0x40c net/socket.c:1125
      new_sync_read fs/read_write.c:484 [inline]
      vfs_read+0x740/0x970 fs/read_write.c:565
      ksys_read+0x15c/0x26c fs/read_write.c:708
    
    Fixes: cb167893f41e ("net: Plumb support for filtering ipv4 and ipv6 multicast route dumps")
    Reported-by: syzbot+5cfae50c0e5f2c500013@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/678fe2d1.050a0220.15cac.00b3.GAE@google.com/T/#u
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://patch.msgid.link/20250121181241.841212-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
kbuild: switch from lz4c to lz4 for compression [+ + +]
Author: Parth Pancholi <parth.pancholi@toradex.com>
Date:   Thu Nov 14 15:56:44 2024 +0100

    kbuild: switch from lz4c to lz4 for compression
    
    commit e397a603e49cc7c7c113fad9f55a09637f290c34 upstream.
    
    Replace lz4c with lz4 for kernel image compression.
    Although lz4 and lz4c are functionally similar, lz4c has been deprecated
    upstream since 2018. Since as early as Ubuntu 16.04 and Fedora 25, lz4
    and lz4c have been packaged together, making it safe to update the
    requirement from lz4c to lz4.
    
    Consequently, some distributions and build systems, such as OpenEmbedded,
    have fully transitioned to using lz4. OpenEmbedded core adopted this
    change in commit fe167e082cbd ("bitbake.conf: require lz4 instead of
    lz4c"), causing compatibility issues when building the mainline kernel
    in the latest OpenEmbedded environment, as seen in the errors below.
    
    This change also updates the LZ4 compression commands to make it backward
    compatible by replacing stdin and stdout with the '-' option, due to some
    unclear reason, the stdout keyword does not work for lz4 and '-' works for
    both. In addition, this modifies the legacy '-c1' with '-9' which is also
    compatible with both. This fixes the mainline kernel build failures with
    the latest master OpenEmbedded builds associated with the mentioned
    compatibility issues.
    
    LZ4     arch/arm/boot/compressed/piggy_data
    /bin/sh: 1: lz4c: not found
    ...
    ...
    ERROR: oe_runmake failed
    
    Link: https://github.com/lz4/lz4/pull/553
    Suggested-by: Francesco Dolcini <francesco.dolcini@toradex.com>
    Signed-off-by: Parth Pancholi <parth.pancholi@toradex.com>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Cc: Salvatore Bonaccorso <carnil@debian.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
kconfig: fix file name in warnings when loading KCONFIG_DEFCONFIG_LIST [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Mon Jan 20 16:59:14 2025 +0900

    kconfig: fix file name in warnings when loading KCONFIG_DEFCONFIG_LIST
    
    [ Upstream commit a314f52a0210730d0d556de76bb7388e76d4597d ]
    
    Most 'make *config' commands use .config as the base configuration file.
    
    When .config does not exist, Kconfig tries to load a file listed in
    KCONFIG_DEFCONFIG_LIST instead.
    
    However, since commit b75b0a819af9 ("kconfig: change defconfig_list
    option to environment variable"), warning messages have displayed an
    incorrect file name in such cases.
    
    Below is a demonstration using Debian Trixie. While loading
    /boot/config-6.12.9-amd64, the warning messages incorrectly show .config
    as the file name.
    
    With this commit, the correct file name is displayed in warnings.
    
    [Before]
    
      $ rm -f .config
      $ make config
      #
      # using defaults found in /boot/config-6.12.9-amd64
      #
      .config:6804:warning: symbol value 'm' invalid for FB_BACKLIGHT
      .config:9895:warning: symbol value 'm' invalid for ANDROID_BINDER_IPC
    
    [After]
    
      $ rm -f .config
      $ make config
      #
      # using defaults found in /boot/config-6.12.9-amd64
      #
      /boot/config-6.12.9-amd64:6804:warning: symbol value 'm' invalid for FB_BACKLIGHT
      /boot/config-6.12.9-amd64:9895:warning: symbol value 'm' invalid for ANDROID_BINDER_IPC
    
    Fixes: b75b0a819af9 ("kconfig: change defconfig_list option to environment variable")
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

kconfig: fix memory leak in sym_warn_unmet_dep() [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Mon Jan 20 17:10:31 2025 +0900

    kconfig: fix memory leak in sym_warn_unmet_dep()
    
    [ Upstream commit a409fc1463d664002ea9bf700ae4674df03de111 ]
    
    The string allocated in sym_warn_unmet_dep() is never freed, leading
    to a memory leak when an unmet dependency is detected.
    
    Fixes: f8f69dc0b4e0 ("kconfig: make unmet dependency warnings readable")
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: Petr Vorel <pvorel@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ktest.pl: Check kernelrelease return in get_version [+ + +]
Author: Ricardo B. Marliere <rbm@suse.com>
Date:   Thu Dec 5 17:50:35 2024 -0300

    ktest.pl: Check kernelrelease return in get_version
    
    commit a4e17a8f239a545c463f8ec27db4ed6e74b31841 upstream.
    
    In the case of a test that uses the special option ${KERNEL_VERSION} in one
    of its settings but has no configuration available in ${OUTPUT_DIR}, for
    example if it's a new empty directory, then the `make kernelrelease` call
    will fail and the subroutine will chomp an empty string, silently. Fix that
    by adding an empty configuration and retrying.
    
    Cc: stable@vger.kernel.org
    Cc: John Hawley <warthog9@eaglescrag.net>
    Fixes: 5f9b6ced04a4e ("ktest: Bisecting, install modules, add logging")
    Link: https://lore.kernel.org/20241205-ktest_kver_fallback-v2-1-869dae4c7777@suse.com
    Signed-off-by: Ricardo B. Marliere <rbm@suse.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ktest.pl: Remove unused declarations in run_bisect_test function [+ + +]
Author: Ba Jing <bajing@cmss.chinamobile.com>
Date:   Mon Sep 2 21:07:35 2024 +0800

    ktest.pl: Remove unused declarations in run_bisect_test function
    
    [ Upstream commit 776735b954f49f85fd19e1198efa421fae2ad77c ]
    
    Since $output and $ret are not used in the subsequent code, the declarations
    should be removed.
    
    Fixes: a75fececff3c ("ktest: Added sample.conf, new %default option format")
    Link: https://lore.kernel.org/20240902130735.6034-1-bajing@cmss.chinamobile.com
    Signed-off-by: Ba Jing <bajing@cmss.chinamobile.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
KVM: x86: Plumb in the vCPU to kvm_x86_ops.hwapic_isr_update() [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Wed Nov 27 16:00:09 2024 -0800

    KVM: x86: Plumb in the vCPU to kvm_x86_ops.hwapic_isr_update()
    
    commit 76bce9f10162cd4b36ac0b7889649b22baf70ebd upstream.
    
    Pass the target vCPU to the hwapic_isr_update() vendor hook so that VMX
    can defer the update until after nested VM-Exit if an EOI for L1's vAPIC
    occurs while L2 is active.
    
    Note, commit d39850f57d21 ("KVM: x86: Drop @vcpu parameter from
    kvm_x86_ops.hwapic_isr_update()") removed the parameter with the
    justification that doing so "allows for a decent amount of (future)
    cleanup in the APIC code", but it's not at all clear what cleanup was
    intended, or if it was ever realized.
    
    No functional change intended.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Chao Gao <chao.gao@intel.com>
    Tested-by: Chao Gao <chao.gao@intel.com>
    Link: https://lore.kernel.org/r/20241128000010.4051275-2-seanjc@google.com
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
landlock: Handle weird files [+ + +]
Author: Mickaël Salaün <mic@digikod.net>
Date:   Fri Jan 10 16:39:13 2025 +0100

    landlock: Handle weird files
    
    [ Upstream commit 49440290a0935f428a1e43a5ac8dc275a647ff80 ]
    
    A corrupted filesystem (e.g. bcachefs) might return weird files.
    Instead of throwing a warning and allowing access to such file, treat
    them as regular files.
    
    Cc: Dave Chinner <david@fromorbit.com>
    Cc: Kent Overstreet <kent.overstreet@linux.dev>
    Cc: Paul Moore <paul@paul-moore.com>
    Reported-by: syzbot+34b68f850391452207df@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/r/000000000000a65b35061cffca61@google.com
    Reported-by: syzbot+360866a59e3c80510a62@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/r/67379b3f.050a0220.85a0.0001.GAE@google.com
    Reported-by: Ubisectech Sirius <bugreport@ubisectech.com>
    Closes: https://lore.kernel.org/r/c426821d-8380-46c4-a494-7008bbd7dd13.bugreport@ubisectech.com
    Fixes: cb2c7d1a1776 ("landlock: Support filesystem access-control")
    Reviewed-by: Günther Noack <gnoack3000@gmail.com>
    Link: https://lore.kernel.org/r/20250110153918.241810-1-mic@digikod.net
    Signed-off-by: Mickaël Salaün <mic@digikod.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
leds: cht-wcove: Use devm_led_classdev_register() to avoid memory leak [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Fri Dec 20 17:53:46 2024 +0900

    leds: cht-wcove: Use devm_led_classdev_register() to avoid memory leak
    
    [ Upstream commit 417cad5dc782096350e6a967ee5dd3417a19a24e ]
    
    cht_wc_leds_probe() leaks memory when the second led_classdev_register()
    call in the for-loop fails as it does not call the cleanup function
    led_classdev_unregister() on the first device. Avoid this leak by
    calling devm_led_classdev_register().
    
    Fixes: 047da762b9a9 ("leds: Add Intel Cherry Trail Whiskey Cove PMIC LED driver")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Link: https://lore.kernel.org/r/20241220085346.533675-1-joe@pf.is.s.u-tokyo.ac.jp
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

leds: netxbig: Fix an OF node reference leak in netxbig_leds_get_of_pdata() [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Mon Dec 16 16:49:23 2024 +0900

    leds: netxbig: Fix an OF node reference leak in netxbig_leds_get_of_pdata()
    
    [ Upstream commit 0508316be63bb735f59bdc8fe4527cadb62210ca ]
    
    netxbig_leds_get_of_pdata() does not release the OF node obtained by
    of_parse_phandle() when of_find_device_by_node() fails. Add an
    of_node_put() call to fix the leak.
    
    This bug was found by an experimental static analysis tool that I am
    developing.
    
    Fixes: 9af512e81964 ("leds: netxbig: Convert to use GPIO descriptors")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Link: https://lore.kernel.org/r/20241216074923.628509-1-joe@pf.is.s.u-tokyo.ac.jp
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
libbpf: don't adjust USDT semaphore address if .stapsdt.base addr is missing [+ + +]
Author: Andrii Nakryiko <andrii@kernel.org>
Date:   Thu Nov 21 14:45:58 2024 -0800

    libbpf: don't adjust USDT semaphore address if .stapsdt.base addr is missing
    
    [ Upstream commit 98ebe5ef6f5c4517ba92fb3e56f95827ebea83fd ]
    
    USDT ELF note optionally can record an offset of .stapsdt.base, which is
    used to make adjustments to USDT target attach address. Currently,
    libbpf will do this address adjustment unconditionally if it finds
    .stapsdt.base ELF section in target binary. But there is a corner case
    where .stapsdt.base ELF section is present, but specific USDT note
    doesn't reference it. In such case, libbpf will basically just add base
    address and end up with absolutely incorrect USDT target address.
    
    This adjustment has to be done only if both .stapsdt.sema section is
    present and USDT note is recording a reference to it.
    
    Fixes: 74cc6311cec9 ("libbpf: Add USDT notes parsing and resolution logic")
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Link: https://lore.kernel.org/r/20241121224558.796110-1-andrii@kernel.org
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

libbpf: Fix incorrect traversal end type ID when marking BTF_IS_EMBEDDED [+ + +]
Author: Pu Lehui <pulehui@huawei.com>
Date:   Wed Jan 15 10:02:40 2025 +0000

    libbpf: Fix incorrect traversal end type ID when marking BTF_IS_EMBEDDED
    
    [ Upstream commit 5ca681a86ef93369685cb63f71994f4cf7303e7c ]
    
    When redirecting the split BTF to the vmlinux base BTF, we need to mark
    the distilled base struct/union members of split BTF structs/unions in
    id_map with BTF_IS_EMBEDDED. This indicates that these types must match
    both name and size later. Therefore, we need to traverse the entire
    split BTF, which involves traversing type IDs from nr_dist_base_types to
    nr_types. However, the current implementation uses an incorrect
    traversal end type ID, so let's correct it.
    
    Fixes: 19e00c897d50 ("libbpf: Split BTF relocation")
    Signed-off-by: Pu Lehui <pulehui@huawei.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20250115100241.4171581-3-pulehui@huaweicloud.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

libbpf: Fix return zero when elf_begin failed [+ + +]
Author: Pu Lehui <pulehui@huawei.com>
Date:   Wed Jan 15 10:02:39 2025 +0000

    libbpf: Fix return zero when elf_begin failed
    
    [ Upstream commit 5436a54332c19df0acbef2b87cbf9f7cba56f2dd ]
    
    The error number of elf_begin is omitted when encapsulating the
    btf_find_elf_sections function.
    
    Fixes: c86f180ffc99 ("libbpf: Make btf_parse_elf process .BTF.base transparently")
    Signed-off-by: Pu Lehui <pulehui@huawei.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20250115100241.4171581-2-pulehui@huaweicloud.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

libbpf: Fix segfault due to libelf functions not setting errno [+ + +]
Author: Quentin Monnet <qmo@kernel.org>
Date:   Thu Dec 5 13:59:42 2024 +0000

    libbpf: Fix segfault due to libelf functions not setting errno
    
    [ Upstream commit e10500b69c3f3378f3dcfc8c2fe4cdb74fc844f5 ]
    
    Libelf functions do not set errno on failure. Instead, it relies on its
    internal _elf_errno value, that can be retrieved via elf_errno (or the
    corresponding message via elf_errmsg()). From "man libelf":
    
        If a libelf function encounters an error it will set an internal
        error code that can be retrieved with elf_errno. Each thread
        maintains its own separate error code. The meaning of each error
        code can be determined with elf_errmsg, which returns a string
        describing the error.
    
    As a consequence, libbpf should not return -errno when a function from
    libelf fails, because an empty value will not be interpreted as an error
    and won't prevent the program to stop. This is visible in
    bpf_linker__add_file(), for example, where we call a succession of
    functions that rely on libelf:
    
        err = err ?: linker_load_obj_file(linker, filename, opts, &obj);
        err = err ?: linker_append_sec_data(linker, &obj);
        err = err ?: linker_append_elf_syms(linker, &obj);
        err = err ?: linker_append_elf_relos(linker, &obj);
        err = err ?: linker_append_btf(linker, &obj);
        err = err ?: linker_append_btf_ext(linker, &obj);
    
    If the object file that we try to process is not, in fact, a correct
    object file, linker_load_obj_file() may fail with errno not being set,
    and return 0. In this case we attempt to run linker_append_elf_sysms()
    and may segfault.
    
    This can happen (and was discovered) with bpftool:
    
        $ bpftool gen object output.o sample_ret0.bpf.c
        libbpf: failed to get ELF header for sample_ret0.bpf.c: invalid `Elf' handle
        zsh: segmentation fault (core dumped)  bpftool gen object output.o sample_ret0.bpf.c
    
    Fix the issue by returning a non-null error code (-EINVAL) when libelf
    functions fail.
    
    Fixes: faf6ed321cf6 ("libbpf: Add BPF static linker APIs")
    Signed-off-by: Quentin Monnet <qmo@kernel.org>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20241205135942.65262-1-qmo@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: Linux 6.12.13 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Feb 8 09:58:20 2025 +0100

    Linux 6.12.13
    
    Link: https://lore.kernel.org/r/20250205134455.220373560@linuxfoundation.org
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com>
    Tested-by: Hardik Garg <hargar@linux.microsoft.com>
    Tested-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Link: https://lore.kernel.org/r/20250206160711.563887287@linuxfoundation.org
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Hardik Garg <hargar@linux.microsoft.com>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
LoongArch: Change 8 to 14 for LOONGARCH_MAX_{BRP,WRP} [+ + +]
Author: Tiezhu Yang <yangtiezhu@loongson.cn>
Date:   Sun Jan 26 21:49:59 2025 +0800

    LoongArch: Change 8 to 14 for LOONGARCH_MAX_{BRP,WRP}
    
    commit f502ea618bf16d615d7dc6138c8988d3118fe750 upstream.
    
    The maximum number of load/store watchpoints and fetch instruction
    watchpoints is 14 each according to LoongArch Reference Manual, so
    change 8 to 14 for the related code.
    
    Link: https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#control-and-status-registers-related-to-watchpoints
    Cc: stable@vger.kernel.org
    Fixes: edffa33c7bb5 ("LoongArch: Add hardware breakpoints/watchpoints support")
    Reviewed-by: WANG Xuerui <git@xen0n.name>
    Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

LoongArch: Fix warnings during S3 suspend [+ + +]
Author: Huacai Chen <chenhuacai@kernel.org>
Date:   Sun Jan 26 21:49:59 2025 +0800

    LoongArch: Fix warnings during S3 suspend
    
    [ Upstream commit 26c0a2d93af55d30a46d5f45d3e9c42cde730168 ]
    
    The enable_gpe_wakeup() function calls acpi_enable_all_wakeup_gpes(),
    and the later one may call the preempt_schedule_common() function,
    resulting in a thread switch and causing the CPU to be in an interrupt
    enabled state after the enable_gpe_wakeup() function returns, leading
    to the warnings as follow.
    
    [ C0] WARNING: ... at kernel/time/timekeeping.c:845 ktime_get+0xbc/0xc8
    [ C0]          ...
    [ C0] Call Trace:
    [ C0] [<90000000002243b4>] show_stack+0x64/0x188
    [ C0] [<900000000164673c>] dump_stack_lvl+0x60/0x88
    [ C0] [<90000000002687e4>] __warn+0x8c/0x148
    [ C0] [<90000000015e9978>] report_bug+0x1c0/0x2b0
    [ C0] [<90000000016478e4>] do_bp+0x204/0x3b8
    [ C0] [<90000000025b1924>] exception_handlers+0x1924/0x10000
    [ C0] [<9000000000343bbc>] ktime_get+0xbc/0xc8
    [ C0] [<9000000000354c08>] tick_sched_timer+0x30/0xb0
    [ C0] [<90000000003408e0>] __hrtimer_run_queues+0x160/0x378
    [ C0] [<9000000000341f14>] hrtimer_interrupt+0x144/0x388
    [ C0] [<9000000000228348>] constant_timer_interrupt+0x38/0x48
    [ C0] [<90000000002feba4>] __handle_irq_event_percpu+0x64/0x1e8
    [ C0] [<90000000002fed48>] handle_irq_event_percpu+0x20/0x80
    [ C0] [<9000000000306b9c>] handle_percpu_irq+0x5c/0x98
    [ C0] [<90000000002fd4a0>] generic_handle_domain_irq+0x30/0x48
    [ C0] [<9000000000d0c7b0>] handle_cpu_irq+0x70/0xa8
    [ C0] [<9000000001646b30>] handle_loongarch_irq+0x30/0x48
    [ C0] [<9000000001646bc8>] do_vint+0x80/0xe0
    [ C0] [<90000000002aea1c>] finish_task_switch.isra.0+0x8c/0x2a8
    [ C0] [<900000000164e34c>] __schedule+0x314/0xa48
    [ C0] [<900000000164ead8>] schedule+0x58/0xf0
    [ C0] [<9000000000294a2c>] worker_thread+0x224/0x498
    [ C0] [<900000000029d2f0>] kthread+0xf8/0x108
    [ C0] [<9000000000221f28>] ret_from_kernel_thread+0xc/0xa4
    [ C0]
    [ C0] ---[ end trace 0000000000000000 ]---
    
    The root cause is acpi_enable_all_wakeup_gpes() uses a mutex to protect
    acpi_hw_enable_all_wakeup_gpes(), and acpi_ut_acquire_mutex() may cause
    a thread switch. Since there is no longer concurrent execution during
    loongarch_acpi_suspend(), we can call acpi_hw_enable_all_wakeup_gpes()
    directly in enable_gpe_wakeup().
    
    The solution is similar to commit 22db06337f590d01 ("ACPI: sleep: Avoid
    breaking S3 wakeup due to might_sleep()").
    
    Fixes: 366bb35a8e48 ("LoongArch: Add suspend (ACPI S3) support")
    Signed-off-by: Qunqin Zhao <zhaoqunqin@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
md/md-bitmap: factor behind write counters out from bitmap_{start/end}write() [+ + +]
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Thu Jan 9 09:51:41 2025 +0800

    md/md-bitmap: factor behind write counters out from bitmap_{start/end}write()
    
    commit 08c50142a128dcb2d7060aa3b4c5db8837f7a46a upstream.
    
    behind_write is only used in raid1, prepare to refactor
    bitmap_{start/end}write(), there are no functional changes.
    
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Reviewed-by: Xiao Ni <xni@redhat.com>
    Link: https://lore.kernel.org/r/20250109015145.158868-2-yukuai1@huaweicloud.com
    Signed-off-by: Song Liu <song@kernel.org>
    Signed-off-by: Yu Kuai <yukuai1@huaweicloud.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

md/md-bitmap: move bitmap_{start, end}write to md upper layer [+ + +]
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Thu Jan 9 09:51:45 2025 +0800

    md/md-bitmap: move bitmap_{start, end}write to md upper layer
    
    commit cd5fc653381811f1e0ba65f5d169918cab61476f upstream.
    
    There are two BUG reports that raid5 will hang at
    bitmap_startwrite([1],[2]), root cause is that bitmap start write and end
    write is unbalanced, it's not quite clear where, and while reviewing raid5
    code, it's found that bitmap operations can be optimized. For example,
    for a 4 disks raid5, with chunksize=8k, if user issue a IO (0 + 48k) to
    the array:
    
    ┌────────────────────────────────────────────────────────────┐
    │chunk 0                                                     │
    │      ┌────────────┬─────────────┬─────────────┬────────────┼
    │  sh0 │A0: 0 + 4k  │A1: 8k + 4k  │A2: 16k + 4k │A3: P       │
    │      ┼────────────┼─────────────┼─────────────┼────────────┼
    │  sh1 │B0: 4k + 4k │B1: 12k + 4k │B2: 20k + 4k │B3: P       │
    ┼──────┴────────────┴─────────────┴─────────────┴────────────┼
    │chunk 1                                                     │
    │      ┌────────────┬─────────────┬─────────────┬────────────┤
    │  sh2 │C0: 24k + 4k│C1: 32k + 4k │C2: P        │C3: 40k + 4k│
    │      ┼────────────┼─────────────┼─────────────┼────────────┼
    │  sh3 │D0: 28k + 4k│D1: 36k + 4k │D2: P        │D3: 44k + 4k│
    └──────┴────────────┴─────────────┴─────────────┴────────────┘
    
    Before this patch, 4 stripe head will be used, and each sh will attach
    bio for 3 disks, and each attached bio will trigger
    bitmap_startwrite() once, which means total 12 times.
     - 3 times (0 + 4k), for (A0, A1 and A2)
     - 3 times (4 + 4k), for (B0, B1 and B2)
     - 3 times (8 + 4k), for (C0, C1 and C3)
     - 3 times (12 + 4k), for (D0, D1 and D3)
    
    After this patch, md upper layer will calculate that IO range (0 + 48k)
    is corresponding to the bitmap (0 + 16k), and call bitmap_startwrite()
    just once.
    
    Noted that this patch will align bitmap ranges to the chunks, for example,
    if user issue a IO (0 + 4k) to array:
    
    - Before this patch, 1 time (0 + 4k), for A0;
    - After this patch, 1 time (0 + 8k) for chunk 0;
    
    Usually, one bitmap bit will represent more than one disk chunk, and this
    doesn't have any difference. And even if user really created a array
    that one chunk contain multiple bits, the overhead is that more data
    will be recovered after power failure.
    
    Also remove STRIPE_BITMAP_PENDING since it's not used anymore.
    
    [1] https://lore.kernel.org/all/CAJpMwyjmHQLvm6zg1cmQErttNNQPDAAXPKM3xgTjMhbfts986Q@mail.gmail.com/
    [2] https://lore.kernel.org/all/ADF7D720-5764-4AF3-B68E-1845988737AA@flyingcircus.io/
    
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Link: https://lore.kernel.org/r/20250109015145.158868-6-yukuai1@huaweicloud.com
    Signed-off-by: Song Liu <song@kernel.org>
    Signed-off-by: Yu Kuai <yukuai1@huaweicloud.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

md/md-bitmap: remove the last parameter for bimtap_ops->endwrite() [+ + +]
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Thu Jan 9 09:51:42 2025 +0800

    md/md-bitmap: remove the last parameter for bimtap_ops->endwrite()
    
    commit 4f0e7d0e03b7b80af84759a9e7cfb0f81ac4adae upstream.
    
    For the case that IO failed for one rdev, the bit will be mark as NEEDED
    in following cases:
    
    1) If badblocks is set and rdev is not faulty;
    2) If rdev is faulty;
    
    Case 1) is useless because synchronize data to badblocks make no sense.
    Case 2) can be replaced with mddev->degraded.
    
    Also remove R1BIO_Degraded, R10BIO_Degraded and STRIPE_DEGRADED since
    case 2) no longer use them.
    
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Link: https://lore.kernel.org/r/20250109015145.158868-3-yukuai1@huaweicloud.com
    Signed-off-by: Song Liu <song@kernel.org>
    Signed-off-by: Yu Kuai <yukuai1@huaweicloud.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

md/md-bitmap: Synchronize bitmap_get_stats() with bitmap lifetime [+ + +]
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Fri Jan 24 17:20:55 2025 +0800

    md/md-bitmap: Synchronize bitmap_get_stats() with bitmap lifetime
    
    commit 8d28d0ddb986f56920ac97ae704cc3340a699a30 upstream.
    
    After commit ec6bb299c7c3 ("md/md-bitmap: add 'sync_size' into struct
    md_bitmap_stats"), following panic is reported:
    
    Oops: general protection fault, probably for non-canonical address
    RIP: 0010:bitmap_get_stats+0x2b/0xa0
    Call Trace:
     <TASK>
     md_seq_show+0x2d2/0x5b0
     seq_read_iter+0x2b9/0x470
     seq_read+0x12f/0x180
     proc_reg_read+0x57/0xb0
     vfs_read+0xf6/0x380
     ksys_read+0x6c/0xf0
     do_syscall_64+0x82/0x170
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    Root cause is that bitmap_get_stats() can be called at anytime if mddev
    is still there, even if bitmap is destroyed, or not fully initialized.
    Deferenceing bitmap in this case can crash the kernel. Meanwhile, the
    above commit start to deferencing bitmap->storage, make the problem
    easier to trigger.
    
    Fix the problem by protecting bitmap_get_stats() with bitmap_info.mutex.
    
    Cc: stable@vger.kernel.org # v6.12+
    Fixes: 32a7627cf3a3 ("[PATCH] md: optimised resync using Bitmap based intent logging")
    Reported-and-tested-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
    Closes: https://lore.kernel.org/linux-raid/ca3a91a2-50ae-4f68-b317-abd9889f3907@oracle.com/T/#m6e5086c95201135e4941fe38f9efa76daf9666c5
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Link: https://lore.kernel.org/r/20250124092055.4050195-1-yukuai1@huaweicloud.com
    Signed-off-by: Song Liu <song@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
md/raid5: implement pers->bitmap_sector() [+ + +]
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Thu Jan 9 09:51:44 2025 +0800

    md/raid5: implement pers->bitmap_sector()
    
    commit 9c89f604476cf15c31fbbdb043cff7fbf1dbe0cb upstream.
    
    Bitmap is used for the whole array for raid1/raid10, hence IO for the
    array can be used directly for bitmap. However, bitmap is used for
    underlying disks for raid5, hence IO for the array can't be used
    directly for bitmap.
    
    Implement pers->bitmap_sector() for raid5 to convert IO ranges from the
    array to the underlying disks.
    
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Link: https://lore.kernel.org/r/20250109015145.158868-5-yukuai1@huaweicloud.com
    Signed-off-by: Song Liu <song@kernel.org>
    Signed-off-by: Yu Kuai <yukuai1@huaweicloud.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
md: add a new callback pers->bitmap_sector() [+ + +]
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Thu Jan 9 09:51:43 2025 +0800

    md: add a new callback pers->bitmap_sector()
    
    commit 0c984a283a3ea3f10bebecd6c57c1d41b2e4f518 upstream.
    
    This callback will be used in raid5 to convert io ranges from array to
    bitmap.
    
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Reviewed-by: Xiao Ni <xni@redhat.com>
    Link: https://lore.kernel.org/r/20250109015145.158868-4-yukuai1@huaweicloud.com
    Signed-off-by: Song Liu <song@kernel.org>
    Signed-off-by: Yu Kuai <yukuai1@huaweicloud.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
media: camif-core: Add check for clk_enable() [+ + +]
Author: Jiasheng Jiang <jiashengjiangcool@gmail.com>
Date:   Mon Nov 25 19:18:17 2024 +0000

    media: camif-core: Add check for clk_enable()
    
    [ Upstream commit 77ed2470ac09c2b0a33cf3f98cc51d18ba9ed976 ]
    
    Add check for the return value of clk_enable() to gurantee the success.
    
    Fixes: babde1c243b2 ("[media] V4L: Add driver for S3C24XX/S3C64XX SoC series camera interface")
    Signed-off-by: Jiasheng Jiang <jiashengjiangcool@gmail.com>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: dvb-usb-v2: af9035: fix ISO C90 compilation error on af9035_i2c_master_xfer [+ + +]
Author: Desnes Nunes <desnesn@redhat.com>
Date:   Thu Sep 19 14:27:55 2024 -0300

    media: dvb-usb-v2: af9035: fix ISO C90 compilation error on af9035_i2c_master_xfer
    
    [ Upstream commit c36b9ad1a8add3c114e25fe167efa217a813b0c7 ]
    
    This fixes a 'ISO C90 forbids mixed declarations and code' compilation
    error on af9035_i2c_master_xfer, which is caused by the sanity check added
    on user controlled msg[i], before declaring the demodulator register.
    
    Fixes: 7bf744f2de0a ("media: dvb-usb-v2: af9035: Fix null-ptr-deref in af9035_i2c_master_xfer")
    Signed-off-by: Desnes Nunes <desnesn@redhat.com>
    Link: https://lore.kernel.org/r/20240919172755.196907-1-desnesn@redhat.com
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: i2c: imx290: Register 0x3011 varies between imx327 and imx290 [+ + +]
Author: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date:   Wed Nov 20 19:17:04 2024 +0000

    media: i2c: imx290: Register 0x3011 varies between imx327 and imx290
    
    [ Upstream commit f2055c1d62d6dfd25a31d1d1923883f21305aea5 ]
    
    Reviewing the datasheets, register 0x3011 is meant to be 0x02 on imx327
    and 0x00 on imx290.
    
    Move it out of the common registers, and set it appropriately in the
    sensor specific sections. (Included for imx290 to be explicit, rather
    than relying on the default value).
    
    Fixes: 2d41947ec2c0 ("media: i2c: imx290: Add support for imx327 variant")
    Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: i2c: imx412: Add missing newline to prints [+ + +]
Author: Luca Weiss <luca.weiss@fairphone.com>
Date:   Mon Nov 18 22:45:46 2024 +0100

    media: i2c: imx412: Add missing newline to prints
    
    [ Upstream commit 33f4a7fba7229232e294f4794503283e44cd03f2 ]
    
    Add trailing \n to dev_dbg and dev_err prints where missing.
    
    Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
    Fixes: 9214e86c0cc1 ("media: i2c: Add imx412 camera sensor driver")
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: i2c: ov9282: Correct the exposure offset [+ + +]
Author: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date:   Mon Dec 9 14:55:45 2024 +0000

    media: i2c: ov9282: Correct the exposure offset
    
    [ Upstream commit feaf4154d69657af2bf96e6e66cca794f88b1a61 ]
    
    The datasheet lists that "Maximum exposure time is frame
    length -25 row periods, where frame length is set by
    registers {0x380E, 0x380F}".
    However this driver had OV9282_EXPOSURE_OFFSET set to 12
    which allowed that restriction to be violated, and would
    result in very under-exposed images.
    
    Correct the offset.
    
    Fixes: 14ea315bbeb7 ("media: i2c: Add ov9282 camera sensor driver")
    Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
    Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: imx-jpeg: Fix potential error pointer dereference in detach_pm() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Thu Oct 17 23:34:16 2024 +0300

    media: imx-jpeg: Fix potential error pointer dereference in detach_pm()
    
    commit 1378ffec30367233152b7dbf4fa6a25ee98585d1 upstream.
    
    The proble is on the first line:
    
            if (jpeg->pd_dev[i] && !pm_runtime_suspended(jpeg->pd_dev[i]))
    
    If jpeg->pd_dev[i] is an error pointer, then passing it to
    pm_runtime_suspended() will lead to an Oops.  The other conditions
    check for both error pointers and NULL, but it would be more clear to
    use the IS_ERR_OR_NULL() check for that.
    
    Fixes: fd0af4cd35da ("media: imx-jpeg: Ensure power suppliers be suspended before detach them")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Ming Qian <ming.qian@nxp.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: lmedm04: Handle errors for lme2510_int_read [+ + +]
Author: Chen Ni <nichen@iscas.ac.cn>
Date:   Tue May 21 17:10:42 2024 +0800

    media: lmedm04: Handle errors for lme2510_int_read
    
    [ Upstream commit a2836d3fe220220ff8c495ca9722f89cea8a67e7 ]
    
    Add check for the return value of usb_pipe_endpoint() and
    usb_submit_urb() in order to catch the errors.
    
    Fixes: 15e1ce33182d ("[media] lmedm04: Fix usb_submit_urb BOGUS urb xfer, pipe 1 != type 3 in interrupt urb")
    Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
    Link: https://lore.kernel.org/r/20240521091042.1769684-1-nichen@iscas.ac.cn
    Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: marvell: Add check for clk_enable() [+ + +]
Author: Jiasheng Jiang <jiashengjiangcool@gmail.com>
Date:   Tue Dec 3 21:29:02 2024 +0000

    media: marvell: Add check for clk_enable()
    
    [ Upstream commit 11f68d2ba2e1521a608af773bf788e8cfa260f68 ]
    
    Add check for the return value of clk_enable() to guarantee the success.
    
    Fixes: 81a409bfd551 ("media: marvell-ccic: provide a clock for the sensor")
    Signed-off-by: Jiasheng Jiang <jiashengjiangcool@gmail.com>
    [Sakari Ailus: Fix spelling in commit message.]
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: mipi-csis: Add check for clk_enable() [+ + +]
Author: Jiasheng Jiang <jiashengjiangcool@gmail.com>
Date:   Mon Nov 25 19:18:18 2024 +0000

    media: mipi-csis: Add check for clk_enable()
    
    [ Upstream commit 125ad1aeec77eb55273b420be6894b284a01e4b6 ]
    
    Add check for the return value of clk_enable() to gurantee the success.
    
    Fixes: b5f1220d587d ("[media] v4l: Add v4l2 subdev driver for S5P/EXYNOS4 MIPI-CSI receivers")
    Signed-off-by: Jiasheng Jiang <jiashengjiangcool@gmail.com>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: nxp: imx8-isi: fix v4l2-compliance test errors [+ + +]
Author: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
Date:   Tue Sep 24 13:33:04 2024 +0300

    media: nxp: imx8-isi: fix v4l2-compliance test errors
    
    [ Upstream commit 7b12ab055edef2f51733d155617a401a05237bcc ]
    
    Running the v4l2-compliance (1.27.0-5208, SHA: af114250d48d) on the m2m
    device fails on the MMAP streaming tests, with the following messages:
    
    fail: v4l2-test-buffers.cpp(240): g_field() == V4L2_FIELD_ANY
    fail: v4l2-test-buffers.cpp(1508): buf.qbuf(node)
    
    Apparently, the driver does not properly set the field member of
    vb2_v4l2_buffer struct, returning the default V4L2_FIELD_ANY value which
    is against the guidelines.
    
    Fixes: cf21f328fcaf ("media: nxp: Add i.MX8 ISI driver")
    Signed-off-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Link: https://lore.kernel.org/r/20240924103304.124085-1-laurentiu.palcu@oss.nxp.com
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: rc: iguanair: handle timeouts [+ + +]
Author: Oliver Neukum <oneukum@suse.com>
Date:   Tue Nov 26 14:17:22 2024 +0100

    media: rc: iguanair: handle timeouts
    
    [ Upstream commit b98d5000c50544f14bacb248c34e5219fbe81287 ]
    
    In case of a timeout the IO must be cancelled or
    the next IO using the URB will fail and/or overwrite
    an operational URB.
    
    The automatic bisection fails because it arrives
    at a commit that correctly lets the test case run
    without an error.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Fixes: e99a7cfe93fd ("[media] iguanair: reuse existing urb callback for command responses")
    Reported-by: syzbot+ffba8e636870dac0e0c0@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/66f5cc9a.050a0220.46d20.0004.GAE@google.com/
    Tested-by: syzbot+ffba8e636870dac0e0c0@syzkaller.appspotmail.com
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: uvcvideo: Fix double free in error path [+ + +]
Author: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Date:   Fri Nov 8 01:51:30 2024 +0200

    media: uvcvideo: Fix double free in error path
    
    commit c6ef3a7fa97ec823a1e1af9085cf13db9f7b3bac upstream.
    
    If the uvc_status_init() function fails to allocate the int_urb, it will
    free the dev->status pointer but doesn't reset the pointer to NULL. This
    results in the kfree() call in uvc_status_cleanup() trying to
    double-free the memory. Fix it by resetting the dev->status pointer to
    NULL after freeing it.
    
    Fixes: a31a4055473b ("V4L/DVB:usbvideo:don't use part of buffer for USB transfer #4")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20241107235130.31372-1-laurent.pinchart@ideasonboard.com
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Reviewed by: Ricardo Ribalda <ribalda@chromium.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: uvcvideo: Propagate buf->error to userspace [+ + +]
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Wed Dec 18 21:39:08 2024 +0000

    media: uvcvideo: Propagate buf->error to userspace
    
    [ Upstream commit 87ce177654e388451850905a1d376658aebe8699 ]
    
    Now we return VB2_BUF_STATE_DONE for valid and invalid frames. Propagate
    the correct value, so the user can know if the frame is valid or not via
    struct v4l2_buffer->flags.
    
    Reported-by: Hans de Goede <hdegoede@redhat.com>
    Closes: https://lore.kernel.org/linux-media/84b0f212-cd88-46bb-8e6f-b94ec3eccba6@redhat.com
    Fixes: 6998b6fb4b1c ("[media] uvcvideo: Use videobuf2-vmalloc")
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20241218-uvc-deprecate-v2-1-ab814139e983@chromium.org
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
memcg: fix soft lockup in the OOM process [+ + +]
Author: Chen Ridong <chenridong@huawei.com>
Date:   Tue Dec 24 02:52:38 2024 +0000

    memcg: fix soft lockup in the OOM process
    
    commit ade81479c7dda1ce3eedb215c78bc615bbd04f06 upstream.
    
    A soft lockup issue was found in the product with about 56,000 tasks were
    in the OOM cgroup, it was traversing them when the soft lockup was
    triggered.
    
    watchdog: BUG: soft lockup - CPU#2 stuck for 23s! [VM Thread:1503066]
    CPU: 2 PID: 1503066 Comm: VM Thread Kdump: loaded Tainted: G
    Hardware name: Huawei Cloud OpenStack Nova, BIOS
    RIP: 0010:console_unlock+0x343/0x540
    RSP: 0000:ffffb751447db9a0 EFLAGS: 00000247 ORIG_RAX: ffffffffffffff13
    RAX: 0000000000000001 RBX: 0000000000000000 RCX: 00000000ffffffff
    RDX: 0000000000000000 RSI: 0000000000000004 RDI: 0000000000000247
    RBP: ffffffffafc71f90 R08: 0000000000000000 R09: 0000000000000040
    R10: 0000000000000080 R11: 0000000000000000 R12: ffffffffafc74bd0
    R13: ffffffffaf60a220 R14: 0000000000000247 R15: 0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f2fe6ad91f0 CR3: 00000004b2076003 CR4: 0000000000360ee0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     vprintk_emit+0x193/0x280
     printk+0x52/0x6e
     dump_task+0x114/0x130
     mem_cgroup_scan_tasks+0x76/0x100
     dump_header+0x1fe/0x210
     oom_kill_process+0xd1/0x100
     out_of_memory+0x125/0x570
     mem_cgroup_out_of_memory+0xb5/0xd0
     try_charge+0x720/0x770
     mem_cgroup_try_charge+0x86/0x180
     mem_cgroup_try_charge_delay+0x1c/0x40
     do_anonymous_page+0xb5/0x390
     handle_mm_fault+0xc4/0x1f0
    
    This is because thousands of processes are in the OOM cgroup, it takes a
    long time to traverse all of them.  As a result, this lead to soft lockup
    in the OOM process.
    
    To fix this issue, call 'cond_resched' in the 'mem_cgroup_scan_tasks'
    function per 1000 iterations.  For global OOM, call
    'touch_softlockup_watchdog' per 1000 iterations to avoid this issue.
    
    Link: https://lkml.kernel.org/r/20241224025238.3768787-1-chenridong@huaweicloud.com
    Fixes: 9cbb78bb3143 ("mm, memcg: introduce own oom handler to iterate only over its own threads")
    Signed-off-by: Chen Ridong <chenridong@huawei.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Roman Gushchin <roman.gushchin@linux.dev>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Shakeel Butt <shakeelb@google.com>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Michal Koutný <mkoutny@suse.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
memory: tegra20-emc: fix an OF node reference bug in tegra_emc_find_node_by_ram_code() [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Tue Dec 17 18:14:34 2024 +0900

    memory: tegra20-emc: fix an OF node reference bug in tegra_emc_find_node_by_ram_code()
    
    [ Upstream commit b9784e5cde1f9fb83661a70e580e381ae1264d12 ]
    
    As of_find_node_by_name() release the reference of the argument device
    node, tegra_emc_find_node_by_ram_code() releases some device nodes while
    still in use, resulting in possible UAFs. According to the bindings and
    the in-tree DTS files, the "emc-tables" node is always device's child
    node with the property "nvidia,use-ram-code", and the "lpddr2" node is a
    child of the "emc-tables" node. Thus utilize the
    for_each_child_of_node() macro and of_get_child_by_name() instead of
    of_find_node_by_name() to simplify the code.
    
    This bug was found by an experimental verification tool that I am
    developing.
    
    Fixes: 96e5da7c8424 ("memory: tegra: Introduce Tegra20 EMC driver")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Link: https://lore.kernel.org/r/20241217091434.1993597-1-joe@pf.is.s.u-tokyo.ac.jp
    Link: https://lore.kernel.org/r/20241218024415.2494267-3-joe@pf.is.s.u-tokyo.ac.jp
    [krzysztof: applied v1, adjust the commit msg to incorporate v2 parts]
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mfd: syscon: Fix race in device_node_get_regmap() [+ + +]
Author: Rob Herring (Arm) <robh@kernel.org>
Date:   Tue Dec 17 12:11:40 2024 -0600

    mfd: syscon: Fix race in device_node_get_regmap()
    
    [ Upstream commit 805f7aaf7fee14a57b56af01d270edf6c10765e8 ]
    
    It is possible for multiple, simultaneous callers calling
    device_node_get_regmap() with the same node to fail to find an entry in
    the syscon_list. There is a period of time while the first caller is
    calling of_syscon_register() that subsequent callers also fail to find
    an entry in the syscon_list and then call of_syscon_register() a second
    time.
    
    Fix this by keeping the lock held until after of_syscon_register()
    completes and adds the node to syscon_list. Convert the spinlock to a
    mutex as many of the functions called in of_syscon_register() such as
    kzalloc() and of_clk_get() may sleep.
    
    Fixes: bdb0066df96e ("mfd: syscon: Decouple syscon interface from platform devices")
    Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Tested-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Tested-by: Will McVicker <willmcvicker@google.com>
    Tested-by: Pankaj Dubey <pankaj.dubey@samsung.com>
    Reviewed-by: Pankaj Dubey <pankaj.dubey@samsung.com>
    Link: https://lore.kernel.org/r/20241217-syscon-fixes-v2-1-4f56d750541d@kernel.org
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
module: Convert default symbol namespace to string literal [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Tue Dec 3 19:21:07 2024 +0900

    module: Convert default symbol namespace to string literal
    
    [ Upstream commit ceb8bf2ceaa77fe222fe8fe32cb7789c9099ddf1 ]
    
    Commit cdd30ebb1b9f ("module: Convert symbol namespace to string
    literal") only converted MODULE_IMPORT_NS() and EXPORT_SYMBOL_NS(),
    leaving DEFAULT_SYMBOL_NAMESPACE as a macro expansion.
    
    This commit converts DEFAULT_SYMBOL_NAMESPACE in the same way to avoid
    annoyance for the default namespace as well.
    
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Stable-dep-of: 2505f87eb3af ("hwmon: (nct6775): Actually make use of the HWMON_NCT6775 symbol namespace")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

module: Don't fail module loading when setting ro_after_init section RO failed [+ + +]
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Thu Dec 5 20:46:16 2024 +0100

    module: Don't fail module loading when setting ro_after_init section RO failed
    
    [ Upstream commit 110b1e070f1d50f5217bd2c758db094998bb7b77 ]
    
    Once module init has succeded it is too late to cancel loading.
    If setting ro_after_init data section to read-only fails, all we
    can do is to inform the user through a warning.
    
    Reported-by: Thomas Gleixner <tglx@linutronix.de>
    Closes: https://lore.kernel.org/all/20230915082126.4187913-1-ruanjinjie@huawei.com/
    Fixes: d1909c022173 ("module: Don't ignore errors from set_memory_XX()")
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>
    Link: https://lore.kernel.org/r/d6c81f38da76092de8aacc8c93c4c65cb0fe48b8.1733427536.git.christophe.leroy@csgroup.eu
    Signed-off-by: Petr Pavlu <petr.pavlu@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

module: Extend the preempt disabled section in dereference_symbol_descriptor(). [+ + +]
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Wed Jan 8 10:04:30 2025 +0100

    module: Extend the preempt disabled section in dereference_symbol_descriptor().
    
    [ Upstream commit a145c848d69f9c6f32008d8319edaa133360dd74 ]
    
    dereference_symbol_descriptor() needs to obtain the module pointer
    belonging to pointer in order to resolve that pointer.
    The returned mod pointer is obtained under RCU-sched/ preempt_disable()
    guarantees and needs to be used within this section to ensure that the
    module is not removed in the meantime.
    
    Extend the preempt_disable() section to also cover
    dereference_module_function_descriptor().
    
    Fixes: 04b8eb7a4ccd9 ("symbol lookup: introduce dereference_symbol_descriptor()")
    Cc: James E.J. Bottomley <James.Bottomley@HansenPartnership.com>
    Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
    Cc: Helge Deller <deller@gmx.de>
    Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Naveen N Rao <naveen@kernel.org>
    Cc: Nicholas Piggin <npiggin@gmail.com>
    Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
    Cc: linux-parisc@vger.kernel.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Link: https://lore.kernel.org/r/20250108090457.512198-2-bigeasy@linutronix.de
    Signed-off-by: Petr Pavlu <petr.pavlu@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mptcp: blackhole only if 1st SYN retrans w/o MPC is accepted [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Wed Jan 29 13:24:32 2025 +0100

    mptcp: blackhole only if 1st SYN retrans w/o MPC is accepted
    
    commit e598d8981fd34470b78a1ae777dbf131b15d5bf2 upstream.
    
    The Fixes commit mentioned this:
    
    > An MPTCP firewall blackhole can be detected if the following SYN
    > retransmission after a fallback to "plain" TCP is accepted.
    
    But in fact, this blackhole was detected if any following SYN
    retransmissions after a fallback to TCP was accepted.
    
    That's because 'mptcp_subflow_early_fallback()' will set 'request_mptcp'
    to 0, and 'mpc_drop' will never be reset to 0 after.
    
    This is an issue, because some not so unusual situations might cause the
    kernel to detect a false-positive blackhole, e.g. a client trying to
    connect to a server while the network is not ready yet, causing a few
    SYN retransmissions, before reaching the end server.
    
    Fixes: 27069e7cb3d1 ("mptcp: disable active MPTCP in case of blackhole")
    Cc: stable@vger.kernel.org
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: consolidate suboption status [+ + +]
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu Jan 23 19:05:54 2025 +0100

    mptcp: consolidate suboption status
    
    commit c86b000782daba926c627d2fa00c3f60a75e7472 upstream.
    
    MPTCP maintains the received sub-options status is the bitmask carrying
    the received suboptions and in several bitfields carrying per suboption
    additional info.
    
    Zeroing the bitmask before parsing is not enough to ensure a consistent
    status, and the MPTCP code has to additionally clear some bitfiled
    depending on the actually parsed suboption.
    
    The above schema is fragile, and syzbot managed to trigger a path where
    a relevant bitfield is not cleared/initialized:
    
      BUG: KMSAN: uninit-value in __mptcp_expand_seq net/mptcp/options.c:1030 [inline]
      BUG: KMSAN: uninit-value in mptcp_expand_seq net/mptcp/protocol.h:864 [inline]
      BUG: KMSAN: uninit-value in ack_update_msk net/mptcp/options.c:1060 [inline]
      BUG: KMSAN: uninit-value in mptcp_incoming_options+0x2036/0x3d30 net/mptcp/options.c:1209
       __mptcp_expand_seq net/mptcp/options.c:1030 [inline]
       mptcp_expand_seq net/mptcp/protocol.h:864 [inline]
       ack_update_msk net/mptcp/options.c:1060 [inline]
       mptcp_incoming_options+0x2036/0x3d30 net/mptcp/options.c:1209
       tcp_data_queue+0xb4/0x7be0 net/ipv4/tcp_input.c:5233
       tcp_rcv_established+0x1061/0x2510 net/ipv4/tcp_input.c:6264
       tcp_v4_do_rcv+0x7f3/0x11a0 net/ipv4/tcp_ipv4.c:1916
       tcp_v4_rcv+0x51df/0x5750 net/ipv4/tcp_ipv4.c:2351
       ip_protocol_deliver_rcu+0x2a3/0x13d0 net/ipv4/ip_input.c:205
       ip_local_deliver_finish+0x336/0x500 net/ipv4/ip_input.c:233
       NF_HOOK include/linux/netfilter.h:314 [inline]
       ip_local_deliver+0x21f/0x490 net/ipv4/ip_input.c:254
       dst_input include/net/dst.h:460 [inline]
       ip_rcv_finish+0x4a2/0x520 net/ipv4/ip_input.c:447
       NF_HOOK include/linux/netfilter.h:314 [inline]
       ip_rcv+0xcd/0x380 net/ipv4/ip_input.c:567
       __netif_receive_skb_one_core net/core/dev.c:5704 [inline]
       __netif_receive_skb+0x319/0xa00 net/core/dev.c:5817
       process_backlog+0x4ad/0xa50 net/core/dev.c:6149
       __napi_poll+0xe7/0x980 net/core/dev.c:6902
       napi_poll net/core/dev.c:6971 [inline]
       net_rx_action+0xa5a/0x19b0 net/core/dev.c:7093
       handle_softirqs+0x1a0/0x7c0 kernel/softirq.c:561
       __do_softirq+0x14/0x1a kernel/softirq.c:595
       do_softirq+0x9a/0x100 kernel/softirq.c:462
       __local_bh_enable_ip+0x9f/0xb0 kernel/softirq.c:389
       local_bh_enable include/linux/bottom_half.h:33 [inline]
       rcu_read_unlock_bh include/linux/rcupdate.h:919 [inline]
       __dev_queue_xmit+0x2758/0x57d0 net/core/dev.c:4493
       dev_queue_xmit include/linux/netdevice.h:3168 [inline]
       neigh_hh_output include/net/neighbour.h:523 [inline]
       neigh_output include/net/neighbour.h:537 [inline]
       ip_finish_output2+0x187c/0x1b70 net/ipv4/ip_output.c:236
       __ip_finish_output+0x287/0x810
       ip_finish_output+0x4b/0x600 net/ipv4/ip_output.c:324
       NF_HOOK_COND include/linux/netfilter.h:303 [inline]
       ip_output+0x15f/0x3f0 net/ipv4/ip_output.c:434
       dst_output include/net/dst.h:450 [inline]
       ip_local_out net/ipv4/ip_output.c:130 [inline]
       __ip_queue_xmit+0x1f2a/0x20d0 net/ipv4/ip_output.c:536
       ip_queue_xmit+0x60/0x80 net/ipv4/ip_output.c:550
       __tcp_transmit_skb+0x3cea/0x4900 net/ipv4/tcp_output.c:1468
       tcp_transmit_skb net/ipv4/tcp_output.c:1486 [inline]
       tcp_write_xmit+0x3b90/0x9070 net/ipv4/tcp_output.c:2829
       __tcp_push_pending_frames+0xc4/0x380 net/ipv4/tcp_output.c:3012
       tcp_send_fin+0x9f6/0xf50 net/ipv4/tcp_output.c:3618
       __tcp_close+0x140c/0x1550 net/ipv4/tcp.c:3130
       __mptcp_close_ssk+0x74e/0x16f0 net/mptcp/protocol.c:2496
       mptcp_close_ssk+0x26b/0x2c0 net/mptcp/protocol.c:2550
       mptcp_pm_nl_rm_addr_or_subflow+0x635/0xd10 net/mptcp/pm_netlink.c:889
       mptcp_pm_nl_rm_subflow_received net/mptcp/pm_netlink.c:924 [inline]
       mptcp_pm_flush_addrs_and_subflows net/mptcp/pm_netlink.c:1688 [inline]
       mptcp_nl_flush_addrs_list net/mptcp/pm_netlink.c:1709 [inline]
       mptcp_pm_nl_flush_addrs_doit+0xe10/0x1630 net/mptcp/pm_netlink.c:1750
       genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
       genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
       genl_rcv_msg+0x1214/0x12c0 net/netlink/genetlink.c:1210
       netlink_rcv_skb+0x375/0x650 net/netlink/af_netlink.c:2542
       genl_rcv+0x40/0x60 net/netlink/genetlink.c:1219
       netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
       netlink_unicast+0xf52/0x1260 net/netlink/af_netlink.c:1347
       netlink_sendmsg+0x10da/0x11e0 net/netlink/af_netlink.c:1891
       sock_sendmsg_nosec net/socket.c:711 [inline]
       __sock_sendmsg+0x30f/0x380 net/socket.c:726
       ____sys_sendmsg+0x877/0xb60 net/socket.c:2583
       ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2637
       __sys_sendmsg net/socket.c:2669 [inline]
       __do_sys_sendmsg net/socket.c:2674 [inline]
       __se_sys_sendmsg net/socket.c:2672 [inline]
       __x64_sys_sendmsg+0x212/0x3c0 net/socket.c:2672
       x64_sys_call+0x2ed6/0x3c30 arch/x86/include/generated/asm/syscalls_64.h:47
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
      Uninit was stored to memory at:
       mptcp_get_options+0x2c0f/0x2f20 net/mptcp/options.c:397
       mptcp_incoming_options+0x19a/0x3d30 net/mptcp/options.c:1150
       tcp_data_queue+0xb4/0x7be0 net/ipv4/tcp_input.c:5233
       tcp_rcv_established+0x1061/0x2510 net/ipv4/tcp_input.c:6264
       tcp_v4_do_rcv+0x7f3/0x11a0 net/ipv4/tcp_ipv4.c:1916
       tcp_v4_rcv+0x51df/0x5750 net/ipv4/tcp_ipv4.c:2351
       ip_protocol_deliver_rcu+0x2a3/0x13d0 net/ipv4/ip_input.c:205
       ip_local_deliver_finish+0x336/0x500 net/ipv4/ip_input.c:233
       NF_HOOK include/linux/netfilter.h:314 [inline]
       ip_local_deliver+0x21f/0x490 net/ipv4/ip_input.c:254
       dst_input include/net/dst.h:460 [inline]
       ip_rcv_finish+0x4a2/0x520 net/ipv4/ip_input.c:447
       NF_HOOK include/linux/netfilter.h:314 [inline]
       ip_rcv+0xcd/0x380 net/ipv4/ip_input.c:567
       __netif_receive_skb_one_core net/core/dev.c:5704 [inline]
       __netif_receive_skb+0x319/0xa00 net/core/dev.c:5817
       process_backlog+0x4ad/0xa50 net/core/dev.c:6149
       __napi_poll+0xe7/0x980 net/core/dev.c:6902
       napi_poll net/core/dev.c:6971 [inline]
       net_rx_action+0xa5a/0x19b0 net/core/dev.c:7093
       handle_softirqs+0x1a0/0x7c0 kernel/softirq.c:561
       __do_softirq+0x14/0x1a kernel/softirq.c:595
    
      Uninit was stored to memory at:
       put_unaligned_be32 include/linux/unaligned.h:68 [inline]
       mptcp_write_options+0x17f9/0x3100 net/mptcp/options.c:1417
       mptcp_options_write net/ipv4/tcp_output.c:465 [inline]
       tcp_options_write+0x6d9/0xe90 net/ipv4/tcp_output.c:759
       __tcp_transmit_skb+0x294b/0x4900 net/ipv4/tcp_output.c:1414
       tcp_transmit_skb net/ipv4/tcp_output.c:1486 [inline]
       tcp_write_xmit+0x3b90/0x9070 net/ipv4/tcp_output.c:2829
       __tcp_push_pending_frames+0xc4/0x380 net/ipv4/tcp_output.c:3012
       tcp_send_fin+0x9f6/0xf50 net/ipv4/tcp_output.c:3618
       __tcp_close+0x140c/0x1550 net/ipv4/tcp.c:3130
       __mptcp_close_ssk+0x74e/0x16f0 net/mptcp/protocol.c:2496
       mptcp_close_ssk+0x26b/0x2c0 net/mptcp/protocol.c:2550
       mptcp_pm_nl_rm_addr_or_subflow+0x635/0xd10 net/mptcp/pm_netlink.c:889
       mptcp_pm_nl_rm_subflow_received net/mptcp/pm_netlink.c:924 [inline]
       mptcp_pm_flush_addrs_and_subflows net/mptcp/pm_netlink.c:1688 [inline]
       mptcp_nl_flush_addrs_list net/mptcp/pm_netlink.c:1709 [inline]
       mptcp_pm_nl_flush_addrs_doit+0xe10/0x1630 net/mptcp/pm_netlink.c:1750
       genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
       genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
       genl_rcv_msg+0x1214/0x12c0 net/netlink/genetlink.c:1210
       netlink_rcv_skb+0x375/0x650 net/netlink/af_netlink.c:2542
       genl_rcv+0x40/0x60 net/netlink/genetlink.c:1219
       netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
       netlink_unicast+0xf52/0x1260 net/netlink/af_netlink.c:1347
       netlink_sendmsg+0x10da/0x11e0 net/netlink/af_netlink.c:1891
       sock_sendmsg_nosec net/socket.c:711 [inline]
       __sock_sendmsg+0x30f/0x380 net/socket.c:726
       ____sys_sendmsg+0x877/0xb60 net/socket.c:2583
       ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2637
       __sys_sendmsg net/socket.c:2669 [inline]
       __do_sys_sendmsg net/socket.c:2674 [inline]
       __se_sys_sendmsg net/socket.c:2672 [inline]
       __x64_sys_sendmsg+0x212/0x3c0 net/socket.c:2672
       x64_sys_call+0x2ed6/0x3c30 arch/x86/include/generated/asm/syscalls_64.h:47
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
      Uninit was stored to memory at:
       mptcp_pm_add_addr_signal+0x3d7/0x4c0
       mptcp_established_options_add_addr net/mptcp/options.c:666 [inline]
       mptcp_established_options+0x1b9b/0x3a00 net/mptcp/options.c:884
       tcp_established_options+0x2c4/0x7d0 net/ipv4/tcp_output.c:1012
       __tcp_transmit_skb+0x5b7/0x4900 net/ipv4/tcp_output.c:1333
       tcp_transmit_skb net/ipv4/tcp_output.c:1486 [inline]
       tcp_write_xmit+0x3b90/0x9070 net/ipv4/tcp_output.c:2829
       __tcp_push_pending_frames+0xc4/0x380 net/ipv4/tcp_output.c:3012
       tcp_send_fin+0x9f6/0xf50 net/ipv4/tcp_output.c:3618
       __tcp_close+0x140c/0x1550 net/ipv4/tcp.c:3130
       __mptcp_close_ssk+0x74e/0x16f0 net/mptcp/protocol.c:2496
       mptcp_close_ssk+0x26b/0x2c0 net/mptcp/protocol.c:2550
       mptcp_pm_nl_rm_addr_or_subflow+0x635/0xd10 net/mptcp/pm_netlink.c:889
       mptcp_pm_nl_rm_subflow_received net/mptcp/pm_netlink.c:924 [inline]
       mptcp_pm_flush_addrs_and_subflows net/mptcp/pm_netlink.c:1688 [inline]
       mptcp_nl_flush_addrs_list net/mptcp/pm_netlink.c:1709 [inline]
       mptcp_pm_nl_flush_addrs_doit+0xe10/0x1630 net/mptcp/pm_netlink.c:1750
       genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
       genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
       genl_rcv_msg+0x1214/0x12c0 net/netlink/genetlink.c:1210
       netlink_rcv_skb+0x375/0x650 net/netlink/af_netlink.c:2542
       genl_rcv+0x40/0x60 net/netlink/genetlink.c:1219
       netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
       netlink_unicast+0xf52/0x1260 net/netlink/af_netlink.c:1347
       netlink_sendmsg+0x10da/0x11e0 net/netlink/af_netlink.c:1891
       sock_sendmsg_nosec net/socket.c:711 [inline]
       __sock_sendmsg+0x30f/0x380 net/socket.c:726
       ____sys_sendmsg+0x877/0xb60 net/socket.c:2583
       ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2637
       __sys_sendmsg net/socket.c:2669 [inline]
       __do_sys_sendmsg net/socket.c:2674 [inline]
       __se_sys_sendmsg net/socket.c:2672 [inline]
       __x64_sys_sendmsg+0x212/0x3c0 net/socket.c:2672
       x64_sys_call+0x2ed6/0x3c30 arch/x86/include/generated/asm/syscalls_64.h:47
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
      Uninit was stored to memory at:
       mptcp_pm_add_addr_received+0x95f/0xdd0 net/mptcp/pm.c:235
       mptcp_incoming_options+0x2983/0x3d30 net/mptcp/options.c:1169
       tcp_data_queue+0xb4/0x7be0 net/ipv4/tcp_input.c:5233
       tcp_rcv_state_process+0x2a38/0x49d0 net/ipv4/tcp_input.c:6972
       tcp_v4_do_rcv+0xbf9/0x11a0 net/ipv4/tcp_ipv4.c:1939
       tcp_v4_rcv+0x51df/0x5750 net/ipv4/tcp_ipv4.c:2351
       ip_protocol_deliver_rcu+0x2a3/0x13d0 net/ipv4/ip_input.c:205
       ip_local_deliver_finish+0x336/0x500 net/ipv4/ip_input.c:233
       NF_HOOK include/linux/netfilter.h:314 [inline]
       ip_local_deliver+0x21f/0x490 net/ipv4/ip_input.c:254
       dst_input include/net/dst.h:460 [inline]
       ip_rcv_finish+0x4a2/0x520 net/ipv4/ip_input.c:447
       NF_HOOK include/linux/netfilter.h:314 [inline]
       ip_rcv+0xcd/0x380 net/ipv4/ip_input.c:567
       __netif_receive_skb_one_core net/core/dev.c:5704 [inline]
       __netif_receive_skb+0x319/0xa00 net/core/dev.c:5817
       process_backlog+0x4ad/0xa50 net/core/dev.c:6149
       __napi_poll+0xe7/0x980 net/core/dev.c:6902
       napi_poll net/core/dev.c:6971 [inline]
       net_rx_action+0xa5a/0x19b0 net/core/dev.c:7093
       handle_softirqs+0x1a0/0x7c0 kernel/softirq.c:561
       __do_softirq+0x14/0x1a kernel/softirq.c:595
    
      Local variable mp_opt created at:
       mptcp_incoming_options+0x119/0x3d30 net/mptcp/options.c:1127
       tcp_data_queue+0xb4/0x7be0 net/ipv4/tcp_input.c:5233
    
    The current schema is too fragile; address the issue grouping all the
    state-related data together and clearing the whole group instead of
    just the bitmask. This also cleans-up the code a bit, as there is no
    need to individually clear "random" bitfield in a couple of places
    any more.
    
    Fixes: 84dfe3677a6f ("mptcp: send out dedicated ADD_ADDR packet")
    Cc: stable@vger.kernel.org
    Reported-by: syzbot+23728c2df58b3bd175ad@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/6786ac51.050a0220.216c54.00a7.GAE@google.com
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/541
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20250123-net-mptcp-syzbot-issues-v1-1-af73258a726f@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: handle fastopen disconnect correctly [+ + +]
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu Jan 23 19:05:56 2025 +0100

    mptcp: handle fastopen disconnect correctly
    
    commit 619af16b3b57a3a4ee50b9a30add9ff155541e71 upstream.
    
    Syzbot was able to trigger a data stream corruption:
    
      WARNING: CPU: 0 PID: 9846 at net/mptcp/protocol.c:1024 __mptcp_clean_una+0xddb/0xff0 net/mptcp/protocol.c:1024
      Modules linked in:
      CPU: 0 UID: 0 PID: 9846 Comm: syz-executor351 Not tainted 6.13.0-rc2-syzkaller-00059-g00a5acdbf398 #0
      Hardware name: Google Compute Engine/Google Compute Engine, BIOS Google 11/25/2024
      RIP: 0010:__mptcp_clean_una+0xddb/0xff0 net/mptcp/protocol.c:1024
      Code: fa ff ff 48 8b 4c 24 18 80 e1 07 fe c1 38 c1 0f 8c 8e fa ff ff 48 8b 7c 24 18 e8 e0 db 54 f6 e9 7f fa ff ff e8 e6 80 ee f5 90 <0f> 0b 90 4c 8b 6c 24 40 4d 89 f4 e9 04 f5 ff ff 44 89 f1 80 e1 07
      RSP: 0018:ffffc9000c0cf400 EFLAGS: 00010293
      RAX: ffffffff8bb0dd5a RBX: ffff888033f5d230 RCX: ffff888059ce8000
      RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
      RBP: ffffc9000c0cf518 R08: ffffffff8bb0d1dd R09: 1ffff110170c8928
      R10: dffffc0000000000 R11: ffffed10170c8929 R12: 0000000000000000
      R13: ffff888033f5d220 R14: dffffc0000000000 R15: ffff8880592b8000
      FS:  00007f6e866496c0(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f6e86f491a0 CR3: 00000000310e6000 CR4: 00000000003526f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       <TASK>
       __mptcp_clean_una_wakeup+0x7f/0x2d0 net/mptcp/protocol.c:1074
       mptcp_release_cb+0x7cb/0xb30 net/mptcp/protocol.c:3493
       release_sock+0x1aa/0x1f0 net/core/sock.c:3640
       inet_wait_for_connect net/ipv4/af_inet.c:609 [inline]
       __inet_stream_connect+0x8bd/0xf30 net/ipv4/af_inet.c:703
       mptcp_sendmsg_fastopen+0x2a2/0x530 net/mptcp/protocol.c:1755
       mptcp_sendmsg+0x1884/0x1b10 net/mptcp/protocol.c:1830
       sock_sendmsg_nosec net/socket.c:711 [inline]
       __sock_sendmsg+0x1a6/0x270 net/socket.c:726
       ____sys_sendmsg+0x52a/0x7e0 net/socket.c:2583
       ___sys_sendmsg net/socket.c:2637 [inline]
       __sys_sendmsg+0x269/0x350 net/socket.c:2669
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
      RIP: 0033:0x7f6e86ebfe69
      Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 b1 1f 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
      RSP: 002b:00007f6e86649168 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
      RAX: ffffffffffffffda RBX: 00007f6e86f491b8 RCX: 00007f6e86ebfe69
      RDX: 0000000030004001 RSI: 0000000020000080 RDI: 0000000000000003
      RBP: 00007f6e86f491b0 R08: 00007f6e866496c0 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000246 R12: 00007f6e86f491bc
      R13: 000000000000006e R14: 00007ffe445d9420 R15: 00007ffe445d9508
       </TASK>
    
    The root cause is the bad handling of disconnect() generated internally
    by the MPTCP protocol in case of connect FASTOPEN errors.
    
    Address the issue increasing the socket disconnect counter even on such
    a case, to allow other threads waiting on the same socket lock to
    properly error out.
    
    Fixes: c2b2ae3925b6 ("mptcp: handle correctly disconnect() failures")
    Cc: stable@vger.kernel.org
    Reported-by: syzbot+ebc0b8ae5d3590b2c074@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/67605870.050a0220.37aaf.0137.GAE@google.com
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/537
    Tested-by: syzbot+ebc0b8ae5d3590b2c074@syzkaller.appspotmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20250123-net-mptcp-syzbot-issues-v1-3-af73258a726f@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: pm: only set fullmesh for subflow endp [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Thu Jan 23 19:05:55 2025 +0100

    mptcp: pm: only set fullmesh for subflow endp
    
    commit 1bb0d1348546ad059f55c93def34e67cb2a034a6 upstream.
    
    With the in-kernel path-manager, it is possible to change the 'fullmesh'
    flag. The code in mptcp_pm_nl_fullmesh() expects to change it only on
    'subflow' endpoints, to recreate more or less subflows using the linked
    address.
    
    Unfortunately, the set_flags() hook was a bit more permissive, and
    allowed 'implicit' endpoints to get the 'fullmesh' flag while it is not
    allowed before.
    
    That's what syzbot found, triggering the following warning:
    
      WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 __mark_subflow_endp_available net/mptcp/pm_netlink.c:1496 [inline]
      WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 mptcp_pm_nl_fullmesh net/mptcp/pm_netlink.c:1980 [inline]
      WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 mptcp_nl_set_flags net/mptcp/pm_netlink.c:2003 [inline]
      WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 mptcp_pm_nl_set_flags+0x974/0xdc0 net/mptcp/pm_netlink.c:2064
      Modules linked in:
      CPU: 0 UID: 0 PID: 6499 Comm: syz.1.413 Not tainted 6.13.0-rc5-syzkaller-00172-gd1bf27c4e176 #0
      Hardware name: Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
      RIP: 0010:__mark_subflow_endp_available net/mptcp/pm_netlink.c:1496 [inline]
      RIP: 0010:mptcp_pm_nl_fullmesh net/mptcp/pm_netlink.c:1980 [inline]
      RIP: 0010:mptcp_nl_set_flags net/mptcp/pm_netlink.c:2003 [inline]
      RIP: 0010:mptcp_pm_nl_set_flags+0x974/0xdc0 net/mptcp/pm_netlink.c:2064
      Code: 01 00 00 49 89 c5 e8 fb 45 e8 f5 e9 b8 fc ff ff e8 f1 45 e8 f5 4c 89 f7 be 03 00 00 00 e8 44 1d 0b f9 eb a0 e8 dd 45 e8 f5 90 <0f> 0b 90 e9 17 ff ff ff 89 d9 80 e1 07 38 c1 0f 8c c9 fc ff ff 48
      RSP: 0018:ffffc9000d307240 EFLAGS: 00010293
      RAX: ffffffff8bb72e03 RBX: 0000000000000000 RCX: ffff88807da88000
      RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
      RBP: ffffc9000d307430 R08: ffffffff8bb72cf0 R09: 1ffff1100b842a5e
      R10: dffffc0000000000 R11: ffffed100b842a5f R12: ffff88801e2e5ac0
      R13: ffff88805c214800 R14: ffff88805c2152e8 R15: 1ffff1100b842a5d
      FS:  00005555619f6500(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000020002840 CR3: 00000000247e6000 CR4: 00000000003526f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       <TASK>
       genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
       genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
       genl_rcv_msg+0xb14/0xec0 net/netlink/genetlink.c:1210
       netlink_rcv_skb+0x1e3/0x430 net/netlink/af_netlink.c:2542
       genl_rcv+0x28/0x40 net/netlink/genetlink.c:1219
       netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
       netlink_unicast+0x7f6/0x990 net/netlink/af_netlink.c:1347
       netlink_sendmsg+0x8e4/0xcb0 net/netlink/af_netlink.c:1891
       sock_sendmsg_nosec net/socket.c:711 [inline]
       __sock_sendmsg+0x221/0x270 net/socket.c:726
       ____sys_sendmsg+0x52a/0x7e0 net/socket.c:2583
       ___sys_sendmsg net/socket.c:2637 [inline]
       __sys_sendmsg+0x269/0x350 net/socket.c:2669
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
      RIP: 0033:0x7f5fe8785d29
      Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
      RSP: 002b:00007fff571f5558 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
      RAX: ffffffffffffffda RBX: 00007f5fe8975fa0 RCX: 00007f5fe8785d29
      RDX: 0000000000000000 RSI: 0000000020000480 RDI: 0000000000000007
      RBP: 00007f5fe8801b08 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
      R13: 00007f5fe8975fa0 R14: 00007f5fe8975fa0 R15: 00000000000011f4
       </TASK>
    
    Here, syzbot managed to set the 'fullmesh' flag on an 'implicit' and
    used -- according to 'id_avail_bitmap' -- endpoint, causing the PM to
    try decrement the local_addr_used counter which is only incremented for
    the 'subflow' endpoint.
    
    Note that 'no type' endpoints -- not 'subflow', 'signal', 'implicit' --
    are fine, because their ID will not be marked as used in the 'id_avail'
    bitmap, and setting 'fullmesh' can help forcing the creation of subflow
    when receiving an ADD_ADDR.
    
    Fixes: 73c762c1f07d ("mptcp: set fullmesh flag in pm_netlink")
    Cc: stable@vger.kernel.org
    Reported-by: syzbot+cd16e79c1e45f3fe0377@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/6786ac51.050a0220.216c54.00a6.GAE@google.com
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/540
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20250123-net-mptcp-syzbot-issues-v1-2-af73258a726f@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mtd: hyperbus: hbmc-am654: fix an OF node reference leak [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Fri Dec 6 22:38:09 2024 +0900

    mtd: hyperbus: hbmc-am654: fix an OF node reference leak
    
    [ Upstream commit bf5821909eb9c7f5d07d5c6e852ead2c373c94a0 ]
    
    In am654_hbmc_platform_driver, .remove() and the error path of .probe()
    do not decrement the refcount of an OF node obtained by
      of_get_next_child(). Fix this by adding of_node_put() calls.
    
    Fixes: aca31ce96814 ("mtd: hyperbus: hbmc-am654: Fix direct mapping setup flash access")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

mtd: rawnand: brcmnand: fix status read of brcmnand_waitfunc [+ + +]
Author: david regan <dregan@broadcom.com>
Date:   Mon Nov 25 18:39:16 2024 -0800

    mtd: rawnand: brcmnand: fix status read of brcmnand_waitfunc
    
    [ Upstream commit 03271ea36ea7a58d30a4bde182eb2a0d46220467 ]
    
    This change fixes an issue where an error return value may be mistakenly
    used as NAND status.
    
    Fixes: f504551b7f15 ("mtd: rawnand: Propagate error and simplify ternary operators for brcmstb_nand_wait_for_completion()")
    Signed-off-by: david regan <dregan@broadcom.com>
    Reviewed-by: William Zhang <william.zhang@broadcom.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nbd: don't allow reconnect after disconnect [+ + +]
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Fri Jan 3 17:28:59 2025 +0800

    nbd: don't allow reconnect after disconnect
    
    [ Upstream commit 844b8cdc681612ff24df62cdefddeab5772fadf1 ]
    
    Following process can cause nbd_config UAF:
    
    1) grab nbd_config temporarily;
    
    2) nbd_genl_disconnect() flush all recv_work() and release the
    initial reference:
    
      nbd_genl_disconnect
       nbd_disconnect_and_put
        nbd_disconnect
         flush_workqueue(nbd->recv_workq)
        if (test_and_clear_bit(NBD_RT_HAS_CONFIG_REF, ...))
         nbd_config_put
         -> due to step 1), reference is still not zero
    
    3) nbd_genl_reconfigure() queue recv_work() again;
    
      nbd_genl_reconfigure
       config = nbd_get_config_unlocked(nbd)
       if (!config)
       -> succeed
       if (!test_bit(NBD_RT_BOUND, ...))
       -> succeed
       nbd_reconnect_socket
        queue_work(nbd->recv_workq, &args->work)
    
    4) step 1) release the reference;
    
    5) Finially, recv_work() will trigger UAF:
    
      recv_work
       nbd_config_put(nbd)
       -> nbd_config is freed
       atomic_dec(&config->recv_threads)
       -> UAF
    
    Fix the problem by clearing NBD_RT_BOUND in nbd_genl_disconnect(), so
    that nbd_genl_reconfigure() will fail.
    
    Fixes: b7aa3d39385d ("nbd: add a reconfigure netlink command")
    Reported-by: syzbot+6b0df248918b92c33e6a@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/675bfb65.050a0220.1a2d0d.0006.GAE@google.com/
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20250103092859.3574648-1-yukuai1@huaweicloud.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/mlx5: HWS, fix definer's HWS_SET32 macro for negative offset [+ + +]
Author: Yevgeny Kliteynik <kliteyn@nvidia.com>
Date:   Thu Jan 2 20:14:10 2025 +0200

    net/mlx5: HWS, fix definer's HWS_SET32 macro for negative offset
    
    [ Upstream commit be482f1d10da781db9445d2753c1e3f1fd82babf ]
    
    When bit offset for HWS_SET32 macro is negative,
    UBSAN complains about the shift-out-of-bounds:
    
      UBSAN: shift-out-of-bounds in
      drivers/net/ethernet/mellanox/mlx5/core/steering/hws/definer.c:177:2
      shift exponent -8 is negative
    
    Fixes: 74a778b4a63f ("net/mlx5: HWS, added definers handling")
    Signed-off-by: Yevgeny Kliteynik <kliteyn@nvidia.com>
    Reviewed-by: Erez Shitrit <erezsh@nvidia.com>
    Reviewed-by: Mark Bloch <mbloch@nvidia.com>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/20250102181415.1477316-12-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/mlxfw: Drop hard coded max FW flash image size [+ + +]
Author: Maher Sanalla <msanalla@nvidia.com>
Date:   Thu Jan 16 14:33:16 2025 +0200

    net/mlxfw: Drop hard coded max FW flash image size
    
    [ Upstream commit 70d81f25cc92cc4e914516c9935ae752f27d78ad ]
    
    Currently, mlxfw kernel module limits FW flash image size to be
    10MB at most, preventing the ability to burn recent BlueField-3
    FW that exceeds the said size limit.
    
    Thus, drop the hard coded limit. Instead, rely on FW's
    max_component_size threshold that is reported in MCQI register
    as the size limit for FW image.
    
    Fixes: 410ed13cae39 ("Add the mlxfw module for Mellanox firmware flash process")
    Signed-off-by: Maher Sanalla <msanalla@nvidia.com>
    Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
    Reviewed-by: Ido Schimmel <idosch@nvidia.com>
    Tested-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Link: https://patch.msgid.link/1737030796-1441634-1-git-send-email-moshe@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/ncsi: use dev_set_mac_address() for Get MC MAC Address handling [+ + +]
Author: Paul Fertser <fercerpav@gmail.com>
Date:   Mon Jan 20 16:35:36 2025 +0300

    net/ncsi: use dev_set_mac_address() for Get MC MAC Address handling
    
    [ Upstream commit 05d91cdb1f9108426b14975ef4eeddf15875ca05 ]
    
    Copy of the rationale from 790071347a0a1a89e618eedcd51c687ea783aeb3:
    
    Change ndo_set_mac_address to dev_set_mac_address because
    dev_set_mac_address provides a way to notify network layer about MAC
    change. In other case, services may not aware about MAC change and keep
    using old one which set from network adapter driver.
    
    As example, DHCP client from systemd do not update MAC address without
    notification from net subsystem which leads to the problem with acquiring
    the right address from DHCP server.
    
    Since dev_set_mac_address requires RTNL lock the operation can not be
    performed directly in the response handler, see
    9e2bbab94b88295dcc57c7580393c9ee08d7314d.
    
    The way of selecting the first suitable MAC address from the list is
    changed, instead of having the driver check it this patch just assumes
    any valid MAC should be good.
    
    Fixes: b8291cf3d118 ("net/ncsi: Add NC-SI 1.2 Get MC MAC Address command")
    Signed-off-by: Paul Fertser <fercerpav@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/rose: prevent integer overflows in rose_setsockopt() [+ + +]
Author: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
Date:   Wed Jan 15 08:42:20 2025 -0800

    net/rose: prevent integer overflows in rose_setsockopt()
    
    [ Upstream commit d640627663bfe7d8963c7615316d7d4ef60f3b0b ]
    
    In case of possible unpredictably large arguments passed to
    rose_setsockopt() and multiplied by extra values on top of that,
    integer overflows may occur.
    
    Do the safest minimum and fix these issues by checking the
    contents of 'opt' and returning -EINVAL if they are too large. Also,
    switch to unsigned int and remove useless check for negative 'opt'
    in ROSE_IDLE case.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
    Link: https://patch.msgid.link/20250115164220.19954-1-n.zhandarovich@fintech.ru
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/smc: fix data error when recvmsg with MSG_PEEK flag [+ + +]
Author: Guangguan Wang <guangguan.wang@linux.alibaba.com>
Date:   Sat Jan 4 22:32:01 2025 +0800

    net/smc: fix data error when recvmsg with MSG_PEEK flag
    
    [ Upstream commit a4b6539038c1aa1ae871aacf6e41b566c3613993 ]
    
    When recvmsg with MSG_PEEK flag, the data will be copied to
    user's buffer without advancing consume cursor and without
    reducing the length of rx available data. Once the expected
    peek length is larger than the value of bytes_to_rcv, in the
    loop of do while in smc_rx_recvmsg, the first loop will copy
    bytes_to_rcv bytes of data from the position local_tx_ctrl.cons,
    the second loop will copy the min(bytes_to_rcv, read_remaining)
    bytes from the position local_tx_ctrl.cons again because of the
    lacking of process with advancing consume cursor and reducing
    the length of available data. So do the subsequent loops. The
    data copied in the second loop and the subsequent loops will
    result in data error, as it should not be copied if no more data
    arrives and it should be copied from the position advancing
    bytes_to_rcv bytes from the local_tx_ctrl.cons if more data arrives.
    
    This issue can be reproduce by the following python script:
    server.py:
    import socket
    import time
    server_ip = '0.0.0.0'
    server_port = 12346
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind((server_ip, server_port))
    server_socket.listen(1)
    print('Server is running and listening for connections...')
    conn, addr = server_socket.accept()
    print('Connected by', addr)
    while True:
        data = conn.recv(1024)
        if not data:
            break
        print('Received request:', data.decode())
        conn.sendall(b'Hello, client!\n')
        time.sleep(5)
        conn.sendall(b'Hello, again!\n')
    conn.close()
    
    client.py:
    import socket
    server_ip = '<server ip>'
    server_port = 12346
    resp=b'Hello, client!\nHello, again!\n'
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect((server_ip, server_port))
    request = 'Hello, server!'
    client_socket.sendall(request.encode())
    peek_data = client_socket.recv(len(resp),
        socket.MSG_PEEK | socket.MSG_WAITALL)
    print('Peeked data:', peek_data.decode())
    client_socket.close()
    
    Fixes: 952310ccf2d8 ("smc: receive data from RMBE")
    Reported-by: D. Wythe <alibuda@linux.alibaba.com>
    Signed-off-by: Guangguan Wang <guangguan.wang@linux.alibaba.com>
    Link: https://patch.msgid.link/20250104143201.35529-1-guangguan.wang@linux.alibaba.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: airoha: Fix error path in airoha_probe() [+ + +]
Author: Lorenzo Bianconi <lorenzo@kernel.org>
Date:   Mon Dec 16 18:47:33 2024 +0100

    net: airoha: Fix error path in airoha_probe()
    
    [ Upstream commit 0c7469ee718e1dd929f52bfb142a7f6fb68f0765 ]
    
    Do not run napi_disable() if airoha_hw_init() fails since Tx/Rx napi
    has not been started yet. In order to fix the issue, introduce
    airoha_qdma_stop_napi routine and remove napi_disable in
    airoha_hw_cleanup().
    
    Fixes: 23020f049327 ("net: airoha: Introduce ethernet support for EN7581 SoC")
    Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Link: https://patch.msgid.link/20241216-airoha_probe-error-path-fix-v2-1-6b10e04e9a5c@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: airoha: Fix wrong GDM4 register definition [+ + +]
Author: Christian Marangi <ansuelsmth@gmail.com>
Date:   Mon Jan 20 16:41:40 2025 +0100

    net: airoha: Fix wrong GDM4 register definition
    
    [ Upstream commit d31a49d37cb132b31cc6683eef2122f8609d6229 ]
    
    Fix wrong GDM4 register definition, in Airoha SDK GDM4 is defined at
    offset 0x2400 but this doesn't make sense as it does conflict with the
    CDM4 that is in the same location.
    
    Following the pattern where each GDM base is at the FWD_CFG, currently
    GDM4 base offset is set to 0x2500. This is correct but REG_GDM4_FWD_CFG
    and REG_GDM4_SRC_PORT_SET are still using the SDK reference with the
    0x2400 offset. Fix these 2 define by subtracting 0x100 to each register
    to reflect the real address location.
    
    Fixes: 23020f049327 ("net: airoha: Introduce ethernet support for EN7581 SoC")
    Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
    Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://patch.msgid.link/20250120154148.13424-1-ansuelsmth@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: avoid race between device unregistration and ethnl ops [+ + +]
Author: Antoine Tenart <atenart@kernel.org>
Date:   Thu Jan 16 10:21:57 2025 +0100

    net: avoid race between device unregistration and ethnl ops
    
    [ Upstream commit 12e070eb6964b341b41677fd260af5a305316a1f ]
    
    The following trace can be seen if a device is being unregistered while
    its number of channels are being modified.
    
      DEBUG_LOCKS_WARN_ON(lock->magic != lock)
      WARNING: CPU: 3 PID: 3754 at kernel/locking/mutex.c:564 __mutex_lock+0xc8a/0x1120
      CPU: 3 UID: 0 PID: 3754 Comm: ethtool Not tainted 6.13.0-rc6+ #771
      RIP: 0010:__mutex_lock+0xc8a/0x1120
      Call Trace:
       <TASK>
       ethtool_check_max_channel+0x1ea/0x880
       ethnl_set_channels+0x3c3/0xb10
       ethnl_default_set_doit+0x306/0x650
       genl_family_rcv_msg_doit+0x1e3/0x2c0
       genl_rcv_msg+0x432/0x6f0
       netlink_rcv_skb+0x13d/0x3b0
       genl_rcv+0x28/0x40
       netlink_unicast+0x42e/0x720
       netlink_sendmsg+0x765/0xc20
       __sys_sendto+0x3ac/0x420
       __x64_sys_sendto+0xe0/0x1c0
       do_syscall_64+0x95/0x180
       entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    This is because unregister_netdevice_many_notify might run before the
    rtnl lock section of ethnl operations, eg. set_channels in the above
    example. In this example the rss lock would be destroyed by the device
    unregistration path before being used again, but in general running
    ethnl operations while dismantle has started is not a good idea.
    
    Fix this by denying any operation on devices being unregistered. A check
    was already there in ethnl_ops_begin, but not wide enough.
    
    Note that the same issue cannot be seen on the ioctl version
    (__dev_ethtool) because the device reference is retrieved from within
    the rtnl lock section there. Once dismantle started, the net device is
    unlisted and no reference will be found.
    
    Fixes: dde91ccfa25f ("ethtool: do not perform operations on net devices being unregistered")
    Signed-off-by: Antoine Tenart <atenart@kernel.org>
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Reviewed-by: Edward Cree <ecree.xilinx@gmail.com>
    Link: https://patch.msgid.link/20250116092159.50890-1-atenart@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: davicom: fix UAF in dm9000_drv_remove [+ + +]
Author: Chenyuan Yang <chenyuan0y@gmail.com>
Date:   Thu Jan 23 15:42:13 2025 -0600

    net: davicom: fix UAF in dm9000_drv_remove
    
    [ Upstream commit 19e65c45a1507a1a2926649d2db3583ed9d55fd9 ]
    
    dm is netdev private data and it cannot be
    used after free_netdev() call. Using dm after free_netdev()
    can cause UAF bug. Fix it by moving free_netdev() at the end of the
    function.
    
    This is similar to the issue fixed in commit
    ad297cd2db89 ("net: qcom/emac: fix UAF in emac_remove").
    
    This bug is detected by our static analysis tool.
    
    Fixes: cf9e60aa69ae ("net: davicom: Fix regulator not turned off on driver removal")
    Signed-off-by: Chenyuan Yang <chenyuan0y@gmail.com>
    CC: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
    Link: https://patch.msgid.link/20250123214213.623518-1-chenyuan0y@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ethernet: ti: am65-cpsw: fix freeing IRQ in am65_cpsw_nuss_remove_tx_chns() [+ + +]
Author: Roger Quadros <rogerq@kernel.org>
Date:   Thu Jan 16 15:54:49 2025 +0200

    net: ethernet: ti: am65-cpsw: fix freeing IRQ in am65_cpsw_nuss_remove_tx_chns()
    
    [ Upstream commit 4395a44acb15850e492dd1de9ec4b6479d96bc80 ]
    
    When getting the IRQ we use k3_udma_glue_tx_get_irq() which returns
    negative error value on error. So not NULL check is not sufficient
    to deteremine if IRQ is valid. Check that IRQ is greater then zero
    to ensure it is valid.
    
    There is no issue at probe time but at runtime user can invoke
    .set_channels which results in the following call chain.
    am65_cpsw_set_channels()
     am65_cpsw_nuss_update_tx_rx_chns()
      am65_cpsw_nuss_remove_tx_chns()
      am65_cpsw_nuss_init_tx_chns()
    
    At this point if am65_cpsw_nuss_init_tx_chns() fails due to
    k3_udma_glue_tx_get_irq() then tx_chn->irq will be set to a
    negative value.
    
    Then, at subsequent .set_channels with higher channel count we
    will attempt to free an invalid IRQ in am65_cpsw_nuss_remove_tx_chns()
    leading to a kernel warning.
    
    The issue is present in the original commit that introduced this driver,
    although there, am65_cpsw_nuss_update_tx_rx_chns() existed as
    am65_cpsw_nuss_update_tx_chns().
    
    Fixes: 93a76530316a ("net: ethernet: ti: introduce am65x/j721e gigabit eth subsystem driver")
    Signed-off-by: Roger Quadros <rogerq@kernel.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ethtool: only allow set_rxnfc with rss + ring_cookie if driver opts in [+ + +]
Author: Edward Cree <ecree.xilinx@gmail.com>
Date:   Wed Nov 13 12:13:09 2024 +0000

    net: ethtool: only allow set_rxnfc with rss + ring_cookie if driver opts in
    
    [ Upstream commit 9e43ad7a1edef268acac603e1975c8f50a20d02f ]
    
    Ethtool ntuple filters with FLOW_RSS were originally defined as adding
     the base queue ID (ring_cookie) to the value from the indirection table,
     so that the same table could distribute over more than one set of queues
     when used by different filters.
    However, some drivers / hardware ignore the ring_cookie, and simply use
     the indirection table entries as queue IDs directly.  Thus, for drivers
     which have not opted in by setting ethtool_ops.cap_rss_rxnfc_adds to
     declare that they support the original (addition) semantics, reject in
     ethtool_set_rxnfc any filter which combines FLOW_RSS and a nonzero ring.
    (For a ring_cookie of zero, both behaviours are equivalent.)
    Set the cap bit in sfc, as it is known to support this feature.
    
    Signed-off-by: Edward Cree <ecree.xilinx@gmail.com>
    Reviewed-by: Martin Habets <habetsm.xilinx@gmail.com>
    Link: https://patch.msgid.link/cc3da0844083b0e301a33092a6299e4042b65221.1731499022.git.ecree.xilinx@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 4f5a52adeb1a ("ethtool: Fix set RXNFC command with symmetric RSS hash")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: fec: implement TSO descriptor cleanup [+ + +]
Author: Dheeraj Reddy Jonnalagadda <dheeraj.linuxdev@gmail.com>
Date:   Mon Jan 20 14:24:30 2025 +0530

    net: fec: implement TSO descriptor cleanup
    
    [ Upstream commit 61dc1fd9205bc9d9918aa933a847b08e80b4dc20 ]
    
    Implement cleanup of descriptors in the TSO error path of
    fec_enet_txq_submit_tso(). The cleanup
    
    - Unmaps DMA buffers for data descriptors skipping TSO header
    - Clears all buffer descriptors
    - Handles extended descriptors by clearing cbd_esc when enabled
    
    Fixes: 79f339125ea3 ("net: fec: Add software TSO support")
    Signed-off-by: Dheeraj Reddy Jonnalagadda <dheeraj.linuxdev@gmail.com>
    Reviewed-by: Wei Fang <wei.fang@nxp.com>
    Link: https://patch.msgid.link/20250120085430.99318-1-dheeraj.linuxdev@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: hns3: fix oops when unload drivers paralleling [+ + +]
Author: Jian Shen <shenjian15@huawei.com>
Date:   Sat Jan 18 17:47:41 2025 +0800

    net: hns3: fix oops when unload drivers paralleling
    
    [ Upstream commit 92e5995773774a3e70257e9c95ea03518268bea5 ]
    
    When unload hclge driver, it tries to disable sriov first for each
    ae_dev node from hnae3_ae_dev_list. If user unloads hns3 driver at
    the time, because it removes all the ae_dev nodes, and it may cause
    oops.
    
    But we can't simply use hnae3_common_lock for this. Because in the
    process flow of pci_disable_sriov(), it will trigger the remove flow
    of VF, which will also take hnae3_common_lock.
    
    To fixes it, introduce a new mutex to protect the unload process.
    
    Fixes: 0dd8a25f355b ("net: hns3: disable sriov before unload hclge layer")
    Signed-off-by: Jian Shen <shenjian15@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Link: https://patch.msgid.link/20250118094741.3046663-1-shaojijie@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: hsr: fix fill_frame_info() regression vs VLAN packets [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jan 29 13:00:07 2025 +0000

    net: hsr: fix fill_frame_info() regression vs VLAN packets
    
    [ Upstream commit 0f5697f1a3f99bc2b674b8aa3c5da822c5673c11 ]
    
    Stephan Wurm reported that my recent patch broke VLAN support.
    
    Apparently skb->mac_len is not correct for VLAN traffic as
    shown by debug traces [1].
    
    Use instead pskb_may_pull() to make sure the expected header
    is present in skb->head.
    
    Many thanks to Stephan for his help.
    
    [1]
    kernel: skb len=170 headroom=2 headlen=170 tailroom=20
            mac=(2,14) mac_len=14 net=(16,-1) trans=-1
            shinfo(txflags=0 nr_frags=0 gso(size=0 type=0 segs=0))
            csum(0x0 start=0 offset=0 ip_summed=0 complete_sw=0 valid=0 level=0)
            hash(0x0 sw=0 l4=0) proto=0x0000 pkttype=0 iif=0
            priority=0x0 mark=0x0 alloc_cpu=0 vlan_all=0x0
            encapsulation=0 inner(proto=0x0000, mac=0, net=0, trans=0)
    kernel: dev name=prp0 feat=0x0000000000007000
    kernel: sk family=17 type=3 proto=0
    kernel: skb headroom: 00000000: 74 00
    kernel: skb linear:   00000000: 01 0c cd 01 00 01 00 d0 93 53 9c cb 81 00 80 00
    kernel: skb linear:   00000010: 88 b8 00 01 00 98 00 00 00 00 61 81 8d 80 16 52
    kernel: skb linear:   00000020: 45 47 44 4e 43 54 52 4c 2f 4c 4c 4e 30 24 47 4f
    kernel: skb linear:   00000030: 24 47 6f 43 62 81 01 14 82 16 52 45 47 44 4e 43
    kernel: skb linear:   00000040: 54 52 4c 2f 4c 4c 4e 30 24 44 73 47 6f 6f 73 65
    kernel: skb linear:   00000050: 83 07 47 6f 49 64 65 6e 74 84 08 67 8d f5 93 7e
    kernel: skb linear:   00000060: 76 c8 00 85 01 01 86 01 00 87 01 00 88 01 01 89
    kernel: skb linear:   00000070: 01 00 8a 01 02 ab 33 a2 15 83 01 00 84 03 03 00
    kernel: skb linear:   00000080: 00 91 08 67 8d f5 92 77 4b c6 1f 83 01 00 a2 1a
    kernel: skb linear:   00000090: a2 06 85 01 00 83 01 00 84 03 03 00 00 91 08 67
    kernel: skb linear:   000000a0: 8d f5 92 77 4b c6 1f 83 01 00
    kernel: skb tailroom: 00000000: 80 18 02 00 fe 4e 00 00 01 01 08 0a 4f fd 5e d1
    kernel: skb tailroom: 00000010: 4f fd 5e cd
    
    Fixes: b9653d19e556 ("net: hsr: avoid potential out-of-bound access in fill_frame_info()")
    Reported-by: Stephan Wurm <stephan.wurm@a-eberle.de>
    Tested-by: Stephan Wurm <stephan.wurm@a-eberle.de>
    Closes: https://lore.kernel.org/netdev/Z4o_UC0HweBHJ_cw@PC-LX-SteWu/
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250129130007.644084-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: let net.core.dev_weight always be non-zero [+ + +]
Author: Liu Jian <liujian56@huawei.com>
Date:   Thu Jan 16 22:30:53 2025 +0800

    net: let net.core.dev_weight always be non-zero
    
    [ Upstream commit d1f9f79fa2af8e3b45cffdeef66e05833480148a ]
    
    The following problem was encountered during stability test:
    
    (NULL net_device): NAPI poll function process_backlog+0x0/0x530 \
            returned 1, exceeding its budget of 0.
    ------------[ cut here ]------------
    list_add double add: new=ffff88905f746f48, prev=ffff88905f746f48, \
            next=ffff88905f746e40.
    WARNING: CPU: 18 PID: 5462 at lib/list_debug.c:35 \
            __list_add_valid_or_report+0xf3/0x130
    CPU: 18 UID: 0 PID: 5462 Comm: ping Kdump: loaded Not tainted 6.13.0-rc7+
    RIP: 0010:__list_add_valid_or_report+0xf3/0x130
    Call Trace:
    ? __warn+0xcd/0x250
    ? __list_add_valid_or_report+0xf3/0x130
    enqueue_to_backlog+0x923/0x1070
    netif_rx_internal+0x92/0x2b0
    __netif_rx+0x15/0x170
    loopback_xmit+0x2ef/0x450
    dev_hard_start_xmit+0x103/0x490
    __dev_queue_xmit+0xeac/0x1950
    ip_finish_output2+0x6cc/0x1620
    ip_output+0x161/0x270
    ip_push_pending_frames+0x155/0x1a0
    raw_sendmsg+0xe13/0x1550
    __sys_sendto+0x3bf/0x4e0
    __x64_sys_sendto+0xdc/0x1b0
    do_syscall_64+0x5b/0x170
    entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    The reproduction command is as follows:
      sysctl -w net.core.dev_weight=0
      ping 127.0.0.1
    
    This is because when the napi's weight is set to 0, process_backlog() may
    return 0 and clear the NAPI_STATE_SCHED bit of napi->state, causing this
    napi to be re-polled in net_rx_action() until __do_softirq() times out.
    Since the NAPI_STATE_SCHED bit has been cleared, napi_schedule_rps() can
    be retriggered in enqueue_to_backlog(), causing this issue.
    
    Making the napi's weight always non-zero solves this problem.
    
    Triggering this issue requires system-wide admin (setting is
    not namespaced).
    
    Fixes: e38766054509 ("[NET]: Fix sysctl net.core.dev_weight")
    Fixes: 3d48b53fb2ae ("net: dev_weight: TX/RX orthogonality")
    Signed-off-by: Liu Jian <liujian56@huawei.com>
    Link: https://patch.msgid.link/20250116143053.4146855-1-liujian56@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: netdevsim: try to close UDP port harness races [+ + +]
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Wed Jan 22 14:45:03 2025 -0800

    net: netdevsim: try to close UDP port harness races
    
    [ Upstream commit 50bf398e1ceacb9a7f85bd3bdca065ebe5cb6159 ]
    
    syzbot discovered that we remove the debugfs files after we free
    the netdev. Try to clean up the relevant dir while the device
    is still around.
    
    Reported-by: syzbot+2e5de9e3ab986b71d2bf@syzkaller.appspotmail.com
    Fixes: 424be63ad831 ("netdevsim: add UDP tunnel port offload support")
    Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Link: https://patch.msgid.link/20250122224503.762705-1-kuba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: phy: marvell-88q2xxx: Fix temperature measurement with reset-gpios [+ + +]
Author: Dimitri Fedrau <dima.fedrau@gmail.com>
Date:   Sat Jan 18 19:43:43 2025 +0100

    net: phy: marvell-88q2xxx: Fix temperature measurement with reset-gpios
    
    [ Upstream commit a197004cf3c2e6c8cc0695c787a97e62e3229754 ]
    
    When using temperature measurement on Marvell 88Q2XXX devices and the
    reset-gpios property is set in DT, the device does a hardware reset when
    interface is brought down and up again. That means that the content of
    the register MDIO_MMD_PCS_MV_TEMP_SENSOR2 is reset to default and that
    leads to permanent deactivation of the temperature measurement, because
    activation is done in mv88q2xxx_probe. To fix this move activation of
    temperature measurement to mv88q222x_config_init.
    
    Fixes: a557a92e6881 ("net: phy: marvell-88q2xxx: add support for temperature sensor")
    Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Signed-off-by: Dimitri Fedrau <dima.fedrau@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://patch.msgid.link/20250118-marvell-88q2xxx-fix-hwmon-v2-1-402e62ba2dcb@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ravb: Fix missing rtnl lock in suspend/resume path [+ + +]
Author: Kory Maincent <kory.maincent@bootlin.com>
Date:   Wed Jan 29 10:50:46 2025 +0100

    net: ravb: Fix missing rtnl lock in suspend/resume path
    
    [ Upstream commit 2c2ebb2b49573e5f8726112ad06b1dffc3c9ea03 ]
    
    Fix the suspend/resume path by ensuring the rtnl lock is held where
    required. Calls to ravb_open, ravb_close and wol operations must be
    performed under the rtnl lock to prevent conflicts with ongoing ndo
    operations.
    
    Without this fix, the following warning is triggered:
    [   39.032969] =============================
    [   39.032983] WARNING: suspicious RCU usage
    [   39.033019] -----------------------------
    [   39.033033] drivers/net/phy/phy_device.c:2004 suspicious
    rcu_dereference_protected() usage!
    ...
    [   39.033597] stack backtrace:
    [   39.033613] CPU: 0 UID: 0 PID: 174 Comm: python3 Not tainted
    6.13.0-rc7-next-20250116-arm64-renesas-00002-g35245dfdc62c #7
    [   39.033623] Hardware name: Renesas SMARC EVK version 2 based on
    r9a08g045s33 (DT)
    [   39.033628] Call trace:
    [   39.033633]  show_stack+0x14/0x1c (C)
    [   39.033652]  dump_stack_lvl+0xb4/0xc4
    [   39.033664]  dump_stack+0x14/0x1c
    [   39.033671]  lockdep_rcu_suspicious+0x16c/0x22c
    [   39.033682]  phy_detach+0x160/0x190
    [   39.033694]  phy_disconnect+0x40/0x54
    [   39.033703]  ravb_close+0x6c/0x1cc
    [   39.033714]  ravb_suspend+0x48/0x120
    [   39.033721]  dpm_run_callback+0x4c/0x14c
    [   39.033731]  device_suspend+0x11c/0x4dc
    [   39.033740]  dpm_suspend+0xdc/0x214
    [   39.033748]  dpm_suspend_start+0x48/0x60
    [   39.033758]  suspend_devices_and_enter+0x124/0x574
    [   39.033769]  pm_suspend+0x1ac/0x274
    [   39.033778]  state_store+0x88/0x124
    [   39.033788]  kobj_attr_store+0x14/0x24
    [   39.033798]  sysfs_kf_write+0x48/0x6c
    [   39.033808]  kernfs_fop_write_iter+0x118/0x1a8
    [   39.033817]  vfs_write+0x27c/0x378
    [   39.033825]  ksys_write+0x64/0xf4
    [   39.033833]  __arm64_sys_write+0x18/0x20
    [   39.033841]  invoke_syscall+0x44/0x104
    [   39.033852]  el0_svc_common.constprop.0+0xb4/0xd4
    [   39.033862]  do_el0_svc+0x18/0x20
    [   39.033870]  el0_svc+0x3c/0xf0
    [   39.033880]  el0t_64_sync_handler+0xc0/0xc4
    [   39.033888]  el0t_64_sync+0x154/0x158
    [   39.041274] ravb 11c30000.ethernet eth0: Link is Down
    
    Reported-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Closes: https://lore.kernel.org/netdev/4c6419d8-c06b-495c-b987-d66c2e1ff848@tuxon.dev/
    Fixes: 0184165b2f42 ("ravb: add sleep PM suspend/resume support")
    Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
    Tested-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: rose: fix timer races against user threads [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jan 22 18:02:44 2025 +0000

    net: rose: fix timer races against user threads
    
    [ Upstream commit 5de7665e0a0746b5ad7943554b34db8f8614a196 ]
    
    Rose timers only acquire the socket spinlock, without
    checking if the socket is owned by one user thread.
    
    Add a check and rearm the timers if needed.
    
    BUG: KASAN: slab-use-after-free in rose_timer_expiry+0x31d/0x360 net/rose/rose_timer.c:174
    Read of size 2 at addr ffff88802f09b82a by task swapper/0/0
    
    CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.13.0-rc5-syzkaller-00172-gd1bf27c4e176 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    Call Trace:
     <IRQ>
      __dump_stack lib/dump_stack.c:94 [inline]
      dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
      print_address_description mm/kasan/report.c:378 [inline]
      print_report+0x169/0x550 mm/kasan/report.c:489
      kasan_report+0x143/0x180 mm/kasan/report.c:602
      rose_timer_expiry+0x31d/0x360 net/rose/rose_timer.c:174
      call_timer_fn+0x187/0x650 kernel/time/timer.c:1793
      expire_timers kernel/time/timer.c:1844 [inline]
      __run_timers kernel/time/timer.c:2418 [inline]
      __run_timer_base+0x66a/0x8e0 kernel/time/timer.c:2430
      run_timer_base kernel/time/timer.c:2439 [inline]
      run_timer_softirq+0xb7/0x170 kernel/time/timer.c:2449
      handle_softirqs+0x2d4/0x9b0 kernel/softirq.c:561
      __do_softirq kernel/softirq.c:595 [inline]
      invoke_softirq kernel/softirq.c:435 [inline]
      __irq_exit_rcu+0xf7/0x220 kernel/softirq.c:662
      irq_exit_rcu+0x9/0x30 kernel/softirq.c:678
      instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1049 [inline]
      sysvec_apic_timer_interrupt+0xa6/0xc0 arch/x86/kernel/apic/apic.c:1049
     </IRQ>
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250122180244.1861468-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: sched: Disallow replacing of child qdisc from one parent to another [+ + +]
Author: Jamal Hadi Salim <jhs@mojatatu.com>
Date:   Wed Jan 15 17:37:13 2025 -0800

    net: sched: Disallow replacing of child qdisc from one parent to another
    
    [ Upstream commit bc50835e83f60f56e9bec2b392fb5544f250fb6f ]
    
    Lion Ackermann was able to create a UAF which can be abused for privilege
    escalation with the following script
    
    Step 1. create root qdisc
    tc qdisc add dev lo root handle 1:0 drr
    
    step2. a class for packet aggregation do demonstrate uaf
    tc class add dev lo classid 1:1 drr
    
    step3. a class for nesting
    tc class add dev lo classid 1:2 drr
    
    step4. a class to graft qdisc to
    tc class add dev lo classid 1:3 drr
    
    step5.
    tc qdisc add dev lo parent 1:1 handle 2:0 plug limit 1024
    
    step6.
    tc qdisc add dev lo parent 1:2 handle 3:0 drr
    
    step7.
    tc class add dev lo classid 3:1 drr
    
    step 8.
    tc qdisc add dev lo parent 3:1 handle 4:0 pfifo
    
    step 9. Display the class/qdisc layout
    
    tc class ls dev lo
     class drr 1:1 root leaf 2: quantum 64Kb
     class drr 1:2 root leaf 3: quantum 64Kb
     class drr 3:1 root leaf 4: quantum 64Kb
    
    tc qdisc ls
     qdisc drr 1: dev lo root refcnt 2
     qdisc plug 2: dev lo parent 1:1
     qdisc pfifo 4: dev lo parent 3:1 limit 1000p
     qdisc drr 3: dev lo parent 1:2
    
    step10. trigger the bug <=== prevented by this patch
    tc qdisc replace dev lo parent 1:3 handle 4:0
    
    step 11. Redisplay again the qdiscs/classes
    
    tc class ls dev lo
     class drr 1:1 root leaf 2: quantum 64Kb
     class drr 1:2 root leaf 3: quantum 64Kb
     class drr 1:3 root leaf 4: quantum 64Kb
     class drr 3:1 root leaf 4: quantum 64Kb
    
    tc qdisc ls
     qdisc drr 1: dev lo root refcnt 2
     qdisc plug 2: dev lo parent 1:1
     qdisc pfifo 4: dev lo parent 3:1 refcnt 2 limit 1000p
     qdisc drr 3: dev lo parent 1:2
    
    Observe that a) parent for 4:0 does not change despite the replace request.
    There can only be one parent.  b) refcount has gone up by two for 4:0 and
    c) both class 1:3 and 3:1 are pointing to it.
    
    Step 12.  send one packet to plug
    echo "" | socat -u STDIN UDP4-DATAGRAM:127.0.0.1:8888,priority=$((0x10001))
    step13.  send one packet to the grafted fifo
    echo "" | socat -u STDIN UDP4-DATAGRAM:127.0.0.1:8888,priority=$((0x10003))
    
    step14. lets trigger the uaf
    tc class delete dev lo classid 1:3
    tc class delete dev lo classid 1:1
    
    The semantics of "replace" is for a del/add _on the same node_ and not
    a delete from one node(3:1) and add to another node (1:3) as in step10.
    While we could "fix" with a more complex approach there could be
    consequences to expectations so the patch takes the preventive approach of
    "disallow such config".
    
    Joint work with Lion Ackermann <nnamrec@gmail.com>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250116013713.900000-1-kuba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: sched: refine software bypass handling in tc_run [+ + +]
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Jan 15 09:27:54 2025 -0500

    net: sched: refine software bypass handling in tc_run
    
    [ Upstream commit a12c76a03386e32413ae8eaaefa337e491880632 ]
    
    This patch addresses issues with filter counting in block (tcf_block),
    particularly for software bypass scenarios, by introducing a more
    accurate mechanism using useswcnt.
    
    Previously, filtercnt and skipswcnt were introduced by:
    
      Commit 2081fd3445fe ("net: sched: cls_api: add filter counter") and
      Commit f631ef39d819 ("net: sched: cls_api: add skip_sw counter")
    
      filtercnt tracked all tp (tcf_proto) objects added to a block, and
      skipswcnt counted tp objects with the skipsw attribute set.
    
    The problem is: a single tp can contain multiple filters, some with skipsw
    and others without. The current implementation fails in the case:
    
      When the first filter in a tp has skipsw, both skipswcnt and filtercnt
      are incremented, then adding a second filter without skipsw to the same
      tp does not modify these counters because tp->counted is already set.
    
      This results in bypass software behavior based solely on skipswcnt
      equaling filtercnt, even when the block includes filters without
      skipsw. Consequently, filters without skipsw are inadvertently bypassed.
    
    To address this, the patch introduces useswcnt in block to explicitly count
    tp objects containing at least one filter without skipsw. Key changes
    include:
    
      Whenever a filter without skipsw is added, its tp is marked with usesw
      and counted in useswcnt. tc_run() now uses useswcnt to determine software
      bypass, eliminating reliance on filtercnt and skipswcnt.
    
      This refined approach prevents software bypass for blocks containing
      mixed filters, ensuring correct behavior in tc_run().
    
    Additionally, as atomic operations on useswcnt ensure thread safety and
    tp->lock guards access to tp->usesw and tp->counted, the broader lock
    down_write(&block->cb_lock) is no longer required in tc_new_tfilter(),
    and this resolves a performance regression caused by the filter counting
    mechanism during parallel filter insertions.
    
      The improvement can be demonstrated using the following script:
    
      # cat insert_tc_rules.sh
    
        tc qdisc add dev ens1f0np0 ingress
        for i in $(seq 16); do
            taskset -c $i tc -b rules_$i.txt &
        done
        wait
    
      Each of rules_$i.txt files above includes 100000 tc filter rules to a
      mlx5 driver NIC ens1f0np0.
    
      Without this patch:
    
      # time sh insert_tc_rules.sh
    
        real    0m50.780s
        user    0m23.556s
        sys     4m13.032s
    
      With this patch:
    
      # time sh insert_tc_rules.sh
    
        real    0m17.718s
        user    0m7.807s
        sys     3m45.050s
    
    Fixes: 047f340b36fc ("net: sched: make skip_sw actually skip software")
    Reported-by: Shuang Li <shuali@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Reviewed-by: Asbjørn Sloth Tønnesen <ast@fiberby.net>
    Tested-by: Asbjørn Sloth Tønnesen <ast@fiberby.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: sh_eth: Fix missing rtnl lock in suspend/resume path [+ + +]
Author: Kory Maincent <kory.maincent@bootlin.com>
Date:   Wed Jan 29 10:50:47 2025 +0100

    net: sh_eth: Fix missing rtnl lock in suspend/resume path
    
    [ Upstream commit b95102215a8d0987789715ce11c0d4ec031cbfbe ]
    
    Fix the suspend/resume path by ensuring the rtnl lock is held where
    required. Calls to sh_eth_close, sh_eth_open and wol operations must be
    performed under the rtnl lock to prevent conflicts with ongoing ndo
    operations.
    
    Fixes: b71af04676e9 ("sh_eth: add more PM methods")
    Tested-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: stmmac: Limit FIFO size by hardware capability [+ + +]
Author: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
Date:   Mon Jan 27 10:38:19 2025 +0900

    net: stmmac: Limit FIFO size by hardware capability
    
    [ Upstream commit 044f2fbaa2725696ecbf1f02ba7ab0a8ccb7e1ae ]
    
    Tx/Rx FIFO size is specified by the parameter "{tx,rx}-fifo-depth" from
    stmmac_platform layer.
    
    However, these values are constrained by upper limits determined by the
    capabilities of each hardware feature. There is a risk that the upper
    bits will be truncated due to the calculation, so it's appropriate to
    limit them to the upper limit values and display a warning message.
    
    This only works if the hardware capability has the upper limit values.
    
    Fixes: e7877f52fd4a ("stmmac: Read tx-fifo-depth and rx-fifo-depth from the devicetree")
    Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
    Reviewed-by: Yanteng Si <si.yanteng@linux.dev>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: stmmac: Limit the number of MTL queues to hardware capability [+ + +]
Author: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
Date:   Mon Jan 27 10:38:18 2025 +0900

    net: stmmac: Limit the number of MTL queues to hardware capability
    
    [ Upstream commit f5fb35a3d6b36d378b2e2ecbfb9caa337d5428e6 ]
    
    The number of MTL queues to use is specified by the parameter
    "snps,{tx,rx}-queues-to-use" from stmmac_platform layer.
    
    However, the maximum numbers of queues are constrained by upper limits
    determined by the capability of each hardware feature. It's appropriate
    to limit the values not to exceed the upper limit values and display
    a warning message.
    
    This only works if the hardware capability has the upper limit values.
    
    Fixes: d976a525c371 ("net: stmmac: multiple queues dt configuration")
    Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
    Reviewed-by: Yanteng Si <si.yanteng@linux.dev>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: usb: rtl8150: enable basic endpoint checking [+ + +]
Author: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
Date:   Fri Jan 24 01:30:20 2025 -0800

    net: usb: rtl8150: enable basic endpoint checking
    
    commit 90b7f2961798793275b4844348619b622f983907 upstream.
    
    Syzkaller reports [1] encountering a common issue of utilizing a wrong
    usb endpoint type during URB submitting stage. This, in turn, triggers
    a warning shown below.
    
    For now, enable simple endpoint checking (specifically, bulk and
    interrupt eps, testing control one is not essential) to mitigate
    the issue with a view to do other related cosmetic changes later,
    if they are necessary.
    
    [1] Syzkaller report:
    usb 1-1: BOGUS urb xfer, pipe 3 != type 1
    WARNING: CPU: 1 PID: 2586 at drivers/usb/core/urb.c:503 usb_submit_urb+0xe4b/0x1730 driv>
    Modules linked in:
    CPU: 1 UID: 0 PID: 2586 Comm: dhcpcd Not tainted 6.11.0-rc4-syzkaller-00069-gfc88bb11617>
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/06/2024
    RIP: 0010:usb_submit_urb+0xe4b/0x1730 drivers/usb/core/urb.c:503
    Code: 84 3c 02 00 00 e8 05 e4 fc fc 4c 89 ef e8 fd 25 d7 fe 45 89 e0 89 e9 4c 89 f2 48 8>
    RSP: 0018:ffffc9000441f740 EFLAGS: 00010282
    RAX: 0000000000000000 RBX: ffff888112487a00 RCX: ffffffff811a99a9
    RDX: ffff88810df6ba80 RSI: ffffffff811a99b6 RDI: 0000000000000001
    RBP: 0000000000000003 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000001
    R13: ffff8881023bf0a8 R14: ffff888112452a20 R15: ffff888112487a7c
    FS:  00007fc04eea5740(0000) GS:ffff8881f6300000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f0a1de9f870 CR3: 000000010dbd0000 CR4: 00000000003506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     rtl8150_open+0x300/0xe30 drivers/net/usb/rtl8150.c:733
     __dev_open+0x2d4/0x4e0 net/core/dev.c:1474
     __dev_change_flags+0x561/0x720 net/core/dev.c:8838
     dev_change_flags+0x8f/0x160 net/core/dev.c:8910
     devinet_ioctl+0x127a/0x1f10 net/ipv4/devinet.c:1177
     inet_ioctl+0x3aa/0x3f0 net/ipv4/af_inet.c:1003
     sock_do_ioctl+0x116/0x280 net/socket.c:1222
     sock_ioctl+0x22e/0x6c0 net/socket.c:1341
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:907 [inline]
     __se_sys_ioctl fs/ioctl.c:893 [inline]
     __x64_sys_ioctl+0x193/0x220 fs/ioctl.c:893
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7fc04ef73d49
    ...
    
    This change has not been tested on real hardware.
    
    Reported-and-tested-by: syzbot+d7e968426f644b567e31@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=d7e968426f644b567e31
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable@vger.kernel.org
    Signed-off-by: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
    Link: https://patch.msgid.link/20250124093020.234642-1-n.zhandarovich@fintech.ru
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: xdp: Disallow attaching device-bound programs in generic mode [+ + +]
Author: Toke Høiland-Jørgensen <toke@redhat.com>
Date:   Mon Jan 27 14:13:42 2025 +0100

    net: xdp: Disallow attaching device-bound programs in generic mode
    
    [ Upstream commit 3595599fa8360bb3c7afa7ee50c810b4a64106ea ]
    
    Device-bound programs are used to support RX metadata kfuncs. These
    kfuncs are driver-specific and rely on the driver context to read the
    metadata. This means they can't work in generic XDP mode. However, there
    is no check to disallow such programs from being attached in generic
    mode, in which case the metadata kfuncs will be called in an invalid
    context, leading to crashes.
    
    Fix this by adding a check to disallow attaching device-bound programs
    in generic mode.
    
    Fixes: 2b3486bc2d23 ("bpf: Introduce device-bound XDP programs")
    Reported-by: Marcus Wichelmann <marcus.wichelmann@hetzner-cloud.de>
    Closes: https://lore.kernel.org/r/dae862ec-43b5-41a0-8edf-46c59071cdda@hetzner-cloud.de
    Tested-by: Marcus Wichelmann <marcus.wichelmann@hetzner-cloud.de>
    Acked-by: Stanislav Fomichev <sdf@fomichev.me>
    Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Martin KaFai Lau <martin.lau@kernel.org>
    Link: https://patch.msgid.link/20250127131344.238147-1-toke@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net_sched: sch_sfq: don't allow 1 packet limit [+ + +]
Author: Octavian Purdila <tavip@google.com>
Date:   Tue Dec 3 19:05:19 2024 -0800

    net_sched: sch_sfq: don't allow 1 packet limit
    
    [ Upstream commit 10685681bafce6febb39770f3387621bf5d67d0b ]
    
    The current implementation does not work correctly with a limit of
    1. iproute2 actually checks for this and this patch adds the check in
    kernel as well.
    
    This fixes the following syzkaller reported crash:
    
    UBSAN: array-index-out-of-bounds in net/sched/sch_sfq.c:210:6
    index 65535 is out of range for type 'struct sfq_head[128]'
    CPU: 0 PID: 2569 Comm: syz-executor101 Not tainted 5.10.0-smp-DEV #1
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    Call Trace:
      __dump_stack lib/dump_stack.c:79 [inline]
      dump_stack+0x125/0x19f lib/dump_stack.c:120
      ubsan_epilogue lib/ubsan.c:148 [inline]
      __ubsan_handle_out_of_bounds+0xed/0x120 lib/ubsan.c:347
      sfq_link net/sched/sch_sfq.c:210 [inline]
      sfq_dec+0x528/0x600 net/sched/sch_sfq.c:238
      sfq_dequeue+0x39b/0x9d0 net/sched/sch_sfq.c:500
      sfq_reset+0x13/0x50 net/sched/sch_sfq.c:525
      qdisc_reset+0xfe/0x510 net/sched/sch_generic.c:1026
      tbf_reset+0x3d/0x100 net/sched/sch_tbf.c:319
      qdisc_reset+0xfe/0x510 net/sched/sch_generic.c:1026
      dev_reset_queue+0x8c/0x140 net/sched/sch_generic.c:1296
      netdev_for_each_tx_queue include/linux/netdevice.h:2350 [inline]
      dev_deactivate_many+0x6dc/0xc20 net/sched/sch_generic.c:1362
      __dev_close_many+0x214/0x350 net/core/dev.c:1468
      dev_close_many+0x207/0x510 net/core/dev.c:1506
      unregister_netdevice_many+0x40f/0x16b0 net/core/dev.c:10738
      unregister_netdevice_queue+0x2be/0x310 net/core/dev.c:10695
      unregister_netdevice include/linux/netdevice.h:2893 [inline]
      __tun_detach+0x6b6/0x1600 drivers/net/tun.c:689
      tun_detach drivers/net/tun.c:705 [inline]
      tun_chr_close+0x104/0x1b0 drivers/net/tun.c:3640
      __fput+0x203/0x840 fs/file_table.c:280
      task_work_run+0x129/0x1b0 kernel/task_work.c:185
      exit_task_work include/linux/task_work.h:33 [inline]
      do_exit+0x5ce/0x2200 kernel/exit.c:931
      do_group_exit+0x144/0x310 kernel/exit.c:1046
      __do_sys_exit_group kernel/exit.c:1057 [inline]
      __se_sys_exit_group kernel/exit.c:1055 [inline]
      __x64_sys_exit_group+0x3b/0x40 kernel/exit.c:1055
     do_syscall_64+0x6c/0xd0
     entry_SYSCALL_64_after_hwframe+0x61/0xcb
    RIP: 0033:0x7fe5e7b52479
    Code: Unable to access opcode bytes at RIP 0x7fe5e7b5244f.
    RSP: 002b:00007ffd3c800398 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fe5e7b52479
    RDX: 000000000000003c RSI: 00000000000000e7 RDI: 0000000000000000
    RBP: 00007fe5e7bcd2d0 R08: ffffffffffffffb8 R09: 0000000000000014
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007fe5e7bcd2d0
    R13: 0000000000000000 R14: 00007fe5e7bcdd20 R15: 00007fe5e7b24270
    
    The crash can be also be reproduced with the following (with a tc
    recompiled to allow for sfq limits of 1):
    
    tc qdisc add dev dummy0 handle 1: root tbf rate 1Kbit burst 100b lat 1s
    ../iproute2-6.9.0/tc/tc qdisc add dev dummy0 handle 2: parent 1:10 sfq limit 1
    ifconfig dummy0 up
    ping -I dummy0 -f -c2 -W0.1 8.8.8.8
    sleep 1
    
    Scenario that triggers the crash:
    
    * the first packet is sent and queued in TBF and SFQ; qdisc qlen is 1
    
    * TBF dequeues: it peeks from SFQ which moves the packet to the
      gso_skb list and keeps qdisc qlen set to 1. TBF is out of tokens so
      it schedules itself for later.
    
    * the second packet is sent and TBF tries to queues it to SFQ. qdisc
      qlen is now 2 and because the SFQ limit is 1 the packet is dropped
      by SFQ. At this point qlen is 1, and all of the SFQ slots are empty,
      however q->tail is not NULL.
    
    At this point, assuming no more packets are queued, when sch_dequeue
    runs again it will decrement the qlen for the current empty slot
    causing an underflow and the subsequent out of bounds access.
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Octavian Purdila <tavip@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20241204030520.2084663-2-tavip@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net_sched: sch_sfq: handle bigger packets [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Oct 8 11:16:03 2024 +0000

    net_sched: sch_sfq: handle bigger packets
    
    [ Upstream commit e4650d7ae4252f67e997a632adfae0dd74d3a99a ]
    
    SFQ has an assumption on dealing with packets smaller than 64KB.
    
    Even before BIG TCP, TCA_STAB can provide arbitrary big values
    in qdisc_pkt_len(skb)
    
    It is time to switch (struct sfq_slot)->allot to a 32bit field.
    
    sizeof(struct sfq_slot) is now 64 bytes, giving better cache locality.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Link: https://patch.msgid.link/20241008111603.653140-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 10685681bafc ("net_sched: sch_sfq: don't allow 1 packet limit")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfilter: nf_tables: fix set size with rbtree backend [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Mon Jan 6 23:40:50 2025 +0100

    netfilter: nf_tables: fix set size with rbtree backend
    
    [ Upstream commit 8d738c1869f611955d91d8d0fd0012d9ef207201 ]
    
    The existing rbtree implementation uses singleton elements to represent
    ranges, however, userspace provides a set size according to the number
    of ranges in the set.
    
    Adjust provided userspace set size to the number of singleton elements
    in the kernel by multiplying the range by two.
    
    Check if the no-match all-zero element is already in the set, in such
    case release one slot in the set size.
    
    Fixes: 0ed6389c483d ("netfilter: nf_tables: rename set implementations")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: reject mismatching sum of field_len with set key length [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Tue Jan 28 12:26:33 2025 +0100

    netfilter: nf_tables: reject mismatching sum of field_len with set key length
    
    commit 1b9335a8000fb70742f7db10af314104b6ace220 upstream.
    
    The field length description provides the length of each separated key
    field in the concatenation, each field gets rounded up to 32-bits to
    calculate the pipapo rule width from pipapo_init(). The set key length
    provides the total size of the key aligned to 32-bits.
    
    Register-based arithmetics still allows for combining mismatching set
    key length and field length description, eg. set key length 10 and field
    description [ 5, 4 ] leading to pipapo width of 12.
    
    Cc: stable@vger.kernel.org
    Fixes: 3ce67e3793f4 ("netfilter: nf_tables: do not allow mismatch field size and set key length")
    Reported-by: Noam Rathaus <noamr@ssd-disclosure.com>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

netfilter: nft_flow_offload: update tcp state flags under lock [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Jan 14 00:50:34 2025 +0100

    netfilter: nft_flow_offload: update tcp state flags under lock
    
    [ Upstream commit 7a4b61406395291ffb7220a10e8951a9a8684819 ]
    
    The conntrack entry is already public, there is a small chance that another
    CPU is handling a packet in reply direction and racing with the tcp state
    update.
    
    Move this under ct spinlock.
    
    This is done once, when ct is about to be offloaded, so this should
    not result in a noticeable performance hit.
    
    Fixes: 8437a6209f76 ("netfilter: nft_flow_offload: set liberal tracking mode for tcp")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nfs: fix incorrect error handling in LOCALIO [+ + +]
Author: Mike Snitzer <snitzer@kernel.org>
Date:   Mon Jan 13 17:29:03 2025 -0500

    nfs: fix incorrect error handling in LOCALIO
    
    [ Upstream commit ead11ac50ad4b8ef1b64806e962ea984862d96ad ]
    
    nfs4_stat_to_errno() expects a NFSv4 error code as an argument and
    returns a POSIX errno.
    
    The problem is LOCALIO is passing nfs4_stat_to_errno() the POSIX errno
    return values from filp->f_op->read_iter(), filp->f_op->write_iter()
    and vfs_fsync_range().
    
    So the POSIX errno that nfs_local_pgio_done() and
    nfs_local_commit_done() are passing to nfs4_stat_to_errno() are
    failing to match any NFSv4 error code, which results in
    nfs4_stat_to_errno() defaulting to returning -EREMOTEIO. This causes
    assertions in upper layers due to -EREMOTEIO not being a valid NFSv4
    error code.
    
    Fix this by updating nfs_local_pgio_done() and nfs_local_commit_done()
    to use the new nfs_localio_errno_to_nfs4_stat() to map a POSIX errno
    to an NFSv4 error code.
    
    Care was taken to factor out nfs4_errtbl_common[] to avoid duplicating
    the same NFS error to errno table. nfs4_errtbl_common[] is checked
    first by both nfs4_stat_to_errno and nfs_localio_errno_to_nfs4_stat
    before they check their own more specialized tables (nfs4_errtbl[] and
    nfs4_errtbl_localio[] respectively).
    
    While auditing the associated error mapping tables, the (ab)use of -1
    for the last table entry was removed in favor of using ARRAY_SIZE to
    iterate the nfs_errtbl[] and nfs4_errtbl[]. And 'errno_NFSERR_IO' was
    removed because it caused needless obfuscation.
    
    Fixes: 70ba381e1a431 ("nfs: add LOCALIO support")
    Reported-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
NFSv4.2: fix COPY_NOTIFY xdr buf size calculation [+ + +]
Author: Olga Kornievskaia <okorniev@redhat.com>
Date:   Fri Dec 13 11:52:00 2024 -0500

    NFSv4.2: fix COPY_NOTIFY xdr buf size calculation
    
    [ Upstream commit e8380c2d06055665b3df6c03964911375d7f9290 ]
    
    We need to include sequence size in the compound.
    
    Fixes: 0491567b51ef ("NFS: add COPY_NOTIFY operation")
    Signed-off-by: Olga Kornievskaia <okorniev@redhat.com>
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

NFSv4.2: mark OFFLOAD_CANCEL MOVEABLE [+ + +]
Author: Olga Kornievskaia <okorniev@redhat.com>
Date:   Fri Dec 13 11:52:01 2024 -0500

    NFSv4.2: mark OFFLOAD_CANCEL MOVEABLE
    
    [ Upstream commit 668135b9348c53fd205f5e07d11e82b10f31b55b ]
    
    OFFLOAD_CANCEL should be marked MOVEABLE for when we need to move
    tasks off a non-functional transport.
    
    Fixes: c975c2092657 ("NFS send OFFLOAD_CANCEL when COPY killed")
    Signed-off-by: Olga Kornievskaia <okorniev@redhat.com>
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nilfs2: do not force clear folio if buffer is referenced [+ + +]
Author: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Date:   Wed Jan 8 05:00:46 2025 +0900

    nilfs2: do not force clear folio if buffer is referenced
    
    [ Upstream commit ca76bb226bf47ff04c782cacbd299f12ddee1ec1 ]
    
    Patch series "nilfs2: protect busy buffer heads from being force-cleared".
    
    This series fixes the buffer head state inconsistency issues reported by
    syzbot that occurs when the filesystem is corrupted and falls back to
    read-only, and the associated buffer head use-after-free issue.
    
    This patch (of 2):
    
    Syzbot has reported that after nilfs2 detects filesystem corruption and
    falls back to read-only, inconsistencies in the buffer state may occur.
    
    One of the inconsistencies is that when nilfs2 calls mark_buffer_dirty()
    to set a data or metadata buffer as dirty, but it detects that the buffer
    is not in the uptodate state:
    
     WARNING: CPU: 0 PID: 6049 at fs/buffer.c:1177 mark_buffer_dirty+0x2e5/0x520
      fs/buffer.c:1177
     ...
     Call Trace:
      <TASK>
      nilfs_palloc_commit_alloc_entry+0x4b/0x160 fs/nilfs2/alloc.c:598
      nilfs_ifile_create_inode+0x1dd/0x3a0 fs/nilfs2/ifile.c:73
      nilfs_new_inode+0x254/0x830 fs/nilfs2/inode.c:344
      nilfs_mkdir+0x10d/0x340 fs/nilfs2/namei.c:218
      vfs_mkdir+0x2f9/0x4f0 fs/namei.c:4257
      do_mkdirat+0x264/0x3a0 fs/namei.c:4280
      __do_sys_mkdirat fs/namei.c:4295 [inline]
      __se_sys_mkdirat fs/namei.c:4293 [inline]
      __x64_sys_mkdirat+0x87/0xa0 fs/namei.c:4293
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
      entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    The other is when nilfs_btree_propagate(), which propagates the dirty
    state to the ancestor nodes of a b-tree that point to a dirty buffer,
    detects that the origin buffer is not dirty, even though it should be:
    
     WARNING: CPU: 0 PID: 5245 at fs/nilfs2/btree.c:2089
      nilfs_btree_propagate+0xc79/0xdf0 fs/nilfs2/btree.c:2089
     ...
     Call Trace:
      <TASK>
      nilfs_bmap_propagate+0x75/0x120 fs/nilfs2/bmap.c:345
      nilfs_collect_file_data+0x4d/0xd0 fs/nilfs2/segment.c:587
      nilfs_segctor_apply_buffers+0x184/0x340 fs/nilfs2/segment.c:1006
      nilfs_segctor_scan_file+0x28c/0xa50 fs/nilfs2/segment.c:1045
      nilfs_segctor_collect_blocks fs/nilfs2/segment.c:1216 [inline]
      nilfs_segctor_collect fs/nilfs2/segment.c:1540 [inline]
      nilfs_segctor_do_construct+0x1c28/0x6b90 fs/nilfs2/segment.c:2115
      nilfs_segctor_construct+0x181/0x6b0 fs/nilfs2/segment.c:2479
      nilfs_segctor_thread_construct fs/nilfs2/segment.c:2587 [inline]
      nilfs_segctor_thread+0x69e/0xe80 fs/nilfs2/segment.c:2701
      kthread+0x2f0/0x390 kernel/kthread.c:389
      ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
      ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
      </TASK>
    
    Both of these issues are caused by the callbacks that handle the
    page/folio write requests, forcibly clear various states, including the
    working state of the buffers they hold, at unexpected times when they
    detect read-only fallback.
    
    Fix these issues by checking if the buffer is referenced before clearing
    the page/folio state, and skipping the clear if it is.
    
    Link: https://lkml.kernel.org/r/20250107200202.6432-1-konishi.ryusuke@gmail.com
    Link: https://lkml.kernel.org/r/20250107200202.6432-2-konishi.ryusuke@gmail.com
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Reported-by: syzbot+b2b14916b77acf8626d7@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=b2b14916b77acf8626d7
    Reported-by: syzbot+d98fd19acd08b36ff422@syzkaller.appspotmail.com
    Link: https://syzkaller.appspot.com/bug?extid=d98fd19acd08b36ff422
    Fixes: 8c26c4e2694a ("nilfs2: fix issue with flush kernel thread after remount in RO mode because of driver's internal error or metadata corruption")
    Tested-by: syzbot+b2b14916b77acf8626d7@syzkaller.appspotmail.com
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nilfs2: handle errors that nilfs_prepare_chunk() may return [+ + +]
Author: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Date:   Sat Jan 11 23:26:35 2025 +0900

    nilfs2: handle errors that nilfs_prepare_chunk() may return
    
    [ Upstream commit ee70999a988b8abc3490609142f50ebaa8344432 ]
    
    Patch series "nilfs2: fix issues with rename operations".
    
    This series fixes BUG_ON check failures reported by syzbot around rename
    operations, and a minor behavioral issue where the mtime of a child
    directory changes when it is renamed instead of moved.
    
    This patch (of 2):
    
    The directory manipulation routines nilfs_set_link() and
    nilfs_delete_entry() rewrite the directory entry in the folio/page
    previously read by nilfs_find_entry(), so error handling is omitted on the
    assumption that nilfs_prepare_chunk(), which prepares the buffer for
    rewriting, will always succeed for these.  And if an error is returned, it
    triggers the legacy BUG_ON() checks in each routine.
    
    This assumption is wrong, as proven by syzbot: the buffer layer called by
    nilfs_prepare_chunk() may call nilfs_get_block() if necessary, which may
    fail due to metadata corruption or other reasons.  This has been there all
    along, but improved sanity checks and error handling may have made it more
    reproducible in fuzzing tests.
    
    Fix this issue by adding missing error paths in nilfs_set_link(),
    nilfs_delete_entry(), and their caller nilfs_rename().
    
    Link: https://lkml.kernel.org/r/20250111143518.7901-1-konishi.ryusuke@gmail.com
    Link: https://lkml.kernel.org/r/20250111143518.7901-2-konishi.ryusuke@gmail.com
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Reported-by: syzbot+32c3706ebf5d95046ea1@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=32c3706ebf5d95046ea1
    Reported-by: syzbot+1097e95f134f37d9395c@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=1097e95f134f37d9395c
    Fixes: 2ba466d74ed7 ("nilfs2: directory entry operations")
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nilfs2: protect access to buffers with no active references [+ + +]
Author: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Date:   Wed Jan 8 05:00:47 2025 +0900

    nilfs2: protect access to buffers with no active references
    
    [ Upstream commit 367a9bffabe08c04f6d725032cce3d891b2b9e1a ]
    
    nilfs_lookup_dirty_data_buffers(), which iterates through the buffers
    attached to dirty data folios/pages, accesses the attached buffers without
    locking the folios/pages.
    
    For data cache, nilfs_clear_folio_dirty() may be called asynchronously
    when the file system degenerates to read only, so
    nilfs_lookup_dirty_data_buffers() still has the potential to cause use
    after free issues when buffers lose the protection of their dirty state
    midway due to this asynchronous clearing and are unintentionally freed by
    try_to_free_buffers().
    
    Eliminate this race issue by adjusting the lock section in this function.
    
    Link: https://lkml.kernel.org/r/20250107200202.6432-3-konishi.ryusuke@gmail.com
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Fixes: 8c26c4e2694a ("nilfs2: fix issue with flush kernel thread after remount in RO mode because of driver's internal error or metadata corruption")
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvme-tcp: Fix I/O queue cpu spreading for multiple controllers [+ + +]
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Sat Jan 4 23:27:11 2025 +0200

    nvme-tcp: Fix I/O queue cpu spreading for multiple controllers
    
    [ Upstream commit 32193789878c259e39b97bd0c0f2f0ccbe5cb8a8 ]
    
    Since day-1 we are assigning the queue io_cpu very naively. We always
    base the queue id (controller scope) and assign it its matching cpu
    from the online mask. This works fine when the number of queues match
    the number of cpu cores.
    
    The problem starts when we have less queues than cpu cores. First, we
    should take into account the mq_map and select a cpu within the cpus
    that are assigned to this queue by the mq_map in order to minimize cross
    numa cpu bouncing.
    
    Second, even worse is that we don't take into account multiple
    controllers may have assigned queues to a given cpu. As a result we may
    simply compund more and more queues on the same set of cpus, which is
    suboptimal.
    
    We fix this by introducing global per-cpu counters that tracks the
    number of queues assigned to each cpu, and we select the least used cpu
    based on the mq_map and the per-cpu counters, and assign it as the queue
    io_cpu.
    
    The behavior for a single controller is slightly optimized by selecting
    better cpu candidates by consulting with the mq_map, and multiple
    controllers are spreading queues among cpu cores much better, resulting
    in lower average cpu load, and less likelihood to hit hotspots.
    
    Note that the accounting is not 100% perfect, but we don't need to be,
    we're simply putting our best effort to select the best candidate cpu
    core that we find at any given point.
    
    Another byproduct is that every controller reset/reconnect may change
    the queues io_cpu mapping, based on the current LRU accounting scheme.
    
    Here is the baseline queue io_cpu assignment for 4 controllers, 2 queues
    per controller, and 4 cpus on the host:
    nvme1: queue 0: using cpu 0
    nvme1: queue 1: using cpu 1
    nvme2: queue 0: using cpu 0
    nvme2: queue 1: using cpu 1
    nvme3: queue 0: using cpu 0
    nvme3: queue 1: using cpu 1
    nvme4: queue 0: using cpu 0
    nvme4: queue 1: using cpu 1
    
    And this is the fixed io_cpu assignment:
    nvme1: queue 0: using cpu 0
    nvme1: queue 1: using cpu 2
    nvme2: queue 0: using cpu 1
    nvme2: queue 1: using cpu 3
    nvme3: queue 0: using cpu 0
    nvme3: queue 1: using cpu 2
    nvme4: queue 0: using cpu 1
    nvme4: queue 1: using cpu 3
    
    Fixes: 3f2304f8c6d6 ("nvme-tcp: add NVMe over TCP host driver")
    Suggested-by: Hannes Reinecke <hare@kernel.org>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    [fixed kbuild reported errors]
    Signed-off-by: Chaitanya Kulkarni <kch@nvidia.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvme: Add error check for xa_store in nvme_get_effects_log [+ + +]
Author: Keisuke Nishimura <keisuke.nishimura@inria.fr>
Date:   Fri Dec 20 13:00:47 2024 +0100

    nvme: Add error check for xa_store in nvme_get_effects_log
    
    [ Upstream commit ac32057acc7f3d7a238dafaa9b2aa2bc9750080e ]
    
    The xa_store() may fail due to memory allocation failure because there
    is no guarantee that the index csi is already used. This fix adds an
    error check of the return value of xa_store() in nvme_get_effects_log().
    
    Fixes: 1cf7a12e09aa ("nvme: use an xarray to lookup the Commands Supported and Effects log")
    Signed-off-by: Keisuke Nishimura <keisuke.nishimura@inria.fr>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nvme: Add error path for xa_store in nvme_init_effects [+ + +]
Author: Keisuke Nishimura <keisuke.nishimura@inria.fr>
Date:   Mon Dec 16 16:27:20 2024 +0100

    nvme: Add error path for xa_store in nvme_init_effects
    
    [ Upstream commit d4a95adeabc6b5a39405e49c6d5ed14dd83682c4 ]
    
    The xa_store() may fail due to memory allocation failure because there
    is no guarantee that the index NVME_CSI_NVM is already used. This fix
    introduces a new function to handle the error path.
    
    Fixes: cc115cbe12d9 ("nvme: always initialize known command effects")
    Signed-off-by: Keisuke Nishimura <keisuke.nishimura@inria.fr>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nvme: fix bogus kzalloc() return check in nvme_init_effects_log() [+ + +]
Author: Jens Axboe <axboe@kernel.dk>
Date:   Mon Jan 13 10:27:54 2025 -0700

    nvme: fix bogus kzalloc() return check in nvme_init_effects_log()
    
    [ Upstream commit 170e086ad3997f816d1f551f178a03a626a130b7 ]
    
    nvme_init_effects_log() returns failure when kzalloc() is successful,
    which is obviously wrong and causes failures to boot. Correct the
    check.
    
    Fixes: d4a95adeabc6 ("nvme: Add error path for xa_store in nvme_init_effects")
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ocfs2: mark dquot as inactive if failed to start trans while releasing dquot [+ + +]
Author: Su Yue <glass.su@suse.com>
Date:   Mon Jan 6 22:06:53 2025 +0800

    ocfs2: mark dquot as inactive if failed to start trans while releasing dquot
    
    [ Upstream commit 276c61385f6bc3223a5ecd307cf4aba2dfbb9a31 ]
    
    While running fstests generic/329, the kernel workqueue
    quota_release_workfn is dead looping in calling ocfs2_release_dquot().
    The ocfs2 state is already readonly but ocfs2_release_dquot wants to
    start a transaction but fails and returns.
    
    =====================================================================
    [ 2918.123602 ][  T275 ] On-disk corruption discovered. Please run
    fsck.ocfs2 once the filesystem is unmounted.
    [ 2918.124034 ][  T275 ] (kworker/u135:1,275,11):ocfs2_release_dquot:765
    ERROR: status = -30
    [ 2918.124452 ][  T275 ] (kworker/u135:1,275,11):ocfs2_release_dquot:795
    ERROR: status = -30
    [ 2918.124883 ][  T275 ] (kworker/u135:1,275,11):ocfs2_start_trans:357
    ERROR: status = -30
    [ 2918.125276 ][  T275 ] OCFS2: abort (device dm-0): ocfs2_start_trans:
    Detected aborted journal
    [ 2918.125710 ][  T275 ] On-disk corruption discovered. Please run
    fsck.ocfs2 once the filesystem is unmounted.
    =====================================================================
    
    ocfs2_release_dquot() is much like dquot_release(), which is called by
    ext4 to handle similar situation.  So here fix it by marking the dquot as
    inactive like what dquot_release() does.
    
    Link: https://lkml.kernel.org/r/20250106140653.92292-1-glass.su@suse.com
    Fixes: 9e33d69f553a ("ocfs2: Implementation of local and global quota file handling")
    Signed-off-by: Su Yue <glass.su@suse.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>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
octeon_ep: remove firmware stats fetch in ndo_get_stats64 [+ + +]
Author: Shinas Rasheed <srasheed@marvell.com>
Date:   Fri Jan 17 01:46:50 2025 -0800

    octeon_ep: remove firmware stats fetch in ndo_get_stats64
    
    [ Upstream commit 1f64255bb76c11d0c41a7d81d7cec68e49d5362d ]
    
    The firmware stats fetch call that happens in ndo_get_stats64()
    is currently not required, and causes a warning to issue.
    
    The warn log is given below:
    
    [  123.316837] ------------[ cut here ]------------
    [  123.316840] Voluntary context switch within RCU read-side critical section!
    [  123.316917] pc : rcu_note_context_switch+0x2e4/0x300
    [  123.316919] lr : rcu_note_context_switch+0x2e4/0x300
    [  123.316947] Call trace:
    [  123.316949]  rcu_note_context_switch+0x2e4/0x300
    [  123.316952]  __schedule+0x84/0x584
    [  123.316955]  schedule+0x38/0x90
    [  123.316956]  schedule_timeout+0xa0/0x1d4
    [  123.316959]  octep_send_mbox_req+0x190/0x230 [octeon_ep]
    [  123.316966]  octep_ctrl_net_get_if_stats+0x78/0x100 [octeon_ep]
    [  123.316970]  octep_get_stats64+0xd4/0xf0 [octeon_ep]
    [  123.316975]  dev_get_stats+0x4c/0x114
    [  123.316977]  dev_seq_printf_stats+0x3c/0x11c
    [  123.316980]  dev_seq_show+0x1c/0x40
    [  123.316982]  seq_read_iter+0x3cc/0x4e0
    [  123.316985]  seq_read+0xc8/0x110
    [  123.316987]  proc_reg_read+0x9c/0xec
    [  123.316990]  vfs_read+0xc8/0x2ec
    [  123.316993]  ksys_read+0x70/0x100
    [  123.316995]  __arm64_sys_read+0x20/0x30
    [  123.316997]  invoke_syscall.constprop.0+0x7c/0xd0
    [  123.317000]  do_el0_svc+0xb4/0xd0
    [  123.317002]  el0_svc+0xe8/0x1f4
    [  123.317005]  el0t_64_sync_handler+0x134/0x150
    [  123.317006]  el0t_64_sync+0x17c/0x180
    [  123.317008] ---[ end trace 63399811432ab69b ]---
    
    Fixes: 6a610a46bad1 ("octeon_ep: add support for ndo ops")
    Signed-off-by: Shinas Rasheed <srasheed@marvell.com>
    Link: https://patch.msgid.link/20250117094653.2588578-2-srasheed@marvell.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
octeon_ep_vf: remove firmware stats fetch in ndo_get_stats64 [+ + +]
Author: Shinas Rasheed <srasheed@marvell.com>
Date:   Fri Jan 17 01:46:52 2025 -0800

    octeon_ep_vf: remove firmware stats fetch in ndo_get_stats64
    
    [ Upstream commit cc0e510cc89fe0a6479203bc20cd964962dc6a43 ]
    
    The firmware stats fetch call that happens in ndo_get_stats64()
    is currently not required, and causes a warning to issue.
    
    The corresponding warn log for the PF is given below:
    
    [  123.316837] ------------[ cut here ]------------
    [  123.316840] Voluntary context switch within RCU read-side critical section!
    [  123.316917] pc : rcu_note_context_switch+0x2e4/0x300
    [  123.316919] lr : rcu_note_context_switch+0x2e4/0x300
    [  123.316947] Call trace:
    [  123.316949]  rcu_note_context_switch+0x2e4/0x300
    [  123.316952]  __schedule+0x84/0x584
    [  123.316955]  schedule+0x38/0x90
    [  123.316956]  schedule_timeout+0xa0/0x1d4
    [  123.316959]  octep_send_mbox_req+0x190/0x230 [octeon_ep]
    [  123.316966]  octep_ctrl_net_get_if_stats+0x78/0x100 [octeon_ep]
    [  123.316970]  octep_get_stats64+0xd4/0xf0 [octeon_ep]
    [  123.316975]  dev_get_stats+0x4c/0x114
    [  123.316977]  dev_seq_printf_stats+0x3c/0x11c
    [  123.316980]  dev_seq_show+0x1c/0x40
    [  123.316982]  seq_read_iter+0x3cc/0x4e0
    [  123.316985]  seq_read+0xc8/0x110
    [  123.316987]  proc_reg_read+0x9c/0xec
    [  123.316990]  vfs_read+0xc8/0x2ec
    [  123.316993]  ksys_read+0x70/0x100
    [  123.316995]  __arm64_sys_read+0x20/0x30
    [  123.316997]  invoke_syscall.constprop.0+0x7c/0xd0
    [  123.317000]  do_el0_svc+0xb4/0xd0
    [  123.317002]  el0_svc+0xe8/0x1f4
    [  123.317005]  el0t_64_sync_handler+0x134/0x150
    [  123.317006]  el0t_64_sync+0x17c/0x180
    [  123.317008] ---[ end trace 63399811432ab69b ]---
    
    Fixes: c3fad23cdc06 ("octeon_ep_vf: add support for ndo ops")
    Signed-off-by: Shinas Rasheed <srasheed@marvell.com>
    Link: https://patch.msgid.link/20250117094653.2588578-4-srasheed@marvell.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
of/fdt: Restore possibility to use both ACPI and FDT from bootloader [+ + +]
Author: Dmytro Maluka <dmaluka@chromium.org>
Date:   Sun Jan 5 17:27:41 2025 +0000

    of/fdt: Restore possibility to use both ACPI and FDT from bootloader
    
    [ Upstream commit 14bce187d1600710623d81888da3501bbc470ba2 ]
    
    There are cases when the bootloader provides information to the kernel
    in both ACPI and DTB, not interchangeably. One such use case is virtual
    machines in Android. When running on x86, the Android Virtualization
    Framework (AVF) boots VMs with ACPI like it is usually done on x86 (i.e.
    the virtual LAPIC, IOAPIC, HPET, PCI MMCONFIG etc are described in ACPI)
    but also passes various AVF-specific boot parameters in DTB. This allows
    reusing the same implementations of various AVF components on both
    arm64 and x86.
    
    Commit 7b937cc243e5 ("of: Create of_root if no dtb provided by firmware")
    removed the possibility to do that, since among other things
    it introduced forcing emptying the bootloader-provided DTB if ACPI is
    enabled (probably assuming that if ACPI is available, a DTB can only be
    useful for applying overlays to it afterwards, for testing purposes).
    
    So restore this possibility. Instead of completely preventing using ACPI
    and DT together, rely on arch-specific setup code to prevent using both
    to set up the same things (see various acpi_disabled checks under arch/).
    
    Fixes: 7b937cc243e5 ("of: Create of_root if no dtb provided by firmware")
    Signed-off-by: Dmytro Maluka <dmaluka@chromium.org>
    Link: https://lore.kernel.org/r/20250105172741.3476758-3-dmaluka@chromium.org
    Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
of: property: Avoiding using uninitialized variable @imaplen in parse_interrupt_map() [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Thu Jan 9 21:26:57 2025 +0800

    of: property: Avoiding using uninitialized variable @imaplen in parse_interrupt_map()
    
    [ Upstream commit f73780e772c06901e99b2ad114b7f0f3fbe73ad4 ]
    
    parse_interrupt_map() will use uninitialized variable @imaplen if fails
    to get property 'interrupt-map'.
    
    Fix by using the variable after successfully getting the property.
    
    Fixes: e7985f43609c ("of: property: Fix fw_devlink handling of interrupt-map")
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
    Link: https://lore.kernel.org/r/20250109-of_core_fix-v4-6-db8a72415b8c@quicinc.com
    Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

of: reserved-memory: Do not make kmemleak ignore freed address [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Thu Jan 9 21:27:01 2025 +0800

    of: reserved-memory: Do not make kmemleak ignore freed address
    
    [ Upstream commit 29091a52562bca4d6e678dd8f0085dac119d6a21 ]
    
    early_init_dt_alloc_reserved_memory_arch() will free address @base when
    suffers memblock_mark_nomap() error, but it still makes kmemleak ignore
    the freed address @base via kmemleak_ignore_phys().
    
    That is unnecessary, besides, also causes unnecessary warning messages:
    
    kmemleak_ignore_phys()
     -> make_black_object()
        -> paint_ptr()
           -> kmemleak_warn() // warning message here.
    
    Fix by avoiding kmemleak_ignore_phys() when suffer the error.
    
    Fixes: 658aafc8139c ("memblock: exclude MEMBLOCK_NOMAP regions from kmemleak")
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Link: https://lore.kernel.org/r/20250109-of_core_fix-v4-10-db8a72415b8c@quicinc.com
    Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

of: reserved-memory: Warn for missing static reserved memory regions [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Tue Jan 14 23:23:04 2025 +0800

    of: reserved-memory: Warn for missing static reserved memory regions
    
    commit 81dfedd5234b42df11a473eefe7328ea4a0416ad upstream.
    
    For child node of /reserved-memory, its property 'reg' may contain
    multiple regions, but fdt_scan_reserved_mem_reg_nodes() only takes
    into account the first region, and miss remaining regions.
    
    But there are no simple approach to fix it, so give user warning
    message when miss remaining regions.
    
    Fixes: 8a6e02d0c00e ("of: reserved_mem: Restructure how the reserved memory regions are processed")
    Cc: stable@vger.kernel.org
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
    Link: https://lore.kernel.org/r/20250114-of_core_fix-v5-2-b8bafd00a86f@quicinc.com
    Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

of: reserved_mem: Restructure how the reserved memory regions are processed [+ + +]
Author: Oreoluwa Babatunde <quic_obabatun@quicinc.com>
Date:   Tue Oct 8 15:06:23 2024 -0700

    of: reserved_mem: Restructure how the reserved memory regions are processed
    
    [ Upstream commit 8a6e02d0c00e7b62e6acb74146878bb91e9e7e31 ]
    
    Reserved memory regions defined in the devicetree can be broken up into
    two groups:
    i) Statically-placed reserved memory regions
    i.e. regions defined with a static start address and size using the
         "reg" property.
    ii) Dynamically-placed reserved memory regions.
    i.e. regions defined by specifying an address range where they can be
         placed in memory using the "alloc_ranges" and "size" properties.
    
    These regions are processed and set aside at boot time.
    This is done in two stages as seen below:
    
    Stage 1:
    At this stage, fdt_scan_reserved_mem() scans through the child nodes of
    the reserved_memory node using the flattened devicetree and does the
    following:
    
    1) If the node represents a statically-placed reserved memory region,
       i.e. if it is defined using the "reg" property:
       - Call memblock_reserve() or memblock_mark_nomap() as needed.
       - Add the information for that region into the reserved_mem array
         using fdt_reserved_mem_save_node().
         i.e. fdt_reserved_mem_save_node(node, name, base, size).
    
    2) If the node represents a dynamically-placed reserved memory region,
       i.e. if it is defined using "alloc-ranges" and "size" properties:
       - Add the information for that region to the reserved_mem array with
         the starting address and size set to 0.
         i.e. fdt_reserved_mem_save_node(node, name, 0, 0).
       Note: This region is saved to the array with a starting address of 0
       because a starting address is not yet allocated for it.
    
    Stage 2:
    After iterating through all the reserved memory nodes and storing their
    relevant information in the reserved_mem array,fdt_init_reserved_mem() is
    called and does the following:
    
    1) For statically-placed reserved memory regions:
       - Call the region specific init function using
         __reserved_mem_init_node().
    2) For dynamically-placed reserved memory regions:
       - Call __reserved_mem_alloc_size() which is used to allocate memory
         for each of these regions, and mark them as nomap if they have the
         nomap property specified in the DT.
       - Call the region specific init function.
    
    The current size of the resvered_mem array is 64 as is defined by
    MAX_RESERVED_REGIONS. This means that there is a limitation of 64 for
    how many reserved memory regions can be specified on a system.
    As systems continue to grow more and more complex, the number of
    reserved memory regions needed are also growing and are starting to hit
    this 64 count limit, hence the need to make the reserved_mem array
    dynamically sized (i.e. dynamically allocating memory for the
    reserved_mem array using membock_alloc_*).
    
    On architectures such as arm64, memory allocated using memblock is
    writable only after the page tables have been setup. This means that if
    the reserved_mem array is going to be dynamically allocated, it needs to
    happen after the page tables have been setup, not before.
    
    Since the reserved memory regions are currently being processed and
    added to the array before the page tables are setup, there is a need to
    change the order in which some of the processing is done to allow for
    the reserved_mem array to be dynamically sized.
    
    It is possible to process the statically-placed reserved memory regions
    without needing to store them in the reserved_mem array until after the
    page tables have been setup because all the information stored in the
    array is readily available in the devicetree and can be referenced at
    any time.
    Dynamically-placed reserved memory regions on the other hand get
    assigned a start address only at runtime, and hence need a place to be
    stored once they are allocated since there is no other referrence to the
    start address for these regions.
    
    Hence this patch changes the processing order of the reserved memory
    regions in the following ways:
    
    Step 1:
    fdt_scan_reserved_mem() scans through the child nodes of
    the reserved_memory node using the flattened devicetree and does the
    following:
    
    1) If the node represents a statically-placed reserved memory region,
       i.e. if it is defined using the "reg" property:
       - Call memblock_reserve() or memblock_mark_nomap() as needed.
    
    2) If the node represents a dynamically-placed reserved memory region,
       i.e. if it is defined using "alloc-ranges" and "size" properties:
       - Call __reserved_mem_alloc_size() which will:
         i) Allocate memory for the reserved region and call
         memblock_mark_nomap() as needed.
         ii) Call the region specific initialization function using
         fdt_init_reserved_mem_node().
         iii) Save the region information in the reserved_mem array using
         fdt_reserved_mem_save_node().
    
    Step 2:
    1) This stage of the reserved memory processing is now only used to add
       the statically-placed reserved memory regions into the reserved_mem
       array using fdt_scan_reserved_mem_reg_nodes(), as well as call their
       region specific initialization functions.
    
    2) This step has also been moved to be after the page tables are
       setup. Moving this will allow us to replace the reserved_mem
       array with a dynamically sized array before storing the rest of
       these regions.
    
    Signed-off-by: Oreoluwa Babatunde <quic_obabatun@quicinc.com>
    Link: https://lore.kernel.org/r/20241008220624.551309-2-quic_obabatun@quicinc.com
    Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
    Stable-dep-of: 14bce187d160 ("of/fdt: Restore possibility to use both ACPI and FDT from bootloader")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
OPP: add index check to assert to avoid buffer overflow in _read_freq() [+ + +]
Author: Neil Armstrong <neil.armstrong@linaro.org>
Date:   Tue Dec 3 09:12:59 2024 +0100

    OPP: add index check to assert to avoid buffer overflow in _read_freq()
    
    [ Upstream commit d659bc68ed489022ea33342cfbda2911a81e7a0d ]
    
    Pass the freq index to the assert function to make sure
    we do not read a freq out of the opp->rates[] table when called
    from the indexed variants:
    dev_pm_opp_find_freq_exact_indexed() or
    dev_pm_opp_find_freq_ceil/floor_indexed().
    
    Add a secondary parameter to the assert function, unused
    for assert_single_clk() then add assert_clk_index() which
    will check for the clock index when called from the _indexed()
    find functions.
    
    Fixes: 142e17c1c2b4 ("OPP: Introduce dev_pm_opp_find_freq_{ceil/floor}_indexed() APIs")
    Fixes: a5893928bb17 ("OPP: Add dev_pm_opp_find_freq_exact_indexed()")
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized [+ + +]
Author: Neil Armstrong <neil.armstrong@linaro.org>
Date:   Tue Dec 3 09:13:00 2024 +0100

    OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized
    
    [ Upstream commit b44b9bc7cab2967c3d6a791b1cd542c89fc07f0e ]
    
    If a driver calls dev_pm_opp_find_bw_ceil/floor() the retrieve bandwidth
    from the OPP table but the bandwidth table was not created because the
    interconnect properties were missing in the OPP consumer node, the
    kernel will crash with:
    
    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000004
    ...
    pc : _read_bw+0x8/0x10
    lr : _opp_table_find_key+0x9c/0x174
    ...
    Call trace:
      _read_bw+0x8/0x10 (P)
      _opp_table_find_key+0x9c/0x174 (L)
      _find_key+0x98/0x168
      dev_pm_opp_find_bw_ceil+0x50/0x88
    ...
    
    In order to fix the crash, create an assert function to check
    if the bandwidth table was created before trying to get a
    bandwidth with _read_bw().
    
    Fixes: add1dc094a74 ("OPP: Use generic key finding helpers for bandwidth key")
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

OPP: OF: Fix an OF node leak in _opp_add_static_v2() [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Tue Jan 7 14:44:53 2025 +0900

    OPP: OF: Fix an OF node leak in _opp_add_static_v2()
    
    [ Upstream commit 1d38eb7f7b26261a0b642f6e0923269c7c000a97 ]
    
    _opp_add_static_v2() leaks the obtained OF node reference when
    _of_opp_alloc_required_opps() fails. Add an of_node_put() call in the
    error path.
    
    Fixes: 3466ea2cd6b6 ("OPP: Don't drop opp->np reference while it is still in use")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
padata: add pd get/put refcnt helper [+ + +]
Author: Chen Ridong <chenridong@huawei.com>
Date:   Fri Jan 10 06:16:37 2025 +0000

    padata: add pd get/put refcnt helper
    
    [ Upstream commit ae154202cc6a189b035359f3c4e143d5c24d5352 ]
    
    Add helpers for pd to get/put refcnt to make code consice.
    
    Signed-off-by: Chen Ridong <chenridong@huawei.com>
    Acked-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Stable-dep-of: dd7d37ccf6b1 ("padata: avoid UAF for reorder_work")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

padata: avoid UAF for reorder_work [+ + +]
Author: Chen Ridong <chenridong@huawei.com>
Date:   Fri Jan 10 06:16:39 2025 +0000

    padata: avoid UAF for reorder_work
    
    [ Upstream commit dd7d37ccf6b11f3d95e797ebe4e9e886d0332600 ]
    
    Although the previous patch can avoid ps and ps UAF for _do_serial, it
    can not avoid potential UAF issue for reorder_work. This issue can
    happen just as below:
    
    crypto_request                  crypto_request          crypto_del_alg
    padata_do_serial
      ...
      padata_reorder
        // processes all remaining
        // requests then breaks
        while (1) {
          if (!padata)
            break;
          ...
        }
    
                                    padata_do_serial
                                      // new request added
                                      list_add
        // sees the new request
        queue_work(reorder_work)
                                      padata_reorder
                                        queue_work_on(squeue->work)
    ...
    
                                    <kworker context>
                                    padata_serial_worker
                                    // completes new request,
                                    // no more outstanding
                                    // requests
    
                                                            crypto_del_alg
                                                              // free pd
    
    <kworker context>
    invoke_padata_reorder
      // UAF of pd
    
    To avoid UAF for 'reorder_work', get 'pd' ref before put 'reorder_work'
    into the 'serial_wq' and put 'pd' ref until the 'serial_wq' finish.
    
    Fixes: bbefa1dd6a6d ("crypto: pcrypt - Avoid deadlock by using per-instance padata queues")
    Signed-off-by: Chen Ridong <chenridong@huawei.com>
    Acked-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

padata: fix sysfs store callback check [+ + +]
Author: Thomas Weißschuh <linux@weissschuh.net>
Date:   Fri Dec 27 23:32:01 2024 +0100

    padata: fix sysfs store callback check
    
    [ Upstream commit 9ff6e943bce67d125781fe4780a5d6f072dc44c0 ]
    
    padata_sysfs_store() was copied from padata_sysfs_show() but this check
    was not adapted. Today there is no attribute which can fail this
    check, but if there is one it may as well be correct.
    
    Fixes: 5e017dc3f8bc ("padata: Added sysfs primitives to padata subsystem")
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

padata: fix UAF in padata_reorder [+ + +]
Author: Chen Ridong <chenridong@huawei.com>
Date:   Fri Jan 10 06:16:38 2025 +0000

    padata: fix UAF in padata_reorder
    
    [ Upstream commit e01780ea4661172734118d2a5f41bc9720765668 ]
    
    A bug was found when run ltp test:
    
    BUG: KASAN: slab-use-after-free in padata_find_next+0x29/0x1a0
    Read of size 4 at addr ffff88bbfe003524 by task kworker/u113:2/3039206
    
    CPU: 0 PID: 3039206 Comm: kworker/u113:2 Kdump: loaded Not tainted 6.6.0+
    Workqueue: pdecrypt_parallel padata_parallel_worker
    Call Trace:
    <TASK>
    dump_stack_lvl+0x32/0x50
    print_address_description.constprop.0+0x6b/0x3d0
    print_report+0xdd/0x2c0
    kasan_report+0xa5/0xd0
    padata_find_next+0x29/0x1a0
    padata_reorder+0x131/0x220
    padata_parallel_worker+0x3d/0xc0
    process_one_work+0x2ec/0x5a0
    
    If 'mdelay(10)' is added before calling 'padata_find_next' in the
    'padata_reorder' function, this issue could be reproduced easily with
    ltp test (pcrypt_aead01).
    
    This can be explained as bellow:
    
    pcrypt_aead_encrypt
    ...
    padata_do_parallel
    refcount_inc(&pd->refcnt); // add refcnt
    ...
    padata_do_serial
    padata_reorder // pd
    while (1) {
    padata_find_next(pd, true); // using pd
    queue_work_on
    ...
    padata_serial_worker                            crypto_del_alg
    padata_put_pd_cnt // sub refcnt
                                                    padata_free_shell
                                                    padata_put_pd(ps->pd);
                                                    // pd is freed
    // loop again, but pd is freed
    // call padata_find_next, UAF
    }
    
    In the padata_reorder function, when it loops in 'while', if the alg is
    deleted, the refcnt may be decreased to 0 before entering
    'padata_find_next', which leads to UAF.
    
    As mentioned in [1], do_serial is supposed to be called with BHs disabled
    and always happen under RCU protection, to address this issue, add
    synchronize_rcu() in 'padata_free_shell' wait for all _do_serial calls
    to finish.
    
    [1] https://lore.kernel.org/all/20221028160401.cccypv4euxikusiq@parnassus.localdomain/
    [2] https://lore.kernel.org/linux-kernel/jfjz5d7zwbytztackem7ibzalm5lnxldi2eofeiczqmqs2m7o6@fq426cwnjtkm/
    Fixes: b128a3040935 ("padata: allocate workqueue internally")
    Signed-off-by: Chen Ridong <chenridong@huawei.com>
    Signed-off-by: Qu Zicheng <quzicheng@huawei.com>
    Acked-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
partitions: ldm: remove the initial kernel-doc notation [+ + +]
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Fri Jan 10 22:27:58 2025 -0800

    partitions: ldm: remove the initial kernel-doc notation
    
    [ Upstream commit e494e451611a3de6ae95f99e8339210c157d70fb ]
    
    Remove the file's first comment describing what the file is.
    This comment is not in kernel-doc format so it causes a kernel-doc
    warning.
    
    ldm.h:13: warning: expecting prototype for ldm(). Prototype was for _FS_PT_LDM_H_() instead
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Richard Russon (FlatCap) <ldm@flatcap.org>
    Cc: linux-ntfs-dev@lists.sourceforge.net
    Cc: Jens Axboe <axboe@kernel.dk>
    Link: https://lore.kernel.org/r/20250111062758.910458-1-rdunlap@infradead.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PCI: dwc: Always stop link in the dw_pcie_suspend_noirq [+ + +]
Author: Richard Zhu <hongxing.zhu@nxp.com>
Date:   Tue Dec 10 16:15:56 2024 +0800

    PCI: dwc: Always stop link in the dw_pcie_suspend_noirq
    
    [ Upstream commit 86a016e278b78cc2281edd4ffaddbc011c87a593 ]
    
    On the i.MX8QM, PCIe link can't be re-established again in
    dw_pcie_resume_noirq(), if the LTSSM_EN bit is not cleared
    properly in dw_pcie_suspend_noirq().
    
    So, add dw_pcie_stop_link() to dw_pcie_suspend_noirq() to fix
    this issue and to align the suspend/resume functions since there
    is dw_pcie_start_link() in dw_pcie_resume_noirq() already.
    
    Fixes: 4774faf854f5 ("PCI: dwc: Implement generic suspend/resume functionality")
    Link: https://lore.kernel.org/r/20241210081557.163555-2-hongxing.zhu@nxp.com
    Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: endpoint: Destroy the EPC device in devm_pci_epc_destroy() [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Tue Dec 10 22:00:18 2024 +0800

    PCI: endpoint: Destroy the EPC device in devm_pci_epc_destroy()
    
    [ Upstream commit d4929755e4d02bd3de3ae5569dab69cb9502c54f ]
    
    The devm_pci_epc_destroy() comment says destroys the EPC device, but it
    does not actually do that since devres_destroy() does not call
    devm_pci_epc_release(), and it also can not fully undo what the API
    devm_pci_epc_create() does, so it is faulty.
    
    Fortunately, the faulty API has not been used by current kernel tree.  Use
    devres_release() instead of devres_destroy() so the EPC device will be
    released.
    
    Link: https://lore.kernel.org/r/20241210-pci-epc-core_fix-v3-1-4d86dd573e4b@quicinc.com
    Fixes: 5e8cb4033807 ("PCI: endpoint: Add EP core layer to enable EP controller and EP functions")
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: endpoint: pci-epf-test: Fix check for DMA MEMCPY test [+ + +]
Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Date:   Thu Jan 16 22:46:47 2025 +0530

    PCI: endpoint: pci-epf-test: Fix check for DMA MEMCPY test
    
    [ Upstream commit 235c2b197a8de2887f13990094a3343d2392155b ]
    
    Currently, if DMA MEMCPY test is requested by the host, and if the endpoint
    DMA controller supports DMA_PRIVATE, the test will fail. This is not
    correct since there is no check for DMA_MEMCPY capability and the DMA
    controller can support both DMA_PRIVATE and DMA_MEMCPY.
    
    Fix the check and also reword the error message.
    
    Link: https://lore.kernel.org/r/20250116171650.33585-2-manivannan.sadhasivam@linaro.org
    Fixes: 8353813c88ef ("PCI: endpoint: Enable DMA tests for endpoints with DMA capabilities")
    Reported-by: Niklas Cassel <cassel@kernel.org>
    Closes: https://lore.kernel.org/linux-pci/Z3QtEihbiKIGogWA@ryzen
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Tested-by: Niklas Cassel <cassel@kernel.org>
    Reviewed-by: Niklas Cassel <cassel@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: endpoint: pci-epf-test: Set dma_chan_rx pointer to NULL on error [+ + +]
Author: Mohamed Khalfella <khalfella@gmail.com>
Date:   Fri Dec 27 08:08:41 2024 -0800

    PCI: endpoint: pci-epf-test: Set dma_chan_rx pointer to NULL on error
    
    [ Upstream commit b1b1f4b12969130c0a6ec0cf0299460cb01e799c ]
    
    If dma_chan_tx allocation fails, set dma_chan_rx to NULL after it is
    freed.
    
    Link: https://lore.kernel.org/r/20241227160841.92382-1-khalfella@gmail.com
    Fixes: 8353813c88ef ("PCI: endpoint: Enable DMA tests for endpoints with DMA capabilities")
    Signed-off-by: Mohamed Khalfella <khalfella@gmail.com>
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Niklas Cassel <cassel@kernel.org>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: imx6: Add missing reference clock disable logic [+ + +]
Author: Richard Zhu <hongxing.zhu@nxp.com>
Date:   Tue Nov 26 15:56:58 2024 +0800

    PCI: imx6: Add missing reference clock disable logic
    
    [ Upstream commit 93d883f89063744a92006fc356b1c767eb62d950 ]
    
    Ensure the *_enable_ref_clk() function is symmetric by addressing missing
    disable parts on some platforms.
    
    Fixes: d0a75c791f98 ("PCI: imx6: Factor out ref clock disable to match enable")
    Link: https://lore.kernel.org/r/20241126075702.4099164-7-hongxing.zhu@nxp.com
    Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
    Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: imx6: Configure PHY based on Root Complex or Endpoint mode [+ + +]
Author: Frank Li <Frank.Li@nxp.com>
Date:   Tue Nov 19 14:44:24 2024 -0500

    PCI: imx6: Configure PHY based on Root Complex or Endpoint mode
    
    [ Upstream commit de22e20589b79f35f92543119c33051f8179dba0 ]
    
    Pass PHY_MODE_PCIE_EP if the PCI controller operates in Endpoint (EP) mode,
    and fix the Root Complex (RC) mode being hardcoded using a drvdata mode
    check.
    
    Fixes: 8026f2d8e8a9 ("PCI: imx6: Call common PHY API to set mode, speed, and submode")
    Link: https://lore.kernel.org/r/20241119-pci_fixup_addr-v8-6-c4bfa5193288@nxp.com
    Signed-off-by: Frank Li <Frank.Li@nxp.com>
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Reviewed-by: Richard Zhu <hongxing.zhu@nxp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: imx6: Deassert apps_reset in imx_pcie_deassert_core_reset() [+ + +]
Author: Richard Zhu <hongxing.zhu@nxp.com>
Date:   Tue Nov 26 15:56:57 2024 +0800

    PCI: imx6: Deassert apps_reset in imx_pcie_deassert_core_reset()
    
    [ Upstream commit ef61c7d8d032adb467f99d03ccfaa293b417ac75 ]
    
    Since the apps_reset is asserted in imx_pcie_assert_core_reset(), it should
    be deasserted in imx_pcie_deassert_core_reset().
    
    Fixes: 9b3fe6796d7c ("PCI: imx6: Add code to support i.MX7D")
    Link: https://lore.kernel.org/r/20241126075702.4099164-6-hongxing.zhu@nxp.com
    Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
    Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: imx6: Skip controller_id generation logic for i.MX7D [+ + +]
Author: Richard Zhu <hongxing.zhu@nxp.com>
Date:   Tue Nov 26 15:56:56 2024 +0800

    PCI: imx6: Skip controller_id generation logic for i.MX7D
    
    [ Upstream commit f068ffdd034c93f0c768acdc87d4d2d7023c1379 ]
    
    The i.MX7D only has one PCIe controller, so controller_id should always be
    0. The previous code is incorrect although yielding the correct result.
    
    Fix by removing "IMX7D" from the switch case branch.
    
    Fixes: 2d8ed461dbc9 ("PCI: imx6: Add support for i.MX8MQ")
    Link: https://lore.kernel.org/r/20241126075702.4099164-5-hongxing.zhu@nxp.com
    Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
    Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: microchip: Add support for using either Root Port 1 or 2 [+ + +]
Author: Conor Dooley <conor.dooley@microchip.com>
Date:   Thu Nov 7 10:59:35 2024 +0000

    PCI: microchip: Add support for using either Root Port 1 or 2
    
    [ Upstream commit ac7f53b7e7283fee35ad12de8359f20989a47eb5 ]
    
    The PCI host controller on PolarFire SoC has multiple Root Port instances,
    each with their own bridge and ctrl address spaces. The original binding
    has an "apb" register region, and it is expected to be set to the base
    address of the Root Complex register space. Some defines in the Linux
    driver were used to compute the addresses of the bridge and ctrl address
    ranges corresponding to Root Port instance 1.  Some customers want to use
    Root Port instance 2 however, which requires changing the defines in the
    driver, which is clearly not a portable solution.
    
    The binding has been changed from a single register region to a pair,
    corresponding to the bridge and ctrl regions respectively, so modify the
    driver to read these regions directly from the devicetree rather than
    compute them from the base address of the abp region.
    
    To maintain backwards compatibility with the existing binding, the driver
    retains code to handle the "abp" reg and computes the base address of the
    bridge and ctrl regions using the defines if it is present. reg-names has
    always been a required property, so this is safe to do.
    
    Link: https://lore.kernel.org/r/20241107-surrender-brisket-287d563a5de1@spud
    Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
    [bhelgaas: Capitalize PCIe spec terms]
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Stable-dep-of: 1390a33b3d04 ("PCI: microchip: Set inbound address translation for coherent or non-coherent mode")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: microchip: Set inbound address translation for coherent or non-coherent mode [+ + +]
Author: Daire McNamara <daire.mcnamara@microchip.com>
Date:   Fri Oct 11 15:00:42 2024 +0100

    PCI: microchip: Set inbound address translation for coherent or non-coherent mode
    
    [ Upstream commit 1390a33b3d04fdf6ba4e3e7082107a12027fc188 ]
    
    On Microchip PolarFire SoC the PCIe Root Port can be behind one of three
    general purpose Fabric Interface Controller (FIC) buses that encapsulates
    an AXI-S bus. Depending on which FIC(s) the Root Port is connected through
    to CPU space, and what address translation is done by that FIC, the Root
    Port driver's inbound address translation may vary.
    
    For all current supported designs and all future expected designs, inbound
    address translation done by a FIC on PolarFire SoC varies depending on
    whether PolarFire SoC is operating in coherent DMA mode or noncoherent DMA
    mode.
    
    The setup of the outbound address translation tables in the Root Port
    driver only needs to handle these two cases.
    
    Setup the inbound address translation tables to one of two address
    translations, depending on whether the Root Port is being used with
    coherent DMA or noncoherent DMA.
    
    Link: https://lore.kernel.org/r/20241011140043.1250030-3-daire.mcnamara@microchip.com
    Fixes: 6f15a9c9f941 ("PCI: microchip: Add Microchip PolarFire PCIe controller driver")
    Signed-off-by: Daire McNamara <daire.mcnamara@microchip.com>
    [bhelgaas: adapt for ac7f53b7e728 ("PCI: microchip: Add support for using
    either Root Port 1 or 2")]
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Conor Dooley <conor.dooley@microchip.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: qcom: Update ICC and OPP values after Link Up event [+ + +]
Author: Krishna chaitanya chundru <quic_krichai@quicinc.com>
Date:   Sat Nov 23 00:40:01 2024 +0530

    PCI: qcom: Update ICC and OPP values after Link Up event
    
    [ Upstream commit f0639013d340580b72df95d012a93f35eeb0da64 ]
    
    4581403f6792 ("PCI: qcom: Enumerate endpoints based on Link up event in
    'global_irq' interrupt") added the Link Up-based enumeration support, but
    did not update the ICC/OPP vote once link is up. Before that, the update
    happened during probe and the endpoints may or may not be enumerated at
    that time, so the ICC/OPP vote was not guaranteed to be accurate.
    
    With Link Up-based enumeration support, the driver can request the accurate
    vote based on the PCIe link.
    
    Call qcom_pcie_icc_opp_update() in qcom_pcie_global_irq_thread() after
    enumerating the endpoints.
    
    Fixes: 4581403f6792 ("PCI: qcom: Enumerate endpoints based on Link up event in 'global_irq' interrupt")
    Link: https://lore.kernel.org/r/20241123-remove_wait2-v5-3-b5f9e6b794c2@quicinc.com
    Signed-off-by: Krishna chaitanya chundru <quic_krichai@quicinc.com>
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Reviewed-by: Niklas Cassel <cassel@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: rcar-ep: Fix incorrect variable used when calling devm_request_mem_region() [+ + +]
Author: King Dix <kingdix10@qq.com>
Date:   Thu Jan 9 08:50:18 2025 +0800

    PCI: rcar-ep: Fix incorrect variable used when calling devm_request_mem_region()
    
    [ Upstream commit 2d2da5a4c1b4509f6f7e5a8db015cd420144beb4 ]
    
    The rcar_pcie_parse_outbound_ranges() uses the devm_request_mem_region()
    macro to request a needed resource. A string variable that lives on the
    stack is then used to store a dynamically computed resource name, which
    is then passed on as one of the macro arguments. This can lead to
    undefined behavior.
    
    Depending on the current contents of the memory, the manifestations of
    errors may vary. One possible output may be as follows:
    
      $ cat /proc/iomem
      30000000-37ffffff :
      38000000-3fffffff :
    
    Sometimes, garbage may appear after the colon.
    
    In very rare cases, if no NULL-terminator is found in memory, the system
    might crash because the string iterator will overrun which can lead to
    access of unmapped memory above the stack.
    
    Thus, fix this by replacing outbound_name with the name of the previously
    requested resource. With the changes applied, the output will be as
    follows:
    
      $ cat /proc/iomem
      30000000-37ffffff : memory2
      38000000-3fffffff : memory3
    
    Fixes: 2a6d0d63d999 ("PCI: rcar: Add endpoint mode support")
    Link: https://lore.kernel.org/r/tencent_DBDCC19D60F361119E76919ADAB25EC13C06@qq.com
    Tested-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Signed-off-by: King Dix <kingdix10@qq.com>
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
    Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf bpf: Fix two memory leakages when calling perf_env__insert_bpf_prog_info() [+ + +]
Author: Zhongqiu Han <quic_zhonhan@quicinc.com>
Date:   Thu Dec 5 16:45:00 2024 +0800

    perf bpf: Fix two memory leakages when calling perf_env__insert_bpf_prog_info()
    
    [ Upstream commit 03edb7020bb920f1935c3f30acad0bb27fdb99af ]
    
    If perf_env__insert_bpf_prog_info() returns false due to a duplicate bpf
    prog info node insertion, the temporary info_node and info_linear memory
    will leak. Add a check to ensure the memory is freed if the function
    returns false.
    
    Fixes: d56354dc49091e33 ("perf tools: Save bpf_prog_info and BTF of new BPF programs")
    Reviewed-by: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Zhongqiu Han <quic_zhonhan@quicinc.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@linaro.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <song@kernel.org>
    Cc: Yicong Yang <yangyicong@hisilicon.com>
    Link: https://lore.kernel.org/r/20241205084500.823660-4-quic_zhonhan@quicinc.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf expr: Initialize is_test value in expr__ctx_new() [+ + +]
Author: Levi Yun <yeoreum.yun@arm.com>
Date:   Fri Nov 8 14:34:25 2024 +0000

    perf expr: Initialize is_test value in expr__ctx_new()
    
    [ Upstream commit 1d18ebcfd302a2005b83ae5f13df223894d19902 ]
    
    When expr_parse_ctx is allocated by expr_ctx_new(),
    expr_scanner_ctx->is_test isn't initialize, so it has garbage value.
    this can affects the result of expr__parse() return when it parses
    non-exist event literal according to garbage value.
    
    Use calloc instead of malloc in expr_ctx_new() to fix this.
    
    Fixes: 3340a08354ac286e ("perf pmu-events: Fix testing with JEVENTS_ARCH=all")
    Reviewed-by: Ian Rogers <irogers@google.com>
    Reviewed-by: James Clark <james.clark@linaro.org>
    Signed-off-by: Levi Yun <yeoreum.yun@arm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20241108143424.819126-1-yeoreum.yun@arm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf header: Fix one memory leakage in process_bpf_btf() [+ + +]
Author: Zhongqiu Han <quic_zhonhan@quicinc.com>
Date:   Thu Dec 5 16:44:58 2024 +0800

    perf header: Fix one memory leakage in process_bpf_btf()
    
    [ Upstream commit 875d22980a062521beed7b5df71fb13a1af15d83 ]
    
    If __perf_env__insert_btf() returns false due to a duplicate btf node
    insertion, the temporary node will leak. Add a check to ensure the memory
    is freed if the function returns false.
    
    Fixes: a70a1123174ab592 ("perf bpf: Save BTF information as headers to perf.data")
    Reviewed-by: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Zhongqiu Han <quic_zhonhan@quicinc.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@linaro.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <song@kernel.org>
    Cc: Yicong Yang <yangyicong@hisilicon.com>
    Link: https://lore.kernel.org/r/20241205084500.823660-2-quic_zhonhan@quicinc.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

perf header: Fix one memory leakage in process_bpf_prog_info() [+ + +]
Author: Zhongqiu Han <quic_zhonhan@quicinc.com>
Date:   Thu Dec 5 16:44:59 2024 +0800

    perf header: Fix one memory leakage in process_bpf_prog_info()
    
    [ Upstream commit a7da6c7030e1aec32f0a41c7b4fa70ec96042019 ]
    
    Function __perf_env__insert_bpf_prog_info() will return without inserting
    bpf prog info node into perf env again due to a duplicate bpf prog info
    node insertion, causing the temporary info_linear and info_node memory to
    leak. Modify the return type of this function to bool and add a check to
    ensure the memory is freed if the function returns false.
    
    Fixes: 606f972b1361f477 ("perf bpf: Save bpf_prog_info information as headers to perf.data")
    Reviewed-by: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Zhongqiu Han <quic_zhonhan@quicinc.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@linaro.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <song@kernel.org>
    Cc: Yicong Yang <yangyicong@hisilicon.com>
    Link: https://lore.kernel.org/r/20241205084500.823660-3-quic_zhonhan@quicinc.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf inject: Fix use without initialization of local variables [+ + +]
Author: Ian Rogers <irogers@google.com>
Date:   Tue Dec 10 22:08:31 2024 -0800

    perf inject: Fix use without initialization of local variables
    
    [ Upstream commit 8e246a1b2a75e187c7d22c9aec4299057f87d19e ]
    
    Local variables were missing initialization and command line
    processing didn't provide default values.
    
    Fixes: 64eed019f3fce124 ("perf inject: Lazy build-id mmap2 event insertion")
    Reviewed-by: James Clark <james.clark@linaro.org>
    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20241211060831.806539-1-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf lock: Fix parse_lock_type which only retrieve one lock flag [+ + +]
Author: Chun-Tse Shao <ctshao@google.com>
Date:   Thu Jan 16 15:58:14 2025 -0800

    perf lock: Fix parse_lock_type which only retrieve one lock flag
    
    [ Upstream commit 1be9264158ef4818393e5d8144887a1a5d3cc480 ]
    
    `parse_lock_type` can only add the first lock flag in `lock_type_table`
    given input `str`. For example, for `Y rwlock`, it only adds `rwlock:R`
    into this perf session. Another example is for `-Y mutex`, it only adds
    the mutex without `LCB_F_SPIN` flag. The patch fixes this issue, makes
    sure both `rwlock:R` and `rwlock:W` will be added with `-Y rwlock`, and
    so on.
    
    Testing:
      $ ./perf lock con -ab -Y mutex,rwlock -- perf bench sched pipe
      # Running 'sched/pipe' benchmark:
      # Executed 1000000 pipe operations between two processes
    
           Total time: 9.313 [sec]
    
             9.313976 usecs/op
               107365 ops/sec
       contended   total wait     max wait     avg wait         type   caller
    
             176      1.65 ms     19.43 us      9.38 us        mutex   pipe_read+0x57
              34    180.14 us     10.93 us      5.30 us        mutex   pipe_write+0x50
               7     77.48 us     16.09 us     11.07 us        mutex   do_epoll_wait+0x24d
               7     74.70 us     13.50 us     10.67 us        mutex   do_epoll_wait+0x24d
               3     35.97 us     14.44 us     11.99 us     rwlock:W   ep_done_scan+0x2d
               3     35.00 us     12.23 us     11.66 us     rwlock:W   do_epoll_wait+0x255
               2     15.88 us     11.96 us      7.94 us     rwlock:W   do_epoll_wait+0x47c
               1     15.23 us     15.23 us     15.23 us     rwlock:W   do_epoll_wait+0x4d0
               1     14.26 us     14.26 us     14.26 us     rwlock:W   ep_done_scan+0x2d
               2     14.00 us      7.99 us      7.00 us        mutex   pipe_read+0x282
               1     12.29 us     12.29 us     12.29 us     rwlock:R   ep_poll_callback+0x35
               1     12.02 us     12.02 us     12.02 us     rwlock:W   do_epoll_ctl+0xb65
               1     10.25 us     10.25 us     10.25 us     rwlock:R   ep_poll_callback+0x35
               1      7.86 us      7.86 us      7.86 us        mutex   do_epoll_ctl+0x6c1
               1      5.04 us      5.04 us      5.04 us        mutex   do_epoll_ctl+0x3d4
    
    [namhyung: Add a comment and rename to 'mutex:spin' for consistency
    
    Fixes: d783ea8f62c4 ("perf lock contention: Simplify parse_lock_type()")
    Reviewed-by: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Chun-Tse Shao <ctshao@google.com>
    Cc: nick.forrington@arm.com
    Link: https://lore.kernel.org/r/20250116235838.2769691-1-ctshao@google.com
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf machine: Don't ignore _etext when not a text symbol [+ + +]
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Wed Jan 8 10:15:24 2025 +0100

    perf machine: Don't ignore _etext when not a text symbol
    
    [ Upstream commit 7a93786c306296f15e728b1dbd949a319e4e3d19 ]
    
    Depending on how vmlinux.lds is written, _etext might be the very first
    data symbol instead of the very last text symbol.
    
    Don't require it to be a text symbol, accept any symbol type.
    
    Comitter notes:
    
    See the first Link for further discussion, but it all boils down to
    this:
    
     ---
      # grep -e _stext -e _etext -e _edata /proc/kallsyms
      c0000000 T _stext
      c08b8000 D _etext
    
      So there is no _edata and _etext is not text
    
      $ ppc-linux-objdump -x vmlinux | grep -e _stext -e _etext -e _edata
      c0000000 g       .head.text   00000000 _stext
      c08b8000 g       .rodata      00000000 _etext
      c1378000 g       .sbss        00000000 _edata
     ---
    
    Fixes: ed9adb2035b5be58 ("perf machine: Read also the end of the kernel")
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <songliubraving@fb.com>
    Link: https://lore.kernel.org/r/b3ee1994d95257cb7f2de037c5030ba7d1bed404.1736327613.git.christophe.leroy@csgroup.eu
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf MANIFEST: Add arch/*/include/uapi/asm/bpf_perf_event.h to the perf tarball [+ + +]
Author: Arnaldo Carvalho de Melo <acme@kernel.org>
Date:   Tue Nov 26 17:43:18 2024 -0300

    perf MANIFEST: Add arch/*/include/uapi/asm/bpf_perf_event.h to the perf tarball
    
    [ Upstream commit 74c033b6aa650ea7280221a9e57b7318a120978c ]
    
    Needed to build tools/lib/bpf/ on various arches other than x86_64,
    notably arm64 when using the perf tarballs generated by:
    
      $ make help | grep perf-
        perf-tar-src-pkg    - Build the perf source tarball with no compression
        perf-targz-src-pkg  - Build the perf source tarball with gzip compression
        perf-tarbz2-src-pkg - Build the perf source tarball with bz2 compression
        perf-tarxz-src-pkg  - Build the perf source tarball with xz compression
        perf-tarzst-src-pkg - Build the perf source tarball with zst compression
      $
    
    Building with BPF support was opt-in in perf for a long time, and
    testing it via the tarball main kernel Makefile targets in an
    architecture other than x86_64 was an odd case.
    
    I had noticed this at some point earlier this year while cross building
    perf to some arches, including arm64, but it fell thru the cracks, see
    the Link tag below.
    
    Fix it now by adding those arch/*/include/uapi/asm/bpf_perf_event.h
    files to the MANIFEST file used in building the perf source tarball.
    
    Tested with:
    
      perfbuilder@number:~$ time dm debian:experimental-x-arm64
         1    21.60 debian:experimental-x-arm64   : Ok   aarch64-linux-gnu-gcc (Debian 14.1.0-5) 14.1.0  flex 2.6.4
      BUILD_TARBALL_HEAD=d31a974f6edc576f84c35be9526fec549a3b3520
      $
      $ git log --oneline -1 d31a974f6edc576f84c35be9526fec549a3b3520
      d31a974f6edc576f (HEAD -> perf-tools-next) perf MANIFEST: Add arch/*/include/uapi/asm/bpf_perf_event.h to the perf tarball
      $
    
    That was previously failing:
    
      perfbuilder@number:~$ grep debian:experimental-x-arm64 dm.log.old/summary
      19     4.80 debian:experimental-x-arm64   : FAIL gcc version 14.1.0 (Debian 14.1.0-5)
      $
      perfbuilder@number:~$ grep -B6 'Error 1' dm.log.old/debian:experimental-x-arm64
      In file included from /git/perf-6.12.0-rc6/tools/include/uapi/linux/bpf_perf_event.h:11,
                       from libbpf.c:36:
      /git/perf-6.12.0-rc6/tools/include/uapi/asm/bpf_perf_event.h:2:10: fatal error: ../../arch/arm64/include/uapi/asm/bpf_perf_event.h: No such file or directory
          2 | #include "../../arch/arm64/include/uapi/asm/bpf_perf_event.h"
            |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      compilation terminated.
      make[4]: *** [/git/perf-6.12.0-rc6/tools/build/Makefile.build:105: /tmp/build/perf/libbpf/staticobjs/libbpf.o] Error 1
      perfbuilder@number:~$
    
    Closes: https://lore.kernel.org/all/Z0UNRCRYKunbDYxP@hyperscale.parallels
    Fixes: 9eea8fafe33eb708 ("libbpf: fix __arg_ctx type enforcement for perf_event programs")
    Reported-by: Michel Lind <michel@michel-slm.name>
    Tested-by: Michel Lind <michel@michel-slm.name>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Andrii Nakryiko <andrii@kernel.org>
    Cc: Ian Rogers <irogers@google.com>
    Cc: James Clark <james.clark@linaro.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: 317c11923cf676437456e44a7f408d4ce589a9c0.camel@michel-slm.name
    Link: https://lore.kernel.org/bpf/ZfyEgoG3JFiOs2Fs@x1/
    Link: https://lore.kernel.org/r/Z0Yy5u42Q1hWoEzz@x1
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf maps: Fix display of kernel symbols [+ + +]
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Wed Jan 8 10:54:20 2025 +0100

    perf maps: Fix display of kernel symbols
    
    [ Upstream commit dae29277fddaaf6670d17dfcbb916a2ca29c912f ]
    
    Since commit 659ad3492b913c90 ("perf maps: Switch from rbtree to lazily
    sorted array for addresses"), perf doesn't display anymore kernel
    symbols on powerpc, allthough it still detects them as kernel addresses.
    
            # Overhead  Command     Shared Object  Symbol
            # ........  ..........  ............. ......................................
            #
                80.49%  Coeur main  [unknown]      [k] 0xc005f0f8
                 3.91%  Coeur main  gau            [.] engine_loop.constprop.0.isra.0
                 1.72%  Coeur main  [unknown]      [k] 0xc005f11c
                 1.09%  Coeur main  [unknown]      [k] 0xc01f82c8
                 0.44%  Coeur main  libc.so.6      [.] epoll_wait
                 0.38%  Coeur main  [unknown]      [k] 0xc0011718
                 0.36%  Coeur main  [unknown]      [k] 0xc01f45c0
    
    This is because function maps__find_next_entry() now returns current
    entry instead of next entry, leading to kernel map end address getting
    mis-configured with its own start address instead of the start address
    of the following map.
    
    Fix it by really taking the next entry, also make sure that entry
    follows current one by making sure entries are sorted.
    
    Fixes: 659ad3492b913c90 ("perf maps: Switch from rbtree to lazily sorted array for addresses")
    Reviewed-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Reviewed-by: Ian Rogers <irogers@google.com>
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/r/2ea4501209d5363bac71a6757fe91c0747558a42.1736329923.git.christophe.leroy@csgroup.eu
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf namespaces: Fixup the nsinfo__in_pidns() return type, its bool [+ + +]
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Fri Dec 6 17:48:28 2024 -0300

    perf namespaces: Fixup the nsinfo__in_pidns() return type, its bool
    
    [ Upstream commit 64a7617efd5ae1d57a75e464d7134eec947c3fe3 ]
    
    When adding support for refconunt checking a cut'n'paste made this
    function, that is just an accessor to a bool member of 'struct nsinfo',
    return a pid_t, when that member is a boolean, fix it.
    
    Fixes: bcaf0a97858de7ab ("perf namespaces: Add functions to access nsinfo")
    Reported-by: Francesco Nigro <fnigro@redhat.com>
    Reported-by: Ilan Green <igreen@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Clark Williams <williams@redhat.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: James Clark <james.clark@linaro.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Yonatan Goldschmidt <yonatan.goldschmidt@granulate.io>
    Link: https://lore.kernel.org/r/20241206204828.507527-6-acme@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

perf namespaces: Introduce nsinfo__set_in_pidns() [+ + +]
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Fri Dec 6 17:48:26 2024 -0300

    perf namespaces: Introduce nsinfo__set_in_pidns()
    
    [ Upstream commit 9c6a585d257f6845731f4e36b45fe42b5c3162f5 ]
    
    When we're processing a perf.data file we will, for every thread in that
    file do a machine__findnew_thread(machine, pid, tid) that when that pid
    is seen for the first time will create a 'struct thread' representing
    it.
    
    That in turn will call nsinfo__new() -> nsinfo__init() and there it will
    assume we're running live, which is wrong and will need to be addressed
    in a followup patch.
    
    The nsinfo__new() assumes that if we can't access that thread it has
    already finished and will ignore the -1 return from nsinfo__init(), just
    taking notes to avoid trying to enter in that namespace, since it isn't
    there anymore, a race.
    
    When doing this from 'perf inject', tho, we can fill in parts of that
    nsinfo from what we get from the PERF_RECORD_MMAP2 (pid, tid) and in the
    jitdump file name, that has the form of jit-<PID>.dump.
    
    So if the pid in the jitdump file name is not the one in the
    PERF_RECORD_MMAP2, we can assume that its the pid of the process
    _inside_ the namespace, and that perf was runing outside that namespace.
    
    This will be done in the following patch.
    
    Reported-by: Francesco Nigro <fnigro@redhat.com>
    Reported-by: Ilan Green <igreen@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Clark Williams <williams@redhat.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: James Clark <james.clark@linaro.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Yonatan Goldschmidt <yonatan.goldschmidt@granulate.io>
    Link: https://lore.kernel.org/r/20241206204828.507527-4-acme@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Stable-dep-of: 64a7617efd5a ("perf namespaces: Fixup the nsinfo__in_pidns() return type, its bool")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf report: Fix misleading help message about --demangle [+ + +]
Author: Jiachen Zhang <me@jcix.top>
Date:   Thu Jan 9 23:22:19 2025 +0800

    perf report: Fix misleading help message about --demangle
    
    [ Upstream commit ac0ac75189a4d6a29a2765a7adbb62bc6cc650c7 ]
    
    The wrong help message may mislead users. This commit fixes it.
    
    Fixes: 328ccdace8855289 ("perf report: Add --no-demangle option")
    Reviewed-by: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Jiachen Zhang <me@jcix.top>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung.kim@lge.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20250109152220.1869581-1-me@jcix.top
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf test: Skip syscall enum test if no landlock syscall [+ + +]
Author: Namhyung Kim <namhyung@kernel.org>
Date:   Tue Jan 28 09:06:29 2025 -0800

    perf test: Skip syscall enum test if no landlock syscall
    
    [ Upstream commit 72d81e10628be6a948463259cbb6d3b670b20054 ]
    
    The perf trace enum augmentation test specifically targets landlock_
    add_rule syscall but IIUC it's an optional and can be opt-out by a
    kernel config.
    
    Currently trace_landlock() runs `perf test -w landlock` before the
    actual testing to check the availability but it's not enough since the
    workload always returns 0.  Instead it could check if perf trace output
    has 'landlock' string.
    
    Fixes: d66763fed30f0bd8c ("perf test trace_btf_enum: Add regression test for the BTF augmentation of enums in 'perf trace'")
    Reviewed-by: Howard Chu <howardchu95@gmail.com>
    Link: https://lore.kernel.org/r/20250128170629.1251574-1-namhyung@kernel.org
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf top: Don't complain about lack of vmlinux when not resolving some kernel samples [+ + +]
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Thu Jan 2 16:50:39 2025 -0300

    perf top: Don't complain about lack of vmlinux when not resolving some kernel samples
    
    [ Upstream commit 058b38ccd2af9e5c95590b018e8425fa148d7aca ]
    
    Recently we got a case where a kernel sample wasn't being resolved due
    to a bug that was not setting the end address on kernel functions
    implemented in assembly (see Link: tag), and then those were not being
    found by machine__resolve() -> map__find_symbol().
    
    So we ended up with:
    
      # perf top --stdio
      PerfTop: 0 irqs/s  kernel: 0%  exact: 0% lost: 0/0 drop: 0/0 [cycles/P]
      -----------------------------------------------------------------------
    
      Warning:
      A vmlinux file was not found.
      Kernel samples will not be resolved.
      ^Z
      [1]+  Stopped                 perf top --stdio
      #
    
    But then resolving all other kernel symbols.
    
    So just fixup the logic to only print that warning when there are no
    symbols in the kernel map.
    
    Fixes: d88205db9caa0e9d ("perf dso: Add dso__has_symbols() method")
    Reviewed-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
    Cc: James Clark <james.clark@linaro.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Link: https://lore.kernel.org/lkml/Z3buKhcCsZi3_aGb@x1
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf trace: Fix BPF loading failure (-E2BIG) [+ + +]
Author: Howard Chu <howardchu95@gmail.com>
Date:   Thu Dec 12 18:30:47 2024 -0800

    perf trace: Fix BPF loading failure (-E2BIG)
    
    [ Upstream commit 013eb043f37bd87c4d60d51034401a5a6d105bcf ]
    
    As reported by Namhyung Kim and acknowledged by Qiao Zhao (link:
    https://lore.kernel.org/linux-perf-users/20241206001436.1947528-1-namhyung@kernel.org/),
    on certain machines, perf trace failed to load the BPF program into the
    kernel. The verifier runs perf trace's BPF program for up to 1 million
    instructions, returning an E2BIG error, whereas the perf trace BPF
    program should be much less complex than that. This patch aims to fix
    the issue described above.
    
    The E2BIG problem from clang-15 to clang-16 is cause by this line:
     } else if (size < 0 && size >= -6) { /* buffer */
    
    Specifically this check: size < 0. seems like clang generates a cool
    optimization to this sign check that breaks things.
    
    Making 'size' s64, and use
     } else if ((int)size < 0 && size >= -6) { /* buffer */
    
    Solves the problem. This is some Hogwarts magic.
    
    And the unbounded access of clang-12 and clang-14 (clang-13 works this
    time) is fixed by making variable 'aug_size' s64.
    
    As for this:
    -if (aug_size > TRACE_AUG_MAX_BUF)
    -       aug_size = TRACE_AUG_MAX_BUF;
    +aug_size = args->args[index] > TRACE_AUG_MAX_BUF ? TRACE_AUG_MAX_BUF : args->args[index];
    
    This makes the BPF skel generated by clang-18 work. Yes, new clangs
    introduce problems too.
    
    Sorry, I only know that it works, but I don't know how it works. I'm not
    an expert in the BPF verifier. I really hope this is not a kernel
    version issue, as that would make the test case (kernel_nr) *
    (clang_nr), a true horror story. I will test it on more kernel versions
    in the future.
    
    Fixes: 395d38419f18: ("perf trace augmented_raw_syscalls: Add more check s to pass the verifier")
    Reported-by: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Howard Chu <howardchu95@gmail.com>
    Tested-by: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20241213023047.541218-1-howardchu95@gmail.com
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

perf trace: Fix runtime error of index out of bounds [+ + +]
Author: Howard Chu <howardchu95@gmail.com>
Date:   Tue Jan 21 18:55:19 2025 -0800

    perf trace: Fix runtime error of index out of bounds
    
    [ Upstream commit c7b87ce0dd10b64b68a0b22cb83bbd556e28fe81 ]
    
    libtraceevent parses and returns an array of argument fields, sometimes
    larger than RAW_SYSCALL_ARGS_NUM (6) because it includes "__syscall_nr",
    idx will traverse to index 6 (7th element) whereas sc->fmt->arg holds 6
    elements max, creating an out-of-bounds access. This runtime error is
    found by UBsan. The error message:
    
      $ sudo UBSAN_OPTIONS=print_stacktrace=1 ./perf trace -a --max-events=1
      builtin-trace.c:1966:35: runtime error: index 6 out of bounds for type 'syscall_arg_fmt [6]'
        #0 0x5c04956be5fe in syscall__alloc_arg_fmts /home/howard/hw/linux-perf/tools/perf/builtin-trace.c:1966
        #1 0x5c04956c0510 in trace__read_syscall_info /home/howard/hw/linux-perf/tools/perf/builtin-trace.c:2110
        #2 0x5c04956c372b in trace__syscall_info /home/howard/hw/linux-perf/tools/perf/builtin-trace.c:2436
        #3 0x5c04956d2f39 in trace__init_syscalls_bpf_prog_array_maps /home/howard/hw/linux-perf/tools/perf/builtin-trace.c:3897
        #4 0x5c04956d6d25 in trace__run /home/howard/hw/linux-perf/tools/perf/builtin-trace.c:4335
        #5 0x5c04956e112e in cmd_trace /home/howard/hw/linux-perf/tools/perf/builtin-trace.c:5502
        #6 0x5c04956eda7d in run_builtin /home/howard/hw/linux-perf/tools/perf/perf.c:351
        #7 0x5c04956ee0a8 in handle_internal_command /home/howard/hw/linux-perf/tools/perf/perf.c:404
        #8 0x5c04956ee37f in run_argv /home/howard/hw/linux-perf/tools/perf/perf.c:448
        #9 0x5c04956ee8e9 in main /home/howard/hw/linux-perf/tools/perf/perf.c:556
        #10 0x79eb3622a3b7 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
        #11 0x79eb3622a47a in __libc_start_main_impl ../csu/libc-start.c:360
        #12 0x5c04955422d4 in _start (/home/howard/hw/linux-perf/tools/perf/perf+0x4e02d4) (BuildId: 5b6cab2d59e96a4341741765ad6914a4d784dbc6)
    
         0.000 ( 0.014 ms): Chrome_ChildIO/117244 write(fd: 238, buf: !, count: 1)                                      = 1
    
    Fixes: 5e58fcfaf4c6 ("perf trace: Allow allocating sc->arg_fmt even without the syscall tracepoint")
    Signed-off-by: Howard Chu <howardchu95@gmail.com>
    Link: https://lore.kernel.org/r/20250122025519.361873-1-howardchu95@gmail.com
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf/core: Save raw sample data conditionally based on sample type [+ + +]
Author: Yabin Cui <yabinc@google.com>
Date:   Wed May 15 12:36:07 2024 -0700

    perf/core: Save raw sample data conditionally based on sample type
    
    [ Upstream commit b9c44b91476b67327a521568a854babecc4070ab ]
    
    Currently, space for raw sample data is always allocated within sample
    records for both BPF output and tracepoint events. This leads to unused
    space in sample records when raw sample data is not requested.
    
    This patch enforces checking sample type of an event in
    perf_sample_save_raw_data(). So raw sample data will only be saved if
    explicitly requested, reducing overhead when it is not needed.
    
    Fixes: 0a9081cf0a11 ("perf/core: Add perf_sample_save_raw_data() helper")
    Signed-off-by: Yabin Cui <yabinc@google.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Reviewed-by: Ian Rogers <irogers@google.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20240515193610.2350456-2-yabinc@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pinctrl: amd: Take suspend type into consideration which pins are non-wake [+ + +]
Author: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Date:   Mon Jan 6 18:41:15 2025 +0100

    pinctrl: amd: Take suspend type into consideration which pins are non-wake
    
    [ Upstream commit f31f33dbb3bab572bad9fe7b849ab0dcbe6fd279 ]
    
    Some laptops have pins which are a wake source for S0i3/S3 but which
    aren't a wake source for S4/S5 and which cause issues when left unmasked
    during hibernation (S4).
    
    For example HP EliteBook 855 G7 has pin #24 that causes instant wakeup
    (hibernation failure) if left unmasked (it is a wake source only for
    S0i3/S3).
    GPIO pin #24 on this platform is likely dedicated to WWAN XMM7360
    modem since this pin triggers wake notify to WWAN modem's parent PCIe
    port.
    
    Fix this by considering a pin a wake source only if it is marked as one
    for the current suspend type (S0i3/S3 vs S4/S5).
    
    Since Z-wake pins only make sense at runtime these were excluded from
    both of suspend categories, so pins with only the Z-wake flag set are
    effectively treated as non-wake pins.
    
    Fixes: 2fff0b5e1a6b ("pinctrl: amd: Mask non-wake source pins with interrupt enabled at suspend")
    Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://lore.kernel.org/d4b2d076366fdd08a0c1cd9b7ecd91dc95e07269.1736184752.git.mail@maciej.szmigiero.name
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pinctrl: nomadik: Add check for clk_enable() [+ + +]
Author: Mingwei Zheng <zmw12306@gmail.com>
Date:   Fri Dec 6 17:16:18 2024 -0500

    pinctrl: nomadik: Add check for clk_enable()
    
    [ Upstream commit 5c4bfbb21dedf5d56a55cb0e129ccb1fd5083d14 ]
    
    Add check for the return value of clk_enable() to catch the potential
    error.
    Disable success clks in the error handling.
    Change return type of nmk_gpio_glitch_slpm_init casade.
    
    Fixes: 3a19805920f1 ("pinctrl: nomadik: move all Nomadik drivers to subdir")
    Signed-off-by: Mingwei Zheng <zmw12306@gmail.com>
    Signed-off-by: Jiasheng Jiang <jiashengjiangcool@gmail.com>
    Link: https://lore.kernel.org/20241206221618.3453159-1-zmw12306@gmail.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pinctrl: samsung: Fix irq handling if an error occurs in exynos_irq_demux_eint16_31() [+ + +]
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sun Nov 17 13:03:32 2024 +0100

    pinctrl: samsung: Fix irq handling if an error occurs in exynos_irq_demux_eint16_31()
    
    [ Upstream commit f686a2b52e9d78cf401f1b7f446bf0c3a81ebcc0 ]
    
    chained_irq_enter(() should be paired with a corresponding
    chained_irq_exit().
    
    Here, if clk_enable() fails, a early return occurs and chained_irq_exit()
    is not called.
    
    Add a new label and a goto for fix it.
    
    Fixes: f9c744747973 ("pinctrl: samsung: support a bus clock")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Reviewed-by: André Draszik <andre.draszik@linaro.org>
    Link: https://lore.kernel.org/r/f148d823acfb3326a115bd49a0eed60f2345f909.1731844995.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pinctrl: stm32: Add check for clk_enable() [+ + +]
Author: Mingwei Zheng <zmw12306@gmail.com>
Date:   Mon Jan 6 17:06:59 2025 -0500

    pinctrl: stm32: Add check for clk_enable()
    
    [ Upstream commit 451bc9aea9a1a6fe53969e81a5cb1bd785c0d989 ]
    
    Convert the driver to clk_bulk*() API.
    Add check for the return value of clk_bulk_enable() to catch
    the potential error.
    
    Fixes: 05d8af449d93 ("pinctrl: stm32: Keep pinctrl block clock enabled when LEVEL IRQ requested")
    Signed-off-by: Mingwei Zheng <zmw12306@gmail.com>
    Signed-off-by: Jiasheng Jiang <jiashengjiangcool@gmail.com>
    Reviewed-by: Antonio Borneo <antonio.borneo@foss.st.com>
    Link: https://lore.kernel.org/20250106220659.2640365-1-zmw12306@gmail.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/mellanox: mlxbf-pmc: incorrect type in assignment [+ + +]
Author: Pei Xiao <xiaopei01@kylinos.cn>
Date:   Wed Nov 20 15:51:39 2024 +0800

    platform/mellanox: mlxbf-pmc: incorrect type in assignment
    
    [ Upstream commit b5dbb8e23cb334460acdb37910ce3784926e1cf1 ]
    
    Fix sparse warnings:
    expected 'void __iomem *addr', but got 'void *addr'
    
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202411121935.cgFcEMO4-lkp@intel.com/
    Fixes: 423c3361855c ("platform/mellanox: mlxbf-pmc: Add support for BlueField-3")
    Signed-off-by: Pei Xiao <xiaopei01@kylinos.cn>
    Reviewed-by: David Thompson <davthompson@nvidia.com>
    Link: https://lore.kernel.org/r/fece26ad40620b1e0beb733b9bba3de3ce325761.1732088929.git.xiaopei01@kylinos.cn
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/x86: x86-android-tablets: make platform data be static [+ + +]
Author: Pei Xiao <xiaopei01@kylinos.cn>
Date:   Thu Nov 21 11:55:34 2024 +0800

    platform/x86: x86-android-tablets: make platform data be static
    
    [ Upstream commit 6e0fb1bdb71cf8078c8532617e565e3db22c0d3c ]
    
    make lenovo_yoga_tab2_1380_bq24190_pdata and lenovo_yoga_tab2_1380_modules
    to be static
    
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202410160432.oJAPbrW9-lkp@intel.com/
    Fixes: 3eee73ad42c3 ("platform/x86: x86-android-tablets: Add Lenovo Yoga Tablet 2 Pro 1380F/L data")
    Signed-off-by: Pei Xiao <xiaopei01@kylinos.cn>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/daafd1371e7e9946217712ce8720e29cd5c52f7a.1732161310.git.xiaopei01@kylinos.cn
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PM: hibernate: Add error handling for syscore_suspend() [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
Date:   Sun Jan 19 22:32:05 2025 +0800

    PM: hibernate: Add error handling for syscore_suspend()
    
    [ Upstream commit e20a70c572539a486dbd91b225fa6a194a5e2122 ]
    
    In hibernation_platform_enter(), the code did not check the
    return value of syscore_suspend(), potentially leading to a
    situation where syscore_resume() would be called even if
    syscore_suspend() failed. This could cause unpredictable
    behavior or system instability.
    
    Modify the code sequence in question to properly handle errors returned
    by syscore_suspend(). If an error occurs in the suspend path, the code
    now jumps to label 'Enable_irqs' skipping the syscore_resume() call and
    only enabling interrupts after setting the system state to SYSTEM_RUNNING.
    
    Fixes: 40dc166cb5dd ("PM / Core: Introduce struct syscore_ops for core subsystems PM")
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Link: https://patch.msgid.link/20250119143205.2103-1-vulab@iscas.ac.cn
    [ rjw: Changelog edits ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/book3s64/hugetlb: Fix disabling hugetlb when fadump is active [+ + +]
Author: Sourabh Jain <sourabhjain@linux.ibm.com>
Date:   Tue Dec 17 13:16:40 2024 +0530

    powerpc/book3s64/hugetlb: Fix disabling hugetlb when fadump is active
    
    [ Upstream commit d629d7a8efc33d05d62f4805c0ffb44727e3d99f ]
    
    Commit 8597538712eb ("powerpc/fadump: Do not use hugepages when fadump
    is active") disabled hugetlb support when fadump is active by returning
    early from hugetlbpage_init():arch/powerpc/mm/hugetlbpage.c and not
    populating hpage_shift/HPAGE_SHIFT.
    
    Later, commit 2354ad252b66 ("powerpc/mm: Update default hugetlb size
    early") moved the allocation of hpage_shift/HPAGE_SHIFT to early boot,
    which inadvertently re-enabled hugetlb support when fadump is active.
    
    Fix this by implementing hugepages_supported() on powerpc. This ensures
    that disabling hugetlb for the fadump kernel is independent of
    hpage_shift/HPAGE_SHIFT.
    
    Fixes: 2354ad252b66 ("powerpc/mm: Update default hugetlb size early")
    Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
    Signed-off-by: Sourabh Jain <sourabhjain@linux.ibm.com>
    Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
    Link: https://patch.msgid.link/20241217074640.1064510-1-sourabhjain@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/pseries/iommu: Don't unset window if it was never set [+ + +]
Author: Shivaprasad G Bhat <sbhat@linux.ibm.com>
Date:   Mon Jan 13 03:48:55 2025 +0000

    powerpc/pseries/iommu: Don't unset window if it was never set
    
    commit 17391cb2613b82f8c405570fea605af3255ff8d2 upstream.
    
    On pSeries, when user attempts to use the same vfio container used by
    different iommu group, the spapr_tce_set_window() returns -EPERM
    and the subsequent cleanup leads to the below crash.
    
       Kernel attempted to read user page (308) - exploit attempt?
       BUG: Kernel NULL pointer dereference on read at 0x00000308
       Faulting instruction address: 0xc0000000001ce358
       Oops: Kernel access of bad area, sig: 11 [#1]
       NIP:  c0000000001ce358 LR: c0000000001ce05c CTR: c00000000005add0
       <snip>
       NIP [c0000000001ce358] spapr_tce_unset_window+0x3b8/0x510
       LR [c0000000001ce05c] spapr_tce_unset_window+0xbc/0x510
       Call Trace:
         spapr_tce_unset_window+0xbc/0x510 (unreliable)
         tce_iommu_attach_group+0x24c/0x340 [vfio_iommu_spapr_tce]
         vfio_container_attach_group+0xec/0x240 [vfio]
         vfio_group_fops_unl_ioctl+0x548/0xb00 [vfio]
         sys_ioctl+0x754/0x1580
         system_call_exception+0x13c/0x330
         system_call_vectored_common+0x15c/0x2ec
       <snip>
       --- interrupt: 3000
    
    Fix this by having null check for the tbl passed to the
    spapr_tce_unset_window().
    
    Fixes: f431a8cde7f1 ("powerpc/iommu: Reimplement the iommu_table_group_ops for pSeries")
    Cc: stable@vger.kernel.org
    Reported-by: Vaishnavi Bhat <vaish123@in.ibm.com>
    Signed-off-by: Shivaprasad G Bhat <sbhat@linux.ibm.com>
    Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
    Link: https://patch.msgid.link/173674009556.1559.12487885286848752833.stgit@linux.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

powerpc/pseries/iommu: IOMMU incorrectly marks MMIO range in DDW [+ + +]
Author: Gaurav Batra <gbatra@linux.ibm.com>
Date:   Fri Dec 6 15:00:39 2024 -0600

    powerpc/pseries/iommu: IOMMU incorrectly marks MMIO range in DDW
    
    [ Upstream commit 8f70caad82e9c088ed93b4fea48d941ab6441886 ]
    
    Power Hypervisor can possibily allocate MMIO window intersecting with
    Dynamic DMA Window (DDW) range, which is over 32-bit addressing.
    
    These MMIO pages needs to be marked as reserved so that IOMMU doesn't map
    DMA buffers in this range.
    
    The current code is not marking these pages correctly which is resulting
    in LPAR to OOPS while booting. The stack is at below
    
    BUG: Unable to handle kernel data access on read at 0xc00800005cd40000
    Faulting instruction address: 0xc00000000005cdac
    Oops: Kernel access of bad area, sig: 11 [#1]
    LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
    Modules linked in: af_packet rfkill ibmveth(X) lpfc(+) nvmet_fc nvmet nvme_keyring crct10dif_vpmsum nvme_fc nvme_fabrics nvme_core be2net(+) nvme_auth rtc_generic nfsd auth_rpcgss nfs_acl lockd grace sunrpc fuse configfs ip_tables x_tables xfs libcrc32c dm_service_time ibmvfc(X) scsi_transport_fc vmx_crypto gf128mul crc32c_vpmsum dm_mirror dm_region_hash dm_log dm_multipath dm_mod sd_mod scsi_dh_emc scsi_dh_rdac scsi_dh_alua t10_pi crc64_rocksoft_generic crc64_rocksoft sg crc64 scsi_mod
    Supported: Yes, External
    CPU: 8 PID: 241 Comm: kworker/8:1 Kdump: loaded Not tainted 6.4.0-150600.23.14-default #1 SLE15-SP6 b44ee71c81261b9e4bab5e0cde1f2ed891d5359b
    Hardware name: IBM,9080-M9S POWER9 (raw) 0x4e2103 0xf000005 of:IBM,FW950.B0 (VH950_149) hv:phyp pSeries
    Workqueue: events work_for_cpu_fn
    NIP:  c00000000005cdac LR: c00000000005e830 CTR: 0000000000000000
    REGS: c00001400c9ff770 TRAP: 0300   Not tainted  (6.4.0-150600.23.14-default)
    MSR:  800000000280b033 <SF,VEC,VSX,EE,FP,ME,IR,DR,RI,LE>  CR: 24228448  XER: 00000001
    CFAR: c00000000005cdd4 DAR: c00800005cd40000 DSISR: 40000000 IRQMASK: 0
    GPR00: c00000000005e830 c00001400c9ffa10 c000000001987d00 c00001400c4fe800
    GPR04: 0000080000000000 0000000000000001 0000000004000000 0000000000800000
    GPR08: 0000000004000000 0000000000000001 c00800005cd40000 ffffffffffffffff
    GPR12: 0000000084228882 c00000000a4c4f00 0000000000000010 0000080000000000
    GPR16: c00001400c4fe800 0000000004000000 0800000000000000 c00000006088b800
    GPR20: c00001401a7be980 c00001400eff3800 c000000002a2da68 000000000000002b
    GPR24: c0000000026793a8 c000000002679368 000000000000002a c0000000026793c8
    GPR28: 000008007effffff 0000080000000000 0000000000800000 c00001400c4fe800
    NIP [c00000000005cdac] iommu_table_reserve_pages+0xac/0x100
    LR [c00000000005e830] iommu_init_table+0x80/0x1e0
    Call Trace:
    [c00001400c9ffa10] [c00000000005e810] iommu_init_table+0x60/0x1e0 (unreliable)
    [c00001400c9ffa90] [c00000000010356c] iommu_bypass_supported_pSeriesLP+0x9cc/0xe40
    [c00001400c9ffc30] [c00000000005c300] dma_iommu_dma_supported+0xf0/0x230
    [c00001400c9ffcb0] [c00000000024b0c4] dma_supported+0x44/0x90
    [c00001400c9ffcd0] [c00000000024b14c] dma_set_mask+0x3c/0x80
    [c00001400c9ffd00] [c0080000555b715c] be_probe+0xc4/0xb90 [be2net]
    [c00001400c9ffdc0] [c000000000986f3c] local_pci_probe+0x6c/0x110
    [c00001400c9ffe40] [c000000000188f28] work_for_cpu_fn+0x38/0x60
    [c00001400c9ffe70] [c00000000018e454] process_one_work+0x314/0x620
    [c00001400c9fff10] [c00000000018f280] worker_thread+0x2b0/0x620
    [c00001400c9fff90] [c00000000019bb18] kthread+0x148/0x150
    [c00001400c9fffe0] [c00000000000ded8] start_kernel_thread+0x14/0x18
    
    There are 2 issues in the code
    
    1. The index is "int" while the address is "unsigned long". This results in
       negative value when setting the bitmap.
    
    2. The DMA offset is page shifted but the MMIO range is used as-is (64-bit
       address). MMIO address needs to be page shifted as well.
    
    Fixes: 3c33066a2190 ("powerpc/kernel/iommu: Add new iommu_table_in_use() helper")
    
    Signed-off-by: Gaurav Batra <gbatra@linux.ibm.com>
    Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
    Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
    Link: https://patch.msgid.link/20241206210039.93172-1-gbatra@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pps: Fix a use-after-free [+ + +]
Author: Calvin Owens <calvin@wbinvd.org>
Date:   Mon Nov 11 20:13:29 2024 -0800

    pps: Fix a use-after-free
    
    commit c79a39dc8d060b9e64e8b0fa9d245d44befeefbe upstream.
    
    On a board running ntpd and gpsd, I'm seeing a consistent use-after-free
    in sys_exit() from gpsd when rebooting:
    
        pps pps1: removed
        ------------[ cut here ]------------
        kobject: '(null)' (00000000db4bec24): is not initialized, yet kobject_put() is being called.
        WARNING: CPU: 2 PID: 440 at lib/kobject.c:734 kobject_put+0x120/0x150
        CPU: 2 UID: 299 PID: 440 Comm: gpsd Not tainted 6.11.0-rc6-00308-gb31c44928842 #1
        Hardware name: Raspberry Pi 4 Model B Rev 1.1 (DT)
        pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
        pc : kobject_put+0x120/0x150
        lr : kobject_put+0x120/0x150
        sp : ffffffc0803d3ae0
        x29: ffffffc0803d3ae0 x28: ffffff8042dc9738 x27: 0000000000000001
        x26: 0000000000000000 x25: ffffff8042dc9040 x24: ffffff8042dc9440
        x23: ffffff80402a4620 x22: ffffff8042ef4bd0 x21: ffffff80405cb600
        x20: 000000000008001b x19: ffffff8040b3b6e0 x18: 0000000000000000
        x17: 0000000000000000 x16: 0000000000000000 x15: 696e6920746f6e20
        x14: 7369203a29343263 x13: 205d303434542020 x12: 0000000000000000
        x11: 0000000000000000 x10: 0000000000000000 x9 : 0000000000000000
        x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000000000
        x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000
        x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000
        Call trace:
         kobject_put+0x120/0x150
         cdev_put+0x20/0x3c
         __fput+0x2c4/0x2d8
         ____fput+0x1c/0x38
         task_work_run+0x70/0xfc
         do_exit+0x2a0/0x924
         do_group_exit+0x34/0x90
         get_signal+0x7fc/0x8c0
         do_signal+0x128/0x13b4
         do_notify_resume+0xdc/0x160
         el0_svc+0xd4/0xf8
         el0t_64_sync_handler+0x140/0x14c
         el0t_64_sync+0x190/0x194
        ---[ end trace 0000000000000000 ]---
    
    ...followed by more symptoms of corruption, with similar stacks:
    
        refcount_t: underflow; use-after-free.
        kernel BUG at lib/list_debug.c:62!
        Kernel panic - not syncing: Oops - BUG: Fatal exception
    
    This happens because pps_device_destruct() frees the pps_device with the
    embedded cdev immediately after calling cdev_del(), but, as the comment
    above cdev_del() notes, fops for previously opened cdevs are still
    callable even after cdev_del() returns. I think this bug has always
    been there: I can't explain why it suddenly started happening every time
    I reboot this particular board.
    
    In commit d953e0e837e6 ("pps: Fix a use-after free bug when
    unregistering a source."), George Spelvin suggested removing the
    embedded cdev. That seems like the simplest way to fix this, so I've
    implemented his suggestion, using __register_chrdev() with pps_idr
    becoming the source of truth for which minor corresponds to which
    device.
    
    But now that pps_idr defines userspace visibility instead of cdev_add(),
    we need to be sure the pps->dev refcount can't reach zero while
    userspace can still find it again. So, the idr_remove() call moves to
    pps_unregister_cdev(), and pps_idr now holds a reference to pps->dev.
    
        pps_core: source serial1 got cdev (251:1)
        <...>
        pps pps1: removed
        pps_core: unregistering pps1
        pps_core: deallocating pps1
    
    Fixes: d953e0e837e6 ("pps: Fix a use-after free bug when unregistering a source.")
    Cc: stable@vger.kernel.org
    Signed-off-by: Calvin Owens <calvin@wbinvd.org>
    Reviewed-by: Michal Schmidt <mschmidt@redhat.com>
    Link: https://lore.kernel.org/r/a17975fd5ae99385791929e563f72564edbcf28f.1731383727.git.calvin@wbinvd.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
printk: Defer legacy printing when holding printk_cpu_sync [+ + +]
Author: John Ogness <john.ogness@linutronix.de>
Date:   Mon Dec 9 12:23:46 2024 +0106

    printk: Defer legacy printing when holding printk_cpu_sync
    
    [ Upstream commit 0161e2d6950fe66cf6ac1c10d945bae971f33667 ]
    
    The documentation of printk_cpu_sync_get() clearly states
    that the owner must never perform any activities where it waits
    for a CPU. For legacy printing there can be spinning on the
    console_lock and on the port lock. Therefore legacy printing
    must be deferred when holding the printk_cpu_sync.
    
    Note that in the case of emergency states, atomic consoles
    are not prevented from printing when printk is deferred. This
    is appropriate because they do not spin-wait indefinitely for
    other CPUs.
    
    Reported-by: Rik van Riel <riel@surriel.com>
    Closes: https://lore.kernel.org/r/20240715232052.73eb7fb1@imladris.surriel.com
    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Fixes: 55d6af1d6688 ("lib/nmi_backtrace: explicitly serialize banner and regs")
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    Link: https://lore.kernel.org/r/20241209111746.192559-3-john.ogness@linutronix.de
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ps3disk: Do not use dev->bounce_size before it is set [+ + +]
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Jan 3 09:51:25 2025 +0100

    ps3disk: Do not use dev->bounce_size before it is set
    
    [ Upstream commit c2398e6d5f16e15598d3a37e17107fea477e3f91 ]
    
    dev->bounce_size is only initialized after it is used to set the queue
    limits.  Fix this by using BOUNCE_SIZE instead.
    
    Fixes: a7f18b74dbe17162 ("ps3disk: pass queue_limits to blk_mq_alloc_disk")
    Reported-by: Philipp Hortmann <philipp.g.hortmann@gmail.com>
    Closes: https://lore.kernel.org/39256db9-3d73-4e86-a49b-300dfd670212@gmail.com
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/06988f959ea6885b8bd7fb3b9059dd54bc6bbad7.1735894216.git.geert+renesas@glider.be
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
psi: Fix race when task wakes up before psi_sched_switch() adjusts flags [+ + +]
Author: Chengming Zhou <chengming.zhou@linux.dev>
Date:   Fri Dec 27 06:19:41 2024 +0000

    psi: Fix race when task wakes up before psi_sched_switch() adjusts flags
    
    [ Upstream commit 7d9da040575b343085287686fa902a5b2d43c7ca ]
    
    When running hackbench in a cgroup with bandwidth throttling enabled,
    following PSI splat was observed:
    
        psi: inconsistent task state! task=1831:hackbench cpu=8 psi_flags=14 clear=0 set=4
    
    When investigating the series of events leading up to the splat,
    following sequence was observed:
    
        [008] d..2.: sched_switch: ... ==> next_comm=hackbench next_pid=1831 next_prio=120
            ...
        [008] dN.2.: dequeue_entity(task delayed): task=hackbench pid=1831 cfs_rq->throttled=0
        [008] dN.2.: pick_task_fair: check_cfs_rq_runtime() throttled cfs_rq on CPU8
        # CPU8 goes into newidle balance and releases the rq lock
            ...
        # CPU15 on same LLC Domain is trying to wakeup hackbench(pid=1831)
        [015] d..4.: psi_flags_change: psi: task state: task=1831:hackbench cpu=8 psi_flags=14 clear=0 set=4 final=14 # Splat (cfs_rq->throttled=1)
        [015] d..4.: sched_wakeup: comm=hackbench pid=1831 prio=120 target_cpu=008 # Task has woken on a throttled hierarchy
        [008] d..2.: sched_switch: prev_comm=hackbench prev_pid=1831 prev_prio=120 prev_state=S ==> ...
    
    psi_dequeue() relies on psi_sched_switch() to set the correct PSI flags
    for the blocked entity, however, with the introduction of DELAY_DEQUEUE,
    the block task can wakeup when newidle balance drops the runqueue lock
    during __schedule().
    
    If a task wakes before psi_sched_switch() adjusts the PSI flags, skip
    any modifications in psi_enqueue() which would still see the flags of a
    running task and not a blocked one. Instead, rely on psi_sched_switch()
    to do the right thing.
    
    Since the status returned by try_to_block_task() may no longer be true
    by the time schedule reaches psi_sched_switch(), check if the task is
    blocked or not using a combination of task_on_rq_queued() and
    p->se.sched_delayed checks.
    
    [ prateek: Commit message, testing, early bailout in psi_enqueue() ]
    
    Fixes: 152e11f6df29 ("sched/fair: Implement delayed dequeue") # 1a6151017ee5
    Signed-off-by: Chengming Zhou <chengming.zhou@linux.dev>
    Signed-off-by: K Prateek Nayak <kprateek.nayak@amd.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Chengming Zhou <chengming.zhou@linux.dev>
    Link: https://lore.kernel.org/r/20241227061941.2315-1-kprateek.nayak@amd.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pstore/blk: trivial typo fixes [+ + +]
Author: Eugen Hristev <eugen.hristev@linaro.org>
Date:   Wed Jan 1 13:19:21 2025 +0200

    pstore/blk: trivial typo fixes
    
    [ Upstream commit 542243af7182efaeaf6d0f4643f7de437541a9af ]
    
    Fix trivial typos in comments.
    
    Fixes: 2a03ddbde1e1 ("pstore/blk: Move verify_size() macro out of function")
    Fixes: 17639f67c1d6 ("pstore/blk: Introduce backend for block devices")
    Signed-off-by: Eugen Hristev <eugen.hristev@linaro.org>
    Link: https://lore.kernel.org/r/20250101111921.850406-1-eugen.hristev@linaro.org
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ptp: Properly handle compat ioctls [+ + +]
Author: Thomas Weißschuh <linux@weissschuh.net>
Date:   Sat Jan 25 10:28:38 2025 +0100

    ptp: Properly handle compat ioctls
    
    [ Upstream commit 19ae40f572a9ce1ade9954990af709a03fd37010 ]
    
    Pointer arguments passed to ioctls need to pass through compat_ptr() to
    work correctly on s390; as explained in Documentation/driver-api/ioctl.rst.
    Detect compat mode at runtime and call compat_ptr() for those commands
    which do take pointer arguments.
    
    Suggested-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/lkml/1ba5d3a4-7931-455b-a3ce-85a968a7cb10@app.fastmail.com/
    Fixes: d94ba80ebbea ("ptp: Added a brand new class driver for ptp clocks.")
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Reviewed-by: Cyrill Gorcunov <gorcunov@gmail.com>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Richard Cochran <richardcochran@gmail.com>
    Link: https://patch.msgid.link/20250125-posix-clock-compat_ioctl-v2-1-11c865c500eb@weissschuh.net
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ptr_ring: do not block hard interrupts in ptr_ring_resize_multiple() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Dec 17 13:51:21 2024 +0000

    ptr_ring: do not block hard interrupts in ptr_ring_resize_multiple()
    
    [ Upstream commit a126061c80d5efb4baef4bcf346094139cd81df6 ]
    
    Jakub added a lockdep_assert_no_hardirq() check in __page_pool_put_page()
    to increase test coverage.
    
    syzbot found a splat caused by hard irq blocking in
    ptr_ring_resize_multiple() [1]
    
    As current users of ptr_ring_resize_multiple() do not require
    hard irqs being masked, replace it to only block BH.
    
    Rename helpers to better reflect they are safe against BH only.
    
    - ptr_ring_resize_multiple() to ptr_ring_resize_multiple_bh()
    - skb_array_resize_multiple() to skb_array_resize_multiple_bh()
    
    [1]
    
    WARNING: CPU: 1 PID: 9150 at net/core/page_pool.c:709 __page_pool_put_page net/core/page_pool.c:709 [inline]
    WARNING: CPU: 1 PID: 9150 at net/core/page_pool.c:709 page_pool_put_unrefed_netmem+0x157/0xa40 net/core/page_pool.c:780
    Modules linked in:
    CPU: 1 UID: 0 PID: 9150 Comm: syz.1.1052 Not tainted 6.11.0-rc3-syzkaller-00202-gf8669d7b5f5d #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/06/2024
    RIP: 0010:__page_pool_put_page net/core/page_pool.c:709 [inline]
    RIP: 0010:page_pool_put_unrefed_netmem+0x157/0xa40 net/core/page_pool.c:780
    Code: 74 0e e8 7c aa fb f7 eb 43 e8 75 aa fb f7 eb 3c 65 8b 1d 38 a8 6a 76 31 ff 89 de e8 a3 ae fb f7 85 db 74 0b e8 5a aa fb f7 90 <0f> 0b 90 eb 1d 65 8b 1d 15 a8 6a 76 31 ff 89 de e8 84 ae fb f7 85
    RSP: 0018:ffffc9000bda6b58 EFLAGS: 00010083
    RAX: ffffffff8997e523 RBX: 0000000000000000 RCX: 0000000000040000
    RDX: ffffc9000fbd0000 RSI: 0000000000001842 RDI: 0000000000001843
    RBP: 0000000000000000 R08: ffffffff8997df2c R09: 1ffffd40003a000d
    R10: dffffc0000000000 R11: fffff940003a000e R12: ffffea0001d00040
    R13: ffff88802e8a4000 R14: dffffc0000000000 R15: 00000000ffffffff
    FS:  00007fb7aaf716c0(0000) GS:ffff8880b9300000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fa15a0d4b72 CR3: 00000000561b0000 CR4: 00000000003506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     tun_ptr_free drivers/net/tun.c:617 [inline]
     __ptr_ring_swap_queue include/linux/ptr_ring.h:571 [inline]
     ptr_ring_resize_multiple_noprof include/linux/ptr_ring.h:643 [inline]
     tun_queue_resize drivers/net/tun.c:3694 [inline]
     tun_device_event+0xaaf/0x1080 drivers/net/tun.c:3714
     notifier_call_chain+0x19f/0x3e0 kernel/notifier.c:93
     call_netdevice_notifiers_extack net/core/dev.c:2032 [inline]
     call_netdevice_notifiers net/core/dev.c:2046 [inline]
     dev_change_tx_queue_len+0x158/0x2a0 net/core/dev.c:9024
     do_setlink+0xff6/0x41f0 net/core/rtnetlink.c:2923
     rtnl_setlink+0x40d/0x5a0 net/core/rtnetlink.c:3201
     rtnetlink_rcv_msg+0x73f/0xcf0 net/core/rtnetlink.c:6647
     netlink_rcv_skb+0x1e3/0x430 net/netlink/af_netlink.c:2550
    
    Fixes: ff4e538c8c3e ("page_pool: add a lockdep check for recycling in hardirq")
    Reported-by: syzbot+f56a5c5eac2b28439810@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/671e10df.050a0220.2b8c0f.01cf.GAE@google.com/T/
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Link: https://patch.msgid.link/20241217135121.326370-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pwm: stm32-lp: Add check for clk_enable() [+ + +]
Author: Mingwei Zheng <zmw12306@gmail.com>
Date:   Fri Dec 6 16:53:18 2024 -0500

    pwm: stm32-lp: Add check for clk_enable()
    
    [ Upstream commit cce16e7f6216227964cda25f5f23634bce2c500f ]
    
    Add check for the return value of clk_enable() to catch the potential
    error.
    We used APP-Miner to find it.
    
    Fixes: e70a540b4e02 ("pwm: Add STM32 LPTimer PWM driver")
    Signed-off-by: Mingwei Zheng <zmw12306@gmail.com>
    Signed-off-by: Jiasheng Jiang <jiashengjiangcool@gmail.com>
    Link: https://lore.kernel.org/r/20241206215318.3402860-1-zmw12306@gmail.com
    Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pwm: stm32: Add check for clk_enable() [+ + +]
Author: Mingwei Zheng <zmw12306@gmail.com>
Date:   Sun Dec 15 17:47:52 2024 -0500

    pwm: stm32: Add check for clk_enable()
    
    [ Upstream commit e8c59791ebb60790c74b2c3ab520f04a8a57219a ]
    
    Add check for the return value of clk_enable() to catch the potential
    error.
    
    Fixes: 19f1016ea960 ("pwm: stm32: Fix enable count for clk in .probe()")
    Signed-off-by: Mingwei Zheng <zmw12306@gmail.com>
    Signed-off-by: Jiasheng Jiang <jiashengjiangcool@gmail.com>
    Link: https://lore.kernel.org/r/20241215224752.220318-1-zmw12306@gmail.com
    Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/bnxt_re: Fix to drop reference to the mmap entry in case of error [+ + +]
Author: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date:   Sat Jan 4 11:45:19 2025 +0530

    RDMA/bnxt_re: Fix to drop reference to the mmap entry in case of error
    
    [ Upstream commit c84f0f4f49d81645f49c3269fdcc3b84ce61e795 ]
    
    In the error handling path of bnxt_re_mmap(), driver should invoke
    rdma_user_mmap_entry_put() to free the reference of mmap entry in case
    the error happens after rdma_user_mmap_entry_get was called.
    
    Fixes: ea2224857882 ("RDMA/bnxt_re: Update alloc_page uapi for pacing")
    Reviewed-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com>
    Reviewed-by: Kashyap Desai <kashyap.desai@broadcom.com>
    Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Link: https://patch.msgid.link/20250104061519.2540178-1-kalesh-anakkur.purayil@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/cxgb4: Notify rdma stack for IB_EVENT_QP_LAST_WQE_REACHED event [+ + +]
Author: Anumula Murali Mohan Reddy <anumula@chelsio.com>
Date:   Tue Jan 7 15:20:53 2025 +0530

    RDMA/cxgb4: Notify rdma stack for IB_EVENT_QP_LAST_WQE_REACHED event
    
    [ Upstream commit 42e6ddda4c17fa0d5120e3723d522649f8fc62fa ]
    
    This patch sends IB_EVENT_QP_LAST_WQE_REACHED event on a QP that is in
    error state and associated with an SRQ. This behaviour is incorporated
    in flush_qp() which is called when QP transitions to error state.
    Supports SRQ drain functionality added by commit 844bc12e6da3 ("IB/core:
    add support for draining Shared receive queues")
    
    Fixes: 844bc12e6da3 ("IB/core: add support for draining Shared receive queues")
    Signed-off-by: Anumula Murali Mohan Reddy <anumula@chelsio.com>
    Signed-off-by: Potnuri Bharat Teja <bharat@chelsio.com>
    Link: https://patch.msgid.link/20250107095053.81007-1-anumula@chelsio.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rdma/cxgb4: Prevent potential integer overflow on 32bit [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Sat Nov 30 13:01:37 2024 +0300

    rdma/cxgb4: Prevent potential integer overflow on 32bit
    
    [ Upstream commit bd96a3935e89486304461a21752f824fc25e0f0b ]
    
    The "gl->tot_len" variable is controlled by the user.  It comes from
    process_responses().  On 32bit systems, the "gl->tot_len + sizeof(struct
    cpl_pass_accept_req) + sizeof(struct rss_header)" addition could have an
    integer wrapping bug.  Use size_add() to prevent this.
    
    Fixes: 1cab775c3e75 ("RDMA/cxgb4: Fix LE hash collision bug for passive open connection")
    Link: https://patch.msgid.link/r/86b404e1-4a75-4a35-a34e-e3054fa554c7@stanley.mountain
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/hns: Clean up the legacy CONFIG_INFINIBAND_HNS [+ + +]
Author: Junxian Huang <huangjunxian6@hisilicon.com>
Date:   Mon Jan 6 19:12:11 2025 +0800

    RDMA/hns: Clean up the legacy CONFIG_INFINIBAND_HNS
    
    [ Upstream commit 8977b561216c7e693d61c6442657e33f134bfeb5 ]
    
    hns driver used to support hip06 and hip08 devices with
    CONFIG_INFINIBAND_HNS_HIP06 and CONFIG_INFINIBAND_HNS_HIP08
    respectively, which both depended on CONFIG_INFINIBAND_HNS.
    
    But we no longer provide support for hip06 and only support
    hip08 and higher since the commit in fixes line, so there is
    no need to have CONFIG_INFINIBAND_HNS any more. Remove it and
    only keep CONFIG_INFINIBAND_HNS_HIP08.
    
    Fixes: 38d220882426 ("RDMA/hns: Remove support for HIP06")
    Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
    Link: https://patch.msgid.link/20250106111211.3945051-1-huangjunxian6@hisilicon.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/mlx4: Avoid false error about access to uninitialized gids array [+ + +]
Author: Leon Romanovsky <leon@kernel.org>
Date:   Tue Dec 3 15:44:25 2024 +0200

    RDMA/mlx4: Avoid false error about access to uninitialized gids array
    
    [ Upstream commit 1f53d88cbb0dcc7df235bf6611ae632b254fccd8 ]
    
    Smatch generates the following false error report:
    drivers/infiniband/hw/mlx4/main.c:393 mlx4_ib_del_gid() error: uninitialized symbol 'gids'.
    
    Traditionally, we are not changing kernel code and asking people to fix
    the tools. However in this case, the fix can be done by simply rearranging
    the code to be more clear.
    
    Fixes: e26be1bfef81 ("IB/mlx4: Implement ib_device callbacks")
    Link: https://patch.msgid.link/6a3a1577463da16962463fcf62883a87506e9b62.1733233426.git.leonro@nvidia.com
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/mlx5: Fix implicit ODP use after free [+ + +]
Author: Patrisious Haddad <phaddad@nvidia.com>
Date:   Sun Jan 19 10:21:41 2025 +0200

    RDMA/mlx5: Fix implicit ODP use after free
    
    commit d3d930411ce390e532470194296658a960887773 upstream.
    
    Prevent double queueing of implicit ODP mr destroy work by using
    __xa_cmpxchg() to make sure this is the only time we are destroying this
    specific mr.
    
    Without this change, we could try to invalidate this mr twice, which in
    turn could result in queuing a MR work destroy twice, and eventually the
    second work could execute after the MR was freed due to the first work,
    causing a user after free and trace below.
    
       refcount_t: underflow; use-after-free.
       WARNING: CPU: 2 PID: 12178 at lib/refcount.c:28 refcount_warn_saturate+0x12b/0x130
       Modules linked in: bonding ib_ipoib vfio_pci ip_gre geneve nf_tables ip6_gre gre ip6_tunnel tunnel6 ipip tunnel4 ib_umad rdma_ucm mlx5_vfio_pci vfio_pci_core vfio_iommu_type1 mlx5_ib vfio ib_uverbs mlx5_core iptable_raw openvswitch nsh rpcrdma ib_iser libiscsi scsi_transport_iscsi rdma_cm iw_cm ib_cm ib_core xt_conntrack xt_MASQUERADE nf_conntrack_netlink nfnetlink xt_addrtype iptable_nat nf_nat br_netfilter rpcsec_gss_krb5 auth_rpcgss oid_registry overlay zram zsmalloc fuse [last unloaded: ib_uverbs]
       CPU: 2 PID: 12178 Comm: kworker/u20:5 Not tainted 6.5.0-rc1_net_next_mlx5_58c644e #1
       Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
       Workqueue: events_unbound free_implicit_child_mr_work [mlx5_ib]
       RIP: 0010:refcount_warn_saturate+0x12b/0x130
       Code: 48 c7 c7 38 95 2a 82 c6 05 bc c6 fe 00 01 e8 0c 66 aa ff 0f 0b 5b c3 48 c7 c7 e0 94 2a 82 c6 05 a7 c6 fe 00 01 e8 f5 65 aa ff <0f> 0b 5b c3 90 8b 07 3d 00 00 00 c0 74 12 83 f8 01 74 13 8d 50 ff
       RSP: 0018:ffff8881008e3e40 EFLAGS: 00010286
       RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000027
       RDX: ffff88852c91b5c8 RSI: 0000000000000001 RDI: ffff88852c91b5c0
       RBP: ffff8881dacd4e00 R08: 00000000ffffffff R09: 0000000000000019
       R10: 000000000000072e R11: 0000000063666572 R12: ffff88812bfd9e00
       R13: ffff8881c792d200 R14: ffff88810011c005 R15: ffff8881002099c0
       FS:  0000000000000000(0000) GS:ffff88852c900000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       CR2: 00007f5694b5e000 CR3: 00000001153f6003 CR4: 0000000000370ea0
       DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
       DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
       Call Trace:
        <TASK>
        ? refcount_warn_saturate+0x12b/0x130
        free_implicit_child_mr_work+0x180/0x1b0 [mlx5_ib]
        process_one_work+0x1cc/0x3c0
        worker_thread+0x218/0x3c0
        kthread+0xc6/0xf0
        ret_from_fork+0x1f/0x30
        </TASK>
    
    Fixes: 5256edcb98a1 ("RDMA/mlx5: Rework implicit ODP destroy")
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/r/c96b8645a81085abff739e6b06e286a350d1283d.1737274283.git.leon@kernel.org
    Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

RDMA/mlx5: Fix indirect mkey ODP page count [+ + +]
Author: Michael Guralnik <michaelgur@nvidia.com>
Date:   Mon Jan 6 20:27:10 2025 +0200

    RDMA/mlx5: Fix indirect mkey ODP page count
    
    [ Upstream commit 235f238402194a78ac5fb882a46717eac817e5d1 ]
    
    Restrict the check for the number of pages handled during an ODP page
    fault to direct mkeys.
    Perform the check right after handling the page fault and don't
    propagate the number of handled pages to callers.
    
    Indirect mkeys and their associated direct mkeys can have different
    start addresses. As a result, the calculation of the number of pages to
    handle for an indirect mkey may not match the actual page fault
    handling done on the direct mkey.
    
    For example:
    A 4K sized page fault on a KSM mkey that has a start address that is not
    aligned to a page will result a calculation that assumes the number of
    pages required to handle are 2.
    While the underlying MTT might be aligned will require fetching only a
    single page.
    Thus, do the calculation and compare number of pages handled only per
    direct mkey.
    
    Fixes: db570d7deafb ("IB/mlx5: Add ODP support to MW")
    Signed-off-by: Michael Guralnik <michaelgur@nvidia.com>
    Reviewed-by: Artemy Kovalyov <artemyko@nvidia.com>
    Link: https://patch.msgid.link/86c483d9e75ce8fe14e9ff85b62df72b779f8ab1.1736187990.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/rtrs: Add missing deinit() call [+ + +]
Author: Li Zhijian <lizhijian@fujitsu.com>
Date:   Mon Jan 6 08:45:16 2025 +0800

    RDMA/rtrs: Add missing deinit() call
    
    [ Upstream commit 81468c4058a62e84e475433b83b3edc613294f5e ]
    
    A warning is triggered when repeatedly connecting and disconnecting the
    rnbd:
     list_add corruption. prev->next should be next (ffff88800b13e480), but was ffff88801ecd1338. (prev=ffff88801ecd1340).
     WARNING: CPU: 1 PID: 36562 at lib/list_debug.c:32 __list_add_valid_or_report+0x7f/0xa0
     Workqueue: ib_cm cm_work_handler [ib_cm]
     RIP: 0010:__list_add_valid_or_report+0x7f/0xa0
      ? __list_add_valid_or_report+0x7f/0xa0
      ib_register_event_handler+0x65/0x93 [ib_core]
      rtrs_srv_ib_dev_init+0x29/0x30 [rtrs_server]
      rtrs_ib_dev_find_or_add+0x124/0x1d0 [rtrs_core]
      __alloc_path+0x46c/0x680 [rtrs_server]
      ? rtrs_rdma_connect+0xa6/0x2d0 [rtrs_server]
      ? rcu_is_watching+0xd/0x40
      ? __mutex_lock+0x312/0xcf0
      ? get_or_create_srv+0xad/0x310 [rtrs_server]
      ? rtrs_rdma_connect+0xa6/0x2d0 [rtrs_server]
      rtrs_rdma_connect+0x23c/0x2d0 [rtrs_server]
      ? __lock_release+0x1b1/0x2d0
      cma_cm_event_handler+0x4a/0x1a0 [rdma_cm]
      cma_ib_req_handler+0x3a0/0x7e0 [rdma_cm]
      cm_process_work+0x28/0x1a0 [ib_cm]
      ? _raw_spin_unlock_irq+0x2f/0x50
      cm_req_handler+0x618/0xa60 [ib_cm]
      cm_work_handler+0x71/0x520 [ib_cm]
    
    Commit 667db86bcbe8 ("RDMA/rtrs: Register ib event handler") introduced a
    new element .deinit but never used it at all. Fix it by invoking the
    `deinit()` to appropriately unregister the IB event handler.
    
    Cc: Jinpu Wang <jinpu.wang@ionos.com>
    Fixes: 667db86bcbe8 ("RDMA/rtrs: Register ib event handler")
    Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
    Link: https://patch.msgid.link/20250106004516.16611-1-lizhijian@fujitsu.com
    Acked-by: Jack Wang <jinpu.wang@ionos.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/rxe: Fix mismatched max_msg_sz [+ + +]
Author: zhenwei pi <pizhenwei@bytedance.com>
Date:   Mon Dec 16 20:19:53 2024 +0800

    RDMA/rxe: Fix mismatched max_msg_sz
    
    [ Upstream commit db03b70969aab4ef111a3369cfd90ea4da3a6aa0 ]
    
    User mode queries max_msg_sz as 0x800000 by command 'ibv_devinfo -v',
    however ibv_post_send/ibv_post_recv has a limit of 2^31. Fix this
    mismatched information.
    
    Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
    Fixes: f605f26ea196 ("RDMA/rxe: Protect QP state with qp->state_lock")
    Fixes: 5bf944f24129 ("RDMA/rxe: Add error messages")
    Link: https://patch.msgid.link/20241216121953.765331-1-pizhenwei@bytedance.com
    Review-by: Zhu Yanjun <yanjun.zhu@linux.dev>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/rxe: Fix the warning "__rxe_cleanup+0x12c/0x170 [rdma_rxe]" [+ + +]
Author: Zhu Yanjun <yanjun.zhu@linux.dev>
Date:   Fri Jan 10 17:09:27 2025 +0100

    RDMA/rxe: Fix the warning "__rxe_cleanup+0x12c/0x170 [rdma_rxe]"
    
    [ Upstream commit edc4ef0e0154096d6c0cf5e06af6fc330dbad9d1 ]
    
    The Call Trace is as below:
    "
      <TASK>
      ? show_regs.cold+0x1a/0x1f
      ? __rxe_cleanup+0x12c/0x170 [rdma_rxe]
      ? __warn+0x84/0xd0
      ? __rxe_cleanup+0x12c/0x170 [rdma_rxe]
      ? report_bug+0x105/0x180
      ? handle_bug+0x46/0x80
      ? exc_invalid_op+0x19/0x70
      ? asm_exc_invalid_op+0x1b/0x20
      ? __rxe_cleanup+0x12c/0x170 [rdma_rxe]
      ? __rxe_cleanup+0x124/0x170 [rdma_rxe]
      rxe_destroy_qp.cold+0x24/0x29 [rdma_rxe]
      ib_destroy_qp_user+0x118/0x190 [ib_core]
      rdma_destroy_qp.cold+0x43/0x5e [rdma_cm]
      rtrs_cq_qp_destroy.cold+0x1d/0x2b [rtrs_core]
      rtrs_srv_close_work.cold+0x1b/0x31 [rtrs_server]
      process_one_work+0x21d/0x3f0
      worker_thread+0x4a/0x3c0
      ? process_one_work+0x3f0/0x3f0
      kthread+0xf0/0x120
      ? kthread_complete_and_exit+0x20/0x20
      ret_from_fork+0x22/0x30
      </TASK>
    "
    When too many rdma resources are allocated, rxe needs more time to
    handle these rdma resources. Sometimes with the current timeout, rxe
    can not release the rdma resources correctly.
    
    Compared with other rdma drivers, a bigger timeout is used.
    
    Fixes: 215d0a755e1b ("RDMA/rxe: Stop lookup of partially built objects")
    Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
    Link: https://patch.msgid.link/20250110160927.55014-1-yanjun.zhu@linux.dev
    Tested-by: Joe Klein <joe.klein812@gmail.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/srp: Fix error handling in srp_add_port [+ + +]
Author: Ma Ke <make_ruc2021@163.com>
Date:   Tue Dec 17 15:55:38 2024 +0800

    RDMA/srp: Fix error handling in srp_add_port
    
    [ Upstream commit a3cbf68c69611188cd304229e346bffdabfd4277 ]
    
    As comment of device_add() says, if device_add() succeeds, you should
    call device_del() when you want to get rid of it. If device_add() has
    not succeeded, use only put_device() to drop the reference count.
    
    Add a put_device() call before returning from the function to decrement
    reference count for cleanup.
    
    Found by code review.
    
    Fixes: c8e4c2397655 ("RDMA/srp: Rework the srp_add_port() error path")
    Signed-off-by: Ma Ke <make_ruc2021@163.com>
    Link: https://patch.msgid.link/20241217075538.2909996-1-make_ruc2021@163.com
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
regulator: core: Add missing newline character [+ + +]
Author: Alexander Stein <alexander.stein@ew.tq-group.com>
Date:   Wed Jan 22 08:20:19 2025 +0100

    regulator: core: Add missing newline character
    
    [ Upstream commit 155c569fa4c3b340fbf8571a0e42dd415c025377 ]
    
    dev_err_probe() error messages need newline character.
    
    Fixes: 6eabfc018e8d ("regulator: core: Allow specifying an initial load w/ the bulk API")
    Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
    Link: https://patch.msgid.link/20250122072019.1926093-1-alexander.stein@ew.tq-group.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

regulator: dt-bindings: mt6315: Drop regulator-compatible property [+ + +]
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Wed Dec 11 13:24:19 2024 +0800

    regulator: dt-bindings: mt6315: Drop regulator-compatible property
    
    [ Upstream commit 08242719a8af603db54a2a79234a8fe600680105 ]
    
    The "regulator-compatible" property has been deprecated since 2012 in
    commit 13511def87b9 ("regulator: deprecate regulator-compatible DT
    property"), which is so old it's not even mentioned in the converted
    regulator bindings YAML file. It should not have been used for new
    submissions such as the MT6315.
    
    Drop the property from the MT6315 regulator binding and its examples.
    
    Fixes: 977fb5b58469 ("regulator: document binding for MT6315 regulator")
    Fixes: 6d435a94ba5b ("regulator: mt6315: Enforce regulator-compatible, not name")
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://patch.msgid.link/20241211052427.4178367-2-wenst@chromium.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

regulator: of: Implement the unwind path of of_regulator_match() [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Sat Jan 4 17:04:53 2025 +0900

    regulator: of: Implement the unwind path of of_regulator_match()
    
    [ Upstream commit dddca3b2fc676113c58b04aaefe84bfb958ac83e ]
    
    of_regulator_match() does not release the OF node reference in the error
    path, resulting in an OF node leak. Therefore, call of_node_put() on the
    obtained nodes before returning the EINVAL error.
    
    Since it is possible that some drivers call this function and do not
    exit on failure, such as s2mps11_pmic_driver, clear the init_data and
    of_node in the error path.
    
    This was reported by an experimental verification tool that I am
    developing. As I do not have access to actual devices nor the QEMU board
    configuration to test drivers that call this function, no runtime test
    was able to be performed.
    
    Fixes: 1c8fa58f4750 ("regulator: Add generic DT parsing for regulators")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Link: https://patch.msgid.link/20250104080453.2153592-1-joe@pf.is.s.u-tokyo.ac.jp
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
remoteproc: core: Fix ida_free call while not allocated [+ + +]
Author: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
Date:   Fri Nov 22 18:51:27 2024 +0100

    remoteproc: core: Fix ida_free call while not allocated
    
    commit 7378aeb664e5ebc396950b36a1f2dedf5aabec20 upstream.
    
    In the rproc_alloc() function, on error, put_device(&rproc->dev) is
    called, leading to the call of the rproc_type_release() function.
    An error can occurs before ida_alloc is called.
    
    In such case in rproc_type_release(), the condition (rproc->index >= 0) is
    true as rproc->index has been  initialized to 0.
    ida_free() is called reporting a warning:
    [    4.181906] WARNING: CPU: 1 PID: 24 at lib/idr.c:525 ida_free+0x100/0x164
    [    4.186378] stm32-display-dsi 5a000000.dsi: Fixed dependency cycle(s) with /soc/dsi@5a000000/panel@0
    [    4.188854] ida_free called for id=0 which is not allocated.
    [    4.198256] mipi-dsi 5a000000.dsi.0: Fixed dependency cycle(s) with /soc/dsi@5a000000
    [    4.203556] Modules linked in: panel_orisetech_otm8009a dw_mipi_dsi_stm(+) gpu_sched dw_mipi_dsi stm32_rproc stm32_crc32 stm32_ipcc(+) optee(+)
    [    4.224307] CPU: 1 UID: 0 PID: 24 Comm: kworker/u10:0 Not tainted 6.12.0 #442
    [    4.231481] Hardware name: STM32 (Device Tree Support)
    [    4.236627] Workqueue: events_unbound deferred_probe_work_func
    [    4.242504] Call trace:
    [    4.242522]  unwind_backtrace from show_stack+0x10/0x14
    [    4.250218]  show_stack from dump_stack_lvl+0x50/0x64
    [    4.255274]  dump_stack_lvl from __warn+0x80/0x12c
    [    4.260134]  __warn from warn_slowpath_fmt+0x114/0x188
    [    4.265199]  warn_slowpath_fmt from ida_free+0x100/0x164
    [    4.270565]  ida_free from rproc_type_release+0x38/0x60
    [    4.275832]  rproc_type_release from device_release+0x30/0xa0
    [    4.281601]  device_release from kobject_put+0xc4/0x294
    [    4.286762]  kobject_put from rproc_alloc.part.0+0x208/0x28c
    [    4.292430]  rproc_alloc.part.0 from devm_rproc_alloc+0x80/0xc4
    [    4.298393]  devm_rproc_alloc from stm32_rproc_probe+0xd0/0x844 [stm32_rproc]
    [    4.305575]  stm32_rproc_probe [stm32_rproc] from platform_probe+0x5c/0xbc
    
    Calling ida_alloc earlier in rproc_alloc ensures that the rproc->index is
    properly set.
    
    Fixes: 08333b911f01 ("remoteproc: Directly use ida_alloc()/free()")
    Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20241122175127.2188037-1-arnaud.pouliquen@foss.st.com
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

remoteproc: mtk_scp: Only populate devices for SCP cores [+ + +]
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Wed Dec 11 15:20:07 2024 +0800

    remoteproc: mtk_scp: Only populate devices for SCP cores
    
    [ Upstream commit dbb9c372555c0b2a5a9264418bfba6d017752808 ]
    
    When multi-core SCP support was added, the driver was made to populate
    platform devices for all the sub-nodes. This ended up adding platform
    devices for the rpmsg sub-nodes as well, which never actually get used,
    since rpmsg devices are registered through the rpmsg interface.
    
    Limit of_platform_populate() to just populating the SCP cores with a
    compatible string match list.
    
    Fixes: 1fdbf0cdde98 ("remoteproc: mediatek: Probe SCP cluster on multi-core SCP")
    Cc: Tinghan Shen <tinghan.shen@mediatek.com>
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Link: https://lore.kernel.org/r/20241211072009.120511-1-wenst@chromium.org
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "drm/amdgpu/gfx9: put queue resets behind a debug option" [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Tue Oct 15 15:55:10 2024 -0400

    Revert "drm/amdgpu/gfx9: put queue resets behind a debug option"
    
    [ Upstream commit 32f00289698189b813942f37626218fd473e7302 ]
    
    This reverts commit 7c1a2d8aba6cadde0cc542b2d805edc0be667e79.
    
    Extended validation has completed successfully, so enable
    these features by default.
    
    Acked-by: Jiadong Zhu <Jiadong.Zhu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: Jonathan Kim <jonathan.kim@amd.com>
    Cc: Jiadong Zhu <Jiadong.Zhu@amd.com>
    Stable-dep-of: 86bde64cb795 ("drm/amdgpu: fix gpu recovery disable with per queue reset")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "s390/mm: Allow large pages for KASAN shadow mapping" [+ + +]
Author: Vasily Gorbik <gor@linux.ibm.com>
Date:   Fri Nov 29 01:07:01 2024 +0100

    Revert "s390/mm: Allow large pages for KASAN shadow mapping"
    
    commit cc00550b2ae7ab1c7c56669fc004a13d880aaf0a upstream.
    
    This reverts commit ff123eb7741638d55abf82fac090bb3a543c1e74.
    
    Allowing large pages for KASAN shadow mappings isn't inherently wrong,
    but adding POPULATE_KASAN_MAP_SHADOW to large_allowed() exposes an issue
    in can_large_pud() and can_large_pmd().
    
    Since commit d8073dc6bc04 ("s390/mm: Allow large pages only for aligned
    physical addresses"), both can_large_pud() and can_large_pmd() call _pa()
    to check if large page physical addresses are aligned. However, _pa()
    has a side effect: it allocates memory in POPULATE_KASAN_MAP_SHADOW
    mode. This results in massive memory leaks.
    
    The proper fix would be to address both large_allowed() and _pa()'s side
    effects, but for now, revert this change to avoid the leaks.
    
    Fixes: ff123eb77416 ("s390/mm: Allow large pages for KASAN shadow mapping")
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "SUNRPC: Reduce thread wake-up rate when receiving large RPC messages" [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Thu Jan 2 20:00:01 2025 -0500

    Revert "SUNRPC: Reduce thread wake-up rate when receiving large RPC messages"
    
    commit 966a675da844f1a764bb44557c21561cc3d09840 upstream.
    
    I noticed that a handful of NFSv3 fstests were taking an
    unexpectedly long time to run. Troubleshooting showed that the
    server's TCP window closed and never re-opened, which caused the
    client to trigger an RPC retransmit timeout after 180 seconds.
    
    The client's recovery action was to establish a fresh connection
    and retransmit the timed-out requests. This worked, but it adds a
    long delay.
    
    I tracked the problem to the commit that attempted to reduce the
    rate at which the network layer delivers TCP socket data_ready
    callbacks. Under most circumstances this change worked as expected,
    but for NFSv3, which has no session or other type of throttling, it
    can overwhelm the receiver on occasion.
    
    I'm sure I could tweak the lowat settings, but the small benefit
    doesn't seem worth the bother. Just revert it.
    
    Fixes: 2b877fc53e97 ("SUNRPC: Reduce thread wake-up rate when receiving large RPC messages")
    Cc: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
rhashtable: Fix potential deadlock by moving schedule_work outside lock [+ + +]
Author: Breno Leitao <leitao@debian.org>
Date:   Thu Nov 28 04:16:25 2024 -0800

    rhashtable: Fix potential deadlock by moving schedule_work outside lock
    
    [ Upstream commit e1d3422c95f003eba241c176adfe593c33e8a8f6 ]
    
    Move the hash table growth check and work scheduling outside the
    rht lock to prevent a possible circular locking dependency.
    
    The original implementation could trigger a lockdep warning due to
    a potential deadlock scenario involving nested locks between
    rhashtable bucket, rq lock, and dsq lock. By relocating the
    growth check and work scheduling after releasing the rth lock, we break
    this potential deadlock chain.
    
    This change expands the flexibility of rhashtable by removing
    restrictive locking that previously limited its use in scheduler
    and workqueue contexts.
    
    Import to say that this calls rht_grow_above_75(), which reads from
    struct rhashtable without holding the lock, if this is a problem, we can
    move the check to the lock, and schedule the workqueue after the lock.
    
    Fixes: f0e1a0643a59 ("sched_ext: Implement BPF extensible scheduler class")
    Suggested-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Breno Leitao <leitao@debian.org>
    
    Modified so that atomic_inc is also moved outside of the bucket
    lock along with the growth above 75% check.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

rhashtable: Fix rhashtable_try_insert test [+ + +]
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Tue Jan 14 11:15:19 2025 +0800

    rhashtable: Fix rhashtable_try_insert test
    
    [ Upstream commit 9d4f8e54cef2c42e23ef258833dbd06a1eaff89b ]
    
    The test on whether rhashtable_insert_one did an insertion relies
    on the value returned by rhashtable_lookup_one.  Unfortunately that
    value is overwritten after rhashtable_insert_one returns.  Fix this
    by moving the test before data gets overwritten.
    
    Simplify the test as only data == NULL matters.
    
    Finally move atomic_inc back within the lock as otherwise it may
    be reordered with the atomic_dec on the removal side, potentially
    leading to an underflow.
    
    Reported-by: Michael Kelley <mhklinux@outlook.com>
    Fixes: e1d3422c95f0 ("rhashtable: Fix potential deadlock by moving schedule_work outside lock")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Tested-by: Michael Kelley <mhklinux@outlook.com>
    Reviewed-by: Breno Leitao <leitao@debian.org>
    Tested-by: Mikhail Zaslonko <zaslonko@linux.ibm.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RISC-V: Mark riscv_v_init() as __init [+ + +]
Author: Palmer Dabbelt <palmer@rivosinc.com>
Date:   Wed Jan 15 10:02:51 2025 -0800

    RISC-V: Mark riscv_v_init() as __init
    
    [ Upstream commit 9d87cf525fd2e1a5fcbbb40ee3df216d1d266c88 ]
    
    This trips up with Xtheadvector enabled, but as far as I can tell it's
    just been an issue since the original patchset.
    
    Fixes: 7ca7a7b9b635 ("riscv: Add sysctl to set the default vector rule for new processes")
    Reviewed-by: Charlie Jenkins <charlie@rivosinc.com>
    Tested-by: Charlie Jenkins <charlie@rivosinc.com>
    Link: https://lore.kernel.org/r/20250115180251.31444-1-palmer@rivosinc.com
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rtc: loongson: clear TOY_MATCH0_REG in loongson_rtc_isr() [+ + +]
Author: Ming Wang <wangming01@loongson.cn>
Date:   Thu Dec 5 19:43:07 2024 +0800

    rtc: loongson: clear TOY_MATCH0_REG in loongson_rtc_isr()
    
    [ Upstream commit 09471d8f5b390883eaf21b917c4bf3ced1b8a1df ]
    
    The TOY_MATCH0_REG should be cleared to 0 in the RTC interrupt handler,
    otherwise the interrupt cannot be cleared, which will cause the
    loongson_rtc_isr() to be triggered multiple times.
    
    The previous code cleared TOY_MATCH0_REG in the loongson_rtc_handler(),
    which is an ACPI interrupt. This did not prevent loongson_rtc_isr()
    from being triggered multiple times.
    
    This commit moves the clearing of TOY_MATCH0_REG to the
    loongson_rtc_isr() to ensure that the interrupt is properly cleared.
    
    Fixes: 1b733a9ebc3d ("rtc: Add rtc driver for the Loongson family chips")
    Signed-off-by: Ming Wang <wangming01@loongson.cn>
    Reviewed-by: Huacai Chen <chenhuacai@loongson.cn>
    Reviewed-by: Keguang Zhang <keguang.zhang@gmail.com> # on LS1B
    Tested-by: Keguang Zhang <keguang.zhang@gmail.com>
    Link: https://lore.kernel.org/r/20241205114307.1891418-1-wangming01@loongson.cn
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

rtc: pcf85063: fix potential OOB write in PCF85063 NVMEM read [+ + +]
Author: Oleksij Rempel <o.rempel@pengutronix.de>
Date:   Wed Dec 18 20:34:58 2024 +0100

    rtc: pcf85063: fix potential OOB write in PCF85063 NVMEM read
    
    [ Upstream commit 3ab8c5ed4f84fa20cd16794fe8dc31f633fbc70c ]
    
    The nvmem interface supports variable buffer sizes, while the regmap
    interface operates with fixed-size storage. If an nvmem client uses a
    buffer size less than 4 bytes, regmap_read will write out of bounds
    as it expects the buffer to point at an unsigned int.
    
    Fix this by using an intermediary unsigned int to hold the value.
    
    Fixes: fadfd092ee91 ("rtc: pcf85063: add nvram support")
    Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
    Link: https://lore.kernel.org/r/20241218-rtc-pcf85063-stack-corruption-v1-1-12fd0ee0f046@pengutronix.de
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

rtc: tps6594: Fix integer overflow on 32bit systems [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Wed Dec 11 12:32:34 2024 +0300

    rtc: tps6594: Fix integer overflow on 32bit systems
    
    [ Upstream commit 09c4a610153286cef54d4f0c85398f4e32fc227e ]
    
    The problem is this multiply in tps6594_rtc_set_offset()
    
            tmp = offset * TICKS_PER_HOUR;
    
    The "tmp" variable is an s64 but "offset" is a long in the
    (-277774)-277774 range.  On 32bit systems a long can hold numbers up to
    approximately two billion.  The number of TICKS_PER_HOUR is really large,
    (32768 * 3600) or roughly a hundred million.  When you start multiplying
    by a hundred million it doesn't take long to overflow the two billion
    mark.
    
    Probably the safest way to fix this is to change the type of
    TICKS_PER_HOUR to long long because it's such a large number.
    
    Fixes: 9f67c1e63976 ("rtc: tps6594: Add driver for TPS6594 RTC")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/1074175e-5ecb-4e3d-b721-347d794caa90@stanley.mountain
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rxrpc, afs: Fix peer hash locking vs RCU callback [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Thu Jan 23 08:59:12 2025 +0000

    rxrpc, afs: Fix peer hash locking vs RCU callback
    
    [ Upstream commit 79d458c13056559d49b5e41fbc4b6890e68cf65b ]
    
    In its address list, afs now retains pointers to and refs on one or more
    rxrpc_peer objects.  The address list is freed under RCU and at this time,
    it puts the refs on those peers.
    
    Now, when an rxrpc_peer object runs out of refs, it gets removed from the
    peer hash table and, for that, rxrpc has to take a spinlock.  However, it
    is now being called from afs's RCU cleanup, which takes place in BH
    context - but it is just taking an ordinary spinlock.
    
    The put may also be called from non-BH context, and so there exists the
    possibility of deadlock if the BH-based RCU cleanup happens whilst the hash
    spinlock is held.  This led to the attached lockdep complaint.
    
    Fix this by changing spinlocks of rxnet->peer_hash_lock back to
    BH-disabling locks.
    
        ================================
        WARNING: inconsistent lock state
        6.13.0-rc5-build2+ #1223 Tainted: G            E
        --------------------------------
        inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
        swapper/1/0 [HC0[0]:SC1[1]:HE1:SE0] takes:
        ffff88810babe228 (&rxnet->peer_hash_lock){+.?.}-{3:3}, at: rxrpc_put_peer+0xcb/0x180
        {SOFTIRQ-ON-W} state was registered at:
          mark_usage+0x164/0x180
          __lock_acquire+0x544/0x990
          lock_acquire.part.0+0x103/0x280
          _raw_spin_lock+0x2f/0x40
          rxrpc_peer_keepalive_worker+0x144/0x440
          process_one_work+0x486/0x7c0
          process_scheduled_works+0x73/0x90
          worker_thread+0x1c8/0x2a0
          kthread+0x19b/0x1b0
          ret_from_fork+0x24/0x40
          ret_from_fork_asm+0x1a/0x30
        irq event stamp: 972402
        hardirqs last  enabled at (972402): [<ffffffff8244360e>] _raw_spin_unlock_irqrestore+0x2e/0x50
        hardirqs last disabled at (972401): [<ffffffff82443328>] _raw_spin_lock_irqsave+0x18/0x60
        softirqs last  enabled at (972300): [<ffffffff810ffbbe>] handle_softirqs+0x3ee/0x430
        softirqs last disabled at (972313): [<ffffffff810ffc54>] __irq_exit_rcu+0x44/0x110
    
        other info that might help us debug this:
         Possible unsafe locking scenario:
               CPU0
               ----
          lock(&rxnet->peer_hash_lock);
          <Interrupt>
            lock(&rxnet->peer_hash_lock);
    
         *** DEADLOCK ***
        1 lock held by swapper/1/0:
         #0: ffffffff83576be0 (rcu_callback){....}-{0:0}, at: rcu_lock_acquire+0x7/0x30
    
        stack backtrace:
        CPU: 1 UID: 0 PID: 0 Comm: swapper/1 Tainted: G            E      6.13.0-rc5-build2+ #1223
        Tainted: [E]=UNSIGNED_MODULE
        Hardware name: ASUS All Series/H97-PLUS, BIOS 2306 10/09/2014
        Call Trace:
         <IRQ>
         dump_stack_lvl+0x57/0x80
         print_usage_bug.part.0+0x227/0x240
         valid_state+0x53/0x70
         mark_lock_irq+0xa5/0x2f0
         mark_lock+0xf7/0x170
         mark_usage+0xe1/0x180
         __lock_acquire+0x544/0x990
         lock_acquire.part.0+0x103/0x280
         _raw_spin_lock+0x2f/0x40
         rxrpc_put_peer+0xcb/0x180
         afs_free_addrlist+0x46/0x90 [kafs]
         rcu_do_batch+0x2d2/0x640
         rcu_core+0x2f7/0x350
         handle_softirqs+0x1ee/0x430
         __irq_exit_rcu+0x44/0x110
         irq_exit_rcu+0xa/0x30
         sysvec_apic_timer_interrupt+0x7f/0xa0
         </IRQ>
    
    Fixes: 72904d7b9bfb ("rxrpc, afs: Allow afs to pin rxrpc_peer objects")
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: Simon Horman <horms@kernel.org>
    cc: linux-afs@lists.infradead.org
    Link: https://patch.msgid.link/2095618.1737622752@warthog.procyon.org.uk
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rxrpc: Fix handling of received connection abort [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Wed Dec 4 07:46:30 2024 +0000

    rxrpc: Fix handling of received connection abort
    
    [ Upstream commit 0e56ebde245e4799ce74d38419426f2a80d39950 ]
    
    Fix the handling of a connection abort that we've received.  Though the
    abort is at the connection level, it needs propagating to the calls on that
    connection.  Whilst the propagation bit is performed, the calls aren't then
    woken up to go and process their termination, and as no further input is
    forthcoming, they just hang.
    
    Also add some tracing for the logging of connection aborts.
    
    Fixes: 248f219cb8bc ("rxrpc: Rewrite the data and ack handling code")
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Link: https://patch.msgid.link/20241204074710.990092-3-dhowells@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
s390/mm: Allow large pages for KASAN shadow mapping [+ + +]
Author: Vasily Gorbik <gor@linux.ibm.com>
Date:   Fri Nov 22 13:41:33 2024 +0100

    s390/mm: Allow large pages for KASAN shadow mapping
    
    [ Upstream commit ff123eb7741638d55abf82fac090bb3a543c1e74 ]
    
    Commit c98d2ecae08f ("s390/mm: Uncouple physical vs virtual address
    spaces") introduced a large_allowed() helper that restricts which mapping
    modes can use large pages. This change unintentionally prevented KASAN
    shadow mappings from using large pages, despite there being no reason
    to avoid them. In fact, large pages are preferred for performance.
    
    Add POPULATE_KASAN_MAP_SHADOW to the allowed list in large_allowed()
    to restore large page mappings for KASAN shadows.
    
    While large_allowed() isn't strictly necessary with current mapping
    modes since disallowed modes either don't map anything or fail alignment
    and size checks, keep it for clarity.
    
    Fixes: c98d2ecae08f ("s390/mm: Uncouple physical vs virtual address spaces")
    Acked-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
s390/sclp: Initialize sclp subsystem via arch_cpu_finalize_init() [+ + +]
Author: Heiko Carstens <hca@linux.ibm.com>
Date:   Mon Jan 20 11:53:42 2025 +0100

    s390/sclp: Initialize sclp subsystem via arch_cpu_finalize_init()
    
    [ Upstream commit 3bcc8a1af581af152d43e42b53db3534018301b5 ]
    
    With the switch to GENERIC_CPU_DEVICES an early call to the sclp subsystem
    was added to smp_prepare_cpus(). This will usually succeed since the sclp
    subsystem is implicitly initialized early enough if an sclp based console
    is present.
    
    If no such console is present the initialization happens with an
    arch_initcall(); in such cases calls to the sclp subsystem will fail.
    For CPU detection this means that the fallback sigp loop will be used
    permanently to detect CPUs instead of the preferred READ_CPU_INFO sclp
    request.
    
    Fix this by adding an explicit early sclp_init() call via
    arch_cpu_finalize_init().
    
    Reported-by: Sheshu Ramanandan <sheshu.ramanandan@ibm.com>
    Fixes: 4a39f12e753d ("s390/smp: Switch to GENERIC_CPU_DEVICES")
    Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
s390: Add '-std=gnu11' to decompressor and purgatory CFLAGS [+ + +]
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Wed Jan 22 19:54:27 2025 -0700

    s390: Add '-std=gnu11' to decompressor and purgatory CFLAGS
    
    commit 3b8b80e993766dc96d1a1c01c62f5d15fafc79b9 upstream.
    
    GCC changed the default C standard dialect from gnu17 to gnu23,
    which should not have impacted the kernel because it explicitly requests
    the gnu11 standard in the main Makefile. However, there are certain
    places in the s390 code that use their own CFLAGS without a '-std='
    value, which break with this dialect change because of the kernel's own
    definitions of bool, false, and true conflicting with the C23 reserved
    keywords.
    
      include/linux/stddef.h:11:9: error: cannot use keyword 'false' as enumeration constant
         11 |         false   = 0,
            |         ^~~~~
      include/linux/stddef.h:11:9: note: 'false' is a keyword with '-std=c23' onwards
      include/linux/types.h:35:33: error: 'bool' cannot be defined via 'typedef'
         35 | typedef _Bool                   bool;
            |                                 ^~~~
      include/linux/types.h:35:33: note: 'bool' is a keyword with '-std=c23' onwards
    
    Add '-std=gnu11' to the decompressor and purgatory CFLAGS to eliminate
    these errors and make the C standard version of these areas match the
    rest of the kernel.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Tested-by: Heiko Carstens <hca@linux.ibm.com>
    Link: https://lore.kernel.org/r/20250122-s390-fix-std-for-gcc-15-v1-1-8b00cadee083@kernel.org
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
samples/landlock: Fix possible NULL dereference in parse_path() [+ + +]
Author: Zichen Xie <zichenxie0106@gmail.com>
Date:   Wed Nov 27 21:29:56 2024 -0600

    samples/landlock: Fix possible NULL dereference in parse_path()
    
    [ Upstream commit 078bf9438a31567e2c0587159ccefde835fb1ced ]
    
    malloc() may return NULL, leading to NULL dereference.  Add a NULL
    check.
    
    Fixes: ba84b0bf5a16 ("samples/landlock: Add a sandbox manager example")
    Signed-off-by: Zichen Xie <zichenxie0106@gmail.com>
    Link: https://lore.kernel.org/r/20241128032955.11711-1-zichenxie0106@gmail.com
    [mic: Simplify fix]
    Signed-off-by: Mickaël Salaün <mic@digikod.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sched/fair: Fix value reported by hot tasks pulled in /proc/schedstat [+ + +]
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Dec 20 06:32:19 2024 +0000

    sched/fair: Fix value reported by hot tasks pulled in /proc/schedstat
    
    [ Upstream commit a430d99e349026d53e2557b7b22bd2ebd61fe12a ]
    
    In /proc/schedstat, lb_hot_gained reports the number hot tasks pulled
    during load balance. This value is incremented in can_migrate_task()
    if the task is migratable and hot. After incrementing the value,
    load balancer can still decide not to migrate this task leading to wrong
    accounting. Fix this by incrementing stats when hot tasks are detached.
    This issue only exists in detach_tasks() where we can decide to not
    migrate hot task even if it is migratable. However, in detach_one_task(),
    we migrate it unconditionally.
    
    [Swapnil: Handled the case where nr_failed_migrations_hot was not accounted properly and wrote commit log]
    
    Fixes: d31980846f96 ("sched: Move up affinity check to mitigate useless redoing overhead")
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reported-by: "Gautham R. Shenoy" <gautham.shenoy@amd.com>
    Not-yet-signed-off-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Swapnil Sapkal <swapnil.sapkal@amd.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20241220063224.17767-2-swapnil.sapkal@amd.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

sched/fair: Untangle NEXT_BUDDY and pick_next_task() [+ + +]
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Nov 29 11:15:41 2024 +0100

    sched/fair: Untangle NEXT_BUDDY and pick_next_task()
    
    [ Upstream commit 2a77e4be12cb58bbf774e7c717c8bb80e128b7a4 ]
    
    There are 3 sites using set_next_buddy() and only one is conditional
    on NEXT_BUDDY, the other two sites are unconditional; to note:
    
      - yield_to_task()
      - cgroup dequeue / pick optimization
    
    However, having NEXT_BUDDY control both the wakeup-preemption and the
    picking side of things means its near useless.
    
    Fixes: 147f3efaa241 ("sched/fair: Implement an EEVDF-like scheduling policy")
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20241129101541.GA33464@noisy.programming.kicks-ass.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sched: Fix race between yield_to() and try_to_wake_up() [+ + +]
Author: Tianchen Ding <dtcccc@linux.alibaba.com>
Date:   Tue Dec 31 13:50:20 2024 +0800

    sched: Fix race between yield_to() and try_to_wake_up()
    
    [ Upstream commit 5d808c78d97251af1d3a3e4f253e7d6c39fd871e ]
    
    We met a SCHED_WARN in set_next_buddy():
      __warn_printk
      set_next_buddy
      yield_to_task_fair
      yield_to
      kvm_vcpu_yield_to [kvm]
      ...
    
    After a short dig, we found the rq_lock held by yield_to() may not
    be exactly the rq that the target task belongs to. There is a race
    window against try_to_wake_up().
    
             CPU0                             target_task
    
                                            blocking on CPU1
       lock rq0 & rq1
       double check task_rq == p_rq, ok
                                            woken to CPU2 (lock task_pi & rq2)
                                            task_rq = rq2
       yield_to_task_fair (w/o lock rq2)
    
    In this race window, yield_to() is operating the task w/o the correct
    lock. Fix this by taking task pi_lock first.
    
    Fixes: d95f41220065 ("sched: Add yield_to(task, preempt) functionality")
    Signed-off-by: Tianchen Ding <dtcccc@linux.alibaba.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20241231055020.6521-1-dtcccc@linux.alibaba.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

sched: psi: pass enqueue/dequeue flags to psi callbacks directly [+ + +]
Author: Johannes Weiner <hannes@cmpxchg.org>
Date:   Mon Oct 14 10:43:58 2024 -0400

    sched: psi: pass enqueue/dequeue flags to psi callbacks directly
    
    [ Upstream commit 1a6151017ee5a30cb2d959f110ab18fc49646467 ]
    
    What psi needs to do on each enqueue and dequeue has gotten more
    subtle, and the generic sched code trying to distill this into a bool
    for the callbacks is awkward.
    
    Pass the flags directly and let psi parse them. For that to work, the
    #include "stats.h" (which has the psi callback implementations) needs
    to be below the flag definitions in "sched.h". Move that section
    further down, next to some of the other accounting stuff.
    
    This also puts the ENQUEUE_SAVE/RESTORE branch behind the psi jump
    label, slightly reducing overhead when PSI=y but runtime disabled.
    
    Suggested-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20241014144358.GB1021@cmpxchg.org
    Stable-dep-of: 7d9da040575b ("psi: Fix race when task wakes up before psi_sched_switch() adjusts flags")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

sched: Split out __schedule() deactivate task logic into a helper [+ + +]
Author: John Stultz <jstultz@google.com>
Date:   Wed Oct 9 16:53:39 2024 -0700

    sched: Split out __schedule() deactivate task logic into a helper
    
    [ Upstream commit 7b3d61f6578ab06f130ecc13cd2f3010a6c295bb ]
    
    As we're going to re-use the deactivation logic,
    split it into a helper.
    
    Signed-off-by: John Stultz <jstultz@google.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Metin Kaya <metin.kaya@arm.com>
    Reviewed-by: Qais Yousef <qyousef@layalina.io>
    Tested-by: K Prateek Nayak <kprateek.nayak@amd.com>
    Tested-by: Metin Kaya <metin.kaya@arm.com>
    Link: https://lore.kernel.org/r/20241009235352.1614323-7-jstultz@google.com
    Stable-dep-of: 7d9da040575b ("psi: Fix race when task wakes up before psi_sched_switch() adjusts flags")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scsi: mpi3mr: Fix possible crash when setting up bsg fails [+ + +]
Author: Guixin Liu <kanie@linux.alibaba.com>
Date:   Tue Jan 7 10:20:32 2025 +0800

    scsi: mpi3mr: Fix possible crash when setting up bsg fails
    
    [ Upstream commit 295006f6e8c17212d3098811166e29627d19e05c ]
    
    If bsg_setup_queue() fails, the bsg_queue is assigned a non-NULL value.
    Consequently, in mpi3mr_bsg_exit(), the condition "if(!mrioc->bsg_queue)"
    will not be satisfied, preventing execution from entering
    bsg_remove_queue(), which could lead to the following crash:
    
    BUG: kernel NULL pointer dereference, address: 000000000000041c
    Call Trace:
      <TASK>
      mpi3mr_bsg_exit+0x1f/0x50 [mpi3mr]
      mpi3mr_remove+0x6f/0x340 [mpi3mr]
      pci_device_remove+0x3f/0xb0
      device_release_driver_internal+0x19d/0x220
      unbind_store+0xa4/0xb0
      kernfs_fop_write_iter+0x11f/0x200
      vfs_write+0x1fc/0x3e0
      ksys_write+0x67/0xe0
      do_syscall_64+0x38/0x80
      entry_SYSCALL_64_after_hwframe+0x78/0xe2
    
    Fixes: 4268fa751365 ("scsi: mpi3mr: Add bsg device support")
    Signed-off-by: Guixin Liu <kanie@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20250107022032.24006-1-kanie@linux.alibaba.com
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: mpt3sas: Set ioc->manu_pg11.EEDPTagMode directly to 1 [+ + +]
Author: Paul Menzel <pmenzel@molgen.mpg.de>
Date:   Thu Dec 12 23:18:12 2024 +0100

    scsi: mpt3sas: Set ioc->manu_pg11.EEDPTagMode directly to 1
    
    [ Upstream commit ad7c3c0cb8f61d6d5a48b83e62ca4a9fd2f26153 ]
    
    Currently, the code does:
    
        if (x == 0) {
            x &= ~0x3;
            x |= 0x1;
        }
    
    Zeroing bits 0 and 1 of a variable that is 0 is not necessary. So directly
    set the variable to 1.
    
    Cc: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
    Fixes: f92363d12359 ("[SCSI] mpt3sas: add new driver supporting 12GB SAS")
    Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Link: https://lore.kernel.org/r/20241212221817.78940-2-pmenzel@molgen.mpg.de
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: ufs: bsg: Delete bsg_dev when setting up bsg fails [+ + +]
Author: Guixin Liu <kanie@linux.alibaba.com>
Date:   Wed Dec 18 09:42:13 2024 +0800

    scsi: ufs: bsg: Delete bsg_dev when setting up bsg fails
    
    [ Upstream commit fcf247deb3c3e1c6be5774e3fa03bbd018eff1a9 ]
    
    We should remove the bsg device when bsg_setup_queue() fails to release the
    resources.
    
    Fixes: df032bf27a41 ("scsi: ufs: Add a bsg endpoint that supports UPIUs")
    Signed-off-by: Guixin Liu <kanie@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20241218014214.64533-2-kanie@linux.alibaba.com
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
select: Fix unbalanced user_access_end() [+ + +]
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Mon Jan 13 09:37:24 2025 +0100

    select: Fix unbalanced user_access_end()
    
    [ Upstream commit 344af27715ddbf357cf76978d674428b88f8e92d ]
    
    While working on implementing user access validation on powerpc
    I got the following warnings on a pmac32_defconfig build:
    
              CC      fs/select.o
            fs/select.o: warning: objtool: sys_pselect6+0x1bc: redundant UACCESS disable
            fs/select.o: warning: objtool: sys_pselect6_time32+0x1bc: redundant UACCESS disable
    
    On powerpc/32s, user_read_access_begin/end() are no-ops, but the
    failure path has a user_access_end() instead of user_read_access_end()
    which means an access end without any prior access begin.
    
    Replace that user_access_end() by user_read_access_end().
    
    Fixes: 7e71609f64ec ("pselect6() and friends: take handling the combined 6th/7th args into helper")
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Link: https://lore.kernel.org/r/a7139e28d767a13e667ee3c79599a8047222ef36.1736751221.git.christophe.leroy@csgroup.eu
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/bpf: Actuate tx_metadata_len in xdp_hw_metadata [+ + +]
Author: Song Yoong Siang <yoong.siang.song@intel.com>
Date:   Thu Dec 5 12:42:58 2024 +0800

    selftests/bpf: Actuate tx_metadata_len in xdp_hw_metadata
    
    [ Upstream commit 0bee36d1a51366fa57b731f8975f26f92943b43e ]
    
    set XDP_UMEM_TX_METADATA_LEN flag to reserve tx_metadata_len bytes of
    per-chunk metadata.
    
    Fixes: d5e726d9143c ("xsk: Require XDP_UMEM_TX_METADATA_LEN to actuate tx_metadata_len")
    Signed-off-by: Song Yoong Siang <yoong.siang.song@intel.com>
    Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
    Acked-by: Stanislav Fomichev <sdf@fomichev.me>
    Link: https://patch.msgid.link/20241205044258.3155799-1-yoong.siang.song@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests/bpf: Add test to verify tailcall and freplace restrictions [+ + +]
Author: Leon Hwang <leon.hwang@linux.dev>
Date:   Tue Oct 15 23:02:07 2024 +0800

    selftests/bpf: Add test to verify tailcall and freplace restrictions
    
    commit 021611d33e78694f4bd54573093c6fc70a812644 upstream.
    
    Add a test case to ensure that attaching a tail callee program with an
    freplace program fails, and that updating an extended program to a
    prog_array map is also prohibited.
    
    This test is designed to prevent the potential infinite loop issue caused
    by the combination of tail calls and freplace, ensuring the correct
    behavior and stability of the system.
    
    Additionally, fix the broken tailcalls/tailcall_freplace selftest
    because an extension prog should not be tailcalled.
    
    cd tools/testing/selftests/bpf; ./test_progs -t tailcalls
    337/25  tailcalls/tailcall_freplace:OK
    337/26  tailcalls/tailcall_bpf2bpf_freplace:OK
    337     tailcalls:OK
    Summary: 1/26 PASSED, 0 SKIPPED, 0 FAILED
    
    Acked-by: Eduard Zingerman <eddyz87@gmail.com>
    Signed-off-by: Leon Hwang <leon.hwang@linux.dev>
    Link: https://lore.kernel.org/r/20241015150207.70264-3-leon.hwang@linux.dev
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    [ Yifei: bpf freplace update is backported to linux-6.12 by commit 987aa730bad3
      ("bpf: Prevent tailcall infinite loop caused by freplace"). It will cause
      selftest #336/25 failed. ]
    Signed-off-by: Yifei Liu <yifei.l.liu@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

selftests/bpf: Avoid generating untracked files when running bpf selftests [+ + +]
Author: Jiayuan Chen <mrpre@163.com>
Date:   Tue Dec 24 15:59:57 2024 +0800

    selftests/bpf: Avoid generating untracked files when running bpf selftests
    
    [ Upstream commit 73b9075f334f5debf28646884a320b796b27768d ]
    
    Currently, when we run the BPF selftests with the following command:
    
      make -C tools/testing/selftests TARGETS=bpf SKIP_TARGETS=""
    
    The command generates untracked files and directories with make version
    less than 4.4:
    
    '''
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            tools/testing/selftests/bpfFEATURE-DUMP.selftests
            tools/testing/selftests/bpffeature/
    '''
    
    We lost slash after word "bpf". The reason is slash appending code is as
    follow:
    
    '''
    OUTPUT := $(OUTPUT)/
    $(eval include ../../../build/Makefile.feature)
    OUTPUT := $(patsubst %/,%,$(OUTPUT))
    '''
    
    This way of assigning values to OUTPUT will never be effective for the
    variable OUTPUT provided via the command argument [1] and BPF makefile
    is called from parent Makfile(tools/testing/selftests/Makefile) like:
    
    '''
    all:
      ...
            $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET
    '''
    
    According to GNU make, we can use override Directive to fix this issue [2].
    
      [1] https://www.gnu.org/software/make/manual/make.html#Overriding
      [2] https://www.gnu.org/software/make/manual/make.html#Override-Directive
    
    Fixes: dc3a8804d790 ("selftests/bpf: Adapt OUTPUT appending logic to lower versions of Make")
    Signed-off-by: Jiayuan Chen <mrpre@163.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Link: https://lore.kernel.org/bpf/20241224075957.288018-1-mrpre@163.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests/bpf: Fix btf leak on new btf alloc failure in btf_distill test [+ + +]
Author: Pu Lehui <pulehui@huawei.com>
Date:   Wed Jan 15 10:02:38 2025 +0000

    selftests/bpf: Fix btf leak on new btf alloc failure in btf_distill test
    
    [ Upstream commit 4a04cb326a6c7f9a2c066f8c2ca78a5a9b87ddab ]
    
    Fix btf leak on new btf alloc failure in btf_distill test.
    
    Fixes: affdeb50616b ("selftests/bpf: Extend distilled BTF tests to cover BTF relocation")
    Signed-off-by: Pu Lehui <pulehui@huawei.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20250115100241.4171581-1-pulehui@huaweicloud.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests/bpf: Fix fill_link_info selftest on powerpc [+ + +]
Author: Saket Kumar Bhaskar <skb99@linux.ibm.com>
Date:   Mon Dec 9 12:27:20 2024 +0530

    selftests/bpf: Fix fill_link_info selftest on powerpc
    
    [ Upstream commit 4d33dc1bc31df80356c49e40dbd3ddff19500bcb ]
    
    With CONFIG_KPROBES_ON_FTRACE enabled on powerpc, ftrace_location_range
    returns ftrace location for bpf_fentry_test1 at offset of 4 bytes from
    function entry. This is because branch to _mcount function is at offset
    of 4 bytes in function profile sequence.
    
    To fix this, add entry_offset of 4 bytes while verifying the address for
    kprobe entry address of bpf_fentry_test1 in verify_perf_link_info in
    selftest, when CONFIG_KPROBES_ON_FTRACE is enabled.
    
    Disassemble of bpf_fentry_test1:
    
    c000000000e4b080 <bpf_fentry_test1>:
    c000000000e4b080:       a6 02 08 7c     mflr    r0
    c000000000e4b084:       b9 e2 22 4b     bl      c00000000007933c <_mcount>
    c000000000e4b088:       01 00 63 38     addi    r3,r3,1
    c000000000e4b08c:       b4 07 63 7c     extsw   r3,r3
    c000000000e4b090:       20 00 80 4e     blr
    
    When CONFIG_PPC_FTRACE_OUT_OF_LINE [1] is enabled, these function profile
    sequence is moved out of line with an unconditional branch at offset 0.
    So, the test works without altering the offset for
    'CONFIG_KPROBES_ON_FTRACE && CONFIG_PPC_FTRACE_OUT_OF_LINE' case.
    
    Disassemble of bpf_fentry_test1:
    
    c000000000f95190 <bpf_fentry_test1>:
    c000000000f95190:       00 00 00 60     nop
    c000000000f95194:       01 00 63 38     addi    r3,r3,1
    c000000000f95198:       b4 07 63 7c     extsw   r3,r3
    c000000000f9519c:       20 00 80 4e     blr
    
    [1] https://lore.kernel.org/all/20241030070850.1361304-13-hbathini@linux.ibm.com/
    
    Fixes: 23cf7aa539dc ("selftests/bpf: Add selftest for fill_link_info")
    Signed-off-by: Saket Kumar Bhaskar <skb99@linux.ibm.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20241209065720.234344-1-skb99@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/ftrace: Fix to use remount when testing mount GID option [+ + +]
Author: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Date:   Tue Jan 7 21:11:07 2025 +0900

    selftests/ftrace: Fix to use remount when testing mount GID option
    
    commit 159ca65c42d90d5ab98fc31b708b12c0be2c26e0 upstream.
    
    Fix mount_options.tc to use remount option to mount the tracefs.
    Since the current implementation does not umount the tracefs,
    this test always fails because of -EBUSY error.
    Using remount option will allow us to change the mount option.
    
    Link: https://lore.kernel.org/r/173625186741.1383744.16707876180798573039.stgit@devnote2
    Fixes: 8b55572e5180 ("tracing/selftests: Add tracefs mount options test")
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
selftests/landlock: Fix build with non-default pthread linking [+ + +]
Author: Mickaël Salaün <mic@digikod.net>
Date:   Wed Jan 15 15:54:07 2025 +0100

    selftests/landlock: Fix build with non-default pthread linking
    
    [ Upstream commit 0e4db4f843c2c0115b5981bd6f6b75dea62e7d60 ]
    
    Old toolchains require explicit -lpthread (e.g. on Debian 11).
    
    Cc: Nathan Chancellor <nathan@kernel.org>
    Cc: Tahera Fahimi <fahimitahera@gmail.com>
    Fixes: c8994965013e ("selftests/landlock: Test signal scoping for threads")
    Reviewed-by: Günther Noack <gnoack3000@gmail.com>
    Link: https://lore.kernel.org/r/20250115145409.312226-1-mic@digikod.net
    Signed-off-by: Mickaël Salaün <mic@digikod.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests/landlock: Fix error message [+ + +]
Author: Mickaël Salaün <mic@digikod.net>
Date:   Wed Jan 8 16:43:28 2025 +0100

    selftests/landlock: Fix error message
    
    [ Upstream commit 2107c35128ad751b201eb92fe91443450d9e5c37 ]
    
    The global variable errno may not be set in test_execute().  Do not use
    it in related error message.
    
    Cc: Günther Noack <gnoack@google.com>
    Fixes: e1199815b47b ("selftests/landlock: Add user space tests")
    Link: https://lore.kernel.org/r/20250108154338.1129069-21-mic@digikod.net
    Signed-off-by: Mickaël Salaün <mic@digikod.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/powerpc: Fix argument order to timer_sub() [+ + +]
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed Dec 18 22:43:47 2024 +1100

    selftests/powerpc: Fix argument order to timer_sub()
    
    [ Upstream commit 2bf66e66d2e6feece6175ec09ec590a0a8563bdd ]
    
    Commit c814bf958926 ("powerpc/selftests: Use timersub() for
    gettimeofday()"), got the order of arguments to timersub() wrong,
    leading to a negative time delta being reported, eg:
    
      test: gettimeofday
      tags: git_version:v6.12-rc5-409-gdddf291c3030
      time = -3.297781
      success: gettimeofday
    
    The correct order is minuend, subtrahend, which in this case is end,
    start. Which gives:
    
      test: gettimeofday
      tags: git_version:v6.12-rc5-409-gdddf291c3030-dirty
      time = 3.300650
      success: gettimeofday
    
    Fixes: c814bf958926 ("powerpc/selftests: Use timersub() for gettimeofday()")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
    Link: https://patch.msgid.link/20241218114347.428108-1-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/rseq: Fix handling of glibc without rseq support [+ + +]
Author: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Date:   Tue Jan 14 09:51:32 2025 -0500

    selftests/rseq: Fix handling of glibc without rseq support
    
    commit 336d02bc4c6bec5c3d933e5d470a94970f830957 upstream.
    
    When porting librseq commit:
    
    commit c7b45750fa85 ("Adapt to glibc __rseq_size feature detection")
    
    from librseq to the kernel selftests, the following line was missed
    at the end of rseq_init():
    
      rseq_size = get_rseq_kernel_feature_size();
    
    which effectively leaves rseq_size initialized to -1U when glibc does not
    have rseq support. glibc supports rseq from version 2.35 onwards.
    
    In a following librseq commit
    
    commit c67d198627c2 ("Only set 'rseq_size' on first thread registration")
    
    to mimic the libc behavior, a new approach is taken: don't set the
    feature size in 'rseq_size' until at least one thread has successfully
    registered. This allows using 'rseq_size' in fast-paths to test for both
    registration status and available features. The caveat is that on libc
    either all threads are registered or none are, while with bare librseq
    it is the responsability of the user to register all threads using rseq.
    
    This combines the changes from the following librseq git commits:
    
    commit c7b45750fa85 ("Adapt to glibc __rseq_size feature detection")
    commit c67d198627c2 ("Only set 'rseq_size' on first thread registration")
    
    Fixes: a0cc649353bb ("selftests/rseq: Fix mm_cid test failure")
    Reported-by: Raghavendra Rao Ananta <rananta@google.com>
    Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Raghavendra Rao Ananta <rananta@google.com>
    Cc: Shuah Khan <skhan@linuxfoundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Cc: "Paul E. McKenney" <paulmck@kernel.org>
    Cc: Carlos O'Donell <carlos@redhat.com>
    Cc: Florian Weimer <fweimer@redhat.com>
    Cc: Michael Jeanson <mjeanson@efficios.com>
    Cc: linux-kselftest@vger.kernel.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
selftests: harness: fix printing of mismatch values in __EXPECT() [+ + +]
Author: Dmitry V. Levin <ldv@strace.io>
Date:   Wed Jan 8 19:07:57 2025 +0200

    selftests: harness: fix printing of mismatch values in __EXPECT()
    
    [ Upstream commit 02bc220dc6dc7c56edc4859bc5dd2c08b95d5fb5 ]
    
    intptr_t and uintptr_t are not big enough types on 32-bit architectures
    when printing 64-bit values, resulting to the following incorrect
    diagnostic output:
    
      # get_syscall_info.c:209:get_syscall_info:Expected exp_args[2] (3134324433) == info.entry.args[1] (3134324433)
    
    Replace intptr_t and uintptr_t with intmax_t and uintmax_t, respectively.
    With this fix, the same test produces more usable diagnostic output:
    
      # get_syscall_info.c:209:get_syscall_info:Expected exp_args[2] (3134324433) == info.entry.args[1] (18446744072548908753)
    
    Link: https://lore.kernel.org/r/20250108170757.GA6723@strace.io
    Fixes: b5bb6d3068ea ("selftests/seccomp: fix 32-bit build warnings")
    Signed-off-by: Dmitry V. Levin <ldv@strace.io>
    Reviewed-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests: ktap_helpers: Fix uninitialized variable [+ + +]
Author: Mickaël Salaün <mic@digikod.net>
Date:   Thu Dec 12 18:42:21 2024 +0100

    selftests: ktap_helpers: Fix uninitialized variable
    
    [ Upstream commit 3e707b07f582c12ed78fa5516a97bf701bf0634c ]
    
    __ktap_test() may be called without the optional third argument which is
    an issue for scripts using `set -u` to detect uninitialized variables
    and potential bugs.
    
    Fix this optional "directive" argument by either using the third
    argument or an empty string.
    
    This is required for the next commit to properly test script execution
    control.
    
    Cc: Kees Cook <kees@kernel.org>
    Cc: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Cc: Shuah Khan <skhan@linuxfoundation.org>
    Fixes: 14571ab1ad21 ("kselftest: Add new test for detecting unprobed Devicetree devices")
    Signed-off-by: Mickaël Salaün <mic@digikod.net>
    Link: https://lore.kernel.org/r/20241212174223.389435-7-mic@digikod.net
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests: mptcp: extend CFLAGS to keep options from environment [+ + +]
Author: Jan Stancek <jstancek@redhat.com>
Date:   Thu Jan 23 09:35:42 2025 +0100

    selftests: mptcp: extend CFLAGS to keep options from environment
    
    [ Upstream commit 23b3a7c4a7583eac9e3976355928a832c87caa0f ]
    
    Package build environments like Fedora rpmbuild introduced hardening
    options (e.g. -pie -Wl,-z,now) by passing a -spec option to CFLAGS
    and LDFLAGS.
    
    mptcp Makefile currently overrides CFLAGS but not LDFLAGS, which leads
    to a mismatch and build failure, for example:
      make[1]: *** [../../lib.mk:222: tools/testing/selftests/net/mptcp/mptcp_sockopt] Error 1
      /usr/bin/ld: /tmp/ccqyMVdb.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIE
      /usr/bin/ld: failed to set dynamic section sizes: bad value
      collect2: error: ld returned 1 exit status
    
    Fixes: cc937dad85ae ("selftests: centralize -D_GNU_SOURCE= to CFLAGS in lib.mk")
    Signed-off-by: Jan Stancek <jstancek@redhat.com>
    Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/7abc701da9df39c2d6cd15bc3cf9e6cee445cb96.1737621162.git.jstancek@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests: net/{lib,openvswitch}: extend CFLAGS to keep options from environment [+ + +]
Author: Jan Stancek <jstancek@redhat.com>
Date:   Thu Jan 23 13:38:51 2025 +0100

    selftests: net/{lib,openvswitch}: extend CFLAGS to keep options from environment
    
    [ Upstream commit 9b06d5b956131bde535f5c045cf8c1ff6bfba76c ]
    
    Package build environments like Fedora rpmbuild introduced hardening
    options (e.g. -pie -Wl,-z,now) by passing a -spec option to CFLAGS
    and LDFLAGS.
    
    Some Makefiles currently override CFLAGS but not LDFLAGS, which leads
    to a mismatch and build failure, for example:
      /usr/bin/ld: /tmp/ccd2apay.o: relocation R_X86_64_32 against
        `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
      /usr/bin/ld: failed to set dynamic section sizes: bad value
      collect2: error: ld returned 1 exit status
      make[1]: *** [../../lib.mk:222: tools/testing/selftests/net/lib/csum] Error 1
    
    openvswitch/Makefile CFLAGS currently do not appear to be used, but
    fix it anyway for the case when new tests are introduced in future.
    
    Fixes: 1d0dc857b5d8 ("selftests: drv-net: add checksum tests")
    Signed-off-by: Jan Stancek <jstancek@redhat.com>
    Acked-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
    Link: https://patch.msgid.link/3d173603ee258f419d0403363765c9f9494ff79a.1737635092.git.jstancek@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests: timers: clocksource-switch: Adapt progress to kselftest framework [+ + +]
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Thu Dec 12 10:02:56 2024 +0100

    selftests: timers: clocksource-switch: Adapt progress to kselftest framework
    
    [ Upstream commit 8694e6a7f7dba23d3abd9f5a96f64d161704c7b1 ]
    
    When adapting the test to the kselftest framework, a few printf() calls
    indicating test progress were not updated.
    
    Fix this by replacing these printf() calls by ksft_print_msg() calls.
    
    Link: https://lore.kernel.org/r/7dd4b9ab6e43268846e250878ebf25ae6d3d01ce.1733994134.git.geert+renesas@glider.be
    Fixes: ce7d101750ff ("selftests: timers: clocksource-switch: adapt to kselftest framework")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
serial: 8250: Adjust the timeout for FIFO mode [+ + +]
Author: John Ogness <john.ogness@linutronix.de>
Date:   Tue Jan 7 22:32:57 2025 +0106

    serial: 8250: Adjust the timeout for FIFO mode
    
    [ Upstream commit d91f98be26510f5f81ec66425bb0306d1ccd571a ]
    
    After a console has written a record into UART_TX, it uses
    wait_for_xmitr() to wait until the data has been sent out before
    returning. However, wait_for_xmitr() will timeout after 10ms,
    regardless if the data has been transmitted or not.
    
    For single bytes, this timeout is sufficient even at very slow
    baud rates, such as 1200bps. However, when FIFO mode is used,
    there may be 64 bytes pushed into the FIFO at once. At a baud
    rate of 115200bps, the 10ms timeout is still sufficient. But
    when using lower baud rates (such as 57600bps), the timeout
    is _not_ sufficient. This causes longer lines to be cut off,
    resulting in lost and horribly misformatted output on the
    console.
    
    When using FIFO mode, take the number of bytes into account to
    determine an appropriate maximum timeout. Increasing the timeout
    does not affect performance since ideally the timeout never
    occurs.
    
    Fixes: 8f3631f0f6eb ("serial/8250: Use fifo in 8250 console driver")
    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Wander Lairson Costa <wander@redhat.com>
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    Link: https://lore.kernel.org/r/20250107212702.169493-2-john.ogness@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
smb: client: fix oops due to unset link speed [+ + +]
Author: Paulo Alcantara <pc@manguebit.com>
Date:   Thu Jan 16 14:29:03 2025 -0300

    smb: client: fix oops due to unset link speed
    
    [ Upstream commit be7a6a77669588bfa5022a470989702bbbb11e7f ]
    
    It isn't guaranteed that NETWORK_INTERFACE_INFO::LinkSpeed will always
    be set by the server, so the client must handle any values and then
    prevent oopses like below from happening:
    
    Oops: divide error: 0000 [#1] PREEMPT SMP KASAN NOPTI
    CPU: 0 UID: 0 PID: 1323 Comm: cat Not tainted 6.13.0-rc7 #2
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-3.fc41
    04/01/2014
    RIP: 0010:cifs_debug_data_proc_show+0xa45/0x1460 [cifs] Code: 00 00 48
    89 df e8 3b cd 1b c1 41 f6 44 24 2c 04 0f 84 50 01 00 00 48 89 ef e8
    e7 d0 1b c1 49 8b 44 24 18 31 d2 49 8d 7c 24 28 <48> f7 74 24 18 48 89
    c3 e8 6e cf 1b c1 41 8b 6c 24 28 49 8d 7c 24
    RSP: 0018:ffffc90001817be0 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: ffff88811230022c RCX: ffffffffc041bd99
    RDX: 0000000000000000 RSI: 0000000000000567 RDI: ffff888112300228
    RBP: ffff888112300218 R08: fffff52000302f5f R09: ffffed1022fa58ac
    R10: ffff888117d2c566 R11: 00000000fffffffe R12: ffff888112300200
    R13: 000000012a15343f R14: 0000000000000001 R15: ffff888113f2db58
    FS: 00007fe27119e740(0000) GS:ffff888148600000(0000)
    knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fe2633c5000 CR3: 0000000124da0000 CR4: 0000000000750ef0
    PKRU: 55555554
    Call Trace:
     <TASK>
     ? __die_body.cold+0x19/0x27
     ? die+0x2e/0x50
     ? do_trap+0x159/0x1b0
     ? cifs_debug_data_proc_show+0xa45/0x1460 [cifs]
     ? do_error_trap+0x90/0x130
     ? cifs_debug_data_proc_show+0xa45/0x1460 [cifs]
     ? exc_divide_error+0x39/0x50
     ? cifs_debug_data_proc_show+0xa45/0x1460 [cifs]
     ? asm_exc_divide_error+0x1a/0x20
     ? cifs_debug_data_proc_show+0xa39/0x1460 [cifs]
     ? cifs_debug_data_proc_show+0xa45/0x1460 [cifs]
     ? seq_read_iter+0x42e/0x790
     seq_read_iter+0x19a/0x790
     proc_reg_read_iter+0xbe/0x110
     ? __pfx_proc_reg_read_iter+0x10/0x10
     vfs_read+0x469/0x570
     ? do_user_addr_fault+0x398/0x760
     ? __pfx_vfs_read+0x10/0x10
     ? find_held_lock+0x8a/0xa0
     ? __pfx_lock_release+0x10/0x10
     ksys_read+0xd3/0x170
     ? __pfx_ksys_read+0x10/0x10
     ? __rcu_read_unlock+0x50/0x270
     ? mark_held_locks+0x1a/0x90
     do_syscall_64+0xbb/0x1d0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7fe271288911
    Code: 00 48 8b 15 01 25 10 00 f7 d8 64 89 02 b8 ff ff ff ff eb bd e8
    20 ad 01 00 f3 0f 1e fa 80 3d b5 a7 10 00 00 74 13 31 c0 0f 05 <48> 3d
    00 f0 ff ff 77 4f c3 66 0f 1f 44 00 00 55 48 89 e5 48 83 ec
    RSP: 002b:00007ffe87c079d8 EFLAGS: 00000246 ORIG_RAX: 0000000000000000
    RAX: ffffffffffffffda RBX: 0000000000040000 RCX: 00007fe271288911
    RDX: 0000000000040000 RSI: 00007fe2633c6000 RDI: 0000000000000003
    RBP: 00007ffe87c07a00 R08: 0000000000000000 R09: 00007fe2713e6380
    R10: 0000000000000022 R11: 0000000000000246 R12: 0000000000040000
    R13: 00007fe2633c6000 R14: 0000000000000003 R15: 0000000000000000
     </TASK>
    
    Fix this by setting cifs_server_iface::speed to a sane value (1Gbps)
    by default when link speed is unset.
    
    Cc: Shyam Prasad N <nspmangalore@gmail.com>
    Cc: Tom Talpey <tom@talpey.com>
    Fixes: a6d8fb54a515 ("cifs: distribute channels across interfaces based on speed")
    Reported-by: Frank Sorenson <sorenson@redhat.com>
    Reported-by: Jay Shin <jaeshin@redhat.com>
    Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
soc: atmel: fix device_node release in atmel_soc_device_init() [+ + +]
Author: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Date:   Thu Oct 31 13:33:36 2024 +0100

    soc: atmel: fix device_node release in atmel_soc_device_init()
    
    [ Upstream commit d3455ab798100f40af77123e7c2443ec979c546b ]
    
    A device_node acquired via of_find_node_by_path() requires explicit
    calls to of_node_put() when it is no longer needed to avoid leaking the
    resource.
    
    Instead of adding the missing calls to of_node_put() in all execution
    paths, use the cleanup attribute for 'np' by means of the __free()
    macro, which automatically calls of_node_put() when the variable goes
    out of scope.
    
    Fixes: 960ddf70cc11 ("drivers: soc: atmel: Avoid calling at91_soc_init on non AT91 SoCs")
    Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
    Link: https://lore.kernel.org/r/20241031-soc-atmel-soc-cleanup-v2-1-73f2d235fd98@gmail.com
    Signed-off-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
spi: omap2-mcspi: Correctly handle devm_clk_get_optional() errors [+ + +]
Author: Mark Brown <broonie@kernel.org>
Date:   Fri Jan 17 16:16:03 2025 +0000

    spi: omap2-mcspi: Correctly handle devm_clk_get_optional() errors
    
    [ Upstream commit a07eb4f67ed085f32002a1af2b6073546d67de3f ]
    
    devm_clk_get_optional() returns NULL for missing clocks and a PTR_ERR()
    if there is a clock but we fail to get it, but currently we only handle
    the latter case and do so as though the clock was missing.  If we get an
    error back we should handle that as an error since the clock exists but
    we failed to get it, if we get NULL then the clock doesn't exist and we
    should handle that.
    
    Fixes: 4c6ac5446d06 ("spi: omap2-mcspi: Fix the IS_ERR() bug for devm_clk_get_optional_enabled()")
    Reported-by: Lars Pedersen <lapeddk@gmail.com>
    Link: https://patch.msgid.link/20250117-spi-fix-omap2-optional-v1-1-e77d4ac6db6e@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Tested-by: Lars Pedersen <lapeddk@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: zynq-qspi: Add check for clk_enable() [+ + +]
Author: Mingwei Zheng <zmw12306@gmail.com>
Date:   Fri Dec 6 20:52:06 2024 -0500

    spi: zynq-qspi: Add check for clk_enable()
    
    [ Upstream commit 8332e667099712e05ec87ba2058af394b51ebdc9 ]
    
    Add check for the return value of clk_enable() to catch the potential
    error.
    
    Fixes: c618a90dcaf3 ("spi: zynq-qspi: Drop GPIO header")
    Signed-off-by: Mingwei Zheng <zmw12306@gmail.com>
    Signed-off-by: Jiasheng Jiang <jiashengjiangcool@gmail.com>
    Link: https://patch.msgid.link/20241207015206.3689364-1-zmw12306@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
staging: media: imx: fix OF node leak in imx_media_add_of_subdevs() [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Tue Dec 24 12:54:11 2024 +0900

    staging: media: imx: fix OF node leak in imx_media_add_of_subdevs()
    
    [ Upstream commit 094f5c315f756b19198e6c401aa821ac0e868750 ]
    
    imx_media_add_of_subdevs() calls of_parse_phandle() and passes the
    obtained node to imx_media_of_add_csi(). The passed node is used in
    v4l2_async_nf_add_fwnode(), which increments the refcount of the node.
    Therefore, while the current implementation only releases the node when
    imx_media_of_add_csi() fails, but should always release it. Call
    of_node_put() right after imx_media_of_add_csi().
    
    Fixes: dee747f88167 ("media: imx: Don't register IPU subdevs/links if CSI port missing")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
    Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

staging: media: max96712: fix kernel oops when removing module [+ + +]
Author: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
Date:   Tue Dec 17 08:51:50 2024 +0200

    staging: media: max96712: fix kernel oops when removing module
    
    commit ee1b5046d5cd892a0754ab982aeaaad3702083a5 upstream.
    
    The following kernel oops is thrown when trying to remove the max96712
    module:
    
    Unable to handle kernel paging request at virtual address 00007375746174db
    Mem abort info:
      ESR = 0x0000000096000004
      EC = 0x25: DABT (current EL), IL = 32 bits
      SET = 0, FnV = 0
      EA = 0, S1PTW = 0
      FSC = 0x04: level 0 translation fault
    Data abort info:
      ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
      CM = 0, WnR = 0, TnD = 0, TagAccess = 0
      GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
    user pgtable: 4k pages, 48-bit VAs, pgdp=000000010af89000
    [00007375746174db] pgd=0000000000000000, p4d=0000000000000000
    Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP
    Modules linked in: crct10dif_ce polyval_ce mxc_jpeg_encdec flexcan
        snd_soc_fsl_sai snd_soc_fsl_asoc_card snd_soc_fsl_micfil dwc_mipi_csi2
        imx_csi_formatter polyval_generic v4l2_jpeg imx_pcm_dma can_dev
        snd_soc_imx_audmux snd_soc_wm8962 snd_soc_imx_card snd_soc_fsl_utils
        max96712(C-) rpmsg_ctrl rpmsg_char pwm_fan fuse
        [last unloaded: imx8_isi]
    CPU: 0 UID: 0 PID: 754 Comm: rmmod
                Tainted: G         C    6.12.0-rc6-06364-g327fec852c31 #17
    Tainted: [C]=CRAP
    Hardware name: NXP i.MX95 19X19 board (DT)
    pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : led_put+0x1c/0x40
    lr : v4l2_subdev_put_privacy_led+0x48/0x58
    sp : ffff80008699bbb0
    x29: ffff80008699bbb0 x28: ffff00008ac233c0 x27: 0000000000000000
    x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000000
    x23: ffff000080cf1170 x22: ffff00008b53bd00 x21: ffff8000822ad1c8
    x20: ffff000080ff5c00 x19: ffff00008b53be40 x18: 0000000000000000
    x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
    x14: 0000000000000004 x13: ffff0000800f8010 x12: 0000000000000000
    x11: ffff000082acf5c0 x10: ffff000082acf478 x9 : ffff0000800f8010
    x8 : 0101010101010101 x7 : 7f7f7f7f7f7f7f7f x6 : fefefeff6364626d
    x5 : 8080808000000000 x4 : 0000000000000020 x3 : 00000000553a3dc1
    x2 : ffff00008ac233c0 x1 : ffff00008ac233c0 x0 : ff00737574617473
    Call trace:
     led_put+0x1c/0x40
     v4l2_subdev_put_privacy_led+0x48/0x58
     v4l2_async_unregister_subdev+0x2c/0x1a4
     max96712_remove+0x1c/0x38 [max96712]
     i2c_device_remove+0x2c/0x9c
     device_remove+0x4c/0x80
     device_release_driver_internal+0x1cc/0x228
     driver_detach+0x4c/0x98
     bus_remove_driver+0x6c/0xbc
     driver_unregister+0x30/0x60
     i2c_del_driver+0x54/0x64
     max96712_i2c_driver_exit+0x18/0x1d0 [max96712]
     __arm64_sys_delete_module+0x1a4/0x290
     invoke_syscall+0x48/0x10c
     el0_svc_common.constprop.0+0xc0/0xe0
     do_el0_svc+0x1c/0x28
     el0_svc+0x34/0xd8
     el0t_64_sync_handler+0x120/0x12c
     el0t_64_sync+0x190/0x194
    Code: f9000bf3 aa0003f3 f9402800 f9402000 (f9403400)
    ---[ end trace 0000000000000000 ]---
    
    This happens because in v4l2_i2c_subdev_init(), the i2c_set_cliendata()
    is called again and the data is overwritten to point to sd, instead of
    priv. So, in remove(), the wrong pointer is passed to
    v4l2_async_unregister_subdev(), leading to a crash.
    
    Fixes: 5814f32fef13 ("media: staging: max96712: Add basic support for MAX96712 GMSL2 deserializer")
    Signed-off-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tcp: correct handling of extreme memory squeeze [+ + +]
Author: Jon Maloy <jmaloy@redhat.com>
Date:   Mon Jan 27 18:13:04 2025 -0500

    tcp: correct handling of extreme memory squeeze
    
    [ Upstream commit 8c670bdfa58e48abad1d5b6ca1ee843ca91f7303 ]
    
    Testing with iperf3 using the "pasta" protocol splicer has revealed
    a problem in the way tcp handles window advertising in extreme memory
    squeeze situations.
    
    Under memory pressure, a socket endpoint may temporarily advertise
    a zero-sized window, but this is not stored as part of the socket data.
    The reasoning behind this is that it is considered a temporary setting
    which shouldn't influence any further calculations.
    
    However, if we happen to stall at an unfortunate value of the current
    window size, the algorithm selecting a new value will consistently fail
    to advertise a non-zero window once we have freed up enough memory.
    This means that this side's notion of the current window size is
    different from the one last advertised to the peer, causing the latter
    to not send any data to resolve the sitution.
    
    The problem occurs on the iperf3 server side, and the socket in question
    is a completely regular socket with the default settings for the
    fedora40 kernel. We do not use SO_PEEK or SO_RCVBUF on the socket.
    
    The following excerpt of a logging session, with own comments added,
    shows more in detail what is happening:
    
    //              tcp_v4_rcv(->)
    //                tcp_rcv_established(->)
    [5201<->39222]:     ==== Activating log @ net/ipv4/tcp_input.c/tcp_data_queue()/5257 ====
    [5201<->39222]:     tcp_data_queue(->)
    [5201<->39222]:        DROPPING skb [265600160..265665640], reason: SKB_DROP_REASON_PROTO_MEM
                           [rcv_nxt 265600160, rcv_wnd 262144, snt_ack 265469200, win_now 131184]
                           [copied_seq 259909392->260034360 (124968), unread 5565800, qlen 85, ofoq 0]
                           [OFO queue: gap: 65480, len: 0]
    [5201<->39222]:     tcp_data_queue(<-)
    [5201<->39222]:     __tcp_transmit_skb(->)
                            [tp->rcv_wup: 265469200, tp->rcv_wnd: 262144, tp->rcv_nxt 265600160]
    [5201<->39222]:       tcp_select_window(->)
    [5201<->39222]:         (inet_csk(sk)->icsk_ack.pending & ICSK_ACK_NOMEM) ? --> TRUE
                            [tp->rcv_wup: 265469200, tp->rcv_wnd: 262144, tp->rcv_nxt 265600160]
                            returning 0
    [5201<->39222]:       tcp_select_window(<-)
    [5201<->39222]:       ADVERTISING WIN 0, ACK_SEQ: 265600160
    [5201<->39222]:     [__tcp_transmit_skb(<-)
    [5201<->39222]:   tcp_rcv_established(<-)
    [5201<->39222]: tcp_v4_rcv(<-)
    
    // Receive queue is at 85 buffers and we are out of memory.
    // We drop the incoming buffer, although it is in sequence, and decide
    // to send an advertisement with a window of zero.
    // We don't update tp->rcv_wnd and tp->rcv_wup accordingly, which means
    // we unconditionally shrink the window.
    
    [5201<->39222]: tcp_recvmsg_locked(->)
    [5201<->39222]:   __tcp_cleanup_rbuf(->) tp->rcv_wup: 265469200, tp->rcv_wnd: 262144, tp->rcv_nxt 265600160
    [5201<->39222]:     [new_win = 0, win_now = 131184, 2 * win_now = 262368]
    [5201<->39222]:     [new_win >= (2 * win_now) ? --> time_to_ack = 0]
    [5201<->39222]:     NOT calling tcp_send_ack()
                        [tp->rcv_wup: 265469200, tp->rcv_wnd: 262144, tp->rcv_nxt 265600160]
    [5201<->39222]:   __tcp_cleanup_rbuf(<-)
                      [rcv_nxt 265600160, rcv_wnd 262144, snt_ack 265469200, win_now 131184]
                      [copied_seq 260040464->260040464 (0), unread 5559696, qlen 85, ofoq 0]
                      returning 6104 bytes
    [5201<->39222]: tcp_recvmsg_locked(<-)
    
    // After each read, the algorithm for calculating the new receive
    // window in __tcp_cleanup_rbuf() finds it is too small to advertise
    // or to update tp->rcv_wnd.
    // Meanwhile, the peer thinks the window is zero, and will not send
    // any more data to trigger an update from the interrupt mode side.
    
    [5201<->39222]: tcp_recvmsg_locked(->)
    [5201<->39222]:   __tcp_cleanup_rbuf(->) tp->rcv_wup: 265469200, tp->rcv_wnd: 262144, tp->rcv_nxt 265600160
    [5201<->39222]:     [new_win = 262144, win_now = 131184, 2 * win_now = 262368]
    [5201<->39222]:     [new_win >= (2 * win_now) ? --> time_to_ack = 0]
    [5201<->39222]:     NOT calling tcp_send_ack()
                        [tp->rcv_wup: 265469200, tp->rcv_wnd: 262144, tp->rcv_nxt 265600160]
    [5201<->39222]:   __tcp_cleanup_rbuf(<-)
                      [rcv_nxt 265600160, rcv_wnd 262144, snt_ack 265469200, win_now 131184]
                      [copied_seq 260099840->260171536 (71696), unread 5428624, qlen 83, ofoq 0]
                      returning 131072 bytes
    [5201<->39222]: tcp_recvmsg_locked(<-)
    
    // The above pattern repeats again and again, since nothing changes
    // between the reads.
    
    [...]
    
    [5201<->39222]: tcp_recvmsg_locked(->)
    [5201<->39222]:   __tcp_cleanup_rbuf(->) tp->rcv_wup: 265469200, tp->rcv_wnd: 262144, tp->rcv_nxt 265600160
    [5201<->39222]:     [new_win = 262144, win_now = 131184, 2 * win_now = 262368]
    [5201<->39222]:     [new_win >= (2 * win_now) ? --> time_to_ack = 0]
    [5201<->39222]:     NOT calling tcp_send_ack()
                        [tp->rcv_wup: 265469200, tp->rcv_wnd: 262144, tp->rcv_nxt 265600160]
    [5201<->39222]:   __tcp_cleanup_rbuf(<-)
                      [rcv_nxt 265600160, rcv_wnd 262144, snt_ack 265469200, win_now 131184]
                      [copied_seq 265600160->265600160 (0), unread 0, qlen 0, ofoq 0]
                      returning 54672 bytes
    [5201<->39222]: tcp_recvmsg_locked(<-)
    
    // The receive queue is empty, but no new advertisement has been sent.
    // The peer still thinks the receive window is zero, and sends nothing.
    // We have ended up in a deadlock situation.
    
    Note that well behaved endpoints will send win0 probes, so the problem
    will not occur.
    
    Furthermore, we have observed that in these situations this side may
    send out an updated 'th->ack_seq´ which is not stored in tp->rcv_wup
    as it should be. Backing ack_seq seems to be harmless, but is of
    course still wrong from a protocol viewpoint.
    
    We fix this by updating the socket state correctly when a packet has
    been dropped because of memory exhaustion and we have to advertize
    a zero window.
    
    Further testing shows that the connection recovers neatly from the
    squeeze situation, and traffic can continue indefinitely.
    
    Fixes: e2142825c120 ("net: tcp: send zero-window ACK when no memory")
    Cc: Menglong Dong <menglong8.dong@gmail.com>
    Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: Jon Maloy <jmaloy@redhat.com>
    Reviewed-by: Jason Xing <kerneljasonxing@gmail.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Neal Cardwell <ncardwell@google.com>
    Link: https://patch.msgid.link/20250127231304.1465565-1-jmaloy@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tcp_cubic: fix incorrect HyStart round start detection [+ + +]
Author: Mahdi Arghavani <ma.arghavani@yahoo.com>
Date:   Fri Jan 17 21:37:51 2025 +0000

    tcp_cubic: fix incorrect HyStart round start detection
    
    [ Upstream commit 25c1a9ca53db5780757e7f53e688b8f916821baa ]
    
    I noticed that HyStart incorrectly marks the start of rounds,
    leading to inaccurate measurements of ACK train lengths and
    resetting the `ca->sample_cnt` variable. This inaccuracy can impact
    HyStart's functionality in terminating exponential cwnd growth during
    Slow-Start, potentially degrading TCP performance.
    
    The issue arises because the changes introduced in commit 4e1fddc98d25
    ("tcp_cubic: fix spurious Hystart ACK train detections for not-cwnd-limited flows")
    moved the caller of the `bictcp_hystart_reset` function inside the `hystart_update` function.
    This modification added an additional condition for triggering the caller,
    requiring that (tcp_snd_cwnd(tp) >= hystart_low_window) must also
    be satisfied before invoking `bictcp_hystart_reset`.
    
    This fix ensures that `bictcp_hystart_reset` is correctly called
    at the start of a new round, regardless of the congestion window size.
    This is achieved by moving the condition
    (tcp_snd_cwnd(tp) >= hystart_low_window)
    from before calling `bictcp_hystart_reset` to after it.
    
    I tested with a client and a server connected through two Linux software routers.
    In this setup, the minimum RTT was 150 ms, the bottleneck bandwidth was 50 Mbps,
    and the bottleneck buffer size was 1 BDP, calculated as (50M / 1514 / 8) * 0.150 = 619 packets.
    I conducted the test twice, transferring data from the server to the client for 1.5 seconds.
    Before the patch was applied, HYSTART-DELAY stopped the exponential growth of cwnd when
    cwnd = 516, and the bottleneck link was not yet saturated (516 < 619).
    After the patch was applied, HYSTART-ACK-TRAIN stopped the exponential growth of cwnd when
    cwnd = 632, and the bottleneck link was saturated (632 > 619).
    In this test, applying the patch resulted in 300 KB more data delivered.
    
    Fixes: 4e1fddc98d25 ("tcp_cubic: fix spurious Hystart ACK train detections for not-cwnd-limited flows")
    Signed-off-by: Mahdi Arghavani <ma.arghavani@yahoo.com>
    Reviewed-by: Jason Xing <kerneljasonxing@gmail.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Haibo Zhang <haibo.zhang@otago.ac.nz>
    Cc: David Eyers <david.eyers@otago.ac.nz>
    Cc: Abbas Arghavani <abbas.arghavani@mdu.se>
    Reviewed-by: Neal Cardwell <ncardwell@google.com>
    Tested-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
team: prevent adding a device which is already a team device lower [+ + +]
Author: Octavian Purdila <tavip@google.com>
Date:   Mon Dec 30 12:56:47 2024 -0800

    team: prevent adding a device which is already a team device lower
    
    [ Upstream commit 3fff5da4ca2164bb4d0f1e6cd33f6eb8a0e73e50 ]
    
    Prevent adding a device which is already a team device lower,
    e.g. adding veth0 if vlan1 was already added and veth0 is a lower of
    vlan1.
    
    This is not useful in practice and can lead to recursive locking:
    
    $ ip link add veth0 type veth peer name veth1
    $ ip link set veth0 up
    $ ip link set veth1 up
    $ ip link add link veth0 name veth0.1 type vlan protocol 802.1Q id 1
    $ ip link add team0 type team
    $ ip link set veth0.1 down
    $ ip link set veth0.1 master team0
    team0: Port device veth0.1 added
    $ ip link set veth0 down
    $ ip link set veth0 master team0
    
    ============================================
    WARNING: possible recursive locking detected
    6.13.0-rc2-virtme-00441-ga14a429069bb #46 Not tainted
    --------------------------------------------
    ip/7684 is trying to acquire lock:
    ffff888016848e00 (team->team_lock_key){+.+.}-{4:4}, at: team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    
    but task is already holding lock:
    ffff888016848e00 (team->team_lock_key){+.+.}-{4:4}, at: team_add_slave (drivers/net/team/team_core.c:1147 drivers/net/team/team_core.c:1977)
    
    other info that might help us debug this:
    Possible unsafe locking scenario:
    
    CPU0
    ----
    lock(team->team_lock_key);
    lock(team->team_lock_key);
    
    *** DEADLOCK ***
    
    May be due to missing lock nesting notation
    
    2 locks held by ip/7684:
    
    stack backtrace:
    CPU: 3 UID: 0 PID: 7684 Comm: ip Not tainted 6.13.0-rc2-virtme-00441-ga14a429069bb #46
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    Call Trace:
    <TASK>
    dump_stack_lvl (lib/dump_stack.c:122)
    print_deadlock_bug.cold (kernel/locking/lockdep.c:3040)
    __lock_acquire (kernel/locking/lockdep.c:3893 kernel/locking/lockdep.c:5226)
    ? netlink_broadcast_filtered (net/netlink/af_netlink.c:1548)
    lock_acquire.part.0 (kernel/locking/lockdep.c:467 kernel/locking/lockdep.c:5851)
    ? team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    ? trace_lock_acquire (./include/trace/events/lock.h:24 (discriminator 2))
    ? team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    ? lock_acquire (kernel/locking/lockdep.c:5822)
    ? team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    __mutex_lock (kernel/locking/mutex.c:587 kernel/locking/mutex.c:735)
    ? team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    ? team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    ? fib_sync_up (net/ipv4/fib_semantics.c:2167)
    ? team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    notifier_call_chain (kernel/notifier.c:85)
    call_netdevice_notifiers_info (net/core/dev.c:1996)
    __dev_notify_flags (net/core/dev.c:8993)
    ? __dev_change_flags (net/core/dev.c:8975)
    dev_change_flags (net/core/dev.c:9027)
    vlan_device_event (net/8021q/vlan.c:85 net/8021q/vlan.c:470)
    ? br_device_event (net/bridge/br.c:143)
    notifier_call_chain (kernel/notifier.c:85)
    call_netdevice_notifiers_info (net/core/dev.c:1996)
    dev_open (net/core/dev.c:1519 net/core/dev.c:1505)
    team_add_slave (drivers/net/team/team_core.c:1219 drivers/net/team/team_core.c:1977)
    ? __pfx_team_add_slave (drivers/net/team/team_core.c:1972)
    do_set_master (net/core/rtnetlink.c:2917)
    do_setlink.isra.0 (net/core/rtnetlink.c:3117)
    
    Reported-by: syzbot+3c47b5843403a45aef57@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=3c47b5843403a45aef57
    Fixes: 3d249d4ca7d0 ("net: introduce ethernet teaming device")
    Signed-off-by: Octavian Purdila <tavip@google.com>
    Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tools/bootconfig: Fix the wrong format specifier [+ + +]
Author: Luo Yifan <luoyifan@cmss.chinamobile.com>
Date:   Tue Jan 28 23:27:01 2025 +0900

    tools/bootconfig: Fix the wrong format specifier
    
    [ Upstream commit f6ab7384d554ba80ff4793259d75535874b366f5 ]
    
    Use '%u' instead of '%d' for unsigned int.
    
    Link: https://lore.kernel.org/all/20241105011048.201629-1-luoyifan@cmss.chinamobile.com/
    
    Fixes: 973780011106 ("tools/bootconfig: Suppress non-error messages")
    Signed-off-by: Luo Yifan <luoyifan@cmss.chinamobile.com>
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tools/power turbostat: Allow using cpu device in perf counters on hybrid platforms [+ + +]
Author: Patryk Wlazlyn <patryk.wlazlyn@linux.intel.com>
Date:   Tue Aug 20 18:47:59 2024 +0200

    tools/power turbostat: Allow using cpu device in perf counters on hybrid platforms
    
    [ Upstream commit ae2cdf8d92ffc326104524a1f9da4cf75b6ea996 ]
    
    Intel hybrid platforms expose different perf devices for P and E cores.
    Instead of one, "/sys/bus/event_source/devices/cpu" device, there are
    "/sys/bus/event_source/devices/{cpu_core,cpu_atom}".
    
    This, however makes it more complicated for the user,
    because most of the counters are available on both and had to be
    handled manually.
    
    This patch allows users to use "virtual" cpu device that is seemingly
    translated to cpu_core and cpu_atom perf devices, depending on the type
    of a CPU we are opening the counter for.
    
    Signed-off-by: Patryk Wlazlyn <patryk.wlazlyn@linux.intel.com>
    Signed-off-by: Len Brown <len.brown@intel.com>
    Stable-dep-of: 2f60f03934a5 ("tools/power turbostat: Fix PMT mmaped file size rounding")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tools/power turbostat: Fix forked child affinity regression [+ + +]
Author: Len Brown <len.brown@intel.com>
Date:   Mon Jan 27 16:42:19 2025 -0600

    tools/power turbostat: Fix forked child affinity regression
    
    [ Upstream commit b32c36975da48afc9089f8b61f7b2dcc40e479d2 ]
    
    In "one-shot" mode, turbostat
    1. takes a counter snapshot
    2. forks and waits for a child
    3. takes the end counter snapshot and prints the result.
    
    But turbostat counter snapshots currently use affinity to travel
    around the system so that counter reads are "local", and this
    affinity must be cleared between #1 and #2 above.
    
    The offending commit removed that reset that allowed the child
    to run on cpu_present_set.
    
    Fix that issue, and improve upon the original by using
    cpu_possible_set for the child.  This allows the child
    to also run on CPUs that hotplug online during its runtime.
    
    Reported-by: Zhang Rui <rui.zhang@intel.com>
    Fixes: 7bb3fe27ad4f ("tools/power/turbostat: Obey allowed CPUs during startup")
    Signed-off-by: Len Brown <len.brown@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tools/power turbostat: Fix PMT mmaped file size rounding [+ + +]
Author: Patryk Wlazlyn <patryk.wlazlyn@linux.intel.com>
Date:   Fri Dec 20 13:38:34 2024 +0100

    tools/power turbostat: Fix PMT mmaped file size rounding
    
    [ Upstream commit 2f60f03934a50bc1fb69bb4f47a25cddd6807b0b ]
    
    This (the old code) is just not how you round up to a page size.
    Noticed on a recent Intel platform. Previous ones must have been
    reporting sizes already aligned to a page and so the bug was missed when
    testing.
    
    Fixes: f0e4ed752fda ("tools/power turbostat: Add early support for PMT counters")
    Signed-off-by: Patryk Wlazlyn <patryk.wlazlyn@linux.intel.com>
    Signed-off-by: Len Brown <len.brown@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tools/testing/selftests/bpf/test_tc_tunnel.sh: Fix wait for server bind [+ + +]
Author: Marco Leogrande <leogrande@google.com>
Date:   Mon Dec 2 12:45:30 2024 -0800

    tools/testing/selftests/bpf/test_tc_tunnel.sh: Fix wait for server bind
    
    [ Upstream commit e2f0791124a1b6ca8d570110cbd487969d9d41ef ]
    
    Commit f803bcf9208a ("selftests/bpf: Prevent client connect before
    server bind in test_tc_tunnel.sh") added code that waits for the
    netcat server to start before the netcat client attempts to connect to
    it. However, not all calls to 'server_listen' were guarded.
    
    This patch adds the existing 'wait_for_port' guard after the remaining
    call to 'server_listen'.
    
    Fixes: f803bcf9208a ("selftests/bpf: Prevent client connect before server bind in test_tc_tunnel.sh")
    Signed-off-by: Marco Leogrande <leogrande@google.com>
    Acked-by: Stanislav Fomichev <sdf@fomichev.me>
    Link: https://lore.kernel.org/r/20241202204530.1143448-1-leogrande@google.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tools: Sync if_xdp.h uapi tooling header [+ + +]
Author: Vishal Chourasia <vishalc@linux.ibm.com>
Date:   Fri Jan 17 15:42:59 2025 +0100

    tools: Sync if_xdp.h uapi tooling header
    
    [ Upstream commit 01f3ce5328c405179b2c69ea047c423dad2bfa6d ]
    
    Sync if_xdp.h uapi header to remove following warning:
    
      Warning: Kernel ABI header at 'tools/include/uapi/linux/if_xdp.h'
      differs from latest version at 'include/uapi/linux/if_xdp.h'
    
    Fixes: 48eb03dd2630 ("xsk: Add TX timestamp and TX checksum offload support")
    Signed-off-by: Vishal Chourasia <vishalc@linux.ibm.com>
    Signed-off-by: Song Yoong Siang <yoong.siang.song@intel.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20250115032248.125742-1-yoong.siang.song@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tools: ynl: c: correct reverse decode of empty attrs [+ + +]
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Thu Jan 23 17:21:30 2025 -0800

    tools: ynl: c: correct reverse decode of empty attrs
    
    [ Upstream commit 964417a5d4a06614ef7fb3ae69bb17c91a2dc016 ]
    
    netlink reports which attribute was incorrect by sending back
    an attribute offset. Offset points to the address of struct nlattr,
    but to interpret the type we also need the nesting path.
    Attribute IDs have different meaning in different nests
    of the same message.
    
    Correct the condition for "is the offset within current attribute".
    ynl_attr_data_len() does not include the attribute header,
    so the end offset was off by 4 bytes.
    
    This means that we'd always skip over flags and empty nests.
    
    The devmem tests, for example, issues an invalid request with
    empty queue nests, resulting in the following error:
    
      YNL failed: Kernel error: missing attribute: .queues.ifindex
    
    The message is incorrect, "queues" nest does not have an "ifindex"
    attribute defined. With this fix we decend correctly into the nest:
    
      YNL failed: Kernel error: missing attribute: .queues.id
    
    Fixes: 86878f14d71a ("tools: ynl: user space helpers")
    Reviewed-by: Donald Hunter <donald.hunter@gmail.com>
    Link: https://patch.msgid.link/20250124012130.1121227-1-kuba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tty: mips_ejtag_fdc: fix one more u8 warning [+ + +]
Author: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Date:   Fri Jan 10 12:52:28 2025 +0100

    tty: mips_ejtag_fdc: fix one more u8 warning
    
    [ Upstream commit 6dd1de91e7a62bfd3878992c1db6e1d443022c76 ]
    
    The LKP robot complains about:
       drivers/tty/mips_ejtag_fdc.c:1224:31: error: incompatible pointer types passing 'const char *[1]' to parameter of type 'const u8 **' (aka 'const unsigned char **')
    
    Fix this by turning the missing pieces (fetch from kgdbfdc_wbuf) to u8
    too. Note the filling part (kgdbfdc_write_char()) already receives and
    stores u8 to kgdbfdc_wbuf.
    
    Fixes: ce7cbd9a6c81 ("tty: mips_ejtag_fdc: use u8 for character pointers")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202501101327.oGdWbmuk-lkp@intel.com/
    Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20250110115228.603980-1-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ubifs: skip dumping tnc tree when zroot is null [+ + +]
Author: pangliyuan <pangliyuan1@huawei.com>
Date:   Tue Dec 24 16:18:23 2024 +0800

    ubifs: skip dumping tnc tree when zroot is null
    
    [ Upstream commit bdb0ca39e0acccf6771db49c3f94ed787d05f2d7 ]
    
    Clearing slab cache will free all znode in memory and make
    c->zroot.znode = NULL, then dumping tnc tree will access
    c->zroot.znode which cause null pointer dereference.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=219624#c0
    Fixes: 1e51764a3c2a ("UBIFS: add new flash file system")
    Signed-off-by: pangliyuan <pangliyuan1@huawei.com>
    Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
udp: Deal with race between UDP socket address change and rehash [+ + +]
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Wed Dec 18 17:21:16 2024 +0100

    udp: Deal with race between UDP socket address change and rehash
    
    [ Upstream commit a502ea6fa94b1f7be72a24bcf9e3f5f6b7e6e90c ]
    
    If a UDP socket changes its local address while it's receiving
    datagrams, as a result of connect(), there is a period during which
    a lookup operation might fail to find it, after the address is changed
    but before the secondary hash (port and address) and the four-tuple
    hash (local and remote ports and addresses) are updated.
    
    Secondary hash chains were introduced by commit 30fff9231fad ("udp:
    bind() optimisation") and, as a result, a rehash operation became
    needed to make a bound socket reachable again after a connect().
    
    This operation was introduced by commit 719f835853a9 ("udp: add
    rehash on connect()") which isn't however a complete fix: the
    socket will be found once the rehashing completes, but not while
    it's pending.
    
    This is noticeable with a socat(1) server in UDP4-LISTEN mode, and a
    client sending datagrams to it. After the server receives the first
    datagram (cf. _xioopen_ipdgram_listen()), it issues a connect() to
    the address of the sender, in order to set up a directed flow.
    
    Now, if the client, running on a different CPU thread, happens to
    send a (subsequent) datagram while the server's socket changes its
    address, but is not rehashed yet, this will result in a failed
    lookup and a port unreachable error delivered to the client, as
    apparent from the following reproducer:
    
      LEN=$(($(cat /proc/sys/net/core/wmem_default) / 4))
      dd if=/dev/urandom bs=1 count=${LEN} of=tmp.in
    
      while :; do
            taskset -c 1 socat UDP4-LISTEN:1337,null-eof OPEN:tmp.out,create,trunc &
            sleep 0.1 || sleep 1
            taskset -c 2 socat OPEN:tmp.in UDP4:localhost:1337,shut-null
            wait
      done
    
    where the client will eventually get ECONNREFUSED on a write()
    (typically the second or third one of a given iteration):
    
      2024/11/13 21:28:23 socat[46901] E write(6, 0x556db2e3c000, 8192): Connection refused
    
    This issue was first observed as a seldom failure in Podman's tests
    checking UDP functionality while using pasta(1) to connect the
    container's network namespace, which leads us to a reproducer with
    the lookup error resulting in an ICMP packet on a tap device:
    
      LOCAL_ADDR="$(ip -j -4 addr show|jq -rM '.[] | .addr_info[0] | select(.scope == "global").local')"
    
      while :; do
            ./pasta --config-net -p pasta.pcap -u 1337 socat UDP4-LISTEN:1337,null-eof OPEN:tmp.out,create,trunc &
            sleep 0.2 || sleep 1
            socat OPEN:tmp.in UDP4:${LOCAL_ADDR}:1337,shut-null
            wait
            cmp tmp.in tmp.out
      done
    
    Once this fails:
    
      tmp.in tmp.out differ: char 8193, line 29
    
    we can finally have a look at what's going on:
    
      $ tshark -r pasta.pcap
          1   0.000000           :: ? ff02::16     ICMPv6 110 Multicast Listener Report Message v2
          2   0.168690 88.198.0.161 ? 88.198.0.164 UDP 8234 60260 ? 1337 Len=8192
          3   0.168767 88.198.0.161 ? 88.198.0.164 UDP 8234 60260 ? 1337 Len=8192
          4   0.168806 88.198.0.161 ? 88.198.0.164 UDP 8234 60260 ? 1337 Len=8192
          5   0.168827 c6:47:05:8d:dc:04 ? Broadcast    ARP 42 Who has 88.198.0.161? Tell 88.198.0.164
          6   0.168851 9a:55:9a:55:9a:55 ? c6:47:05:8d:dc:04 ARP 42 88.198.0.161 is at 9a:55:9a:55:9a:55
          7   0.168875 88.198.0.161 ? 88.198.0.164 UDP 8234 60260 ? 1337 Len=8192
          8   0.168896 88.198.0.164 ? 88.198.0.161 ICMP 590 Destination unreachable (Port unreachable)
          9   0.168926 88.198.0.161 ? 88.198.0.164 UDP 8234 60260 ? 1337 Len=8192
         10   0.168959 88.198.0.161 ? 88.198.0.164 UDP 8234 60260 ? 1337 Len=8192
         11   0.168989 88.198.0.161 ? 88.198.0.164 UDP 4138 60260 ? 1337 Len=4096
         12   0.169010 88.198.0.161 ? 88.198.0.164 UDP 42 60260 ? 1337 Len=0
    
    On the third datagram received, the network namespace of the container
    initiates an ARP lookup to deliver the ICMP message.
    
    In another variant of this reproducer, starting the client with:
    
      strace -f pasta --config-net -u 1337 socat UDP4-LISTEN:1337,null-eof OPEN:tmp.out,create,trunc 2>strace.log &
    
    and connecting to the socat server using a loopback address:
    
      socat OPEN:tmp.in UDP4:localhost:1337,shut-null
    
    we can more clearly observe a sendmmsg() call failing after the
    first datagram is delivered:
    
      [pid 278012] connect(173, 0x7fff96c95fc0, 16) = 0
      [...]
      [pid 278012] recvmmsg(173, 0x7fff96c96020, 1024, MSG_DONTWAIT, NULL) = -1 EAGAIN (Resource temporarily unavailable)
      [pid 278012] sendmmsg(173, 0x561c5ad0a720, 1, MSG_NOSIGNAL) = 1
      [...]
      [pid 278012] sendmmsg(173, 0x561c5ad0a720, 1, MSG_NOSIGNAL) = -1 ECONNREFUSED (Connection refused)
    
    and, somewhat confusingly, after a connect() on the same socket
    succeeded.
    
    Until commit 4cdeeee9252a ("net: udp: prefer listeners bound to an
    address"), the race between receive address change and lookup didn't
    actually cause visible issues, because, once the lookup based on the
    secondary hash chain failed, we would still attempt a lookup based on
    the primary hash (destination port only), and find the socket with the
    outdated secondary hash.
    
    That change, however, dropped port-only lookups altogether, as side
    effect, making the race visible.
    
    To fix this, while avoiding the need to make address changes and
    rehash atomic against lookups, reintroduce primary hash lookups as
    fallback, if lookups based on four-tuple and secondary hashes fail.
    
    To this end, introduce a simplified lookup implementation, which
    doesn't take care of SO_REUSEPORT groups: if we have one, there are
    multiple sockets that would match the four-tuple or secondary hash,
    meaning that we can't run into this race at all.
    
    v2:
      - instead of synchronising lookup operations against address change
        plus rehash, reintroduce a simplified version of the original
        primary hash lookup as fallback
    
    v1:
      - fix build with CONFIG_IPV6=n: add ifdef around sk_v6_rcv_saddr
        usage (Kuniyuki Iwashima)
      - directly use sk_rcv_saddr for IPv4 receive addresses instead of
        fetching inet_rcv_saddr (Kuniyuki Iwashima)
      - move inet_update_saddr() to inet_hashtables.h and use that
        to set IPv4/IPv6 addresses as suitable (Kuniyuki Iwashima)
      - rebase onto net-next, update commit message accordingly
    
    Reported-by: Ed Santiago <santiago@redhat.com>
    Link: https://github.com/containers/podman/issues/24147
    Analysed-by: David Gibson <david@gibson.dropbear.id.au>
    Fixes: 30fff9231fad ("udp: bind() optimisation")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
usb: dwc3-am62: Fix an OF node leak in phy_syscon_pll_refclk() [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Thu Jan 9 09:16:38 2025 +0900

    usb: dwc3-am62: Fix an OF node leak in phy_syscon_pll_refclk()
    
    commit a266462b937beba065e934a563efe13dd246a164 upstream.
    
    phy_syscon_pll_refclk() leaks an OF node obtained by
    of_parse_phandle_with_fixed_args(), thus add an of_node_put() call.
    
    Cc: stable <stable@kernel.org>
    Fixes: e8784c0aec03 ("drivers: usb: dwc3: Add AM62 USB wrapper driver")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/20250109001638.70033-1-joe@pf.is.s.u-tokyo.ac.jp
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: dwc3: core: Defer the probe until USB power supply ready [+ + +]
Author: Kyle Tso <kyletso@google.com>
Date:   Wed Jan 15 12:45:48 2025 +0800

    usb: dwc3: core: Defer the probe until USB power supply ready
    
    commit 66e0ea341a2a78d14336117f19763bd9be26d45d upstream.
    
    Currently, DWC3 driver attempts to acquire the USB power supply only
    once during the probe. If the USB power supply is not ready at that
    time, the driver simply ignores the failure and continues the probe,
    leading to permanent non-functioning of the gadget vbus_draw callback.
    
    Address this problem by delaying the dwc3 driver initialization until
    the USB power supply is registered.
    
    Fixes: 6f0764b5adea ("usb: dwc3: add a power supply for current control")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Kyle Tso <kyletso@google.com>
    Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/20250115044548.2701138-1-kyletso@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: dwc3: Skip resume if pm_runtime_set_active() fails [+ + +]
Author: Ray Chi <raychi@google.com>
Date:   Mon Jan 6 16:22:37 2025 +0800

    usb: dwc3: Skip resume if pm_runtime_set_active() fails
    
    commit e3a9bd247cddfb6fa0c29c2361f70b76c359eaa0 upstream.
    
    When the system begins to enter suspend mode, dwc3_suspend() is called
    by PM suspend. There is a problem that if someone interrupt the system
    suspend process between dwc3_suspend() and pm_suspend() of its parent
    device, PM suspend will be canceled and attempt to resume suspended
    devices so that dwc3_resume() will be called. However, dwc3 and its
    parent device (like the power domain or glue driver) may already be
    suspended by runtime PM in fact. If this sutiation happened, the
    pm_runtime_set_active() in dwc3_resume() will return an error since
    parent device was suspended. This can lead to unexpected behavior if
    DWC3 proceeds to execute dwc3_resume_common().
    
    EX.
    RPM suspend: ... -> dwc3_runtime_suspend()
                          -> rpm_suspend() of parent device
    ...
    PM suspend: ... -> dwc3_suspend() -> pm_suspend of parent device
                                     ^ interrupt, so resume suspended device
              ...  <-  dwc3_resume()  <-/
                          ^ pm_runtime_set_active() returns error
    
    To prevent the problem, this commit will skip dwc3_resume_common() and
    return the error if pm_runtime_set_active() fails.
    
    Fixes: 68c26fe58182 ("usb: dwc3: set pm runtime active before resume common")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Ray Chi <raychi@google.com>
    Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/20250106082240.3822059-1-raychi@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: gadget: f_tcm: Don't free command immediately [+ + +]
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Wed Dec 11 00:31:36 2024 +0000

    usb: gadget: f_tcm: Don't free command immediately
    
    commit c225d006a31949d673e646d585d9569bc28feeb9 upstream.
    
    Don't prematurely free the command. Wait for the status completion of
    the sense status. It can be freed then. Otherwise we will double-free
    the command.
    
    Fixes: cff834c16d23 ("usb-gadget/tcm: Convert to TARGET_SCF_ACK_KREF I/O krefs")
    Cc: stable@vger.kernel.org
    Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/ae919ac431f16275e05ec819bdffb3ac5f44cbe1.1733876548.git.Thinh.Nguyen@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: gadget: f_tcm: Fix Get/SetInterface return value [+ + +]
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Wed Dec 11 00:31:55 2024 +0000

    usb: gadget: f_tcm: Fix Get/SetInterface return value
    
    commit 3b997089903b909684114aca6f79d683e5c64a0e upstream.
    
    Check to make sure that the GetInterface and SetInterface are for valid
    interface. Return proper alternate setting number on GetInterface.
    
    Fixes: 0b8b1a1fede0 ("usb: gadget: f_tcm: Provide support to get alternate setting in tcm function")
    Cc: stable@vger.kernel.org
    Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/ffd91b4640945ea4d3b4f4091cf1abbdbd9cf4fc.1733876548.git.Thinh.Nguyen@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: typec: tcpci: Prevent Sink disconnection before vPpsShutdown in SPR PPS [+ + +]
Author: Kyle Tso <kyletso@google.com>
Date:   Tue Jan 14 22:24:35 2025 +0800

    usb: typec: tcpci: Prevent Sink disconnection before vPpsShutdown in SPR PPS
    
    commit 4d27afbf256028a1f54363367f30efc8854433c3 upstream.
    
    The Source can drop its output voltage to the minimum of the requested
    PPS APDO voltage range when it is in Current Limit Mode. If this voltage
    falls within the range of vPpsShutdown, the Source initiates a Hard
    Reset and discharges Vbus. However, currently the Sink may disconnect
    before the voltage reaches vPpsShutdown, leading to unexpected behavior.
    
    Prevent premature disconnection by setting the Sink's disconnect
    threshold to the minimum vPpsShutdown value. Additionally, consider the
    voltage drop due to IR drop when calculating the appropriate threshold.
    This ensures a robust and reliable interaction between the Source and
    Sink during SPR PPS Current Limit Mode operation.
    
    Fixes: 4288debeaa4e ("usb: typec: tcpci: Fix up sink disconnect thresholds for PD")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Kyle Tso <kyletso@google.com>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Reviewed-by: Badhri Jagan Sridharan <badhri@google.com>
    Link: https://lore.kernel.org/r/20250114142435.2093857-1-kyletso@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: typec: tcpm: set SRC_SEND_CAPABILITIES timeout to PD_T_SENDER_RESPONSE [+ + +]
Author: Jos Wang <joswang@lenovo.com>
Date:   Sun Jan 5 21:52:45 2025 +0800

    usb: typec: tcpm: set SRC_SEND_CAPABILITIES timeout to PD_T_SENDER_RESPONSE
    
    commit 2eb3da037c2c20fa30bc502bc092479b2a1aaae2 upstream.
    
    As PD2.0 spec ("8.3.3.2.3 PE_SRC_Send_Capabilities state"), after the
    Source receives the GoodCRC Message from the Sink in response to the
    Source_Capabilities message, it should start the SenderResponseTimer,
    after the timer times out, the state machine transitions to the
    HARD_RESET state.
    
    Fixes: f0690a25a140 ("staging: typec: USB Type-C Port Manager (tcpm)")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jos Wang <joswang@lenovo.com>
    Reviewed-by: Badhri Jagan Sridharan <badhri@google.com>
    Link: https://lore.kernel.org/r/20250105135245.7493-1-joswang1221@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: xhci: Fix NULL pointer dereference on certain command aborts [+ + +]
Author: Michal Pecio <michal.pecio@gmail.com>
Date:   Fri Dec 27 14:01:40 2024 +0200

    usb: xhci: Fix NULL pointer dereference on certain command aborts
    
    commit 1e0a19912adb68a4b2b74fd77001c96cd83eb073 upstream.
    
    If a command is queued to the final usable TRB of a ring segment, the
    enqueue pointer is advanced to the subsequent link TRB and no further.
    If the command is later aborted, when the abort completion is handled
    the dequeue pointer is advanced to the first TRB of the next segment.
    
    If no further commands are queued, xhci_handle_stopped_cmd_ring() sees
    the ring pointers unequal and assumes that there is a pending command,
    so it calls xhci_mod_cmd_timer() which crashes if cur_cmd was NULL.
    
    Don't attempt timer setup if cur_cmd is NULL. The subsequent doorbell
    ring likely is unnecessary too, but it's harmless. Leave it alone.
    
    This is probably Bug 219532, but no confirmation has been received.
    
    The issue has been independently reproduced and confirmed fixed using
    a USB MCU programmed to NAK the Status stage of SET_ADDRESS forever.
    Everything continued working normally after several prevented crashes.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=219532
    Fixes: c311e391a7ef ("xhci: rework command timeout and cancellation,")
    CC: stable@vger.kernel.org
    Signed-off-by: Michal Pecio <michal.pecio@gmail.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20241227120142.1035206-4-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
vsock: Allow retrying on connect() failure [+ + +]
Author: Michal Luczaj <mhal@rbox.co>
Date:   Tue Jan 28 14:15:28 2025 +0100

    vsock: Allow retrying on connect() failure
    
    [ Upstream commit aa388c72113b7458127b709bdd7d3628af26e9b4 ]
    
    sk_err is set when a (connectible) connect() fails. Effectively, this makes
    an otherwise still healthy SS_UNCONNECTED socket impossible to use for any
    subsequent connection attempts.
    
    Clear sk_err upon trying to establish a connection.
    
    Fixes: d021c344051a ("VSOCK: Introduce VM Sockets")
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Reviewed-by: Luigi Leonardi <leonardi@redhat.com>
    Signed-off-by: Michal Luczaj <mhal@rbox.co>
    Link: https://patch.msgid.link/20250128-vsock-transport-vs-autobind-v3-2-1cf57065b770@rbox.co
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
vxlan: Fix uninit-value in vxlan_vnifilter_dump() [+ + +]
Author: Shigeru Yoshida <syoshida@redhat.com>
Date:   Thu Jan 23 23:57:46 2025 +0900

    vxlan: Fix uninit-value in vxlan_vnifilter_dump()
    
    [ Upstream commit 5066293b9b7046a906eff60e3949a887ae185a43 ]
    
    KMSAN reported an uninit-value access in vxlan_vnifilter_dump() [1].
    
    If the length of the netlink message payload is less than
    sizeof(struct tunnel_msg), vxlan_vnifilter_dump() accesses bytes
    beyond the message. This can lead to uninit-value access. Fix this by
    returning an error in such situations.
    
    [1]
    BUG: KMSAN: uninit-value in vxlan_vnifilter_dump+0x328/0x920 drivers/net/vxlan/vxlan_vnifilter.c:422
     vxlan_vnifilter_dump+0x328/0x920 drivers/net/vxlan/vxlan_vnifilter.c:422
     rtnl_dumpit+0xd5/0x2f0 net/core/rtnetlink.c:6786
     netlink_dump+0x93e/0x15f0 net/netlink/af_netlink.c:2317
     __netlink_dump_start+0x716/0xd60 net/netlink/af_netlink.c:2432
     netlink_dump_start include/linux/netlink.h:340 [inline]
     rtnetlink_dump_start net/core/rtnetlink.c:6815 [inline]
     rtnetlink_rcv_msg+0x1256/0x14a0 net/core/rtnetlink.c:6882
     netlink_rcv_skb+0x467/0x660 net/netlink/af_netlink.c:2542
     rtnetlink_rcv+0x35/0x40 net/core/rtnetlink.c:6944
     netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
     netlink_unicast+0xed6/0x1290 net/netlink/af_netlink.c:1347
     netlink_sendmsg+0x1092/0x1230 net/netlink/af_netlink.c:1891
     sock_sendmsg_nosec net/socket.c:711 [inline]
     __sock_sendmsg+0x330/0x3d0 net/socket.c:726
     ____sys_sendmsg+0x7f4/0xb50 net/socket.c:2583
     ___sys_sendmsg+0x271/0x3b0 net/socket.c:2637
     __sys_sendmsg net/socket.c:2669 [inline]
     __do_sys_sendmsg net/socket.c:2674 [inline]
     __se_sys_sendmsg net/socket.c:2672 [inline]
     __x64_sys_sendmsg+0x211/0x3e0 net/socket.c:2672
     x64_sys_call+0x3878/0x3d90 arch/x86/include/generated/asm/syscalls_64.h:47
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xd9/0x1d0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Uninit was created at:
     slab_post_alloc_hook mm/slub.c:4110 [inline]
     slab_alloc_node mm/slub.c:4153 [inline]
     kmem_cache_alloc_node_noprof+0x800/0xe80 mm/slub.c:4205
     kmalloc_reserve+0x13b/0x4b0 net/core/skbuff.c:587
     __alloc_skb+0x347/0x7d0 net/core/skbuff.c:678
     alloc_skb include/linux/skbuff.h:1323 [inline]
     netlink_alloc_large_skb+0xa5/0x280 net/netlink/af_netlink.c:1196
     netlink_sendmsg+0xac9/0x1230 net/netlink/af_netlink.c:1866
     sock_sendmsg_nosec net/socket.c:711 [inline]
     __sock_sendmsg+0x330/0x3d0 net/socket.c:726
     ____sys_sendmsg+0x7f4/0xb50 net/socket.c:2583
     ___sys_sendmsg+0x271/0x3b0 net/socket.c:2637
     __sys_sendmsg net/socket.c:2669 [inline]
     __do_sys_sendmsg net/socket.c:2674 [inline]
     __se_sys_sendmsg net/socket.c:2672 [inline]
     __x64_sys_sendmsg+0x211/0x3e0 net/socket.c:2672
     x64_sys_call+0x3878/0x3d90 arch/x86/include/generated/asm/syscalls_64.h:47
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xd9/0x1d0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    CPU: 0 UID: 0 PID: 30991 Comm: syz.4.10630 Not tainted 6.12.0-10694-gc44daa7e3c73 #29
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
    
    Fixes: f9c4bb0b245c ("vxlan: vni filtering support on collect metadata device")
    Reported-by: syzkaller <syzkaller@googlegroups.com>
    Signed-off-by: Shigeru Yoshida <syoshida@redhat.com>
    Reviewed-by: Ido Schimmel <idosch@nvidia.com>
    Link: https://patch.msgid.link/20250123145746.785768-1-syoshida@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
watchdog: rti_wdt: Fix an OF node leak in rti_wdt_probe() [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Sun Jan 5 20:17:18 2025 +0900

    watchdog: rti_wdt: Fix an OF node leak in rti_wdt_probe()
    
    [ Upstream commit 143981aa63f33d469a55a55fd9fb81cd90109672 ]
    
    rti_wdt_probe() does not release the OF node reference obtained by
    of_parse_phandle(). Add a of_node_put() call.
    
    This was found by an experimental verification tool that I am
    developing. Due to the lack of the actual device, no runtime test was
    able to be performed.
    
    Fixes: f20ca595ae23 ("watchdog:rit_wdt: Add support for WDIOF_CARDRESET")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20250105111718.4184192-1-joe@pf.is.s.u-tokyo.ac.jp
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
wifi: ath11k: Fix unexpected return buffer manager error for WCN6750/WCN6855 [+ + +]
Author: Balaji Pothunoori <quic_bpothuno@quicinc.com>
Date:   Wed Oct 30 17:16:25 2024 +0530

    wifi: ath11k: Fix unexpected return buffer manager error for WCN6750/WCN6855
    
    [ Upstream commit 78e154d42f2c72905fe66a400847e1b2b101b7b2 ]
    
    The following error messages were encountered while parsing fragmented RX
    packets for WCN6750/WCN6855:
    
    ath11k 17a10040.wifi: invalid return buffer manager 4
    
    This issue arose due to a hardcoded check for HAL_RX_BUF_RBM_SW3_BM
    introduced in 'commit 71c748b5e01e ("ath11k: Fix unexpected return buffer
    manager error for QCA6390")'
    
    For WCN6750 and WCN6855, the return buffer manager ID should be
    HAL_RX_BUF_RBM_SW1_BM. The incorrect conditional check caused fragmented
    packets to be dropped, resulting in the above error log.
    
    Fix this by adding a check for HAL_RX_BUF_RBM_SW1_BM.
    
    Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.2.0.c2-00258-QCAMSLSWPL-1
    Tested-on: WCN6855 hw2.1 WLAN.HSP.1.1-04479-QCAHSPSWPL_V1_V2_SILICONZ_IOE-1
    
    Fixes: 71c748b5e01e ("ath11k: Fix unexpected return buffer manager error for QCA6390")
    Signed-off-by: Balaji Pothunoori <quic_bpothuno@quicinc.com>
    Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
    Acked-by: Kalle Valo <kvalo@kernel.org>
    Link: https://patch.msgid.link/20241030114625.2416942-1-quic_bpothuno@quicinc.com
    Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: fix tx power, max reg power update to firmware [+ + +]
Author: Sathishkumar Muruganandam <quic_murugana@quicinc.com>
Date:   Mon Sep 9 13:00:49 2024 +0530

    wifi: ath12k: fix tx power, max reg power update to firmware
    
    [ Upstream commit 3540bba855b4b422e8b977d11aa8173ccb4f089d ]
    
    Currently, when the vdev start WMI cmd is sent from host, vdev related
    parameters such as max_reg_power, max_power, and max_antenna_gain are
    multiplied by 2 before being sent to the firmware. This is incorrect
    because the firmware uses 1 dBm steps for power calculations.
    
    This leads to incorrect power values being used in the firmware and
    radio, potentially causing incorrect behavior.
    
    Fix the update of max_reg_power, max_power, and max_antenna_gain values
    in the ath12k_mac_vdev_start_restart function, ensuring accurate
    power settings in the firmware by sending these values as-is,
    without multiplication.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00214-QCAHKSWPL_SILICONZ-1
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    
    Signed-off-by: Sathishkumar Muruganandam <quic_murugana@quicinc.com>
    Signed-off-by: Santhosh Ramesh <quic_santrame@quicinc.com>
    Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
    Acked-by: Kalle Valo <kvalo@kernel.org>
    Link: https://patch.msgid.link/20240909073049.3423035-1-quic_santrame@quicinc.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: brcmfmac: add missing header include for brcmf_dbg [+ + +]
Author: Marcel Hamer <marcel.hamer@windriver.com>
Date:   Wed Dec 11 14:36:18 2024 +0100

    wifi: brcmfmac: add missing header include for brcmf_dbg
    
    [ Upstream commit b05d30c2b6df7e2172b18bf1baee9b202f9c6b53 ]
    
    Including the fwil.h header file can lead to a build error:
    
    drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h: \
            In function ‘brcmf_fil_cmd_int_set’:
    drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h:90:9: error: implicit \
            declaration of function ‘brcmf_dbg’ [-Werror=implicit-function-declaration]
       90 |         brcmf_dbg(FIL, "ifidx=%d, cmd=%d, value=%d\n", ifp->ifidx, cmd, data);
          |         ^~~~~~~~~
    
    The error is often avoided because the debug.h header file is included
    before the fwil.h header file.
    
    This makes sure the header include order is irrelevant by explicitly adding the
    debug.h header.
    
    Fixes: 31343230abb1 ("wifi: brcmfmac: export firmware interface functions")
    Signed-off-by: Marcel Hamer <marcel.hamer@windriver.com>
    Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://patch.msgid.link/20241211133618.2014083-1-marcel.hamer@windriver.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: cfg80211: adjust allocation of colocated AP data [+ + +]
Author: Dmitry Antipov <dmantipov@yandex.ru>
Date:   Mon Jan 13 18:54:17 2025 +0300

    wifi: cfg80211: adjust allocation of colocated AP data
    
    [ Upstream commit 1a0d24775cdee2b8dc14bfa4f4418c930ab1ac57 ]
    
    In 'cfg80211_scan_6ghz()', an instances of 'struct cfg80211_colocated_ap'
    are allocated as if they would have 'ssid' as trailing VLA member. Since
    this is not so, extra IEEE80211_MAX_SSID_LEN bytes are not needed.
    Briefly tested with KUnit.
    
    Fixes: c8cb5b854b40 ("nl80211/cfg80211: support 6 GHz scanning")
    Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
    Link: https://patch.msgid.link/20250113155417.552587-1-dmantipov@yandex.ru
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: cfg80211: Move cfg80211_scan_req_add_chan() n_channels increment earlier [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Mon Dec 30 10:36:14 2024 -0800

    wifi: cfg80211: Move cfg80211_scan_req_add_chan() n_channels increment earlier
    
    [ Upstream commit 3a0168626c138734490bc52c4105ce8e79d2f923 ]
    
    Since adding __counted_by(n_channels) to struct cfg80211_scan_request,
    anything adding to the channels array must increment n_channels first.
    Move n_channels increment earlier.
    
    Reported-by: John Rowley <lkml@johnrowley.me>
    Closes: https://lore.kernel.org/stable/1815535c709ba9d9.156c6a5c9cdf6e59.b249b6b6a5ee4634@localhost.localdomain/
    Fixes: aa4ec06c455d ("wifi: cfg80211: use __counted_by where appropriate")
    Signed-off-by: Kees Cook <kees@kernel.org>
    Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
    Link: https://patch.msgid.link/20241230183610.work.680-kees@kernel.org
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: cfg80211: tests: Fix potential NULL dereference in test_cfg80211_parse_colocated_ap() [+ + +]
Author: Zichen Xie <zichenxie0106@gmail.com>
Date:   Fri Nov 15 00:38:36 2024 -0600

    wifi: cfg80211: tests: Fix potential NULL dereference in test_cfg80211_parse_colocated_ap()
    
    [ Upstream commit 13c4f7714c6a1ecf748a2f22099447c14fe6ed8c ]
    
    kunit_kzalloc() may return NULL, dereferencing it without NULL check may
    lead to NULL dereference.
    Add a NULL check for ies.
    
    Fixes: 45d43937a44c ("wifi: cfg80211: add a kunit test for 6 GHz colocated AP parsing")
    Signed-off-by: Zichen Xie <zichenxie0106@gmail.com>
    Link: https://patch.msgid.link/20241115063835.5888-1-zichenxie0106@gmail.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: fw: read STEP table from correct UEFI var [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Fri Dec 27 10:01:01 2024 +0200

    wifi: iwlwifi: fw: read STEP table from correct UEFI var
    
    [ Upstream commit 80c2b651fe7fc82e1d1b3e4f9651095896a095f0 ]
    
    This variable exists for the "common" (WiFi/BT) GUID, not the
    WiFi-only GUID. Fix that by passing the GUID to the function.
    A short-cut for the wifi-only version remains so not all code
    must be updated.
    
    However, rename the GUID defines to be clearer.
    
    Fixes: 09b4c35d73a5 ("wifi: iwlwifi: mvm: Support STEP equalizer settings from BIOS.")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Reviewed-by: Daniel Gabay <daniel.gabay@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20241227095718.89a5ad921b6d.Idae95a70ff69d2ba1b610e8eced826961ce7de98@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: mvm: avoid NULL pointer dereference [+ + +]
Author: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Date:   Sun Dec 29 16:44:36 2024 +0200

    wifi: iwlwifi: mvm: avoid NULL pointer dereference
    
    [ Upstream commit cf704a7624f99eb2ffca1a16c69183e85544a613 ]
    
    When iterating over the links of a vif, we need to make sure that the
    pointer is valid (in other words - that the link exists) before
    dereferncing it.
    Use for_each_vif_active_link that also does the check.
    
    Fixes: 2b7ee1a10a72 ("wifi: iwlwiif: mvm: handle the new BT notif")
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Link: https://patch.msgid.link/20241229164246.31d41f7d3eab.I7fb7036a0b187c1636b01970207259cb2327952c@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: mvm: don't count mgmt frames as MPDU [+ + +]
Author: Daniel Gabay <daniel.gabay@intel.com>
Date:   Sun Dec 29 16:44:38 2024 +0200

    wifi: iwlwifi: mvm: don't count mgmt frames as MPDU
    
    [ Upstream commit 76260267ba26a6e513acefa5e7de1200fbeb5b5d ]
    
    When handling TX_CMD notification, for mgmt frames tid is equal
    to IWL_MAX_TID_COUNT, so with the current logic we'll count
    that as MPDU, fix that.
    
    Fixes: ec0d43d26f2c ("wifi: iwlwifi: mvm: Activate EMLSR based on traffic volume")
    Signed-off-by: Daniel Gabay <daniel.gabay@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20241229164246.80b119bb5d08.I31b1e8ba25cce15819225e5ac80332e4eaa20c13@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: don't flush non-uploaded STAs [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Jan 2 16:20:06 2025 +0200

    wifi: mac80211: don't flush non-uploaded STAs
    
    [ Upstream commit aa3ce3f8fafa0b8fb062f28024855ea8cb3f3450 ]
    
    If STA state is pre-moved to AUTHORIZED (such as in IBSS
    scenarios) and insertion fails, the station is freed.
    In this case, the driver never knew about the station,
    so trying to flush it is unexpected and may crash.
    
    Check if the sta was uploaded to the driver before and
    fix this.
    
    Fixes: d00800a289c9 ("wifi: mac80211: add flush_sta method")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20250102161730.e3d10970a7c7.I491bbcccc46f835ade07df0640a75f6ed92f20a3@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: Fix common size calculation for ML element [+ + +]
Author: Ilan Peer <ilan.peer@intel.com>
Date:   Thu Jan 2 16:20:00 2025 +0200

    wifi: mac80211: Fix common size calculation for ML element
    
    [ Upstream commit 19aa842dcbb5860509b7e1b7745dbae0b791f6c4 ]
    
    When the ML type is EPCS the control bitmap is reserved, the length
    is always 7 and is captured by the 1st octet after the control.
    
    Fixes: 0f48b8b88aa9 ("wifi: ieee80211: add definitions for multi-link element")
    Signed-off-by: Ilan Peer <ilan.peer@intel.com>
    Reviewed-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20250102161730.5790376754a7.I381208cbb72b1be2a88239509294099e9337e254@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: fix tid removal during mesh forwarding [+ + +]
Author: Andy Strohman <andrew@andrewstrohman.com>
Date:   Tue Jan 7 10:44:31 2025 +0000

    wifi: mac80211: fix tid removal during mesh forwarding
    
    [ Upstream commit 3aaa1a5a9a2ceeb32afa6ea4110a92338a863c33 ]
    
    With change (wifi: mac80211: fix receiving A-MSDU
    frames on mesh interfaces), a non-zero TID assignment
    is lost during slow path mesh forwarding.
    
    Prior to this change, ieee80211_rx_h_mesh_fwding()
    left the TID intact in the header.
    
    As a result of this header corruption, packets belonging
    to non-zero TIDs will get treating as belonging
    TID 0 by functions such as ieee80211_get_tid().
    While this miscategorization by itself is an
    issue, there are additional ramifications
    due to the fact that skb->priority still reflects
    the mesh forwarded packet's ingress (correct) TID.
    
    The mt7915 driver inspects the TID recorded within
    skb->priority and relays this to the
    hardware/radio during TX. The radio firmware appears to
    react to this by changing the sequence control
    header, but it does not also ensure/correct the TID in
    the QoS control header. As a result, the receiver
    will see packets with sequence numbers corresponding
    to the wrong TID. The receiver of the forwarded
    packet will see TID 0 in QoS control but a sequence number
    corresponding to the correct (different) TID in sequence
    control. This causes data stalls for TID 0 until
    the TID 0 sequence number advances past what the receiver
    believes it should be due to this bug.
    
    Mesh routing mpath changes cause a brief transition
    from fast path forwarding to slow path forwarding.
    Since this bug only affects the slow path forwarding,
    mpath changes bring opportunity for the bug to be triggered.
    In the author's case, he was experiencing TID 0 data stalls
    after mpath changes on an intermediate mesh node.
    
    These observed stalls may be specific
    to mediatek radios. But the inconsistency between
    the packet header and skb->priority may cause problems
    for other drivers as well. Regardless if this causes
    connectivity issues on other radios, this change is
    necessary in order transmit (forward) the packet on the
    correct TID and to have a consistent view a packet's TID
    within mac80211.
    
    Fixes: 986e43b19ae9 ("wifi: mac80211: fix receiving A-MSDU frames on mesh interfaces")
    Signed-off-by: Andy Strohman <andrew@andrewstrohman.com>
    Link: https://patch.msgid.link/20250107104431.446775-1-andrew@andrewstrohman.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: prohibit deactivating all links [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Dec 30 09:14:07 2024 +0100

    wifi: mac80211: prohibit deactivating all links
    
    [ Upstream commit 7553477cbfd784b128297f9ed43751688415bbaa ]
    
    In the internal API this calls this is a WARN_ON, but that
    should remain since internally we want to know about bugs
    that may cause this. Prevent deactivating all links in the
    debugfs write directly.
    
    Reported-by: syzbot+0c5d8e65f23569a8ffec@syzkaller.appspotmail.com
    Fixes: 3d9011029227 ("wifi: mac80211: implement link switching")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Link: https://patch.msgid.link/20241230091408.505bd125c35a.Ic3c1f9572b980a952a444cad62b09b9c6721732b@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: connac: Extend mt76_connac_mcu_uni_add_dev for MLO [+ + +]
Author: Sean Wang <sean.wang@mediatek.com>
Date:   Tue Dec 10 17:19:10 2024 -0800

    wifi: mt76: connac: Extend mt76_connac_mcu_uni_add_dev for MLO
    
    [ Upstream commit 9e4c3a007f01f567f2a8af35decd1e3c1c151c0f ]
    
    This commit extends the `mt76_connac_mcu_uni_add_dev` function to include
    support for Multi-Link Operation (MLO). Additionally, backward
    compatibility for MT7921 is preserved, enabling seamless integration with
    existing setups.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-1-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: Enhance mt7925_mac_link_sta_add to support MLO [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Tue Dec 10 17:19:18 2024 -0800

    wifi: mt76: Enhance mt7925_mac_link_sta_add to support MLO
    
    [ Upstream commit e6803d39a8aa59e557402a541a97ee04b06c49b2 ]
    
    Enhance mt7925_mac_link_sta_add to support MLO.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-9-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt76u_vendor_request: Do not print error messages when -EPROTO [+ + +]
Author: WangYuli <wangyuli@uniontech.com>
Date:   Mon Jan 13 15:02:41 2025 +0800

    wifi: mt76: mt76u_vendor_request: Do not print error messages when -EPROTO
    
    [ Upstream commit f1b1e133a770fcdbd89551651232b034d2f7a27a ]
    
    When initializing the network card, unplugging the device will
    trigger an -EPROTO error, resulting in a flood of error messages
    being printed frantically.
    
    The exception is printed as follows:
    
             mt76x2u 2-2.4:1.0: vendor request req:47 off:9018 failed:-71
             mt76x2u 2-2.4:1.0: vendor request req:47 off:9018 failed:-71
             ...
    
    It will continue to print more than 2000 times for about 5 minutes,
    causing the usb device to be unable to be disconnected. During this
    period, the usb port cannot recognize the new device because the old
    device has not disconnected.
    
    There may be other operating methods that cause -EPROTO, but -EPROTO is
    a low-level hardware error. It is unwise to repeat vendor requests
    expecting to read correct data. It is a better choice to treat -EPROTO
    and -ENODEV the same way.
    
    Similar to commit 9b0f100c1970 ("mt76: usb: process URBs with status
    EPROTO properly") do no schedule rx_worker for urb marked with status
    set  -EPROTO. I also reproduced this situation when plugging and
    unplugging the device, and this patch is effective.
    
    Just do not vendor request again for urb marked with status set -EPROTO.
    
    Link: https://lore.kernel.org/all/531681bd-30f5-4a70-a156-bf8754b8e072@intel.com/
    Link: https://lore.kernel.org/all/D4B9CC1FFC0CBAC3+20250105040607.154706-1-wangyuli@uniontech.com/
    Fixes: b40b15e1521f ("mt76: add usb support to mt76 layer")
    Co-developed-by: Xu Rao <raoxu@uniontech.com>
    Signed-off-by: Xu Rao <raoxu@uniontech.com>
    Signed-off-by: WangYuli <wangyuli@uniontech.com>
    Link: https://patch.msgid.link/9DD7DE7AAB497CB7+20250113070241.63590-1-wangyuli@uniontech.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7915: firmware restart on devices with a second pcie link [+ + +]
Author: Felix Fietkau <nbd@nbd.name>
Date:   Mon Dec 30 20:41:59 2024 +0100

    wifi: mt76: mt7915: firmware restart on devices with a second pcie link
    
    [ Upstream commit 9b60e2ae511c959024ecf6578b3fbe85cd06d7cc ]
    
    It seems that the firmware checks the register used for detecting matching
    PCIe links in order to figure out if a secondary PCIe link is enabled.
    Write the register again just before starting the firmware on hw reset,
    in order to fix an issue that left the second band unusable after restart.
    
    Fixes: 9093cfff72e3 ("mt76: mt7915: add support for using a secondary PCIe link for gen1")
    Link: https://patch.msgid.link/20241230194202.95065-11-nbd@nbd.name
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7915: Fix an error handling path in mt7915_add_interface() [+ + +]
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sun Sep 29 21:53:40 2024 +0200

    wifi: mt76: mt7915: Fix an error handling path in mt7915_add_interface()
    
    [ Upstream commit 126a516fe30639708e759678bcb10178938cc718 ]
    
    If mt76_wcid_alloc() fails, the "mt76.mutex" mutex needs to be released as
    done in the other error handling paths of mt7915_add_interface().
    
    Fixes: f3049b88b2b3 ("wifi: mt76: mt7915: allocate vif wcid in the same range as stations")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Link: https://patch.msgid.link/b9d8fbfc19360bfe60b9cea1cb0f735ab3b4bc26.1727639596.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7915: Fix mesh scan on MT7916 DBDC [+ + +]
Author: Nicolas Cavallari <nicolas.cavallari@green-communications.fr>
Date:   Fri Sep 27 10:53:17 2024 +0200

    wifi: mt76: mt7915: Fix mesh scan on MT7916 DBDC
    
    [ Upstream commit f21b77cb556296116b1cce1d62295d13e35da574 ]
    
    commit c4f075582304 ("wifi: mt76: mt7915: fix command timeout in AP stop
    period") changes the behavior of mt7915_bss_info_changed() in mesh mode
    when enable_beacon becomes false: it calls mt7915_mcu_add_bss_info(...,
    false) and mt7915_mcu_add_sta(..., false) while the previous code
    didn't.  These sends mcu commands that apparently confuse the firmware.
    
    This breaks scanning while in mesh mode on AsiaRF MT7916 DBDC-based cards:
    scanning works but no mesh frames get sent afterwards and the firmware
    seems to be hosed.  It breaks on MT7916 DBDC but not on MT7915 DBDC.
    
    Fixes: c4f075582304 ("wifi: mt76: mt7915: fix command timeout in AP stop period")
    Signed-off-by: Nicolas Cavallari <nicolas.cavallari@green-communications.fr>
    Link: https://patch.msgid.link/20240927085350.4594-1-nicolas.cavallari@green-communications.fr
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7915: fix omac index assignment after hardware reset [+ + +]
Author: Felix Fietkau <nbd@nbd.name>
Date:   Mon Dec 30 20:42:00 2024 +0100

    wifi: mt76: mt7915: fix omac index assignment after hardware reset
    
    [ Upstream commit cd043bbba6f9b71ebe0781d1bd2107565363c4b9 ]
    
    Reset per-phy mac address slot mask in order to avoid leaking entries.
    
    Fixes: 8a55712d124f ("wifi: mt76: mt7915: enable full system reset support")
    Link: https://patch.msgid.link/20241230194202.95065-12-nbd@nbd.name
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7915: fix overflows seen when writing limit attributes [+ + +]
Author: xueqin Luo <luoxueqin@kylinos.cn>
Date:   Mon Dec 2 11:19:17 2024 +0800

    wifi: mt76: mt7915: fix overflows seen when writing limit attributes
    
    [ Upstream commit 64d571742b0ae44eee5efd51e2d4a09d7f6782fc ]
    
    DIV_ROUND_CLOSEST() after kstrtoul() results in an overflow if a large
    number such as 18446744073709551615 is provided by the user.
    Fix it by reordering clamp_val() and DIV_ROUND_CLOSEST() operations.
    This commit was inspired by commit: 57ee12b6c514.
    
    Fixes: 02ee68b95d81 ("mt76: mt7915: add control knobs for thermal throttling")
    Signed-off-by: xueqin Luo <luoxueqin@kylinos.cn>
    Link: https://patch.msgid.link/20241202031917.23741-3-luoxueqin@kylinos.cn
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7915: fix register mapping [+ + +]
Author: Peter Chiu <chui-hao.chiu@mediatek.com>
Date:   Thu Jan 9 19:04:35 2025 +0800

    wifi: mt76: mt7915: fix register mapping
    
    [ Upstream commit dd1649ef966bb87053c17385ea2cfd1758f5385b ]
    
    Bypass the entry when ofs is equal to dev->reg.map[i].size.
    Without this patch, it would get incorrect register mapping when the CR
    address is located at the boundary of an entry.
    
    Fixes: cd4c314a65d3 ("mt76: mt7915: refine register definition")
    Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
    Signed-off-by: Shengyu Qu <wiagn233@outlook.com>
    Link: https://patch.msgid.link/OSZPR01MB843401EAA1DA6BD7AEF356F298132@OSZPR01MB8434.jpnprd01.prod.outlook.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7921: fix using incorrect group cipher after disconnection. [+ + +]
Author: Michael Lo <michael.lo@mediatek.com>
Date:   Thu Aug 1 10:43:35 2024 +0800

    wifi: mt76: mt7921: fix using incorrect group cipher after disconnection.
    
    [ Upstream commit aa566ac6b7272e7ea5359cb682bdca36d2fc7e73 ]
    
    To avoid incorrect cipher after disconnection, we should
    do the key deletion process in this case.
    
    Fixes: e6db67fa871d ("wifi: mt76: ignore key disable commands")
    Signed-off-by: Michael Lo <michael.lo@mediatek.com>
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Tested-by: David Ruth <druth@chromium.org>
    Reviewed-by: David Ruth <druth@chromium.org>
    Link: https://patch.msgid.link/20240801024335.12981-1-mingyen.hsieh@mediatek.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: Cleanup MLO settings post-disconnection [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Tue Dec 10 17:19:25 2024 -0800

    wifi: mt76: mt7925: Cleanup MLO settings post-disconnection
    
    [ Upstream commit 816161051a039eeb1226fc85e2b38389f508906c ]
    
    Clean up MLO settings after disconnection.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-16-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: Enhance mt7925_mac_link_bss_add to support MLO [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Tue Dec 10 17:19:17 2024 -0800

    wifi: mt76: mt7925: Enhance mt7925_mac_link_bss_add to support MLO
    
    [ Upstream commit ac03e5b82bc6b44e8ea3e7c7c624ee1445ff4e4b ]
    
    In mt7925_mac_link_bss_add(), the mt76_connac_mcu_uni_add_dev() function
    must be executed only after all parameters have been properly initialized.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-8-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: Fix CNM Timeout with Single Active Link in MLO [+ + +]
Author: Leon Yen <leon.yen@mediatek.com>
Date:   Tue Dec 10 17:19:16 2024 -0800

    wifi: mt76: mt7925: Fix CNM Timeout with Single Active Link in MLO
    
    [ Upstream commit 4a596010b246816d7589d8d775b83833a59e63f9 ]
    
    Fix CNM command timeout issue when only a single active link is available
    during MLO connection to fix the following kernel log error.
    
    [  741.931030] wlan0: [link 1] local address be:90:e0:22:c4:22, AP link address 08:0c:43:7a:19:2a
    [  741.931042] wlan0: [link 1] determined AP 08:0c:43:7a:19:2a to be EHT
    [  741.931052] wlan0: [link 1] connecting with EHT mode, max bandwidth 160 MHz
    [  741.931071] wlan0: WMM AC=0 acm=0 aifs=2 cWmin=3 cWmax=7 txop=47 uapsd=0, downgraded=0
    [  741.931076] wlan0: WMM AC=1 acm=0 aifs=2 cWmin=7 cWmax=15 txop=94 uapsd=0, downgraded=0
    [  741.931080] wlan0: WMM AC=2 acm=0 aifs=3 cWmin=15 cWmax=1023 txop=0 uapsd=0, downgraded=0
    [  741.931085] wlan0: WMM AC=3 acm=0 aifs=7 cWmin=15 cWmax=1023 txop=0 uapsd=0, downgraded=0
    [  741.931095] wlan0: moving STA 22:0c:43:7a:19:2a to state 3
    [  749.090928] mt7925e 0000:2b:00.0: Message 00020002 (seq 15) timeout
    [  752.162972] mt7925e 0000:2b:00.0: Message 00020003 (seq 1) timeout
    [  755.234975] mt7925e 0000:2b:00.0: Message 00020002 (seq 2) timeout
    [  758.306971] mt7925e 0000:2b:00.0: Message 00020004 (seq 3) timeout
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Leon Yen <leon.yen@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-7-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: fix get wrong chip cap from incorrect pointer [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Mon Nov 4 13:14:47 2024 +0800

    wifi: mt76: mt7925: fix get wrong chip cap from incorrect pointer
    
    [ Upstream commit 4d264f31b3074d361f65702dd7969861bcf1c158 ]
    
    Use tlv instead of skb, because using skb will get valid data
    with wrong offset.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Link: https://patch.msgid.link/20241104051447.4286-1-mingyen.hsieh@mediatek.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: Fix incorrect MLD address in bss_mld_tlv for MLO support [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Tue Dec 10 17:19:11 2024 -0800

    wifi: mt76: mt7925: Fix incorrect MLD address in bss_mld_tlv for MLO support
    
    [ Upstream commit 4d5427443595439c6cf5edfd9fb7224589f65b27 ]
    
    For this TLV, the address should be set to the MLD address rather than
    the link address.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-2-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: Fix incorrect WCID assignment for MLO [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Tue Dec 10 17:19:12 2024 -0800

    wifi: mt76: mt7925: Fix incorrect WCID assignment for MLO
    
    [ Upstream commit 4911e4cb157cf87d5bdb3fa8e0c200032443371e ]
    
    For MLO, each link must have a corresponding WCID.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-3-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: Fix incorrect WCID phy_idx assignment [+ + +]
Author: allan.wang <allan.wang@mediatek.com>
Date:   Tue Dec 10 17:19:14 2024 -0800

    wifi: mt76: mt7925: Fix incorrect WCID phy_idx assignment
    
    [ Upstream commit 4f741a2378b27a6be5e63b829cae4eb9cf2484e7 ]
    
    Fix incorrect WCID phy_idx assignment.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: allan.wang <allan.wang@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-5-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: fix NULL deref check in mt7925_change_vif_links [+ + +]
Author: Charles Han <hanchunchao@inspur.com>
Date:   Fri Oct 25 15:55:54 2024 +0800

    wifi: mt76: mt7925: fix NULL deref check in mt7925_change_vif_links
    
    [ Upstream commit 5cd0bd815c8a48862a296df9b30e0ea0da14acd3 ]
    
    In mt7925_change_vif_links() devm_kzalloc() may return NULL but this
    returned value is not checked.
    
    Fixes: 69acd6d910b0 ("wifi: mt76: mt7925: add mt7925_change_vif_links")
    Signed-off-by: Charles Han <hanchunchao@inspur.com>
    Link: https://patch.msgid.link/20241025075554.181572-1-hanchunchao@inspur.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: fix off by one in mt7925_load_clc() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Wed Sep 11 10:43:03 2024 +0300

    wifi: mt76: mt7925: fix off by one in mt7925_load_clc()
    
    [ Upstream commit 08fa656c91fd5fdf47ba393795b9c0d1e97539ed ]
    
    This comparison should be >= instead of > to prevent an out of bounds
    read and write.
    
    Fixes: 9679ca7326e5 ("wifi: mt76: mt7925: fix a potential array-index-out-of-bounds issue for clc")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://patch.msgid.link/84bf5dd2-2fe3-4410-a7af-ae841e41082a@stanley.mountain
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: fix the invalid ip address for arp offload [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Thu Nov 7 13:30:05 2024 +0800

    wifi: mt76: mt7925: fix the invalid ip address for arp offload
    
    [ Upstream commit 113d469e7e23579a64b0fbb2eadf9228763092be ]
    
    The wrong ieee80211_vif will lead to get invalid ip address and
    the correct ieee80211_vif can be obtained from ieee80211_bss_conf.
    
    Fixes: 147324292979 ("wifi: mt76: mt7925: add link handling in the BSS_CHANGED_ARP_FILTER handler")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Link: https://patch.msgid.link/20241107053005.10558-1-mingyen.hsieh@mediatek.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: fix wrong band_idx setting when enable sniffer mode [+ + +]
Author: Eric-SY Chang <eric-sy.chang@mediatek.com>
Date:   Fri Nov 1 15:43:40 2024 +0800

    wifi: mt76: mt7925: fix wrong band_idx setting when enable sniffer mode
    
    [ Upstream commit 85bb7c10c1a013ab29d4be07559105dd843c6f7d ]
    
    Currently, sniffer mode does not support band auto,
    so set band_idx to the default 0.
    
    Fixes: 0cb349d742d1 ("wifi: mt76: mt7925: update mt7925_mac_link_bss_add for MLO")
    Signed-off-by: Eric-SY Chang <eric-sy.chang@mediatek.com>
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Link: https://patch.msgid.link/20241101074340.26176-1-mingyen.hsieh@mediatek.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: fix wrong parameter for related cmd of chan info [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Tue Dec 10 17:19:15 2024 -0800

    wifi: mt76: mt7925: fix wrong parameter for related cmd of chan info
    
    [ Upstream commit 3f0d2178aaf1ed1c017e61cde9ce8a4432c804d1 ]
    
    Fix incorrect parameters for the related channel information command.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-6-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: Init secondary link PM state [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Tue Dec 10 17:19:23 2024 -0800

    wifi: mt76: mt7925: Init secondary link PM state
    
    [ Upstream commit 28045ef2bc5bbeec4717da98bf31aca0faaccf02 ]
    
    Initialize secondary link PM state.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-14-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: Properly handle responses for commands with events [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Tue Dec 10 17:19:26 2024 -0800

    wifi: mt76: mt7925: Properly handle responses for commands with events
    
    [ Upstream commit 349460913a4d029cc37c9e3817b1903233b4a627 ]
    
    Properly retrieve the response for commands with events. Ensure accurate
    handling of event-driven commands.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-17-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: Update mt7925_mcu_sta_update for BC in ASSOC state [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Tue Dec 10 17:19:19 2024 -0800

    wifi: mt76: mt7925: Update mt7925_mcu_sta_update for BC in ASSOC state
    
    [ Upstream commit 0e02f6ed6a49577e29e0b1f7900fad3ed8ae870c ]
    
    Update mt7925_mcu_sta_update for broadcast (BC) in the ASSOC state.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-10-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: Update mt7925_mcu_uni_[tx,rx]_ba for MLO [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Tue Dec 10 17:19:24 2024 -0800

    wifi: mt76: mt7925: Update mt7925_mcu_uni_[tx,rx]_ba for MLO
    
    [ Upstream commit eb2a9a12c6092a26f632468d6610497d4f0e40da ]
    
    Update mt7925_mcu_uni_[tx,rx]_ba for MLO support in firmware.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-15-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: Update mt7925_unassign_vif_chanctx for per-link BSS [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Tue Dec 10 17:19:21 2024 -0800

    wifi: mt76: mt7925: Update mt7925_unassign_vif_chanctx for per-link BSS
    
    [ Upstream commit 30b721467c9c2510e26af6e78e92d7cc08a14bc4 ]
    
    Update mt7925_unassign_vif_chanctx to support per-link BSS.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-12-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: Update mt792x_rx_get_wcid for per-link STA [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Tue Dec 10 17:19:20 2024 -0800

    wifi: mt76: mt7925: Update mt792x_rx_get_wcid for per-link STA
    
    [ Upstream commit 90c10286b176421068b136da51ed83059a68e322 ]
    
    Update mt792x_rx_get_wcid to support per-link STA.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-11-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: Update secondary link PS flow [+ + +]
Author: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date:   Tue Dec 10 17:19:22 2024 -0800

    wifi: mt76: mt7925: Update secondary link PS flow
    
    [ Upstream commit 8dafab9c4116a6a4fd870be03a3d9b66771dc5a8 ]
    
    Update the power-saving flow for secondary links.
    
    Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Link: https://patch.msgid.link/20241211011926.5002-13-sean.wang@kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7996: add max mpdu len capability [+ + +]
Author: Peter Chiu <chui-hao.chiu@mediatek.com>
Date:   Tue Jan 14 18:10:18 2025 +0800

    wifi: mt76: mt7996: add max mpdu len capability
    
    [ Upstream commit 1816ad9381e0c150e4c44ce6dd6ee2c52008a052 ]
    
    Set max mpdu len to 11454 according to hardware capability.
    Without this patch, the max ampdu length would be 3895 and count not get
    expected performance.
    
    Fixes: 348533eb968d ("wifi: mt76: mt7996: add EHT capability init")
    Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
    Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
    Link: https://patch.msgid.link/20250114101026.3587702-1-shayne.chen@mediatek.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7996: fix definition of tx descriptor [+ + +]
Author: Benjamin Lin <benjamin-jw.lin@mediatek.com>
Date:   Tue Jan 14 18:10:23 2025 +0800

    wifi: mt76: mt7996: fix definition of tx descriptor
    
    [ Upstream commit 14749fe2ed360c92c1a2a76dac0b77f759234981 ]
    
    For mt7992 chipsets, the definition of TXD.DW6.BIT10~15 has different
    interpretations on different frame types. Driver only needs to fill
    MSDU_CNT for non-management frames.
    
    Fixes: 408566db8cad ("wifi: mt76: connac: add new definition of tx descriptor")
    Co-developed-by: Shayne Chen <shayne.chen@mediatek.com>
    Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
    Signed-off-by: Benjamin Lin <benjamin-jw.lin@mediatek.com>
    Link: https://patch.msgid.link/20250114101026.3587702-6-shayne.chen@mediatek.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7996: fix HE Phy capability [+ + +]
Author: Howard Hsu <howard-yh.hsu@mediatek.com>
Date:   Tue Jan 14 18:10:20 2025 +0800

    wifi: mt76: mt7996: fix HE Phy capability
    
    [ Upstream commit 7e3aef59a403ade5dd4ea02edc2d7138a66d74b6 ]
    
    Set HE SU PPDU And HE MU PPDU With 4x HE-LTF And 0.8 us GI within HE PHY
    Capabilities element as 1 since hardware can support.
    
    Fixes: 98686cd21624 ("wifi: mt76: mt7996: add driver for MediaTek Wi-Fi 7 (802.11be) devices")
    Signed-off-by: Howard Hsu <howard-yh.hsu@mediatek.com>
    Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
    Link: https://patch.msgid.link/20250114101026.3587702-3-shayne.chen@mediatek.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7996: fix incorrect indexing of MIB FW event [+ + +]
Author: Benjamin Lin <benjamin-jw.lin@mediatek.com>
Date:   Tue Jan 14 18:10:21 2025 +0800

    wifi: mt76: mt7996: fix incorrect indexing of MIB FW event
    
    [ Upstream commit 5c2a25a1ab76a2976dddc5ffd58498866f3ef7c2 ]
    
    Fix wrong calculation of the channel times due to incorrect
    interpretation from the FW event.
    
    Fixes: 98686cd21624 ("wifi: mt76: mt7996: add driver for MediaTek Wi-Fi 7 (802.11be) devices")
    Signed-off-by: Benjamin Lin <benjamin-jw.lin@mediatek.com>
    Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
    Link: https://patch.msgid.link/20250114101026.3587702-4-shayne.chen@mediatek.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7996: fix invalid interface combinations [+ + +]
Author: Shayne Chen <shayne.chen@mediatek.com>
Date:   Mon Oct 7 21:51:33 2024 +0800

    wifi: mt76: mt7996: fix invalid interface combinations
    
    [ Upstream commit 89aca45f26879dfbbf8374c425c4811f69cfc2df ]
    
    Setting beacon_int_min_gcd and NL80211_IFTYPE_ADHOC in the same interface
    combination is invalid, which will trigger the following warning trace
    and get error returned from wiphy_register().
    
    [   10.080325] Call trace:
    [   10.082761]  wiphy_register+0xc4/0x76c [cfg80211]
    [   10.087465]  ieee80211_register_hw+0x800/0xac4 [mac80211]
    [   10.092868]  mt76_register_device+0x16c/0x2c0 [mt76]
    [   10.097829]  mt7996_register_device+0x740/0x844 [mt7996e]
    
    Fix this by removing unused adhoc iftype.
    
    Fixes: 948f65249868 ("wifi: mt76: mt7996: advertize beacon_int_min_gcd")
    Reported-by: Frank Wunderlich <frank-w@public-files.de>
    Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
    Tested-By: Frank Wunderlich <frank-w@public-files.de>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://patch.msgid.link/20241007135133.5336-1-shayne.chen@mediatek.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7996: fix ldpc setting [+ + +]
Author: Peter Chiu <chui-hao.chiu@mediatek.com>
Date:   Tue Jan 14 18:10:24 2025 +0800

    wifi: mt76: mt7996: fix ldpc setting
    
    [ Upstream commit da8352da1e4f476fdbf549a4efce4f3c618fde3b ]
    
    The non-AP interfaces would not use conf->vht_ldpc so they never set
    STA_CAP_VHT_LDPC even if peer-station support LDPC.
    Check conf->vht_ldpc only for AP interface.
    
    Without this patch, station only uses BCC to transmit packet in VHT mode.
    
    Fixes: dda423dd65c3 ("wifi: mt76: mt7996: remove mt7996_mcu_beacon_check_caps()")
    Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
    Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
    Link: https://patch.msgid.link/20250114101026.3587702-7-shayne.chen@mediatek.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7996: fix overflows seen when writing limit attributes [+ + +]
Author: xueqin Luo <luoxueqin@kylinos.cn>
Date:   Mon Dec 2 11:19:16 2024 +0800

    wifi: mt76: mt7996: fix overflows seen when writing limit attributes
    
    [ Upstream commit 5adbc8ce5bbe7e311e2600b7d7d998a958873e98 ]
    
    DIV_ROUND_CLOSEST() after kstrtoul() results in an overflow if a large
    number such as 18446744073709551615 is provided by the user.
    Fix it by reordering clamp_val() and DIV_ROUND_CLOSEST() operations.
    This commit was inspired by commit: 57ee12b6c514.
    
    Fixes: 6879b2e94172 ("wifi: mt76: mt7996: add thermal sensor device support")
    Signed-off-by: xueqin Luo <luoxueqin@kylinos.cn>
    Link: https://patch.msgid.link/20241202031917.23741-2-luoxueqin@kylinos.cn
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7996: fix register mapping [+ + +]
Author: Peter Chiu <chui-hao.chiu@mediatek.com>
Date:   Thu Jan 9 19:04:36 2025 +0800

    wifi: mt76: mt7996: fix register mapping
    
    [ Upstream commit d07ecb4f7070e84de49e8fa4e5a83dd52716d805 ]
    
    Bypass the entry when ofs is equal to dev->reg.map[i].size.
    Without this patch, it would get incorrect register mapping when the CR
    address is located at the boundary of an entry.
    
    Fixes: 98686cd21624 ("wifi: mt76: mt7996: add driver for MediaTek Wi-Fi 7 (802.11be) devices")
    Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
    Signed-off-by: Shengyu Qu <wiagn233@outlook.com>
    Link: https://patch.msgid.link/OSZPR01MB84344FEFF53004B5CF40BCC198132@OSZPR01MB8434.jpnprd01.prod.outlook.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7996: fix rx filter setting for bfee functionality [+ + +]
Author: Felix Fietkau <nbd@nbd.name>
Date:   Mon Dec 30 20:41:53 2024 +0100

    wifi: mt76: mt7996: fix rx filter setting for bfee functionality
    
    [ Upstream commit 858fd2a53877b2e8b1d991a5a861ac34a0f55ef8 ]
    
    Fix rx filter setting to prevent dropping NDPA frames. Without this
    change, bfee functionality may behave abnormally.
    
    Fixes: 98686cd21624 ("wifi: mt76: mt7996: add driver for MediaTek Wi-Fi 7 (802.11be) devices")
    Link: https://patch.msgid.link/20241230194202.95065-5-nbd@nbd.name
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7996: fix the capability of reception of EHT MU PPDU [+ + +]
Author: Howard Hsu <howard-yh.hsu@mediatek.com>
Date:   Tue Jan 14 18:10:19 2025 +0800

    wifi: mt76: mt7996: fix the capability of reception of EHT MU PPDU
    
    [ Upstream commit 2ffbdfc1bd78ba944c5754791c84f32232b513c6 ]
    
    This commit includes two changes. First, enable "EHT MU PPDU With 4x
    EHT-LTF And 0.8us GI" in EHT Phy capabilities element since hardware
    can support. Second, fix the value of "Maximum number of supported
    EHT LTFs" in the same element, where the previous setting of 3 in
    Bit 3-4 was incorrect.
    
    Fixes: 348533eb968d ("wifi: mt76: mt7996: add EHT capability init")
    Signed-off-by: Howard Hsu <howard-yh.hsu@mediatek.com>
    Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
    Link: https://patch.msgid.link/20250114101026.3587702-2-shayne.chen@mediatek.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: only enable tx worker after setting the channel [+ + +]
Author: Felix Fietkau <nbd@nbd.name>
Date:   Mon Dec 30 20:41:56 2024 +0100

    wifi: mt76: only enable tx worker after setting the channel
    
    [ Upstream commit 228bc0e79c85269d36cc81e0288e95f2f9ba7ae1 ]
    
    Avoids sending packets too early
    
    Fixes: 0b3be9d1d34e ("wifi: mt76: add separate tx scheduling queue for off-channel tx")
    Link: https://patch.msgid.link/20241230194202.95065-8-nbd@nbd.name
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtlwifi: destroy workqueue at rtl_deinit_core [+ + +]
Author: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
Date:   Fri Dec 6 14:37:11 2024 -0300

    wifi: rtlwifi: destroy workqueue at rtl_deinit_core
    
    [ Upstream commit d8ece6fc3694657e4886191b32ca1690af11adda ]
    
    rtl_wq is allocated at rtl_init_core, so it makes more sense to destroy it
    at rtl_deinit_core. In the case of USB, where _rtl_usb_init does not
    require anything to be undone, that is fine. But for PCI, rtl_pci_init,
    which is called after rtl_init_core, needs to deallocate data, but only if
    it has been called.
    
    That means that destroying the workqueue needs to be done whether
    rtl_pci_init has been called or not. And since rtl_pci_deinit was doing it,
    it has to be moved out of there.
    
    It makes more sense to move it to rtl_deinit_core and have it done in both
    cases, USB and PCI.
    
    Since this is a requirement for a followup memory leak fix, mark this as
    fixing such memory leak.
    
    Fixes: 0c8173385e54 ("rtl8192ce: Add new driver")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241206173713.3222187-3-cascardo@igalia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtlwifi: do not complete firmware loading needlessly [+ + +]
Author: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
Date:   Thu Nov 7 10:33:18 2024 -0300

    wifi: rtlwifi: do not complete firmware loading needlessly
    
    [ Upstream commit e73e11d303940119e41850a0452a0deda2cc4eb5 ]
    
    The only code waiting for completion is driver removal, which will not be
    called when probe returns a failure. So this completion is unnecessary.
    
    Fixes: b0302aba812b ("rtlwifi: Convert to asynchronous firmware load")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
    Acked-by: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241107133322.855112-2-cascardo@igalia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtlwifi: fix init_sw_vars leak when probe fails [+ + +]
Author: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
Date:   Thu Nov 7 10:33:21 2024 -0300

    wifi: rtlwifi: fix init_sw_vars leak when probe fails
    
    [ Upstream commit 00260350aed80c002df270c805ca443ec9a719a6 ]
    
    If ieee80211_register_hw fails, the memory allocated for the firmware will
    not be released. Call deinit_sw_vars as the function that undoes the
    allocationes done by init_sw_vars.
    
    Fixes: cefe3dfdb9f5 ("rtl8192cu: Call ieee80211_register_hw from rtl_usb_probe")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241107133322.855112-5-cascardo@igalia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtlwifi: fix memory leaks and invalid access at probe error path [+ + +]
Author: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
Date:   Fri Dec 6 14:37:12 2024 -0300

    wifi: rtlwifi: fix memory leaks and invalid access at probe error path
    
    [ Upstream commit e7ceefbfd8d447abc8aca8ab993a942803522c06 ]
    
    Deinitialize at reverse order when probe fails.
    
    When init_sw_vars fails, rtl_deinit_core should not be called, specially
    now that it destroys the rtl_wq workqueue.
    
    And call rtl_pci_deinit and deinit_sw_vars, otherwise, memory will be
    leaked.
    
    Remove pci_set_drvdata call as it will already be cleaned up by the core
    driver code and could lead to memory leaks too. cf. commit 8d450935ae7f
    ("wireless: rtlwifi: remove unnecessary pci_set_drvdata()") and
    commit 3d86b93064c7 ("rtlwifi: Fix PCI probe error path orphaned memory").
    
    Fixes: 0c8173385e54 ("rtl8192ce: Add new driver")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241206173713.3222187-4-cascardo@igalia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtlwifi: pci: wait for firmware loading before releasing memory [+ + +]
Author: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
Date:   Fri Dec 6 14:37:13 2024 -0300

    wifi: rtlwifi: pci: wait for firmware loading before releasing memory
    
    [ Upstream commit b59b86c5d08be7d761c04affcbcec8184738c200 ]
    
    At probe error path, the firmware loading work may have already been
    queued. In such a case, it will try to access memory allocated by the probe
    function, which is about to be released. In such paths, wait for the
    firmware worker to finish before releasing memory.
    
    Fixes: 3d86b93064c7 ("rtlwifi: Fix PCI probe error path orphaned memory")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241206173713.3222187-5-cascardo@igalia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtlwifi: remove unused check_buddy_priv [+ + +]
Author: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
Date:   Fri Dec 6 14:37:10 2024 -0300

    wifi: rtlwifi: remove unused check_buddy_priv
    
    [ Upstream commit 2fdac64c3c35858aa8ac5caa70b232e03456e120 ]
    
    Commit 2461c7d60f9f ("rtlwifi: Update header file") introduced a global
    list of private data structures.
    
    Later on, commit 26634c4b1868 ("rtlwifi Modify existing bits to match
    vendor version 2013.02.07") started adding the private data to that list at
    probe time and added a hook, check_buddy_priv to find the private data from
    a similar device.
    
    However, that function was never used.
    
    Besides, though there is a lock for that list, it is never used. And when
    the probe fails, the private data is never removed from the list. This
    would cause a second probe to access freed memory.
    
    Remove the unused hook, structures and members, which will prevent the
    potential race condition on the list and its corruption during a second
    probe when probe fails.
    
    Fixes: 26634c4b1868 ("rtlwifi Modify existing bits to match vendor version 2013.02.07")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241206173713.3222187-2-cascardo@igalia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtlwifi: rtl8192se: rise completion of firmware loading as last step [+ + +]
Author: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
Date:   Thu Nov 7 10:33:19 2024 -0300

    wifi: rtlwifi: rtl8192se: rise completion of firmware loading as last step
    
    [ Upstream commit 8559a9e0c457729fe3edb3176bbf7c7874f482b0 ]
    
    Just like in commit 4dfde294b979 ("rtlwifi: rise completion at the last
    step of firmware callback"), only signal completion once the function is
    finished. Otherwise, the module removal waiting for the completion could
    free the memory that the callback will still use before returning.
    
    Fixes: b0302aba812b ("rtlwifi: Convert to asynchronous firmware load")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
    Acked-by: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241107133322.855112-3-cascardo@igalia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtlwifi: rtl8821ae: phy: restore removed code to fix infinite loop [+ + +]
Author: Colin Ian King <colin.i.king@gmail.com>
Date:   Wed Nov 6 15:46:42 2024 +0000

    wifi: rtlwifi: rtl8821ae: phy: restore removed code to fix infinite loop
    
    [ Upstream commit 5e5903a442bb889a62a0f5d89ac33e53ab08592c ]
    
    A previous clean-up fix removed the assignment of v2 inside a while loop
    that turned it into an infinite loop. Fix this by restoring the assignment
    of v2 from array[] so that v2 is updated inside the loop.
    
    Fixes: cda37445718d ("wifi: rtlwifi: rtl8821ae: phy: remove some useless code")
    Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
    Tested-by: Ping-Ke Shih <pkshih@realtek.com>
    Reviewed-by: Su Hui <suhui@nfschina.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241106154642.1627886-1-colin.i.king@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtlwifi: usb: fix workqueue leak when probe fails [+ + +]
Author: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
Date:   Thu Nov 7 10:33:22 2024 -0300

    wifi: rtlwifi: usb: fix workqueue leak when probe fails
    
    [ Upstream commit f79bc5c67867c19ce2762e7934c20dbb835ed82c ]
    
    rtl_init_core creates a workqueue that is then assigned to rtl_wq.
    rtl_deinit_core does not destroy it. It is left to rtl_usb_deinit, which
    must be called in the probe error path.
    
    Fixes: 2ca20f79e0d8 ("rtlwifi: Add usb driver")
    Fixes: 851639fdaeac ("rtlwifi: Modify some USB de-initialize code.")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241107133322.855112-6-cascardo@igalia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtlwifi: wait for firmware loading before releasing memory [+ + +]
Author: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
Date:   Thu Nov 7 10:33:20 2024 -0300

    wifi: rtlwifi: wait for firmware loading before releasing memory
    
    [ Upstream commit b4b26642b31ef282df6ff7ea8531985edfdef12a ]
    
    At probe error path, the firmware loading work may have already been
    queued. In such a case, it will try to access memory allocated by the probe
    function, which is about to be released. In such paths, wait for the
    firmware worker to finish before releasing memory.
    
    Fixes: a7f7c15e945a ("rtlwifi: rtl8192cu: Free ieee80211_hw if probing fails")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241107133322.855112-4-cascardo@igalia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw89: avoid to init mgnt_entry list twice when WoWLAN failed [+ + +]
Author: Chih-Kang Chang <gary.chang@realtek.com>
Date:   Fri Jan 3 10:45:00 2025 +0800

    wifi: rtw89: avoid to init mgnt_entry list twice when WoWLAN failed
    
    [ Upstream commit 2f7667675df1b40b73ecc53b4b8c3189b1e5f2c1 ]
    
    If WoWLAN failed in resume flow, the rtw89_ops_add_interface() triggered
    without removing the interface first. Then the mgnt_entry list init again,
    causing the list_empty() check in rtw89_chanctx_ops_assign_vif()
    useless, and list_add_tail() again. Therefore, we have added a check to
    prevent double adding of the list.
    
    rtw89_8852ce 0000:01:00.0: failed to check wow status disabled
    rtw89_8852ce 0000:01:00.0: wow: failed to check disable fw ready
    rtw89_8852ce 0000:01:00.0: wow: failed to swap to normal fw
    rtw89_8852ce 0000:01:00.0: failed to disable wow
    rtw89_8852ce 0000:01:00.0: failed to resume for wow -110
    rtw89_8852ce 0000:01:00.0: MAC has already powered on
    i2c_hid_acpi i2c-ILTK0001:00: PM: acpi_subsys_resume+0x0/0x60 returned 0 after 284705 usecs
    list_add corruption. prev->next should be next (ffff9d9719d82228), but was ffff9d9719f96030. (prev=ffff9d9719f96030).
    ------------[ cut here ]------------
    kernel BUG at lib/list_debug.c:34!
    invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
    CPU: 2 PID: 6918 Comm: kworker/u8:19 Tainted: G     U     O
    Hardware name: Google Anraggar/Anraggar, BIOS Google_Anraggar.15217.514.0 03/25/2024
    Workqueue: events_unbound async_run_entry_fn
    RIP: 0010:__list_add_valid_or_report+0x9f/0xb0
    Code: e8 56 89 ff ff 0f 0b 48 c7 c7 3e fc e0 96 48 89 c6 e8 45 89 ff ...
    RSP: 0018:ffffa51b42bbbaf0 EFLAGS: 00010246
    RAX: 0000000000000075 RBX: ffff9d9719d82ab0 RCX: 13acb86e047a4400
    RDX: 3fffffffffffffff RSI: 0000000000000000 RDI: 00000000ffffdfff
    RBP: ffffa51b42bbbb28 R08: ffffffff9768e250 R09: 0000000000001fff
    R10: ffffffff9765e250 R11: 0000000000005ffd R12: ffff9d9719f95c40
    R13: ffff9d9719f95be8 R14: ffff9d97081bfd78 R15: ffff9d9719d82060
    FS:  0000000000000000(0000) GS:ffff9d9a6fb00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007e7d029a4060 CR3: 0000000345e38000 CR4: 0000000000750ee0
    PKRU: 55555554
    Call Trace:
     <TASK>
     ? __die_body+0x68/0xb0
     ? die+0xaa/0xd0
     ? do_trap+0x9f/0x170
     ? __list_add_valid_or_report+0x9f/0xb0
     ? __list_add_valid_or_report+0x9f/0xb0
     ? handle_invalid_op+0x69/0x90
     ? __list_add_valid_or_report+0x9f/0xb0
     ? exc_invalid_op+0x3c/0x50
     ? asm_exc_invalid_op+0x16/0x20
     ? __list_add_valid_or_report+0x9f/0xb0
     rtw89_chanctx_ops_assign_vif+0x1f9/0x210 [rtw89_core cbb375c44bf28564ce479002bff66617a25d9ac1]
     ? __mutex_unlock_slowpath+0xa0/0xf0
     rtw89_ops_assign_vif_chanctx+0x4b/0x90 [rtw89_core cbb375c44bf28564ce479002bff66617a25d9ac1]
     drv_assign_vif_chanctx+0xa7/0x1f0 [mac80211 6efaad16237edaaea0868b132d4f93ecf918a8b6]
     ieee80211_reconfig+0x9cb/0x17b0 [mac80211 6efaad16237edaaea0868b132d4f93ecf918a8b6]
     ? __pfx_wiphy_resume+0x10/0x10 [cfg80211 572d03acaaa933fe38251be7fce3b3675284b8ed]
     ? dev_printk_emit+0x51/0x70
     ? _dev_info+0x6e/0x90
     wiphy_resume+0x89/0x180 [cfg80211 572d03acaaa933fe38251be7fce3b3675284b8ed]
     ? __pfx_wiphy_resume+0x10/0x10 [cfg80211 572d03acaaa933fe38251be7fce3b3675284b8ed]
     dpm_run_callback+0x37/0x1e0
     device_resume+0x26d/0x4b0
     ? __pfx_dpm_watchdog_handler+0x10/0x10
     async_resume+0x1d/0x30
     async_run_entry_fn+0x29/0xd0
     worker_thread+0x397/0x970
     kthread+0xed/0x110
     ? __pfx_worker_thread+0x10/0x10
     ? __pfx_kthread+0x10/0x10
     ret_from_fork+0x38/0x50
     ? __pfx_kthread+0x10/0x10
     ret_from_fork_asm+0x1b/0x30
     </TASK>
    
    Fixes: 68ec751b2881 ("wifi: rtw89: chan: manage active interfaces")
    Signed-off-by: Chih-Kang Chang <gary.chang@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20250103024500.14990-1-pkshih@realtek.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw89: chan: fix soft lockup in rtw89_entity_recalc_mgnt_roles() [+ + +]
Author: Zong-Zhe Yang <kevin_yang@realtek.com>
Date:   Tue Dec 31 08:48:09 2024 +0800

    wifi: rtw89: chan: fix soft lockup in rtw89_entity_recalc_mgnt_roles()
    
    [ Upstream commit e4790b3e314a4814f1680a5dc552031fb199b878 ]
    
    During rtw89_entity_recalc_mgnt_roles(), there is a normalizing process
    which will re-order the list if an entry with target pattern is found.
    And once one is found, should have aborted the list_for_each_entry. But,
    `break` just aborted the inner for-loop. The outer list_for_each_entry
    still continues. Normally, only the first entry will match the target
    pattern, and the re-ordering will change nothing, so there won't be
    soft lockup. However, in some special cases, soft lockup would happen.
    
    Fix it by `goto fill` to break from the list_for_each_entry.
    
    The following is a sample of kernel log for this problem.
    
    watchdog: BUG: soft lockup - CPU#1 stuck for 26s! [wpa_supplicant:2055]
    [...]
    RIP: 0010:rtw89_entity_recalc ([...] chan.c:392 chan.c:479) rtw89_core
    [...]
    
    Fixes: 68ec751b2881 ("wifi: rtw89: chan: manage active interfaces")
    Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241231004811.8646-3-pkshih@realtek.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw89: chan: manage active interfaces [+ + +]
Author: Zong-Zhe Yang <kevin_yang@realtek.com>
Date:   Tue Oct 22 16:31:04 2024 +0800

    wifi: rtw89: chan: manage active interfaces
    
    [ Upstream commit 68ec751b288178de7d19b71ea61648269a35b8cd ]
    
    To set channel well for combination of MCC (multi-channel concurrency) and
    impending MLO support, we need a method to manage relation between active
    interfaces and channel contexts. If an interface owns at least one active
    link, we call it an active interface. We add a list to manage active ones.
    
    Basically, the list follows the active order except for the below case. To
    be compatible with legacy behavior, the first interface that owns the first
    channel context will put at the first entry in the list when recalculating.
    
    Besides, MCC can also select and fill roles based on the above active list.
    
    Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241022083106.149252-4-pkshih@realtek.com
    Stable-dep-of: e47f0a589854 ("wifi: rtw89: fix proceeding MCC with wrong scanning state after sequence changes")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw89: fix proceeding MCC with wrong scanning state after sequence changes [+ + +]
Author: Zong-Zhe Yang <kevin_yang@realtek.com>
Date:   Tue Dec 31 08:48:08 2024 +0800

    wifi: rtw89: fix proceeding MCC with wrong scanning state after sequence changes
    
    [ Upstream commit e47f0a5898540eb19b953708707887d4b3020645 ]
    
    When starting/proceeding MCC, it will abort an ongoing hw scan process.
    In the proceeding cases, it unexpectedly tries to abort a non-exist hw
    scan process. Then, a trace shown at the bottom will happen. This problem
    is caused by a previous commit which changed some call sequence inside
    rtw89_hw_scan_complete() to fix some coex problems. These changes lead
    to our scanning flag was not cleared when proceeding MCC. To keep the
    fixes on coex, and resolve the problem here, re-consider the related
    call sequence.
    
    The known sequence requirements are listed below.
    
    * the old sequence:
            A. notify coex
            B. clear scanning flag
            C. proceed chanctx
                    C-1. set channel
                    C-2. proceed MCC
    (the problem: A needs to be after C-1)
    
    * the current sequence:
            C. proceed chanctx
                    C-1. set channel
                    C-2. proceed MCC
            A. notify coex
            B. clear scanning flag
    (the problem: C-2 needs to be after B)
    
    So, now let hw scan caller pass a callback to proceed chanctx if needed.
    Then, the new sequence will be like the below.
            C-1. set channel
            A. notify coex
            B. clear scanning flag
            C-2. proceed MCC
    
    The following is the kernel log for the problem in current sequence.
    
    rtw89_8852be 0000:04:00.0: rtw89_hw_scan_offload failed ret -110
    ------------[ cut here ]------------
    [...]
    CPU: 2 PID: 3991 Comm: kworker/u16:0 Tainted: G           OE      6.6.17 #3
    Hardware name: LENOVO 2356AD1/2356AD1, BIOS G7ETB3WW (2.73 ) 11/28/2018
    Workqueue: events_unbound wiphy_work_cancel [cfg80211]
    RIP: 0010:ieee80211_sched_scan_stopped+0xaea/0xd80 [mac80211]
    Code: 9c 24 d0 11 00 00 49 39 dd 0f 85 46 ff ff ff 4c 89 e7 e8 09 2d
    RSP: 0018:ffffb27783643d48 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
    RDX: ffff8a2280964bc0 RSI: 0000000000000000 RDI: ffff8a23df580900
    RBP: ffffb27783643d88 R08: 0000000000000001 R09: 0000000000000400
    R10: 0000000000000000 R11: 0000000000008268 R12: ffff8a23df580900
    R13: ffff8a23df581b00 R14: 0000000000000000 R15: 0000000000000000
    FS:  0000000000000000(0000) GS:ffff8a258e680000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f26a0654000 CR3: 000000002ea2e002 CR4: 00000000001706e0
    Call Trace:
     <TASK>
     ? show_regs+0x68/0x70
     ? ieee80211_sched_scan_stopped+0xaea/0xd80 [mac80211]
     ? __warn+0x8f/0x150
     ? ieee80211_sched_scan_stopped+0xaea/0xd80 [mac80211]
     ? report_bug+0x1f5/0x200
     ? handle_bug+0x46/0x80
     ? exc_invalid_op+0x19/0x70
     ? asm_exc_invalid_op+0x1b/0x20
     ? ieee80211_sched_scan_stopped+0xaea/0xd80 [mac80211]
     ieee80211_scan_work+0x14a/0x650 [mac80211]
     ? __queue_work+0x10f/0x410
     wiphy_work_cancel+0x2fb/0x310 [cfg80211]
     process_scheduled_works+0x9d/0x390
     ? __pfx_worker_thread+0x10/0x10
     worker_thread+0x15b/0x2d0
     ? __pfx_worker_thread+0x10/0x10
     kthread+0x108/0x140
     ? __pfx_kthread+0x10/0x10
     ret_from_fork+0x3c/0x60
     ? __pfx_kthread+0x10/0x10
     ret_from_fork_asm+0x1b/0x30
     </TASK>
    ---[ end trace 0000000000000000 ]---
    
    Fixes: f16c40acd319 ("wifi: rtw89: Fix TX fail with A2DP after scanning")
    Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241231004811.8646-2-pkshih@realtek.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw89: fix race between cancel_hw_scan and hw_scan completion [+ + +]
Author: Ping-Ke Shih <pkshih@realtek.com>
Date:   Tue Jan 7 19:42:54 2025 +0800

    wifi: rtw89: fix race between cancel_hw_scan and hw_scan completion
    
    [ Upstream commit ba4bb0402c60e945c4c396c51f0acac3c3e3ea5c ]
    
    The rtwdev->scanning flag isn't protected by mutex originally, so
    cancel_hw_scan can pass the condition, but suddenly hw_scan completion
    unset the flag and calls ieee80211_scan_completed() that will free
    local->hw_scan_req. Then, cancel_hw_scan raises null-ptr-deref and
    use-after-free. Fix it by moving the check condition to where
    protected by mutex.
    
     KASAN: null-ptr-deref in range [0x0000000000000088-0x000000000000008f]
     CPU: 2 PID: 6922 Comm: kworker/2:2 Tainted: G           OE
     Hardware name: LENOVO 2356AD1/2356AD1, BIOS G7ETB6WW (2.76 ) 09/10/2019
     Workqueue: events cfg80211_conn_work [cfg80211]
     RIP: 0010:rtw89_fw_h2c_scan_offload_be+0xc33/0x13c3 [rtw89_core]
     Code: 00 45 89 6c 24 1c 0f 85 23 01 00 00 48 8b 85 20 ff ff ff 48 8d
     RSP: 0018:ffff88811fd9f068 EFLAGS: 00010206
     RAX: dffffc0000000000 RBX: ffff88811fd9f258 RCX: 0000000000000001
     RDX: 0000000000000011 RSI: 0000000000000001 RDI: 0000000000000089
     RBP: ffff88811fd9f170 R08: 0000000000000000 R09: 0000000000000000
     R10: ffff88811fd9f108 R11: 0000000000000000 R12: ffff88810e47f960
     R13: 0000000000000000 R14: 000000000000ffff R15: 0000000000000000
     FS:  0000000000000000(0000) GS:ffff8881d6f00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 00007531dfca55b0 CR3: 00000001be296004 CR4: 00000000001706e0
     Call Trace:
      <TASK>
      ? show_regs+0x61/0x73
      ? __die_body+0x20/0x73
      ? die_addr+0x4f/0x7b
      ? exc_general_protection+0x191/0x1db
      ? asm_exc_general_protection+0x27/0x30
      ? rtw89_fw_h2c_scan_offload_be+0xc33/0x13c3 [rtw89_core]
      ? rtw89_fw_h2c_scan_offload_be+0x458/0x13c3 [rtw89_core]
      ? __pfx_rtw89_fw_h2c_scan_offload_be+0x10/0x10 [rtw89_core]
      ? do_raw_spin_lock+0x75/0xdb
      ? __pfx_do_raw_spin_lock+0x10/0x10
      rtw89_hw_scan_offload+0xb5e/0xbf7 [rtw89_core]
      ? _raw_spin_unlock+0xe/0x24
      ? __mutex_lock.constprop.0+0x40c/0x471
      ? __pfx_rtw89_hw_scan_offload+0x10/0x10 [rtw89_core]
      ? __mutex_lock_slowpath+0x13/0x1f
      ? mutex_lock+0xa2/0xdc
      ? __pfx_mutex_lock+0x10/0x10
      rtw89_hw_scan_abort+0x58/0xb7 [rtw89_core]
      rtw89_ops_cancel_hw_scan+0x120/0x13b [rtw89_core]
      ieee80211_scan_cancel+0x468/0x4d0 [mac80211]
      ieee80211_prep_connection+0x858/0x899 [mac80211]
      ieee80211_mgd_auth+0xbea/0xdde [mac80211]
      ? __pfx_ieee80211_mgd_auth+0x10/0x10 [mac80211]
      ? cfg80211_find_elem+0x15/0x29 [cfg80211]
      ? is_bss+0x1b7/0x1d7 [cfg80211]
      ieee80211_auth+0x18/0x27 [mac80211]
      cfg80211_mlme_auth+0x3bb/0x3e7 [cfg80211]
      cfg80211_conn_do_work+0x410/0xb81 [cfg80211]
      ? __pfx_cfg80211_conn_do_work+0x10/0x10 [cfg80211]
      ? __kasan_check_read+0x11/0x1f
      ? psi_group_change+0x8bc/0x944
      ? __kasan_check_write+0x14/0x22
      ? mutex_lock+0x8e/0xdc
      ? __pfx_mutex_lock+0x10/0x10
      ? __pfx___radix_tree_lookup+0x10/0x10
      cfg80211_conn_work+0x245/0x34d [cfg80211]
      ? __pfx_cfg80211_conn_work+0x10/0x10 [cfg80211]
      ? update_cfs_rq_load_avg+0x3bc/0x3d7
      ? sched_clock_noinstr+0x9/0x1a
      ? sched_clock+0x10/0x24
      ? sched_clock_cpu+0x7e/0x42e
      ? newidle_balance+0x796/0x937
      ? __pfx_sched_clock_cpu+0x10/0x10
      ? __pfx_newidle_balance+0x10/0x10
      ? __kasan_check_read+0x11/0x1f
      ? psi_group_change+0x8bc/0x944
      ? _raw_spin_unlock+0xe/0x24
      ? raw_spin_rq_unlock+0x47/0x54
      ? raw_spin_rq_unlock_irq+0x9/0x1f
      ? finish_task_switch.isra.0+0x347/0x586
      ? __schedule+0x27bf/0x2892
      ? mutex_unlock+0x80/0xd0
      ? do_raw_spin_lock+0x75/0xdb
      ? __pfx___schedule+0x10/0x10
      process_scheduled_works+0x58c/0x821
      worker_thread+0x4c7/0x586
      ? __kasan_check_read+0x11/0x1f
      kthread+0x285/0x294
      ? __pfx_worker_thread+0x10/0x10
      ? __pfx_kthread+0x10/0x10
      ret_from_fork+0x29/0x6f
      ? __pfx_kthread+0x10/0x10
      ret_from_fork_asm+0x1b/0x30
      </TASK>
    
    Fixes: 895907779752 ("rtw89: 8852a: add ieee80211_ops::hw_scan")
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20250107114254.6769-1-pkshih@realtek.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw89: handle entity active flag per PHY [+ + +]
Author: Zong-Zhe Yang <kevin_yang@realtek.com>
Date:   Wed Sep 25 10:01:19 2024 +0800

    wifi: rtw89: handle entity active flag per PHY
    
    [ Upstream commit ad95bb3b92c65849a6101402197e2cbeb2910a4a ]
    
    Originally, we have an active flag to record whether we have set PHY once.
    After impending MLO support, there will be dual-PHY and they can be set
    individually on Wi-Fi 7 chips. So, we now have active flag per PHY and
    handle them individually.
    
    Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20240925020119.13170-3-pkshih@realtek.com
    Stable-dep-of: e47f0a589854 ("wifi: rtw89: fix proceeding MCC with wrong scanning state after sequence changes")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw89: mcc: consider time limits not divisible by 1024 [+ + +]
Author: Zong-Zhe Yang <kevin_yang@realtek.com>
Date:   Fri Jan 3 15:44:12 2025 +0800

    wifi: rtw89: mcc: consider time limits not divisible by 1024
    
    [ Upstream commit 35642ba31dc4a1816a20191e90156a9e329beb10 ]
    
    For each MCC role, time limits, including max_tob_us, max_toa_us, and
    mac_dur_us, are calculated if there are NoA attributes. The relation
    between these time limits is "max_dur_us = max_tob_us + max_toa_us".
    Then, the unit is converted from us to TU. However, originally, each
    time limit was divided by 1024 independently. It missed to consider
    the cases that max_tob_us or max_toa_us is not divisible by 1024. It
    causes the result breaks "max_dur (TU) = max_tob (TU) + max_toa (TU)".
    Finally, when MCC calculates pattern parameters based on these kinds
    of time limits, it might not perform well.
    
    Fixes: b09df09b55fb ("wifi: rtw89: mcc: initialize start flow")
    Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20250103074412.124066-1-pkshih@realtek.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw89: tweak setting of channel and TX power for MLO [+ + +]
Author: Zong-Zhe Yang <kevin_yang@realtek.com>
Date:   Tue Oct 22 16:31:05 2024 +0800

    wifi: rtw89: tweak setting of channel and TX power for MLO
    
    [ Upstream commit 2305ebc1835b1ca921045b4f0941e82edde3249b ]
    
    Setting of channel and TX power depend on channel contexts, but original
    code cannot handle combination of MCC (multi-channel concurrency) and MLO
    well. So according to active interfaces, we generate a table for current
    channel contexts. And then based on entity mode, we get the corresponding
    channel context to apply during channel or TX power setting. When MLO is
    supported, there will be dual-PHY and we will apply the channel context of
    the 2nd link to the 2nd PHY.
    
    Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241022083106.149252-5-pkshih@realtek.com
    Stable-dep-of: e47f0a589854 ("wifi: rtw89: fix proceeding MCC with wrong scanning state after sequence changes")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: wcn36xx: fix channel survey memory allocation size [+ + +]
Author: Barnabás Czémán <barnabas.czeman@mainlining.org>
Date:   Mon Nov 4 21:00:35 2024 +0100

    wifi: wcn36xx: fix channel survey memory allocation size
    
    [ Upstream commit 6200d947f050efdba4090dfefd8a01981363d954 ]
    
    KASAN reported a memory allocation issue in wcn->chan_survey
    due to incorrect size calculation.
    This commit uses kcalloc to allocate memory for wcn->chan_survey,
    ensuring proper initialization and preventing the use of uninitialized
    values when there are no frames on the channel.
    
    Fixes: 29696e0aa413 ("wcn36xx: Track SNR and RSSI for each RX frame")
    Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
    Acked-by: Loic Poulain <loic.poulain@linaro.org>
    Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Link: https://patch.msgid.link/20241104-wcn36xx-memory-allocation-v1-1-5ec901cf37b6@mainlining.org
    Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: wlcore: fix unbalanced pm_runtime calls [+ + +]
Author: Andreas Kemnade <andreas@kemnade.info>
Date:   Sat Jan 4 20:55:07 2025 +0100

    wifi: wlcore: fix unbalanced pm_runtime calls
    
    [ Upstream commit 996c934c8c196144af386c4385f61fcd5349af28 ]
    
    If firmware boot failes, runtime pm is put too often:
    [12092.708099] wlcore: ERROR firmware boot failed despite 3 retries
    [12092.708099] wl18xx_driver wl18xx.1.auto: Runtime PM usage count underflow!
    Fix that by redirecting all error gotos before runtime_get so that runtime is
    not put.
    
    Fixes: c40aad28a3cf ("wlcore: Make sure firmware is initialized in wl1271_op_add_interface()")
    Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
    Reviewed-by: Michael Nemanov <michael.nemanov@ti.com>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://patch.msgid.link/20250104195507.402673-1-akemnade@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/cpu: Enable SD_ASYM_PACKING for PKG domain on AMD [+ + +]
Author: Perry Yuan <perry.yuan@amd.com>
Date:   Fri Oct 25 12:14:57 2024 -0500

    x86/cpu: Enable SD_ASYM_PACKING for PKG domain on AMD
    
    [ Upstream commit b0979e53645825a38f814ca5d3d09aed2745911d ]
    
    Enable the SD_ASYM_PACKING domain flag for the PKG domain on AMD heterogeneous
    processors.  This flag is beneficial for processors with one or more CCDs and
    relies on x86_sched_itmt_flags().
    
    Signed-off-by: Perry Yuan <perry.yuan@amd.com>
    Co-developed-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Reviewed-by: Gautham R. Shenoy <gautham.shenoy@amd.com>
    Link: https://lore.kernel.org/r/20241025171459.1093-4-mario.limonciello@amd.com
    Stable-dep-of: e1bc02646527 ("x86/topology: Use x86_sched_itmt_flags for PKG domain unconditionally")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/topology: Use x86_sched_itmt_flags for PKG domain unconditionally [+ + +]
Author: K Prateek Nayak <kprateek.nayak@amd.com>
Date:   Mon Dec 23 04:34:04 2024 +0000

    x86/topology: Use x86_sched_itmt_flags for PKG domain unconditionally
    
    [ Upstream commit e1bc02646527fc1ed74f00eb599b2b74d49671c7 ]
    
    x86_sched_itmt_flags() returns SD_ASYM_PACKING if ITMT support is
    enabled by the system. Without ITMT support being enabled, it returns 0
    similar to current x86_die_flags() on non-Hybrid systems
    (!X86_HYBRID_CPU and !X86_FEATURE_AMD_HETEROGENEOUS_CORES)
    
    On Intel systems that enable ITMT support, either the MC domain
    coincides with the PKG domain, or in case of multiple MC groups
    within a PKG domain, either Sub-NUMA Cluster (SNC) is enabled or the
    processor features Hybrid core layout (X86_HYBRID_CPU) which leads to
    three distinct possibilities:
    
    o If PKG and MC domains coincide, PKG domain is degenerated by
      sd_parent_degenerate() when building sched domain topology.
    
    o If SNC is enabled, PKG domain is never added since
      "x86_has_numa_in_package" is set and the topology will instead contain
      NODE and NUMA domains.
    
    o On X86_HYBRID_CPU which contains multiple MC groups within the PKG,
      the PKG domain requires x86_sched_itmt_flags().
    
    Thus, on Intel systems that contains multiple MC groups within the PKG
    and enables ITMT support, the PKG domain requires
    x86_sched_itmt_flags(). In all other cases PKG domain is either never
    added or is degenerated. Thus, returning x86_sched_itmt_flags()
    unconditionally at PKG domain on Intel systems should not lead to any
    functional changes.
    
    On AMD systems with multiple LLCs (MC groups) within a PKG domain,
    enabling ITMT support requires setting SD_ASYM_PACKING to the PKG domain
    since the core rankings are assigned PKG-wide.
    
    Core rankings on AMD processors is currently set by the amd-pstate
    driver when Preferred Core feature is supported. A subset of systems that
    support Preferred Core feature can be detected using
    X86_FEATURE_AMD_HETEROGENEOUS_CORES however, this does not cover all the
    systems that support Preferred Core ranking.
    
    Detecting Preferred Core support on AMD systems requires inspecting CPPC
    Highest Perf on all present CPUs and checking if it differs on at least
    one CPU. Previous suggestion to use a synthetic feature to detect
    Preferred Core support [1] was found to be non-trivial to implement
    since BSP alone cannot detect if Preferred Core is supported and by the
    time AP comes up, alternatives are patched and setting a X86_FEATURE_*
    then is not possible.
    
    Since x86 processors enabling ITMT support that consists multiple
    non-NUMA MC groups within a PKG requires SD_ASYM_PACKING flag set at the
    PKG domain, return x86_sched_itmt_flags unconditionally for the PKG
    domain.
    
    Since x86_die_flags() would have just returned x86_sched_itmt_flags()
    after the change, remove the unnecessary wrapper and pass
    x86_sched_itmt_flags() directly as the flags function.
    
    Fixes: f3a052391822 ("cpufreq: amd-pstate: Enable amd-pstate preferred core support")
    Signed-off-by: K Prateek Nayak <kprateek.nayak@amd.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Tim Chen <tim.c.chen@linux.intel.com>
    Link: https://lore.kernel.org/r/20241223043407.1611-6-kprateek.nayak@amd.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xfrm: Add an inbound percpu state cache. [+ + +]
Author: Steffen Klassert <steffen.klassert@secunet.com>
Date:   Wed Oct 23 12:53:44 2024 +0200

    xfrm: Add an inbound percpu state cache.
    
    [ Upstream commit 81a331a0e72ddc2f75092603d9577bd1a0ca23ad ]
    
    Now that we can have percpu xfrm states, the number of active
    states might increase. To get a better lookup performance,
    we add a percpu cache to cache the used inbound xfrm states.
    
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Tested-by: Antony Antony <antony.antony@secunet.com>
    Tested-by: Tobias Brunner <tobias@strongswan.org>
    Stable-dep-of: e952837f3ddb ("xfrm: state: fix out-of-bounds read during lookup")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

xfrm: Add error handling when nla_put_u32() returns an error [+ + +]
Author: Everest K.C <everestkc@everestkc.com.np>
Date:   Tue Nov 12 16:36:06 2024 -0700

    xfrm: Add error handling when nla_put_u32() returns an error
    
    commit 9d287e70c51f1c141ac588add261ed2efdd6fc6b upstream.
    
    Error handling is missing when call to nla_put_u32() fails.
    Handle the error when the call to nla_put_u32() returns an error.
    
    The error was reported by Coverity Scan.
    Report:
    CID 1601525: (#1 of 1): Unused value (UNUSED_VALUE)
    returned_value: Assigning value from nla_put_u32(skb, XFRMA_SA_PCPU, x->pcpu_num)
    to err here, but that stored value is overwritten before it can be used
    
    Fixes: 1ddf9916ac09 ("xfrm: Add support for per cpu xfrm state handling.")
    Signed-off-by: Everest K.C. <everestkc@everestkc.com.np>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfrm: Add support for per cpu xfrm state handling. [+ + +]
Author: Steffen Klassert <steffen.klassert@secunet.com>
Date:   Wed Oct 23 12:53:42 2024 +0200

    xfrm: Add support for per cpu xfrm state handling.
    
    [ Upstream commit 1ddf9916ac09313128e40d6581cef889c0b4ce84 ]
    
    Currently all flows for a certain SA must be processed by the same
    cpu to avoid packet reordering and lock contention of the xfrm
    state lock.
    
    To get rid of this limitation, the IETF standardized per cpu SAs
    in RFC 9611. This patch implements the xfrm part of it.
    
    We add the cpu as a lookup key for xfrm states and a config option
    to generate acquire messages for each cpu.
    
    With that, we can have on each cpu a SA with identical traffic selector
    so that flows can be processed in parallel on all cpus.
    
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Tested-by: Antony Antony <antony.antony@secunet.com>
    Tested-by: Tobias Brunner <tobias@strongswan.org>
    Stable-dep-of: e952837f3ddb ("xfrm: state: fix out-of-bounds read during lookup")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

xfrm: Cache used outbound xfrm states at the policy. [+ + +]
Author: Steffen Klassert <steffen.klassert@secunet.com>
Date:   Wed Oct 23 12:53:43 2024 +0200

    xfrm: Cache used outbound xfrm states at the policy.
    
    [ Upstream commit 0045e3d80613cc7174dc15f189ee6fc4e73b9365 ]
    
    Now that we can have percpu xfrm states, the number of active
    states might increase. To get a better lookup performance,
    we cache the used xfrm states at the policy for outbound
    IPsec traffic.
    
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Tested-by: Antony Antony <antony.antony@secunet.com>
    Tested-by: Tobias Brunner <tobias@strongswan.org>
    Stable-dep-of: e952837f3ddb ("xfrm: state: fix out-of-bounds read during lookup")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

xfrm: delete intermediate secpath entry in packet offload mode [+ + +]
Author: Alexandre Cassen <acassen@corp.free.fr>
Date:   Thu Jan 2 12:11:11 2025 +0200

    xfrm: delete intermediate secpath entry in packet offload mode
    
    [ Upstream commit 600258d555f0710b9c47fb78d2d80a4aecd608cc ]
    
    Packets handled by hardware have added secpath as a way to inform XFRM
    core code that this path was already handled. That secpath is not needed
    at all after policy is checked and it is removed later in the stack.
    
    However, in the case of IP forwarding is enabled (/proc/sys/net/ipv4/ip_forward),
    that secpath is not removed and packets which already were handled are reentered
    to the driver TX path with xfrm_offload set.
    
    The following kernel panic is observed in mlx5 in such case:
    
     mlx5_core 0000:04:00.0 enp4s0f0np0: Link up
     mlx5_core 0000:04:00.1 enp4s0f1np1: Link up
     Initializing XFRM netlink socket
     IPsec XFRM device driver
     BUG: kernel NULL pointer dereference, address: 0000000000000000
     #PF: supervisor instruction fetch in kernel mode
     #PF: error_code(0x0010) - not-present page
     PGD 0 P4D 0
     Oops: Oops: 0010 [#1] PREEMPT SMP
     CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.13.0-rc1-alex #3
     Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-1ubuntu1.1 04/01/2014
     RIP: 0010:0x0
     Code: Unable to access opcode bytes at 0xffffffffffffffd6.
     RSP: 0018:ffffb87380003800 EFLAGS: 00010206
     RAX: ffff8df004e02600 RBX: ffffb873800038d8 RCX: 00000000ffff98cf
     RDX: ffff8df00733e108 RSI: ffff8df00521fb80 RDI: ffff8df001661f00
     RBP: ffffb87380003850 R08: ffff8df013980000 R09: 0000000000000010
     R10: 0000000000000002 R11: 0000000000000002 R12: ffff8df001661f00
     R13: ffff8df00521fb80 R14: ffff8df00733e108 R15: ffff8df011faf04e
     FS:  0000000000000000(0000) GS:ffff8df46b800000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: ffffffffffffffd6 CR3: 0000000106384000 CR4: 0000000000350ef0
     Call Trace:
      <IRQ>
      ? show_regs+0x63/0x70
      ? __die_body+0x20/0x60
      ? __die+0x2b/0x40
      ? page_fault_oops+0x15c/0x550
      ? do_user_addr_fault+0x3ed/0x870
      ? exc_page_fault+0x7f/0x190
      ? asm_exc_page_fault+0x27/0x30
      mlx5e_ipsec_handle_tx_skb+0xe7/0x2f0 [mlx5_core]
      mlx5e_xmit+0x58e/0x1980 [mlx5_core]
      ? __fib_lookup+0x6a/0xb0
      dev_hard_start_xmit+0x82/0x1d0
      sch_direct_xmit+0xfe/0x390
      __dev_queue_xmit+0x6d8/0xee0
      ? __fib_lookup+0x6a/0xb0
      ? internal_add_timer+0x48/0x70
      ? mod_timer+0xe2/0x2b0
      neigh_resolve_output+0x115/0x1b0
      __neigh_update+0x26a/0xc50
      neigh_update+0x14/0x20
      arp_process+0x2cb/0x8e0
      ? __napi_build_skb+0x5e/0x70
      arp_rcv+0x11e/0x1c0
      ? dev_gro_receive+0x574/0x820
      __netif_receive_skb_list_core+0x1cf/0x1f0
      netif_receive_skb_list_internal+0x183/0x2a0
      napi_complete_done+0x76/0x1c0
      mlx5e_napi_poll+0x234/0x7a0 [mlx5_core]
      __napi_poll+0x2d/0x1f0
      net_rx_action+0x1a6/0x370
      ? atomic_notifier_call_chain+0x3b/0x50
      ? irq_int_handler+0x15/0x20 [mlx5_core]
      handle_softirqs+0xb9/0x2f0
      ? handle_irq_event+0x44/0x60
      irq_exit_rcu+0xdb/0x100
      common_interrupt+0x98/0xc0
      </IRQ>
      <TASK>
      asm_common_interrupt+0x27/0x40
     RIP: 0010:pv_native_safe_halt+0xb/0x10
     Code: 09 c3 66 66 2e 0f 1f 84 00 00 00 00 00 66 90 0f 22
     0f 1f 84 00 00 00 00 00 90 eb 07 0f 00 2d 7f e9 36 00 fb
    40 00 83 ff 07 77 21 89 ff ff 24 fd 88 3d a1 bd 0f 21 f8
     RSP: 0018:ffffffffbe603de8 EFLAGS: 00000202
     RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000f92f46680
     RDX: 0000000000000037 RSI: 00000000ffffffff RDI: 00000000000518d4
     RBP: ffffffffbe603df0 R08: 000000cd42e4dffb R09: ffffffffbe603d70
     R10: 0000004d80d62680 R11: 0000000000000001 R12: ffffffffbe60bf40
     R13: 0000000000000000 R14: 0000000000000000 R15: ffffffffbe60aff8
      ? default_idle+0x9/0x20
      arch_cpu_idle+0x9/0x10
      default_idle_call+0x29/0xf0
      do_idle+0x1f2/0x240
      cpu_startup_entry+0x2c/0x30
      rest_init+0xe7/0x100
      start_kernel+0x76b/0xb90
      x86_64_start_reservations+0x18/0x30
      x86_64_start_kernel+0xc0/0x110
      ? setup_ghcb+0xe/0x130
      common_startup_64+0x13e/0x141
      </TASK>
     Modules linked in: esp4_offload esp4 xfrm_interface
    xfrm6_tunnel tunnel4 tunnel6 xfrm_user xfrm_algo binfmt_misc
    intel_rapl_msr intel_rapl_common kvm_amd ccp kvm input_leds serio_raw
    qemu_fw_cfg sch_fq_codel dm_multipath scsi_dh_rdac scsi_dh_emc
    scsi_dh_alua efi_pstore ip_tables x_tables autofs4 raid10 raid456
    async_raid6_recov async_memcpy async_pq raid6_pq async_xor xor async_tx
    libcrc32c raid1 raid0 mlx5_core crct10dif_pclmul crc32_pclmul
    polyval_clmulni polyval_generic ghash_clmulni_intel sha256_ssse3
    sha1_ssse3 ahci mlxfw i2c_i801 libahci i2c_mux i2c_smbus psample
    virtio_rng pci_hyperv_intf aesni_intel crypto_simd cryptd
     CR2: 0000000000000000
     ---[ end trace 0000000000000000 ]---
     RIP: 0010:0x0
     Code: Unable to access opcode bytes at 0xffffffffffffffd6.
     RSP: 0018:ffffb87380003800 EFLAGS: 00010206
     RAX: ffff8df004e02600 RBX: ffffb873800038d8 RCX: 00000000ffff98cf
     RDX: ffff8df00733e108 RSI: ffff8df00521fb80 RDI: ffff8df001661f00
     RBP: ffffb87380003850 R08: ffff8df013980000 R09: 0000000000000010
     R10: 0000000000000002 R11: 0000000000000002 R12: ffff8df001661f00
     R13: ffff8df00521fb80 R14: ffff8df00733e108 R15: ffff8df011faf04e
     FS:  0000000000000000(0000) GS:ffff8df46b800000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: ffffffffffffffd6 CR3: 0000000106384000 CR4: 0000000000350ef0
     Kernel panic - not syncing: Fatal exception in interrupt
     Kernel Offset: 0x3b800000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
     ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
    
    Fixes: 5958372ddf62 ("xfrm: add RX datapath protection for IPsec packet offload mode")
    Signed-off-by: Alexandre Cassen <acassen@corp.free.fr>
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

xfrm: Don't disable preemption while looking up cache state. [+ + +]
Author: Sebastian Sewior <bigeasy@linutronix.de>
Date:   Thu Jan 23 17:20:45 2025 +0100

    xfrm: Don't disable preemption while looking up cache state.
    
    [ Upstream commit 6c9b7db96db62ee9ad8d359d90ff468d462518c4 ]
    
    For the state cache lookup xfrm_input_state_lookup() first disables
    preemption, to remain on the CPU and then retrieves a per-CPU pointer.
    Within the preempt-disable section it also acquires
    netns_xfrm::xfrm_state_lock, a spinlock_t. This lock must not be
    acquired with explicit disabled preemption (such as by get_cpu())
    because this lock becomes a sleeping lock on PREEMPT_RT.
    
    To remain on the same CPU is just an optimisation for the CPU local
    lookup. The actual modification of the per-CPU variable happens with
    netns_xfrm::xfrm_state_lock acquired.
    
    Remove get_cpu() and use the state_cache_input on the current CPU.
    
    Reported-by: Alexei Starovoitov <alexei.starovoitov@gmail.com>
    Closes: https://lore.kernel.org/all/CAADnVQKkCLaj=roayH=Mjiiqz_svdf1tsC3OE4EC0E=mAD+L1A@mail.gmail.com/
    Fixes: 81a331a0e72dd ("xfrm: Add an inbound percpu state cache.")
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

xfrm: Fix acquire state insertion. [+ + +]
Author: Steffen Klassert <steffen.klassert@secunet.com>
Date:   Thu Nov 14 12:06:56 2024 +0100

    xfrm: Fix acquire state insertion.
    
    commit a35672819f8d85e2ae38b80d40b923e3ef81e4ea upstream.
    
    A recent commit jumped over the dst hash computation and
    left the symbol uninitialized. Fix this by explicitly
    computing the dst hash before it is used.
    
    Fixes: 0045e3d80613 ("xfrm: Cache used outbound xfrm states at the policy.")
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfrm: replay: Fix the update of replay_esn->oseq_hi for GSO [+ + +]
Author: Jianbo Liu <jianbol@nvidia.com>
Date:   Tue Nov 12 14:10:31 2024 +0200

    xfrm: replay: Fix the update of replay_esn->oseq_hi for GSO
    
    [ Upstream commit c05c5e5aa163f4682ca97a2f0536575fc7dbdecb ]
    
    When skb needs GSO and wrap around happens, if xo->seq.low (seqno of
    the first skb segment) is before the last seq number but oseq (seqno
    of the last segment) is after it, xo->seq.low is still bigger than
    replay_esn->oseq while oseq is smaller than it, so the update of
    replay_esn->oseq_hi is missed for this case wrap around because of
    the change in the cited commit.
    
    For example, if sending a packet with gso_segs=3 while old
    replay_esn->oseq=0xfffffffe, we calculate:
        xo->seq.low = 0xfffffffe + 1 = 0x0xffffffff
        oseq = 0xfffffffe + 3 = 0x1
    (oseq < replay_esn->oseq) is true, but (xo->seq.low <
    replay_esn->oseq) is false, so replay_esn->oseq_hi is not incremented.
    
    To fix this issue, change the outer checking back for the update of
    replay_esn->oseq_hi. And add new checking inside for the update of
    packet's oseq_hi.
    
    Fixes: 4b549ccce941 ("xfrm: replay: Fix ESN wrap around for GSO")
    Signed-off-by: Jianbo Liu <jianbol@nvidia.com>
    Reviewed-by: Patrisious Haddad <phaddad@nvidia.com>
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

xfrm: state: fix out-of-bounds read during lookup [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Thu Nov 28 15:26:25 2024 +0100

    xfrm: state: fix out-of-bounds read during lookup
    
    [ Upstream commit e952837f3ddb0ff726d5b582aa1aad9aa38d024d ]
    
    lookup and resize can run in parallel.
    
    The xfrm_state_hash_generation seqlock ensures a retry, but the hash
    functions can observe a hmask value that is too large for the new hlist
    array.
    
    rehash does:
      rcu_assign_pointer(net->xfrm.state_bydst, ndst) [..]
      net->xfrm.state_hmask = nhashmask;
    
    While state lookup does:
      h = xfrm_dst_hash(net, daddr, saddr, tmpl->reqid, encap_family);
      hlist_for_each_entry_rcu(x, net->xfrm.state_bydst + h, bydst) {
    
    This is only safe in case the update to state_bydst is larger than
    net->xfrm.xfrm_state_hmask (or if the lookup function gets
    serialized via state spinlock again).
    
    Fix this by prefetching state_hmask and the associated pointers.
    The xfrm_state_hash_generation seqlock retry will ensure that the pointer
    and the hmask will be consistent.
    
    The existing helpers, like xfrm_dst_hash(), are now unsafe for RCU side,
    add lockdep assertions to document that they are only safe for insert
    side.
    
    xfrm_state_lookup_byaddr() uses the spinlock rather than RCU.
    AFAICS this is an oversight from back when state lookup was converted to
    RCU, this lock should be replaced with RCU in a future patch.
    
    Reported-by: syzbot+5f9f31cb7d985f584d8e@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/CACT4Y+azwfrE3uz6A5ZErov5YN2LYBN5KrsymBerT36VU8qzBA@mail.gmail.com/
    Diagnosed-by: Dmitry Vyukov <dvyukov@google.com>
    Fixes: c2f672fc9464 ("xfrm: state lookup can be lockless")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xfs: check for dead buffers in xfs_buf_find_insert [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Jan 16 07:01:41 2025 +0100

    xfs: check for dead buffers in xfs_buf_find_insert
    
    commit 07eae0fa67ca4bbb199ad85645e0f9dfaef931cd upstream.
    
    Commit 32dd4f9c506b ("xfs: remove a superflous hash lookup when inserting
    new buffers") converted xfs_buf_find_insert to use
    rhashtable_lookup_get_insert_fast and thus an operation that returns the
    existing buffer when an insert would duplicate the hash key.  But this
    code path misses the check for a buffer with a reference count of zero,
    which could lead to reusing an about to be freed buffer.  Fix this by
    using the same atomic_inc_not_zero pattern as xfs_buf_insert.
    
    Fixes: 32dd4f9c506b ("xfs: remove a superflous hash lookup when inserting new buffers")
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Darrick J. Wong <djwong@kernel.org>
    Cc: stable@vger.kernel.org # v6.0
    Signed-off-by: Carlos Maiolino <cem@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: don't shut down the filesystem for media failures beyond end of log [+ + +]
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Tue Dec 17 13:43:06 2024 -0800

    xfs: don't shut down the filesystem for media failures beyond end of log
    
    commit f4ed93037966aea07ae6b10ab208976783d24e2e upstream.
    
    If the filesystem has an external log device on pmem and the pmem
    reports a media error beyond the end of the log area, don't shut down
    the filesystem because we don't use that space.
    
    Cc: <stable@vger.kernel.org> # v6.0
    Fixes: 6f643c57d57c56 ("xfs: implement ->notify_failure() for XFS")
    Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>