Changelog in Linux kernel 4.19.320

 
af_packet: Handle outgoing VLAN packets without hardware offloading [+ + +]
Author: Chengen Du <chengen.du@canonical.com>
Date:   Sat Jul 13 19:47:35 2024 +0800

    af_packet: Handle outgoing VLAN packets without hardware offloading
    
    commit 79eecf631c14e7f4057186570ac20e2cfac3802e upstream.
    
    The issue initially stems from libpcap. The ethertype will be overwritten
    as the VLAN TPID if the network interface lacks hardware VLAN offloading.
    In the outbound packet path, if hardware VLAN offloading is unavailable,
    the VLAN tag is inserted into the payload but then cleared from the sk_buff
    struct. Consequently, this can lead to a false negative when checking for
    the presence of a VLAN tag, causing the packet sniffing outcome to lack
    VLAN tag information (i.e., TCI-TPID). As a result, the packet capturing
    tool may be unable to parse packets as expected.
    
    The TCI-TPID is missing because the prb_fill_vlan_info() function does not
    modify the tp_vlan_tci/tp_vlan_tpid values, as the information is in the
    payload and not in the sk_buff struct. The skb_vlan_tag_present() function
    only checks vlan_all in the sk_buff struct. In cooked mode, the L2 header
    is stripped, preventing the packet capturing tool from determining the
    correct TCI-TPID value. Additionally, the protocol in SLL is incorrect,
    which means the packet capturing tool cannot parse the L3 header correctly.
    
    Link: https://github.com/the-tcpdump-group/libpcap/issues/1105
    Link: https://lore.kernel.org/netdev/20240520070348.26725-1-chengen.du@canonical.com/T/#u
    Fixes: 393e52e33c6c ("packet: deliver VLAN TCI to userspace")
    Cc: stable@vger.kernel.org
    Signed-off-by: Chengen Du <chengen.du@canonical.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://patch.msgid.link/20240713114735.62360-1-chengen.du@canonical.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ALSA: line6: Fix racy access to midibuf [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Aug 5 15:01:28 2024 +0200

    ALSA: line6: Fix racy access to midibuf
    
    commit 15b7a03205b31bc5623378c190d22b7ff60026f1 upstream.
    
    There can be concurrent accesses to line6 midibuf from both the URB
    completion callback and the rawmidi API access.  This could be a cause
    of KMSAN warning triggered by syzkaller below (so put as reported-by
    here).
    
    This patch protects the midibuf call of the former code path with a
    spinlock for avoiding the possible races.
    
    Reported-by: syzbot+78eccfb8b3c9a85fc6c5@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/00000000000000949c061df288c5@google.com
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20240805130129.10872-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

 
arm64: Add Neoverse-V2 part [+ + +]
Author: Besar Wicaksono <bwicaksono@nvidia.com>
Date:   Fri Aug 9 11:43:45 2024 +0100

    arm64: Add Neoverse-V2 part
    
    [ Upstream commit f4d9d9dcc70b96b5e5d7801bd5fbf8491b07b13d ]
    
    Add the part number and MIDR for Neoverse-V2
    
    Signed-off-by: Besar Wicaksono <bwicaksono@nvidia.com>
    Reviewed-by: James Clark <james.clark@arm.com>
    Link: https://lore.kernel.org/r/20240109192310.16234-2-bwicaksono@nvidia.com
    Signed-off-by: Will Deacon <will@kernel.org>
    [ Mark: trivial backport ]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: Add support for SB barrier and patch in over DSB; ISB sequences [+ + +]
Author: Will Deacon <will@kernel.org>
Date:   Fri Aug 9 11:43:43 2024 +0100

    arm64: Add support for SB barrier and patch in over DSB; ISB sequences
    
    [ Upstream commit bd4fb6d270bc423a9a4098108784f7f9254c4e6d ]
    
    We currently use a DSB; ISB sequence to inhibit speculation in set_fs().
    Whilst this works for current CPUs, future CPUs may implement a new SB
    barrier instruction which acts as an architected speculation barrier.
    
    On CPUs that support it, patch in an SB; NOP sequence over the DSB; ISB
    sequence and advertise the presence of the new instruction to userspace.
    
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    [ Mark: fixup conflicts ]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: cpufeature: Fix the visibility of compat hwcaps [+ + +]
Author: Amit Daniel Kachhap <amit.kachhap@arm.com>
Date:   Thu Nov 3 13:52:32 2022 +0530

    arm64: cpufeature: Fix the visibility of compat hwcaps
    
    commit 85f1506337f0c79a4955edfeee86a18628e3735f upstream.
    
    Commit 237405ebef58 ("arm64: cpufeature: Force HWCAP to be based on the
    sysreg visible to user-space") forced the hwcaps to use sanitised
    user-space view of the id registers. However, the ID register structures
    used to select few compat cpufeatures (vfp, crc32, ...) are masked and
    hence such hwcaps do not appear in /proc/cpuinfo anymore for PER_LINUX32
    personality.
    
    Add the ID register structures explicitly and set the relevant entry as
    visible. As these ID registers are now of type visible so make them
    available in 64-bit userspace by making necessary changes in register
    emulation logic and documentation.
    
    While at it, update the comment for structure ftr_generic_32bits[] which
    lists the ID register that use it.
    
    Fixes: 237405ebef58 ("arm64: cpufeature: Force HWCAP to be based on the sysreg visible to user-space")
    Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
    Reviewed-by: James Morse <james.morse@arm.com>
    Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com>
    Link: https://lore.kernel.org/r/20221103082232.19189-1-amit.kachhap@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

arm64: cpufeature: Force HWCAP to be based on the sysreg visible to user-space [+ + +]
Author: James Morse <james.morse@arm.com>
Date:   Fri Aug 9 11:43:44 2024 +0100

    arm64: cpufeature: Force HWCAP to be based on the sysreg visible to user-space
    
    [ Upstream commit 237405ebef580a7352a52129b2465c117145eafa ]
    
    arm64 advertises hardware features to user-space via HWCAPs, and by
    emulating access to the CPUs id registers. The cpufeature code has a
    sanitised system-wide view of an id register, and a sanitised user-space
    view of an id register, where some features use their 'safe' value
    instead of the hardware value.
    
    It is currently possible for a HWCAP to be advertised where the user-space
    view of the id register does not show the feature as supported.
    Erratum workaround need to remove both the HWCAP, and the feature from
    the user-space view of the id register. This involves duplicating the
    code, and spreading it over cpufeature.c and cpu_errata.c.
    
    Make the HWCAP code use the user-space view of id registers. This ensures
    the values never diverge, and allows erratum workaround to remove HWCAP
    by modifying the user-space view of the id register.
    
    Signed-off-by: James Morse <james.morse@arm.com>
    Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Link: https://lore.kernel.org/r/20220909165938.3931307-2-james.morse@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    [ Mark: fixup lack of 'width' parameter, whitespace conflict ]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: cputype: Add Cortex-A720 definitions [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Aug 9 11:43:50 2024 +0100

    arm64: cputype: Add Cortex-A720 definitions
    
    [ Upstream commit add332c40328cf06fe35e4b3cde8ec315c4629e5 ]
    
    Add cputype definitions for Cortex-A720. These will be used for errata
    detection in subsequent patches.
    
    These values can be found in Table A-186 ("MIDR_EL1 bit descriptions")
    in issue 0002-05 of the Cortex-A720 TRM, which can be found at:
    
      https://developer.arm.com/documentation/102530/0002/?lang=en
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20240603111812.1514101-3-mark.rutland@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    [ Mark: trivial backport ]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: cputype: Add Cortex-A725 definitions [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Aug 9 11:43:55 2024 +0100

    arm64: cputype: Add Cortex-A725 definitions
    
    [ Upstream commit 9ef54a384526911095db465e77acc1cb5266b32c ]
    
    Add cputype definitions for Cortex-A725. These will be used for errata
    detection in subsequent patches.
    
    These values can be found in the Cortex-A725 TRM:
    
      https://developer.arm.com/documentation/107652/0001/
    
    ... in table A-247 ("MIDR_EL1 bit descriptions").
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Link: https://lore.kernel.org/r/20240801101803.1982459-3-mark.rutland@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    [ Mark: trivial backport ]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: cputype: Add Cortex-X1C definitions [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Aug 9 11:43:54 2024 +0100

    arm64: cputype: Add Cortex-X1C definitions
    
    [ Upstream commit 58d245e03c324d083a0ec3b9ab8ebd46ec9848d7 ]
    
    Add cputype definitions for Cortex-X1C. These will be used for errata
    detection in subsequent patches.
    
    These values can be found in the Cortex-X1C TRM:
    
      https://developer.arm.com/documentation/101968/0002/
    
    ... in section B2.107 ("MIDR_EL1, Main ID Register, EL1").
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Link: https://lore.kernel.org/r/20240801101803.1982459-2-mark.rutland@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    [ Mark: trivial backport ]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: cputype: Add Cortex-X3 definitions [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Aug 9 11:43:49 2024 +0100

    arm64: cputype: Add Cortex-X3 definitions
    
    [ Upstream commit be5a6f238700f38b534456608588723fba96c5ab ]
    
    Add cputype definitions for Cortex-X3. These will be used for errata
    detection in subsequent patches.
    
    These values can be found in Table A-263 ("MIDR_EL1 bit descriptions")
    in issue 07 of the Cortex-X3 TRM, which can be found at:
    
      https://developer.arm.com/documentation/101593/0102/?lang=en
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20240603111812.1514101-2-mark.rutland@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    [ Mark: trivial backport ]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: cputype: Add Cortex-X4 definitions [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Aug 9 11:43:46 2024 +0100

    arm64: cputype: Add Cortex-X4 definitions
    
    [ Upstream commit 02a0a04676fa7796d9cbc9eb5ca120aaa194d2dd ]
    
    Add cputype definitions for Cortex-X4. These will be used for errata
    detection in subsequent patches.
    
    These values can be found in Table B-249 ("MIDR_EL1 bit descriptions")
    in issue 0002-05 of the Cortex-X4 TRM, which can be found at:
    
      https://developer.arm.com/documentation/102484/0002/?lang=en
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20240508081400.235362-3-mark.rutland@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    [ Mark: fix conflict (dealt with upstream via a later merge) ]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: cputype: Add Cortex-X925 definitions [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Aug 9 11:43:51 2024 +0100

    arm64: cputype: Add Cortex-X925 definitions
    
    [ Upstream commit fd2ff5f0b320f418288e7a1f919f648fbc8a0dfc ]
    
    Add cputype definitions for Cortex-X925. These will be used for errata
    detection in subsequent patches.
    
    These values can be found in Table A-285 ("MIDR_EL1 bit descriptions")
    in issue 0001-05 of the Cortex-X925 TRM, which can be found at:
    
      https://developer.arm.com/documentation/102807/0001/?lang=en
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20240603111812.1514101-4-mark.rutland@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    [ Mark: trivial backport ]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: cputype: Add Neoverse-V3 definitions [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Aug 9 11:43:47 2024 +0100

    arm64: cputype: Add Neoverse-V3 definitions
    
    [ Upstream commit 0ce85db6c2141b7ffb95709d76fc55a27ff3cdc1 ]
    
    Add cputype definitions for Neoverse-V3. These will be used for errata
    detection in subsequent patches.
    
    These values can be found in Table B-249 ("MIDR_EL1 bit descriptions")
    in issue 0001-04 of the Neoverse-V3 TRM, which can be found at:
    
      https://developer.arm.com/documentation/107734/0001/?lang=en
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20240508081400.235362-4-mark.rutland@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    [ Mark: trivial backport ]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Increase VOP clk rate on RK3328 [+ + +]
Author: Jonas Karlman <jonas@kwiboo.se>
Date:   Sat Jun 15 17:03:52 2024 +0000

    arm64: dts: rockchip: Increase VOP clk rate on RK3328
    
    [ Upstream commit 0f2ddb128fa20f8441d903285632f2c69e90fae1 ]
    
    The VOP on RK3328 needs to run at a higher rate in order to produce a
    proper 3840x2160 signal.
    
    Change to use 300MHz for VIO clk and 400MHz for VOP clk, same rates used
    by vendor 4.4 kernel.
    
    Fixes: 52e02d377a72 ("arm64: dts: rockchip: add core dtsi file for RK3328 SoCs")
    Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
    Link: https://lore.kernel.org/r/20240615170417.3134517-2-jonas@kwiboo.se
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: errata: Add workaround for Arm errata 3194386 and 3312417 [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Aug 9 11:43:48 2024 +0100

    arm64: errata: Add workaround for Arm errata 3194386 and 3312417
    
    [ Upstream commit 7187bb7d0b5c7dfa18ca82e9e5c75e13861b1d88 ]
    
    Cortex-X4 and Neoverse-V3 suffer from errata whereby an MSR to the SSBS
    special-purpose register does not affect subsequent speculative
    instructions, permitting speculative store bypassing for a window of
    time. This is described in their Software Developer Errata Notice (SDEN)
    documents:
    
    * Cortex-X4 SDEN v8.0, erratum 3194386:
      https://developer.arm.com/documentation/SDEN-2432808/0800/
    
    * Neoverse-V3 SDEN v6.0, erratum 3312417:
      https://developer.arm.com/documentation/SDEN-2891958/0600/
    
    To workaround these errata, it is necessary to place a speculation
    barrier (SB) after MSR to the SSBS special-purpose register. This patch
    adds the requisite SB after writes to SSBS within the kernel, and hides
    the presence of SSBS from EL0 such that userspace software which cares
    about SSBS will manipulate this via prctl(PR_GET_SPECULATION_CTRL, ...).
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20240508081400.235362-5-mark.rutland@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    [ Mark: fix conflicts & renames, drop unneeded cpucaps.h, fold in user_feature_fixup() ]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: errata: Expand speculative SSBS workaround [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Aug 9 11:43:53 2024 +0100

    arm64: errata: Expand speculative SSBS workaround
    
    [ Upstream commit 75b3c43eab594bfbd8184ec8ee1a6b820950819a ]
    
    A number of Arm Ltd CPUs suffer from errata whereby an MSR to the SSBS
    special-purpose register does not affect subsequent speculative
    instructions, permitting speculative store bypassing for a window of
    time.
    
    We worked around this for Cortex-X4 and Neoverse-V3, in commit:
    
      7187bb7d0b5c7dfa ("arm64: errata: Add workaround for Arm errata 3194386 and 3312417")
    
    ... as per their Software Developer Errata Notice (SDEN) documents:
    
    * Cortex-X4 SDEN v8.0, erratum 3194386:
      https://developer.arm.com/documentation/SDEN-2432808/0800/
    
    * Neoverse-V3 SDEN v6.0, erratum 3312417:
      https://developer.arm.com/documentation/SDEN-2891958/0600/
    
    Since then, similar errata have been published for a number of other Arm Ltd
    CPUs, for which the mitigation is the same. This is described in their
    respective SDEN documents:
    
    * Cortex-A710 SDEN v19.0, errataum 3324338
      https://developer.arm.com/documentation/SDEN-1775101/1900/?lang=en
    
    * Cortex-A720 SDEN v11.0, erratum 3456091
      https://developer.arm.com/documentation/SDEN-2439421/1100/?lang=en
    
    * Cortex-X2 SDEN v19.0, erratum 3324338
      https://developer.arm.com/documentation/SDEN-1775100/1900/?lang=en
    
    * Cortex-X3 SDEN v14.0, erratum 3324335
      https://developer.arm.com/documentation/SDEN-2055130/1400/?lang=en
    
    * Cortex-X925 SDEN v8.0, erratum 3324334
      https://developer.arm.com/documentation/109108/800/?lang=en
    
    * Neoverse-N2 SDEN v17.0, erratum 3324339
      https://developer.arm.com/documentation/SDEN-1982442/1700/?lang=en
    
    * Neoverse-V2 SDEN v9.0, erratum 3324336
      https://developer.arm.com/documentation/SDEN-2332927/900/?lang=en
    
    Note that due to shared design lineage, some CPUs share the same erratum
    number.
    
    Add these to the existing mitigation under CONFIG_ARM64_ERRATUM_3194386.
    As listing all of the erratum IDs in the runtime description would be
    unwieldy, this is reduced to:
    
            "SSBS not fully self-synchronizing"
    
    ... matching the description of the errata in all of the SDENs.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20240603111812.1514101-6-mark.rutland@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    [ Mark: fix conflicts and renames ]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: errata: Expand speculative SSBS workaround (again) [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Aug 9 11:43:56 2024 +0100

    arm64: errata: Expand speculative SSBS workaround (again)
    
    [ Upstream commit adeec61a4723fd3e39da68db4cc4d924e6d7f641 ]
    
    A number of Arm Ltd CPUs suffer from errata whereby an MSR to the SSBS
    special-purpose register does not affect subsequent speculative
    instructions, permitting speculative store bypassing for a window of
    time.
    
    We worked around this for a number of CPUs in commits:
    
    * 7187bb7d0b5c7dfa ("arm64: errata: Add workaround for Arm errata 3194386 and 3312417")
    * 75b3c43eab594bfb ("arm64: errata: Expand speculative SSBS workaround")
    
    Since then, similar errata have been published for a number of other Arm
    Ltd CPUs, for which the same mitigation is sufficient. This is described
    in their respective Software Developer Errata Notice (SDEN) documents:
    
    * Cortex-A76 (MP052) SDEN v31.0, erratum 3324349
      https://developer.arm.com/documentation/SDEN-885749/3100/
    
    * Cortex-A77 (MP074) SDEN v19.0, erratum 3324348
      https://developer.arm.com/documentation/SDEN-1152370/1900/
    
    * Cortex-A78 (MP102) SDEN v21.0, erratum 3324344
      https://developer.arm.com/documentation/SDEN-1401784/2100/
    
    * Cortex-A78C (MP138) SDEN v16.0, erratum 3324346
      https://developer.arm.com/documentation/SDEN-1707916/1600/
    
    * Cortex-A78C (MP154) SDEN v10.0, erratum 3324347
      https://developer.arm.com/documentation/SDEN-2004089/1000/
    
    * Cortex-A725 (MP190) SDEN v5.0, erratum 3456106
      https://developer.arm.com/documentation/SDEN-2832921/0500/
    
    * Cortex-X1 (MP077) SDEN v21.0, erratum 3324344
      https://developer.arm.com/documentation/SDEN-1401782/2100/
    
    * Cortex-X1C (MP136) SDEN v16.0, erratum 3324346
      https://developer.arm.com/documentation/SDEN-1707914/1600/
    
    * Neoverse-N1 (MP050) SDEN v32.0, erratum 3324349
      https://developer.arm.com/documentation/SDEN-885747/3200/
    
    * Neoverse-V1 (MP076) SDEN v19.0, erratum 3324341
      https://developer.arm.com/documentation/SDEN-1401781/1900/
    
    Note that due to the manner in which Arm develops IP and tracks errata,
    some CPUs share a common erratum number and some CPUs have multiple
    erratum numbers for the same HW issue.
    
    On parts without SB, it is necessary to use ISB for the workaround. The
    spec_bar() macro used in the mitigation will expand to a "DSB SY; ISB"
    sequence in this case, which is sufficient on all affected parts.
    
    Enable the existing mitigation by adding the relevant MIDRs to
    erratum_spec_ssbs_list. The list is sorted alphanumerically (involving
    moving Neoverse-V3 after Neoverse-V2) so that this is easy to audit and
    potentially extend again in future. The Kconfig text is also updated to
    clarify the set of affected parts and the mitigation.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Acked-by: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20240801101803.1982459-4-mark.rutland@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    [ Mark: fix conflicts in silicon-errata.rst ]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: errata: Unify speculative SSBS errata logic [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Aug 9 11:43:52 2024 +0100

    arm64: errata: Unify speculative SSBS errata logic
    
    [ Upstream commit ec768766608092087dfb5c1fc45a16a6f524dee2 ]
    
    Cortex-X4 erratum 3194386 and Neoverse-V3 erratum 3312417 are identical,
    with duplicate Kconfig text and some unsightly ifdeffery. While we try
    to share code behind CONFIG_ARM64_WORKAROUND_SPECULATIVE_SSBS, having
    separate options results in a fair amount of boilerplate code, and this
    will only get worse as we expand the set of affected CPUs.
    
    To reduce this boilerplate, unify the two behind a common Kconfig
    option. This removes the duplicate text and Kconfig logic, and removes
    the need for the intermediate ARM64_WORKAROUND_SPECULATIVE_SSBS option.
    The set of affected CPUs is described as a list so that this can easily
    be extended.
    
    I've used ARM64_ERRATUM_3194386 (matching the Neoverse-V3 erratum ID) as
    the common option, matching the way we use ARM64_ERRATUM_1319367 to
    cover Cortex-A57 erratum 1319537 and Cortex-A72 erratum 1319367.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20240603111812.1514101-5-mark.rutland@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    [ Mark: fix conflicts & renames, drop unneeded cpucaps.h ]
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
binder: fix hang of unregistered readers [+ + +]
Author: Carlos Llamas <cmllamas@google.com>
Date:   Thu Jul 11 20:14:51 2024 +0000

    binder: fix hang of unregistered readers
    
    commit 31643d84b8c3d9c846aa0e20bc033e46c68c7e7d upstream.
    
    With the introduction of binder_available_for_proc_work_ilocked() in
    commit 1b77e9dcc3da ("ANDROID: binder: remove proc waitqueue") a binder
    thread can only "wait_for_proc_work" after its thread->looper has been
    marked as BINDER_LOOPER_STATE_{ENTERED|REGISTERED}.
    
    This means an unregistered reader risks waiting indefinitely for work
    since it never gets added to the proc->waiting_threads. If there are no
    further references to its waitqueue either the task will hang. The same
    applies to readers using the (e)poll interface.
    
    I couldn't find the rationale behind this restriction. So this patch
    restores the previous behavior of allowing unregistered threads to
    "wait_for_proc_work". Note that an error message for this scenario,
    which had previously become unreachable, is now re-enabled.
    
    Fixes: 1b77e9dcc3da ("ANDROID: binder: remove proc waitqueue")
    Cc: stable@vger.kernel.org
    Cc: Martijn Coenen <maco@google.com>
    Cc: Arve Hjønnevåg <arve@google.com>
    Signed-off-by: Carlos Llamas <cmllamas@google.com>
    Link: https://lore.kernel.org/r/20240711201452.2017543-1-cmllamas@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Bluetooth: l2cap: always unlock channel in l2cap_conless_channel() [+ + +]
Author: Dmitry Antipov <dmantipov@yandex.ru>
Date:   Wed Jul 31 12:19:36 2024 +0300

    Bluetooth: l2cap: always unlock channel in l2cap_conless_channel()
    
    [ Upstream commit c531e63871c0b50c8c4e62c048535a08886fba3e ]
    
    Add missing call to 'l2cap_chan_unlock()' on receive error handling
    path in 'l2cap_conless_channel()'.
    
    Fixes: a24cce144b98 ("Bluetooth: Fix reference counting of global L2CAP channels")
    Reported-by: syzbot+45ac74737e866894acb0@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=45ac74737e866894acb0
    Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bna: adjust 'name' buf size of bna_tcb and bna_ccb structures [+ + +]
Author: Alexey Kodanev <aleksei.kodanev@bell-sw.com>
Date:   Mon Jul 8 10:50:08 2024 +0000

    bna: adjust 'name' buf size of bna_tcb and bna_ccb structures
    
    [ Upstream commit c9741a03dc8e491e57b95fba0058ab46b7e506da ]
    
    To have enough space to write all possible sprintf() args. Currently
    'name' size is 16, but the first '%s' specifier may already need at
    least 16 characters, since 'bnad->netdev->name' is used there.
    
    For '%d' specifiers, assume that they require:
     * 1 char for 'tx_id + tx_info->tcb[i]->id' sum, BNAD_MAX_TXQ_PER_TX is 8
     * 2 chars for 'rx_id + rx_info->rx_ctrl[i].ccb->id', BNAD_MAX_RXP_PER_RX
       is 16
    
    And replace sprintf with snprintf.
    
    Detected using the static analysis tool - Svace.
    
    Fixes: 8b230ed8ec96 ("bna: Brocade 10Gb Ethernet device driver")
    Signed-off-by: Alexey Kodanev <aleksei.kodanev@bell-sw.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bnxt_re: Fix imm_data endianness [+ + +]
Author: Jack Wang <jinpu.wang@ionos.com>
Date:   Wed Jul 10 14:21:02 2024 +0200

    bnxt_re: Fix imm_data endianness
    
    [ Upstream commit 95b087f87b780daafad1dbb2c84e81b729d5d33f ]
    
    When map a device between servers with MLX and BCM RoCE nics, RTRS
    server complain about unknown imm type, and can't map the device,
    
    After more debug, it seems bnxt_re wrongly handle the
    imm_data, this patch fixed the compat issue with MLX for us.
    
    In off list discussion, Selvin confirmed HW is working in little endian format
    and all data needs to be converted to LE while providing.
    
    This patch fix the endianness for imm_data
    
    Fixes: 1ac5a4047975 ("RDMA/bnxt_re: Add bnxt_re RoCE driver")
    Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
    Link: https://lore.kernel.org/r/20240710122102.37569-1-jinpu.wang@ionos.com
    Acked-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpf: kprobe: remove unused declaring of bpf_kprobe_override [+ + +]
Author: Menglong Dong <menglong8.dong@gmail.com>
Date:   Mon Aug 5 14:01:21 2024 +0900

    bpf: kprobe: remove unused declaring of bpf_kprobe_override
    
    [ Upstream commit 0e8b53979ac86eddb3fd76264025a70071a25574 ]
    
    After the commit 66665ad2f102 ("tracing/kprobe: bpf: Compare instruction
    pointer with original one"), "bpf_kprobe_override" is not used anywhere
    anymore, and we can remove it now.
    
    Link: https://lore.kernel.org/all/20240710085939.11520-1-dongml2@chinatelecom.cn/
    
    Fixes: 66665ad2f102 ("tracing/kprobe: bpf: Compare instruction pointer with original one")
    Signed-off-by: Menglong Dong <dongml2@chinatelecom.cn>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
btrfs: fix bitmap leak when loading free space cache on duplicate entry [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Jul 3 15:40:59 2024 +0100

    btrfs: fix bitmap leak when loading free space cache on duplicate entry
    
    [ Upstream commit 320d8dc612660da84c3b70a28658bb38069e5a9a ]
    
    If we failed to link a free space entry because there's already a
    conflicting entry for the same offset, we free the free space entry but
    we don't free the associated bitmap that we had just allocated before.
    Fix that by freeing the bitmap before freeing the entry.
    
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
char: tpm: Fix possible memory leak in tpm_bios_measurements_open() [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Thu Jun 27 15:31:09 2024 +0900

    char: tpm: Fix possible memory leak in tpm_bios_measurements_open()
    
    commit 5d8e2971e817bb64225fc0b6327a78752f58a9aa upstream.
    
    In tpm_bios_measurements_open(), get_device() is called on the device
    embedded in struct tpm_chip. In the error path, however, put_device() is
    not called. This results in a reference count leak, which prevents the
    device from being properly released. This commit makes sure to call
    put_device() when the seq_open() call fails.
    
    Cc: stable@vger.kernel.org # +v4.18
    Fixes: 9b01b5356629 ("tpm: Move shared eventlog functions to common.c")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
clk: davinci: da8xx-cfgchip: Initialize clk_init_data before use [+ + +]
Author: Bastien Curutchet <bastien.curutchet@bootlin.com>
Date:   Thu Jul 18 13:55:34 2024 +0200

    clk: davinci: da8xx-cfgchip: Initialize clk_init_data before use
    
    commit a83b22754e351f13fb46596c85f667dc33da71ec upstream.
    
    The flag attribute of the struct clk_init_data isn't initialized before
    the devm_clk_hw_register() call. This can lead to unexpected behavior
    during registration.
    
    Initialize the entire clk_init_data to zero at declaration.
    
    Cc: stable@vger.kernel.org
    Fixes: 58e1e2d2cd89 ("clk: davinci: cfgchip: Add TI DA8XX USB PHY clocks")
    Signed-off-by: Bastien Curutchet <bastien.curutchet@bootlin.com>
    Reviewed-by: David Lechner <david@lechnology.com>
    Link: https://lore.kernel.org/r/20240718115534.41513-1-bastien.curutchet@bootlin.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
clocksource/drivers/sh_cmt: Address race condition for clock events [+ + +]
Author: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Date:   Tue Jul 2 21:02:30 2024 +0200

    clocksource/drivers/sh_cmt: Address race condition for clock events
    
    [ Upstream commit db19d3aa77612983a02bd223b3f273f896b243cf ]
    
    There is a race condition in the CMT interrupt handler. In the interrupt
    handler the driver sets a driver private flag, FLAG_IRQCONTEXT. This
    flag is used to indicate any call to set_next_event() should not be
    directly propagated to the device, but instead cached. This is done as
    the interrupt handler itself reprograms the device when needed before it
    completes and this avoids this operation to take place twice.
    
    It is unclear why this design was chosen, my suspicion is to allow the
    struct clock_event_device.event_handler callback, which is called while
    the FLAG_IRQCONTEXT is set, can update the next event without having to
    write to the device twice.
    
    Unfortunately there is a race between when the FLAG_IRQCONTEXT flag is
    set and later cleared where the interrupt handler have already started to
    write the next event to the device. If set_next_event() is called in
    this window the value is only cached in the driver but not written. This
    leads to the board to misbehave, or worse lockup and produce a splat.
    
       rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
       rcu:     0-...!: (0 ticks this GP) idle=f5e0/0/0x0 softirq=519/519 fqs=0 (false positive?)
       rcu:     (detected by 1, t=6502 jiffies, g=-595, q=77 ncpus=2)
       Sending NMI from CPU 1 to CPUs 0:
       NMI backtrace for cpu 0
       CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.10.0-rc5-arm64-renesas-00019-g74a6f86eaf1c-dirty #20
       Hardware name: Renesas Salvator-X 2nd version board based on r8a77965 (DT)
       pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
       pc : tick_check_broadcast_expired+0xc/0x40
       lr : cpu_idle_poll.isra.0+0x8c/0x168
       sp : ffff800081c63d70
       x29: ffff800081c63d70 x28: 00000000580000c8 x27: 00000000bfee5610
       x26: 0000000000000027 x25: 0000000000000000 x24: 0000000000000000
       x23: ffff00007fbb9100 x22: ffff8000818f1008 x21: ffff8000800ef07c
       x20: ffff800081c79ec0 x19: ffff800081c70c28 x18: 0000000000000000
       x17: 0000000000000000 x16: 0000000000000000 x15: 0000ffffc2c717d8
       x14: 0000000000000000 x13: ffff000009c18080 x12: ffff8000825f7fc0
       x11: 0000000000000000 x10: ffff8000818f3cd4 x9 : 0000000000000028
       x8 : ffff800081c79ec0 x7 : ffff800081c73000 x6 : 0000000000000000
       x5 : 0000000000000000 x4 : ffff7ffffe286000 x3 : 0000000000000000
       x2 : ffff7ffffe286000 x1 : ffff800082972900 x0 : ffff8000818f1008
       Call trace:
        tick_check_broadcast_expired+0xc/0x40
        do_idle+0x9c/0x280
        cpu_startup_entry+0x34/0x40
        kernel_init+0x0/0x11c
        do_one_initcall+0x0/0x260
        __primary_switched+0x80/0x88
       rcu: rcu_preempt kthread timer wakeup didn't happen for 6501 jiffies! g-595 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402
       rcu:     Possible timer handling issue on cpu=0 timer-softirq=262
       rcu: rcu_preempt kthread starved for 6502 jiffies! g-595 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402 ->cpu=0
       rcu:     Unless rcu_preempt kthread gets sufficient CPU time, OOM is now expected behavior.
       rcu: RCU grace-period kthread stack dump:
       task:rcu_preempt     state:I stack:0     pid:15    tgid:15    ppid:2      flags:0x00000008
       Call trace:
        __switch_to+0xbc/0x100
        __schedule+0x358/0xbe0
        schedule+0x48/0x148
        schedule_timeout+0xc4/0x138
        rcu_gp_fqs_loop+0x12c/0x764
        rcu_gp_kthread+0x208/0x298
        kthread+0x10c/0x110
        ret_from_fork+0x10/0x20
    
    The design have been part of the driver since it was first merged in
    early 2009. It becomes increasingly harder to trigger the issue the
    older kernel version one tries. It only takes a few boots on v6.10-rc5,
    while hundreds of boots are needed to trigger it on v5.10.
    
    Close the race condition by using the CMT channel lock for the two
    competing sections. The channel lock was added to the driver after its
    initial design.
    
    Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Link: https://lore.kernel.org/r/20240702190230.3825292-1-niklas.soderlund+renesas@ragnatech.se
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
decompress_bunzip2: fix rare decompression failure [+ + +]
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Wed Jul 17 17:20:16 2024 +0100

    decompress_bunzip2: fix rare decompression failure
    
    commit bf6acd5d16057d7accbbb1bf7dc6d8c56eeb4ecc upstream.
    
    The decompression code parses a huffman tree and counts the number of
    symbols for a given bit length.  In rare cases, there may be >= 256
    symbols with a given bit length, causing the unsigned char to overflow.
    This causes a decompression failure later when the code tries and fails to
    find the bit length for a given symbol.
    
    Since the maximum number of symbols is 258, use unsigned short instead.
    
    Link: https://lkml.kernel.org/r/20240717162016.1514077-1-ross.lagerwall@citrix.com
    Fixes: bc22c17e12c1 ("bzip2/lzma: library support for gzip, bzip2 and lzma decompression")
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Cc: Alain Knaff <alain@knaff.lu>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dev/parport: fix the array out-of-bounds risk [+ + +]
Author: tuhaowen <tuhaowen@uniontech.com>
Date:   Mon Jul 8 16:04:30 2024 +0800

    dev/parport: fix the array out-of-bounds risk
    
    [ Upstream commit ab11dac93d2d568d151b1918d7b84c2d02bacbd5 ]
    
    Fixed array out-of-bounds issues caused by sprintf
    by replacing it with snprintf for safer data copying,
    ensuring the destination buffer is not overflowed.
    
    Below is the stack trace I encountered during the actual issue:
    
    [ 66.575408s] [pid:5118,cpu4,QThread,4]Kernel panic - not syncing: stack-protector:
    Kernel stack is corrupted in: do_hardware_base_addr+0xcc/0xd0 [parport]
    [ 66.575408s] [pid:5118,cpu4,QThread,5]CPU: 4 PID: 5118 Comm:
    QThread Tainted: G S W O 5.10.97-arm64-desktop #7100.57021.2
    [ 66.575439s] [pid:5118,cpu4,QThread,6]TGID: 5087 Comm: EFileApp
    [ 66.575439s] [pid:5118,cpu4,QThread,7]Hardware name: HUAWEI HUAWEI QingYun
    PGUX-W515x-B081/SP1PANGUXM, BIOS 1.00.07 04/29/2024
    [ 66.575439s] [pid:5118,cpu4,QThread,8]Call trace:
    [ 66.575469s] [pid:5118,cpu4,QThread,9] dump_backtrace+0x0/0x1c0
    [ 66.575469s] [pid:5118,cpu4,QThread,0] show_stack+0x14/0x20
    [ 66.575469s] [pid:5118,cpu4,QThread,1] dump_stack+0xd4/0x10c
    [ 66.575500s] [pid:5118,cpu4,QThread,2] panic+0x1d8/0x3bc
    [ 66.575500s] [pid:5118,cpu4,QThread,3] __stack_chk_fail+0x2c/0x38
    [ 66.575500s] [pid:5118,cpu4,QThread,4] do_hardware_base_addr+0xcc/0xd0 [parport]
    
    Signed-off-by: tuhaowen <tuhaowen@uniontech.com>
    Cc: stable <stable@kernel.org>
    Link: https://lore.kernel.org/r/20240708080430.8221-1-tuhaowen@uniontech.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
devres: Fix memory leakage caused by driver API devm_free_percpu() [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Tue Jul 2 22:51:51 2024 +0800

    devres: Fix memory leakage caused by driver API devm_free_percpu()
    
    [ Upstream commit bd50a974097bb82d52a458bd3ee39fb723129a0c ]
    
    It will cause memory leakage when use driver API devm_free_percpu()
    to free memory allocated by devm_alloc_percpu(), fixed by using
    devres_release() instead of devres_destroy() within devm_free_percpu().
    
    Fixes: ff86aae3b411 ("devres: add devm_alloc_percpu()")
    Cc: stable@vger.kernel.org
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Link: https://lore.kernel.org/r/1719931914-19035-3-git-send-email-quic_zijuhu@quicinc.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dma: fix call order in dmam_free_coherent [+ + +]
Author: Lance Richardson <rlance@google.com>
Date:   Thu Jul 18 14:38:24 2024 +0000

    dma: fix call order in dmam_free_coherent
    
    [ Upstream commit 28e8b7406d3a1f5329a03aa25a43aa28e087cb20 ]
    
    dmam_free_coherent() frees a DMA allocation, which makes the
    freed vaddr available for reuse, then calls devres_destroy()
    to remove and free the data structure used to track the DMA
    allocation. Between the two calls, it is possible for a
    concurrent task to make an allocation with the same vaddr
    and add it to the devres list.
    
    If this happens, there will be two entries in the devres list
    with the same vaddr and devres_destroy() can free the wrong
    entry, triggering the WARN_ON() in dmam_match.
    
    Fix by destroying the devres entry before freeing the DMA
    allocation.
    
    Tested:
      kokonut //net/encryption
        http://sponge2/b9145fe6-0f72-4325-ac2f-a84d81075b03
    
    Fixes: 9ac7849e35f7 ("devres: device resource management")
    Signed-off-by: Lance Richardson <rlance@google.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
driver core: Cast to (void *) with __force for __percpu pointer [+ + +]
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Thu Apr 1 20:10:30 2021 +0300

    driver core: Cast to (void *) with __force for __percpu pointer
    
    [ Upstream commit d7aa44f5a1f86cb40659eef06035d8d92604b9d5 ]
    
    Sparse is not happy:
    
      drivers/base/devres.c:1230:9: warning: cast removes address space '__percpu' of expression
    
    Use __force attribute to make it happy.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20210401171030.60527-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: bd50a974097b ("devres: Fix memory leakage caused by driver API devm_free_percpu()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

driver core: Fix uevent_show() vs driver detach race [+ + +]
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Fri Jul 12 12:42:09 2024 -0700

    driver core: Fix uevent_show() vs driver detach race
    
    commit 15fffc6a5624b13b428bb1c6e9088e32a55eb82c upstream.
    
    uevent_show() wants to de-reference dev->driver->name. There is no clean
    way for a device attribute to de-reference dev->driver unless that
    attribute is defined via (struct device_driver).dev_groups. Instead, the
    anti-pattern of taking the device_lock() in the attribute handler risks
    deadlocks with code paths that remove device attributes while holding
    the lock.
    
    This deadlock is typically invisible to lockdep given the device_lock()
    is marked lockdep_set_novalidate_class(), but some subsystems allocate a
    local lockdep key for @dev->mutex to reveal reports of the form:
    
     ======================================================
     WARNING: possible circular locking dependency detected
     6.10.0-rc7+ #275 Tainted: G           OE    N
     ------------------------------------------------------
     modprobe/2374 is trying to acquire lock:
     ffff8c2270070de0 (kn->active#6){++++}-{0:0}, at: __kernfs_remove+0xde/0x220
    
     but task is already holding lock:
     ffff8c22016e88f8 (&cxl_root_key){+.+.}-{3:3}, at: device_release_driver_internal+0x39/0x210
    
     which lock already depends on the new lock.
    
     the existing dependency chain (in reverse order) is:
    
     -> #1 (&cxl_root_key){+.+.}-{3:3}:
            __mutex_lock+0x99/0xc30
            uevent_show+0xac/0x130
            dev_attr_show+0x18/0x40
            sysfs_kf_seq_show+0xac/0xf0
            seq_read_iter+0x110/0x450
            vfs_read+0x25b/0x340
            ksys_read+0x67/0xf0
            do_syscall_64+0x75/0x190
            entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
     -> #0 (kn->active#6){++++}-{0:0}:
            __lock_acquire+0x121a/0x1fa0
            lock_acquire+0xd6/0x2e0
            kernfs_drain+0x1e9/0x200
            __kernfs_remove+0xde/0x220
            kernfs_remove_by_name_ns+0x5e/0xa0
            device_del+0x168/0x410
            device_unregister+0x13/0x60
            devres_release_all+0xb8/0x110
            device_unbind_cleanup+0xe/0x70
            device_release_driver_internal+0x1c7/0x210
            driver_detach+0x47/0x90
            bus_remove_driver+0x6c/0xf0
            cxl_acpi_exit+0xc/0x11 [cxl_acpi]
            __do_sys_delete_module.isra.0+0x181/0x260
            do_syscall_64+0x75/0x190
            entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    The observation though is that driver objects are typically much longer
    lived than device objects. It is reasonable to perform lockless
    de-reference of a @driver pointer even if it is racing detach from a
    device. Given the infrequency of driver unregistration, use
    synchronize_rcu() in module_remove_driver() to close any potential
    races.  It is potentially overkill to suffer synchronize_rcu() just to
    handle the rare module removal racing uevent_show() event.
    
    Thanks to Tetsuo Handa for the debug analysis of the syzbot report [1].
    
    Fixes: c0a40097f0bc ("drivers: core: synchronize really_probe() and dev_uevent()")
    Reported-by: syzbot+4762dd74e32532cda5ff@syzkaller.appspotmail.com
    Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Closes: http://lore.kernel.org/5aa5558f-90a4-4864-b1b1-5d6784c5607d@I-love.SAKURA.ne.jp [1]
    Link: http://lore.kernel.org/669073b8ea479_5fffa294c1@dwillia2-xfh.jf.intel.com.notmuch
    Cc: stable@vger.kernel.org
    Cc: Ashish Sangwan <a.sangwan@samsung.com>
    Cc: Namjae Jeon <namjae.jeon@samsung.com>
    Cc: Dirk Behme <dirk.behme@de.bosch.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Rafael J. Wysocki <rafael@kernel.org>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Link: https://lore.kernel.org/r/172081332794.577428.9738802016494057132.stgit@dwillia2-xfh.jf.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/bridge: analogix_dp: properly handle zero sized AUX transactions [+ + +]
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Mon Mar 18 21:39:23 2024 +0100

    drm/bridge: analogix_dp: properly handle zero sized AUX transactions
    
    commit e82290a2e0e8ec5e836ecad1ca025021b3855c2d upstream.
    
    Address only transactions without any data are valid and should not
    be flagged as short transactions. Simply return the message size when
    no transaction errors occured.
    
    CC: stable@vger.kernel.org
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Reviewed-by: Robert Foss <rfoss@kernel.org>
    Signed-off-by: Robert Foss <rfoss@kernel.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240318203925.2837689-1-l.stach@pengutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/etnaviv: fix DMA direction handling for cached RW buffers [+ + +]
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri Jun 21 19:11:06 2024 +0200

    drm/etnaviv: fix DMA direction handling for cached RW buffers
    
    [ Upstream commit 58979ad6330a70450ed78837be3095107d022ea9 ]
    
    The dma sync operation needs to be done with DMA_BIDIRECTIONAL when
    the BO is prepared for both read and write operations.
    
    Fixes: a8c21a5451d8 ("drm/etnaviv: add initial etnaviv DRM driver")
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
    Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/gma500: fix null pointer dereference in cdv_intel_lvds_get_modes [+ + +]
Author: Ma Ke <make24@iscas.ac.cn>
Date:   Tue Jul 9 19:33:11 2024 +0800

    drm/gma500: fix null pointer dereference in cdv_intel_lvds_get_modes
    
    commit cb520c3f366c77e8d69e4e2e2781a8ce48d98e79 upstream.
    
    In cdv_intel_lvds_get_modes(), the return value of drm_mode_duplicate()
    is assigned to mode, which will lead to a NULL pointer dereference on
    failure of drm_mode_duplicate(). Add a check to avoid npd.
    
    Cc: stable@vger.kernel.org
    Fixes: 6a227d5fd6c4 ("gma500: Add support for Cedarview")
    Signed-off-by: Ma Ke <make24@iscas.ac.cn>
    Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240709113311.37168-1-make24@iscas.ac.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/gma500: fix null pointer dereference in psb_intel_lvds_get_modes [+ + +]
Author: Ma Ke <make24@iscas.ac.cn>
Date:   Tue Jul 9 17:20:11 2024 +0800

    drm/gma500: fix null pointer dereference in psb_intel_lvds_get_modes
    
    commit 2df7aac81070987b0f052985856aa325a38debf6 upstream.
    
    In psb_intel_lvds_get_modes(), the return value of drm_mode_duplicate() is
    assigned to mode, which will lead to a possible NULL pointer dereference
    on failure of drm_mode_duplicate(). Add a check to avoid npd.
    
    Cc: stable@vger.kernel.org
    Fixes: 89c78134cc54 ("gma500: Add Poulsbo support")
    Signed-off-by: Ma Ke <make24@iscas.ac.cn>
    Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240709092011.3204970-1-make24@iscas.ac.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/i915/gem: Fix Virtual Memory mapping boundaries calculation [+ + +]
Author: Andi Shyti <andi.shyti@linux.intel.com>
Date:   Fri Aug 2 10:38:50 2024 +0200

    drm/i915/gem: Fix Virtual Memory mapping boundaries calculation
    
    commit 8bdd9ef7e9b1b2a73e394712b72b22055e0e26c3 upstream.
    
    Calculating the size of the mapped area as the lesser value
    between the requested size and the actual size does not consider
    the partial mapping offset. This can cause page fault access.
    
    Fix the calculation of the starting and ending addresses, the
    total size is now deduced from the difference between the end and
    start addresses.
    
    Additionally, the calculations have been rewritten in a clearer
    and more understandable form.
    
    Fixes: c58305af1835 ("drm/i915: Use remap_io_mapping() to prefault all PTE in a single pass")
    Reported-by: Jann Horn <jannh@google.com>
    Co-developed-by: Chris Wilson <chris.p.wilson@linux.intel.com>
    Signed-off-by: Chris Wilson <chris.p.wilson@linux.intel.com>
    Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Matthew Auld <matthew.auld@intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: <stable@vger.kernel.org> # v4.9+
    Reviewed-by: Jann Horn <jannh@google.com>
    Reviewed-by: Jonathan Cavitt <Jonathan.cavitt@intel.com>
    [Joonas: Add Requires: tag]
    Requires: 60a2066c5005 ("drm/i915/gem: Adjust vma offset for framebuffer mmap offset")
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240802083850.103694-3-andi.shyti@linux.intel.com
    (cherry picked from commit 97b6784753da06d9d40232328efc5c5367e53417)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/mgag200: Set DDC timeout in milliseconds [+ + +]
Author: Thomas Zimmermann <tzimmermann@suse.de>
Date:   Mon May 13 14:51:06 2024 +0200

    drm/mgag200: Set DDC timeout in milliseconds
    
    commit ecde5db1598aecab54cc392282c15114f526f05f upstream.
    
    Compute the i2c timeout in jiffies from a value in milliseconds. The
    original values of 2 jiffies equals 2 milliseconds if HZ has been
    configured to a value of 1000. This corresponds to 2.2 milliseconds
    used by most other DRM drivers. Update mgag200 accordingly.
    
    Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
    Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
    Fixes: 414c45310625 ("mgag200: initial g200se driver (v2)")
    Cc: Dave Airlie <airlied@redhat.com>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Maxime Ripard <mripard@kernel.org>
    Cc: Thomas Zimmermann <tzimmermann@suse.de>
    Cc: Jocelyn Falempe <jfalempe@redhat.com>
    Cc: dri-devel@lists.freedesktop.org
    Cc: <stable@vger.kernel.org> # v3.5+
    Link: https://patchwork.freedesktop.org/patch/msgid/20240513125620.6337-2-tzimmermann@suse.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/vmwgfx: Fix overlay when using Screen Targets [+ + +]
Author: Ian Forbes <ian.forbes@broadcom.com>
Date:   Fri Jul 19 11:36:27 2024 -0500

    drm/vmwgfx: Fix overlay when using Screen Targets
    
    [ Upstream commit cb372a505a994cb39aa75acfb8b3bcf94787cf94 ]
    
    This code was never updated to support Screen Targets.
    Fixes a bug where Xv playback displays a green screen instead of actual
    video contents when 3D acceleration is disabled in the guest.
    
    Fixes: c8261a961ece ("vmwgfx: Major KMS refactoring / cleanup in preparation of screen targets")
    Reported-by: Doug Brown <doug@schmorgal.com>
    Closes: https://lore.kernel.org/all/bd9cb3c7-90e8-435d-bc28-0e38fee58977@schmorgal.com
    Signed-off-by: Ian Forbes <ian.forbes@broadcom.com>
    Tested-by: Doug Brown <doug@schmorgal.com>
    Signed-off-by: Zack Rusin <zack.rusin@broadcom.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240719163627.20888-1-ian.forbes@broadcom.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
exec: Fix ToCToU between perm check and set-uid/gid usage [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Thu Aug 8 11:39:08 2024 -0700

    exec: Fix ToCToU between perm check and set-uid/gid usage
    
    commit f50733b45d865f91db90919f8311e2127ce5a0cb upstream.
    
    When opening a file for exec via do_filp_open(), permission checking is
    done against the file's metadata at that moment, and on success, a file
    pointer is passed back. Much later in the execve() code path, the file
    metadata (specifically mode, uid, and gid) is used to determine if/how
    to set the uid and gid. However, those values may have changed since the
    permissions check, meaning the execution may gain unintended privileges.
    
    For example, if a file could change permissions from executable and not
    set-id:
    
    ---------x 1 root root 16048 Aug  7 13:16 target
    
    to set-id and non-executable:
    
    ---S------ 1 root root 16048 Aug  7 13:16 target
    
    it is possible to gain root privileges when execution should have been
    disallowed.
    
    While this race condition is rare in real-world scenarios, it has been
    observed (and proven exploitable) when package managers are updating
    the setuid bits of installed programs. Such files start with being
    world-executable but then are adjusted to be group-exec with a set-uid
    bit. For example, "chmod o-x,u+s target" makes "target" executable only
    by uid "root" and gid "cdrom", while also becoming setuid-root:
    
    -rwxr-xr-x 1 root cdrom 16048 Aug  7 13:16 target
    
    becomes:
    
    -rwsr-xr-- 1 root cdrom 16048 Aug  7 13:16 target
    
    But racing the chmod means users without group "cdrom" membership can
    get the permission to execute "target" just before the chmod, and when
    the chmod finishes, the exec reaches brpm_fill_uid(), and performs the
    setuid to root, violating the expressed authorization of "only cdrom
    group members can setuid to root".
    
    Re-check that we still have execute permissions in case the metadata
    has changed. It would be better to keep a copy from the perm-check time,
    but until we can do that refactoring, the least-bad option is to do a
    full inode_permission() call (under inode lock). It is understood that
    this is safe against dead-locks, but hardly optimal.
    
    Reported-by: Marco Vanotti <mvanotti@google.com>
    Tested-by: Marco Vanotti <mvanotti@google.com>
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: stable@vger.kernel.org
    Cc: Eric Biederman <ebiederm@xmission.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ext4: avoid writing unitialized memory to disk in EA inodes [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Thu Jun 13 17:02:34 2024 +0200

    ext4: avoid writing unitialized memory to disk in EA inodes
    
    [ Upstream commit 65121eff3e4c8c90f8126debf3c369228691c591 ]
    
    If the extended attribute size is not a multiple of block size, the last
    block in the EA inode will have uninitialized tail which will get
    written to disk. We will never expose the data to userspace but still
    this is not a good practice so just zero out the tail of the block as it
    isn't going to cause a noticeable performance overhead.
    
    Fixes: e50e5129f384 ("ext4: xattr-in-inode support")
    Reported-by: syzbot+9c1fe13fcb51574b249b@syzkaller.appspotmail.com
    Reported-by: Hugh Dickins <hughd@google.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://patch.msgid.link/20240613150234.25176-1-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ext4: check dot and dotdot of dx_root before making dir indexed [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Tue Jul 2 21:23:48 2024 +0800

    ext4: check dot and dotdot of dx_root before making dir indexed
    
    commit 50ea741def587a64e08879ce6c6a30131f7111e7 upstream.
    
    Syzbot reports a issue as follows:
    ============================================
    BUG: unable to handle page fault for address: ffffed11022e24fe
    PGD 23ffee067 P4D 23ffee067 PUD 0
    Oops: Oops: 0000 [#1] PREEMPT SMP KASAN PTI
    CPU: 0 PID: 5079 Comm: syz-executor306 Not tainted 6.10.0-rc5-g55027e689933 #0
    Call Trace:
     <TASK>
     make_indexed_dir+0xdaf/0x13c0 fs/ext4/namei.c:2341
     ext4_add_entry+0x222a/0x25d0 fs/ext4/namei.c:2451
     ext4_rename fs/ext4/namei.c:3936 [inline]
     ext4_rename2+0x26e5/0x4370 fs/ext4/namei.c:4214
    [...]
    ============================================
    
    The immediate cause of this problem is that there is only one valid dentry
    for the block to be split during do_split, so split==0 results in out of
    bounds accesses to the map triggering the issue.
    
        do_split
          unsigned split
          dx_make_map
           count = 1
          split = count/2 = 0;
          continued = hash2 == map[split - 1].hash;
           ---> map[4294967295]
    
    The maximum length of a filename is 255 and the minimum block size is 1024,
    so it is always guaranteed that the number of entries is greater than or
    equal to 2 when do_split() is called.
    
    But syzbot's crafted image has no dot and dotdot in dir, and the dentry
    distribution in dirblock is as follows:
    
      bus     dentry1          hole           dentry2           free
    |xx--|xx-------------|...............|xx-------------|...............|
    0   12 (8+248)=256  268     256     524 (8+256)=264 788     236     1024
    
    So when renaming dentry1 increases its name_len length by 1, neither hole
    nor free is sufficient to hold the new dentry, and make_indexed_dir() is
    called.
    
    In make_indexed_dir() it is assumed that the first two entries of the
    dirblock must be dot and dotdot, so bus and dentry1 are left in dx_root
    because they are treated as dot and dotdot, and only dentry2 is moved
    to the new leaf block. That's why count is equal to 1.
    
    Therefore add the ext4_check_dx_root() helper function to add more sanity
    checks to dot and dotdot before starting the conversion to avoid the above
    issue.
    
    Reported-by: syzbot+ae688d469e36fb5138d0@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=ae688d469e36fb5138d0
    Fixes: ac27a0ec112a ("[PATCH] ext4: initial copy of files from ext3")
    Cc: stable@kernel.org
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://patch.msgid.link/20240702132349.2600605-2-libaokun@huaweicloud.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: fix wrong unit use in ext4_mb_find_by_goal [+ + +]
Author: Kemeng Shi <shikemeng@huaweicloud.com>
Date:   Sat Jun 3 23:03:11 2023 +0800

    ext4: fix wrong unit use in ext4_mb_find_by_goal
    
    [ Upstream commit 99c515e3a860576ba90c11acbc1d6488dfca6463 ]
    
    We need start in block unit while fe_start is in cluster unit. Use
    ext4_grp_offs_to_block helper to convert fe_start to get start in
    block unit.
    
    Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com>
    Reviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
    Link: https://lore.kernel.org/r/20230603150327.3596033-4-shikemeng@huaweicloud.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ext4: make sure the first directory block is not a hole [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Tue Jul 2 21:23:49 2024 +0800

    ext4: make sure the first directory block is not a hole
    
    commit f9ca51596bbfd0f9c386dd1c613c394c78d9e5e6 upstream.
    
    The syzbot constructs a directory that has no dirblock but is non-inline,
    i.e. the first directory block is a hole. And no errors are reported when
    creating files in this directory in the following flow.
    
        ext4_mknod
         ...
          ext4_add_entry
            // Read block 0
            ext4_read_dirblock(dir, block, DIRENT)
              bh = ext4_bread(NULL, inode, block, 0)
              if (!bh && (type == INDEX || type == DIRENT_HTREE))
              // The first directory block is a hole
              // But type == DIRENT, so no error is reported.
    
    After that, we get a directory block without '.' and '..' but with a valid
    dentry. This may cause some code that relies on dot or dotdot (such as
    make_indexed_dir()) to crash.
    
    Therefore when ext4_read_dirblock() finds that the first directory block
    is a hole report that the filesystem is corrupted and return an error to
    avoid loading corrupted data from disk causing something bad.
    
    Reported-by: syzbot+ae688d469e36fb5138d0@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=ae688d469e36fb5138d0
    Fixes: 4e19d6b65fb4 ("ext4: allow directory holes")
    Cc: stable@kernel.org
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://patch.msgid.link/20240702132349.2600605-3-libaokun@huaweicloud.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
f2fs: fix to don't dirty inode for readonly filesystem [+ + +]
Author: Chao Yu <chao@kernel.org>
Date:   Tue Jun 4 15:56:36 2024 +0800

    f2fs: fix to don't dirty inode for readonly filesystem
    
    commit 192b8fb8d1c8ca3c87366ebbef599fa80bb626b8 upstream.
    
    syzbot reports f2fs bug as below:
    
    kernel BUG at fs/f2fs/inode.c:933!
    RIP: 0010:f2fs_evict_inode+0x1576/0x1590 fs/f2fs/inode.c:933
    Call Trace:
     evict+0x2a4/0x620 fs/inode.c:664
     dispose_list fs/inode.c:697 [inline]
     evict_inodes+0x5f8/0x690 fs/inode.c:747
     generic_shutdown_super+0x9d/0x2c0 fs/super.c:675
     kill_block_super+0x44/0x90 fs/super.c:1667
     kill_f2fs_super+0x303/0x3b0 fs/f2fs/super.c:4894
     deactivate_locked_super+0xc1/0x130 fs/super.c:484
     cleanup_mnt+0x426/0x4c0 fs/namespace.c:1256
     task_work_run+0x24a/0x300 kernel/task_work.c:180
     ptrace_notify+0x2cd/0x380 kernel/signal.c:2399
     ptrace_report_syscall include/linux/ptrace.h:411 [inline]
     ptrace_report_syscall_exit include/linux/ptrace.h:473 [inline]
     syscall_exit_work kernel/entry/common.c:251 [inline]
     syscall_exit_to_user_mode_prepare kernel/entry/common.c:278 [inline]
     __syscall_exit_to_user_mode_work kernel/entry/common.c:283 [inline]
     syscall_exit_to_user_mode+0x15c/0x280 kernel/entry/common.c:296
     do_syscall_64+0x50/0x110 arch/x86/entry/common.c:88
     entry_SYSCALL_64_after_hwframe+0x63/0x6b
    
    The root cause is:
    - do_sys_open
     - f2fs_lookup
      - __f2fs_find_entry
       - f2fs_i_depth_write
        - f2fs_mark_inode_dirty_sync
         - f2fs_dirty_inode
          - set_inode_flag(inode, FI_DIRTY_INODE)
    
    - umount
     - kill_f2fs_super
      - kill_block_super
       - generic_shutdown_super
        - sync_filesystem
        : sb is readonly, skip sync_filesystem()
        - evict_inodes
         - iput
          - f2fs_evict_inode
           - f2fs_bug_on(sbi, is_inode_flag_set(inode, FI_DIRTY_INODE))
           : trigger kernel panic
    
    When we try to repair i_current_depth in readonly filesystem, let's
    skip dirty inode to avoid panic in later f2fs_evict_inode().
    
    Cc: stable@vger.kernel.org
    Reported-by: syzbot+31e4659a3fe953aec2f4@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/linux-f2fs-devel/000000000000e890bc0609a55cff@google.com
    Signed-off-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fs/nilfs2: remove some unused macros to tame gcc [+ + +]
Author: Alex Shi <alexs@kernel.org>
Date:   Tue Dec 15 20:45:27 2020 -0800

    fs/nilfs2: remove some unused macros to tame gcc
    
    [ Upstream commit e7920b3e9d9f5470d5ff7d883e72a47addc0a137 ]
    
    There some macros are unused and cause gcc warning. Remove them.
    
      fs/nilfs2/segment.c:137:0: warning: macro "nilfs_cnt32_gt" is not used [-Wunused-macros]
      fs/nilfs2/segment.c:144:0: warning: macro "nilfs_cnt32_le" is not used [-Wunused-macros]
      fs/nilfs2/segment.c:143:0: warning: macro "nilfs_cnt32_lt" is not used [-Wunused-macros]
    
    Link: https://lkml.kernel.org/r/1607552733-24292-1-git-send-email-konishi.ryusuke@gmail.com
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Signed-off-by: Alex Shi <alex.shi@linux.alibaba.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Stable-dep-of: 0f3819e8c483 ("nilfs2: avoid undefined behavior in nilfs_cnt32_ge macro")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hfs: fix to initialize fields of hfs_inode_info after hfs_alloc_inode() [+ + +]
Author: Chao Yu <chao@kernel.org>
Date:   Sun Jun 16 09:38:41 2024 +0800

    hfs: fix to initialize fields of hfs_inode_info after hfs_alloc_inode()
    
    commit 26a2ed107929a855155429b11e1293b83e6b2a8b upstream.
    
    Syzbot reports uninitialized value access issue as below:
    
    loop0: detected capacity change from 0 to 64
    =====================================================
    BUG: KMSAN: uninit-value in hfs_revalidate_dentry+0x307/0x3f0 fs/hfs/sysdep.c:30
     hfs_revalidate_dentry+0x307/0x3f0 fs/hfs/sysdep.c:30
     d_revalidate fs/namei.c:862 [inline]
     lookup_fast+0x89e/0x8e0 fs/namei.c:1649
     walk_component fs/namei.c:2001 [inline]
     link_path_walk+0x817/0x1480 fs/namei.c:2332
     path_lookupat+0xd9/0x6f0 fs/namei.c:2485
     filename_lookup+0x22e/0x740 fs/namei.c:2515
     user_path_at_empty+0x8b/0x390 fs/namei.c:2924
     user_path_at include/linux/namei.h:57 [inline]
     do_mount fs/namespace.c:3689 [inline]
     __do_sys_mount fs/namespace.c:3898 [inline]
     __se_sys_mount+0x66b/0x810 fs/namespace.c:3875
     __x64_sys_mount+0xe4/0x140 fs/namespace.c:3875
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcf/0x1e0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x63/0x6b
    
    BUG: KMSAN: uninit-value in hfs_ext_read_extent fs/hfs/extent.c:196 [inline]
    BUG: KMSAN: uninit-value in hfs_get_block+0x92d/0x1620 fs/hfs/extent.c:366
     hfs_ext_read_extent fs/hfs/extent.c:196 [inline]
     hfs_get_block+0x92d/0x1620 fs/hfs/extent.c:366
     block_read_full_folio+0x4ff/0x11b0 fs/buffer.c:2271
     hfs_read_folio+0x55/0x60 fs/hfs/inode.c:39
     filemap_read_folio+0x148/0x4f0 mm/filemap.c:2426
     do_read_cache_folio+0x7c8/0xd90 mm/filemap.c:3553
     do_read_cache_page mm/filemap.c:3595 [inline]
     read_cache_page+0xfb/0x2f0 mm/filemap.c:3604
     read_mapping_page include/linux/pagemap.h:755 [inline]
     hfs_btree_open+0x928/0x1ae0 fs/hfs/btree.c:78
     hfs_mdb_get+0x260c/0x3000 fs/hfs/mdb.c:204
     hfs_fill_super+0x1fb1/0x2790 fs/hfs/super.c:406
     mount_bdev+0x628/0x920 fs/super.c:1359
     hfs_mount+0xcd/0xe0 fs/hfs/super.c:456
     legacy_get_tree+0x167/0x2e0 fs/fs_context.c:610
     vfs_get_tree+0xdc/0x5d0 fs/super.c:1489
     do_new_mount+0x7a9/0x16f0 fs/namespace.c:3145
     path_mount+0xf98/0x26a0 fs/namespace.c:3475
     do_mount fs/namespace.c:3488 [inline]
     __do_sys_mount fs/namespace.c:3697 [inline]
     __se_sys_mount+0x919/0x9e0 fs/namespace.c:3674
     __ia32_sys_mount+0x15b/0x1b0 fs/namespace.c:3674
     do_syscall_32_irqs_on arch/x86/entry/common.c:112 [inline]
     __do_fast_syscall_32+0xa2/0x100 arch/x86/entry/common.c:178
     do_fast_syscall_32+0x37/0x80 arch/x86/entry/common.c:203
     do_SYSENTER_32+0x1f/0x30 arch/x86/entry/common.c:246
     entry_SYSENTER_compat_after_hwframe+0x70/0x82
    
    Uninit was created at:
     __alloc_pages+0x9a6/0xe00 mm/page_alloc.c:4590
     __alloc_pages_node include/linux/gfp.h:238 [inline]
     alloc_pages_node include/linux/gfp.h:261 [inline]
     alloc_slab_page mm/slub.c:2190 [inline]
     allocate_slab mm/slub.c:2354 [inline]
     new_slab+0x2d7/0x1400 mm/slub.c:2407
     ___slab_alloc+0x16b5/0x3970 mm/slub.c:3540
     __slab_alloc mm/slub.c:3625 [inline]
     __slab_alloc_node mm/slub.c:3678 [inline]
     slab_alloc_node mm/slub.c:3850 [inline]
     kmem_cache_alloc_lru+0x64d/0xb30 mm/slub.c:3879
     alloc_inode_sb include/linux/fs.h:3018 [inline]
     hfs_alloc_inode+0x5a/0xc0 fs/hfs/super.c:165
     alloc_inode+0x83/0x440 fs/inode.c:260
     new_inode_pseudo fs/inode.c:1005 [inline]
     new_inode+0x38/0x4f0 fs/inode.c:1031
     hfs_new_inode+0x61/0x1010 fs/hfs/inode.c:186
     hfs_mkdir+0x54/0x250 fs/hfs/dir.c:228
     vfs_mkdir+0x49a/0x700 fs/namei.c:4126
     do_mkdirat+0x529/0x810 fs/namei.c:4149
     __do_sys_mkdirat fs/namei.c:4164 [inline]
     __se_sys_mkdirat fs/namei.c:4162 [inline]
     __x64_sys_mkdirat+0xc8/0x120 fs/namei.c:4162
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcf/0x1e0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x63/0x6b
    
    It missed to initialize .tz_secondswest, .cached_start and .cached_blocks
    fields in struct hfs_inode_info after hfs_alloc_inode(), fix it.
    
    Cc: stable@vger.kernel.org
    Reported-by: syzbot+3ae6be33a50b5aae4dab@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/linux-fsdevel/0000000000005ad04005ee48897f@google.com
    Signed-off-by: Chao Yu <chao@kernel.org>
    Link: https://lore.kernel.org/r/20240616013841.2217-1-chao@kernel.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
hfsplus: fix to avoid false alarm of circular locking [+ + +]
Author: Chao Yu <chao@kernel.org>
Date:   Fri Jun 7 22:23:04 2024 +0800

    hfsplus: fix to avoid false alarm of circular locking
    
    [ Upstream commit be4edd1642ee205ed7bbf66edc0453b1be1fb8d7 ]
    
    Syzbot report potential ABBA deadlock as below:
    
    loop0: detected capacity change from 0 to 1024
    ======================================================
    WARNING: possible circular locking dependency detected
    6.9.0-syzkaller-10323-g8f6a15f095a6 #0 Not tainted
    ------------------------------------------------------
    syz-executor171/5344 is trying to acquire lock:
    ffff88807cb980b0 (&tree->tree_lock){+.+.}-{3:3}, at: hfsplus_file_truncate+0x811/0xb50 fs/hfsplus/extents.c:595
    
    but task is already holding lock:
    ffff88807a930108 (&HFSPLUS_I(inode)->extents_lock){+.+.}-{3:3}, at: hfsplus_file_truncate+0x2da/0xb50 fs/hfsplus/extents.c:576
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #1 (&HFSPLUS_I(inode)->extents_lock){+.+.}-{3:3}:
           lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754
           __mutex_lock_common kernel/locking/mutex.c:608 [inline]
           __mutex_lock+0x136/0xd70 kernel/locking/mutex.c:752
           hfsplus_file_extend+0x21b/0x1b70 fs/hfsplus/extents.c:457
           hfsplus_bmap_reserve+0x105/0x4e0 fs/hfsplus/btree.c:358
           hfsplus_rename_cat+0x1d0/0x1050 fs/hfsplus/catalog.c:456
           hfsplus_rename+0x12e/0x1c0 fs/hfsplus/dir.c:552
           vfs_rename+0xbdb/0xf00 fs/namei.c:4887
           do_renameat2+0xd94/0x13f0 fs/namei.c:5044
           __do_sys_rename fs/namei.c:5091 [inline]
           __se_sys_rename fs/namei.c:5089 [inline]
           __x64_sys_rename+0x86/0xa0 fs/namei.c:5089
           do_syscall_x64 arch/x86/entry/common.c:52 [inline]
           do_syscall_64+0xf5/0x240 arch/x86/entry/common.c:83
           entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    -> #0 (&tree->tree_lock){+.+.}-{3:3}:
           check_prev_add kernel/locking/lockdep.c:3134 [inline]
           check_prevs_add kernel/locking/lockdep.c:3253 [inline]
           validate_chain+0x18cb/0x58e0 kernel/locking/lockdep.c:3869
           __lock_acquire+0x1346/0x1fd0 kernel/locking/lockdep.c:5137
           lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754
           __mutex_lock_common kernel/locking/mutex.c:608 [inline]
           __mutex_lock+0x136/0xd70 kernel/locking/mutex.c:752
           hfsplus_file_truncate+0x811/0xb50 fs/hfsplus/extents.c:595
           hfsplus_setattr+0x1ce/0x280 fs/hfsplus/inode.c:265
           notify_change+0xb9d/0xe70 fs/attr.c:497
           do_truncate+0x220/0x310 fs/open.c:65
           handle_truncate fs/namei.c:3308 [inline]
           do_open fs/namei.c:3654 [inline]
           path_openat+0x2a3d/0x3280 fs/namei.c:3807
           do_filp_open+0x235/0x490 fs/namei.c:3834
           do_sys_openat2+0x13e/0x1d0 fs/open.c:1406
           do_sys_open fs/open.c:1421 [inline]
           __do_sys_creat fs/open.c:1497 [inline]
           __se_sys_creat fs/open.c:1491 [inline]
           __x64_sys_creat+0x123/0x170 fs/open.c:1491
           do_syscall_x64 arch/x86/entry/common.c:52 [inline]
           do_syscall_64+0xf5/0x240 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(&HFSPLUS_I(inode)->extents_lock);
                                   lock(&tree->tree_lock);
                                   lock(&HFSPLUS_I(inode)->extents_lock);
      lock(&tree->tree_lock);
    
    This is a false alarm as tree_lock mutex are different, one is
    from sbi->cat_tree, and another is from sbi->ext_tree:
    
    Thread A                        Thread B
    - hfsplus_rename
     - hfsplus_rename_cat
      - hfs_find_init
       - mutext_lock(cat_tree->tree_lock)
                                    - hfsplus_setattr
                                     - hfsplus_file_truncate
                                      - mutex_lock(hip->extents_lock)
                                      - hfs_find_init
                                       - mutext_lock(ext_tree->tree_lock)
      - hfs_bmap_reserve
       - hfsplus_file_extend
        - mutex_lock(hip->extents_lock)
    
    So, let's call mutex_lock_nested for tree_lock mutex lock, and pass
    correct lock class for it.
    
    Fixes: 31651c607151 ("hfsplus: avoid deadlock on file truncation")
    Reported-by: syzbot+6030b3b1b9bf70e538c4@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/linux-fsdevel/000000000000e37a4005ef129563@google.com
    Cc: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
    Signed-off-by: Chao Yu <chao@kernel.org>
    Link: https://lore.kernel.org/r/20240607142304.455441-1-chao@kernel.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hwmon: (adt7475) Fix default duty on fan is disabled [+ + +]
Author: Wayne Tung <chineweff@gmail.com>
Date:   Mon Jul 1 15:32:52 2024 +0800

    hwmon: (adt7475) Fix default duty on fan is disabled
    
    [ Upstream commit 39b24cced70fdc336dbc0070f8b3bde61d8513a8 ]
    
    According to the comments on fan is disabled, we change to manual mode
    and set the duty cycle to 0.
    For setting the duty cycle part, the register is wrong. Fix it.
    
    Fixes: 1c301fc5394f ("hwmon: Add a driver for the ADT7475 hardware monitoring chip")
    Signed-off-by: Wayne Tung <chineweff@gmail.com>
    Link: https://lore.kernel.org/r/20240701073252.317397-1-chineweff@gmail.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hwmon: (max6697) Auto-convert to use SENSOR_DEVICE_ATTR_{RO, RW, WO} [+ + +]
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu Dec 6 10:54:38 2018 -0800

    hwmon: (max6697) Auto-convert to use SENSOR_DEVICE_ATTR_{RO, RW, WO}
    
    [ Upstream commit 740c2f2b86a71ad673f329241ac25cfe647aacd4 ]
    
    Conversion was done done using the coccinelle script at
    https://github.com/groeck/coccinelle-patches/raw/master/hwmon/sensor-devattr-w6.cocci
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Stable-dep-of: 1ea3fd1eb986 ("hwmon: (max6697) Fix swapped temp{1,8} critical alarms")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hwmon: (max6697) Fix swapped temp{1,8} critical alarms [+ + +]
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sat Jul 13 12:03:53 2024 -0700

    hwmon: (max6697) Fix swapped temp{1,8} critical alarms
    
    [ Upstream commit 1ea3fd1eb9869fcdcbc9c68f9728bfc47b9503f1 ]
    
    The critical alarm bit for the local temperature sensor (temp1) is in
    bit 7 of register 0x45 (not bit 6), and the critical alarm bit for remote
    temperature sensor 7 (temp8) is in bit 6 (not bit 7).
    
    This only affects MAX6581 since all other chips supported by this driver
    do not support those critical alarms.
    
    Fixes: 5372d2d71c46 ("hwmon: Driver for Maxim MAX6697 and compatibles")
    Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hwmon: (max6697) Fix underflow when writing limit attributes [+ + +]
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sat Jul 13 14:26:19 2024 -0700

    hwmon: (max6697) Fix underflow when writing limit attributes
    
    [ Upstream commit cbf7467828cd4ec7ceac7a8b5b5ddb2f69f07b0e ]
    
    Using DIV_ROUND_CLOSEST() on an unbound value can result in underflows.
    Indeed, module test scripts report:
    
    temp1_max: Suspected underflow: [min=0, read 255000, written -9223372036854775808]
    temp1_crit: Suspected underflow: [min=0, read 255000, written -9223372036854775808]
    
    Fix by introducing an extra set of clamping.
    
    Fixes: 5372d2d71c46 ("hwmon: Driver for Maxim MAX6697 and compatibles")
    Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hwmon: Introduce SENSOR_DEVICE_ATTR_{RO, RW, WO} and variants [+ + +]
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Tue Dec 27 15:28:19 2016 -0800

    hwmon: Introduce SENSOR_DEVICE_ATTR_{RO, RW, WO} and variants
    
    [ Upstream commit a5c47c0d388b939dd578fd466aa804b7f2445390 ]
    
    Introduce SENSOR_DEVICE_ATTR_{RO,RW,WO} and SENSOR_DEVICE_ATTR_2_{RO,RW,WO}
    as simplified variants of SENSOR_DEVICE_ATTR and SENSOR_DEVICE_ATTR_2 to
    simplify the source code, improve readbility, and reduce the chance of
    inconsistencies.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Stable-dep-of: 1ea3fd1eb986 ("hwmon: (max6697) Fix swapped temp{1,8} critical alarms")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hwrng: amd - Convert PCIBIOS_* return codes to errnos [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Mon May 27 16:26:15 2024 +0300

    hwrng: amd - Convert PCIBIOS_* return codes to errnos
    
    commit 14cba6ace79627a57fb9058582b03f0ed3832390 upstream.
    
    amd_rng_mod_init() uses pci_read_config_dword() that returns PCIBIOS_*
    codes. The return code is then returned as is but amd_rng_mod_init() is
    a module_init() function that should return normal errnos.
    
    Convert PCIBIOS_* returns code using pcibios_err_to_errno() into normal
    errno before returning it.
    
    Fixes: 96d63c0297cc ("[PATCH] Add AMD HW RNG driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
i2c: smbus: Don't filter out duplicate alerts [+ + +]
Author: Corey Minyard <cminyard@mvista.com>
Date:   Thu Nov 21 10:10:51 2019 +0100

    i2c: smbus: Don't filter out duplicate alerts
    
    [ Upstream commit dca0dd28fa5e0a1ec41a623dbaf667601fc62331 ]
    
    Getting the same alert twice in a row is legal and normal,
    especially on a fast device (like running in qemu).  Kind of
    like interrupts.  So don't report duplicate alerts, and deliver
    them normally.
    
    [JD: Fixed subject]
    
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Jean Delvare <jdelvare@suse.de>
    Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Stable-dep-of: f6c29f710c1f ("i2c: smbus: Send alert notifications to all devices if source not found")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i2c: smbus: Improve handling of stuck alerts [+ + +]
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Mon Jan 10 09:28:56 2022 -0800

    i2c: smbus: Improve handling of stuck alerts
    
    [ Upstream commit 37c526f00bc1c4f847fc800085f8f009d2e11be6 ]
    
    The following messages were observed while testing alert functionality
    on systems with multiple I2C devices on a single bus if alert was active
    on more than one chip.
    
    smbus_alert 3-000c: SMBALERT# from dev 0x0c, flag 0
    smbus_alert 3-000c: no driver alert()!
    
    and:
    
    smbus_alert 3-000c: SMBALERT# from dev 0x28, flag 0
    
    Once it starts, this message repeats forever at high rate. There is no
    device at any of the reported addresses.
    
    Analysis shows that this is seen if multiple devices have the alert pin
    active. Apparently some devices do not support SMBus arbitration correctly.
    They keep sending address bits after detecting an address collision and
    handle the collision not at all or too late.
    Specifically, address 0x0c is seen with ADT7461A at address 0x4c and
    ADM1021 at address 0x18 if alert is active on both chips. Address 0x28 is
    seen with ADT7483 at address 0x2a and ADT7461 at address 0x4c if alert is
    active on both chips.
    
    Once the system is in bad state (alert is set by more than one chip),
    it often only recovers by power cycling.
    
    To reduce the impact of this problem, abort the endless loop in
    smbus_alert() if the same address is read more than once and not
    handled by a driver.
    
    Fixes: b5527a7766f0 ("i2c: Add SMBus alert support")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    [wsa: it also fixed an interrupt storm in one of my experiments]
    Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    [wsa: rebased, moved a comment as well, improved the 'invalid' value]
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Stable-dep-of: f6c29f710c1f ("i2c: smbus: Send alert notifications to all devices if source not found")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i2c: smbus: Send alert notifications to all devices if source not found [+ + +]
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Tue Jul 30 07:19:41 2024 -0700

    i2c: smbus: Send alert notifications to all devices if source not found
    
    [ Upstream commit f6c29f710c1ff2590109f83be3e212b86c01e0f3 ]
    
    If a SMBus alert is received and the originating device is not found,
    the reason may be that the address reported on the SMBus alert address
    is corrupted, for example because multiple devices asserted alert and
    do not correctly implement SMBus arbitration.
    
    If this happens, call alert handlers on all devices connected to the
    given I2C bus, in the hope that this cleans up the situation.
    
    This change reliably fixed the problem on a system with multiple devices
    on a single bus. Example log where the device on address 0x18 (ADM1021)
    and on address 0x4c (ADT7461A) both had the alert line asserted:
    
    smbus_alert 3-000c: SMBALERT# from dev 0x0c, flag 0
    smbus_alert 3-000c: no driver alert()!
    smbus_alert 3-000c: SMBALERT# from dev 0x0c, flag 0
    smbus_alert 3-000c: no driver alert()!
    lm90 3-0018: temp1 out of range, please check!
    lm90 3-0018: Disabling ALERT#
    lm90 3-0029: Everything OK
    lm90 3-002a: Everything OK
    lm90 3-004c: temp1 out of range, please check!
    lm90 3-004c: temp2 out of range, please check!
    lm90 3-004c: Disabling ALERT#
    
    Fixes: b5527a7766f0 ("i2c: Add SMBus alert support")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    [wsa: fixed a typo in the commit message]
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ice: Rework flex descriptor programming [+ + +]
Author: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Date:   Thu Aug 9 06:29:44 2018 -0700

    ice: Rework flex descriptor programming
    
    [ Upstream commit 22ef683b48182f4d6125a2fb2725eb8a141514ff ]
    
    The driver can support two flex descriptor profiles, ICE_RXDID_FLEX_NIC
    and ICE_RXDID_FLEX_NIC_2. This patch reworks the current flex programming
    logic to add support for the latter profile.
    
    Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Stable-dep-of: 782161895eb4 ("netfilter: ctnetlink: use helper function to calculate expect ID")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Input: elan_i2c - do not leave interrupt disabled on suspend failure [+ + +]
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Thu Jun 6 23:02:48 2024 -0700

    Input: elan_i2c - do not leave interrupt disabled on suspend failure
    
    [ Upstream commit 5f82c1e04721e7cd98e604eb4e58f0724d8e5a65 ]
    
    Make sure interrupts are not left disabled when we fail to suspend the
    touch controller.
    
    Fixes: 6696777c6506 ("Input: add driver for Elan I2C/SMbus touchpad")
    Link: https://lore.kernel.org/r/ZmKiiL-1wzKrhqBj@google.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipv4: Fix incorrect source address in Record Route option [+ + +]
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Thu Jul 18 15:34:07 2024 +0300

    ipv4: Fix incorrect source address in Record Route option
    
    [ Upstream commit cc73bbab4b1fb8a4f53a24645871dafa5f81266a ]
    
    The Record Route IP option records the addresses of the routers that
    routed the packet. In the case of forwarded packets, the kernel performs
    a route lookup via fib_lookup() and fills in the preferred source
    address of the matched route.
    
    The lookup is performed with the DS field of the forwarded packet, but
    using the RT_TOS() macro which only masks one of the two ECN bits. If
    the packet is ECT(0) or CE, the matched route might be different than
    the route via which the packet was forwarded as the input path masks
    both of the ECN bits, resulting in the wrong address being filled in the
    Record Route option.
    
    Fix by masking both of the ECN bits.
    
    Fixes: 8e36360ae876 ("ipv4: Remove route key identity dependencies in ip_rt_get_source().")
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: Guillaume Nault <gnault@redhat.com>
    Link: https://patch.msgid.link/20240718123407.434778-1-idosch@nvidia.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipv6: fix ndisc_is_useropt() handling for PIO [+ + +]
Author: Maciej Żenczykowski <maze@google.com>
Date:   Mon Jul 29 17:17:48 2024 -0700

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

ipv6: take care of scope when choosing the src addr [+ + +]
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Wed Jul 10 10:14:29 2024 +0200

    ipv6: take care of scope when choosing the src addr
    
    commit abb9a68d2c64dd9b128ae1f2e635e4d805e7ce64 upstream.
    
    When the source address is selected, the scope must be checked. For
    example, if a loopback address is assigned to the vrf device, it must not
    be chosen for packets sent outside.
    
    CC: stable@vger.kernel.org
    Fixes: afbac6010aec ("net: ipv6: Address selection needs to consider L3 domains")
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://patch.msgid.link/20240710081521.3809742-4-nicolas.dichtel@6wind.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ipvs: Avoid unnecessary calls to skb_is_gso_sctp [+ + +]
Author: Ismael Luceno <iluceno@suse.de>
Date:   Thu May 23 18:54:44 2024 +0200

    ipvs: Avoid unnecessary calls to skb_is_gso_sctp
    
    [ Upstream commit 53796b03295cf7ab1fc8600016fa6dfbf4a494a0 ]
    
    In the context of the SCTP SNAT/DNAT handler, these calls can only
    return true.
    
    Fixes: e10d3ba4d434 ("ipvs: Fix checksumming on GSO of SCTP packets")
    Signed-off-by: Ismael Luceno <iluceno@suse.de>
    Acked-by: Julian Anastasov <ja@ssi.bg>
    Acked-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
irqchip/mbigen: Fix mbigen node address layout [+ + +]
Author: Yipeng Zou <zouyipeng@huawei.com>
Date:   Tue Jul 30 09:44:00 2024 +0800

    irqchip/mbigen: Fix mbigen node address layout
    
    [ Upstream commit 6be6cba9c4371d27f78d900ccfe34bb880d9ee20 ]
    
    The mbigen interrupt chip has its per node registers located in a
    contiguous region of page sized chunks. The code maps them into virtual
    address space as a contiguous region and determines the address of a node
    by using the node ID as index.
    
                        mbigen chip
           |-----------------|------------|--------------|
       mgn_node_0         mgn_node_1     ...         mgn_node_i
    |--------------|   |--------------|       |----------------------|
    [0x0000, 0x0x0FFF] [0x1000, 0x1FFF]    [i*0x1000, (i+1)*0x1000 - 1]
    
    This works correctly up to 10 nodes, but then fails because the 11th's
    array slot is used for the MGN_CLEAR registers.
    
                             mbigen chip
        |-----------|--------|--------|---------------|--------|
    mgn_node_0  mgn_node_1  ...  mgn_clear_register  ...   mgn_node_i
                                |-----------------|
                                 [0xA000, 0xAFFF]
    
    Skip the MGN_CLEAR register space when calculating the offset for node IDs
    greater than or equal to ten.
    
    Fixes: a6c2f87b8820 ("irqchip/mbigen: Implement the mbigen irq chip operation functions")
    Signed-off-by: Yipeng Zou <zouyipeng@huawei.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/all/20240730014400.1751530-1-zouyipeng@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
jbd2: avoid memleak in jbd2_journal_write_metadata_buffer [+ + +]
Author: Kemeng Shi <shikemeng@huaweicloud.com>
Date:   Tue May 14 19:24:30 2024 +0800

    jbd2: avoid memleak in jbd2_journal_write_metadata_buffer
    
    [ Upstream commit cc102aa24638b90e04364d64e4f58a1fa91a1976 ]
    
    The new_bh is from alloc_buffer_head, we should call free_buffer_head to
    free it in error case.
    
    Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com>
    Reviewed-by: Zhang Yi <yi.zhang@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://patch.msgid.link/20240514112438.1269037-2-shikemeng@huaweicloud.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
jfs: Fix array-index-out-of-bounds in diFree [+ + +]
Author: Jeongjun Park <aha310510@gmail.com>
Date:   Thu May 30 22:28:09 2024 +0900

    jfs: Fix array-index-out-of-bounds in diFree
    
    [ Upstream commit f73f969b2eb39ad8056f6c7f3a295fa2f85e313a ]
    
    Reported-by: syzbot+241c815bda521982cb49@syzkaller.appspotmail.com
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Jeongjun Park <aha310510@gmail.com>
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
kbuild: Fix '-S -c' in x86 stack protector scripts [+ + +]
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Fri Jul 26 11:05:00 2024 -0700

    kbuild: Fix '-S -c' in x86 stack protector scripts
    
    commit 3415b10a03945b0da4a635e146750dfe5ce0f448 upstream.
    
    After a recent change in clang to stop consuming all instances of '-S'
    and '-c' [1], the stack protector scripts break due to the kernel's use
    of -Werror=unused-command-line-argument to catch cases where flags are
    not being properly consumed by the compiler driver:
    
      $ echo | clang -o - -x c - -S -c -Werror=unused-command-line-argument
      clang: error: argument unused during compilation: '-c' [-Werror,-Wunused-command-line-argument]
    
    This results in CONFIG_STACKPROTECTOR getting disabled because
    CONFIG_CC_HAS_SANE_STACKPROTECTOR is no longer set.
    
    '-c' and '-S' both instruct the compiler to stop at different stages of
    the pipeline ('-S' after compiling, '-c' after assembling), so having
    them present together in the same command makes little sense. In this
    case, the test wants to stop before assembling because it is looking at
    the textual assembly output of the compiler for either '%fs' or '%gs',
    so remove '-c' from the list of arguments to resolve the error.
    
    All versions of GCC continue to work after this change, along with
    versions of clang that do or do not contain the change mentioned above.
    
    Cc: stable@vger.kernel.org
    Fixes: 4f7fd4d7a791 ("[PATCH] Add the -fstack-protector option to the CFLAGS")
    Fixes: 60a5317ff0f4 ("x86: implement x86_32 stack protector")
    Link: https://github.com/llvm/llvm-project/commit/6461e537815f7fa68cef06842505353cf5600e9c [1]
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    [nathan: Fixed conflict in 32-bit version due to lack of 3fb0fdb3bbe7]
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
kdb: address -Wformat-security warnings [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue May 28 14:11:48 2024 +0200

    kdb: address -Wformat-security warnings
    
    [ Upstream commit 70867efacf4370b6c7cdfc7a5b11300e9ef7de64 ]
    
    When -Wformat-security is not disabled, using a string pointer
    as a format causes a warning:
    
    kernel/debug/kdb/kdb_io.c: In function 'kdb_read':
    kernel/debug/kdb/kdb_io.c:365:36: error: format not a string literal and no format arguments [-Werror=format-security]
      365 |                         kdb_printf(kdb_prompt_str);
          |                                    ^~~~~~~~~~~~~~
    kernel/debug/kdb/kdb_io.c: In function 'kdb_getstr':
    kernel/debug/kdb/kdb_io.c:456:20: error: format not a string literal and no format arguments [-Werror=format-security]
      456 |         kdb_printf(kdb_prompt_str);
          |                    ^~~~~~~~~~~~~~
    
    Use an explcit "%s" format instead.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: 5d5314d6795f ("kdb: core for kgdb back end (1 of 2)")
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Link: https://lore.kernel.org/r/20240528121154.3662553-1-arnd@kernel.org
    Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

kdb: Fix bound check compiler warning [+ + +]
Author: Wenlin Kang <wenlin.kang@windriver.com>
Date:   Mon May 13 16:57:20 2019 +0800

    kdb: Fix bound check compiler warning
    
    [ Upstream commit ca976bfb3154c7bc67c4651ecd144fdf67ccaee7 ]
    
    The strncpy() function may leave the destination string buffer
    unterminated, better use strscpy() instead.
    
    This fixes the following warning with gcc 8.2:
    
    kernel/debug/kdb/kdb_io.c: In function 'kdb_getstr':
    kernel/debug/kdb/kdb_io.c:449:3: warning: 'strncpy' specified bound 256 equals destination size [-Wstringop-truncation]
       strncpy(kdb_prompt_str, prompt, CMD_BUFLEN);
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
    Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
    Stable-dep-of: 70867efacf43 ("kdb: address -Wformat-security warnings")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

kdb: Use the passed prompt in kdb_position_cursor() [+ + +]
Author: Douglas Anderson <dianders@chromium.org>
Date:   Tue May 28 07:11:48 2024 -0700

    kdb: Use the passed prompt in kdb_position_cursor()
    
    [ Upstream commit e2e821095949cde46256034975a90f88626a2a73 ]
    
    The function kdb_position_cursor() takes in a "prompt" parameter but
    never uses it. This doesn't _really_ matter since all current callers
    of the function pass the same value and it's a global variable, but
    it's a bit ugly. Let's clean it up.
    
    Found by code inspection. This patch is expected to functionally be a
    no-op.
    
    Fixes: 09b35989421d ("kdb: Use format-strings rather than '\0' injection in kdb_read()")
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Link: https://lore.kernel.org/r/20240528071144.1.I0feb49839c6b6f4f2c4bf34764f5e95de3f55a66@changeid
    Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
kobject_uevent: Fix OOB access within zap_modalias_env() [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Thu May 30 21:14:37 2024 +0800

    kobject_uevent: Fix OOB access within zap_modalias_env()
    
    commit dd6e9894b451e7c85cceb8e9dc5432679a70e7dc upstream.
    
    zap_modalias_env() wrongly calculates size of memory block to move, so
    will cause OOB memory access issue if variable MODALIAS is not the last
    one within its @env parameter, fixed by correcting size to memmove.
    
    Fixes: 9b3fa47d4a76 ("kobject: fix suppressing modalias in uevents delivered over netlink")
    Cc: stable@vger.kernel.org
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Reviewed-by: Lk Sii <lk_sii@163.com>
    Link: https://lore.kernel.org/r/1717074877-11352-1-git-send-email-quic_zijuhu@quicinc.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
leds: ss4200: Convert PCIBIOS_* return codes to errnos [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Mon May 27 16:27:00 2024 +0300

    leds: ss4200: Convert PCIBIOS_* return codes to errnos
    
    commit ce068e83976140badb19c7f1307926b4b562fac4 upstream.
    
    ich7_lpc_probe() uses pci_read_config_dword() that returns PCIBIOS_*
    codes. The error handling code assumes incorrectly it's a normal errno
    and checks for < 0. The return code is returned from the probe function
    as is but probe functions should return normal errnos.
    
    Remove < 0 from the check and convert PCIBIOS_* returns code using
    pcibios_err_to_errno() into normal errno before returning it.
    
    Fixes: a328e95b82c1 ("leds: LED driver for Intel NAS SS4200 series (v5)")
    Cc:  <stable@vger.kernel.org>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20240527132700.14260-1-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

leds: trigger: Unregister sysfs attributes before calling deactivate() [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sat May 4 18:25:33 2024 +0200

    leds: trigger: Unregister sysfs attributes before calling deactivate()
    
    [ Upstream commit c0dc9adf9474ecb7106e60e5472577375aedaed3 ]
    
    Triggers which have trigger specific sysfs attributes typically store
    related data in trigger-data allocated by the activate() callback and
    freed by the deactivate() callback.
    
    Calling device_remove_groups() after calling deactivate() leaves a window
    where the sysfs attributes show/store functions could be called after
    deactivation and then operate on the just freed trigger-data.
    
    Move the device_remove_groups() call to before deactivate() to close
    this race window.
    
    This also makes the deactivation path properly do things in reverse order
    of the activation path which calls the activate() callback before calling
    device_add_groups().
    
    Fixes: a7e7a3156300 ("leds: triggers: add device attribute support")
    Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Link: https://lore.kernel.org/r/20240504162533.76780-1-hdegoede@redhat.com
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: Linux 4.19.320 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Aug 19 05:32:18 2024 +0200

    Linux 4.19.320
    
    Link: https://lore.kernel.org/r/20240815131852.063866671@linuxfoundation.org
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
m68k: amiga: Turn off Warp1260 interrupts during boot [+ + +]
Author: Paolo Pisati <p.pisati@gmail.com>
Date:   Sat Jun 1 17:32:54 2024 +0200

    m68k: amiga: Turn off Warp1260 interrupts during boot
    
    commit 1d8491d3e726984343dd8c3cdbe2f2b47cfdd928 upstream.
    
    On an Amiga 1200 equipped with a Warp1260 accelerator, an interrupt
    storm coming from the accelerator board causes the machine to crash in
    local_irq_enable() or auto_irq_enable().  Disabling interrupts for the
    Warp1260 in amiga_parse_bootinfo() fixes the problem.
    
    Link: https://lore.kernel.org/r/ZkjwzVwYeQtyAPrL@amaterasu.local
    Cc: stable <stable@kernel.org>
    Signed-off-by: Paolo Pisati <p.pisati@gmail.com>
    Reviewed-by: Michael Schmitz <schmitzmic@gmail.com>
    Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Link: https://lore.kernel.org/r/20240601153254.186225-1-p.pisati@gmail.com
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

m68k: atari: Fix TT bootup freeze / unexpected (SCU) interrupt messages [+ + +]
Author: Eero Tamminen <oak@helsinkinet.fi>
Date:   Mon Jun 24 17:49:01 2024 +0300

    m68k: atari: Fix TT bootup freeze / unexpected (SCU) interrupt messages
    
    [ Upstream commit f70065a9fd988983b2c693631b801f25a615fc04 ]
    
    Avoid freeze on Atari TT / MegaSTe boot with continuous messages of:
    
            unexpected interrupt from 112
    
    Which was due to VBL interrupt being enabled in SCU sys mask, but there
    being no handler for that any more.
    
    (Bug and fix were first verified on real Atari TT HW by Christian,
     this patch later on in Hatari emulator.)
    
    Fixes: 1fa0b29f3a43f9dd ("fbdev: Kill Atari vblank cursor blinking")
    Reported-by: Nicolas Pomarède <npomarede@corp.free.fr>
    Closes: https://listengine.tuxfamily.org/lists.tuxfamily.org/hatari-devel/2024/06/msg00016.html
    Closes: https://lore.kernel.org/all/9aa793d7-82ed-4fbd-bce5-60810d8a9119@helsinkinet.fi
    Tested-by: Christian Zietz <czietz@gmx.net>
    Signed-off-by: Eero Tamminen <oak@helsinkinet.fi>
    Reviewed-by: Michael Schmitz <schmitzmic@gmail.com>
    Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Link: https://lore.kernel.org/20240624144901.5236-1-oak@helsinkinet.fi
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

m68k: cmpxchg: Fix return value for default case in __arch_xchg() [+ + +]
Author: Thorsten Blum <thorsten.blum@toblux.com>
Date:   Tue Jul 2 05:41:17 2024 +0200

    m68k: cmpxchg: Fix return value for default case in __arch_xchg()
    
    [ Upstream commit 21b9e722ad28c19c2bc83f18f540b3dbd89bf762 ]
    
    The return value of __invalid_xchg_size() is assigned to tmp instead of
    the return variable x. Assign it to x instead.
    
    Fixes: 2501cf768e4009a0 ("m68k: Fix xchg/cmpxchg to fail to link if given an inappropriate pointer")
    Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
    Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Link: https://lore.kernel.org/20240702034116.140234-2-thorsten.blum@toblux.com
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
macintosh/therm_windtunnel: fix module unload. [+ + +]
Author: Nick Bowler <nbowler@draconx.ca>
Date:   Wed Jul 10 23:54:17 2024 -0400

    macintosh/therm_windtunnel: fix module unload.
    
    [ Upstream commit fd748e177194ebcbbaf98df75152a30e08230cc6 ]
    
    The of_device_unregister call in therm_windtunnel's module_exit procedure
    does not fully reverse the effects of of_platform_device_create in the
    module_init prodedure.  Once you unload this module, it is impossible
    to load it ever again since only the first of_platform_device_create
    call on the fan node succeeds.
    
    This driver predates first git commit, and it turns out back then
    of_platform_device_create worked differently than it does today.
    So this is actually an old regression.
    
    The appropriate function to undo of_platform_device_create now appears
    to be of_platform_device_destroy, and switching to use this makes it
    possible to unload and load the module as expected.
    
    Signed-off-by: Nick Bowler <nbowler@draconx.ca>
    Fixes: c6e126de43e7 ("of: Keep track of populated platform devices")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240711035428.16696-1-nbowler@draconx.ca
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
md/raid5: avoid BUG_ON() while continue reshape after reassembling [+ + +]
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Tue Jun 11 21:22:51 2024 +0800

    md/raid5: avoid BUG_ON() while continue reshape after reassembling
    
    [ Upstream commit 305a5170dc5cf3d395bb4c4e9239bca6d0b54b49 ]
    
    Currently, mdadm support --revert-reshape to abort the reshape while
    reassembling, as the test 07revert-grow. However, following BUG_ON()
    can be triggerred by the test:
    
    kernel BUG at drivers/md/raid5.c:6278!
    invalid opcode: 0000 [#1] PREEMPT SMP PTI
    irq event stamp: 158985
    CPU: 6 PID: 891 Comm: md0_reshape Not tainted 6.9.0-03335-g7592a0b0049a #94
    RIP: 0010:reshape_request+0x3f1/0xe60
    Call Trace:
     <TASK>
     raid5_sync_request+0x43d/0x550
     md_do_sync+0xb7a/0x2110
     md_thread+0x294/0x2b0
     kthread+0x147/0x1c0
     ret_from_fork+0x59/0x70
     ret_from_fork_asm+0x1a/0x30
     </TASK>
    
    Root cause is that --revert-reshape update the raid_disks from 5 to 4,
    while reshape position is still set, and after reassembling the array,
    reshape position will be read from super block, then during reshape the
    checking of 'writepos' that is caculated by old reshape position will
    fail.
    
    Fix this panic the easy way first, by converting the BUG_ON() to
    WARN_ON(), and stop the reshape if checkings fail.
    
    Noted that mdadm must fix --revert-shape as well, and probably md/raid
    should enhance metadata validation as well, however this means
    reassemble will fail and there must be user tools to fix the wrong
    metadata.
    
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Signed-off-by: Song Liu <song@kernel.org>
    Link: https://lore.kernel.org/r/20240611132251.1967786-13-yukuai1@huaweicloud.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
media: imon: Fix race getting ictx->lock [+ + +]
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Mon May 6 21:10:27 2024 +0000

    media: imon: Fix race getting ictx->lock
    
    [ Upstream commit 24147897507cd3a7d63745d1518a638bf4132238 ]
    
    Lets fix a race between mutex_is_lock() and mutex_lock().
    
    <-mutex is not locked
    if (!mutex_is_locked(&ictx->lock)) {
            unlock = true; <- mutex is locked externaly
            mutex_lock(&ictx->lock);
    }
    
    Let's use mutex_trylock() that does mutex_is_lock() and mutex_lock()
    atomically.
    
    Fix the following cocci warning:
    drivers/media/rc/imon.c:1167:1-7: preceding lock on line 1153
    
    Fixes: 23ef710e1a6c ("[media] imon: add conditional locking in change_protocol")
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: renesas: vsp1: Fix _irqsave and _irq mix [+ + +]
Author: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Date:   Sun May 5 20:22:27 2024 +0300

    media: renesas: vsp1: Fix _irqsave and _irq mix
    
    [ Upstream commit 57edbbcf5258c378a9b9d0c80d33b03a010b22c8 ]
    
    The histogram support mixes _irqsave and _irq, causing the following
    smatch warning:
    
         drivers/media/platform/renesas/vsp1/vsp1_histo.c:153 histo_stop_streaming()
         warn: mixing irqsave and irq
    
    The histo_stop_streaming() calls spin_lock_irqsave() followed by
    wait_event_lock_irq(). The former hints that interrupts may be disabled
    by the caller, while the latter reenables interrupts unconditionally.
    This doesn't cause any real bug, as the function is always called with
    interrupts enabled, but the pattern is still incorrect.
    
    Fix the problem by using spin_lock_irq() instead of spin_lock_irqsave()
    in histo_stop_streaming(). While at it, switch to spin_lock_irq() and
    spin_lock() as appropriate elsewhere.
    
    Fixes: 99362e32332b ("[media] v4l: vsp1: Add histogram support")
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Closes: https://lore.kernel.org/linux-renesas-soc/164d74ff-312c-468f-be64-afa7182cd2f4@moroto.mountain/
    Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: renesas: vsp1: Store RPF partition configuration per RPF instance [+ + +]
Author: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Date:   Sun Nov 19 03:11:51 2023 +0200

    media: renesas: vsp1: Store RPF partition configuration per RPF instance
    
    [ Upstream commit a213bc09b1025c771ee722ee341af1d84375db8a ]
    
    The vsp1_partition structure stores the RPF partition configuration in a
    single field for all RPF instances, while each RPF can have its own
    configuration. Fix it by storing the configuration separately for each
    RPF instance.
    
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Fixes: ab45e8585182 ("media: v4l: vsp1: Allow entities to participate in the partition algorithm")
    Reviewed-by: Jacopo Mondi <jacopo.mondi+renesas@ideasonboard.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: uvcvideo: Allow entity-defined get_info and get_cur [+ + +]
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Wed Dec 23 14:35:21 2020 +0100

    media: uvcvideo: Allow entity-defined get_info and get_cur
    
    [ Upstream commit 65900c581d014499f0f8ceabfc02c652e9a88771 ]
    
    Allows controls to get their properties and current value
    from an entity-defined function instead of via a query to the USB
    device.
    
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Stable-dep-of: 86419686e66d ("media: uvcvideo: Override default flags")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: uvcvideo: Fix the bandwdith quirk on USB 3.x [+ + +]
Author: Michal Pecio <michal.pecio@gmail.com>
Date:   Sun Apr 14 19:00:40 2024 +0200

    media: uvcvideo: Fix the bandwdith quirk on USB 3.x
    
    [ Upstream commit 9e3d55fbd160b3ca376599a68b4cddfdc67d4153 ]
    
    The bandwidth fixup quirk doesn't know that SuperSpeed exists and has
    the same 8 service intervals per millisecond as High Speed, hence its
    calculations are wrong.
    
    Assume that all speeds from HS up use 8 intervals per millisecond.
    
    No further changes are needed, updated code has been confirmed to work
    with all speeds from FS to SS.
    
    Signed-off-by: Michal Pecio <michal.pecio@gmail.com>
    Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Link: https://lore.kernel.org/r/20240414190040.2255a0bc@foxbook
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: uvcvideo: Ignore empty TS packets [+ + +]
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Sat Mar 23 10:48:03 2024 +0000

    media: uvcvideo: Ignore empty TS packets
    
    [ Upstream commit 5cd7c25f6f0576073b3d03bc4cfb1e8ca63a1195 ]
    
    Some SunplusIT cameras took a borderline interpretation of the UVC 1.5
    standard, and fill the PTS and SCR fields with invalid data if the
    package does not contain data.
    
    "STC must be captured when the first video data of a video frame is put
    on the USB bus."
    
    Some SunplusIT devices send, e.g.,
    
    buffer: 0xa7755c00 len 000012 header:0x8c stc 00000000 sof 0000 pts 00000000
    buffer: 0xa7755c00 len 000012 header:0x8c stc 00000000 sof 0000 pts 00000000
    buffer: 0xa7755c00 len 000668 header:0x8c stc 73779dba sof 070c pts 7376d37a
    
    While the UVC specification meant that the first two packets shouldn't
    have had the SCR bit set in the header.
    
    This borderline/buggy interpretation has been implemented in a variety
    of devices, from directly SunplusIT and from other OEMs that rebrand
    SunplusIT products. So quirking based on VID:PID will be problematic.
    
    All the affected modules have the following extension unit:
    VideoControl Interface Descriptor:
      guidExtensionCode         {82066163-7050-ab49-b8cc-b3855e8d221d}
    
    But the vendor plans to use that GUID in the future and fix the bug,
    this means that we should use heuristic to figure out the broken
    packets.
    
    This patch takes care of this.
    
    lsusb of one of the affected cameras:
    
    Bus 001 Device 003: ID 1bcf:2a01 Sunplus Innovation Technology Inc.
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.01
      bDeviceClass          239 Miscellaneous Device
      bDeviceSubClass         2 ?
      bDeviceProtocol         1 Interface Association
      bMaxPacketSize0        64
      idVendor           0x1bcf Sunplus Innovation Technology Inc.
      idProduct          0x2a01
      bcdDevice            0.02
      iManufacturer           1 SunplusIT Inc
      iProduct                2 HanChen Wise Camera
      iSerial                 3 01.00.00
      bNumConfigurations      1
    
    Tested-by: HungNien Chen <hn.chen@sunplusit.com>
    Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Reviewed-by: Tomasz Figa <tfiga@chromium.org>
    Link: https://lore.kernel.org/r/20240323-resend-hwtimestamp-v10-2-b08e590d97c7@chromium.org
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: uvcvideo: Override default flags [+ + +]
Author: Daniel Schaefer <dhs@frame.work>
Date:   Sun Jun 2 14:50:53 2024 +0800

    media: uvcvideo: Override default flags
    
    [ Upstream commit 86419686e66da5b90a07fb8a40ab138fe97189b5 ]
    
    When the UVC device has a control that is readonly it doesn't set the
    SET_CUR flag. For example the privacy control has SET_CUR flag set in
    the defaults in the `uvc_ctrls` variable. Even if the device does not
    have it set, it's not cleared by uvc_ctrl_get_flags().
    
    Originally written with assignment in commit 859086ae3636 ("media:
    uvcvideo: Apply flags from device to actual properties"). But changed to
    |= in commit 0dc68cabdb62 ("media: uvcvideo: Prevent setting unavailable
    flags"). It would not clear the default flags.
    
    With this patch applied the correct flags are reported to user space.
    Tested with:
    
    ```
    > v4l2-ctl --list-ctrls | grep privacy
    privacy 0x009a0910 (bool)   : default=0 value=0 flags=read-only
    ```
    
    Signed-off-by: Daniel Schaefer <dhs@frame.work>
    Fixes: 0dc68cabdb62 ("media: uvcvideo: Prevent setting unavailable flags")
    Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Link: https://lore.kernel.org/r/20240602065053.36850-1-dhs@frame.work
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: uvcvideo: Use entity get_cur in uvc_ctrl_set [+ + +]
Author: Yunke Cao <yunkec@google.com>
Date:   Thu Jul 7 10:53:31 2022 +0200

    media: uvcvideo: Use entity get_cur in uvc_ctrl_set
    
    commit 5f36851c36b30f713f588ed2b60aa7b4512e2c76 upstream.
    
    Entity controls should get_cur using an entity-defined function
    instead of via a query. Fix this in uvc_ctrl_set.
    
    Fixes: 65900c581d01 ("media: uvcvideo: Allow entity-defined get_info and get_cur")
    Signed-off-by: Yunke Cao <yunkec@google.com>
    Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: venus: fix use after free in vdec_close [+ + +]
Author: Dikshita Agarwal <quic_dikshita@quicinc.com>
Date:   Thu May 9 10:44:29 2024 +0530

    media: venus: fix use after free in vdec_close
    
    commit a0157b5aa34eb43ec4c5510f9c260bbb03be937e upstream.
    
    There appears to be a possible use after free with vdec_close().
    The firmware will add buffer release work to the work queue through
    HFI callbacks as a normal part of decoding. Randomly closing the
    decoder device from userspace during normal decoding can incur
    a read after free for inst.
    
    Fix it by cancelling the work in vdec_close.
    
    Cc: stable@vger.kernel.org
    Fixes: af2c3834c8ca ("[media] media: venus: adding core part and helper functions")
    Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
    Acked-by: Vikash Garodia <quic_vgarodia@quicinc.com>
    Signed-off-by: Stanimir Varbanov <stanimir.k.varbanov@gmail.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mfd: omap-usb-tll: Use struct_size to allocate tll [+ + +]
Author: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Date:   Wed Jun 26 21:37:03 2024 +0200

    mfd: omap-usb-tll: Use struct_size to allocate tll
    
    [ Upstream commit 40176714c818b0b6a2ca8213cdb7654fbd49b742 ]
    
    Commit 16c2004d9e4d ("mfd: omap-usb-tll: Allocate driver data at once")
    changed the memory allocation of 'tll' to consolidate it into a single
    allocation, introducing an incorrect size calculation.
    
    In particular, the allocation for the array of pointers was converted
    into a single-pointer allocation.
    
    The memory allocation used to occur in two steps:
    
    tll = devm_kzalloc(dev, sizeof(struct usbtll_omap), GFP_KERNEL);
    tll->ch_clk = devm_kzalloc(dev, sizeof(struct clk *) * tll->nch,
                               GFP_KERNEL);
    
    And it turned that into the following allocation:
    
    tll = devm_kzalloc(dev, sizeof(*tll) + sizeof(tll->ch_clk[nch]),
                       GFP_KERNEL);
    
    sizeof(tll->ch_clk[nch]) returns the size of a single pointer instead of
    the expected nch pointers.
    
    This bug went unnoticed because the allocation size was small enough to
    fit within the minimum size of a memory allocation for this particular
    case [1].
    
    The complete allocation can still be done at once with the struct_size
    macro, which comes in handy for structures with a trailing flexible
    array.
    
    Fix the memory allocation to obtain the original size again.
    
    Link: https://lore.kernel.org/all/202406261121.2FFD65647@keescook/ [1]
    Fixes: 16c2004d9e4d ("mfd: omap-usb-tll: Allocate driver data at once")
    Reviewed-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
    Fixes: commit 16c2004d9e4d ("mfd: omap-usb-tll: Allocate driver data at once")
    Link: https://lore.kernel.org/r/20240626-omap-usb-tll-counted_by-v2-1-4bedf20d1b51@gmail.com
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
MIPS: Octeron: remove source file executable bit [+ + +]
Author: Dominique Martinet <dominique.martinet@atmark-techno.com>
Date:   Fri Jul 5 16:48:30 2024 +0900

    MIPS: Octeron: remove source file executable bit
    
    [ Upstream commit 89c7f5078935872cf47a713a645affb5037be694 ]
    
    This does not matter the least, but there is no other .[ch] file in the
    repo that is executable, so clean this up.
    
    Fixes: 29b83a64df3b ("MIPS: Octeon: Add PCIe link status check")
    Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

MIPS: SMP-CPS: Fix address for GCR_ACCESS register for CM3 and later [+ + +]
Author: Gregory CLEMENT <gregory.clement@bootlin.com>
Date:   Mon Jul 22 15:15:39 2024 +0200

    MIPS: SMP-CPS: Fix address for GCR_ACCESS register for CM3 and later
    
    [ Upstream commit a263e5f309f32301e1f3ad113293f4e68a82a646 ]
    
    When the CM block migrated from CM2.5 to CM3.0, the address offset for
    the Global CSR Access Privilege register was modified. We saw this in
    the "MIPS64 I6500 Multiprocessing System Programmer's Guide," it is
    stated that "the Global CSR Access Privilege register is located at
    offset 0x0120" in section 5.4. It is at least the same for I6400.
    
    This fix allows to use the VP cores in SMP mode if the reset values
    were modified by the bootloader.
    
    Based on the work of Vladimir Kondratiev
    <vladimir.kondratiev@mobileye.com> and the feedback from Jiaxun Yang
    <jiaxun.yang@flygoat.com>.
    
    Fixes: 197e89e0984a ("MIPS: mips-cm: Implement mips_cm_revision")
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mISDN: Fix a use after free in hfcmulti_tx() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Wed Jul 24 11:08:18 2024 -0500

    mISDN: Fix a use after free in hfcmulti_tx()
    
    [ Upstream commit 61ab751451f5ebd0b98e02276a44e23a10110402 ]
    
    Don't dereference *sp after calling dev_kfree_skb(*sp).
    
    Fixes: af69fb3a8ffa ("Add mISDN HFC multiport driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/8be65f5a-c2dd-4ba0-8a10-bfe5980b8cfb@stanley.mountain
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mm: avoid overflows in dirty throttling logic [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Fri Jun 21 16:42:38 2024 +0200

    mm: avoid overflows in dirty throttling logic
    
    [ Upstream commit 385d838df280eba6c8680f9777bfa0d0bfe7e8b2 ]
    
    The dirty throttling logic is interspersed with assumptions that dirty
    limits in PAGE_SIZE units fit into 32-bit (so that various multiplications
    fit into 64-bits).  If limits end up being larger, we will hit overflows,
    possible divisions by 0 etc.  Fix these problems by never allowing so
    large dirty limits as they have dubious practical value anyway.  For
    dirty_bytes / dirty_background_bytes interfaces we can just refuse to set
    so large limits.  For dirty_ratio / dirty_background_ratio it isn't so
    simple as the dirty limit is computed from the amount of available memory
    which can change due to memory hotplug etc.  So when converting dirty
    limits from ratios to numbers of pages, we just don't allow the result to
    exceed UINT_MAX.
    
    This is root-only triggerable problem which occurs when the operator
    sets dirty limits to >16 TB.
    
    Link: https://lkml.kernel.org/r/20240621144246.11148-2-jack@suse.cz
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reported-by: Zach O'Keefe <zokeefe@google.com>
    Reviewed-By: Zach O'Keefe <zokeefe@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mtd: make mtd_test.c a separate module [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed May 29 11:50:39 2024 +0200

    mtd: make mtd_test.c a separate module
    
    [ Upstream commit a5cf054d325e6f362e82fe6d124a1871a4af8174 ]
    
    This file gets linked into nine different modules, which causes a warning:
    
    scripts/Makefile.build:236: drivers/mtd/tests/Makefile: mtd_test.o is added to multiple modules: mtd_nandbiterrs mtd_oobtest mtd_pagetest mtd_readtest mtd_speedtest mtd_stresstest mtd_subpagetest mtd_torturetest
    
    Make it a separate module instead.
    
    Fixes: a995c792280d ("mtd: tests: rename sources in order to link a helper object")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20240529095049.1915393-1-arnd@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/iucv: fix use after free in iucv_sock_close() [+ + +]
Author: Alexandra Winter <wintera@linux.ibm.com>
Date:   Mon Jul 29 14:28:16 2024 +0200

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

 
net/smc: Allow SMC-D 1MB DMB allocations [+ + +]
Author: Stefan Raspl <raspl@linux.ibm.com>
Date:   Mon Aug 9 10:10:14 2021 +0200

    net/smc: Allow SMC-D 1MB DMB allocations
    
    [ Upstream commit 67161779a9ea926fccee8de047ae66cbd3482b91 ]
    
    Commit a3fe3d01bd0d7 ("net/smc: introduce sg-logic for RMBs") introduced
    a restriction for RMB allocations as used by SMC-R. However, SMC-D does
    not use scatter-gather lists to back its DMBs, yet it was limited by
    this restriction, still.
    This patch exempts SMC, but limits allocations to the maximum RMB/DMB
    size respectively.
    
    Signed-off-by: Stefan Raspl <raspl@linux.ibm.com>
    Signed-off-by: Guvenc Gulce <guvenc@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: 3ac14b9dfbd3 ("net/smc: set rmb's SG_MAX_SINGLE_ALLOC limitation only when CONFIG_ARCH_NO_SG_CHAIN is defined")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/smc: set rmb's SG_MAX_SINGLE_ALLOC limitation only when CONFIG_ARCH_NO_SG_CHAIN is defined [+ + +]
Author: Guangguan Wang <guangguan.wang@linux.alibaba.com>
Date:   Mon Jun 3 11:00:18 2024 +0800

    net/smc: set rmb's SG_MAX_SINGLE_ALLOC limitation only when CONFIG_ARCH_NO_SG_CHAIN is defined
    
    [ Upstream commit 3ac14b9dfbd345e891d48d89f6c2fa519848f0f4 ]
    
    SG_MAX_SINGLE_ALLOC is used to limit maximum number of entries that
    will be allocated in one piece of scatterlist. When the entries of
    scatterlist exceeds SG_MAX_SINGLE_ALLOC, sg chain will be used. From
    commit 7c703e54cc71 ("arch: switch the default on ARCH_HAS_SG_CHAIN"),
    we can know that the macro CONFIG_ARCH_NO_SG_CHAIN is used to identify
    whether sg chain is supported. So, SMC-R's rmb buffer should be limited
    by SG_MAX_SINGLE_ALLOC only when the macro CONFIG_ARCH_NO_SG_CHAIN is
    defined.
    
    Fixes: a3fe3d01bd0d ("net/smc: introduce sg-logic for RMBs")
    Signed-off-by: Guangguan Wang <guangguan.wang@linux.alibaba.com>
    Co-developed-by: Wen Gu <guwen@linux.alibaba.com>
    Signed-off-by: Wen Gu <guwen@linux.alibaba.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: bonding: correctly annotate RCU in bond_should_notify_peers() [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Fri Jul 19 09:41:18 2024 -0700

    net: bonding: correctly annotate RCU in bond_should_notify_peers()
    
    [ Upstream commit 3ba359c0cd6eb5ea772125a7aededb4a2d516684 ]
    
    RCU use in bond_should_notify_peers() looks wrong, since it does
    rcu_dereference(), leaves the critical section, and uses the
    pointer after that.
    
    Luckily, it's called either inside a nested RCU critical section
    or with the RTNL held.
    
    Annotate it with rcu_dereference_rtnl() instead, and remove the
    inner RCU critical section.
    
    Fixes: 4cb4f97b7e36 ("bonding: rebuild the lock use for bond_mii_monitor()")
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Acked-by: Jay Vosburgh <jv@jvosburgh.net>
    Link: https://patch.msgid.link/20240719094119.35c62455087d.I68eb9c0f02545b364b79a59f2110f2cf5682a8e2@changeid
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: fec: Fix FEC_ECR_EN1588 being cleared on link-down [+ + +]
Author: Csókás, Bence <csokas.bence@prolan.hu>
Date:   Wed Jun 19 14:31:11 2024 +0200

    net: fec: Fix FEC_ECR_EN1588 being cleared on link-down
    
    [ Upstream commit c32fe1986f27cac329767d3497986e306cad1d5e ]
    
    FEC_ECR_EN1588 bit gets cleared after MAC reset in `fec_stop()`, which
    makes all 1588 functionality shut down, and all the extended registers
    disappear, on link-down, making the adapter fall back to compatibility
    "dumb mode". However, some functionality needs to be retained (e.g. PPS)
    even without link.
    
    Fixes: 6605b730c061 ("FEC: Add time stamping code and a PTP hardware clock")
    Cc: Richard Cochran <richardcochran@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/netdev/5fa9fadc-a89d-467a-aae9-c65469ff5fe1@lunn.ch/
    Signed-off-by: Csókás, Bence <csokas.bence@prolan.hu>
    Reviewed-by: Wei Fang <wei.fang@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: fec: Refactor: #define magic constants [+ + +]
Author: Csókás Bence <csokas.bence@prolan.hu>
Date:   Mon Feb 12 16:37:17 2024 +0100

    net: fec: Refactor: #define magic constants
    
    [ Upstream commit ff049886671ccd4e624a30ec464cb20e4c39a313 ]
    
    Add defines for bits of ECR, RCR control registers, TX watermark etc.
    
    Signed-off-by: Csókás Bence <csokas.bence@prolan.hu>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20240212153717.10023-1-csokas.bence@prolan.hu
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: c32fe1986f27 ("net: fec: Fix FEC_ECR_EN1588 being cleared on link-down")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: fec: Stop PPS on driver remove [+ + +]
Author: Csókás, Bence <csokas.bence@prolan.hu>
Date:   Wed Aug 7 10:09:56 2024 +0200

    net: fec: Stop PPS on driver remove
    
    [ Upstream commit 8fee6d5ad5fa18c270eedb2a2cdf58dbadefb94b ]
    
    PPS was not stopped in `fec_ptp_stop()`, called when
    the adapter was removed. Consequentially, you couldn't
    safely reload the driver with the PPS signal on.
    
    Fixes: 32cba57ba74b ("net: fec: introduce fec_ptp_stop and use in probe fail path")
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Link: https://lore.kernel.org/netdev/CAOMZO5BzcZR8PwKKwBssQq_wAGzVgf1ffwe_nhpQJjviTdxy-w@mail.gmail.com/T/#m01dcb810bfc451a492140f6797ca77443d0cb79f
    Signed-off-by: Csókás, Bence <csokas.bence@prolan.hu>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Link: https://patch.msgid.link/20240807080956.2556602-1-csokas.bence@prolan.hu
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ip_rt_get_source() - use new style struct initializer instead of memset [+ + +]
Author: Maciej Żenczykowski <maze@google.com>
Date:   Sat Sep 29 23:44:46 2018 -0700

    net: ip_rt_get_source() - use new style struct initializer instead of memset
    
    [ Upstream commit e351bb6227fbe2bb5da6f38a4cf5bd18810b0557 ]
    
    (allows for better compiler optimization)
    
    Signed-off-by: Maciej Żenczykowski <maze@google.com>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: cc73bbab4b1f ("ipv4: Fix incorrect source address in Record Route option")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: linkwatch: use system_unbound_wq [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Aug 5 08:58:21 2024 +0000

    net: linkwatch: use system_unbound_wq
    
    [ Upstream commit 3e7917c0cdad835a5121520fc5686d954b7a61ab ]
    
    linkwatch_event() grabs possibly very contended RTNL mutex.
    
    system_wq is not suitable for such work.
    
    Inspired by many noisy syzbot reports.
    
    3 locks held by kworker/0:7/5266:
     #0: ffff888015480948 ((wq_completion)events){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3206 [inline]
     #0: ffff888015480948 ((wq_completion)events){+.+.}-{0:0}, at: process_scheduled_works+0x90a/0x1830 kernel/workqueue.c:3312
     #1: ffffc90003f6fd00 ((linkwatch_work).work){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3207 [inline]
     , at: process_scheduled_works+0x945/0x1830 kernel/workqueue.c:3312
     #2: ffffffff8fa6f208 (rtnl_mutex){+.+.}-{3:3}, at: linkwatch_event+0xe/0x60 net/core/link_watch.c:276
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Link: https://patch.msgid.link/20240805085821.1616528-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: netconsole: Disable target before netpoll cleanup [+ + +]
Author: Breno Leitao <leitao@debian.org>
Date:   Fri Jul 12 07:34:15 2024 -0700

    net: netconsole: Disable target before netpoll cleanup
    
    commit 97d9fba9a812cada5484667a46e14a4c976ca330 upstream.
    
    Currently, netconsole cleans up the netpoll structure before disabling
    the target. This approach can lead to race conditions, as message
    senders (write_ext_msg() and write_msg()) check if the target is
    enabled before using netpoll. The sender can validate that the target is
    enabled, but, the netpoll might be de-allocated already, causing
    undesired behaviours.
    
    This patch reverses the order of operations:
    1. Disable the target
    2. Clean up the netpoll structure
    
    This change eliminates the potential race condition, ensuring that
    no messages are sent through a partially cleaned-up netpoll structure.
    
    Fixes: 2382b15bcc39 ("netconsole: take care of NETDEV_UNREGISTER event")
    Cc: stable@vger.kernel.org
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20240712143415.1141039-1-leitao@debian.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: usb: qmi_wwan: fix memory leak for not ip packets [+ + +]
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Thu Aug 1 15:55:12 2024 +0200

    net: usb: qmi_wwan: fix memory leak for not ip packets
    
    [ Upstream commit 7ab107544b777c3bd7feb9fe447367d8edd5b202 ]
    
    Free the unused skb when not ip packets arrive.
    
    Fixes: c6adf77953bc ("net: usb: qmi_wwan: add qmap mux protocol support")
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Acked-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: usb: sr9700: fix uninitialized variable use in sr_mdio_read [+ + +]
Author: Ma Ke <make24@iscas.ac.cn>
Date:   Thu Jul 25 10:29:42 2024 +0800

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

 
netfilter: ctnetlink: use helper function to calculate expect ID [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Sat Jul 13 16:47:38 2024 +0200

    netfilter: ctnetlink: use helper function to calculate expect ID
    
    [ Upstream commit 782161895eb4ac45cf7cfa8db375bd4766cb8299 ]
    
    Delete expectation path is missing a call to the nf_expect_get_id()
    helper function to calculate the expectation ID, otherwise LSB of the
    expectation object address is leaked to userspace.
    
    Fixes: 3c79107631db ("netfilter: ctnetlink: don't use conntrack/expect object addresses as id")
    Reported-by: zdi-disclosures@trendmicro.com
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: prefer nft_chain_validate [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Mon Aug 12 12:29:25 2024 +0200

    netfilter: nf_tables: prefer nft_chain_validate
    
    commit cff3bd012a9512ac5ed858d38e6ed65f6391008c upstream
    
    nft_chain_validate already performs loop detection because a cycle will
    result in a call stack overflow (ctx->level >= NFT_JUMP_STACK_SIZE).
    
    It also follows maps via ->validate callback in nft_lookup, so there
    appears no reason to iterate the maps again.
    
    nf_tables_check_loops() and all its helper functions can be removed.
    This improves ruleset load time significantly, from 23s down to 12s.
    
    This also fixes a crash bug. Old loop detection code can result in
    unbounded recursion:
    
    BUG: TASK stack guard page was hit at ....
    Oops: stack guard page: 0000 [#1] PREEMPT SMP KASAN
    CPU: 4 PID: 1539 Comm: nft Not tainted 6.10.0-rc5+ #1
    [..]
    
    with a suitable ruleset during validation of register stores.
    
    I can't see any actual reason to attempt to check for this from
    nft_validate_register_store(), at this point the transaction is still in
    progress, so we don't have a full picture of the rule graph.
    
    For nf-next it might make sense to either remove it or make this depend
    on table->validate_state in case we could catch an error earlier
    (for improved error reporting to userspace).
    
    Fixes: 20a69341f2d0 ("netfilter: nf_tables: add netlink set API")
    Signed-off-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: nf_tables: set element extended ACK reporting support [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Mon Aug 12 12:29:23 2024 +0200

    netfilter: nf_tables: set element extended ACK reporting support
    
    commit b53c116642502b0c85ecef78bff4f826a7dd4145 upstream.
    
    Report the element that causes problems via netlink extended ACK for set
    element commands.
    
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

netfilter: nf_tables: use timestamp to check for set element timeout [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Mon Aug 12 12:29:24 2024 +0200

    netfilter: nf_tables: use timestamp to check for set element timeout
    
    commit 7395dfacfff65e9938ac0889dafa1ab01e987d15 upstream
    
    Add a timestamp field at the beginning of the transaction, store it
    in the nftables per-netns area.
    
    Update set backend .insert, .deactivate and sync gc path to use the
    timestamp, this avoids that an element expires while control plane
    transaction is still unfinished.
    
    .lookup and .update, which are used from packet path, still use the
    current time to check if the element has expired. And .get path and dump
    also since this runs lockless under rcu read size lock. Then, there is
    async gc which also needs to check the current time since it runs
    asynchronously from a workqueue.
    
    [ NB: rbtree GC updates has been excluded because GC is asynchronous. ]
    
    Fixes: c3e1b005ed1c ("netfilter: nf_tables: add set element timeout support")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nilfs2: avoid undefined behavior in nilfs_cnt32_ge macro [+ + +]
Author: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Date:   Wed Jul 3 03:35:12 2024 +0900

    nilfs2: avoid undefined behavior in nilfs_cnt32_ge macro
    
    [ Upstream commit 0f3819e8c483771a59cf9d3190cd68a7a990083c ]
    
    According to the C standard 3.4.3p3, the result of signed integer overflow
    is undefined.  The macro nilfs_cnt32_ge(), which compares two sequence
    numbers, uses signed integer subtraction that can overflow, and therefore
    the result of the calculation may differ from what is expected due to
    undefined behavior in different environments.
    
    Similar to an earlier change to the jiffies-related comparison macros in
    commit 5a581b367b5d ("jiffies: Avoid undefined behavior from signed
    overflow"), avoid this potential issue by changing the definition of the
    macro to perform the subtraction as unsigned integers, then cast the
    result to a signed integer for comparison.
    
    Link: https://lkml.kernel.org/r/20130727225828.GA11864@linux.vnet.ibm.com
    Link: https://lkml.kernel.org/r/20240702183512.6390-1-konishi.ryusuke@gmail.com
    Fixes: 9ff05123e3bf ("nilfs2: segment constructor")
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nilfs2: handle inconsistent state in nilfs_btnode_create_block() [+ + +]
Author: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Date:   Thu Jul 25 14:20:07 2024 +0900

    nilfs2: handle inconsistent state in nilfs_btnode_create_block()
    
    commit 4811f7af6090e8f5a398fbdd766f903ef6c0d787 upstream.
    
    Syzbot reported that a buffer state inconsistency was detected in
    nilfs_btnode_create_block(), triggering a kernel bug.
    
    It is not appropriate to treat this inconsistency as a bug; it can occur
    if the argument block address (the buffer index of the newly created
    block) is a virtual block number and has been reallocated due to
    corruption of the bitmap used to manage its allocation state.
    
    So, modify nilfs_btnode_create_block() and its callers to treat it as a
    possible filesystem error, rather than triggering a kernel bug.
    
    Link: https://lkml.kernel.org/r/20240725052007.4562-1-konishi.ryusuke@gmail.com
    Fixes: a60be987d45d ("nilfs2: B-tree node cache")
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Reported-by: syzbot+89cc4f2324ed37988b60@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=89cc4f2324ed37988b60
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ntp: Clamp maxerror and esterror to operating range [+ + +]
Author: Justin Stitt <justinstitt@google.com>
Date:   Fri May 17 20:22:44 2024 +0000

    ntp: Clamp maxerror and esterror to operating range
    
    [ Upstream commit 87d571d6fb77ec342a985afa8744bb9bb75b3622 ]
    
    Using syzkaller alongside the newly reintroduced signed integer overflow
    sanitizer spits out this report:
    
    UBSAN: signed-integer-overflow in ../kernel/time/ntp.c:461:16
    9223372036854775807 + 500 cannot be represented in type 'long'
    Call Trace:
     handle_overflow+0x171/0x1b0
     second_overflow+0x2d6/0x500
     accumulate_nsecs_to_secs+0x60/0x160
     timekeeping_advance+0x1fe/0x890
     update_wall_time+0x10/0x30
    
    time_maxerror is unconditionally incremented and the result is checked
    against NTP_PHASE_LIMIT, but the increment itself can overflow, resulting
    in wrap-around to negative space.
    
    Before commit eea83d896e31 ("ntp: NTP4 user space bits update") the user
    supplied value was sanity checked to be in the operating range. That change
    removed the sanity check and relied on clamping in handle_overflow() which
    does not work correctly when the user supplied value is in the overflow
    zone of the '+ 500' operation.
    
    The operation requires CAP_SYS_TIME and the side effect of the overflow is
    NTP getting out of sync.
    
    Miroslav confirmed that the input value should be clamped to the operating
    range and the same applies to time_esterror. The latter is not used by the
    kernel, but the value still should be in the operating range as it was
    before the sanity check got removed.
    
    Clamp them to the operating range.
    
    [ tglx: Changed it to clamping and included time_esterror ]
    
    Fixes: eea83d896e31 ("ntp: NTP4 user space bits update")
    Signed-off-by: Justin Stitt <justinstitt@google.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Miroslav Lichvar <mlichvar@redhat.com>
    Link: https://lore.kernel.org/all/20240517-b4-sio-ntp-usec-v2-1-d539180f2b79@google.com
    Closes: https://github.com/KSPP/linux/issues/354
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    [ cast things to __kernel_long_t to fix compiler warnings - gregkh ]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ntp: Safeguard against time_constant overflow [+ + +]
Author: Justin Stitt <justinstitt@google.com>
Date:   Fri May 17 00:47:10 2024 +0000

    ntp: Safeguard against time_constant overflow
    
    commit 06c03c8edce333b9ad9c6b207d93d3a5ae7c10c0 upstream.
    
    Using syzkaller with the recently reintroduced signed integer overflow
    sanitizer produces this UBSAN report:
    
    UBSAN: signed-integer-overflow in ../kernel/time/ntp.c:738:18
    9223372036854775806 + 4 cannot be represented in type 'long'
    Call Trace:
     handle_overflow+0x171/0x1b0
     __do_adjtimex+0x1236/0x1440
     do_adjtimex+0x2be/0x740
    
    The user supplied time_constant value is incremented by four and then
    clamped to the operating range.
    
    Before commit eea83d896e31 ("ntp: NTP4 user space bits update") the user
    supplied value was sanity checked to be in the operating range. That change
    removed the sanity check and relied on clamping after incrementing which
    does not work correctly when the user supplied value is in the overflow
    zone of the '+ 4' operation.
    
    The operation requires CAP_SYS_TIME and the side effect of the overflow is
    NTP getting out of sync.
    
    Similar to the fixups for time_maxerror and time_esterror, clamp the user
    space supplied value to the operating range.
    
    [ tglx: Switch to clamping ]
    
    Fixes: eea83d896e31 ("ntp: NTP4 user space bits update")
    Signed-off-by: Justin Stitt <justinstitt@google.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Miroslav Lichvar <mlichvar@redhat.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/all/20240517-b4-sio-ntp-c-v2-1-f3a80096f36f@google.com
    Closes: https://github.com/KSPP/linux/issues/352
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nvme/pci: Add APST quirk for Lenovo N60z laptop [+ + +]
Author: WangYuli <wangyuli@uniontech.com>
Date:   Mon Jul 15 17:31:44 2024 +0800

    nvme/pci: Add APST quirk for Lenovo N60z laptop
    
    commit ab091ec536cb7b271983c0c063b17f62f3591583 upstream.
    
    There is a hardware power-saving problem with the Lenovo N60z
    board. When turn it on and leave it for 10 hours, there is a
    20% chance that a nvme disk will not wake up until reboot.
    
    Link: https://lore.kernel.org/all/2B5581C46AC6E335+9c7a81f1-05fb-4fd0-9fbb-108757c21628@uniontech.com
    Signed-off-by: hmy <huanglin@uniontech.com>
    Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
    Signed-off-by: WangYuli <wangyuli@uniontech.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
parport: Convert printk(KERN_ to pr_( [+ + +]
Author: Joe Perches <joe@perches.com>
Date:   Fri Apr 3 14:43:16 2020 +0100

    parport: Convert printk(KERN_<LEVEL> to pr_<level>(
    
    [ Upstream commit decf26f6ec25dac868782dc1751623a87d147831 ]
    
    Use the more common kernel style.
    
    Miscellanea:
    
    o Coalesce formats
    o Realign arguments
    
    Signed-off-by: Joe Perches <joe@perches.com>
    Reviewed-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Link: https://lore.kernel.org/r/20200403134325.11523-2-sudipm.mukherjee@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: ab11dac93d2d ("dev/parport: fix the array out-of-bounds risk")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

parport: parport_pc: Mark expected switch fall-through [+ + +]
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Sun Nov 25 21:48:45 2018 +0000

    parport: parport_pc: Mark expected switch fall-through
    
    [ Upstream commit aa1f0fa374ed23528b915a693a11b0f275a299c0 ]
    
    In preparation to enabling -Wimplicit-fallthrough, mark switch cases
    where we are expecting to fall through.
    
    Addresses-Coverity-ID: 114730 ("Missing break in switch")
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: ab11dac93d2d ("dev/parport: fix the array out-of-bounds risk")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

parport: Standardize use of printmode [+ + +]
Author: Joe Perches <joe@perches.com>
Date:   Fri Apr 3 14:43:22 2020 +0100

    parport: Standardize use of printmode
    
    [ Upstream commit a6abfdff4fe5dd19d1f1b37d72ba34cd4492fd4d ]
    
    Standardize the define and the uses of printmode.
    
    Miscellanea:
    
    o Add missing statement termination ; where necessary
    
    Signed-off-by: Joe Perches <joe@perches.com>
    Reviewed-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Link: https://lore.kernel.org/r/20200403134325.11523-8-sudipm.mukherjee@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: ab11dac93d2d ("dev/parport: fix the array out-of-bounds risk")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PCI: Add Edimax Vendor ID to pci_ids.h [+ + +]
Author: FUJITA Tomonori <fujita.tomonori@gmail.com>
Date:   Mon Jun 24 08:55:01 2024 +0900

    PCI: Add Edimax Vendor ID to pci_ids.h
    
    [ Upstream commit eee5528890d54b22b46f833002355a5ee94c3bb4 ]
    
    Add the Edimax Vendor ID (0x1432) for an ethernet driver for Tehuti
    Networks TN40xx chips. This ID can be used for Realtek 8180 and Ralink
    rt28xx wireless drivers.
    
    Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Link: https://patch.msgid.link/20240623235507.108147-2-fujita.tomonori@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: Equalize hotplug memory and io for occupied and empty slots [+ + +]
Author: Jon Derrick <jonathan.derrick@intel.com>
Date:   Tue Sep 25 12:39:06 2018 -0600

    PCI: Equalize hotplug memory and io for occupied and empty slots
    
    [ Upstream commit de3ffa301142bf8802a7b0de17f9985acde5c223 ]
    
    Currently, a hotplug bridge will be given hpmemsize additional memory
    and hpiosize additional io if available, in order to satisfy any future
    hotplug allocation requirements.
    
    These calculations don't consider the current memory/io size of the
    hotplug bridge/slot, so hotplug bridges/slots which have downstream
    devices will be allocated their current allocation in addition to the
    hpmemsize value.
    
    This makes for possibly undesirable results with a mix of unoccupied and
    occupied slots (ex, with hpmemsize=2M):
    
      02:03.0 PCI bridge: <-- Occupied
              Memory behind bridge: d6200000-d64fffff [size=3M]
      02:04.0 PCI bridge: <-- Unoccupied
              Memory behind bridge: d6500000-d66fffff [size=2M]
    
    This change considers the current allocation size when using the
    hpmemsize/hpiosize parameters to make the reservations predictable for
    the mix of unoccupied and occupied slots:
    
      02:03.0 PCI bridge: <-- Occupied
              Memory behind bridge: d6200000-d63fffff [size=2M]
      02:04.0 PCI bridge: <-- Unoccupied
              Memory behind bridge: d6400000-d65fffff [size=2M]
    
    Signed-off-by: Jon Derrick <jonathan.derrick@intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Stable-dep-of: 903534fa7d30 ("PCI: Fix resource double counting on remove & rescan")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: Fix resource double counting on remove & rescan [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Tue May 7 13:25:16 2024 +0300

    PCI: Fix resource double counting on remove & rescan
    
    [ Upstream commit 903534fa7d30214d8ba840ab1cd9e917e0c88e41 ]
    
    pbus_size_mem() keeps the size of the optional resources in
    children_add_size. When calculating the PCI bridge window size,
    calculate_memsize() lower bounds size by old_size before adding
    children_add_size and performing the window size alignment. This
    results in double counting for the resources in children_add_size
    because old_size may be based on the previous size of the bridge
    window after it has already included children_add_size (that is,
    size1 in pbus_size_mem() from an earlier invocation of that
    function).
    
    As a result, on repeated remove of the bus & rescan cycles the resource
    size keeps increasing when children_add_size is non-zero as can be seen
    from this extract:
    
      iomem0:  23fffd00000-23fffdfffff : PCI Bus 0000:03    # 1MiB
      iomem1:  20000000000-200001fffff : PCI Bus 0000:03    # 2MiB
      iomem2:  20000000000-200002fffff : PCI Bus 0000:03    # 3MiB
      iomem3:  20000000000-200003fffff : PCI Bus 0000:03    # 4MiB
      iomem4:  20000000000-200004fffff : PCI Bus 0000:03    # 5MiB
    
    Solve the double counting by moving old_size check later in
    calculate_memsize() so that children_add_size is already accounted for.
    
    After the patch, the bridge window retains its size as expected:
    
      iomem0:  23fffd00000-23fffdfffff : PCI Bus 0000:03    # 1MiB
      iomem1:  20000000000-200000fffff : PCI Bus 0000:03    # 1MiB
      iomem2:  20000000000-200000fffff : PCI Bus 0000:03    # 1MiB
    
    Fixes: a4ac9fea016f ("PCI : Calculate right add_size")
    Link: https://lore.kernel.org/r/20240507102523.57320-2-ilpo.jarvinen@linux.intel.com
    Tested-by: Lidong Wang <lidong.wang@intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: hv: Return zero, not garbage, when reading PCI_INTERRUPT_PIN [+ + +]
Author: Wei Liu <wei.liu@kernel.org>
Date:   Mon Jul 1 20:26:05 2024 +0000

    PCI: hv: Return zero, not garbage, when reading PCI_INTERRUPT_PIN
    
    commit fea93a3e5d5e6a09eb153866d2ce60ea3287a70d upstream.
    
    The intent of the code snippet is to always return 0 for both
    PCI_INTERRUPT_LINE and PCI_INTERRUPT_PIN.
    
    The check misses PCI_INTERRUPT_PIN. This patch fixes that.
    
    This is discovered by this call in VFIO:
    
        pci_read_config_byte(vdev->pdev, PCI_INTERRUPT_PIN, &pin);
    
    The old code does not set *val to 0 because it misses the check for
    PCI_INTERRUPT_PIN. Garbage is returned in that case.
    
    Fixes: 4daace0d8ce8 ("PCI: hv: Add paravirtual PCI front-end for Microsoft Hyper-V VMs")
    Link: https://lore.kernel.org/linux-pci/20240701202606.129606-1-wei.liu@kernel.org
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
    Reviewed-by: Michael Kelley <mhklinux@outlook.com>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

PCI: rockchip: Make 'ep-gpios' DT property optional [+ + +]
Author: Chen-Yu Tsai <wens@csie.org>
Date:   Fri Jan 22 00:23:18 2021 +0800

    PCI: rockchip: Make 'ep-gpios' DT property optional
    
    [ Upstream commit 58adbfb3ebec460e8b58875c682bafd866808e80 ]
    
    The Rockchip PCIe controller DT binding clearly states that 'ep-gpios' is
    an optional property. And indeed there are boards that don't require it.
    
    Make the driver follow the binding by using devm_gpiod_get_optional()
    instead of devm_gpiod_get().
    
    [bhelgaas: tidy whitespace]
    Link: https://lore.kernel.org/r/20210121162321.4538-2-wens@kernel.org
    Fixes: e77f847df54c ("PCI: rockchip: Add Rockchip PCIe controller support")
    Fixes: 956cd99b35a8 ("PCI: rockchip: Separate common code from RC driver")
    Fixes: 964bac9455be ("PCI: rockchip: Split out rockchip_pcie_parse_dt() to parse DT")
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Stable-dep-of: 840b7a5edf88 ("PCI: rockchip: Use GPIOD_OUT_LOW flag while requesting ep_gpio")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: rockchip: Use GPIOD_OUT_LOW flag while requesting ep_gpio [+ + +]
Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Date:   Tue Apr 16 11:12:35 2024 +0530

    PCI: rockchip: Use GPIOD_OUT_LOW flag while requesting ep_gpio
    
    [ Upstream commit 840b7a5edf88fe678c60dee88a135647c0ea4375 ]
    
    Rockchip platforms use 'GPIO_ACTIVE_HIGH' flag in the devicetree definition
    for ep_gpio. This means, whatever the logical value set by the driver for
    the ep_gpio, physical line will output the same logic level.
    
    For instance,
    
      gpiod_set_value_cansleep(rockchip->ep_gpio, 0); --> Level low
      gpiod_set_value_cansleep(rockchip->ep_gpio, 1); --> Level high
    
    But while requesting the ep_gpio, GPIOD_OUT_HIGH flag is currently used.
    Now, this also causes the physical line to output 'high' creating trouble
    for endpoint devices during host reboot.
    
    When host reboot happens, the ep_gpio will initially output 'low' due to
    the GPIO getting reset to its POR value. Then during host controller probe,
    it will output 'high' due to GPIOD_OUT_HIGH flag. Then during
    rockchip_pcie_host_init_port(), it will first output 'low' and then 'high'
    indicating the completion of controller initialization.
    
    On the endpoint side, each output 'low' of ep_gpio is accounted for PERST#
    assert and 'high' for PERST# deassert. With the above mentioned flow during
    host reboot, endpoint will witness below state changes for PERST#:
    
      (1) PERST# assert - GPIO POR state
      (2) PERST# deassert - GPIOD_OUT_HIGH while requesting GPIO
      (3) PERST# assert - rockchip_pcie_host_init_port()
      (4) PERST# deassert - rockchip_pcie_host_init_port()
    
    Now the time interval between (2) and (3) is very short as both happen
    during the driver probe(), and this results in a race in the endpoint.
    Because, before completing the PERST# deassertion in (2), endpoint got
    another PERST# assert in (3).
    
    A proper way to fix this issue is to change the GPIOD_OUT_HIGH flag in (2)
    to GPIOD_OUT_LOW. Because the usual convention is to request the GPIO with
    a state corresponding to its 'initial/default' value and let the driver
    change the state of the GPIO when required.
    
    As per that, the ep_gpio should be requested with GPIOD_OUT_LOW as it
    corresponds to the POR value of '0' (PERST# assert in the endpoint). Then
    the driver can change the state of the ep_gpio later in
    rockchip_pcie_host_init_port() as per the initialization sequence.
    
    This fixes the firmware crash issue in Qcom based modems connected to
    Rockpro64 based board.
    
    Fixes: e77f847df54c ("PCI: rockchip: Add Rockchip PCIe controller support")
    Closes: https://lore.kernel.org/mhi/20240402045647.GG2933@thinkpad/
    Link: https://lore.kernel.org/linux-pci/20240416-pci-rockchip-perst-fix-v1-1-4800b1d4d954@linaro.org
    Reported-by: Slark Xiao <slark_xiao@163.com>
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Niklas Cassel <cassel@kernel.org>
    Cc: stable@vger.kernel.org      # v4.9
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf report: Fix condition in sort__sym_cmp() [+ + +]
Author: Namhyung Kim <namhyung@kernel.org>
Date:   Fri Jun 21 10:05:25 2024 -0700

    perf report: Fix condition in sort__sym_cmp()
    
    [ Upstream commit cb39d05e67dc24985ff9f5150e71040fa4d60ab8 ]
    
    It's expected that both hist entries are in the same hists when
    comparing two.  But the current code in the function checks one without
    dso sort key and other with the key.  This would make the condition true
    in any case.
    
    I guess the intention of the original commit was to add '!' for the
    right side too.  But as it should be the same, let's just remove it.
    
    Fixes: 69849fc5d2119 ("perf hists: Move sort__has_dso into struct perf_hpp_list")
    Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20240621170528.608772-2-namhyung@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf/x86/intel/pt: Export pt_cap_get() [+ + +]
Author: Chao Peng <chao.p.peng@linux.intel.com>
Date:   Wed Oct 24 16:05:06 2018 +0800

    perf/x86/intel/pt: Export pt_cap_get()
    
    [ Upstream commit f6d079ce867d679e4dffef5b3112c7634215fd88 ]
    
    pt_cap_get() is required by the upcoming PT support in KVM guests.
    
    Export it and move the capabilites enum to a global header.
    
    As a global functions, "pt_*" is already used for ptrace and
    other things, so it makes sense to use "intel_pt_*" as a prefix.
    
    Acked-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Chao Peng <chao.p.peng@linux.intel.com>
    Signed-off-by: Luwei Kang <luwei.kang@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Stable-dep-of: ad97196379d0 ("perf/x86/intel/pt: Fix a topa_entry base address calculation")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

perf/x86/intel/pt: Fix a topa_entry base address calculation [+ + +]
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Jun 24 23:10:56 2024 +0300

    perf/x86/intel/pt: Fix a topa_entry base address calculation
    
    [ Upstream commit ad97196379d0b8cb24ef3d5006978a6554e6467f ]
    
    topa_entry->base is a bit-field. Bit-fields are not promoted to a 64-bit
    type, even if the underlying type is 64-bit, and so, if necessary, must
    be cast to a larger type when calculations are done.
    
    Fix a topa_entry->base address calculation by adding a cast.
    
    Without the cast, the address was limited to 36-bits i.e. 64GiB.
    
    The address calculation is used on systems that do not support Multiple
    Entry ToPA (only Broadwell), and affects physical addresses on or above
    64GiB. Instead of writing to the correct address, the address comprising
    the first 36 bits would be written to.
    
    Intel PT snapshot and sampling modes are not affected.
    
    Fixes: 52ca9ced3f70 ("perf/x86/intel/pt: Add Intel PT PMU driver")
    Reported-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20240624201101.60186-3-adrian.hunter@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

perf/x86/intel/pt: Fix topa_entry base length [+ + +]
Author: Marco Cavenati <cavenati.marco@gmail.com>
Date:   Mon Jun 24 23:10:55 2024 +0300

    perf/x86/intel/pt: Fix topa_entry base length
    
    commit 5638bd722a44bbe97c1a7b3fae5b9efddb3e70ff upstream.
    
    topa_entry->base needs to store a pfn.  It obviously needs to be
    large enough to store the largest possible x86 pfn which is
    MAXPHYADDR-PAGE_SIZE (52-12).  So it is 4 bits too small.
    
    Increase the size of topa_entry->base from 36 bits to 40 bits.
    
    Note, systems where physical addresses can be 256TiB or more are affected.
    
    [ Adrian: Amend commit message as suggested by Dave Hansen ]
    
    Fixes: 52ca9ced3f70 ("perf/x86/intel/pt: Add Intel PT PMU driver")
    Signed-off-by: Marco Cavenati <cavenati.marco@gmail.com>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20240624201101.60186-2-adrian.hunter@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

perf/x86/intel/pt: Split ToPA metadata and page layout [+ + +]
Author: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Date:   Wed Aug 21 15:47:25 2019 +0300

    perf/x86/intel/pt: Split ToPA metadata and page layout
    
    [ Upstream commit 38bb8d77d0b932a0773b5de2ef42479409314f96 ]
    
    PT uses page sized ToPA tables, where the ToPA table resides at the bottom
    and its driver-specific metadata taking up a few words at the top of the
    page. The split is currently calculated manually and needs to be redone
    every time a field is added to or removed from the metadata structure.
    Also, the 32-bit version can be made smaller.
    
    By splitting the table and metadata into separate structures, we are making
    the compiler figure out the division of the page.
    
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: http://lkml.kernel.org/r/20190821124727.73310-5-alexander.shishkin@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Stable-dep-of: ad97196379d0 ("perf/x86/intel/pt: Fix a topa_entry base address calculation")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

perf/x86/intel/pt: Use helpers to obtain ToPA entry size [+ + +]
Author: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Date:   Wed Aug 21 15:47:23 2019 +0300

    perf/x86/intel/pt: Use helpers to obtain ToPA entry size
    
    [ Upstream commit fffec50f541ace292383c0cbe9a2a97d16d201c6 ]
    
    There are a few places in the PT driver that need to obtain the size of
    a ToPA entry, some of them for the current ToPA entry in the buffer.
    Use helpers for those, to make the lines shorter and more readable.
    
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: http://lkml.kernel.org/r/20190821124727.73310-3-alexander.shishkin@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Stable-dep-of: ad97196379d0 ("perf/x86/intel/pt: Fix a topa_entry base address calculation")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

perf/x86/intel/pt: Use pointer arithmetics instead in ToPA entry calculation [+ + +]
Author: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Date:   Wed Aug 21 15:47:24 2019 +0300

    perf/x86/intel/pt: Use pointer arithmetics instead in ToPA entry calculation
    
    [ Upstream commit 539f7c26b41d4ed7d88dd9756de3966ae7ca07b4 ]
    
    Currently, pt_buffer_reset_offsets() calculates the current ToPA entry by
    casting pointers to addresses and performing ungainly subtractions and
    divisions instead of a simpler pointer arithmetic, which would be perfectly
    applicable in that case. Fix that.
    
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: http://lkml.kernel.org/r/20190821124727.73310-4-alexander.shishkin@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Stable-dep-of: ad97196379d0 ("perf/x86/intel/pt: Fix a topa_entry base address calculation")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf: Fix perf_aux_size() for greater-than 32-bit size [+ + +]
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Jun 24 23:10:58 2024 +0300

    perf: Fix perf_aux_size() for greater-than 32-bit size
    
    [ Upstream commit 3df94a5b1078dfe2b0c03f027d018800faf44c82 ]
    
    perf_buffer->aux_nr_pages uses a 32-bit type, so a cast is needed to
    calculate a 64-bit size.
    
    Fixes: 45bfb2e50471 ("perf: Add AUX area to ring buffer for raw data streams")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20240624201101.60186-5-adrian.hunter@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

perf: Prevent passing zero nr_pages to rb_alloc_aux() [+ + +]
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Jun 24 23:10:59 2024 +0300

    perf: Prevent passing zero nr_pages to rb_alloc_aux()
    
    [ Upstream commit dbc48c8f41c208082cfa95e973560134489e3309 ]
    
    nr_pages is unsigned long but gets passed to rb_alloc_aux() as an int,
    and is stored as an int.
    
    Only power-of-2 values are accepted, so if nr_pages is a 64_bit value, it
    will be passed to rb_alloc_aux() as zero.
    
    That is not ideal because:
     1. the value is incorrect
     2. rb_alloc_aux() is at risk of misbehaving, although it manages to
     return -ENOMEM in that case, it is a result of passing zero to get_order()
     even though the get_order() result is documented to be undefined in that
     case.
    
    Fix by simply validating the maximum supported value in the first place.
    Use -ENOMEM error code for consistency with the current error code that
    is returned in that case.
    
    Fixes: 45bfb2e50471 ("perf: Add AUX area to ring buffer for raw data streams")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20240624201101.60186-6-adrian.hunter@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pinctrl: core: fix possible memory leak when pinctrl_enable() fails [+ + +]
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Thu Jun 6 10:37:02 2024 +0800

    pinctrl: core: fix possible memory leak when pinctrl_enable() fails
    
    [ Upstream commit ae1cf4759972c5fe665ee4c5e0c29de66fe3cf4a ]
    
    In devm_pinctrl_register(), if pinctrl_enable() fails in pinctrl_register(),
    the "pctldev" has not been added to dev resources, so devm_pinctrl_dev_release()
    can not be called, it leads memory leak.
    
    Introduce pinctrl_uninit_controller(), call it in the error path to free memory.
    
    Fixes: 5038a66dad01 ("pinctrl: core: delete incorrect free in pinctrl_enable()")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/20240606023704.3931561-2-yangyingliang@huawei.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pinctrl: freescale: mxs: Fix refcount of child [+ + +]
Author: Peng Fan <peng.fan@nxp.com>
Date:   Sat May 4 21:20:16 2024 +0800

    pinctrl: freescale: mxs: Fix refcount of child
    
    [ Upstream commit 7f500f2011c0bbb6e1cacab74b4c99222e60248e ]
    
    of_get_next_child() will increase refcount of the returned node, need
    use of_node_put() on it when done.
    
    Per current implementation, 'child' will be override by
    for_each_child_of_node(np, child), so use of_get_child_count to avoid
    refcount leakage.
    
    Fixes: 17723111e64f ("pinctrl: add pinctrl-mxs support")
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Link: https://lore.kernel.org/20240504-pinctrl-cleanup-v2-18-26c5f2dc1181@nxp.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pinctrl: single: fix possible memory leak when pinctrl_enable() fails [+ + +]
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Thu Jun 6 10:37:03 2024 +0800

    pinctrl: single: fix possible memory leak when pinctrl_enable() fails
    
    [ Upstream commit 8f773bfbdd428819328a2d185976cfc6ae811cd3 ]
    
    This driver calls pinctrl_register_and_init() which is not
    devm_ managed, it will leads memory leak if pinctrl_enable()
    fails. Replace it with devm_pinctrl_register_and_init().
    And call pcs_free_resources() if pinctrl_enable() fails.
    
    Fixes: 5038a66dad01 ("pinctrl: core: delete incorrect free in pinctrl_enable()")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/20240606023704.3931561-3-yangyingliang@huawei.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pinctrl: ti: ti-iodelay: Drop if block with always false condition [+ + +]
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Mon Oct 9 10:38:39 2023 +0200

    pinctrl: ti: ti-iodelay: Drop if block with always false condition
    
    [ Upstream commit 88b3f108502bc45e6ebd005702add46759f3f45a ]
    
    ti_iodelay_remove() is only called after ti_iodelay_probe() completed
    successfully. In this case platform_set_drvdata() was called with a
    non-NULL argument and so platform_get_drvdata() won't return NULL.
    
    Simplify by removing the if block with the always false condition.
    
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Link: https://lore.kernel.org/r/20231009083856.222030-4-u.kleine-koenig@pengutronix.de
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Stable-dep-of: 9b401f4a7170 ("pinctrl: ti: ti-iodelay: fix possible memory leak when pinctrl_enable() fails")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pinctrl: ti: ti-iodelay: fix possible memory leak when pinctrl_enable() fails [+ + +]
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Thu Jun 6 10:37:04 2024 +0800

    pinctrl: ti: ti-iodelay: fix possible memory leak when pinctrl_enable() fails
    
    [ Upstream commit 9b401f4a7170125365160c9af267a41ff6b39001 ]
    
    This driver calls pinctrl_register_and_init() which is not
    devm_ managed, it will leads memory leak if pinctrl_enable()
    fails. Replace it with devm_pinctrl_register_and_init().
    And add missing of_node_put() in the error path.
    
    Fixes: 5038a66dad01 ("pinctrl: core: delete incorrect free in pinctrl_enable()")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/20240606023704.3931561-4-yangyingliang@huawei.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/chrome: cros_ec_debugfs: fix wrong EC message version [+ + +]
Author: Tzung-Bi Shih <tzungbi@kernel.org>
Date:   Tue Jun 11 11:31:10 2024 +0000

    platform/chrome: cros_ec_debugfs: fix wrong EC message version
    
    [ Upstream commit c2a28647bbb4e0894e8824362410f72b06ac57a4 ]
    
    ec_read_version_supported() uses ec_params_get_cmd_versions_v1 but it
    wrongly uses message version 0.
    
    Fix it.
    
    Fixes: e86264595225 ("mfd: cros_ec: add debugfs, console log file")
    Reviewed-by: Guenter Roeck <groeck@chromium.org>
    Link: https://lore.kernel.org/r/20240611113110.16955-1-tzungbi@kernel.org
    Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
 
platform: mips: cpu_hwmon: Disable driver on unsupported hardware [+ + +]
Author: Jiaxun Yang <jiaxun.yang@flygoat.com>
Date:   Fri Jun 14 16:40:15 2024 +0100

    platform: mips: cpu_hwmon: Disable driver on unsupported hardware
    
    commit f4d430db17b4ef4e9c3c352a04b2fe3c93011978 upstream.
    
    cpu_hwmon is unsupported on CPUs without loongson_chiptemp
    register and csr.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
power: supply: axp288_charger: Fix constant_charge_voltage writes [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Wed Jul 17 22:03:32 2024 +0200

    power: supply: axp288_charger: Fix constant_charge_voltage writes
    
    commit b34ce4a59cfe9cd0d6f870e6408e8ec88a964585 upstream.
    
    info->max_cv is in millivolts, divide the microvolt value being written
    to constant_charge_voltage by 1000 *before* clamping it to info->max_cv.
    
    Before this fix the code always tried to set constant_charge_voltage
    to max_cv / 1000 = 4 millivolt, which ends up in setting it to 4.1V
    which is the lowest supported value.
    
    Fixes: 843735b788a4 ("power: axp288_charger: axp288 charger driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20240717200333.56669-1-hdegoede@redhat.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

power: supply: axp288_charger: Round constant_charge_voltage writes down [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Wed Jul 17 22:03:33 2024 +0200

    power: supply: axp288_charger: Round constant_charge_voltage writes down
    
    commit 81af7f2342d162e24ac820c10e68684d9f927663 upstream.
    
    Round constant_charge_voltage writes down to the first supported lower
    value, rather then rounding them up to the first supported higher value.
    
    This fixes e.g. writing 4250000 resulting in a value of 4350000 which
    might be dangerous, instead writing 4250000 will now result in a safe
    4200000 value.
    
    Fixes: 843735b788a4 ("power: axp288_charger: axp288 charger driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20240717200333.56669-2-hdegoede@redhat.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
powerpc/xmon: Fix disassembly CPU feature checks [+ + +]
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Thu May 9 22:12:47 2024 +1000

    powerpc/xmon: Fix disassembly CPU feature checks
    
    [ Upstream commit 14196e47c5ffe32af7ed5a51c9e421c5ea5bccce ]
    
    In the xmon disassembly code there are several CPU feature checks to
    determine what dialects should be passed to the disassembler. The
    dialect controls which instructions the disassembler will recognise.
    
    Unfortunately the checks are incorrect, because instead of passing a
    single CPU feature they are passing a mask of feature bits.
    
    For example the code:
    
      if (cpu_has_feature(CPU_FTRS_POWER5))
          dialect |= PPC_OPCODE_POWER5;
    
    Is trying to check if the system is running on a Power5 CPU. But
    CPU_FTRS_POWER5 is a mask of *all* the feature bits that are enabled on
    a Power5.
    
    In practice the test will always return true for any 64-bit CPU, because
    at least one bit in the mask will be present in the CPU_FTRS_ALWAYS
    mask.
    
    Similarly for all the other checks against CPU_FTRS_xx masks.
    
    Rather than trying to match the disassembly behaviour exactly to the
    current CPU, just differentiate between 32-bit and 64-bit, and Altivec,
    VSX and HTM.
    
    That will cause some instructions to be shown in disassembly even
    on a CPU that doesn't support them, but that's OK, objdump -d output
    has the same behaviour, and if anything it's less confusing than some
    instructions not being disassembled.
    
    Fixes: 897f112bb42e ("[POWERPC] Import updated version of ppc disassembly code for xmon")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240509121248.270878-2-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: protect the fetch of ->fd[fd] in do_dup2() from mispredictions [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Aug 1 15:22:22 2024 -0400

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

 
pwm: stm32: Always do lazy disabling [+ + +]
Author: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Date:   Wed Jul 3 13:00:06 2024 +0200

    pwm: stm32: Always do lazy disabling
    
    [ Upstream commit 7346e7a058a2c9aa9ff1cc699c7bf18a402d9f84 ]
    
    When the state changes from enabled to disabled, polarity, duty_cycle
    and period are not configured in hardware and TIM_CCER_CCxE is just
    cleared. However if the state changes from one disabled state to
    another, all parameters are written to hardware because the early exit
    from stm32_pwm_apply() is only taken if the pwm is currently enabled.
    
    This yields surprises like: Applying
    
            { .period = 1, .duty_cycle = 0, .enabled = false }
    
    succeeds if the pwm is initially on, but fails if it's already off
    because 1 is a too small period.
    
    Update the check for lazy disable to always exit early if the target
    state is disabled, no matter what is currently configured.
    
    Fixes: 7edf7369205b ("pwm: Add driver for STM32 plaftorm")
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
    Link: https://lore.kernel.org/r/20240703110010.672654-2-u.kleine-koenig@baylibre.com
    Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/iwcm: Fix a use-after-free related to destroying CM IDs [+ + +]
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Wed Jun 5 08:51:01 2024 -0600

    RDMA/iwcm: Fix a use-after-free related to destroying CM IDs
    
    commit aee2424246f9f1dadc33faa78990c1e2eb7826e4 upstream.
    
    iw_conn_req_handler() associates a new struct rdma_id_private (conn_id) with
    an existing struct iw_cm_id (cm_id) as follows:
    
            conn_id->cm_id.iw = cm_id;
            cm_id->context = conn_id;
            cm_id->cm_handler = cma_iw_handler;
    
    rdma_destroy_id() frees both the cm_id and the struct rdma_id_private. Make
    sure that cm_work_handler() does not trigger a use-after-free by only
    freeing of the struct rdma_id_private after all pending work has finished.
    
    Cc: stable@vger.kernel.org
    Fixes: 59c68ac31e15 ("iw_cm: free cm_id resources on the last deref")
    Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
    Tested-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Link: https://lore.kernel.org/r/20240605145117.397751-6-bvanassche@acm.org
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
RDMA/mlx4: Fix truncated output warning in alias_GUID.c [+ + +]
Author: Leon Romanovsky <leon@kernel.org>
Date:   Sun Jun 16 19:17:30 2024 +0300

    RDMA/mlx4: Fix truncated output warning in alias_GUID.c
    
    [ Upstream commit 5953e0647cec703ef436ead37fed48943507b433 ]
    
    drivers/infiniband/hw/mlx4/alias_GUID.c: In function ‘mlx4_ib_init_alias_guid_service’:
    drivers/infiniband/hw/mlx4/alias_GUID.c:878:74: error: ‘%d’ directive
    output may be truncated writing between 1 and 11 bytes into a region of
    size 5 [-Werror=format-truncation=]
      878 |                 snprintf(alias_wq_name, sizeof alias_wq_name, "alias_guid%d", i);
          |                                                                          ^~
    drivers/infiniband/hw/mlx4/alias_GUID.c:878:63: note: directive argument in the range [-2147483641, 2147483646]
      878 |                 snprintf(alias_wq_name, sizeof alias_wq_name, "alias_guid%d", i);
          |                                                               ^~~~~~~~~~~~~~
    drivers/infiniband/hw/mlx4/alias_GUID.c:878:17: note: ‘snprintf’ output
    between 12 and 22 bytes into a destination of size 15
      878 |                 snprintf(alias_wq_name, sizeof alias_wq_name, "alias_guid%d", i);
          |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cc1: all warnings being treated as errors
    
    Fixes: a0c64a17aba8 ("mlx4: Add alias_guid mechanism")
    Link: https://lore.kernel.org/r/1951c9500109ca7e36dcd523f8a5f2d0d2a608d1.1718554641.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/mlx4: Fix truncated output warning in mad.c [+ + +]
Author: Leon Romanovsky <leon@kernel.org>
Date:   Sun Jun 16 19:16:33 2024 +0300

    RDMA/mlx4: Fix truncated output warning in mad.c
    
    [ Upstream commit 0d2e6992fc956e3308cd5376c18567def4cb3967 ]
    
    Increase size of the name array to avoid truncated output warning.
    
    drivers/infiniband/hw/mlx4/mad.c: In function ‘mlx4_ib_alloc_demux_ctx’:
    drivers/infiniband/hw/mlx4/mad.c:2197:47: error: ‘%d’ directive output
    may be truncated writing between 1 and 11 bytes into a region of size 4
    [-Werror=format-truncation=]
     2197 |         snprintf(name, sizeof(name), "mlx4_ibt%d", port);
          |                                               ^~
    drivers/infiniband/hw/mlx4/mad.c:2197:38: note: directive argument in
    the range [-2147483645, 2147483647]
     2197 |         snprintf(name, sizeof(name), "mlx4_ibt%d", port);
          |                                      ^~~~~~~~~~~~
    drivers/infiniband/hw/mlx4/mad.c:2197:9: note: ‘snprintf’ output between
    10 and 20 bytes into a destination of size 12
     2197 |         snprintf(name, sizeof(name), "mlx4_ibt%d", port);
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/infiniband/hw/mlx4/mad.c:2205:48: error: ‘%d’ directive output
    may be truncated writing between 1 and 11 bytes into a region of size 3
    [-Werror=format-truncation=]
     2205 |         snprintf(name, sizeof(name), "mlx4_ibwi%d", port);
          |                                                ^~
    drivers/infiniband/hw/mlx4/mad.c:2205:38: note: directive argument in
    the range [-2147483645, 2147483647]
     2205 |         snprintf(name, sizeof(name), "mlx4_ibwi%d", port);
          |                                      ^~~~~~~~~~~~~
    drivers/infiniband/hw/mlx4/mad.c:2205:9: note: ‘snprintf’ output between
    11 and 21 bytes into a destination of size 12
     2205 |         snprintf(name, sizeof(name), "mlx4_ibwi%d", port);
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/infiniband/hw/mlx4/mad.c:2213:48: error: ‘%d’ directive output
    may be truncated writing between 1 and 11 bytes into a region of size 3
    [-Werror=format-truncation=]
     2213 |         snprintf(name, sizeof(name), "mlx4_ibud%d", port);
          |                                                ^~
    drivers/infiniband/hw/mlx4/mad.c:2213:38: note: directive argument in
    the range [-2147483645, 2147483647]
     2213 |         snprintf(name, sizeof(name), "mlx4_ibud%d", port);
          |                                      ^~~~~~~~~~~~~
    drivers/infiniband/hw/mlx4/mad.c:2213:9: note: ‘snprintf’ output between
    11 and 21 bytes into a destination of size 12
     2213 |         snprintf(name, sizeof(name), "mlx4_ibud%d", port);
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cc1: all warnings being treated as errors
    make[6]: *** [scripts/Makefile.build:244: drivers/infiniband/hw/mlx4/mad.o] Error 1
    
    Fixes: fc06573dfaf8 ("IB/mlx4: Initialize SR-IOV IB support for slaves in master context")
    Link: https://lore.kernel.org/r/f3798b3ce9a410257d7e1ec7c9e285f1352e256a.1718554569.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/rxe: Don't set BTH_ACK_MASK for UC or UD QPs [+ + +]
Author: Honggang LI <honggangli@163.com>
Date:   Mon Jun 24 10:03:48 2024 +0800

    RDMA/rxe: Don't set BTH_ACK_MASK for UC or UD QPs
    
    [ Upstream commit 4adcaf969d77d3d3aa3871bbadc196258a38aec6 ]
    
    BTH_ACK_MASK bit is used to indicate that an acknowledge
    (for this packet) should be scheduled by the responder.
    Both UC and UD QPs are unacknowledged, so don't set
    BTH_ACK_MASK for UC or UD QPs.
    
    Fixes: 8700e3e7c485 ("Soft RoCE driver")
    Signed-off-by: Honggang LI <honggangli@163.com>
    Link: https://lore.kernel.org/r/20240624020348.494338-1-honggangli@163.com
    Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
remoteproc: imx_rproc: Fix ignoring mapping vdev regions [+ + +]
Author: Dong Aisheng <aisheng.dong@nxp.com>
Date:   Fri Sep 10 17:06:19 2021 +0800

    remoteproc: imx_rproc: Fix ignoring mapping vdev regions
    
    [ Upstream commit afe670e23af91d8a74a8d7049f6e0984bbf6ea11 ]
    
    vdev regions are typically named vdev0buffer, vdev0ring0, vdev0ring1 and
    etc. Change to strncmp to cover them all.
    
    Fixes: 8f2d8961640f ("remoteproc: imx_rproc: ignore mapping vdev regions")
    Reviewed-and-tested-by: Peng Fan <peng.fan@nxp.com>
    Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210910090621.3073540-5-peng.fan@oss.nxp.com
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Stable-dep-of: 2fa26ca8b786 ("remoteproc: imx_rproc: Skip over memory region when node value is NULL")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

remoteproc: imx_rproc: ignore mapping vdev regions [+ + +]
Author: Peng Fan <peng.fan@nxp.com>
Date:   Sat Mar 6 19:24:24 2021 +0800

    remoteproc: imx_rproc: ignore mapping vdev regions
    
    [ Upstream commit 8f2d8961640f0346cbe892273c3260a0d30c1931 ]
    
    vdev regions are vdev0vring0, vdev0vring1, vdevbuffer and similar.
    They are handled by remoteproc common code, no need to map in imx
    rproc driver.
    
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Link: https://lore.kernel.org/r/1615029865-23312-10-git-send-email-peng.fan@oss.nxp.com
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Stable-dep-of: 2fa26ca8b786 ("remoteproc: imx_rproc: Skip over memory region when node value is NULL")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

remoteproc: imx_rproc: Skip over memory region when node value is NULL [+ + +]
Author: Aleksandr Mishin <amishin@t-argos.ru>
Date:   Thu Jun 6 10:52:04 2024 +0300

    remoteproc: imx_rproc: Skip over memory region when node value is NULL
    
    [ Upstream commit 2fa26ca8b786888673689ccc9da6094150939982 ]
    
    In imx_rproc_addr_init() "nph = of_count_phandle_with_args()" just counts
    number of phandles. But phandles may be empty. So of_parse_phandle() in
    the parsing loop (0 < a < nph) may return NULL which is later dereferenced.
    Adjust this issue by adding NULL-return check.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: a0ff4aa6f010 ("remoteproc: imx_rproc: add a NXP/Freescale imx_rproc driver")
    Signed-off-by: Aleksandr Mishin <amishin@t-argos.ru>
    Reviewed-by: Peng Fan <peng.fan@nxp.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20240606075204.12354-1-amishin@t-argos.ru
    [Fixed title to fit within the prescribed 70-75 charcters]
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rtc: cmos: Fix return value of nvmem callbacks [+ + +]
Author: Joy Chakraborty <joychakr@google.com>
Date:   Wed Jun 12 08:36:35 2024 +0000

    rtc: cmos: Fix return value of nvmem callbacks
    
    commit 1c184baccf0d5e2ef4cc1562261d0e48508a1c2b upstream.
    
    Read/write callbacks registered with nvmem core expect 0 to be returned
    on success and a negative value to be returned on failure.
    
    cmos_nvram_read()/cmos_nvram_write() currently return the number of
    bytes read or written, fix to return 0 on success and -EIO incase number
    of bytes requested was not read or written.
    
    Fixes: 8b5b7958fd1c ("rtc: cmos: use generic nvmem")
    Cc: stable@vger.kernel.org
    Signed-off-by: Joy Chakraborty <joychakr@google.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/20240612083635.1253039-1-joychakr@google.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
s390/sclp: Prevent release of buffer in I/O [+ + +]
Author: Peter Oberparleiter <oberpar@linux.ibm.com>
Date:   Thu Jun 20 14:20:27 2024 +0200

    s390/sclp: Prevent release of buffer in I/O
    
    [ Upstream commit bf365071ea92b9579d5a272679b74052a5643e35 ]
    
    When a task waiting for completion of a Store Data operation is
    interrupted, an attempt is made to halt this operation. If this attempt
    fails due to a hardware or firmware problem, there is a chance that the
    SCLP facility might store data into buffers referenced by the original
    operation at a later time.
    
    Handle this situation by not releasing the referenced data buffers if
    the halt attempt fails. For current use cases, this might result in a
    leak of few pages of memory in case of a rare hardware/firmware
    malfunction.
    
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
saa7134: Unchecked i2c_transfer function result fixed [+ + +]
Author: Aleksandr Burakov <a.burakov@rosalinux.ru>
Date:   Fri Feb 16 15:40:06 2024 +0300

    saa7134: Unchecked i2c_transfer function result fixed
    
    [ Upstream commit 9d8683b3fd93f0e378f24dc3d9604e5d7d3e0a17 ]
    
    Return value of function 'i2c_transfer' is not checked that
    may cause undefined behaviour.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 2cf36ac44730 ("[PATCH] v4l: 656: added support for the following cards")
    Signed-off-by: Aleksandr Burakov <a.burakov@rosalinux.ru>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scsi: qla2xxx: During vport delete send async logout explicitly [+ + +]
Author: Manish Rangankar <mrangankar@marvell.com>
Date:   Wed Jul 10 22:40:53 2024 +0530

    scsi: qla2xxx: During vport delete send async logout explicitly
    
    commit 76f480d7c717368f29a3870f7d64471ce0ff8fb2 upstream.
    
    During vport delete, it is observed that during unload we hit a crash
    because of stale entries in outstanding command array.  For all these stale
    I/O entries, eh_abort was issued and aborted (fast_fail_io = 2009h) but
    I/Os could not complete while vport delete is in process of deleting.
    
      BUG: kernel NULL pointer dereference, address: 000000000000001c
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      PGD 0 P4D 0
      Oops: 0000 [#1] PREEMPT SMP NOPTI
      Workqueue: qla2xxx_wq qla_do_work [qla2xxx]
      RIP: 0010:dma_direct_unmap_sg+0x51/0x1e0
      RSP: 0018:ffffa1e1e150fc68 EFLAGS: 00010046
      RAX: 0000000000000000 RBX: 0000000000000021 RCX: 0000000000000001
      RDX: 0000000000000021 RSI: 0000000000000000 RDI: ffff8ce208a7a0d0
      RBP: ffff8ce208a7a0d0 R08: 0000000000000000 R09: ffff8ce378aac9c8
      R10: ffff8ce378aac8a0 R11: ffffa1e1e150f9d8 R12: 0000000000000000
      R13: 0000000000000000 R14: ffff8ce378aac9c8 R15: 0000000000000000
      FS:  0000000000000000(0000) GS:ffff8d217f000000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 000000000000001c CR3: 0000002089acc000 CR4: 0000000000350ee0
      Call Trace:
      <TASK>
      qla2xxx_qpair_sp_free_dma+0x417/0x4e0
      ? qla2xxx_qpair_sp_compl+0x10d/0x1a0
      ? qla2x00_status_entry+0x768/0x2830
      ? newidle_balance+0x2f0/0x430
      ? dequeue_entity+0x100/0x3c0
      ? qla24xx_process_response_queue+0x6a1/0x19e0
      ? __schedule+0x2d5/0x1140
      ? qla_do_work+0x47/0x60
      ? process_one_work+0x267/0x440
      ? process_one_work+0x440/0x440
      ? worker_thread+0x2d/0x3d0
      ? process_one_work+0x440/0x440
      ? kthread+0x156/0x180
      ? set_kthread_struct+0x50/0x50
      ? ret_from_fork+0x22/0x30
      </TASK>
    
    Send out async logout explicitly for all the ports during vport delete.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Link: https://lore.kernel.org/r/20240710171057.35066-8-njavali@marvell.com
    Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scsi: qla2xxx: Return ENOBUFS if sg_cnt is more than one for ELS cmds [+ + +]
Author: Saurav Kashyap <skashyap@marvell.com>
Date:   Wed Jul 10 22:40:50 2024 +0530

    scsi: qla2xxx: Return ENOBUFS if sg_cnt is more than one for ELS cmds
    
    commit ce2065c4cc4f05635413f63f6dc038d7d4842e31 upstream.
    
    Firmware only supports single DSDs in ELS Pass-through IOCB (0x53h), sg cnt
    is decided by the SCSI ML. User is not aware of the cause of an acutal
    error.
    
    Return the appropriate return code that will be decoded by API and
    application and proper error message will be displayed to user.
    
    Fixes: 6e98016ca077 ("[SCSI] qla2xxx: Re-organized BSG interface specific code.")
    Cc: stable@vger.kernel.org
    Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Link: https://lore.kernel.org/r/20240710171057.35066-5-njavali@marvell.com
    Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scsi: qla2xxx: validate nvme_local_port correctly [+ + +]
Author: Nilesh Javali <njavali@marvell.com>
Date:   Wed Jul 10 22:40:48 2024 +0530

    scsi: qla2xxx: validate nvme_local_port correctly
    
    commit eb1d4ce2609584eeb7694866f34d4b213caa3af9 upstream.
    
    The driver load failed with error message,
    
    qla2xxx [0000:04:00.0]-ffff:0: register_localport failed: ret=ffffffef
    
    and with a kernel crash,
    
            BUG: unable to handle kernel NULL pointer dereference at 0000000000000070
            Workqueue: events_unbound qla_register_fcport_fn [qla2xxx]
            RIP: 0010:nvme_fc_register_remoteport+0x16/0x430 [nvme_fc]
            RSP: 0018:ffffaaa040eb3d98 EFLAGS: 00010282
            RAX: 0000000000000000 RBX: ffff9dfb46b78c00 RCX: 0000000000000000
            RDX: ffff9dfb46b78da8 RSI: ffffaaa040eb3e08 RDI: 0000000000000000
            RBP: ffff9dfb612a0a58 R08: ffffffffaf1d6270 R09: 3a34303a30303030
            R10: 34303a303030305b R11: 2078787832616c71 R12: ffff9dfb46b78dd4
            R13: ffff9dfb46b78c24 R14: ffff9dfb41525300 R15: ffff9dfb46b78da8
            FS:  0000000000000000(0000) GS:ffff9dfc67c00000(0000) knlGS:0000000000000000
            CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
            CR2: 0000000000000070 CR3: 000000018da10004 CR4: 00000000000206f0
            Call Trace:
            qla_nvme_register_remote+0xeb/0x1f0 [qla2xxx]
            ? qla2x00_dfs_create_rport+0x231/0x270 [qla2xxx]
            qla2x00_update_fcport+0x2a1/0x3c0 [qla2xxx]
            qla_register_fcport_fn+0x54/0xc0 [qla2xxx]
    
    Exit the qla_nvme_register_remote() function when qla_nvme_register_hba()
    fails and correctly validate nvme_local_port.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Link: https://lore.kernel.org/r/20240710171057.35066-3-njavali@marvell.com
    Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scsi: ufs: core: Fix hba->last_dme_cmd_tstamp timestamp updating logic [+ + +]
Author: Vamshi Gajjela <vamshigajjela@google.com>
Date:   Wed Jul 24 19:21:26 2024 +0530

    scsi: ufs: core: Fix hba->last_dme_cmd_tstamp timestamp updating logic
    
    commit ab9fd06cb8f0db0854291833fc40c789e43a361f upstream.
    
    The ufshcd_add_delay_before_dme_cmd() always introduces a delay of
    MIN_DELAY_BEFORE_DME_CMDS_US between DME commands even when it's not
    required. The delay is added when the UFS host controller supplies the
    quirk UFSHCD_QUIRK_DELAY_BEFORE_DME_CMDS.
    
    Fix the logic to update hba->last_dme_cmd_tstamp to ensure subsequent DME
    commands have the correct delay in the range of 0 to
    MIN_DELAY_BEFORE_DME_CMDS_US.
    
    Update the timestamp at the end of the function to ensure it captures the
    latest time after any necessary delay has been applied.
    
    Signed-off-by: Vamshi Gajjela <vamshigajjela@google.com>
    Link: https://lore.kernel.org/r/20240724135126.1786126-1-vamshigajjela@google.com
    Fixes: cad2e03d8607 ("ufs: add support to allow non standard behaviours (quirks)")
    Cc: stable@vger.kernel.org
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
selftests/bpf: Check length of recv in test_sockmap [+ + +]
Author: Geliang Tang <geliang@kernel.org>
Date:   Thu May 23 14:50:03 2024 +0800

    selftests/bpf: Check length of recv in test_sockmap
    
    [ Upstream commit de1b5ea789dc28066cc8dc634b6825bd6148f38b ]
    
    The value of recv in msg_loop may be negative, like EWOULDBLOCK, so it's
    necessary to check if it is positive before accumulating it to bytes_recvd.
    
    Fixes: 16962b2404ac ("bpf: sockmap, add selftests")
    Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Tested-by: Jakub Sitnicki <jakub@cloudflare.com>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Link: https://lore.kernel.org/bpf/5172563f7c7b2a2e953cef02e89fc34664a7b190.1716446893.git.tanggeliang@kylinos.cn
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/sigaltstack: Fix ppc64 GCC build [+ + +]
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Mon May 20 16:26:47 2024 +1000

    selftests/sigaltstack: Fix ppc64 GCC build
    
    commit 17c743b9da9e0d073ff19fd5313f521744514939 upstream.
    
    Building the sigaltstack test with GCC on 64-bit powerpc errors with:
    
      gcc -Wall     sas.c  -o /home/michael/linux/.build/kselftest/sigaltstack/sas
      In file included from sas.c:23:
      current_stack_pointer.h:22:2: error: #error "implement current_stack_pointer equivalent"
         22 | #error "implement current_stack_pointer equivalent"
            |  ^~~~~
      sas.c: In function ‘my_usr1’:
      sas.c:50:13: error: ‘sp’ undeclared (first use in this function); did you mean ‘p’?
         50 |         if (sp < (unsigned long)sstack ||
            |             ^~
    
    This happens because GCC doesn't define __ppc__ for 64-bit builds, only
    32-bit builds. Instead use __powerpc__ to detect powerpc builds, which
    is defined by clang and GCC for 64-bit and 32-bit builds.
    
    Fixes: 05107edc9101 ("selftests: sigaltstack: fix -Wuninitialized")
    Cc: stable@vger.kernel.org # v6.3+
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240520062647.688667-1-mpe@ellerman.id.au
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
selftests: forwarding: devlink_lib: Wait for udev events after reloading [+ + +]
Author: Amit Cohen <amcohen@nvidia.com>
Date:   Thu Jul 11 17:27:02 2024 +0200

    selftests: forwarding: devlink_lib: Wait for udev events after reloading
    
    [ Upstream commit f67a90a0c8f5b3d0acc18f10650d90fec44775f9 ]
    
    Lately, an additional locking was added by commit c0a40097f0bc
    ("drivers: core: synchronize really_probe() and dev_uevent()"). The
    locking protects dev_uevent() calling. This function is used to send
    messages from the kernel to user space. Uevent messages notify user space
    about changes in device states, such as when a device is added, removed,
    or changed. These messages are used by udev (or other similar user-space
    tools) to apply device-specific rules.
    
    After reloading devlink instance, udev events should be processed. This
    locking causes a short delay of udev events handling.
    
    One example for useful udev rule is renaming ports. 'forwading.config'
    can be configured to use names after udev rules are applied. Some tests run
    devlink_reload() and immediately use the updated names. This worked before
    the above mentioned commit was pushed, but now the delay of uevent messages
    causes that devlink_reload() returns before udev events are handled and
    tests fail.
    
    Adjust devlink_reload() to not assume that udev events are already
    processed when devlink reload is done, instead, wait for udev events to
    ensure they are processed before returning from the function.
    
    Without this patch:
    TESTS='rif_mac_profile' ./resource_scale.sh
    TEST: 'rif_mac_profile' 4                                           [ OK ]
    sysctl: cannot stat /proc/sys/net/ipv6/conf/swp1/disable_ipv6: No such file or directory
    sysctl: cannot stat /proc/sys/net/ipv6/conf/swp1/disable_ipv6: No such file or directory
    sysctl: cannot stat /proc/sys/net/ipv6/conf/swp2/disable_ipv6: No such file or directory
    sysctl: cannot stat /proc/sys/net/ipv6/conf/swp2/disable_ipv6: No such file or directory
    Cannot find device "swp1"
    Cannot find device "swp2"
    TEST: setup_wait_dev (: Interface swp1 does not come up.) [FAIL]
    
    With this patch:
    $ TESTS='rif_mac_profile' ./resource_scale.sh
    TEST: 'rif_mac_profile' 4                                           [ OK ]
    TEST: 'rif_mac_profile' overflow 5                                  [ OK ]
    
    This is relevant not only for this test.
    
    Fixes: bc7cbb1e9f4c ("selftests: forwarding: Add devlink_lib.sh")
    Signed-off-by: Amit Cohen <amcohen@nvidia.com>
    Reviewed-by: Ido Schimmel <idosch@nvidia.com>
    Signed-off-by: Petr Machata <petrm@nvidia.com>
    Link: https://patch.msgid.link/89367666e04b38a8993027f1526801ca327ab96a.1720709333.git.petrm@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
serial: core: check uartclk for zero to avoid divide by zero [+ + +]
Author: George Kennedy <george.kennedy@oracle.com>
Date:   Wed Jul 17 07:24:38 2024 -0500

    serial: core: check uartclk for zero to avoid divide by zero
    
    commit 6eabce6608d6f3440f4c03aa3d3ef50a47a3d193 upstream.
    
    Calling ioctl TIOCSSERIAL with an invalid baud_base can
    result in uartclk being zero, which will result in a
    divide by zero error in uart_get_divisor(). The check for
    uartclk being zero in uart_set_info() needs to be done
    before other settings are made as subsequent calls to
    ioctl TIOCSSERIAL for the same port would be impacted if
    the uartclk check was done where uartclk gets set.
    
    Oops: divide error: 0000  PREEMPT SMP KASAN PTI
    RIP: 0010:uart_get_divisor (drivers/tty/serial/serial_core.c:580)
    Call Trace:
     <TASK>
    serial8250_get_divisor (drivers/tty/serial/8250/8250_port.c:2576
        drivers/tty/serial/8250/8250_port.c:2589)
    serial8250_do_set_termios (drivers/tty/serial/8250/8250_port.c:502
        drivers/tty/serial/8250/8250_port.c:2741)
    serial8250_set_termios (drivers/tty/serial/8250/8250_port.c:2862)
    uart_change_line_settings (./include/linux/spinlock.h:376
        ./include/linux/serial_core.h:608 drivers/tty/serial/serial_core.c:222)
    uart_port_startup (drivers/tty/serial/serial_core.c:342)
    uart_startup (drivers/tty/serial/serial_core.c:368)
    uart_set_info (drivers/tty/serial/serial_core.c:1034)
    uart_set_info_user (drivers/tty/serial/serial_core.c:1059)
    tty_set_serial (drivers/tty/tty_io.c:2637)
    tty_ioctl (drivers/tty/tty_io.c:2647 drivers/tty/tty_io.c:2791)
    __x64_sys_ioctl (fs/ioctl.c:52 fs/ioctl.c:907
        fs/ioctl.c:893 fs/ioctl.c:893)
    do_syscall_64 (arch/x86/entry/common.c:52
        (discriminator 1) arch/x86/entry/common.c:83 (discriminator 1))
    entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
    
    Reported-by: syzkaller <syzkaller@googlegroups.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: George Kennedy <george.kennedy@oracle.com>
    Rule: add
    Link: https://lore.kernel.org/stable/1721148848-9784-1-git-send-email-george.kennedy%40oracle.com
    Link: https://lore.kernel.org/r/1721219078-3209-1-git-send-email-george.kennedy@oracle.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
sparc64: Fix incorrect function signature and add prototype for prom_cif_init [+ + +]
Author: Andreas Larsson <andreas@gaisler.com>
Date:   Wed Jul 10 11:41:53 2024 +0200

    sparc64: Fix incorrect function signature and add prototype for prom_cif_init
    
    [ Upstream commit a6c3ea1ec96307dbfbb2f16d96c674c5cc80f445 ]
    
    Remove the unused cif_stack argument and add a protype in oplib_64.h
    Commit ef3e035c3a9b ("sparc64: Fix register corruption in top-most
    kernel stack frame during boot.") removed the cif_stack argument to
    prom_cif init in the declaration at the caller site and the usage of it
    within prom_cif_init, but not in the function signature of the function
    itself.
    
    This also fixes the following warning:
    arch/sparc/prom/p1275.c:52:6: warning: no previous prototype for ‘prom_cif_init’
    
    Fixes: ef3e035c3a9b ("sparc64: Fix register corruption in top-most kernel stack frame during boot.")
    Link: https://lore.kernel.org/r/20240710094155.458731-3-andreas@gaisler.com
    Signed-off-by: Andreas Larsson <andreas@gaisler.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
spi: fsl-lpspi: remove unneeded array [+ + +]
Author: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
Date:   Thu Feb 20 14:11:48 2020 +0000

    spi: fsl-lpspi: remove unneeded array
    
    [ Upstream commit 2fa98705a9289c758b6154a22174aa8d4041a285 ]
    
    - replace the array with the shift operation
    - remove the extra comparing operation.
    
    Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
    Link: https://lore.kernel.org/r/20200220141143.3902922-2-oleksandr.suvorov@toradex.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 730bbfaf7d48 ("spi: spi-fsl-lpspi: Fix scldiv calculation")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: lpspi: Add i.MX8 boards support for lpspi [+ + +]
Author: Clark Wang <xiaoning.wang@nxp.com>
Date:   Wed Mar 6 06:30:34 2019 +0000

    spi: lpspi: Add i.MX8 boards support for lpspi
    
    [ Upstream commit f5e5afdb0e56e81123e02b6a64dd32adc19a90d4 ]
    
    Add both ipg and per clock for lpspi to support i.MX8QM/QXP boards.
    
    Signed-off-by: Clark Wang <xiaoning.wang@nxp.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 730bbfaf7d48 ("spi: spi-fsl-lpspi: Fix scldiv calculation")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: lpspi: Add slave mode support [+ + +]
Author: Clark Wang <xiaoning.wang@nxp.com>
Date:   Fri Dec 7 02:50:36 2018 +0000

    spi: lpspi: Add slave mode support
    
    [ Upstream commit bcd87317aae26b9ac497cbc1232783aaea1aeed4 ]
    
    Add slave mode support to the fsl-lpspi driver, only in PIO mode.
    
    For now, there are some limitations for slave mode transmission:
    1. The stale data in RXFIFO will be dropped when the Slave does any new
       transfer.
    2. One transfer can be finished only after all transfer->len data been
       transferred to master device
    3. Slave device only accepts transfer->len data. Any data longer than
       this from master device will be dropped. Any data shorter than this
       from master will cause LPSPI to stuck due to mentioned limitation 2.
    4. Only PIO transfer is supported in Slave Mode.
    
    Wire connection:
    GND, SCK, MISO(to MISO of slave), MOSI(to MOSI of slave), SCS
    
    Signed-off-by: Clark Wang <xiaoning.wang@nxp.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 730bbfaf7d48 ("spi: spi-fsl-lpspi: Fix scldiv calculation")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: lpspi: add the error info of transfer speed setting [+ + +]
Author: Clark Wang <xiaoning.wang@nxp.com>
Date:   Wed Mar 6 06:30:41 2019 +0000

    spi: lpspi: add the error info of transfer speed setting
    
    [ Upstream commit 77736a98b859e2c64aebbd0f90b2ce4b17682396 ]
    
    Add a error info when set a speed which greater than half of per-clk of
    spi module.
    
    The minimum SCK period is 2 cycles(CCR[SCKDIV]). So the maximum transfer
    speed is half of spi per-clk.
    
    Signed-off-by: Clark Wang <xiaoning.wang@nxp.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 730bbfaf7d48 ("spi: spi-fsl-lpspi: Fix scldiv calculation")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: lpspi: Let watermark change with send data length [+ + +]
Author: Clark Wang <xiaoning.wang@nxp.com>
Date:   Fri Dec 7 02:50:38 2018 +0000

    spi: lpspi: Let watermark change with send data length
    
    [ Upstream commit cf86874bb9bdb99ba3620428b59b0408fbc703d0 ]
    
    Configure watermark to change with the length of the sent data.
    Support LPSPI sending message shorter than tx/rxfifosize.
    
    Signed-off-by: Clark Wang <xiaoning.wang@nxp.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 730bbfaf7d48 ("spi: spi-fsl-lpspi: Fix scldiv calculation")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: lpspi: Replace all "master" with "controller" [+ + +]
Author: Clark Wang <xiaoning.wang@nxp.com>
Date:   Fri Dec 7 02:50:34 2018 +0000

    spi: lpspi: Replace all "master" with "controller"
    
    [ Upstream commit 07d71557494c05b0651def1651bf6d7e7f47bbbb ]
    
    In order to enable the slave mode and make the code more readable,
    replace all related structure names and object names which is
    named "master" with "controller".
    
    Signed-off-by: Clark Wang <xiaoning.wang@nxp.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 730bbfaf7d48 ("spi: spi-fsl-lpspi: Fix scldiv calculation")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: spi-fsl-lpspi: Fix scldiv calculation [+ + +]
Author: Stefan Wahren <wahrenst@gmx.net>
Date:   Sun Aug 4 13:36:11 2024 +0200

    spi: spi-fsl-lpspi: Fix scldiv calculation
    
    [ Upstream commit 730bbfaf7d4890bd99e637db7767dc68cfeb24e7 ]
    
    The effective SPI clock frequency should never exceed speed_hz
    otherwise this might result in undefined behavior of the SPI device.
    
    Currently the scldiv calculation could violate this constraint.
    For the example parameters perclk_rate = 24 MHz and speed_hz = 7 MHz,
    the function fsl_lpspi_set_bitrate will determine perscale = 0 and
    scldiv = 1, which is a effective SPI clock of 8 MHz.
    
    So fix this by rounding up the quotient of perclk_rate and speed_hz.
    While this never change within the loop, we can pull this out.
    
    Fixes: 5314987de5e5 ("spi: imx: add lpspi bus driver")
    Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
    Link: https://patch.msgid.link/20240804113611.83613-1-wahrenst@gmx.net
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
SUNRPC: Fix a race to wake a sync task [+ + +]
Author: Benjamin Coddington <bcodding@redhat.com>
Date:   Wed Jul 17 10:49:33 2024 -0400

    SUNRPC: Fix a race to wake a sync task
    
    [ Upstream commit ed0172af5d6fc07d1b40ca82f5ca3979300369f7 ]
    
    We've observed NFS clients with sync tasks sleeping in __rpc_execute
    waiting on RPC_TASK_QUEUED that have not responded to a wake-up from
    rpc_make_runnable().  I suspect this problem usually goes unnoticed,
    because on a busy client the task will eventually be re-awoken by another
    task completion or xprt event.  However, if the state manager is draining
    the slot table, a sync task missing a wake-up can result in a hung client.
    
    We've been able to prove that the waker in rpc_make_runnable() successfully
    calls wake_up_bit() (ie- there's no race to tk_runstate), but the
    wake_up_bit() call fails to wake the waiter.  I suspect the waker is
    missing the load of the bit's wait_queue_head, so waitqueue_active() is
    false.  There are some very helpful comments about this problem above
    wake_up_bit(), prepare_to_wait(), and waitqueue_active().
    
    Fix this by inserting smp_mb__after_atomic() before the wake_up_bit(),
    which pairs with prepare_to_wait() calling set_current_state().
    
    Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tick/broadcast: Make takeover of broadcast hrtimer reliable [+ + +]
Author: Yu Liao <liaoyu15@huawei.com>
Date:   Thu Jul 11 20:48:43 2024 +0800

    tick/broadcast: Make takeover of broadcast hrtimer reliable
    
    commit f7d43dd206e7e18c182f200e67a8db8c209907fa upstream.
    
    Running the LTP hotplug stress test on a aarch64 machine results in
    rcu_sched stall warnings when the broadcast hrtimer was owned by the
    un-plugged CPU. The issue is the following:
    
    CPU1 (owns the broadcast hrtimer)       CPU2
    
                                    tick_broadcast_enter()
                                      // shutdown local timer device
                                      broadcast_shutdown_local()
                                    ...
                                    tick_broadcast_exit()
                                      clockevents_switch_state(dev, CLOCK_EVT_STATE_ONESHOT)
                                      // timer device is not programmed
                                      cpumask_set_cpu(cpu, tick_broadcast_force_mask)
    
                                    initiates offlining of CPU1
    take_cpu_down()
    /*
     * CPU1 shuts down and does not
     * send broadcast IPI anymore
     */
                                    takedown_cpu()
                                      hotplug_cpu__broadcast_tick_pull()
                                        // move broadcast hrtimer to this CPU
                                        clockevents_program_event()
                                          bc_set_next()
                                            hrtimer_start()
                                            /*
                                             * timer device is not programmed
                                             * because only the first expiring
                                             * timer will trigger clockevent
                                             * device reprogramming
                                             */
    
    What happens is that CPU2 exits broadcast mode with force bit set, then the
    local timer device is not reprogrammed and CPU2 expects to receive the
    expired event by the broadcast IPI. But this does not happen because CPU1
    is offlined by CPU2. CPU switches the clockevent device to ONESHOT state,
    but does not reprogram the device.
    
    The subsequent reprogramming of the hrtimer broadcast device does not
    program the clockevent device of CPU2 either because the pending expiry
    time is already in the past and the CPU expects the event to be delivered.
    As a consequence all CPUs which wait for a broadcast event to be delivered
    are stuck forever.
    
    Fix this issue by reprogramming the local timer device if the broadcast
    force bit of the CPU is set so that the broadcast hrtimer is delivered.
    
    [ tglx: Massage comment and change log. Add Fixes tag ]
    
    Fixes: 989dcb645ca7 ("tick: Handle broadcast wakeup of multiple cpus")
    Signed-off-by: Yu Liao <liaoyu15@huawei.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20240711124843.64167-1-liaoyu15@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

tick/broadcast: Move per CPU pointer access into the atomic section [+ + +]
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Jul 31 12:23:51 2024 +0200

    tick/broadcast: Move per CPU pointer access into the atomic section
    
    commit 6881e75237a84093d0986f56223db3724619f26e upstream.
    
    The recent fix for making the take over of the broadcast timer more
    reliable retrieves a per CPU pointer in preemptible context.
    
    This went unnoticed as compilers hoist the access into the non-preemptible
    region where the pointer is actually used. But of course it's valid that
    the compiler keeps it at the place where the code puts it which rightfully
    triggers:
    
      BUG: using smp_processor_id() in preemptible [00000000] code:
           caller is hotplug_cpu__broadcast_tick_pull+0x1c/0xc0
    
    Move it to the actual usage site which is in a non-preemptible region.
    
    Fixes: f7d43dd206e7 ("tick/broadcast: Make takeover of broadcast hrtimer reliable")
    Reported-by: David Wang <00107082@163.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Yu Liao <liaoyu15@huawei.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/all/87ttg56ers.ffs@tglx
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tipc: Return non-zero value from tipc_udp_addr2str() on error [+ + +]
Author: Shigeru Yoshida <syoshida@redhat.com>
Date:   Tue Jul 16 11:09:05 2024 +0900

    tipc: Return non-zero value from tipc_udp_addr2str() on error
    
    [ Upstream commit fa96c6baef1b5385e2f0c0677b32b3839e716076 ]
    
    tipc_udp_addr2str() should return non-zero value if the UDP media
    address is invalid. Otherwise, a buffer overflow access can occur in
    tipc_media_addr_printf(). Fix this by returning 1 on an invalid UDP
    media address.
    
    Fixes: d0f91938bede ("tipc: add ip/udp media type")
    Signed-off-by: Shigeru Yoshida <syoshida@redhat.com>
    Reviewed-by: Tung Nguyen <tung.q.nguyen@endava.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tools/memory-model: Fix bug in lock.cat [+ + +]
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Jun 6 09:57:55 2024 -0400

    tools/memory-model: Fix bug in lock.cat
    
    commit 4c830eef806679dc243e191f962c488dd9d00708 upstream.
    
    Andrea reported that the following innocuous litmus test:
    
    C T
    
    {}
    
    P0(spinlock_t *x)
    {
            int r0;
    
            spin_lock(x);
            spin_unlock(x);
            r0 = spin_is_locked(x);
    }
    
    gives rise to a nonsensical empty result with no executions:
    
    $ herd7 -conf linux-kernel.cfg T.litmus
    Test T Required
    States 0
    Ok
    Witnesses
    Positive: 0 Negative: 0
    Condition forall (true)
    Observation T Never 0 0
    Time T 0.00
    Hash=6fa204e139ddddf2cb6fa963bad117c0
    
    The problem is caused by a bug in the lock.cat part of the LKMM.  Its
    computation of the rf relation for RU (read-unlocked) events is
    faulty; it implicitly assumes that every RU event must read from
    either a UL (unlock) event in another thread or from the lock's
    initial state.  Neither is true in the litmus test above, so the
    computation yields no possible executions.
    
    The lock.cat code tries to make up for this deficiency by allowing RU
    events outside of critical sections to read from the last po-previous
    UL event.  But it does this incorrectly, trying to keep these rfi links
    separate from the rfe links that might also be needed, and passing only
    the latter to herd7's cross() macro.
    
    The problem is fixed by merging the two sets of possible rf links for
    RU events and using them all in the call to cross().
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrea Parri <parri.andrea@gmail.com>
    Closes: https://lore.kernel.org/linux-arch/ZlC0IkzpQdeGj+a3@andrea/
    Tested-by: Andrea Parri <parri.andrea@gmail.com>
    Acked-by: Andrea Parri <parri.andrea@gmail.com>
    Fixes: 15553dcbca06 ("tools/memory-model: Add model support for spin_is_locked()")
    CC: <stable@vger.kernel.org>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tracing: Fix overflow in get_free_elt() [+ + +]
Author: Tze-nan Wu <Tze-nan.Wu@mediatek.com>
Date:   Mon Aug 5 13:59:22 2024 +0800

    tracing: Fix overflow in get_free_elt()
    
    commit bcf86c01ca4676316557dd482c8416ece8c2e143 upstream.
    
    "tracing_map->next_elt" in get_free_elt() is at risk of overflowing.
    
    Once it overflows, new elements can still be inserted into the tracing_map
    even though the maximum number of elements (`max_elts`) has been reached.
    Continuing to insert elements after the overflow could result in the
    tracing_map containing "tracing_map->max_size" elements, leaving no empty
    entries.
    If any attempt is made to insert an element into a full tracing_map using
    `__tracing_map_insert()`, it will cause an infinite loop with preemption
    disabled, leading to a CPU hang problem.
    
    Fix this by preventing any further increments to "tracing_map->next_elt"
    once it reaches "tracing_map->max_elt".
    
    Cc: stable@vger.kernel.org
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Fixes: 08d43a5fa063e ("tracing: Add lock-free tracing_map")
    Co-developed-by: Cheng-Jui Wang <cheng-jui.wang@mediatek.com>
    Link: https://lore.kernel.org/20240805055922.6277-1-Tze-nan.Wu@mediatek.com
    Signed-off-by: Cheng-Jui Wang <cheng-jui.wang@mediatek.com>
    Signed-off-by: Tze-nan Wu <Tze-nan.Wu@mediatek.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ubi: eba: properly rollback inside self_check_eba [+ + +]
Author: Fedor Pchelkin <pchelkin@ispras.ru>
Date:   Thu Feb 29 23:42:36 2024 +0300

    ubi: eba: properly rollback inside self_check_eba
    
    commit 745d9f4a31defec731119ee8aad8ba9f2536dd9a upstream.
    
    In case of a memory allocation failure in the volumes loop we can only
    process the already allocated scan_eba and fm_eba array elements on the
    error path - others are still uninitialized.
    
    Found by Linux Verification Center (linuxtesting.org).
    
    Fixes: 00abf3041590 ("UBI: Add self_check_eba()")
    Cc: stable@vger.kernel.org
    Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
udf: prevent integer overflow in udf_bitmap_free_blocks() [+ + +]
Author: Roman Smirnov <r.smirnov@omp.ru>
Date:   Thu Jun 20 10:24:13 2024 +0300

    udf: prevent integer overflow in udf_bitmap_free_blocks()
    
    [ Upstream commit 56e69e59751d20993f243fb7dd6991c4e522424c ]
    
    An overflow may occur if the function is called with the last
    block and an offset greater than zero. It is necessary to add
    a check to avoid this.
    
    Found by Linux Verification Center (linuxtesting.org) with Svace.
    
    [JK: Make test cover also unalloc table freeing]
    
    Link: https://patch.msgid.link/20240620072413.7448-1-r.smirnov@omp.ru
    Suggested-by: Jan Kara <jack@suse.com>
    Signed-off-by: Roman Smirnov <r.smirnov@omp.ru>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
usb: gadget: core: Check for unset descriptor [+ + +]
Author: Chris Wulff <crwulff@gmail.com>
Date:   Wed Jul 24 21:04:20 2024 -0400

    usb: gadget: core: Check for unset descriptor
    
    commit 973a57891608a98e894db2887f278777f564de18 upstream.
    
    Make sure the descriptor has been set before looking at maxpacket.
    This fixes a null pointer panic in this case.
    
    This may happen if the gadget doesn't properly set up the endpoint
    for the current speed, or the gadget descriptors are malformed and
    the descriptor for the speed/endpoint are not found.
    
    No current gadget driver is known to have this problem, but this
    may cause a hard-to-find bug during development of new gadgets.
    
    Fixes: 54f83b8c8ea9 ("USB: gadget: Reject endpoints with 0 maxpacket value")
    Cc: stable@vger.kernel.org
    Signed-off-by: Chris Wulff <crwulff@gmail.com>
    Link: https://lore.kernel.org/r/20240725010419.314430-2-crwulff@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
USB: serial: debug: do not echo input by default [+ + +]
Author: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Date:   Mon Jul 15 12:44:53 2024 +0200

    USB: serial: debug: do not echo input by default
    
    commit 00af4f3dda1461ec90d892edc10bec6d3c50c554 upstream.
    
    This driver is intended as a "client" end of the console connection.
    When connected to a host it's supposed to receive debug logs, and
    possibly allow to interact with whatever debug console is available
    there. Feeding messages back, depending on a configuration may cause log
    messages be executed as shell commands (which can be really bad if one
    is unlucky, imagine a log message like "prevented running `rm -rf
    /home`"). In case of Xen, it exposes sysrq-like debug interface, and
    feeding it its own logs will pretty quickly hit 'R' for "instant
    reboot".
    
    Contrary to a classic serial console, the USB one cannot be configured
    ahead of time, as the device shows up only when target OS is up. And at
    the time device is opened to execute relevant ioctl, it's already too
    late, especially when logs start flowing shortly after device is
    initialized.
    Avoid the issue by changing default to no echo for this type of devices.
    
    Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    [ johan: amend summary; disable also ECHONL ]
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
usb: vhci-hcd: Do not drop references before new references are gained [+ + +]
Author: Oliver Neukum <oneukum@suse.com>
Date:   Tue Jul 9 13:38:41 2024 +0200

    usb: vhci-hcd: Do not drop references before new references are gained
    
    commit afdcfd3d6fcdeca2735ca8d994c5f2d24a368f0a upstream.
    
    At a few places the driver carries stale pointers
    to references that can still be used. Make sure that does not happen.
    This strictly speaking closes ZDI-CAN-22273, though there may be
    similar races in the driver.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Cc: stable <stable@kernel.org>
    Acked-by: Shuah Khan <skhan@linuxfoundation.org>
    Link: https://lore.kernel.org/r/20240709113851.14691-1-oneukum@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
watchdog/perf: properly initialize the turbo mode timestamp and rearm counter [+ + +]
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Jul 11 22:25:21 2024 +0200

    watchdog/perf: properly initialize the turbo mode timestamp and rearm counter
    
    commit f944ffcbc2e1c759764850261670586ddf3bdabb upstream.
    
    For systems on which the performance counter can expire early due to turbo
    modes the watchdog handler has a safety net in place which validates that
    since the last watchdog event there has at least 4/5th of the watchdog
    period elapsed.
    
    This works reliably only after the first watchdog event because the per
    CPU variable which holds the timestamp of the last event is never
    initialized.
    
    So a first spurious event will validate against a timestamp of 0 which
    results in a delta which is likely to be way over the 4/5 threshold of the
    period.  As this might happen before the first watchdog hrtimer event
    increments the watchdog counter, this can lead to false positives.
    
    Fix this by initializing the timestamp before enabling the hardware event.
    Reset the rearm counter as well, as that might be non zero after the
    watchdog was disabled and reenabled.
    
    Link: https://lkml.kernel.org/r/87frsfu15a.ffs@tglx
    Fixes: 7edaeb6841df ("kernel/watchdog: Prevent false positives with turbo modes")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
wifi: brcmsmac: LCN PHY code is used for BCM4313 2G-only device [+ + +]
Author: Samasth Norway Ananda <samasth.norway.ananda@oracle.com>
Date:   Thu May 9 16:10:37 2024 -0700

    wifi: brcmsmac: LCN PHY code is used for BCM4313 2G-only device
    
    [ Upstream commit c636fa85feb450ca414a10010ed05361a73c93a6 ]
    
    The band_idx variable in the function wlc_lcnphy_tx_iqlo_cal() will
    never be set to 1 as BCM4313 is the only device for which the LCN PHY
    code is used. This is a 2G-only device.
    
    Fixes: 5b435de0d786 ("net: wireless: add brcm80211 drivers")
    Signed-off-by: Samasth Norway Ananda <samasth.norway.ananda@oracle.com>
    Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://msgid.link/20240509231037.2014109-1-samasth.norway.ananda@oracle.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: cfg80211: fix typo in cfg80211_calculate_bitrate_he() [+ + +]
Author: Baochen Qiang <quic_bqiang@quicinc.com>
Date:   Thu Jun 6 10:06:52 2024 +0800

    wifi: cfg80211: fix typo in cfg80211_calculate_bitrate_he()
    
    [ Upstream commit 9ee0d44f055276fe2802b2f65058e920853f4f99 ]
    
    rates_996 is mistakenly written as rates_969, fix it.
    
    Fixes: c4cbaf7973a7 ("cfg80211: Add support for HE")
    Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
    Link: https://msgid.link/20240606020653.33205-2-quic_bqiang@quicinc.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: cfg80211: handle 2x996 RU allocation in cfg80211_calculate_bitrate_he() [+ + +]
Author: Baochen Qiang <quic_bqiang@quicinc.com>
Date:   Thu Jun 6 10:06:53 2024 +0800

    wifi: cfg80211: handle 2x996 RU allocation in cfg80211_calculate_bitrate_he()
    
    [ Upstream commit bcbd771cd5d68c0c52567556097d75f9fc4e7cd6 ]
    
    Currently NL80211_RATE_INFO_HE_RU_ALLOC_2x996 is not handled in
    cfg80211_calculate_bitrate_he(), leading to below warning:
    
    kernel: invalid HE MCS: bw:6, ru:6
    kernel: WARNING: CPU: 0 PID: 2312 at net/wireless/util.c:1501 cfg80211_calculate_bitrate_he+0x22b/0x270 [cfg80211]
    
    Fix it by handling 2x996 RU allocation in the same way as 160 MHz bandwidth.
    
    Fixes: c4cbaf7973a7 ("cfg80211: Add support for HE")
    Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
    Link: https://msgid.link/20240606020653.33205-3-quic_bqiang@quicinc.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mwifiex: Fix interface type change [+ + +]
Author: Rafael Beims <rafael.beims@toradex.com>
Date:   Fri May 10 13:04:58 2024 +0200

    wifi: mwifiex: Fix interface type change
    
    commit a17b9f590f6ec2b9f1b12b1db3bf1d181de6b272 upstream.
    
    When changing the interface type we also need to update the bss_num, the
    driver private data is searched based on a unique (bss_type, bss_num)
    tuple, therefore every time bss_type changes, bss_num must also change.
    
    This fixes for example an issue in which, after the mode changed, a
    wireless scan on the changed interface would not finish, leading to
    repeated -EBUSY messages to userspace when other scan requests were
    sent.
    
    Fixes: c606008b7062 ("mwifiex: Properly initialize private structure on interface type changes")
    Cc: stable@vger.kernel.org
    Signed-off-by: Rafael Beims <rafael.beims@toradex.com>
    Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://msgid.link/20240510110458.15475-1-francesco@dolcini.it
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: nl80211: don't give key data to userspace [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Jun 27 10:44:11 2024 +0200

    wifi: nl80211: don't give key data to userspace
    
    [ Upstream commit a7e5793035792cc46a1a4b0a783655ffa897dfe9 ]
    
    When a key is requested by userspace, there's really no need
    to include the key data, the sequence counter is really what
    userspace needs in this case. The fact that it's included is
    just a historic quirk.
    
    Remove the key data.
    
    Reviewed-by: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20240627104411.b6a4f097e4ea.I7e6cc976cb9e8a80ef25a3351330f313373b4578@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/mm: Fix pti_clone_pgtable() alignment assumption [+ + +]
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed Jul 31 18:31:05 2024 +0200

    x86/mm: Fix pti_clone_pgtable() alignment assumption
    
    [ Upstream commit 41e71dbb0e0a0fe214545fe64af031303a08524c ]
    
    Guenter reported dodgy crashes on an i386-nosmp build using GCC-11
    that had the form of endless traps until entry stack exhaust and then
    #DF from the stack guard.
    
    It turned out that pti_clone_pgtable() had alignment assumptions on
    the start address, notably it hard assumes start is PMD aligned. This
    is true on x86_64, but very much not true on i386.
    
    These assumptions can cause the end condition to malfunction, leading
    to a 'short' clone. Guess what happens when the user mapping has a
    short copy of the entry text?
    
    Use the correct increment form for addr to avoid alignment
    assumptions.
    
    Fixes: 16a3fe634f6a ("x86/mm/pti: Clone kernel-image on PTE level for 32 bit")
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Suggested-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20240731163105.GG33588@noisy.programming.kicks-ass.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/mtrr: Check if fixed MTRRs exist before saving them [+ + +]
Author: Andi Kleen <ak@linux.intel.com>
Date:   Wed Aug 7 17:02:44 2024 -0700

    x86/mtrr: Check if fixed MTRRs exist before saving them
    
    commit 919f18f961c03d6694aa726c514184f2311a4614 upstream.
    
    MTRRs have an obsolete fixed variant for fine grained caching control
    of the 640K-1MB region that uses separate MSRs. This fixed variant has
    a separate capability bit in the MTRR capability MSR.
    
    So far all x86 CPUs which support MTRR have this separate bit set, so it
    went unnoticed that mtrr_save_state() does not check the capability bit
    before accessing the fixed MTRR MSRs.
    
    Though on a CPU that does not support the fixed MTRR capability this
    results in a #GP.  The #GP itself is harmless because the RDMSR fault is
    handled gracefully, but results in a WARN_ON().
    
    Add the missing capability check to prevent this.
    
    Fixes: 2b1f6278d77c ("[PATCH] x86: Save the MTRRs of the BSP before booting an AP")
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/all/20240808000244.946864-1-ak@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/of: Return consistent error type from x86_of_pci_irq_enable() [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Mon May 27 15:55:35 2024 +0300

    x86/of: Return consistent error type from x86_of_pci_irq_enable()
    
    [ Upstream commit ec0b4c4d45cf7cf9a6c9626a494a89cb1ae7c645 ]
    
    x86_of_pci_irq_enable() returns PCIBIOS_* code received from
    pci_read_config_byte() directly and also -EINVAL which are not
    compatible error types. x86_of_pci_irq_enable() is used as
    (*pcibios_enable_irq) function which should not return PCIBIOS_* codes.
    
    Convert the PCIBIOS_* return code from pci_read_config_byte() into
    normal errno using pcibios_err_to_errno().
    
    Fixes: 96e0a0797eba ("x86: dtb: Add support for PCI devices backed by dtb nodes")
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/r/20240527125538.13620-1-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/pci/intel_mid_pci: Fix PCIBIOS_* return code handling [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Mon May 27 15:55:36 2024 +0300

    x86/pci/intel_mid_pci: Fix PCIBIOS_* return code handling
    
    [ Upstream commit 724852059e97c48557151b3aa4af424614819752 ]
    
    intel_mid_pci_irq_enable() uses pci_read_config_byte() that returns
    PCIBIOS_* codes. The error handling, however, assumes the codes are
    normal errnos because it checks for < 0.
    
    intel_mid_pci_irq_enable() also returns the PCIBIOS_* code back to the
    caller but the function is used as the (*pcibios_enable_irq) function
    which should return normal errnos.
    
    Convert the error check to plain non-zero check which works for
    PCIBIOS_* return codes and convert the PCIBIOS_* return code using
    pcibios_err_to_errno() into normal errno before returning it.
    
    Fixes: 5b395e2be6c4 ("x86/platform/intel-mid: Make IRQ allocation a bit more flexible")
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20240527125538.13620-2-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/pci/xen: Fix PCIBIOS_* return code handling [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Mon May 27 15:55:37 2024 +0300

    x86/pci/xen: Fix PCIBIOS_* return code handling
    
    [ Upstream commit e9d7b435dfaec58432f4106aaa632bf39f52ce9f ]
    
    xen_pcifront_enable_irq() uses pci_read_config_byte() that returns
    PCIBIOS_* codes. The error handling, however, assumes the codes are
    normal errnos because it checks for < 0.
    
    xen_pcifront_enable_irq() also returns the PCIBIOS_* code back to the
    caller but the function is used as the (*pcibios_enable_irq) function
    which should return normal errnos.
    
    Convert the error check to plain non-zero check which works for
    PCIBIOS_* return codes and convert the PCIBIOS_* return code using
    pcibios_err_to_errno() into normal errno before returning it.
    
    Fixes: 3f2a230caf21 ("xen: handled remapped IRQs when enabling a pcifront PCI device.")
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20240527125538.13620-3-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/platform/iosf_mbi: Convert PCIBIOS_* return codes to errnos [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Mon May 27 15:55:38 2024 +0300

    x86/platform/iosf_mbi: Convert PCIBIOS_* return codes to errnos
    
    [ Upstream commit 7821fa101eab529521aa4b724bf708149d70820c ]
    
    iosf_mbi_pci_{read,write}_mdr() use pci_{read,write}_config_dword()
    that return PCIBIOS_* codes but functions also return -ENODEV which are
    not compatible error codes. As neither of the functions are related to
    PCI read/write functions, they should return normal errnos.
    
    Convert PCIBIOS_* returns code using pcibios_err_to_errno() into normal
    errno before returning it.
    
    Fixes: 46184415368a ("arch: x86: New MailBox support driver for Intel SOC's")
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/r/20240527125538.13620-4-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/xen: Convert comma to semicolon [+ + +]
Author: Chen Ni <nichen@iscas.ac.cn>
Date:   Tue Jul 2 11:10:10 2024 +0800

    x86/xen: Convert comma to semicolon
    
    [ Upstream commit 349d271416c61f82b853336509b1d0dc04c1fcbb ]
    
    Replace a comma between expression statements by a semicolon.
    
    Fixes: 8310b77b48c5 ("Xen/gnttab: handle p2m update errors on a per-slot basis")
    Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20240702031010.1411875-1-nichen@iscas.ac.cn
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>