Changelog in Linux kernel 6.12.8

 
ACPI/IORT: Add PMCG platform information for HiSilicon HIP09A [+ + +]
Author: Qinxin Xia <xiaqinxin@huawei.com>
Date:   Thu Dec 5 09:33:31 2024 +0800

    ACPI/IORT: Add PMCG platform information for HiSilicon HIP09A
    
    [ Upstream commit c2b46ae022704a2d845e59461fa24431ad627022 ]
    
    HiSilicon HIP09A platforms using the same SMMU PMCG with HIP09
    and thus suffers the same erratum. List them in the PMCG platform
    information list without introducing a new SMMU PMCG Model.
    
    Update the silicon-errata.rst as well.
    
    Reviewed-by: Yicong Yang <yangyicong@hisilicon.com>
    Acked-by: Hanjun Guo <guohanjun@huawei.com>
    Signed-off-by: Qinxin Xia <xiaqinxin@huawei.com>
    Link: https://lore.kernel.org/r/20241205013331.1484017-1-xiaqinxin@huawei.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ALSA: hda/conexant: fix Z60MR100 startup pop issue [+ + +]
Author: bo liu <bo.liu@senarytech.com>
Date:   Fri Nov 29 09:44:41 2024 +0800

    ALSA: hda/conexant: fix Z60MR100 startup pop issue
    
    [ Upstream commit 947c4012f8f03a8bb946beb6e5294d5e32817d67 ]
    
    When Z60MR100 startup, speaker will output a pop. To fix this issue,
    we mute codec by init verbs in bios when system startup, and set GPIO
    to low to unmute codec in codec driver when it loaded .
    
    [ white space fixes and compile warning fix by tiwai ]
    
    Signed-off-by: bo liu <bo.liu@senarytech.com>
    Link: https://patch.msgid.link/20241129014441.437205-1-bo.liu@senarytech.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: memalloc: prefer dma_mapping_error() over explicit address checking [+ + +]
Author: Fedor Pchelkin <pchelkin@ispras.ru>
Date:   Thu Dec 19 23:33:45 2024 +0300

    ALSA: memalloc: prefer dma_mapping_error() over explicit address checking
    
    commit fa0308134d26dbbeb209a1581eea46df663866b6 upstream.
    
    With CONFIG_DMA_API_DEBUG enabled, the following warning is observed:
    
    DMA-API: snd_hda_intel 0000:03:00.1: device driver failed to check map error[device address=0x00000000ffff0000] [size=20480 bytes] [mapped as single]
    WARNING: CPU: 28 PID: 2255 at kernel/dma/debug.c:1036 check_unmap+0x1408/0x2430
    CPU: 28 UID: 42 PID: 2255 Comm: wireplumber Tainted: G  W L  6.12.0-10-133577cad6bf48e5a7848c4338124081393bfe8a+ #759
    debug_dma_unmap_page+0xe9/0xf0
    snd_dma_wc_free+0x85/0x130 [snd_pcm]
    snd_pcm_lib_free_pages+0x1e3/0x440 [snd_pcm]
    snd_pcm_common_ioctl+0x1c9a/0x2960 [snd_pcm]
    snd_pcm_ioctl+0x6a/0xc0 [snd_pcm]
    ...
    
    Check for returned DMA addresses using specialized dma_mapping_error()
    helper which is generally recommended for this purpose by
    Documentation/core-api/dma-api.rst.
    
    Fixes: c880a5146642 ("ALSA: memalloc: Use proper DMA mapping API for x86 WC buffer allocations")
    Reported-by: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
    Closes: https://lore.kernel.org/r/CABXGCsNB3RsMGvCucOy3byTEOxoc-Ys+zB_HQ=Opb_GhX1ioDA@mail.gmail.com/
    Tested-by: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
    Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Link: https://patch.msgid.link/20241219203345.195898-1-pchelkin@ispras.ru
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: sh: Fix wrong argument order for copy_from_iter() [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Dec 20 12:44:16 2024 +0100

    ALSA: sh: Fix wrong argument order for copy_from_iter()
    
    commit 66a0a2b0473c39ae85c44628d14e4366fdc0aa0d upstream.
    
    Fix a brown paper bag bug I introduced at converting to the standard
    iter helper; the arguments were wrongly passed and have to be
    swapped.
    
    Fixes: 9b5f8ee43e48 ("ALSA: sh: Use standard helper for buffer accesses")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202412140019.jat5Dofr-lkp@intel.com/
    Link: https://patch.msgid.link/20241220114417.5898-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: sh: Use standard helper for buffer accesses [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Nov 28 11:49:38 2024 +0100

    ALSA: sh: Use standard helper for buffer accesses
    
    [ Upstream commit 9b5f8ee43e48c25fbe1a10163ec04343d750acd0 ]
    
    The SH DAC audio driver uses the kmalloc'ed buffer as the main PCM
    buffer, and the data is transferred via hrtimer callbacks manually
    from there to the hardware.  Meanwhile, some of its code are written
    as if the buffer is on iomem and use the special helpers for the iomem
    (e.g. copy_from_iter_toio() or memset_io()).  Those are rather useless
    and the standard helpers should be used.
    
    Similarly, the PCM mmap callback is set to a special one with
    snd_pcm_lib_mmap_iomem, but this is also nonsense, because SH
    architecture doesn't support this function, hence it leads just to
    NULL -- the fallback to the standard helper.
    
    This patch replaces those special setups with the standard ones.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202411281337.I4M07b7i-lkp@intel.com/
    Link: https://patch.msgid.link/20241128104939.13755-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: ump: Don't open legacy substream for an inactive group [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Nov 29 10:45:42 2024 +0100

    ALSA: ump: Don't open legacy substream for an inactive group
    
    [ Upstream commit 3978d53df7236f0a517c2abeb43ddf6ac162cdd8 ]
    
    When a UMP Group is inactive, we shouldn't allow users to access it
    via the legacy MIDI access.  Add the group active flag check and
    return -ENODEV if it's inactive.
    
    Link: https://patch.msgid.link/20241129094546.32119-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: ump: Indicate the inactive group in legacy substream names [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Nov 29 10:45:43 2024 +0100

    ALSA: ump: Indicate the inactive group in legacy substream names
    
    [ Upstream commit e29e504e7890b9ee438ca6370d0180d607c473f9 ]
    
    Since the legacy rawmidi has no proper way to know the inactive group,
    indicate it in the rawmidi substream names with "[Inactive]" suffix
    when the corresponding UMP group is inactive.
    
    Link: https://patch.msgid.link/20241129094546.32119-3-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: ump: Shut up truncated string warning [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Nov 30 10:00:08 2024 +0100

    ALSA: ump: Shut up truncated string warning
    
    commit ed990c07af70d286f5736021c6e25d8df6f2f7b0 upstream.
    
    The recent change for the legacy substream name update brought a
    compile warning for some compilers due to the nature of snprintf().
    Use scnprintf() to shut up the warning since the truncation is
    intentional.
    
    Fixes: e29e504e7890 ("ALSA: ump: Indicate the inactive group in legacy substream names")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202411300103.FrGuTAYp-lkp@intel.com/
    Link: https://patch.msgid.link/20241130090009.19849-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: ump: Update legacy substream names upon FB info update [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Nov 29 10:45:44 2024 +0100

    ALSA: ump: Update legacy substream names upon FB info update
    
    [ Upstream commit edad3f9519fcacb926d0e3f3217aecaf628a593f ]
    
    The legacy rawmidi substreams should be updated when UMP FB Info or
    UMP FB Name are received, too.
    
    Link: https://patch.msgid.link/20241129094546.32119-4-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
arm64: dts: broadcom: Fix L2 linesize for Raspberry Pi 5 [+ + +]
Author: Willow Cunningham <willow.e.cunningham@gmail.com>
Date:   Mon Oct 7 17:29:54 2024 -0400

    arm64: dts: broadcom: Fix L2 linesize for Raspberry Pi 5
    
    [ Upstream commit 058387d9c6b70e225da82492e1e193635c3fac3f ]
    
    Set the cache-line-size parameter of the L2 cache for each core to the
    correct value of 64 bytes.
    
    Previously, the L2 cache line size was incorrectly set to 128 bytes
    for the Broadcom BCM2712. This causes validation tests for the
    Performance Application Programming Interface (PAPI) tool to fail as
    they depend on sysfs accurately reporting cache line sizes.
    
    The correct value of 64 bytes is stated in the official documentation of
    the ARM Cortex A-72, which is linked in the comments of
    arm64/boot/dts/broadcom/bcm2712.dtsi as the source for cache-line-size.
    
    Fixes: faa3381267d0 ("arm64: dts: broadcom: Add minimal support for Raspberry Pi 5")
    Signed-off-by: Willow Cunningham <willow.e.cunningham@maine.edu>
    Link: https://lore.kernel.org/r/20241007212954.214724-1-willow.e.cunningham@maine.edu
    Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ASoC: amd: ps: Fix for enabling DMIC on acp63 platform via _DSD entry [+ + +]
Author: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
Date:   Fri Dec 13 11:41:46 2024 +0530

    ASoC: amd: ps: Fix for enabling DMIC on acp63 platform via _DSD entry
    
    commit 88438444fdddd0244c8b2697713adcca3e71599e upstream.
    
    Add condition check to register ACP PDM sound card by reading
    _WOV acpi entry.
    
    Fixes: 0386d765f27a ("ASoC: amd: ps: refactor acp device configuration read logic")
    
    Signed-off-by: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
    Link: https://patch.msgid.link/20241213061147.1060451-1-venkataprasad.potturu@amd.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: dt-bindings: realtek,rt5645: Fix CPVDD voltage comment [+ + +]
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Wed Dec 11 11:54:02 2024 +0800

    ASoC: dt-bindings: realtek,rt5645: Fix CPVDD voltage comment
    
    commit 6f4a0fd03ce856c6d9811429b9969b4f27e2eaee upstream.
    
    Both the ALC5645 and ALC5650 datasheets specify a recommended voltage of
    1.8V for CPVDD, not 3.5V.
    
    Fix the comment.
    
    Cc: Matthias Brugger <matthias.bgg@gmail.com>
    Fixes: 26aa19174f0d ("ASoC: dt-bindings: rt5645: add suppliers")
    Fixes: 83d43ab0a1cb ("ASoC: dt-bindings: realtek,rt5645: Convert to dtschema")
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Link: https://patch.msgid.link/20241211035403.4157760-1-wenst@chromium.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: Intel: sof_sdw: Fix DMI match for Lenovo 21Q6 and 21Q7 [+ + +]
Author: Richard Fitzgerald <rf@opensource.cirrus.com>
Date:   Mon Dec 16 22:08:20 2024 +0800

    ASoC: Intel: sof_sdw: Fix DMI match for Lenovo 21Q6 and 21Q7
    
    commit 7c449ef0fdce540bfb235a2d93e7184864c3388b upstream.
    
    Update the DMI match for a Lenovo laptop to the new DMI identifier.
    
    This laptop ships with a different DMI identifier to what was expected,
    and now has two identifiers.
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Fixes: 83c062ae81e8 ("ASoC: Intel: sof_sdw: Add quirks for some new Lenovo laptops")
    Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Link: https://patch.msgid.link/20241216140821.153670-2-yung-chuan.liao@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: Intel: sof_sdw: Fix DMI match for Lenovo 21QA and 21QB [+ + +]
Author: Richard Fitzgerald <rf@opensource.cirrus.com>
Date:   Mon Dec 16 22:08:21 2024 +0800

    ASoC: Intel: sof_sdw: Fix DMI match for Lenovo 21QA and 21QB
    
    commit ba7d47a54bf23a7201bdd2978e16b04fc1cb1f6e upstream.
    
    Update the DMI match for a Lenovo laptop to the new DMI identifier.
    
    This laptop ships with a different DMI identifier to what was expected,
    and now has two identifiers.
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Fixes: ea657f6b24e1 ("ASoC: Intel: sof_sdw: Add quirk for cs42l43 system using host DMICs")
    Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Link: https://patch.msgid.link/20241216140821.153670-3-yung-chuan.liao@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: SOF: Intel: hda-dai: Do not release the link DMA on STOP [+ + +]
Author: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Date:   Tue Dec 17 11:10:19 2024 +0200

    ASoC: SOF: Intel: hda-dai: Do not release the link DMA on STOP
    
    commit e8d0ba147d901022bcb69da8d8fd817f84e9f3ca upstream.
    
    The linkDMA should not be released on stop trigger since a stream re-start
    might happen without closing of the stream. This leaves a short time for
    other streams to 'steal' the linkDMA since it has been released.
    
    This issue is not easy to reproduce under normal conditions as usually
    after stop the stream is closed, or the same stream is restarted, but if
    another stream got in between the stop and start, like this:
    aplay -Dhw:0,3 -c2 -r48000 -fS32_LE /dev/zero -d 120
    CTRL+z
    aplay -Dhw:0,0 -c2 -r48000 -fS32_LE /dev/zero -d 120
    
    then the link DMA channels will be mixed up, resulting firmware error or
    crash.
    
    Fixes: ab5593793e90 ("ASoC: SOF: Intel: hda: Always clean up link DMA during stop")
    Cc: stable@vger.kernel.org
    Closes: https://github.com/thesofproject/sof/issues/9695
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com>
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Link: https://patch.msgid.link/20241217091019.31798-1-peter.ujfalusi@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
blk-mq: register cpuhp callback after hctx is added to xarray table [+ + +]
Author: Ming Lei <ming.lei@redhat.com>
Date:   Fri Dec 6 19:16:06 2024 +0800

    blk-mq: register cpuhp callback after hctx is added to xarray table
    
    [ Upstream commit 4bf485a7db5d82ddd0f3ad2b299893199090375e ]
    
    We need to retrieve 'hctx' from xarray table in the cpuhp callback, so the
    callback should be registered after this 'hctx' is added to xarray table.
    
    Cc: Reinette Chatre <reinette.chatre@intel.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Peter Newman <peternewman@google.com>
    Cc: Babu Moger <babu.moger@amd.com>
    Cc: Luck Tony <tony.luck@intel.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Tested-by: Tony Luck <tony.luck@intel.com>
    Link: https://lore.kernel.org/r/20241206111611.978870-2-ming.lei@redhat.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Bluetooth: btusb: mediatek: add callback function in btusb_disconnect [+ + +]
Author: Chris Lu <chris.lu@mediatek.com>
Date:   Mon Sep 23 16:47:03 2024 +0800

    Bluetooth: btusb: mediatek: add callback function in btusb_disconnect
    
    commit cea1805f165cdd783dd21f26df957118cb8641b4 upstream.
    
    Add disconnect callback function in btusb_disconnect which is reserved
    for vendor specific usage before deregister hci in btusb_disconnect.
    
    Signed-off-by: Chris Lu <chris.lu@mediatek.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Cc: Fedor Pchelkin <boddah8794@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bluetooth: btusb: mediatek: add intf release flow when usb disconnect [+ + +]
Author: Chris Lu <chris.lu@mediatek.com>
Date:   Mon Sep 23 16:47:04 2024 +0800

    Bluetooth: btusb: mediatek: add intf release flow when usb disconnect
    
    commit 489304e67087abddc2666c5af0159cb95afdcf59 upstream.
    
    MediaTek claim an special usb intr interface for ISO data transmission.
    The interface need to be released before unregistering hci device when
    usb disconnect. Removing BT usb dongle without properly releasing the
    interface may cause Kernel panic while unregister hci device.
    
    Signed-off-by: Chris Lu <chris.lu@mediatek.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Cc: Fedor Pchelkin <boddah8794@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bluetooth: btusb: mediatek: change the conditions for ISO interface [+ + +]
Author: Chris Lu <chris.lu@mediatek.com>
Date:   Mon Sep 23 16:47:05 2024 +0800

    Bluetooth: btusb: mediatek: change the conditions for ISO interface
    
    commit defc33b5541e0a7e45cc2d99d72fbe80a597afc5 upstream.
    
    Change conditions for Bluetooth driver claiming and releasing usb
    ISO interface for MediaTek ISO data transmission.
    
    Signed-off-by: Chris Lu <chris.lu@mediatek.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Cc: Fedor Pchelkin <boddah8794@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bluetooth: btusb: mediatek: move Bluetooth power off command position [+ + +]
Author: Chris Lu <chris.lu@mediatek.com>
Date:   Mon Sep 23 16:47:02 2024 +0800

    Bluetooth: btusb: mediatek: move Bluetooth power off command position
    
    commit ad0c6f603bb0b07846fda484c59a176a8cd02838 upstream.
    
    Move MediaTek Bluetooth power off command before releasing
    usb ISO interface.
    
    Signed-off-by: Chris Lu <chris.lu@mediatek.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Cc: Fedor Pchelkin <boddah8794@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
bpf: Check negative offsets in __bpf_skb_min_len() [+ + +]
Author: Cong Wang <cong.wang@bytedance.com>
Date:   Thu Dec 12 19:40:54 2024 -0800

    bpf: Check negative offsets in __bpf_skb_min_len()
    
    [ Upstream commit 9ecc4d858b92c1bb0673ad9c327298e600c55659 ]
    
    skb_network_offset() and skb_transport_offset() can be negative when
    they are called after we pull the transport header, for example, when
    we use eBPF sockmap at the point of ->sk_data_ready().
    
    __bpf_skb_min_len() uses an unsigned int to get these offsets, this
    leads to a very large number which then causes bpf_skb_change_tail()
    failed unexpectedly.
    
    Fix this by using a signed int to get these offsets and ensure the
    minimum is at least zero.
    
    Fixes: 5293efe62df8 ("bpf: add bpf_skb_change_tail helper")
    Signed-off-by: Cong Wang <cong.wang@bytedance.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Link: https://lore.kernel.org/bpf/20241213034057.246437-2-xiyou.wangcong@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bpf: Fix bpf_get_smp_processor_id() on !CONFIG_SMP [+ + +]
Author: Andrea Righi <arighi@nvidia.com>
Date:   Tue Dec 17 20:58:13 2024 +0100

    bpf: Fix bpf_get_smp_processor_id() on !CONFIG_SMP
    
    [ Upstream commit 23579010cf0a12476e96a5f1acdf78a9c5843657 ]
    
    On x86-64 calling bpf_get_smp_processor_id() in a kernel with CONFIG_SMP
    disabled can trigger the following bug, as pcpu_hot is unavailable:
    
     [    8.471774] BUG: unable to handle page fault for address: 00000000936a290c
     [    8.471849] #PF: supervisor read access in kernel mode
     [    8.471881] #PF: error_code(0x0000) - not-present page
    
    Fix by inlining a return 0 in the !CONFIG_SMP case.
    
    Fixes: 1ae6921009e5 ("bpf: inline bpf_get_smp_processor_id() helper")
    Signed-off-by: Andrea Righi <arighi@nvidia.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20241217195813.622568-1-arighi@nvidia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bpf: Zero index arg error string for dynptr and iter [+ + +]
Author: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Date:   Mon Dec 2 16:22:35 2024 -0800

    bpf: Zero index arg error string for dynptr and iter
    
    [ Upstream commit bd74e238ae6944b462f57ce8752440a011ba4530 ]
    
    Andrii spotted that process_dynptr_func's rejection of incorrect
    argument register type will print an error string where argument numbers
    are not zero-indexed, unlike elsewhere in the verifier.  Fix this by
    subtracting 1 from regno. The same scenario exists for iterator
    messages. Fix selftest error strings that match on the exact argument
    number while we're at it to ensure clean bisection.
    
    Suggested-by: Andrii Nakryiko <andrii@kernel.org>
    Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
    Link: https://lore.kernel.org/r/20241203002235.3776418-1-memxor@gmail.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
btrfs: avoid monopolizing a core when activating a swap file [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Dec 9 16:43:44 2024 +0000

    btrfs: avoid monopolizing a core when activating a swap file
    
    commit 2c8507c63f5498d4ee4af404a8e44ceae4345056 upstream.
    
    During swap activation we iterate over the extents of a file and we can
    have many thousands of them, so we can end up in a busy loop monopolizing
    a core. Avoid this by doing a voluntary reschedule after processing each
    extent.
    
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: check folio mapping after unlock in put_file_data() [+ + +]
Author: Boris Burkov <boris@bur.io>
Date:   Fri Dec 13 12:33:22 2024 -0800

    btrfs: check folio mapping after unlock in put_file_data()
    
    commit 0fba7be1ca6df2881e68386e5575fe096f33c4ca upstream.
    
    When we call btrfs_read_folio() we get an unlocked folio, so it is possible
    for a different thread to concurrently modify folio->mapping. We must
    check that this hasn't happened once we do have the lock.
    
    CC: stable@vger.kernel.org # 6.12+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Boris Burkov <boris@bur.io>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: check folio mapping after unlock in relocate_one_folio() [+ + +]
Author: Boris Burkov <boris@bur.io>
Date:   Fri Dec 13 12:22:32 2024 -0800

    btrfs: check folio mapping after unlock in relocate_one_folio()
    
    commit 3e74859ee35edc33a022c3f3971df066ea0ca6b9 upstream.
    
    When we call btrfs_read_folio() to bring a folio uptodate, we unlock the
    folio. The result of that is that a different thread can modify the
    mapping (like remove it with invalidate) before we call folio_lock().
    This results in an invalid page and we need to try again.
    
    In particular, if we are relocating concurrently with aborting a
    transaction, this can result in a crash like the following:
    
      BUG: kernel NULL pointer dereference, address: 0000000000000000
      PGD 0 P4D 0
      Oops: 0000 [#1] SMP
      CPU: 76 PID: 1411631 Comm: kworker/u322:5
      Workqueue: events_unbound btrfs_reclaim_bgs_work
      RIP: 0010:set_page_extent_mapped+0x20/0xb0
      RSP: 0018:ffffc900516a7be8 EFLAGS: 00010246
      RAX: ffffea009e851d08 RBX: ffffea009e0b1880 RCX: 0000000000000000
      RDX: 0000000000000000 RSI: ffffc900516a7b90 RDI: ffffea009e0b1880
      RBP: 0000000003573000 R08: 0000000000000001 R09: ffff88c07fd2f3f0
      R10: 0000000000000000 R11: 0000194754b575be R12: 0000000003572000
      R13: 0000000003572fff R14: 0000000000100cca R15: 0000000005582fff
      FS:  0000000000000000(0000) GS:ffff88c07fd00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000000 CR3: 000000407d00f002 CR4: 00000000007706f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      PKRU: 55555554
      Call Trace:
      <TASK>
      ? __die+0x78/0xc0
      ? page_fault_oops+0x2a8/0x3a0
      ? __switch_to+0x133/0x530
      ? wq_worker_running+0xa/0x40
      ? exc_page_fault+0x63/0x130
      ? asm_exc_page_fault+0x22/0x30
      ? set_page_extent_mapped+0x20/0xb0
      relocate_file_extent_cluster+0x1a7/0x940
      relocate_data_extent+0xaf/0x120
      relocate_block_group+0x20f/0x480
      btrfs_relocate_block_group+0x152/0x320
      btrfs_relocate_chunk+0x3d/0x120
      btrfs_reclaim_bgs_work+0x2ae/0x4e0
      process_scheduled_works+0x184/0x370
      worker_thread+0xc6/0x3e0
      ? blk_add_timer+0xb0/0xb0
      kthread+0xae/0xe0
      ? flush_tlb_kernel_range+0x90/0x90
      ret_from_fork+0x2f/0x40
      ? flush_tlb_kernel_range+0x90/0x90
      ret_from_fork_asm+0x11/0x20
      </TASK>
    
    This occurs because cleanup_one_transaction() calls
    destroy_delalloc_inodes() which calls invalidate_inode_pages2() which
    takes the folio_lock before setting mapping to NULL. We fail to check
    this, and subsequently call set_extent_mapping(), which assumes that
    mapping != NULL (in fact it asserts that in debug mode)
    
    Note that the "fixes" patch here is not the one that introduced the
    race (the very first iteration of this code from 2009) but a more recent
    change that made this particular crash happen in practice.
    
    Fixes: e7f1326cc24e ("btrfs: set page extent mapped after read_folio in relocate_one_page")
    CC: stable@vger.kernel.org # 6.1+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Boris Burkov <boris@bur.io>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: fix race with memory mapped writes when activating swap file [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Fri Nov 29 12:25:30 2024 +0000

    btrfs: fix race with memory mapped writes when activating swap file
    
    commit 0525064bb82e50d59543b62b9d41a606198a4a44 upstream.
    
    When activating the swap file we flush all delalloc and wait for ordered
    extent completion, so that we don't miss any delalloc and extents before
    we check that the file's extent layout is usable for a swap file and
    activate the swap file. We are called with the inode's VFS lock acquired,
    so we won't race with buffered and direct IO writes, however we can still
    race with memory mapped writes since they don't acquire the inode's VFS
    lock. The race window is between flushing all delalloc and locking the
    whole file's extent range, since memory mapped writes lock an extent range
    with the length of a page.
    
    Fix this by acquiring the inode's mmap lock before we flush delalloc.
    
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: fix swap file activation failure due to extents that used to be shared [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Dec 9 12:54:14 2024 +0000

    btrfs: fix swap file activation failure due to extents that used to be shared
    
    commit 03018e5d8508254534511d40fb57bc150e6a87f2 upstream.
    
    When activating a swap file, to determine if an extent is shared we use
    can_nocow_extent(), which ends up at btrfs_cross_ref_exist(). That helper
    is meant to be quick because it's used in the NOCOW write path, when
    flushing delalloc and when doing a direct IO write, however it does return
    some false positives, meaning it may indicate that an extent is shared
    even if it's no longer the case. For the write path this is fine, we just
    do a unnecessary COW operation instead of doing a more rigorous check
    which would be too heavy (calling btrfs_is_data_extent_shared()).
    
    However when activating a swap file, the false positives simply result
    in a failure, which is confusing for users/applications. One particular
    case where this happens is when a data extent only has 1 reference but
    that reference is not inlined in the extent item located in the extent
    tree - this happens when we create more than 33 references for an extent
    and then delete those 33 references plus every other non-inline reference
    except one. The function check_committed_ref() assumes that if the size
    of an extent item doesn't match the size of struct btrfs_extent_item
    plus the size of an inline reference (plus an owner reference in case
    simple quotas are enabled), then the extent is shared - that is not the
    case however, we can have a single reference but it's not inlined - the
    reason we do this is to be fast and avoid inspecting non-inline references
    which may be located in another leaf of the extent tree, slowing down
    write paths.
    
    The following test script reproduces the bug:
    
       $ cat test.sh
       #!/bin/bash
    
       DEV=/dev/sdi
       MNT=/mnt/sdi
       NUM_CLONES=50
    
       umount $DEV &> /dev/null
    
       run_test()
       {
            local sync_after_add_reflinks=$1
            local sync_after_remove_reflinks=$2
    
            mkfs.btrfs -f $DEV > /dev/null
            #mkfs.xfs -f $DEV > /dev/null
            mount $DEV $MNT
    
            touch $MNT/foo
            chmod 0600 $MNT/foo
            # On btrfs the file must be NOCOW.
            chattr +C $MNT/foo &> /dev/null
            xfs_io -s -c "pwrite -b 1M 0 1M" $MNT/foo
            mkswap $MNT/foo
    
            for ((i = 1; i <= $NUM_CLONES; i++)); do
                touch $MNT/foo_clone_$i
                chmod 0600 $MNT/foo_clone_$i
                # On btrfs the file must be NOCOW.
                chattr +C $MNT/foo_clone_$i &> /dev/null
                cp --reflink=always $MNT/foo $MNT/foo_clone_$i
            done
    
            if [ $sync_after_add_reflinks -ne 0 ]; then
                # Flush delayed refs and commit current transaction.
                sync -f $MNT
            fi
    
            # Remove the original file and all clones except the last.
            rm -f $MNT/foo
            for ((i = 1; i < $NUM_CLONES; i++)); do
                rm -f $MNT/foo_clone_$i
            done
    
            if [ $sync_after_remove_reflinks -ne 0 ]; then
                # Flush delayed refs and commit current transaction.
                sync -f $MNT
            fi
    
            # Now use the last clone as a swap file. It should work since
            # its extent are not shared anymore.
            swapon $MNT/foo_clone_${NUM_CLONES}
            swapoff $MNT/foo_clone_${NUM_CLONES}
    
            umount $MNT
       }
    
       echo -e "\nTest without sync after creating and removing clones"
       run_test 0 0
    
       echo -e "\nTest with sync after creating clones"
       run_test 1 0
    
       echo -e "\nTest with sync after removing clones"
       run_test 0 1
    
       echo -e "\nTest with sync after creating and removing clones"
       run_test 1 1
    
    Running the test:
    
       $ ./test.sh
       Test without sync after creating and removing clones
       wrote 1048576/1048576 bytes at offset 0
       1 MiB, 1 ops; 0.0017 sec (556.793 MiB/sec and 556.7929 ops/sec)
       Setting up swapspace version 1, size = 1020 KiB (1044480 bytes)
       no label, UUID=a6b9c29e-5ef4-4689-a8ac-bc199c750f02
       swapon: /mnt/sdi/foo_clone_50: swapon failed: Invalid argument
       swapoff: /mnt/sdi/foo_clone_50: swapoff failed: Invalid argument
    
       Test with sync after creating clones
       wrote 1048576/1048576 bytes at offset 0
       1 MiB, 1 ops; 0.0036 sec (271.739 MiB/sec and 271.7391 ops/sec)
       Setting up swapspace version 1, size = 1020 KiB (1044480 bytes)
       no label, UUID=5e9008d6-1f7a-4948-a1b4-3f30aba20a33
       swapon: /mnt/sdi/foo_clone_50: swapon failed: Invalid argument
       swapoff: /mnt/sdi/foo_clone_50: swapoff failed: Invalid argument
    
       Test with sync after removing clones
       wrote 1048576/1048576 bytes at offset 0
       1 MiB, 1 ops; 0.0103 sec (96.665 MiB/sec and 96.6651 ops/sec)
       Setting up swapspace version 1, size = 1020 KiB (1044480 bytes)
       no label, UUID=916c2740-fa9f-4385-9f06-29c3f89e4764
    
       Test with sync after creating and removing clones
       wrote 1048576/1048576 bytes at offset 0
       1 MiB, 1 ops; 0.0031 sec (314.268 MiB/sec and 314.2678 ops/sec)
       Setting up swapspace version 1, size = 1020 KiB (1044480 bytes)
       no label, UUID=06aab1dd-4d90-49c0-bd9f-3a8db4e2f912
       swapon: /mnt/sdi/foo_clone_50: swapon failed: Invalid argument
       swapoff: /mnt/sdi/foo_clone_50: swapoff failed: Invalid argument
    
    Fix this by reworking btrfs_swap_activate() to instead of using extent
    maps and checking for shared extents with can_nocow_extent(), iterate
    over the inode's file extent items and use the accurate
    btrfs_is_data_extent_shared().
    
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: fix transaction atomicity bug when enabling simple quotas [+ + +]
Author: Julian Sun <sunjunchao2870@gmail.com>
Date:   Wed Dec 11 19:13:15 2024 +0800

    btrfs: fix transaction atomicity bug when enabling simple quotas
    
    commit f2363e6fcc7938c5f0f6ac066fad0dd247598b51 upstream.
    
    Set squota incompat bit before committing the transaction that enables
    the feature.
    
    With the config CONFIG_BTRFS_ASSERT enabled, an assertion
    failure occurs regarding the simple quota feature.
    
      [5.596534] assertion failed: btrfs_fs_incompat(fs_info, SIMPLE_QUOTA), in fs/btrfs/qgroup.c:365
      [5.597098] ------------[ cut here ]------------
      [5.597371] kernel BUG at fs/btrfs/qgroup.c:365!
      [5.597946] CPU: 1 UID: 0 PID: 268 Comm: mount Not tainted 6.13.0-rc2-00031-gf92f4749861b #146
      [5.598450] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
      [5.599008] RIP: 0010:btrfs_read_qgroup_config+0x74d/0x7a0
      [5.604303]  <TASK>
      [5.605230]  ? btrfs_read_qgroup_config+0x74d/0x7a0
      [5.605538]  ? exc_invalid_op+0x56/0x70
      [5.605775]  ? btrfs_read_qgroup_config+0x74d/0x7a0
      [5.606066]  ? asm_exc_invalid_op+0x1f/0x30
      [5.606441]  ? btrfs_read_qgroup_config+0x74d/0x7a0
      [5.606741]  ? btrfs_read_qgroup_config+0x74d/0x7a0
      [5.607038]  ? try_to_wake_up+0x317/0x760
      [5.607286]  open_ctree+0xd9c/0x1710
      [5.607509]  btrfs_get_tree+0x58a/0x7e0
      [5.608002]  vfs_get_tree+0x2e/0x100
      [5.608224]  fc_mount+0x16/0x60
      [5.608420]  btrfs_get_tree+0x2f8/0x7e0
      [5.608897]  vfs_get_tree+0x2e/0x100
      [5.609121]  path_mount+0x4c8/0xbc0
      [5.609538]  __x64_sys_mount+0x10d/0x150
    
    The issue can be easily reproduced using the following reproducer:
    
      root@q:linux# cat repro.sh
      set -e
    
      mkfs.btrfs -q -f /dev/sdb
      mount /dev/sdb /mnt/btrfs
      btrfs quota enable -s /mnt/btrfs
      umount /mnt/btrfs
      mount /dev/sdb /mnt/btrfs
    
    The issue is that when enabling quotas, at btrfs_quota_enable(), we set
    BTRFS_QGROUP_STATUS_FLAG_SIMPLE_MODE at fs_info->qgroup_flags and persist
    it in the quota root in the item with the key BTRFS_QGROUP_STATUS_KEY, but
    we only set the incompat bit BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA after we
    commit the transaction used to enable simple quotas.
    
    This means that if after that transaction commit we unmount the filesystem
    without starting and committing any other transaction, or we have a power
    failure, the next time we mount the filesystem we will find the flag
    BTRFS_QGROUP_STATUS_FLAG_SIMPLE_MODE set in the item with the key
    BTRFS_QGROUP_STATUS_KEY but we will not find the incompat bit
    BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA set in the superblock, triggering an
    assertion failure at:
    
      btrfs_read_qgroup_config() -> qgroup_read_enable_gen()
    
    To fix this issue, set the BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA flag
    immediately after setting the BTRFS_QGROUP_STATUS_FLAG_SIMPLE_MODE.
    This ensures that both flags are flushed to disk within the same
    transaction.
    
    Fixes: 182940f4f4db ("btrfs: qgroup: add new quota mode for simple quotas")
    CC: stable@vger.kernel.org # 6.6+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Julian Sun <sunjunchao2870@gmail.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: fix use-after-free when COWing tree bock and tracing is enabled [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Dec 11 16:08:07 2024 +0000

    btrfs: fix use-after-free when COWing tree bock and tracing is enabled
    
    commit 44f52bbe96dfdbe4aca3818a2534520082a07040 upstream.
    
    When a COWing a tree block, at btrfs_cow_block(), and we have the
    tracepoint trace_btrfs_cow_block() enabled and preemption is also enabled
    (CONFIG_PREEMPT=y), we can trigger a use-after-free in the COWed extent
    buffer while inside the tracepoint code. This is because in some paths
    that call btrfs_cow_block(), such as btrfs_search_slot(), we are holding
    the last reference on the extent buffer @buf so btrfs_force_cow_block()
    drops the last reference on the @buf extent buffer when it calls
    free_extent_buffer_stale(buf), which schedules the release of the extent
    buffer with RCU. This means that if we are on a kernel with preemption,
    the current task may be preempted before calling trace_btrfs_cow_block()
    and the extent buffer already released by the time trace_btrfs_cow_block()
    is called, resulting in a use-after-free.
    
    Fix this by moving the trace_btrfs_cow_block() from btrfs_cow_block() to
    btrfs_force_cow_block() before the COWed extent buffer is freed.
    This also has a side effect of invoking the tracepoint in the tree defrag
    code, at defrag.c:btrfs_realloc_node(), since btrfs_force_cow_block() is
    called there, but this is fine and it was actually missing there.
    
    Reported-by: syzbot+8517da8635307182c8a5@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/linux-btrfs/6759a9b9.050a0220.1ac542.000d.GAE@google.com/
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: sysfs: fix direct super block member reads [+ + +]
Author: Qu Wenruo <wqu@suse.com>
Date:   Wed Dec 18 17:00:56 2024 +1030

    btrfs: sysfs: fix direct super block member reads
    
    commit fca432e73db2bec0fdbfbf6d98d3ebcd5388a977 upstream.
    
    The following sysfs entries are reading super block member directly,
    which can have a different endian and cause wrong values:
    
    - sys/fs/btrfs/<uuid>/nodesize
    - sys/fs/btrfs/<uuid>/sectorsize
    - sys/fs/btrfs/<uuid>/clone_alignment
    
    Thankfully those values (nodesize and sectorsize) are always aligned
    inside the btrfs_super_block, so it won't trigger unaligned read errors,
    just endian problems.
    
    Fix them by using the native cached members instead.
    
    Fixes: df93589a1737 ("btrfs: export more from FS_INFO to sysfs")
    CC: stable@vger.kernel.org
    Reviewed-by: Naohiro Aota <naohiro.aota@wdc.com>
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ceph: allocate sparse_ext map only for sparse reads [+ + +]
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Sat Dec 7 17:33:25 2024 +0100

    ceph: allocate sparse_ext map only for sparse reads
    
    [ Upstream commit 18d44c5d062b97b97bb0162d9742440518958dc1 ]
    
    If mounted with sparseread option, ceph_direct_read_write() ends up
    making an unnecessarily allocation for O_DIRECT writes.
    
    Fixes: 03bc06c7b0bd ("ceph: add new mount option to enable sparse reads")
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Alex Markuze <amarkuze@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dmaengine: amd: qdma: Remove using the private get and set dma_ops APIs [+ + +]
Author: Lizhi Hou <lizhi.hou@amd.com>
Date:   Wed Sep 18 11:10:22 2024 -0700

    dmaengine: amd: qdma: Remove using the private get and set dma_ops APIs
    
    commit dcbef0798eb825cd584f7a93f62bed63f7fbbfc9 upstream.
    
    The get_dma_ops and set_dma_ops APIs were never for driver to use. Remove
    these calls from QDMA driver. Instead, pass the DMA device pointer from the
    qdma_platdata structure.
    
    Fixes: 73d5fc92a11c ("dmaengine: amd: qdma: Add AMD QDMA driver")
    Signed-off-by: Lizhi Hou <lizhi.hou@amd.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20240918181022.2155715-1-lizhi.hou@amd.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: apple-admac: Avoid accessing registers in probe [+ + +]
Author: Sasha Finkelstein <fnkl.kernel@gmail.com>
Date:   Sun Nov 24 16:48:28 2024 +0100

    dmaengine: apple-admac: Avoid accessing registers in probe
    
    commit 8d55e8a16f019211163f1180fd9f9fbe05901900 upstream.
    
    The ADMAC attached to the AOP has complex power sequencing, and is
    power gated when the probe callback runs. Move the register reads
    to other functions, where we can guarantee that the hardware is
    switched on.
    
    Fixes: 568aa6dd641f ("dmaengine: apple-admac: Allocate cache SRAM to channels")
    Signed-off-by: Sasha Finkelstein <fnkl.kernel@gmail.com>
    Link: https://lore.kernel.org/r/20241124-admac-power-v1-1-58f2165a4d55@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: at_xdmac: avoid null_prt_deref in at_xdmac_prep_dma_memset [+ + +]
Author: Chen Ridong <chenridong@huawei.com>
Date:   Tue Oct 29 08:28:45 2024 +0000

    dmaengine: at_xdmac: avoid null_prt_deref in at_xdmac_prep_dma_memset
    
    commit c43ec96e8d34399bd9dab2f2dc316b904892133f upstream.
    
    The at_xdmac_memset_create_desc may return NULL, which will lead to a
    null pointer dereference. For example, the len input is error, or the
    atchan->free_descs_list is empty and memory is exhausted. Therefore, add
    check to avoid this.
    
    Fixes: b206d9a23ac7 ("dmaengine: xdmac: Add memset support")
    Signed-off-by: Chen Ridong <chenridong@huawei.com>
    Link: https://lore.kernel.org/r/20241029082845.1185380-1-chenridong@huaweicloud.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: dw: Select only supported masters for ACPI devices [+ + +]
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Mon Nov 4 11:50:50 2024 +0200

    dmaengine: dw: Select only supported masters for ACPI devices
    
    commit f0e870a0e9c5521f2952ea9f3ea9d3d122631a89 upstream.
    
    The recently submitted fix-commit revealed a problem in the iDMA 32-bit
    platform code. Even though the controller supported only a single master
    the dw_dma_acpi_filter() method hard-coded two master interfaces with IDs
    0 and 1. As a result the sanity check implemented in the commit
    b336268dde75 ("dmaengine: dw: Add peripheral bus width verification")
    got incorrect interface data width and thus prevented the client drivers
    from configuring the DMA-channel with the EINVAL error returned. E.g.,
    the next error was printed for the PXA2xx SPI controller driver trying
    to configure the requested channels:
    
    > [  164.525604] pxa2xx_spi_pci 0000:00:07.1: DMA slave config failed
    > [  164.536105] pxa2xx_spi_pci 0000:00:07.1: failed to get DMA TX descriptor
    > [  164.543213] spidev spi-SPT0001:00: SPI transfer failed: -16
    
    The problem would have been spotted much earlier if the iDMA 32-bit
    controller supported more than one master interfaces. But since it
    supports just a single master and the iDMA 32-bit specific code just
    ignores the master IDs in the CTLLO preparation method, the issue has
    been gone unnoticed so far.
    
    Fix the problem by specifying the default master ID for both memory
    and peripheral devices in the driver data. Thus the issue noticed for
    the iDMA 32-bit controllers will be eliminated and the ACPI-probed
    DW DMA controllers will be configured with the correct master ID by
    default.
    
    Cc: stable@vger.kernel.org
    Fixes: b336268dde75 ("dmaengine: dw: Add peripheral bus width verification")
    Fixes: 199244d69458 ("dmaengine: dw: add support of iDMA 32-bit hardware")
    Reported-by: Ferry Toth <fntoth@gmail.com>
    Closes: https://lore.kernel.org/dmaengine/ZuXbCKUs1iOqFu51@black.fi.intel.com/
    Reported-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Closes: https://lore.kernel.org/dmaengine/ZuXgI-VcHpMgbZ91@black.fi.intel.com/
    Tested-by: Ferry Toth <fntoth@gmail.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20241104095142.157925-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: fsl-edma: implement the cleanup path of fsl_edma3_attach_pd() [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Sat Dec 21 16:57:12 2024 +0900

    dmaengine: fsl-edma: implement the cleanup path of fsl_edma3_attach_pd()
    
    commit ccfa3131d4a0347988e73638edea5c8281b6d2c7 upstream.
    
    Current implementation of fsl_edma3_attach_pd() does not provide a
    cleanup path, resulting in a memory leak. For example,
    dev_pm_domain_detach() is not called after dev_pm_domain_attach_by_id(),
    and the device link created with the DL_FLAG_STATELESS is not released
    explicitly.
    
    Therefore, provide a cleanup function fsl_edma3_detach_pd() and call it
    upon failure. Also add a devm_add_action_or_reset() call with this
    function after a successful fsl_edma3_attach_pd().
    
    Fixes: 72f5801a4e2b ("dmaengine: fsl-edma: integrate v3 support")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Link: https://lore.kernel.org/r/20241221075712.3297200-1-joe@pf.is.s.u-tokyo.ac.jp
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: loongson2-apb: Change GENMASK to GENMASK_ULL [+ + +]
Author: Binbin Zhou <zhoubinbin@loongson.cn>
Date:   Mon Dec 30 09:39:19 2024 +0800

    dmaengine: loongson2-apb: Change GENMASK to GENMASK_ULL
    
    [ Upstream commit 4b65d5322e1d8994acfdb9b867aa00bdb30d177b ]
    
    Fix the following smatch static checker warning:
    
    drivers/dma/loongson2-apb-dma.c:189 ls2x_dma_write_cmd()
    warn: was expecting a 64 bit value instead of '~(((0)) + (((~((0))) - (((1)) << (0)) + 1) & (~((0)) >> ((8 * 4) - 1 - (4)))))'
    
    The GENMASK macro used "unsigned long", which caused build issues when
    using a 32-bit toolchain because it would try to access bits > 31. This
    patch switches GENMASK to GENMASK_ULL, which uses "unsigned long long".
    
    Fixes: 71e7d3cb6e55 ("dmaengine: ls2x-apb: New driver for the Loongson LS2X APB DMA controller")
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Closes: https://lore.kernel.org/all/87cdc025-7246-4548-85ca-3d36fdc2be2d@stanley.mountain/
    Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
    Link: https://lore.kernel.org/r/20241028093413.1145820-1-zhoubinbin@loongson.cn
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dmaengine: mv_xor: fix child node refcount handling in early exit [+ + +]
Author: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Date:   Fri Oct 11 22:57:59 2024 +0200

    dmaengine: mv_xor: fix child node refcount handling in early exit
    
    commit 362f1bf98a3ecb5a2a4fcbdaa9718c8403beceb2 upstream.
    
    The for_each_child_of_node() loop requires explicit calls to
    of_node_put() to decrement the child's refcount upon early exits (break,
    goto, return).
    
    Add the missing calls in the two early exits before the goto
    instructions.
    
    Cc: stable@vger.kernel.org
    Fixes: f7d12ef53ddf ("dma: mv_xor: add Device Tree binding")
    Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
    Link: https://lore.kernel.org/r/20241011-dma_mv_xor_of_node_put-v1-1-3c2de819f463@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: tegra: Return correct DMA status when paused [+ + +]
Author: Akhil R <akhilrajeev@nvidia.com>
Date:   Thu Dec 12 18:14:12 2024 +0530

    dmaengine: tegra: Return correct DMA status when paused
    
    commit ebc008699fd95701c9af5ebaeb0793eef81a71d5 upstream.
    
    Currently, the driver does not return the correct DMA status when a DMA
    pause is issued by the client drivers. This causes GPCDMA users to
    assume that DMA is still running, while in reality, the DMA is paused.
    
    Return DMA_PAUSED for tx_status() if the channel is paused in the middle
    of a transfer.
    
    Fixes: ee17028009d4 ("dmaengine: tegra: Add tegra gpcdma driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
    Signed-off-by: Kartik Rajput <kkartik@nvidia.com>
    Link: https://lore.kernel.org/r/20241212124412.5650-1-kkartik@nvidia.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/dp_mst: Ensure mst_primary pointer is valid in drm_dp_mst_handle_up_req() [+ + +]
Author: Imre Deak <imre.deak@intel.com>
Date:   Wed Dec 4 15:20:07 2024 +0200

    drm/dp_mst: Ensure mst_primary pointer is valid in drm_dp_mst_handle_up_req()
    
    [ Upstream commit e54b00086f7473dbda1a7d6fc47720ced157c6a8 ]
    
    While receiving an MST up request message from one thread in
    drm_dp_mst_handle_up_req(), the MST topology could be removed from
    another thread via drm_dp_mst_topology_mgr_set_mst(false), freeing
    mst_primary and setting drm_dp_mst_topology_mgr::mst_primary to NULL.
    This could lead to a NULL deref/use-after-free of mst_primary in
    drm_dp_mst_handle_up_req().
    
    Avoid the above by holding a reference for mst_primary in
    drm_dp_mst_handle_up_req() while it's used.
    
    v2: Fix kfreeing the request if getting an mst_primary reference fails.
    
    Cc: Lyude Paul <lyude@redhat.com>
    Reviewed-by: Lyude Paul <lyude@redhat.com> (v1)
    Signed-off-by: Imre Deak <imre.deak@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241204132007.3132494-1-imre.deak@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/xe: Move the coredump registration to the worker thread [+ + +]
Author: John Harrison <John.C.Harrison@Intel.com>
Date:   Thu Nov 28 13:08:23 2024 -0800

    drm/xe: Move the coredump registration to the worker thread
    
    [ Upstream commit 5dce85fecb87751ec94526e1ac516dd7871e2e0c ]
    
    Adding lockdep checking to the coredump code showed that there was an
    existing violation. The dev_coredumpm_timeout() call is used to
    register the dump with the base coredump subsystem. However, that
    makes multiple memory allocations, only some of which use the GFP_
    flags passed in. So that also needs to be deferred to the worker
    function where it is safe to allocate with arbitrary flags.
    
    In order to not add protoypes for the callback functions, moving the
    _timeout call also means moving the worker thread function to later in
    the file.
    
    v2: Rebased after other changes to the worker function.
    
    Fixes: e799485044cb ("drm/xe: Introduce the dev_coredump infrastructure.")
    Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
    Cc: Matthew Brost <matthew.brost@intel.com>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Francois Dugast <francois.dugast@intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: Lucas De Marchi <lucas.demarchi@intel.com>
    Cc: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
    Cc: Sumit Semwal <sumit.semwal@linaro.org>
    Cc: "Christian König" <christian.koenig@amd.com>
    Cc: intel-xe@lists.freedesktop.org
    Cc: linux-media@vger.kernel.org
    Cc: dri-devel@lists.freedesktop.org
    Cc: linaro-mm-sig@lists.linaro.org
    Cc: <stable@vger.kernel.org> # v6.8+
    Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
    Reviewed-by: Matthew Brost <matthew.brost@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241128210824.3302147-3-John.C.Harrison@Intel.com
    (cherry picked from commit 90f51a7f4ec1004fc4ddfbc6d1f1068d85ef4771)
    Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/xe: Take PM ref in delayed snapshot capture worker [+ + +]
Author: Matthew Brost <matthew.brost@intel.com>
Date:   Tue Nov 26 09:46:11 2024 -0800

    drm/xe: Take PM ref in delayed snapshot capture worker
    
    [ Upstream commit aef0b4a07277f715bfc2a0d76a16da2bc4e89205 ]
    
    The delayed snapshot capture worker can access the GPU or VRAM both of
    which require a PM reference. Take a reference in this worker.
    
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Fixes: 4f04d07c0a94 ("drm/xe: Faster devcoredump")
    Signed-off-by: Matthew Brost <matthew.brost@intel.com>
    Reviewed-by: Matthew Auld <matthew.auld@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241126174615.2665852-5-matthew.brost@intel.com
    (cherry picked from commit 1c6878af115a4586a40d6c14d530fa9f93e0bd83)
    Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
    Stable-dep-of: 5dce85fecb87 ("drm/xe: Move the coredump registration to the worker thread")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fork: avoid inappropriate uprobe access to invalid mm [+ + +]
Author: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Date:   Tue Dec 10 17:24:12 2024 +0000

    fork: avoid inappropriate uprobe access to invalid mm
    
    [ Upstream commit 8ac662f5da19f5873fdd94c48a5cdb45b2e1b58f ]
    
    If dup_mmap() encounters an issue, currently uprobe is able to access the
    relevant mm via the reverse mapping (in build_map_info()), and if we are
    very unlucky with a race window, observe invalid XA_ZERO_ENTRY state which
    we establish as part of the fork error path.
    
    This occurs because uprobe_write_opcode() invokes anon_vma_prepare() which
    in turn invokes find_mergeable_anon_vma() that uses a VMA iterator,
    invoking vma_iter_load() which uses the advanced maple tree API and thus
    is able to observe XA_ZERO_ENTRY entries added to dup_mmap() in commit
    d24062914837 ("fork: use __mt_dup() to duplicate maple tree in
    dup_mmap()").
    
    This change was made on the assumption that only process tear-down code
    would actually observe (and make use of) these values.  However this very
    unlikely but still possible edge case with uprobes exists and
    unfortunately does make these observable.
    
    The uprobe operation prevents races against the dup_mmap() operation via
    the dup_mmap_sem semaphore, which is acquired via uprobe_start_dup_mmap()
    and dropped via uprobe_end_dup_mmap(), and held across
    register_for_each_vma() prior to invoking build_map_info() which does the
    reverse mapping lookup.
    
    Currently these are acquired and dropped within dup_mmap(), which exposes
    the race window prior to error handling in the invoking dup_mm() which
    tears down the mm.
    
    We can avoid all this by just moving the invocation of
    uprobe_start_dup_mmap() and uprobe_end_dup_mmap() up a level to dup_mm()
    and only release this lock once the dup_mmap() operation succeeds or clean
    up is done.
    
    This means that the uprobe code can never observe an incompletely
    constructed mm and resolves the issue in this case.
    
    Link: https://lkml.kernel.org/r/20241210172412.52995-1-lorenzo.stoakes@oracle.com
    Fixes: d24062914837 ("fork: use __mt_dup() to duplicate maple tree in dup_mmap()")
    Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Reported-by: syzbot+2d788f4f7cb660dac4b7@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/6756d273.050a0220.2477f.003d.GAE@google.com/
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jann Horn <jannh@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Liam R. Howlett <Liam.Howlett@Oracle.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Peng Zhang <zhangpeng.00@bytedance.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: David Hildenbrand <david@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
freezer, sched: Report frozen tasks as 'D' instead of 'R' [+ + +]
Author: Chen Ridong <chenridong@huawei.com>
Date:   Tue Dec 17 00:48:18 2024 +0000

    freezer, sched: Report frozen tasks as 'D' instead of 'R'
    
    [ Upstream commit f718faf3940e95d5d34af9041f279f598396ab7d ]
    
    Before commit:
    
      f5d39b020809 ("freezer,sched: Rewrite core freezer logic")
    
    the frozen task stat was reported as 'D' in cgroup v1.
    
    However, after rewriting the core freezer logic, the frozen task stat is
    reported as 'R'. This is confusing, especially when a task with stat of
    'S' is frozen.
    
    This bug can be reproduced with these steps:
    
            $ cd /sys/fs/cgroup/freezer/
            $ mkdir test
            $ sleep 1000 &
            [1] 739         // task whose stat is 'S'
            $ echo 739 > test/cgroup.procs
            $ echo FROZEN > test/freezer.state
            $ ps -aux | grep 739
            root     739  0.1  0.0   8376  1812 pts/0    R    10:56   0:00 sleep 1000
    
    As shown above, a task whose stat is 'S' was changed to 'R' when it was
    frozen.
    
    To solve this regression, simply maintain the same reported state as
    before the rewrite.
    
    [ mingo: Enhanced the changelog and comments ]
    
    Fixes: f5d39b020809 ("freezer,sched: Rewrite core freezer logic")
    Signed-off-by: Chen Ridong <chenridong@huawei.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Acked-by: Tejun Heo <tj@kernel.org>
    Acked-by: Michal Koutný <mkoutny@suse.com>
    Link: https://lore.kernel.org/r/20241217004818.3200515-1-chenridong@huaweicloud.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i2c: imx: add imx7d compatible string for applying erratum ERR007805 [+ + +]
Author: Carlos Song <carlos.song@nxp.com>
Date:   Wed Dec 18 12:42:38 2024 +0800

    i2c: imx: add imx7d compatible string for applying erratum ERR007805
    
    commit e0cec363197e41af870613e8e17b30bf0e3d41b5 upstream.
    
    Compatible string "fsl,imx7d-i2c" is not exited at i2c-imx driver
    compatible string table, at the result, "fsl,imx21-i2c" will be
    matched, but it will cause erratum ERR007805 not be applied in fact.
    
    So Add "fsl,imx7d-i2c" compatible string in i2c-imx driver to apply
    the erratum ERR007805(https://www.nxp.com/docs/en/errata/IMX7DS_3N09P.pdf).
    
    "
    ERR007805 I2C: When the I2C clock speed is configured for 400 kHz,
    the SCL low period violates the I2C spec of 1.3 uS min
    
    Description: When the I2C module is programmed to operate at the
    maximum clock speed of 400 kHz (as defined by the I2C spec), the SCL
    clock low period violates the I2C spec of 1.3 uS min. The user must
    reduce the clock speed to obtain the SCL low time to meet the 1.3us
    I2C minimum required. This behavior means the SoC is not compliant
    to the I2C spec at 400kHz.
    
    Workaround: To meet the clock low period requirement in fast speed
    mode, SCL must be configured to 384KHz or less.
    "
    
    "fsl,imx7d-i2c" already is documented in binding doc. This erratum
    fix has been included in imx6_i2c_hwdata and it is the same in all
    I.MX6/7/8, so just reuse it.
    
    Fixes: 39c025721d70 ("i2c: imx: Implement errata ERR007805 or e7805 bus frequency limit")
    Cc: stable@vger.kernel.org # v5.18+
    Signed-off-by: Carlos Song <carlos.song@nxp.com>
    Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Fixes: 39c025721d70 ("i2c: imx: Implement errata ERR007805 or e7805 bus frequency limit")
    Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Link: https://lore.kernel.org/r/20241218044238.143414-1-carlos.song@nxp.com
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

i2c: microchip-core: actually use repeated sends [+ + +]
Author: Conor Dooley <conor.dooley@microchip.com>
Date:   Wed Dec 18 12:07:40 2024 +0000

    i2c: microchip-core: actually use repeated sends
    
    commit 9a8f9320d67b27ddd7f1ee88d91820197a0e908f upstream.
    
    At present, where repeated sends are intended to be used, the
    i2c-microchip-core driver sends a stop followed by a start. Lots of i2c
    devices must not malfunction in the face of this behaviour, because the
    driver has operated like this for years! Try to keep track of whether or
    not a repeated send is required, and suppress sending a stop in these
    cases.
    
    CC: stable@vger.kernel.org
    Fixes: 64a6f1c4987e ("i2c: add support for microchip fpga i2c controllers")
    Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
    Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
    Link: https://lore.kernel.org/r/20241218-football-composure-e56df2461461@spud
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

i2c: microchip-core: fix "ghost" detections [+ + +]
Author: Conor Dooley <conor.dooley@microchip.com>
Date:   Wed Dec 18 12:07:42 2024 +0000

    i2c: microchip-core: fix "ghost" detections
    
    commit 49e1f0fd0d4cb03a16b8526c4e683e1958f71490 upstream.
    
    Running i2c-detect currently produces an output akin to:
        0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:                         08 -- 0a -- 0c -- 0e --
    10: 10 -- 12 -- 14 -- 16 -- UU 19 -- 1b -- 1d -- 1f
    20: -- 21 -- 23 -- 25 -- 27 -- 29 -- 2b -- 2d -- 2f
    30: -- -- -- -- -- -- -- -- 38 -- 3a -- 3c -- 3e --
    40: 40 -- 42 -- 44 -- 46 -- 48 -- 4a -- 4c -- 4e --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: 60 -- 62 -- 64 -- 66 -- 68 -- 6a -- 6c -- 6e --
    70: 70 -- 72 -- 74 -- 76 --
    
    This happens because for an i2c_msg with a len of 0 the driver will
    mark the transmission of the message as a success once the START has
    been sent, without waiting for the devices on the bus to respond with an
    ACK/NAK. Since i2cdetect seems to run in a tight loop over all addresses
    the NAK is treated as part of the next test for the next address.
    
    Delete the fast path that marks a message as complete when idev->msg_len
    is zero after sending a START/RESTART since this isn't a valid scenario.
    
    CC: stable@vger.kernel.org
    Fixes: 64a6f1c4987e ("i2c: add support for microchip fpga i2c controllers")
    Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
    Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
    Link: https://lore.kernel.org/r/20241218-outbid-encounter-b2e78b1cc707@spud
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
io_uring/sqpoll: fix sqpoll error handling races [+ + +]
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Thu Dec 26 16:49:23 2024 +0000

    io_uring/sqpoll: fix sqpoll error handling races
    
    commit e33ac68e5e21ec1292490dfe061e75c0dbdd3bd4 upstream.
    
    BUG: KASAN: slab-use-after-free in __lock_acquire+0x370b/0x4a10 kernel/locking/lockdep.c:5089
    Call Trace:
    <TASK>
    ...
    _raw_spin_lock_irqsave+0x3d/0x60 kernel/locking/spinlock.c:162
    class_raw_spinlock_irqsave_constructor include/linux/spinlock.h:551 [inline]
    try_to_wake_up+0xb5/0x23c0 kernel/sched/core.c:4205
    io_sq_thread_park+0xac/0xe0 io_uring/sqpoll.c:55
    io_sq_thread_finish+0x6b/0x310 io_uring/sqpoll.c:96
    io_sq_offload_create+0x162/0x11d0 io_uring/sqpoll.c:497
    io_uring_create io_uring/io_uring.c:3724 [inline]
    io_uring_setup+0x1728/0x3230 io_uring/io_uring.c:3806
    ...
    
    Kun Hu reports that the SQPOLL creating error path has UAF, which
    happens if io_uring_alloc_task_context() fails and then io_sq_thread()
    manages to run and complete before the rest of error handling code,
    which means io_sq_thread_finish() is looking at already killed task.
    
    Note that this is mostly theoretical, requiring fault injection on
    the allocation side to trigger in practice.
    
    Cc: stable@vger.kernel.org
    Reported-by: Kun Hu <huk23@m.fudan.edu.cn>
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/0f2f1aa5729332612bd01fe0f2f385fd1f06ce7c.1735231717.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 6.12.8 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jan 2 10:34:26 2025 +0100

    Linux 6.12.8
    
    Link: https://lore.kernel.org/r/20241230154218.044787220@linuxfoundation.org
    Tested-by: Ronald Warsow <rwarsow@gmx.de>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com>
    Tested-by: kernelci.org bot <bot@kernelci.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Markus Reichelt <lkt+2023@mareichelt.com>
    Tested-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Hardik Garg <hargar@linux.microsoft.com>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
LoongArch: BPF: Adjust the parameter of emit_jirl() [+ + +]
Author: Tiezhu Yang <yangtiezhu@loongson.cn>
Date:   Mon Dec 2 16:42:08 2024 +0800

    LoongArch: BPF: Adjust the parameter of emit_jirl()
    
    [ Upstream commit c1474bb0b7cff4e8481095bd0618b8f6c2f0aeb4 ]
    
    The branch instructions beq, bne, blt, bge, bltu, bgeu and jirl belong
    to the format reg2i16, but the sequence of oprand is different for the
    instruction jirl. So adjust the parameter order of emit_jirl() to make
    it more readable correspond with the Instruction Set Architecture manual.
    
    Here are the instruction formats:
    
      beq     rj, rd, offs16
      bne     rj, rd, offs16
      blt     rj, rd, offs16
      bge     rj, rd, offs16
      bltu    rj, rd, offs16
      bgeu    rj, rd, offs16
      jirl    rd, rj, offs16
    
    Link: https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#branch-instructions
    Suggested-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

LoongArch: Fix reserving screen info memory for above-4G firmware [+ + +]
Author: Huacai Chen <chenhuacai@kernel.org>
Date:   Mon Dec 2 16:42:07 2024 +0800

    LoongArch: Fix reserving screen info memory for above-4G firmware
    
    [ Upstream commit 55dc2f8f263448f1e6c7ef135d08e640d5a4826e ]
    
    Since screen_info.lfb_base is a __u32 type, an above-4G address need an
    ext_lfb_base to present its higher 32bits. In init_screen_info() we can
    use __screen_info_lfb_base() to handle this case for reserving screen
    info memory.
    
    Signed-off-by: Xuefeng Zhao <zhaoxuefeng@loongson.cn>
    Signed-off-by: Jianmin Lv <lvjianmin@loongson.cn>
    Signed-off-by: Tianyang Zhang <zhangtianyang@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
media: dvb-frontends: dib3000mb: fix uninit-value in dib3000_write_reg [+ + +]
Author: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
Date:   Fri May 17 08:58:00 2024 -0700

    media: dvb-frontends: dib3000mb: fix uninit-value in dib3000_write_reg
    
    [ Upstream commit 2dd59fe0e19e1ab955259978082b62e5751924c7 ]
    
    Syzbot reports [1] an uninitialized value issue found by KMSAN in
    dib3000_read_reg().
    
    Local u8 rb[2] is used in i2c_transfer() as a read buffer; in case
    that call fails, the buffer may end up with some undefined values.
    
    Since no elaborate error handling is expected in dib3000_write_reg(),
    simply zero out rb buffer to mitigate the problem.
    
    [1] Syzkaller report
    dvb-usb: bulk message failed: -22 (6/0)
    =====================================================
    BUG: KMSAN: uninit-value in dib3000mb_attach+0x2d8/0x3c0 drivers/media/dvb-frontends/dib3000mb.c:758
     dib3000mb_attach+0x2d8/0x3c0 drivers/media/dvb-frontends/dib3000mb.c:758
     dibusb_dib3000mb_frontend_attach+0x155/0x2f0 drivers/media/usb/dvb-usb/dibusb-mb.c:31
     dvb_usb_adapter_frontend_init+0xed/0x9a0 drivers/media/usb/dvb-usb/dvb-usb-dvb.c:290
     dvb_usb_adapter_init drivers/media/usb/dvb-usb/dvb-usb-init.c:90 [inline]
     dvb_usb_init drivers/media/usb/dvb-usb/dvb-usb-init.c:186 [inline]
     dvb_usb_device_init+0x25a8/0x3760 drivers/media/usb/dvb-usb/dvb-usb-init.c:310
     dibusb_probe+0x46/0x250 drivers/media/usb/dvb-usb/dibusb-mb.c:110
    ...
    Local variable rb created at:
     dib3000_read_reg+0x86/0x4e0 drivers/media/dvb-frontends/dib3000mb.c:54
     dib3000mb_attach+0x123/0x3c0 drivers/media/dvb-frontends/dib3000mb.c:758
    ...
    
    Fixes: 74340b0a8bc6 ("V4L/DVB (4457): Remove dib3000-common-module")
    Reported-by: syzbot+c88fc0ebe0d5935c70da@syzkaller.appspotmail.com
    Signed-off-by: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
    Link: https://lore.kernel.org/r/20240517155800.9881-1-n.zhandarovich@fintech.ru
    Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
 
mm/vmstat: fix a W=1 clang compiler warning [+ + +]
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Thu Dec 12 13:31:26 2024 -0800

    mm/vmstat: fix a W=1 clang compiler warning
    
    [ Upstream commit 30c2de0a267c04046d89e678cc0067a9cfb455df ]
    
    Fix the following clang compiler warning that is reported if the kernel is
    built with W=1:
    
    ./include/linux/vmstat.h:518:36: error: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Werror,-Wenum-enum-conversion]
      518 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
          |                               ~~~~~~~~~~~ ^ ~~~
    
    Link: https://lkml.kernel.org/r/20241212213126.1269116-1-bvanassche@acm.org
    Fixes: 9d7ea9a297e6 ("mm/vmstat: add helpers to get vmstat item names for each enum type")
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Cc: Konstantin Khlebnikov <koct9i@gmail.com>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mtd: diskonchip: Cast an operand to prevent potential overflow [+ + +]
Author: Zichen Xie <zichenxie0106@gmail.com>
Date:   Wed Oct 23 16:13:10 2024 -0500

    mtd: diskonchip: Cast an operand to prevent potential overflow
    
    commit 9b458e8be0d13e81ed03fffa23f8f9b528bbd786 upstream.
    
    There may be a potential integer overflow issue in inftl_partscan().
    parts[0].size is defined as "uint64_t"  while mtd->erasesize and
    ip->firstUnit are defined as 32-bit unsigned integer. The result of
    the calculation will be limited to 32 bits without correct casting.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Zichen Xie <zichenxie0106@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mtd: rawnand: arasan: Fix double assertion of chip-select [+ + +]
Author: Maciej Andrzejewski <maciej.andrzejewski@m-works.net>
Date:   Mon Dec 2 13:51:07 2024 +0100

    mtd: rawnand: arasan: Fix double assertion of chip-select
    
    commit b086a46dae48829e11c0c02580e30d920b76743c upstream.
    
    When two chip-selects are configured in the device tree, and the second is
    a non-native GPIO, both the GPIO-based chip-select and the first native
    chip-select may be asserted simultaneously. This double assertion causes
    incorrect read and write operations.
    
    The issue occurs because when nfc->ncs <= 2, nfc->spare_cs is always
    initialized to 0 due to static initialization. Consequently, when the
    second chip-select (GPIO-based) is selected in anfc_assert_cs(), it is
    detected by anfc_is_gpio_cs(), and nfc->native_cs is assigned the value 0.
    This results in both the GPIO-based chip-select being asserted and the
    NAND controller register receiving 0, erroneously selecting the native
    chip-select.
    
    This patch resolves the issue, as confirmed by oscilloscope testing with
    configurations involving two or more chip-selects in the device tree.
    
    Fixes: acbd3d0945f9 ("mtd: rawnand: arasan: Leverage additional GPIO CS")
    Cc: stable@vger.kernel.org
    Signed-off-by: Maciej Andrzejewski <maciej.andrzejewski@m-works.net>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mtd: rawnand: arasan: Fix missing de-registration of NAND [+ + +]
Author: Maciej Andrzejewski <maciej.andrzejewski@m-works.net>
Date:   Mon Dec 2 19:58:36 2024 +0100

    mtd: rawnand: arasan: Fix missing de-registration of NAND
    
    commit 11e6831fd81468cf48155b9b3c11295c391da723 upstream.
    
    The NAND chip-selects are registered for the Arasan driver during
    initialization but are not de-registered when the driver is unloaded. As a
    result, if the driver is loaded again, the chip-selects remain registered
    and busy, making them unavailable for use.
    
    Fixes: 197b88fecc50 ("mtd: rawnand: arasan: Add new Arasan NAND controller")
    Cc: stable@vger.kernel.org
    Signed-off-by: Maciej Andrzejewski ICEYE <maciej.andrzejewski@m-works.net>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mtd: rawnand: fix double free in atmel_pmecc_create_user() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Wed Oct 23 11:40:56 2024 +0300

    mtd: rawnand: fix double free in atmel_pmecc_create_user()
    
    commit d8e4771f99c0400a1873235704b28bb803c83d17 upstream.
    
    The "user" pointer was converted from being allocated with kzalloc() to
    being allocated by devm_kzalloc().  Calling kfree(user) will lead to a
    double free.
    
    Fixes: 6d734f1bfc33 ("mtd: rawnand: atmel: Fix possible memory leak")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nfsd: restore callback functionality for NFSv4.0 [+ + +]
Author: NeilBrown <neilb@suse.de>
Date:   Fri Dec 20 15:28:18 2024 +1100

    nfsd: restore callback functionality for NFSv4.0
    
    [ Upstream commit 7917f01a286ce01e9c085e24468421f596ee1a0c ]
    
    A recent patch inadvertently broke callbacks for NFSv4.0.
    
    In the 4.0 case we do not expect a session to be found but still need to
    call setup_callback_client() which will not try to dereference it.
    
    This patch moves the check for failure to find a session into the 4.1+
    branch of setup_callback_client()
    
    Fixes: 1e02c641c3a4 ("NFSD: Prevent NULL dereference in nfsd4_process_cb_update()")
    Signed-off-by: NeilBrown <neilb@suse.de>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nfsd: Revert "nfsd: release svc_expkey/svc_export with rcu_work" [+ + +]
Author: Yang Erkun <yangerkun@huawei.com>
Date:   Mon Dec 16 22:21:52 2024 +0800

    nfsd: Revert "nfsd: release svc_expkey/svc_export with rcu_work"
    
    [ Upstream commit 69d803c40edeaf94089fbc8751c9b746cdc35044 ]
    
    This reverts commit f8c989a0c89a75d30f899a7cabdc14d72522bb8d.
    
    Before this commit, svc_export_put or expkey_put will call path_put with
    sync mode. After this commit, path_put will be called with async mode.
    And this can lead the unexpected results show as follow.
    
    mkfs.xfs -f /dev/sda
    echo "/ *(rw,no_root_squash,fsid=0)" > /etc/exports
    echo "/mnt *(rw,no_root_squash,fsid=1)" >> /etc/exports
    exportfs -ra
    service nfs-server start
    mount -t nfs -o vers=4.0 127.0.0.1:/mnt /mnt1
    mount /dev/sda /mnt/sda
    touch /mnt1/sda/file
    exportfs -r
    umount /mnt/sda # failed unexcepted
    
    The touch will finally call nfsd_cross_mnt, add refcount to mount, and
    then add cache_head. Before this commit, exportfs -r will call
    cache_flush to cleanup all cache_head, and path_put in
    svc_export_put/expkey_put will be finished with sync mode. So, the
    latter umount will always success. However, after this commit, path_put
    will be called with async mode, the latter umount may failed, and if
    we add some delay, umount will success too. Personally I think this bug
    and should be fixed. We first revert before bugfix patch, and then fix
    the original bug with a different way.
    
    Fixes: f8c989a0c89a ("nfsd: release svc_expkey/svc_export with rcu_work")
    Signed-off-by: Yang Erkun <yangerkun@huawei.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
objtool: Add bch2_trans_unlocked_error() to bcachefs noreturns [+ + +]
Author: chenchangcheng <ccc194101@163.com>
Date:   Fri Dec 20 15:48:47 2024 +0800

    objtool: Add bch2_trans_unlocked_error() to bcachefs noreturns
    
    [ Upstream commit 31ad36a271290648e7c2288a03d7b933d20254d6 ]
    
    Fix the following objtool warning during build time:
    
        fs/bcachefs/btree_trans_commit.o: warning: objtool: bch2_trans_commit_write_locked.isra.0() falls through to next function do_bch2_trans_commit.isra.0()
        fs/bcachefs/btree_trans_commit.o: warning: objtool: .text: unexpected end of section
    ......
        fs/bcachefs/btree_update.o: warning: objtool: bch2_trans_update_get_key_cache() falls through to next function flush_new_cached_update()
        fs/bcachefs/btree_update.o: warning: objtool: flush_new_cached_update() falls through to next function bch2_trans_update_by_path()
    
    bch2_trans_unlocked_error() is an Obviously Correct (tm) panic() wrapper,
    add it to the list of known noreturns.
    
    [ mingo: Improved the changelog ]
    
    Fixes: fd104e2967b7 ("bcachefs: bch2_trans_verify_not_unlocked()")
    Signed-off-by: chenchangcheng <chenchangcheng@kylinos.cn>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Link: https://lkml.kernel.org/r/20241220074847.3418134-1-ccc194101@163.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PCI/MSI: Handle lack of irqdomain gracefully [+ + +]
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Sat Dec 14 12:50:18 2024 +0100

    PCI/MSI: Handle lack of irqdomain gracefully
    
    commit a60b990798eb17433d0283788280422b1bd94b18 upstream.
    
    Alexandre observed a warning emitted from pci_msi_setup_msi_irqs() on a
    RISCV platform which does not provide PCI/MSI support:
    
     WARNING: CPU: 1 PID: 1 at drivers/pci/msi/msi.h:121 pci_msi_setup_msi_irqs+0x2c/0x32
     __pci_enable_msix_range+0x30c/0x596
     pci_msi_setup_msi_irqs+0x2c/0x32
     pci_alloc_irq_vectors_affinity+0xb8/0xe2
    
    RISCV uses hierarchical interrupt domains and correctly does not implement
    the legacy fallback. The warning triggers from the legacy fallback stub.
    
    That warning is bogus as the PCI/MSI layer knows whether a PCI/MSI parent
    domain is associated with the device or not. There is a check for MSI-X,
    which has a legacy assumption. But that legacy fallback assumption is only
    valid when legacy support is enabled, but otherwise the check should simply
    return -ENOTSUPP.
    
    Loongarch tripped over the same problem and blindly enabled legacy support
    without implementing the legacy fallbacks. There are weak implementations
    which return an error, so the problem was papered over.
    
    Correct pci_msi_domain_supports() to evaluate the legacy mode and add
    the missing supported check into the MSI enable path to complete it.
    
    Fixes: d2a463b29741 ("PCI/MSI: Reject multi-MSI early")
    Reported-by: Alexandre Ghiti <alexghiti@rivosinc.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Alexandre Ghiti <alexghiti@rivosinc.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/all/87ed2a8ow5.ffs@tglx
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
perf/x86/intel/ds: Add PEBS format 6 [+ + +]
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Mon Dec 16 12:45:02 2024 -0800

    perf/x86/intel/ds: Add PEBS format 6
    
    commit b8c3a2502a205321fe66c356f4b70cabd8e1a5fc upstream.
    
    The only difference between 5 and 6 is the new counters snapshotting
    group, without the following counters snapshotting enabling patches,
    it's impossible to utilize the feature in a PEBS record. It's safe to
    share the same code path with format 5.
    
    Add format 6, so the end user can at least utilize the legacy PEBS
    features.
    
    Fixes: a932aa0e868f ("perf/x86: Add Lunar Lake and Arrow Lake support")
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20241216204505.748363-1-kan.liang@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
perf/x86/intel/uncore: Add Clearwater Forest support [+ + +]
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Wed Dec 11 08:11:46 2024 -0800

    perf/x86/intel/uncore: Add Clearwater Forest support
    
    commit b6ccddd6fe1fd49c7a82b6fbed01cccad21a29c7 upstream.
    
    From the perspective of the uncore PMU, the Clearwater Forest is the
    same as the previous Sierra Forest. The only difference is the event
    list, which will be supported in the perf tool later.
    
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20241211161146.235253-1-kan.liang@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
perf/x86/intel: Fix bitmask of OCR and FRONTEND events for LNC [+ + +]
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Mon Dec 16 08:02:52 2024 -0800

    perf/x86/intel: Fix bitmask of OCR and FRONTEND events for LNC
    
    commit aa5d2ca7c179c40669edb5e96d931bf9828dea3d upstream.
    
    The released OCR and FRONTEND events utilized more bits on Lunar Lake
    p-core. The corresponding mask in the extra_regs has to be extended to
    unblock the extra bits.
    
    Add a dedicated intel_lnc_extra_regs.
    
    Fixes: a932aa0e868f ("perf/x86: Add Lunar Lake and Arrow Lake support")
    Reported-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20241216160252.430858-1-kan.liang@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
phy: core: Fix an OF node refcount leakage in _of_phy_get() [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Fri Dec 13 20:36:44 2024 +0800

    phy: core: Fix an OF node refcount leakage in _of_phy_get()
    
    commit 5ebdc6be16c2000e37fcb8b4072d442d268ad492 upstream.
    
    _of_phy_get() will directly return when suffers of_device_is_compatible()
    error, but it forgets to decrease refcount of OF node @args.np before error
    return, the refcount was increased by previous of_parse_phandle_with_args()
    so causes the OF node's refcount leakage.
    
    Fix by decreasing the refcount via of_node_put() before the error return.
    
    Fixes: b7563e2796f8 ("phy: work around 'phys' references to usb-nop-xceiv devices")
    Cc: stable@vger.kernel.org
    Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Link: https://lore.kernel.org/r/20241213-phy_core_fix-v6-4-40ae28f5015a@quicinc.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

phy: core: Fix an OF node refcount leakage in of_phy_provider_lookup() [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Fri Dec 13 20:36:45 2024 +0800

    phy: core: Fix an OF node refcount leakage in of_phy_provider_lookup()
    
    commit a2d633cb1421e679b56f1a9fe1f42f089706f1ed upstream.
    
    For macro for_each_child_of_node(parent, child), refcount of @child has
    been increased before entering its loop body, so normally needs to call
    of_node_put(@child) before returning from the loop body to avoid refcount
    leakage.
    
    of_phy_provider_lookup() has such usage but does not call of_node_put()
    before returning, so cause leakage of the OF node refcount.
    
    Fix by simply calling of_node_put() before returning from the loop body.
    
    The APIs affected by this issue are shown below since they indirectly
    invoke problematic of_phy_provider_lookup().
    phy_get()
    of_phy_get()
    devm_phy_get()
    devm_of_phy_get()
    devm_of_phy_get_by_index()
    
    Fixes: 2a4c37016ca9 ("phy: core: Fix of_phy_provider_lookup to return PHY provider for sub node")
    Cc: stable@vger.kernel.org
    Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Link: https://lore.kernel.org/r/20241213-phy_core_fix-v6-5-40ae28f5015a@quicinc.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

phy: core: Fix that API devm_of_phy_provider_unregister() fails to unregister the phy provider [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Fri Dec 13 20:36:42 2024 +0800

    phy: core: Fix that API devm_of_phy_provider_unregister() fails to unregister the phy provider
    
    commit c0b82ab95b4f1fbc3e3aeab9d829d012669524b6 upstream.
    
    For devm_of_phy_provider_unregister(), its comment says it needs to invoke
    of_phy_provider_unregister() to unregister the phy provider, but it will
    not actually invoke the function since devres_destroy() does not call
    devm_phy_provider_release(), and the missing of_phy_provider_unregister()
    call will cause:
    
    - The phy provider fails to be unregistered.
    - Leak both memory and the OF node refcount.
    
    Fortunately, the faulty API has not been used by current kernel tree.
    Fix by using devres_release() instead of devres_destroy() within the API.
    
    Fixes: ff764963479a ("drivers: phy: add generic PHY framework")
    Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Link: https://lore.kernel.org/stable/20241213-phy_core_fix-v6-2-40ae28f5015a%40quicinc.com
    Link: https://lore.kernel.org/r/20241213-phy_core_fix-v6-2-40ae28f5015a@quicinc.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

phy: core: Fix that API devm_phy_destroy() fails to destroy the phy [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Fri Dec 13 20:36:43 2024 +0800

    phy: core: Fix that API devm_phy_destroy() fails to destroy the phy
    
    commit 4dc48c88fcf82b89fdebd83a906aaa64f40fb8a9 upstream.
    
    For devm_phy_destroy(), its comment says it needs to invoke phy_destroy()
    to destroy the phy, but it will not actually invoke the function since
    devres_destroy() does not call devm_phy_consume(), and the missing
    phy_destroy() call will cause that the phy fails to be destroyed.
    
    Fortunately, the faulty API has not been used by current kernel tree.
    Fix by using devres_release() instead of devres_destroy() within the API.
    
    Fixes: ff764963479a ("drivers: phy: add generic PHY framework")
    Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Link: https://lore.kernel.org/r/20241213-phy_core_fix-v6-3-40ae28f5015a@quicinc.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

phy: core: Fix that API devm_phy_put() fails to release the phy [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Fri Dec 13 20:36:41 2024 +0800

    phy: core: Fix that API devm_phy_put() fails to release the phy
    
    commit fe4bfa9b6d7bd752bfe4700c937f235aa8ce997b upstream.
    
    For devm_phy_put(), its comment says it needs to invoke phy_put() to
    release the phy, but it will not actually invoke the function since
    devres_destroy() does not call devm_phy_release(), and the missing
    phy_put() call will cause:
    
    - The phy fails to be released.
    - devm_phy_put() can not fully undo what API devm_phy_get() does.
    - Leak refcount of both the module and device for below typical usage:
    
      devm_phy_get(); // or its variant
      ...
      err = do_something();
      if (err)
          goto err_out;
      ...
      err_out:
      devm_phy_put(); // leak refcount here
    
      The file(s) affected by this issue are shown below since they have such
      typical usage.
      drivers/pci/controller/cadence/pcie-cadence.c
      drivers/net/ethernet/ti/am65-cpsw-nuss.c
    
    Fix by using devres_release() instead of devres_destroy() within the API.
    
    Fixes: ff764963479a ("drivers: phy: add generic PHY framework")
    Cc: stable@vger.kernel.org
    Cc: Lorenzo Pieralisi <lpieralisi@kernel.org>
    Cc: Krzysztof Wilczyński <kw@linux.com>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Link: https://lore.kernel.org/r/20241213-phy_core_fix-v6-1-40ae28f5015a@quicinc.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

phy: qcom-qmp: Fix register name in RX Lane config of SC8280XP [+ + +]
Author: Krishna Kurapati <quic_kriskura@quicinc.com>
Date:   Tue Nov 12 14:58:31 2024 +0530

    phy: qcom-qmp: Fix register name in RX Lane config of SC8280XP
    
    commit 8886fb3240931a0afce82dea87edfe46bcb0a586 upstream.
    
    In RX Lane configuration sequence of SC8280XP, the register
    V5_RX_UCDR_FO_GAIN is incorrectly spelled as RX_UCDR_SO_GAIN and
    hence the programming sequence is wrong. Fix the register sequence
    accordingly to avoid any compliance failures. This has been tested
    on SA8775P by checking device mode enumeration in SuperSpeed.
    
    Cc: stable@vger.kernel.org
    Fixes: c0c7769cdae2 ("phy: qcom-qmp: Add SC8280XP USB3 UNI phy")
    Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20241112092831.4110942-1-quic_kriskura@quicinc.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

phy: rockchip: naneng-combphy: fix phy reset [+ + +]
Author: Chukun Pan <amadeus@jmu.edu.cn>
Date:   Fri Nov 22 15:30:06 2024 +0800

    phy: rockchip: naneng-combphy: fix phy reset
    
    commit fbcbffbac994aca1264e3c14da96ac9bfd90466e upstream.
    
    Currently, the USB port via combophy on the RK3528/RK3588 SoC is broken.
    
      usb usb8-port1: Cannot enable. Maybe the USB cable is bad?
    
    This is due to the combphy of RK3528/RK3588 SoC has multiple resets, but
    only "phy resets" need assert and deassert, "apb resets" don't need.
    So change the driver to only match the phy resets, which is also what
    the vendor kernel does.
    
    Fixes: 7160820d742a ("phy: rockchip: add naneng combo phy for RK3568")
    Cc: FUKAUMI Naoki <naoki@radxa.com>
    Cc: Michael Zimmermann <sigmaepsilon92@gmail.com>
    Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
    Reviewed-by: Heiko Stuebner <heiko@sntech.de>
    Tested-by: FUKAUMI Naoki <naoki@radxa.com>
    Link: https://lore.kernel.org/r/20241122073006.99309-2-amadeus@jmu.edu.cn
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

phy: rockchip: samsung-hdptx: Set drvdata before enabling runtime PM [+ + +]
Author: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Date:   Wed Oct 23 20:29:54 2024 +0300

    phy: rockchip: samsung-hdptx: Set drvdata before enabling runtime PM
    
    commit 9d23e48654620fdccfcc74cc2cef04eaf7353d07 upstream.
    
    In some cases, rk_hdptx_phy_runtime_resume() may be invoked before
    platform_set_drvdata() is executed in ->probe(), leading to a NULL
    pointer dereference when using the return of dev_get_drvdata().
    
    Ensure platform_set_drvdata() is called before devm_pm_runtime_enable().
    
    Reported-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
    Fixes: 553be2830c5f ("phy: rockchip: Add Samsung HDMI/eDP Combo PHY driver")
    Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
    Reviewed-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20241023-phy-sam-hdptx-rpm-fix-v1-1-87f4c994e346@collabora.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

phy: usb: Toggle the PHY power during init [+ + +]
Author: Justin Chen <justin.chen@broadcom.com>
Date:   Thu Oct 24 14:35:40 2024 -0700

    phy: usb: Toggle the PHY power during init
    
    commit 0a92ea87bdd6f77ca4e17fe19649882cf5209edd upstream.
    
    When bringing up the PHY, it might be in a bad state if left powered.
    One case is we lose the PLL lock if the PLL is gated while the PHY
    is powered. Toggle the PHY power so we can start from a known state.
    
    Fixes: 4e5b9c9a73b3 ("phy: usb: Add support for new Synopsys USB controller on the 7216")
    Signed-off-by: Justin Chen <justin.chen@broadcom.com>
    Acked-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Link: https://lore.kernel.org/r/20241024213540.1059412-1-justin.chen@broadcom.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
platform/chrome: cros_ec_lpc: fix product identity for early Framework Laptops [+ + +]
Author: Dustin L. Howett <dustin@howett.net>
Date:   Tue Dec 24 12:55:58 2024 -0600

    platform/chrome: cros_ec_lpc: fix product identity for early Framework Laptops
    
    commit dcd59d0d7d51b2a4b768fc132b0d74a97dfd6d6a upstream.
    
    The product names for the Framework Laptop (12th and 13th Generation
    Intel Core) are incorrect as of 62be134abf42.
    
    Fixes: 62be134abf42 ("platform/chrome: cros_ec_lpc: switch primary DMI data for Framework Laptop")
    Cc: stable@vger.kernel.org # 6.12.x
    Signed-off-by: Dustin L. Howett <dustin@howett.net>
    Reviewed-by: Thomas Weißschuh <linux@weissschuh.net>
    Link: https://lore.kernel.org/r/20241224-platform-chrome-cros_ec_lpc-fix-product-identity-for-early-framework-laptops-v1-1-0d31d6e1d22c@howett.net
    Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
platform/x86: asus-nb-wmi: Ignore unknown event 0xCF [+ + +]
Author: Armin Wolf <W_Armin@gmx.de>
Date:   Sat Nov 23 23:47:00 2024 +0100

    platform/x86: asus-nb-wmi: Ignore unknown event 0xCF
    
    [ Upstream commit e9fba20c29e27dc99e55e1c550573a114561bf8c ]
    
    On the Asus X541UAK an unknown event 0xCF is emited when the charger
    is plugged in. This is caused by the following AML code:
    
        If (ACPS ())
        {
            ACPF = One
            Local0 = 0x58
            If (ATKP)
            {
                ^^^^ATKD.IANE (0xCF)
            }
        }
        Else
        {
            ACPF = Zero
            Local0 = 0x57
        }
    
        Notify (AC0, 0x80) // Status Change
        If (ATKP)
        {
            ^^^^ATKD.IANE (Local0)
        }
    
        Sleep (0x64)
        PNOT ()
        Sleep (0x0A)
        NBAT (0x80)
    
    Ignore the 0xCF event to silence the unknown event warning.
    
    Reported-by: Pau Espin Pedrol <pespin@espeweb.net>
    Closes: https://lore.kernel.org/platform-driver-x86/54d4860b-ec9c-4992-acf6-db3f90388293@espeweb.net
    Signed-off-by: Armin Wolf <W_Armin@gmx.de>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20241123224700.18530-1-W_Armin@gmx.de
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
power: supply: bq24190: Fix BQ24296 Vbus regulator support [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sat Nov 16 21:36:47 2024 +0100

    power: supply: bq24190: Fix BQ24296 Vbus regulator support
    
    [ Upstream commit b3ded6072c5600704cfa3ce3a8dc8718d34bda66 ]
    
    There are 2 issues with bq24296_set_otg_vbus():
    
    1. When writing the OTG_CONFIG bit it uses POC_CHG_CONFIG_SHIFT which
       should be POC_OTG_CONFIG_SHIFT.
    
    2. When turning the regulator off it never turns charging back on. Note
       this must be done through bq24190_charger_set_charge_type(), to ensure
       that the charge_type property value of none/trickle/fast is honored.
    
    Resolve both issues to fix BQ24296 Vbus regulator support not working.
    
    Fixes: b150a703b56f ("power: supply: bq24190_charger: Add support for BQ24296")
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20241116203648.169100-2-hdegoede@redhat.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

power: supply: cros_charge-control: add mutex for driver data [+ + +]
Author: Thomas Weißschuh <linux@weissschuh.net>
Date:   Sun Dec 8 15:59:26 2024 +0100

    power: supply: cros_charge-control: add mutex for driver data
    
    commit e5f84d1cf562f7b45e28d6e5f6490626f870f81c upstream.
    
    Concurrent accesses through sysfs may lead to inconsistent state in the
    priv data. Introduce a mutex to avoid this.
    
    Fixes: c6ed48ef5259 ("power: supply: add ChromeOS EC based charge control driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Link: https://lore.kernel.org/r/20241208-cros_charge-control-v2-v1-1-8d168d0f08a3@weissschuh.net
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

power: supply: cros_charge-control: allow start_threshold == end_threshold [+ + +]
Author: Thomas Weißschuh <linux@weissschuh.net>
Date:   Sun Dec 8 15:59:27 2024 +0100

    power: supply: cros_charge-control: allow start_threshold == end_threshold
    
    commit e65a1b7fad0e112573eea7d64d4ab4fc513b8695 upstream.
    
    Allow setting the start and stop thresholds to the same value.
    There is no reason to disallow it.
    
    Suggested-by: Thomas Koch <linrunner@gmx.net>
    Fixes: c6ed48ef5259 ("power: supply: add ChromeOS EC based charge control driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Link: https://lore.kernel.org/r/20241208-cros_charge-control-v2-v1-2-8d168d0f08a3@weissschuh.net
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

power: supply: cros_charge-control: hide start threshold on v2 cmd [+ + +]
Author: Thomas Weißschuh <linux@weissschuh.net>
Date:   Sun Dec 8 15:59:28 2024 +0100

    power: supply: cros_charge-control: hide start threshold on v2 cmd
    
    commit c28dc9fc24f5fa802d44ef7620a511035bdd803e upstream.
    
    ECs implementing the v2 command will not stop charging when the end
    threshold is reached. Instead they will begin discharging until the
    start threshold is reached, leading to permanent charge and discharge
    cycles. This defeats the point of the charge control mechanism.
    
    Avoid the issue by hiding the start threshold on v2 systems.
    Instead on those systems program the EC with start == end which forces
    the EC to reach and stay at that level.
    
    v1 does not support thresholds and v3 works correctly,
    at least judging from the code.
    
    Reported-by: Thomas Koch <linrunner@gmx.net>
    Fixes: c6ed48ef5259 ("power: supply: add ChromeOS EC based charge control driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Link: https://lore.kernel.org/r/20241208-cros_charge-control-v2-v1-3-8d168d0f08a3@weissschuh.net
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

power: supply: gpio-charger: Fix set charge current limits [+ + +]
Author: Dimitri Fedrau <dimitri.fedrau@liebherr.com>
Date:   Mon Dec 9 11:46:15 2024 +0100

    power: supply: gpio-charger: Fix set charge current limits
    
    commit afc6e39e824ad0e44b2af50a97885caec8d213d1 upstream.
    
    Fix set charge current limits for devices which allow to set the lowest
    charge current limit to be greater zero. If requested charge current limit
    is below lowest limit, the index equals current_limit_map_size which leads
    to accessing memory beyond allocated memory.
    
    Fixes: be2919d8355e ("power: supply: gpio-charger: add charge-current-limit feature")
    Cc: stable@vger.kernel.org
    Signed-off-by: Dimitri Fedrau <dimitri.fedrau@liebherr.com>
    Link: https://lore.kernel.org/r/20241209-fix-charge-current-limit-v1-1-760d9b8f2af3@liebherr.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
powerpc/pseries/vas: Add close() callback in vas_vm_ops struct [+ + +]
Author: Haren Myneni <haren@linux.ibm.com>
Date:   Fri Dec 13 21:17:58 2024 -0800

    powerpc/pseries/vas: Add close() callback in vas_vm_ops struct
    
    [ Upstream commit 05aa156e156ef3168e7ab8a68721945196495c17 ]
    
    The mapping VMA address is saved in VAS window struct when the
    paste address is mapped. This VMA address is used during migration
    to unmap the paste address if the window is active. The paste
    address mapping will be removed when the window is closed or with
    the munmap(). But the VMA address in the VAS window is not updated
    with munmap() which is causing invalid access during migration.
    
    The KASAN report shows:
    [16386.254991] BUG: KASAN: slab-use-after-free in reconfig_close_windows+0x1a0/0x4e8
    [16386.255043] Read of size 8 at addr c00000014a819670 by task drmgr/696928
    
    [16386.255096] CPU: 29 UID: 0 PID: 696928 Comm: drmgr Kdump: loaded Tainted: G    B              6.11.0-rc5-nxgzip #2
    [16386.255128] Tainted: [B]=BAD_PAGE
    [16386.255148] Hardware name: IBM,9080-HEX Power11 (architected) 0x820200 0xf000007 of:IBM,FW1110.00 (NH1110_016) hv:phyp pSeries
    [16386.255181] Call Trace:
    [16386.255202] [c00000016b297660] [c0000000018ad0ac] dump_stack_lvl+0x84/0xe8 (unreliable)
    [16386.255246] [c00000016b297690] [c0000000006e8a90] print_report+0x19c/0x764
    [16386.255285] [c00000016b297760] [c0000000006e9490] kasan_report+0x128/0x1f8
    [16386.255309] [c00000016b297880] [c0000000006eb5c8] __asan_load8+0xac/0xe0
    [16386.255326] [c00000016b2978a0] [c00000000013f898] reconfig_close_windows+0x1a0/0x4e8
    [16386.255343] [c00000016b297990] [c000000000140e58] vas_migration_handler+0x3a4/0x3fc
    [16386.255368] [c00000016b297a90] [c000000000128848] pseries_migrate_partition+0x4c/0x4c4
    ...
    
    [16386.256136] Allocated by task 696554 on cpu 31 at 16377.277618s:
    [16386.256149]  kasan_save_stack+0x34/0x68
    [16386.256163]  kasan_save_track+0x34/0x80
    [16386.256175]  kasan_save_alloc_info+0x58/0x74
    [16386.256196]  __kasan_slab_alloc+0xb8/0xdc
    [16386.256209]  kmem_cache_alloc_noprof+0x200/0x3d0
    [16386.256225]  vm_area_alloc+0x44/0x150
    [16386.256245]  mmap_region+0x214/0x10c4
    [16386.256265]  do_mmap+0x5fc/0x750
    [16386.256277]  vm_mmap_pgoff+0x14c/0x24c
    [16386.256292]  ksys_mmap_pgoff+0x20c/0x348
    [16386.256303]  sys_mmap+0xd0/0x160
    ...
    
    [16386.256350] Freed by task 0 on cpu 31 at 16386.204848s:
    [16386.256363]  kasan_save_stack+0x34/0x68
    [16386.256374]  kasan_save_track+0x34/0x80
    [16386.256384]  kasan_save_free_info+0x64/0x10c
    [16386.256396]  __kasan_slab_free+0x120/0x204
    [16386.256415]  kmem_cache_free+0x128/0x450
    [16386.256428]  vm_area_free_rcu_cb+0xa8/0xd8
    [16386.256441]  rcu_do_batch+0x2c8/0xcf0
    [16386.256458]  rcu_core+0x378/0x3c4
    [16386.256473]  handle_softirqs+0x20c/0x60c
    [16386.256495]  do_softirq_own_stack+0x6c/0x88
    [16386.256509]  do_softirq_own_stack+0x58/0x88
    [16386.256521]  __irq_exit_rcu+0x1a4/0x20c
    [16386.256533]  irq_exit+0x20/0x38
    [16386.256544]  interrupt_async_exit_prepare.constprop.0+0x18/0x2c
    ...
    
    [16386.256717] Last potentially related work creation:
    [16386.256729]  kasan_save_stack+0x34/0x68
    [16386.256741]  __kasan_record_aux_stack+0xcc/0x12c
    [16386.256753]  __call_rcu_common.constprop.0+0x94/0xd04
    [16386.256766]  vm_area_free+0x28/0x3c
    [16386.256778]  remove_vma+0xf4/0x114
    [16386.256797]  do_vmi_align_munmap.constprop.0+0x684/0x870
    [16386.256811]  __vm_munmap+0xe0/0x1f8
    [16386.256821]  sys_munmap+0x54/0x6c
    [16386.256830]  system_call_exception+0x1a0/0x4a0
    [16386.256841]  system_call_vectored_common+0x15c/0x2ec
    
    [16386.256868] The buggy address belongs to the object at c00000014a819670
                    which belongs to the cache vm_area_struct of size 168
    [16386.256887] The buggy address is located 0 bytes inside of
                    freed 168-byte region [c00000014a819670, c00000014a819718)
    
    [16386.256915] The buggy address belongs to the physical page:
    [16386.256928] page: refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x14a81
    [16386.256950] memcg:c0000000ba430001
    [16386.256961] anon flags: 0x43ffff800000000(node=4|zone=0|lastcpupid=0x7ffff)
    [16386.256975] page_type: 0xfdffffff(slab)
    [16386.256990] raw: 043ffff800000000 c00000000501c080 0000000000000000 5deadbee00000001
    [16386.257003] raw: 0000000000000000 00000000011a011a 00000001fdffffff c0000000ba430001
    [16386.257018] page dumped because: kasan: bad access detected
    
    This patch adds close() callback in vas_vm_ops vm_operations_struct
    which will be executed during munmap() before freeing VMA. The VMA
    address in the VAS window is set to NULL after holding the window
    mmap_mutex.
    
    Fixes: 37e6764895ef ("powerpc/pseries/vas: Add VAS migration handler")
    Signed-off-by: Haren Myneni <haren@linux.ibm.com>
    Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
    Link: https://patch.msgid.link/20241214051758.997759-1-haren@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
regmap: Use correct format specifier for logging range errors [+ + +]
Author: Mark Brown <broonie@kernel.org>
Date:   Wed Nov 27 13:35:06 2024 +0000

    regmap: Use correct format specifier for logging range errors
    
    [ Upstream commit 3f1aa0c533d9dd8a835caf9a6824449c463ee7e2 ]
    
    The register addresses are unsigned ints so we should use %u not %d to
    log them.
    
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Link: https://patch.msgid.link/20241127-regmap-test-high-addr-v1-1-74a48a9e0dc5@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "watchdog: s3c2410_wdt: use exynos_get_pmu_regmap_by_phandle() for PMU regs" [+ + +]
Author: Peter Griffin <peter.griffin@linaro.org>
Date:   Tue Oct 29 19:11:31 2024 +0000

    Revert "watchdog: s3c2410_wdt: use exynos_get_pmu_regmap_by_phandle() for PMU regs"
    
    [ Upstream commit ccfb765944bb66813398958983cb8141e2624a6b ]
    
    This reverts commit 746f0770f916e6c48e422d6a34e67eae16707f0e.
    
    Now that we can register a SoC specific regmap with syscon using
    of_syscon_register_regmap() api we can switch back to using
    syscon_regmap_lookup_by_phandle() in the client drivers.
    
    Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
    Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20241029191131.2329414-1-peter.griffin@linaro.org
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rtla/timerlat: Fix histogram ALL for zero samples [+ + +]
Author: Tomas Glozar <tglozar@redhat.com>
Date:   Wed Nov 27 14:41:30 2024 +0100

    rtla/timerlat: Fix histogram ALL for zero samples
    
    commit 6cc45f8c1f898570916044f606be9890d295e129 upstream.
    
    rtla timerlat hist currently computers the minimum, maximum and average
    latency even in cases when there are zero samples. This leads to
    nonsensical values being calculated for maximum and minimum, and to
    divide by zero for average.
    
    A similar bug is fixed by 01b05fc0e5f3 ("rtla/timerlat: Fix histogram
    report when a cpu count is 0") but the bug still remains for printing
    the sum over all CPUs in timerlat_print_stats_all.
    
    The issue can be reproduced with this command:
    
    $ rtla timerlat hist -U -d 1s
    Index
    over:
    count:
    min:
    avg:
    max:
    Floating point exception (core dumped)
    
    (There are always no samples with -U unless the user workload is
    created.)
    
    Fix the bug by omitting max/min/avg when sample count is zero,
    displaying a dash instead, just like we already do for the individual
    CPUs. The logic is moved into a new function called
    format_summary_value, which is used for both the individual CPUs
    and for the overall summary.
    
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/20241127134130.51171-1-tglozar@redhat.com
    Fixes: 1462501c7a8 ("rtla/timerlat: Add a summary for hist mode")
    Signed-off-by: Tomas Glozar <tglozar@redhat.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
scsi: megaraid_sas: Fix for a potential deadlock [+ + +]
Author: Tomas Henzl <thenzl@redhat.com>
Date:   Mon Sep 23 19:48:33 2024 +0200

    scsi: megaraid_sas: Fix for a potential deadlock
    
    [ Upstream commit 50740f4dc78b41dec7c8e39772619d5ba841ddd7 ]
    
    This fixes a 'possible circular locking dependency detected' warning
          CPU0                    CPU1
          ----                    ----
     lock(&instance->reset_mutex);
                                  lock(&shost->scan_mutex);
                                  lock(&instance->reset_mutex);
     lock(&shost->scan_mutex);
    
    Fix this by temporarily releasing the reset_mutex.
    
    Signed-off-by: Tomas Henzl <thenzl@redhat.com>
    Link: https://lore.kernel.org/r/20240923174833.45345-1-thenzl@redhat.com
    Acked-by: Chandrakanth Patil <chandrakanth.patil@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: mpi3mr: Fix corrupt config pages PHY state is switched in sysfs [+ + +]
Author: Ranjan Kumar <ranjan.kumar@broadcom.com>
Date:   Mon Nov 11 01:14:02 2024 +0530

    scsi: mpi3mr: Fix corrupt config pages PHY state is switched in sysfs
    
    [ Upstream commit 711201a8b8334a397440ac0b859df0054e174bc9 ]
    
    The driver, through the SAS transport, exposes a sysfs interface to
    enable/disable PHYs in a controller/expander setup.  When multiple PHYs
    are disabled and enabled in rapid succession, the persistent and current
    config pages related to SAS IO unit/SAS Expander pages could get
    corrupted.
    
    Use separate memory for each config request.
    
    Signed-off-by: Prayas Patel <prayas.patel@broadcom.com>
    Signed-off-by: Ranjan Kumar <ranjan.kumar@broadcom.com>
    Link: https://lore.kernel.org/r/20241110194405.10108-3-ranjan.kumar@broadcom.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: mpi3mr: Handling of fault code for insufficient power [+ + +]
Author: Ranjan Kumar <ranjan.kumar@broadcom.com>
Date:   Mon Nov 11 01:14:04 2024 +0530

    scsi: mpi3mr: Handling of fault code for insufficient power
    
    [ Upstream commit fb6eb98f3965e2ee92cbcb466051d2f2acf552d1 ]
    
    Before retrying initialization, check and abort if the fault code
    indicates insufficient power. Also mark the controller as unrecoverable
    instead of issuing reset in the watch dog timer if the fault code
    indicates insufficient power.
    
    Signed-off-by: Prayas Patel <prayas.patel@broadcom.com>
    Signed-off-by: Ranjan Kumar <ranjan.kumar@broadcom.com>
    Link: https://lore.kernel.org/r/20241110194405.10108-5-ranjan.kumar@broadcom.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: mpi3mr: Start controller indexing from 0 [+ + +]
Author: Ranjan Kumar <ranjan.kumar@broadcom.com>
Date:   Mon Nov 11 01:14:03 2024 +0530

    scsi: mpi3mr: Start controller indexing from 0
    
    [ Upstream commit 0d32014f1e3e7a7adf1583c45387f26b9bb3a49d ]
    
    Instead of displaying the controller index starting from '1' make the
    driver display the controller index starting from '0'.
    
    Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com>
    Signed-off-by: Ranjan Kumar <ranjan.kumar@broadcom.com>
    Link: https://lore.kernel.org/r/20241110194405.10108-4-ranjan.kumar@broadcom.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: mpi3mr: Synchronize access to ioctl data buffer [+ + +]
Author: Ranjan Kumar <ranjan.kumar@broadcom.com>
Date:   Mon Nov 11 01:14:01 2024 +0530

    scsi: mpi3mr: Synchronize access to ioctl data buffer
    
    [ Upstream commit 367ac16e5ff2dcd6b7f00a8f94e6ba98875cb397 ]
    
    The driver serializes ioctls through a mutex lock but access to the
    ioctl data buffer is not guarded by the mutex. This results in multiple
    user threads being able to write to the driver's ioctl buffer
    simultaneously.
    
    Protect the ioctl buffer with the ioctl mutex.
    
    Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com>
    Signed-off-by: Ranjan Kumar <ranjan.kumar@broadcom.com>
    Link: https://lore.kernel.org/r/20241110194405.10108-2-ranjan.kumar@broadcom.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: mpt3sas: Diag-Reset when Doorbell-In-Use bit is set during driver load time [+ + +]
Author: Ranjan Kumar <ranjan.kumar@broadcom.com>
Date:   Sun Nov 10 23:03:40 2024 +0530

    scsi: mpt3sas: Diag-Reset when Doorbell-In-Use bit is set during driver load time
    
    [ Upstream commit 3f5eb062e8aa335643181c480e6c590c6cedfd22 ]
    
    Issue a Diag-Reset when the "Doorbell-In-Use" bit is set during the
    driver load/initialization.
    
    Signed-off-by: Ranjan Kumar <ranjan.kumar@broadcom.com>
    Link: https://lore.kernel.org/r/20241110173341.11595-2-ranjan.kumar@broadcom.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: qla1280: Fix hw revision numbering for ISP1020/1040 [+ + +]
Author: Magnus Lindholm <linmag7@gmail.com>
Date:   Wed Nov 13 23:51:49 2024 +0100

    scsi: qla1280: Fix hw revision numbering for ISP1020/1040
    
    [ Upstream commit c064de86d2a3909222d5996c5047f64c7a8f791b ]
    
    Fix the hardware revision numbering for Qlogic ISP1020/1040 boards.  HWMASK
    suggests that the revision number only needs four bits, this is consistent
    with how NetBSD does things in their ISP driver. Verified on a IPS1040B
    which is seen as rev 5 not as BIT_4.
    
    Signed-off-by: Magnus Lindholm <linmag7@gmail.com>
    Link: https://lore.kernel.org/r/20241113225636.2276-1-linmag7@gmail.com
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: storvsc: Do not flag MAINTENANCE_IN return of SRB_STATUS_DATA_OVERRUN as an error [+ + +]
Author: Cathy Avery <cavery@redhat.com>
Date:   Wed Nov 27 13:13:24 2024 -0500

    scsi: storvsc: Do not flag MAINTENANCE_IN return of SRB_STATUS_DATA_OVERRUN as an error
    
    [ Upstream commit b1aee7f034615b6824d2c70ddb37ef9fc23493b7 ]
    
    This partially reverts commit 812fe6420a6e ("scsi: storvsc: Handle
    additional SRB status values").
    
    HyperV does not support MAINTENANCE_IN resulting in FC passthrough
    returning the SRB_STATUS_DATA_OVERRUN value. Now that
    SRB_STATUS_DATA_OVERRUN is treated as an error, multipath ALUA paths go
    into a faulty state as multipath ALUA submits RTPG commands via
    MAINTENANCE_IN.
    
    [    3.215560] hv_storvsc 1d69d403-9692-4460-89f9-a8cbcc0f94f3:
    tag#230 cmd 0xa3 status: scsi 0x0 srb 0x12 hv 0xc0000001
    [    3.215572] scsi 1:0:0:32: alua: rtpg failed, result 458752
    
    Make MAINTENANCE_IN return success to avoid the error path as is
    currently done with INQUIRY and MODE_SENSE.
    
    Suggested-by: Michael Kelley <mhklinux@outlook.com>
    Signed-off-by: Cathy Avery <cavery@redhat.com>
    Link: https://lore.kernel.org/r/20241127181324.3318443-1-cavery@redhat.com
    Reviewed-by: Michael Kelley <mhklinux@outlook.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/bpf: Fix compilation error in get_uprobe_offset() [+ + +]
Author: Jerome Marchand <jmarchan@redhat.com>
Date:   Wed Dec 18 18:57:24 2024 +0100

    selftests/bpf: Fix compilation error in get_uprobe_offset()
    
    [ Upstream commit 716f2bca1ce93bb95364f1fc0555c1650507b588 ]
    
    In get_uprobe_offset(), the call to procmap_query() use the constant
    PROCMAP_QUERY_VMA_EXECUTABLE, even if PROCMAP_QUERY is not defined.
    
    Define PROCMAP_QUERY_VMA_EXECUTABLE when PROCMAP_QUERY isn't.
    
    Fixes: 4e9e07603ecd ("selftests/bpf: make use of PROCMAP_QUERY ioctl if available")
    Signed-off-by: Jerome Marchand <jmarchan@redhat.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Yonghong Song <yonghong.song@linux.dev>
    Link: https://lore.kernel.org/bpf/20241218175724.578884-1-jmarchan@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
smb: client: Deduplicate "select NETFS_SUPPORT" in Kconfig [+ + +]
Author: Dragan Simic <dsimic@manjaro.org>
Date:   Tue Dec 17 10:25:10 2024 +0100

    smb: client: Deduplicate "select NETFS_SUPPORT" in Kconfig
    
    [ Upstream commit ee1c8e6b2931811a906b8c78006bfe0a3386fa60 ]
    
    Repeating automatically selected options in Kconfig files is redundant, so
    let's delete repeated "select NETFS_SUPPORT" that was added accidentally.
    
    Fixes: 69c3c023af25 ("cifs: Implement netfslib hooks")
    Signed-off-by: Dragan Simic <dsimic@manjaro.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smb: fix bytes written value in /proc/fs/cifs/Stats [+ + +]
Author: Bharath SM <bharathsm.hsk@gmail.com>
Date:   Thu Dec 19 23:28:50 2024 +0530

    smb: fix bytes written value in /proc/fs/cifs/Stats
    
    [ Upstream commit 92941c7f2c9529fac1b2670482d0ced3b46eac70 ]
    
    With recent netfs apis changes, the bytes written
    value was not getting updated in /proc/fs/cifs/Stats.
    Fix this by updating tcon->bytes in write operations.
    
    Fixes: 3ee1a1fc3981 ("cifs: Cut over to using netfslib")
    Signed-off-by: Bharath SM <bharathsm@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smb: server: Fix building with GCC 15 [+ + +]
Author: Brahmajit Das <brahmajit.xyz@gmail.com>
Date:   Tue Nov 26 11:41:35 2024 +0530

    smb: server: Fix building with GCC 15
    
    [ Upstream commit e18655cf35a5958fbf4ae9ca3ebf28871a3a1801 ]
    
    GCC 15 introduces -Werror=unterminated-string-initialization by default,
    this results in the following build error
    
    fs/smb/server/smb_common.c:21:35: error: initializer-string for array of 'char' is too long [-Werror=unterminated-string-ini
    tialization]
       21 | static const char basechars[43] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_-!@#$%";
          |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cc1: all warnings being treated as errors
    
    To this we are replacing char basechars[43] with a character pointer
    and then using strlen to get the length.
    
    Signed-off-by: Brahmajit Das <brahmajit.xyz@gmail.com>
    Acked-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
spi: intel: Add Panther Lake SPI controller support [+ + +]
Author: Aapo Vienamo <aapo.vienamo@iki.fi>
Date:   Wed Dec 4 10:02:08 2024 +0200

    spi: intel: Add Panther Lake SPI controller support
    
    [ Upstream commit ceb259e43bf572ba7d766e1679ba73861d16203a ]
    
    The Panther Lake SPI controllers are compatible with the Cannon Lake
    controllers. Add support for following SPI controller device IDs:
     - H-series: 0xe323
     - P-series: 0xe423
     - U-series: 0xe423
    
    Signed-off-by: Aapo Vienamo <aapo.vienamo@iki.fi>
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Link: https://patch.msgid.link/20241204080208.1036537-1-mika.westerberg@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: omap2-mcspi: Fix the IS_ERR() bug for devm_clk_get_optional_enabled() [+ + +]
Author: Purushothama Siddaiah <psiddaiah@mvista.com>
Date:   Thu Dec 5 12:34:26 2024 +0530

    spi: omap2-mcspi: Fix the IS_ERR() bug for devm_clk_get_optional_enabled()
    
    [ Upstream commit 4c6ac5446d060f0bf435ccc8bc3aa7b7b5f718ad ]
    
    The devm_clk_get_optional_enabled() function returns error
    pointers(PTR_ERR()). So use IS_ERR() to check it.
    
    Verified on K3-J7200 EVM board, without clock node mentioned
    in the device tree.
    
    Signed-off-by: Purushothama Siddaiah <psiddaiah@mvista.com>
    Reviewed-by: Corey Minyard <cminyard@mvista.com>
    Link: https://patch.msgid.link/20241205070426.1861048-1-psiddaiah@mvista.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
stddef: make __struct_group() UAPI C++-friendly [+ + +]
Author: Alexander Lobakin <aleksander.lobakin@intel.com>
Date:   Thu Dec 19 14:57:34 2024 +0100

    stddef: make __struct_group() UAPI C++-friendly
    
    [ Upstream commit 724c6ce38bbaeb4b3f109b0e066d6c0ecd15446c ]
    
    For the most part of the C++ history, it couldn't have type
    declarations inside anonymous unions for different reasons. At the
    same time, __struct_group() relies on the latters, so when the @TAG
    argument is not empty, C++ code doesn't want to build (even under
    `extern "C"`):
    
    ../linux/include/uapi/linux/pkt_cls.h:25:24: error:
    'struct tc_u32_sel::<unnamed union>::tc_u32_sel_hdr,' invalid;
    an anonymous union may only have public non-static data members
    [-fpermissive]
    
    The safest way to fix this without trying to switch standards (which
    is impossible in UAPI anyway) etc., is to disable tag declaration
    for that language. This won't break anything since for now it's not
    buildable at all.
    Use a separate definition for __struct_group() when __cplusplus is
    defined to mitigate the error, including the version from tools/.
    
    Fixes: 50d7bd38c3aa ("stddef: Introduce struct_group() helper macro")
    Reported-by: Christopher Ferris <cferris@google.com>
    Closes: https://lore.kernel.org/linux-hardening/Z1HZpe3WE5As8UAz@google.com
    Suggested-by: Kees Cook <kees@kernel.org> # __struct_group_tag()
    Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
    Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
    Link: https://lore.kernel.org/r/20241219135734.2130002-1-aleksander.lobakin@intel.com
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tcp_bpf: Add sk_rmem_alloc related logic for tcp_bpf ingress redirection [+ + +]
Author: Zijian Zhang <zijianzhang@bytedance.com>
Date:   Tue Dec 10 01:20:39 2024 +0000

    tcp_bpf: Add sk_rmem_alloc related logic for tcp_bpf ingress redirection
    
    [ Upstream commit d888b7af7c149c115dd6ac772cc11c375da3e17c ]
    
    When we do sk_psock_verdict_apply->sk_psock_skb_ingress, an sk_msg will
    be created out of the skb, and the rmem accounting of the sk_msg will be
    handled by the skb.
    
    For skmsgs in __SK_REDIRECT case of tcp_bpf_send_verdict, when redirecting
    to the ingress of a socket, although we sk_rmem_schedule and add sk_msg to
    the ingress_msg of sk_redir, we do not update sk_rmem_alloc. As a result,
    except for the global memory limit, the rmem of sk_redir is nearly
    unlimited. Thus, add sk_rmem_alloc related logic to limit the recv buffer.
    
    Since the function sk_msg_recvmsg and __sk_psock_purge_ingress_msg are
    used in these two paths. We use "msg->skb" to test whether the sk_msg is
    skb backed up. If it's not, we shall do the memory accounting explicitly.
    
    Fixes: 604326b41a6f ("bpf, sockmap: convert to generic sk_msg interface")
    Signed-off-by: Zijian Zhang <zijianzhang@bytedance.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Reviewed-by: John Fastabend <john.fastabend@gmail.com>
    Link: https://lore.kernel.org/bpf/20241210012039.1669389-3-zijianzhang@bytedance.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tcp_bpf: Charge receive socket buffer in bpf_tcp_ingress() [+ + +]
Author: Cong Wang <cong.wang@bytedance.com>
Date:   Tue Dec 10 01:20:38 2024 +0000

    tcp_bpf: Charge receive socket buffer in bpf_tcp_ingress()
    
    [ Upstream commit 54f89b3178d5448dd4457afbb98fc1ab99090a65 ]
    
    When bpf_tcp_ingress() is called, the skmsg is being redirected to the
    ingress of the destination socket. Therefore, we should charge its
    receive socket buffer, instead of sending socket buffer.
    
    Because sk_rmem_schedule() tests pfmemalloc of skb, we need to
    introduce a wrapper and call it for skmsg.
    
    Fixes: 604326b41a6f ("bpf, sockmap: convert to generic sk_msg interface")
    Signed-off-by: Cong Wang <cong.wang@bytedance.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Reviewed-by: John Fastabend <john.fastabend@gmail.com>
    Link: https://lore.kernel.org/bpf/20241210012039.1669389-2-zijianzhang@bytedance.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tracing/kprobe: Make trace_kprobe's module callback called after jump_label update [+ + +]
Author: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Date:   Wed Dec 11 09:10:55 2024 +0900

    tracing/kprobe: Make trace_kprobe's module callback called after jump_label update
    
    [ Upstream commit d685d55dfc86b1a4bdcec77c3c1f8a83f181264e ]
    
    Make sure the trace_kprobe's module notifer callback function is called
    after jump_label's callback is called. Since the trace_kprobe's callback
    eventually checks jump_label address during registering new kprobe on
    the loading module, jump_label must be updated before this registration
    happens.
    
    Link: https://lore.kernel.org/all/173387585556.995044.3157941002975446119.stgit@devnote2/
    
    Fixes: 614243181050 ("tracing/kprobes: Support module init function probing")
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tracing: Constify string literal data member in struct trace_event_call [+ + +]
Author: Christian Göttsche <cgzones@googlemail.com>
Date:   Mon Nov 25 11:50:25 2024 +0100

    tracing: Constify string literal data member in struct trace_event_call
    
    commit 452f4b31e3f70a52b97890888eeb9eaa9a87139a upstream.
    
    The name member of the struct trace_event_call is assigned with
    generated string literals; declare them pointer to read-only.
    
    Reported by clang:
    
        security/landlock/syscalls.c:179:1: warning: initializing 'char *' with an expression of type 'const char[34]' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
          179 | SYSCALL_DEFINE3(landlock_create_ruleset,
              | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          180 |                 const struct landlock_ruleset_attr __user *const, attr,
              |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          181 |                 const size_t, size, const __u32, flags)
              |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/syscalls.h:226:36: note: expanded from macro 'SYSCALL_DEFINE3'
          226 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
              |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/syscalls.h:234:2: note: expanded from macro 'SYSCALL_DEFINEx'
          234 |         SYSCALL_METADATA(sname, x, __VA_ARGS__)                 \
              |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/syscalls.h:184:2: note: expanded from macro 'SYSCALL_METADATA'
          184 |         SYSCALL_TRACE_ENTER_EVENT(sname);                       \
              |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/syscalls.h:151:30: note: expanded from macro 'SYSCALL_TRACE_ENTER_EVENT'
          151 |                         .name                   = "sys_enter"#sname,    \
              |                                                   ^~~~~~~~~~~~~~~~~
    
    Cc: stable@vger.kernel.org
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Mickaël Salaün <mic@digikod.net>
    Cc: Günther Noack <gnoack@google.com>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Bill Wendling <morbo@google.com>
    Cc: Justin Stitt <justinstitt@google.com>
    Link: https://lore.kernel.org/20241125105028.42807-1-cgoettsche@seltendoof.de
    Fixes: b77e38aa240c3 ("tracing: add event trace infrastructure")
    Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

tracing: Prevent bad count for tracing_cpumask_write [+ + +]
Author: Lizhi Xu <lizhi.xu@windriver.com>
Date:   Mon Dec 16 15:32:38 2024 +0800

    tracing: Prevent bad count for tracing_cpumask_write
    
    commit 98feccbf32cfdde8c722bc4587aaa60ee5ac33f0 upstream.
    
    If a large count is provided, it will trigger a warning in bitmap_parse_user.
    Also check zero for it.
    
    Cc: stable@vger.kernel.org
    Fixes: 9e01c1b74c953 ("cpumask: convert kernel trace functions")
    Link: https://lore.kernel.org/20241216073238.2573704-1-lizhi.xu@windriver.com
    Reported-by: syzbot+0aecfd34fb878546f3fd@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=0aecfd34fb878546f3fd
    Tested-by: syzbot+0aecfd34fb878546f3fd@syzkaller.appspotmail.com
    Signed-off-by: Lizhi Xu <lizhi.xu@windriver.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ublk: detach gendisk from ublk device if add_disk() fails [+ + +]
Author: Ming Lei <ming.lei@redhat.com>
Date:   Wed Dec 25 19:06:40 2024 +0800

    ublk: detach gendisk from ublk device if add_disk() fails
    
    [ Upstream commit 75cd4005da5492129917a4a4ee45e81660556104 ]
    
    Inside ublk_abort_requests(), gendisk is grabbed for aborting all
    inflight requests. And ublk_abort_requests() is called when exiting
    the uring context or handling timeout.
    
    If add_disk() fails, the gendisk may have been freed when calling
    ublk_abort_requests(), so use-after-free can be caused when getting
    disk's reference in ublk_abort_requests().
    
    Fixes the bug by detaching gendisk from ublk device if add_disk() fails.
    
    Fixes: bd23f6c2c2d0 ("ublk: quiesce request queue when aborting queue")
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Link: https://lore.kernel.org/r/20241225110640.351531-1-ming.lei@redhat.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
udf: Skip parent dir link count update if corrupted [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Tue Nov 26 12:46:00 2024 +0100

    udf: Skip parent dir link count update if corrupted
    
    [ Upstream commit c5566903af56dd1abb092f18dcb0c770d6cd8dcb ]
    
    If the parent directory link count is too low (likely directory inode
    corruption), just skip updating its link count as if it goes to 0 too
    early it can cause unexpected issues.
    
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

udf: Verify inode link counts before performing rename [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Tue Nov 26 12:55:12 2024 +0100

    udf: Verify inode link counts before performing rename
    
    [ Upstream commit 6756af923e06aa33ad8894aaecbf9060953ba00f ]
    
    During rename, we are updating link counts of various inodes either when
    rename deletes target or when moving directory across directories.
    Verify involved link counts are sane so that we don't trip warnings in
    VFS.
    
    Reported-by: syzbot+3ff7365dc04a6bcafa66@syzkaller.appspotmail.com
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
virt: tdx-guest: Just leak decrypted memory on unrecoverable errors [+ + +]
Author: Li RongQing <lirongqing@baidu.com>
Date:   Wed Jun 19 19:18:01 2024 +0800

    virt: tdx-guest: Just leak decrypted memory on unrecoverable errors
    
    commit 27834971f616c5e154423c578fa95e0444444ce1 upstream.
    
    In CoCo VMs it is possible for the untrusted host to cause
    set_memory_decrypted() to fail such that an error is returned
    and the resulting memory is shared. Callers need to take care
    to handle these errors to avoid returning decrypted (shared)
    memory to the page allocator, which could lead to functional
    or security issues.
    
    Leak the decrypted memory when set_memory_decrypted() fails,
    and don't need to print an error since set_memory_decrypted()
    will call WARN_ONCE().
    
    Fixes: f4738f56d1dc ("virt: tdx-guest: Add Quote generation support using TSM_REPORTS")
    Signed-off-by: Li RongQing <lirongqing@baidu.com>
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Reviewed-by: Rick Edgecombe <rick.p.edgecombe@intel.com>
    Reviewed-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/all/20240619111801.25630-1-lirongqing%40baidu.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
virtio-blk: don't keep queue frozen during system suspend [+ + +]
Author: Ming Lei <ming.lei@redhat.com>
Date:   Tue Nov 12 20:58:21 2024 +0800

    virtio-blk: don't keep queue frozen during system suspend
    
    [ Upstream commit 7678abee0867e6b7fb89aa40f6e9f575f755fb37 ]
    
    Commit 4ce6e2db00de ("virtio-blk: Ensure no requests in virtqueues before
    deleting vqs.") replaces queue quiesce with queue freeze in virtio-blk's
    PM callbacks. And the motivation is to drain inflight IOs before suspending.
    
    block layer's queue freeze looks very handy, but it is also easy to cause
    deadlock, such as, any attempt to call into bio_queue_enter() may run into
    deadlock if the queue is frozen in current context. There are all kinds
    of ->suspend() called in suspend context, so keeping queue frozen in the
    whole suspend context isn't one good idea. And Marek reported lockdep
    warning[1] caused by virtio-blk's freeze queue in virtblk_freeze().
    
    [1] https://lore.kernel.org/linux-block/ca16370e-d646-4eee-b9cc-87277c89c43c@samsung.com/
    
    Given the motivation is to drain in-flight IOs, it can be done by calling
    freeze & unfreeze, meantime restore to previous behavior by keeping queue
    quiesced during suspend.
    
    Cc: Yi Sun <yi.sun@unisoc.com>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: Jason Wang <jasowang@redhat.com>
    Cc: Stefan Hajnoczi <stefanha@redhat.com>
    Cc: virtualization@lists.linux.dev
    Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
    Link: https://lore.kernel.org/r/20241112125821.1475793-1-ming.lei@redhat.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
watchdog: it87_wdt: add PWRGD enable quirk for Qotom QCML04 [+ + +]
Author: James Hilliard <james.hilliard1@gmail.com>
Date:   Fri Oct 25 00:34:40 2024 -0600

    watchdog: it87_wdt: add PWRGD enable quirk for Qotom QCML04
    
    [ Upstream commit 43439076383a7611300334d1357c0f8883f40816 ]
    
    For the watchdog timer to work properly on the QCML04 board we need to
    set PWRGD enable in the Environment Controller Configuration Registers
    Special Configuration Register 1 when it is not already set, this may
    be the case when the watchdog is not enabled from within the BIOS.
    
    Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20241025063441.3494837-1-james.hilliard1@gmail.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

watchdog: mediatek: Add support for MT6735 TOPRGU/WDT [+ + +]
Author: Yassine Oudjana <y.oudjana@protonmail.com>
Date:   Wed Nov 6 10:47:55 2024 +0000

    watchdog: mediatek: Add support for MT6735 TOPRGU/WDT
    
    [ Upstream commit 15ddf704f56f8c95ff74dfd1157ed8646b322fa1 ]
    
    Add support for the Top Reset Generation Unit/Watchdog Timer found on
    MT6735.
    
    Signed-off-by: Yassine Oudjana <y.oudjana@protonmail.com>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20241106104738.195968-3-y.oudjana@protonmail.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

watchdog: rzg2l_wdt: Power on the watchdog domain in the restart handler [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Tue Oct 15 19:47:32 2024 +0300

    watchdog: rzg2l_wdt: Power on the watchdog domain in the restart handler
    
    [ Upstream commit bad201b2ac4e238c6d4b6966a220240e3861640c ]
    
    On RZ/G3S the watchdog can be part of a software-controlled PM domain. In
    this case, the watchdog device need to be powered on in
    struct watchdog_ops::restart API. This can be done though
    pm_runtime_resume_and_get() API if the watchdog PM domain and watchdog
    device are marked as IRQ safe. We mark the watchdog PM domain as IRQ safe
    with GENPD_FLAG_IRQ_SAFE when the watchdog PM domain is registered and the
    watchdog device though pm_runtime_irq_safe().
    
    Before commit e4cf89596c1f ("watchdog: rzg2l_wdt: Fix 'BUG: Invalid wait
    context'") pm_runtime_get_sync() was used in watchdog restart handler
    (which is similar to pm_runtime_resume_and_get() except the later one
    handles the runtime resume errors).
    
    Commit e4cf89596c1f ("watchdog: rzg2l_wdt: Fix 'BUG: Invalid wait
    context'") dropped the pm_runtime_get_sync() and replaced it with
    clk_prepare_enable() to avoid invalid wait context due to genpd_lock()
    in genpd_runtime_resume() being called from atomic context. But
    clk_prepare_enable() doesn't fit for this either (as reported by
    Ulf Hansson) as clk_prepare() can also sleep (it just not throw invalid
    wait context warning as it is not written for this).
    
    Because the watchdog device is marked now as IRQ safe (though this patch)
    the irq_safe_dev_in_sleep_domain() call from genpd_runtime_resume() returns
    1 for devices not registering an IRQ safe PM domain for watchdog (as the
    watchdog device is IRQ safe, PM domain is not and watchdog PM domain is
    always-on), this being the case for RZ/G3S with old device trees and
    the rest of the SoCs that use this driver, we can now drop also the
    clk_prepare_enable() calls in restart handler and rely on
    pm_runtime_resume_and_get().
    
    Thus, drop clk_prepare_enable() and use pm_runtime_resume_and_get() in
    watchdog restart handler.
    
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Acked-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20241015164732.4085249-5-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
wifi: iwlwifi: be less noisy if the NIC is dead in S3 [+ + +]
Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Date:   Mon Dec 23 14:13:59 2024 +0200

    wifi: iwlwifi: be less noisy if the NIC is dead in S3
    
    commit 0572b7715ffd2cac20aac00333706f3094028180 upstream
    
    If the NIC is dead upon resume, try to catch the error earlier and exit
    earlier. We'll print less error messages and get to the same recovery
    path as before: reload the firmware.
    
    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20241028135215.3a18682261e5.I18f336a4537378a4c1a8537d7246cee1fc82b42c@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219597
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/fred: Clear WFE in missing-ENDBRANCH #CPs [+ + +]
Author: Xin Li (Intel) <xin@zytor.com>
Date:   Wed Nov 13 09:59:34 2024 -0800

    x86/fred: Clear WFE in missing-ENDBRANCH #CPs
    
    commit dc81e556f2a017d681251ace21bf06c126d5a192 upstream.
    
    An indirect branch instruction sets the CPU indirect branch tracker
    (IBT) into WAIT_FOR_ENDBRANCH (WFE) state and WFE stays asserted
    across the instruction boundary.  When the decoder finds an
    inappropriate instruction while WFE is set ENDBR, the CPU raises a #CP
    fault.
    
    For the "kernel IBT no ENDBR" selftest where #CPs are deliberately
    triggered, the WFE state of the interrupted context needs to be
    cleared to let execution continue.  Otherwise when the CPU resumes
    from the instruction that just caused the previous #CP, another
    missing-ENDBRANCH #CP is raised and the CPU enters a dead loop.
    
    This is not a problem with IDT because it doesn't preserve WFE and
    IRET doesn't set WFE.  But FRED provides space on the entry stack
    (in an expanded CS area) to save and restore the WFE state, thus the
    WFE state is no longer clobbered, so software must clear it.
    
    Clear WFE to avoid dead looping in ibt_clear_fred_wfe() and the
    !ibt_fatal code path when execution is allowed to continue.
    
    Clobbering WFE in any other circumstance is a security-relevant bug.
    
    [ dhansen: changelog rewording ]
    
    Fixes: a5f6c2ace997 ("x86/shstk: Add user control-protection fault handler")
    Signed-off-by: Xin Li (Intel) <xin@zytor.com>
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Acked-by: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/all/20241113175934.3897541-1-xin%40zytor.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>