Changelog in Linux kernel 6.9.11

 
ACPI: AC: Properly notify powermanagement core about changes [+ + +]
Author: Thomas Weißschuh <linux@weissschuh.net>
Date:   Sun May 26 23:40:01 2024 +0200

    ACPI: AC: Properly notify powermanagement core about changes
    
    [ Upstream commit ac62f52138f752d6c74adc6321e4996d84caf5bb ]
    
    The powermanagement core does various actions when a powersupply changes.
    It calls into notifiers, LED triggers, other power supplies and emits an uevent.
    
    To make sure that all these actions happen properly call power_supply_changed().
    
    Reported-by: Rajas Paranjpe <paranjperajas@gmail.com>
    Closes: https://github.com/MrChromebox/firmware/issues/420#issuecomment-2132251318
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPI: EC: Abort address space access upon error [+ + +]
Author: Armin Wolf <W_Armin@gmx.de>
Date:   Wed May 22 23:36:48 2024 +0200

    ACPI: EC: Abort address space access upon error
    
    [ Upstream commit f6f172dc6a6d7775b2df6adfd1350700e9a847ec ]
    
    When a multi-byte address space access is requested, acpi_ec_read()/
    acpi_ec_write() is being called multiple times.
    
    Abort such operations if a single call to acpi_ec_read() /
    acpi_ec_write() fails, as the data read from / written to the EC
    might be incomplete.
    
    Signed-off-by: Armin Wolf <W_Armin@gmx.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPI: EC: Avoid returning AE_OK on errors in address space handler [+ + +]
Author: Armin Wolf <W_Armin@gmx.de>
Date:   Wed May 22 23:36:49 2024 +0200

    ACPI: EC: Avoid returning AE_OK on errors in address space handler
    
    [ Upstream commit c4bd7f1d78340e63de4d073fd3dbe5391e2996e5 ]
    
    If an error code other than EINVAL, ENODEV or ETIME is returned
    by acpi_ec_read() / acpi_ec_write(), then AE_OK is incorrectly
    returned by acpi_ec_space_handler().
    
    Fix this by only returning AE_OK on success, and return AE_ERROR
    otherwise.
    
    Signed-off-by: Armin Wolf <W_Armin@gmx.de>
    [ rjw: Subject and changelog edits ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ALSA: dmaengine: Synchronize dma channel after drop() [+ + +]
Author: Jai Luthra <j-luthra@ti.com>
Date:   Tue Jun 11 18:02:55 2024 +0530

    ALSA: dmaengine: Synchronize dma channel after drop()
    
    [ Upstream commit e8343410ddf08fc36a9b9cc7c51a4e53a262d4c6 ]
    
    Sometimes the stream may be stopped due to XRUN events, in which case
    the userspace can call snd_pcm_drop() and snd_pcm_prepare() to stop and
    start the stream again.
    
    In these cases, we must wait for the DMA channel to synchronize before
    marking the stream as prepared for playback, as the DMA channel gets
    stopped by drop() without any synchronization. Make sure the ALSA core
    synchronizes the DMA channel by adding a sync_stop() hook.
    
    Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
    Signed-off-by: Jai Luthra <j-luthra@ti.com>
    Link: https://lore.kernel.org/r/20240611-asoc_next-v3-1-fcfd84b12164@ti.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: dmaengine_pcm: terminate dmaengine before synchronize [+ + +]
Author: Shengjiu Wang <shengjiu.wang@nxp.com>
Date:   Thu Jun 20 10:40:18 2024 +0800

    ALSA: dmaengine_pcm: terminate dmaengine before synchronize
    
    [ Upstream commit 6a7db25aad8ce6512b366d2ce1d0e60bac00a09d ]
    
    When dmaengine supports pause function, in suspend state,
    dmaengine_pause() is called instead of dmaengine_terminate_async(),
    
    In end of playback stream, the runtime->state will go to
    SNDRV_PCM_STATE_DRAINING, if system suspend & resume happen
    at this time, application will not resume playback stream, the
    stream will be closed directly, the dmaengine_terminate_async()
    will not be called before the dmaengine_synchronize(), which
    violates the call sequence for dmaengine_synchronize().
    
    This behavior also happens for capture streams, but there is no
    SNDRV_PCM_STATE_DRAINING state for capture. So use
    dmaengine_tx_status() to check the DMA status if the status is
    DMA_PAUSED, then call dmaengine_terminate_async() to terminate
    dmaengine before dmaengine_synchronize().
    
    Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
    Link: https://patch.msgid.link/1718851218-27803-1-git-send-email-shengjiu.wang@nxp.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda/realtek: Add more codec ID to no shutup pins list [+ + +]
Author: Kailang Yang <kailang@realtek.com>
Date:   Tue Jun 18 14:16:04 2024 +0800

    ALSA: hda/realtek: Add more codec ID to no shutup pins list
    
    [ Upstream commit 70794b9563fe011988bcf6a081af9777e63e8d37 ]
    
    If it enter to runtime D3 state, it didn't shutup Headset MIC pin.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Link: https://lore.kernel.org/r/8d86f61e7d6f4a03b311e4eb4e5caaef@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda/realtek: Support Lenovo Thinkbook 13x Gen 4 [+ + +]
Author: Stefan Binding <sbinding@opensource.cirrus.com>
Date:   Thu Jun 6 14:03:51 2024 +0100

    ALSA: hda/realtek: Support Lenovo Thinkbook 13x Gen 4
    
    [ Upstream commit 4ecb16d9250e6fcf8818572bf317b6adae16515b ]
    
    Add support for this laptop, which uses CS35L41 HDA amps.
    The laptop does not contain valid _DSD for these amps, so requires
    entries into the CS35L41 configuration table to function correctly.
    
    Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20240606130351.333495-5-sbinding@opensource.cirrus.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda/realtek: Support Lenovo Thinkbook 16P Gen 5 [+ + +]
Author: Stefan Binding <sbinding@opensource.cirrus.com>
Date:   Thu Jun 6 14:03:50 2024 +0100

    ALSA: hda/realtek: Support Lenovo Thinkbook 16P Gen 5
    
    [ Upstream commit 75f2ea939b5c694b36aad8ef823a2f9bcf7b3d7d ]
    
    Add support for this laptop, which uses CS35L41 HDA amps.
    The laptop does not contain valid _DSD for these amps, so requires
    entries into the CS35L41 configuration table to function correctly.
    
    [ fixed to lower hex numbers in quirk entries -- tiwai ]
    
    Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20240606130351.333495-4-sbinding@opensource.cirrus.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda/relatek: Enable Mute LED on HP Laptop 15-gw0xxx [+ + +]
Author: Aivaz Latypov <reichaivaz@gmail.com>
Date:   Tue Jun 25 13:12:02 2024 +0500

    ALSA: hda/relatek: Enable Mute LED on HP Laptop 15-gw0xxx
    
    [ Upstream commit 1d091a98c399c17d0571fa1d91a7123a698446e4 ]
    
    This HP Laptop uses ALC236 codec with COEF 0x07 controlling
    the mute LED. Enable existing quirk for this device.
    
    Signed-off-by: Aivaz Latypov <reichaivaz@gmail.com>
    Link: https://patch.msgid.link/20240625081217.1049-1-reichaivaz@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda: cs35l41: Fix swapped l/r audio channels for Lenovo ThinBook 13x Gen4 [+ + +]
Author: Dmitry Savin <envelsavinds@gmail.com>
Date:   Thu Jul 4 22:14:01 2024 +0100

    ALSA: hda: cs35l41: Fix swapped l/r audio channels for Lenovo ThinBook 13x Gen4
    
    commit 0f74758c08fc711b45cdf5564c5b12903fe88c82 upstream.
    
    Fixes audio channel assignment in configuration table for ThinkBook 13x Gen4.
    
    Fixes: b32f92d1af37 ("ALSA: hda: cs35l41: Support Lenovo Thinkbook 13x Gen 4")
    Signed-off-by: Dmitry Savin <envelsavinds@gmail.com>
    Reviewed-by: Stefan Binding <sbinding@opensource.cirrus.com>
    Link: https://patch.msgid.link/20240704211402.87776-1-envelsavinds@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda: cs35l41: Support Lenovo Thinkbook 13x Gen 4 [+ + +]
Author: Stefan Binding <sbinding@opensource.cirrus.com>
Date:   Thu Jun 6 14:03:49 2024 +0100

    ALSA: hda: cs35l41: Support Lenovo Thinkbook 13x Gen 4
    
    [ Upstream commit b32f92d1af3789038f03c2899e3be0d00b43faf2 ]
    
    This laptop does not contain _DSD so needs to be supported using the
    configuration table.
    
    Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20240606130351.333495-3-sbinding@opensource.cirrus.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda: cs35l41: Support Lenovo Thinkbook 16P Gen 5 [+ + +]
Author: Stefan Binding <sbinding@opensource.cirrus.com>
Date:   Thu Jun 6 14:03:48 2024 +0100

    ALSA: hda: cs35l41: Support Lenovo Thinkbook 16P Gen 5
    
    [ Upstream commit 82f3daed2d3590fa286a02301573a183dd902a0f ]
    
    This laptop does not contain _DSD so needs to be supported using the
    configuration table.
    
    Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20240606130351.333495-2-sbinding@opensource.cirrus.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda: cs35l56: Fix lifecycle of codec pointer [+ + +]
Author: Simon Trimmer <simont@opensource.cirrus.com>
Date:   Fri May 31 12:27:16 2024 +0100

    ALSA: hda: cs35l56: Fix lifecycle of codec pointer
    
    [ Upstream commit d339131bf02d4ed918415574082caf5e8af6e664 ]
    
    The codec should be cleared when the amp driver is unbound and when
    resuming it should be tested to prevent loading firmware into the device
    and ALSA in a partially configured system state.
    
    Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20240531112716.25323-1-simont@opensource.cirrus.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda: cs35l56: Select SERIAL_MULTI_INSTANTIATE [+ + +]
Author: Simon Trimmer <simont@opensource.cirrus.com>
Date:   Wed Jun 19 17:16:02 2024 +0100

    ALSA: hda: cs35l56: Select SERIAL_MULTI_INSTANTIATE
    
    [ Upstream commit 9b1effff19cdf2230d3ecb07ff4038a0da32e9cc ]
    
    The ACPI IDs used in the CS35L56 HDA drivers are all handled by the
    serial multi-instantiate driver which starts multiple Linux device
    instances from a single ACPI Device() node.
    
    As serial multi-instantiate is not an optional part of the system add it
    as a dependency in Kconfig so that it is not overlooked.
    
    Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
    Link: https://lore.kernel.org/20240619161602.117452-1-simont@opensource.cirrus.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda: Use imply for suggesting CONFIG_SERIAL_MULTI_INSTANTIATE [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Jun 21 09:39:09 2024 +0200

    ALSA: hda: Use imply for suggesting CONFIG_SERIAL_MULTI_INSTANTIATE
    
    [ Upstream commit 17563b4a19d1844bdbccc7a82d2f31c28ca9cfae ]
    
    The recent fix introduced a reverse selection of
    CONFIG_SERIAL_MULTI_INSTANTIATE, but its condition isn't always met.
    Use a weak reverse selection to suggest the config for avoiding such
    inconsistencies, instead.
    
    Fixes: 9b1effff19cd ("ALSA: hda: cs35l56: Select SERIAL_MULTI_INSTANTIATE")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202406210732.ozgk8IMK-lkp@intel.com/
    Closes: https://lore.kernel.org/oe-kbuild-all/202406211244.oLhoF3My-lkp@intel.com/
    Reviewed-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Link: https://patch.msgid.link/20240621073915.19576-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: PCM: Allow resume only for suspended streams [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jun 24 14:54:34 2024 +0200

    ALSA: PCM: Allow resume only for suspended streams
    
    [ Upstream commit 1225675ca74c746f09211528588e83b3def1ff6a ]
    
    snd_pcm_resume() should bail out if the stream isn't in a suspended
    state.  Otherwise it'd allow doubly resume.
    
    Link: https://patch.msgid.link/20240624125443.27808-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
arm64: armv8_deprecated: Fix warning in isndep cpuhp starting process [+ + +]
Author: Wei Li <liwei391@huawei.com>
Date:   Tue Apr 23 17:35:01 2024 +0800

    arm64: armv8_deprecated: Fix warning in isndep cpuhp starting process
    
    [ Upstream commit 14951beaec93696b092a906baa0f29322cf34004 ]
    
    The function run_all_insn_set_hw_mode() is registered as startup callback
    of 'CPUHP_AP_ARM64_ISNDEP_STARTING', it invokes set_hw_mode() methods of
    all emulated instructions.
    
    As the STARTING callbacks are not expected to fail, if one of the
    set_hw_mode() fails, e.g. due to el0 mixed-endian is not supported for
    'setend', it will report a warning:
    
    ```
    CPU[2] cannot support the emulation of setend
    CPU 2 UP state arm64/isndep:starting (136) failed (-22)
    CPU2: Booted secondary processor 0x0000000002 [0x414fd0c1]
    ```
    
    To fix it, add a check for INSN_UNAVAILABLE status and skip the process.
    
    Signed-off-by: Wei Li <liwei391@huawei.com>
    Tested-by: Huisong Li <lihuisong@huawei.com>
    Link: https://lore.kernel.org/r/20240423093501.3460764-1-liwei391@huawei.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ASoC: amd: yc: Fix non-functional mic on ASUS M5602RA [+ + +]
Author: Vyacheslav Frantsishko <itmymaill@gmail.com>
Date:   Wed Jun 26 10:03:34 2024 +0300

    ASoC: amd: yc: Fix non-functional mic on ASUS M5602RA
    
    [ Upstream commit 63b47f026cc841bd3d3438dd6fccbc394dfead87 ]
    
    The Vivobook S 16X IPS needs a quirks-table entry for the internal microphone to function properly.
    
    Signed-off-by: Vyacheslav Frantsishko <itmymaill@gmail.com>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://patch.msgid.link/20240626070334.45633-1-itmymaill@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: codecs: ES8326: Solve headphone detection issue [+ + +]
Author: Zhang Yi <zhangyi@everest-semi.com>
Date:   Tue Jun 4 10:19:46 2024 +0800

    ASoC: codecs: ES8326: Solve headphone detection issue
    
    [ Upstream commit b7c40988808f8d7426dee1e4d96a4e204de4a8bc ]
    
    When switching between OMTP and CTIA headset, we can hear pop noise.
    To solve this issue, We modified the configuration for headphone detection
    
    Signed-off-by: Zhang Yi <zhangyi@everest-semi.com>
    Link: https://msgid.link/r/20240604021946.2911-1-zhangyi@everest-semi.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: cs35l56: Disconnect ASP1 TX sources when ASP1 DAI is hooked up [+ + +]
Author: Richard Fitzgerald <rf@opensource.cirrus.com>
Date:   Thu Jun 13 14:25:27 2024 +0100

    ASoC: cs35l56: Disconnect ASP1 TX sources when ASP1 DAI is hooked up
    
    [ Upstream commit 8af49868e51ed1ba117b74728af12abe1eda82e5 ]
    
    If the ASP1 DAI is hooked up by the machine driver the ASP TX mixer
    sources should be initialized to disconnected. There aren't currently
    any available products using the ASP so this doesn't affect any
    existing systems.
    
    The cs35l56 does not have any fixed default for the mixer source
    registers. When the cs35l56 boots, its firmware patches these registers
    to setup a system-specific routing; this is so that Windows can use
    generic SDCA drivers instead of needing knowledge of chip-specific
    registers. The setup varies between end-products, which each have
    customized firmware, and so the default register state varies between
    end-products. It can also change if the firmware on an end-product is
    upgraded - for example if a change was needed to the routing for Windows
    use-cases. It must be emphasized that the settings applied by the
    firmware are not internal magic tuning; they are statically implementing
    use-case setup that on Linux would be done via ALSA controls.
    
    The driver is currently syncing the mixer controls with whatever
    initial state the firmware wrote to the registers, so that they report
    the actual audio routing. But if the ASP DAI is hooked up this can create
    a powered-up DAPM graph without anything intentionally setting up a path.
    This can lead to parts of the audio system powering up unexpectedly.
    
    For example when cs35l56 is connected to cs42l43 using a codec-codec link,
    this can create a complete DAPM graph which then powers-up cs42l43. But
    the cs42l43 can only be clocked from its SoundWire bus so this causes a
    bunch of errors in the kernel log where cs42l43 is unexpectedly powered-up
    without a clock.
    
    If the host is taking ownership of the ASP (either directly or as a
    codec-to-codec link) there is no need to keep the mixer settings that the
    firmware wrote. The driver has ALSA controls for setting these using
    standard Linux mechanisms. So if the machine driver hooks up the ASP the
    ASP mixers are initialized to "None" (no input). This prevents unintended
    DAPM-graph power-ups, and means the initial state of the mixers is
    always going to be None.
    
    Since the initial state of the mixers can vary from system to system and
    potentially between firmware upgrades, no use-case manager can currently
    assume that cs35l56 has a known initial state. The firmware could just as
    easily default them to "None" as to any input source. So defaulting them
    to "None" in the driver is not increasing the entropy of the system.
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20240613132527.46537-1-rf@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: Intel: avs: Fix route override [+ + +]
Author: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Date:   Mon Jun 3 12:28:16 2024 +0200

    ASoC: Intel: avs: Fix route override
    
    [ Upstream commit fd660b1bd015e5aa9a558ee04088f2431010548d ]
    
    Instead of overriding existing memory strings that may be too short,
    just allocate needed memory and point the route at it.
    
    Reported-by: Jason Montleon <jmontleo@redhat.com>
    Link: https://github.com/thesofproject/avs-topology-xml/issues/22#issuecomment-2127892605
    Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
    Link: https://lore.kernel.org/r/20240603102818.36165-3-amadeuszx.slawinski@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: rt722-sdca-sdw: add debounce time for type detection [+ + +]
Author: Jack Yu <jack.yu@realtek.com>
Date:   Wed Jun 12 09:01:07 2024 +0000

    ASoC: rt722-sdca-sdw: add debounce time for type detection
    
    [ Upstream commit f3b198e4788fcc8d03ed0c8bd5e3856c6a5760c5 ]
    
    Add debounce time in headset type detection for better performance.
    
    Signed-off-by: Jack Yu <jack.yu@realtek.com>
    Link: https://lore.kernel.org/r/7e502e9a9dd94122a1b60deb5ceb60fb@realtek.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: rt722-sdca-sdw: add silence detection register as volatile [+ + +]
Author: Jack Yu <jack.yu@realtek.com>
Date:   Mon Jun 3 10:47:16 2024 +0000

    ASoC: rt722-sdca-sdw: add silence detection register as volatile
    
    [ Upstream commit 968c974c08106fcf911d8d390d0f049af855d348 ]
    
    Including silence detection register as volatile.
    
    Signed-off-by: Jack Yu <jack.yu@realtek.com>
    Link: https://msgid.link/r/c66a6bd6d220426793096b42baf85437@realtek.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: SOF: Intel: hda-pcm: Limit the maximum number of periods by MAX_BDL_ENTRIES [+ + +]
Author: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Date:   Thu Jul 4 11:01:06 2024 +0200

    ASoC: SOF: Intel: hda-pcm: Limit the maximum number of periods by MAX_BDL_ENTRIES
    
    [ Upstream commit 82bb8db96610b558920b8c57cd250ec90567d79b ]
    
    The HDaudio specification Section 3.6.2 limits the number of BDL entries to 256.
    
    Make sure we don't allow more periods than this normative value.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://patch.msgid.link/20240704090106.371497-1-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: SOF: sof-audio: Skip unprepare for in-use widgets on error rollback [+ + +]
Author: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Date:   Wed Jun 12 15:12:03 2024 +0300

    ASoC: SOF: sof-audio: Skip unprepare for in-use widgets on error rollback
    
    [ Upstream commit 6f2a43e3d14f6e31a3b041a1043195d02c54d615 ]
    
    If the ipc_prepare() callback fails for a module instance, on error rewind
    we must skip the ipc_unprepare() call for ones that has positive use count.
    
    The positive use count means that the module instance is in active use, it
    cannot be unprepared.
    
    The issue affects capture direction paths with branches (single dai with
    multiple PCMs), the affected widgets are in the shared part of the paths.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Link: https://lore.kernel.org/r/20240612121203.15468-1-peter.ujfalusi@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: ti: davinci-mcasp: Set min period size using FIFO config [+ + +]
Author: Jai Luthra <j-luthra@ti.com>
Date:   Tue Jun 11 18:02:56 2024 +0530

    ASoC: ti: davinci-mcasp: Set min period size using FIFO config
    
    [ Upstream commit c5dcf8ab10606e76c1d8a0ec77f27d84a392e874 ]
    
    The minimum period size was enforced to 64 as older devices integrating
    McASP with EDMA used an internal FIFO of 64 samples.
    
    With UDMA based platforms this internal McASP FIFO is optional, as the
    DMA engine internally does some buffering which is already accounted for
    when registering the platform. So we should read the actual FIFO
    configuration (txnumevt/rxnumevt) instead of hardcoding frames.min to
    64.
    
    Acked-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
    Signed-off-by: Jai Luthra <j-luthra@ti.com>
    Link: https://lore.kernel.org/r/20240611-asoc_next-v3-2-fcfd84b12164@ti.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: ti: omap-hdmi: Fix too long driver name [+ + +]
Author: Primoz Fiser <primoz.fiser@norik.com>
Date:   Mon Jun 10 14:58:47 2024 +0200

    ASoC: ti: omap-hdmi: Fix too long driver name
    
    [ Upstream commit 524d3f126362b6033e92cbe107ae2158d7fbff94 ]
    
    Set driver name to "HDMI". This simplifies the code and gets rid of
    the following error messages:
    
      ASoC: driver name too long 'HDMI 58040000.encoder' -> 'HDMI_58040000_e'
    
    Signed-off-by: Primoz Fiser <primoz.fiser@norik.com>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
    Link: https://lore.kernel.org/r/20240610125847.773394-1-primoz.fiser@norik.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: topology: Do not assign fields that are already set [+ + +]
Author: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Date:   Mon Jun 3 12:28:17 2024 +0200

    ASoC: topology: Do not assign fields that are already set
    
    [ Upstream commit daf0b99d4720c9f05bdb81c73b2efdb43fa9def3 ]
    
    The routes are allocated with kzalloc(), so all fields are zeroed by
    default, skip unnecessary assignments.
    
    Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
    Link: https://lore.kernel.org/r/20240603102818.36165-4-amadeuszx.slawinski@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: topology: Fix references to freed memory [+ + +]
Author: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Date:   Mon Jun 3 12:28:15 2024 +0200

    ASoC: topology: Fix references to freed memory
    
    [ Upstream commit 97ab304ecd95c0b1703ff8c8c3956dc6e2afe8e1 ]
    
    Most users after parsing a topology file, release memory used by it, so
    having pointer references directly into topology file contents is wrong.
    Use devm_kmemdup(), to allocate memory as needed.
    
    Reported-by: Jason Montleon <jmontleo@redhat.com>
    Link: https://github.com/thesofproject/avs-topology-xml/issues/22#issuecomment-2127892605
    Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
    Link: https://lore.kernel.org/r/20240603102818.36165-2-amadeuszx.slawinski@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bluetooth/l2cap: sync sock recv cb and release [+ + +]
Author: Edward Adam Davis <eadavis@qq.com>
Date:   Sat Jun 15 09:45:54 2024 +0800

    bluetooth/l2cap: sync sock recv cb and release
    
    [ Upstream commit 89e856e124f9ae548572c56b1b70c2255705f8fe ]
    
    The problem occurs between the system call to close the sock and hci_rx_work,
    where the former releases the sock and the latter accesses it without lock protection.
    
               CPU0                       CPU1
               ----                       ----
               sock_close                 hci_rx_work
               l2cap_sock_release         hci_acldata_packet
               l2cap_sock_kill            l2cap_recv_frame
               sk_free                    l2cap_conless_channel
                                          l2cap_sock_recv_cb
    
    If hci_rx_work processes the data that needs to be received before the sock is
    closed, then everything is normal; Otherwise, the work thread may access the
    released sock when receiving data.
    
    Add a chan mutex in the rx callback of the sock to achieve synchronization between
    the sock release and recv cb.
    
    Sock is dead, so set chan data to NULL, avoid others use invalid sock pointer.
    
    Reported-and-tested-by: syzbot+b7f6f8c9303466e16c8a@syzkaller.appspotmail.com
    Signed-off-by: Edward Adam Davis <eadavis@qq.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Bluetooth: btnxpuart: Enable Power Save feature on startup [+ + +]
Author: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
Date:   Fri Jun 14 13:50:39 2024 +0530

    Bluetooth: btnxpuart: Enable Power Save feature on startup
    
    [ Upstream commit 4183a7be77009fc31c5760429fe095f163bf96a9 ]
    
    This sets the default power save mode setting to enabled.
    
    The power save feature is now stable and stress test issues, such as the
    TX timeout error, have been resolved.
    commit c7ee0bc8db32 ("Bluetooth: btnxpuart: Resolve TX timeout error in
    power save stress test")
    
    With this setting, the driver will send the vendor command to FW at
    startup, to enable power save feature.
    
    User can disable this feature using the following vendor command:
    hcitool cmd 3f 23 03 00 00 (HCI_NXP_AUTO_SLEEP_MODE)
    
    Signed-off-by: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
    Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: hci_core: cancel all works upon hci_unregister_dev() [+ + +]
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Mon Jun 10 20:00:32 2024 +0900

    Bluetooth: hci_core: cancel all works upon hci_unregister_dev()
    
    [ Upstream commit 0d151a103775dd9645c78c97f77d6e2a5298d913 ]
    
    syzbot is reporting that calling hci_release_dev() from hci_error_reset()
    due to hci_dev_put() from hci_error_reset() can cause deadlock at
    destroy_workqueue(), for hci_error_reset() is called from
    hdev->req_workqueue which destroy_workqueue() needs to flush.
    
    We need to make sure that hdev->{rx_work,cmd_work,tx_work} which are
    queued into hdev->workqueue and hdev->{power_on,error_reset} which are
    queued into hdev->req_workqueue are no longer running by the moment
    
           destroy_workqueue(hdev->workqueue);
           destroy_workqueue(hdev->req_workqueue);
    
    are called from hci_release_dev().
    
    Call cancel_work_sync() on these work items from hci_unregister_dev()
    as soon as hdev->list is removed from hci_dev_list.
    
    Reported-by: syzbot <syzbot+da0a9c9721e36db712e8@syzkaller.appspotmail.com>
    Closes: https://syzkaller.appspot.com/bug?extid=da0a9c9721e36db712e8
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: L2CAP: Fix deadlock [+ + +]
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date:   Mon Jun 24 09:42:09 2024 -0400

    Bluetooth: L2CAP: Fix deadlock
    
    commit f1a8f402f13f94263cf349216c257b2985100927 upstream.
    
    This fixes the following deadlock introduced by 39a92a55be13
    ("bluetooth/l2cap: sync sock recv cb and release")
    
    ============================================
    WARNING: possible recursive locking detected
    6.10.0-rc3-g4029dba6b6f1 #6823 Not tainted
    --------------------------------------------
    kworker/u5:0/35 is trying to acquire lock:
    ffff888002ec2510 (&chan->lock#2/1){+.+.}-{3:3}, at:
    l2cap_sock_recv_cb+0x44/0x1e0
    
    but task is already holding lock:
    ffff888002ec2510 (&chan->lock#2/1){+.+.}-{3:3}, at:
    l2cap_get_chan_by_scid+0xaf/0xd0
    
    other info that might help us debug this:
     Possible unsafe locking scenario:
    
           CPU0
           ----
      lock(&chan->lock#2/1);
      lock(&chan->lock#2/1);
    
     *** DEADLOCK ***
    
     May be due to missing lock nesting notation
    
    3 locks held by kworker/u5:0/35:
     #0: ffff888002b8a940 ((wq_completion)hci0#2){+.+.}-{0:0}, at:
    process_one_work+0x750/0x930
     #1: ffff888002c67dd0 ((work_completion)(&hdev->rx_work)){+.+.}-{0:0},
    at: process_one_work+0x44e/0x930
     #2: ffff888002ec2510 (&chan->lock#2/1){+.+.}-{3:3}, at:
    l2cap_get_chan_by_scid+0xaf/0xd0
    
    To fix the original problem this introduces l2cap_chan_lock at
    l2cap_conless_channel to ensure that l2cap_sock_recv_cb is called with
    chan->lock held.
    
    Fixes: 89e856e124f9 ("bluetooth/l2cap: sync sock recv cb and release")
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
btrfs: ensure fast fsync waits for ordered extents after a write failure [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Fri May 17 12:48:25 2024 +0100

    btrfs: ensure fast fsync waits for ordered extents after a write failure
    
    [ Upstream commit f13e01b89daf42330a4a722f451e48c3e2edfc8d ]
    
    If a write path in COW mode fails, either before submitting a bio for the
    new extents or an actual IO error happens, we can end up allowing a fast
    fsync to log file extent items that point to unwritten extents.
    
    This is because dropping the extent maps happens when completing ordered
    extents, at btrfs_finish_one_ordered(), and the completion of an ordered
    extent is executed in a work queue.
    
    This can result in a fast fsync to start logging file extent items based
    on existing extent maps before the ordered extents complete, therefore
    resulting in a log that has file extent items that point to unwritten
    extents, resulting in a corrupt file if a crash happens after and the log
    tree is replayed the next time the fs is mounted.
    
    This can happen for both direct IO writes and buffered writes.
    
    For example consider a direct IO write, in COW mode, that fails at
    btrfs_dio_submit_io() because btrfs_extract_ordered_extent() returned an
    error:
    
    1) We call btrfs_finish_ordered_extent() with the 'uptodate' parameter
       set to false, meaning an error happened;
    
    2) That results in marking the ordered extent with the BTRFS_ORDERED_IOERR
       flag;
    
    3) btrfs_finish_ordered_extent() queues the completion of the ordered
       extent - so that btrfs_finish_one_ordered() will be executed later in
       a work queue. That function will drop extent maps in the range when
       it's executed, since the extent maps point to unwritten locations
       (signaled by the BTRFS_ORDERED_IOERR flag);
    
    4) After calling btrfs_finish_ordered_extent() we keep going down the
       write path and unlock the inode;
    
    5) After that a fast fsync starts and locks the inode;
    
    6) Before the work queue executes btrfs_finish_one_ordered(), the fsync
       task sees the extent maps that point to the unwritten locations and
       logs file extent items based on them - it does not know they are
       unwritten, and the fast fsync path does not wait for ordered extents
       to complete, which is an intentional behaviour in order to reduce
       latency.
    
    For the buffered write case, here's one example:
    
    1) A fast fsync begins, and it starts by flushing delalloc and waiting for
       the writeback to complete by calling filemap_fdatawait_range();
    
    2) Flushing the dellaloc created a new extent map X;
    
    3) During the writeback some IO error happened, and at the end io callback
       (end_bbio_data_write()) we call btrfs_finish_ordered_extent(), which
       sets the BTRFS_ORDERED_IOERR flag in the ordered extent and queues its
       completion;
    
    4) After queuing the ordered extent completion, the end io callback clears
       the writeback flag from all pages (or folios), and from that moment the
       fast fsync can proceed;
    
    5) The fast fsync proceeds sees extent map X and logs a file extent item
       based on extent map X, resulting in a log that points to an unwritten
       data extent - because the ordered extent completion hasn't run yet, it
       happens only after the logging.
    
    To fix this make btrfs_finish_ordered_extent() set the inode flag
    BTRFS_INODE_NEEDS_FULL_SYNC in case an error happened for a COW write,
    so that a fast fsync will wait for ordered extent completion.
    
    Note that this issues of using extent maps that point to unwritten
    locations can not happen for reads, because in read paths we start by
    locking the extent range and wait for any ordered extents in the range
    to complete before looking for extent maps.
    
    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: Sasha Levin <sashal@kernel.org>

btrfs: fix uninitialized return value in the ref-verify tool [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Sun Jun 23 12:50:26 2024 +0100

    btrfs: fix uninitialized return value in the ref-verify tool
    
    [ Upstream commit 9da45c88e124f13a3c4d480b89b298e007fbb9e4 ]
    
    In the ref-verify tool, when processing the inline references of an extent
    item, we may end up returning with uninitialized return value, because:
    
    1) The 'ret' variable is not initialized if there are no inline extent
       references ('ptr' == 'end' before the while loop starts);
    
    2) If we find an extent owner inline reference we don't initialize 'ret'.
    
    So fix these cases by initializing 'ret' to 0 when declaring the variable
    and set it to -EINVAL if we find an extent owner inline references and
    simple quotas are not enabled (as well as print an error message).
    
    Reported-by: Mirsad Todorovac <mtodorovac69@gmail.com>
    Link: https://lore.kernel.org/linux-btrfs/59b40ebe-c824-457d-8b24-0bbca69d472b@gmail.com/
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: qgroup: fix quota root leak after quota disable failure [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Thu Jun 20 12:32:00 2024 +0100

    btrfs: qgroup: fix quota root leak after quota disable failure
    
    [ Upstream commit a7e4c6a3031c74078dba7fa36239d0f4fe476c53 ]
    
    If during the quota disable we fail when cleaning the quota tree or when
    deleting the root from the root tree, we jump to the 'out' label without
    ever dropping the reference on the quota root, resulting in a leak of the
    root since fs_info->quota_root is no longer pointing to the root (we have
    set it to NULL just before those steps).
    
    Fix this by always doing a btrfs_put_root() call under the 'out' label.
    This is a problem that exists since qgroups were first added in 2012 by
    commit bed92eae26cc ("Btrfs: qgroup implementation and prototypes"), but
    back then we missed a kfree on the quota root and free_extent_buffer()
    calls on its root and commit root nodes, since back then roots were not
    yet reference counted.
    
    Reviewed-by: Boris Burkov <boris@bur.io>
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: scrub: handle RST lookup error correctly [+ + +]
Author: Qu Wenruo <wqu@suse.com>
Date:   Mon Jun 17 15:18:44 2024 +0930

    btrfs: scrub: handle RST lookup error correctly
    
    [ Upstream commit 2c49908634a2b97b1c3abe0589be2739ac5e7fd5 ]
    
    [BUG]
    When running btrfs/060 with forced RST feature, it would crash the
    following ASSERT() inside scrub_read_endio():
    
            ASSERT(sector_nr < stripe->nr_sectors);
    
    Before that, we would have tree dump from
    btrfs_get_raid_extent_offset(), as we failed to find the RST entry for
    the range.
    
    [CAUSE]
    Inside scrub_submit_extent_sector_read() every time we allocated a new
    bbio we immediately called btrfs_map_block() to make sure there was some
    RST range covering the scrub target.
    
    But if btrfs_map_block() fails, we immediately call endio for the bbio,
    while the bbio is newly allocated, it's completely empty.
    
    Then inside scrub_read_endio(), we go through the bvecs to find
    the sector number (as bi_sector is no longer reliable if the bio is
    submitted to lower layers).
    
    And since the bio is empty, such bvecs iteration would not find any
    sector matching the sector, and return sector_nr == stripe->nr_sectors,
    triggering the ASSERT().
    
    [FIX]
    Instead of calling btrfs_map_block() after allocating a new bbio, call
    btrfs_map_block() first.
    
    Since our only objective of calling btrfs_map_block() is only to update
    stripe_len, there is really no need to do that after btrfs_alloc_bio().
    
    This new timing would avoid the problem of handling empty bbio
    completely, and in fact fixes a possible race window for the old code,
    where if the submission thread is the only owner of the pending_io, the
    scrub would never finish (since we didn't decrease the pending_io
    counter).
    
    Although the root cause of RST lookup failure still needs to be
    addressed.
    
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bytcr_rt5640 : inverse jack detect for Archos 101 cesium [+ + +]
Author: Thomas GENTY <tomlohave@gmail.com>
Date:   Sat Jun 8 19:02:51 2024 +0200

    bytcr_rt5640 : inverse jack detect for Archos 101 cesium
    
    [ Upstream commit e3209a1827646daaab744aa6a5767b1f57fb5385 ]
    
    When headphones are plugged in, they appear absent; when they are removed,
    they appear present.
    Add a specific entry in bytcr_rt5640 for this device
    
    Signed-off-by: Thomas GENTY <tomlohave@gmail.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20240608170251.99936-1-tomlohave@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cachefiles: add consistency check for copen/cread [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Wed May 22 19:43:02 2024 +0800

    cachefiles: add consistency check for copen/cread
    
    [ Upstream commit a26dc49df37e996876f50a0210039b2d211fdd6f ]
    
    This prevents malicious processes from completing random copen/cread
    requests and crashing the system. Added checks are listed below:
    
      * Generic, copen can only complete open requests, and cread can only
        complete read requests.
      * For copen, ondemand_id must not be 0, because this indicates that the
        request has not been read by the daemon.
      * For cread, the object corresponding to fd and req should be the same.
    
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Link: https://lore.kernel.org/r/20240522114308.2402121-7-libaokun@huaweicloud.com
    Acked-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: Jingbo Xu <jefflexu@linux.alibaba.com>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cachefiles: fix slab-use-after-free in cachefiles_withdraw_cookie() [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Fri Jul 19 21:28:12 2024 +0800

    cachefiles: fix slab-use-after-free in cachefiles_withdraw_cookie()
    
    [ Upstream commit 5d8f805789072ea7fd39504694b7bd17e5f751c4 ]
    
    We got the following issue in our fault injection stress test:
    
    ==================================================================
    BUG: KASAN: slab-use-after-free in cachefiles_withdraw_cookie+0x4d9/0x600
    Read of size 8 at addr ffff888118efc000 by task kworker/u78:0/109
    
    CPU: 13 PID: 109 Comm: kworker/u78:0 Not tainted 6.8.0-dirty #566
    Call Trace:
     <TASK>
     kasan_report+0x93/0xc0
     cachefiles_withdraw_cookie+0x4d9/0x600
     fscache_cookie_state_machine+0x5c8/0x1230
     fscache_cookie_worker+0x91/0x1c0
     process_one_work+0x7fa/0x1800
     [...]
    
    Allocated by task 117:
     kmalloc_trace+0x1b3/0x3c0
     cachefiles_acquire_volume+0xf3/0x9c0
     fscache_create_volume_work+0x97/0x150
     process_one_work+0x7fa/0x1800
     [...]
    
    Freed by task 120301:
     kfree+0xf1/0x2c0
     cachefiles_withdraw_cache+0x3fa/0x920
     cachefiles_put_unbind_pincount+0x1f6/0x250
     cachefiles_daemon_release+0x13b/0x290
     __fput+0x204/0xa00
     task_work_run+0x139/0x230
     do_exit+0x87a/0x29b0
     [...]
    ==================================================================
    
    Following is the process that triggers the issue:
    
               p1                |             p2
    ------------------------------------------------------------
                                  fscache_begin_lookup
                                   fscache_begin_volume_access
                                    fscache_cache_is_live(fscache_cache)
    cachefiles_daemon_release
     cachefiles_put_unbind_pincount
      cachefiles_daemon_unbind
       cachefiles_withdraw_cache
        fscache_withdraw_cache
         fscache_set_cache_state(cache, FSCACHE_CACHE_IS_WITHDRAWN);
        cachefiles_withdraw_objects(cache)
        fscache_wait_for_objects(fscache)
          atomic_read(&fscache_cache->object_count) == 0
                                  fscache_perform_lookup
                                   cachefiles_lookup_cookie
                                    cachefiles_alloc_object
                                     refcount_set(&object->ref, 1);
                                     object->volume = volume
                                     fscache_count_object(vcookie->cache);
                                      atomic_inc(&fscache_cache->object_count)
        cachefiles_withdraw_volumes
         cachefiles_withdraw_volume
          fscache_withdraw_volume
          __cachefiles_free_volume
           kfree(cachefiles_volume)
                                  fscache_cookie_state_machine
                                   cachefiles_withdraw_cookie
                                    cache = object->volume->cache;
                                    // cachefiles_volume UAF !!!
    
    After setting FSCACHE_CACHE_IS_WITHDRAWN, wait for all the cookie lookups
    to complete first, and then wait for fscache_cache->object_count == 0 to
    avoid the cookie exiting after the volume has been freed and triggering
    the above issue. Therefore call fscache_withdraw_volume() before calling
    cachefiles_withdraw_objects().
    
    This way, after setting FSCACHE_CACHE_IS_WITHDRAWN, only the following two
    cases will occur:
    1) fscache_begin_lookup fails in fscache_begin_volume_access().
    2) fscache_withdraw_volume() will ensure that fscache_count_object() has
       been executed before calling fscache_wait_for_objects().
    
    Fixes: fe2140e2f57f ("cachefiles: Implement volume support")
    Suggested-by: Hou Tao <houtao1@huawei.com>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Link: https://lore.kernel.org/r/20240628062930.2467993-4-libaokun@huaweicloud.com
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

cachefiles: fix slab-use-after-free in fscache_withdraw_volume() [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Fri Jul 19 21:28:11 2024 +0800

    cachefiles: fix slab-use-after-free in fscache_withdraw_volume()
    
    [ Upstream commit 522018a0de6b6fcce60c04f86dfc5f0e4b6a1b36 ]
    
    We got the following issue in our fault injection stress test:
    
    ==================================================================
    BUG: KASAN: slab-use-after-free in fscache_withdraw_volume+0x2e1/0x370
    Read of size 4 at addr ffff88810680be08 by task ondemand-04-dae/5798
    
    CPU: 0 PID: 5798 Comm: ondemand-04-dae Not tainted 6.8.0-dirty #565
    Call Trace:
     kasan_check_range+0xf6/0x1b0
     fscache_withdraw_volume+0x2e1/0x370
     cachefiles_withdraw_volume+0x31/0x50
     cachefiles_withdraw_cache+0x3ad/0x900
     cachefiles_put_unbind_pincount+0x1f6/0x250
     cachefiles_daemon_release+0x13b/0x290
     __fput+0x204/0xa00
     task_work_run+0x139/0x230
    
    Allocated by task 5820:
     __kmalloc+0x1df/0x4b0
     fscache_alloc_volume+0x70/0x600
     __fscache_acquire_volume+0x1c/0x610
     erofs_fscache_register_volume+0x96/0x1a0
     erofs_fscache_register_fs+0x49a/0x690
     erofs_fc_fill_super+0x6c0/0xcc0
     vfs_get_super+0xa9/0x140
     vfs_get_tree+0x8e/0x300
     do_new_mount+0x28c/0x580
     [...]
    
    Freed by task 5820:
     kfree+0xf1/0x2c0
     fscache_put_volume.part.0+0x5cb/0x9e0
     erofs_fscache_unregister_fs+0x157/0x1b0
     erofs_kill_sb+0xd9/0x1c0
     deactivate_locked_super+0xa3/0x100
     vfs_get_super+0x105/0x140
     vfs_get_tree+0x8e/0x300
     do_new_mount+0x28c/0x580
     [...]
    ==================================================================
    
    Following is the process that triggers the issue:
    
            mount failed         |         daemon exit
    ------------------------------------------------------------
     deactivate_locked_super        cachefiles_daemon_release
      erofs_kill_sb
       erofs_fscache_unregister_fs
        fscache_relinquish_volume
         __fscache_relinquish_volume
          fscache_put_volume(fscache_volume, fscache_volume_put_relinquish)
           zero = __refcount_dec_and_test(&fscache_volume->ref, &ref);
                                     cachefiles_put_unbind_pincount
                                      cachefiles_daemon_unbind
                                       cachefiles_withdraw_cache
                                        cachefiles_withdraw_volumes
                                         list_del_init(&volume->cache_link)
           fscache_free_volume(fscache_volume)
            cache->ops->free_volume
             cachefiles_free_volume
              list_del_init(&cachefiles_volume->cache_link);
            kfree(fscache_volume)
                                         cachefiles_withdraw_volume
                                          fscache_withdraw_volume
                                           fscache_volume->n_accesses
                                           // fscache_volume UAF !!!
    
    The fscache_volume in cache->volumes must not have been freed yet, but its
    reference count may be 0. So use the new fscache_try_get_volume() helper
    function try to get its reference count.
    
    If the reference count of fscache_volume is 0, fscache_put_volume() is
    freeing it, so wait for it to be removed from cache->volumes.
    
    If its reference count is not 0, call cachefiles_withdraw_volume() with
    reference count protection to avoid the above issue.
    
    Fixes: fe2140e2f57f ("cachefiles: Implement volume support")
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Link: https://lore.kernel.org/r/20240628062930.2467993-3-libaokun@huaweicloud.com
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

cachefiles: make on-demand read killable [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Wed May 22 19:43:08 2024 +0800

    cachefiles: make on-demand read killable
    
    [ Upstream commit bc9dde6155464e906e630a0a5c17a4cab241ffbb ]
    
    Replacing wait_for_completion() with wait_for_completion_killable() in
    cachefiles_ondemand_send_req() allows us to kill processes that might
    trigger a hunk_task if the daemon is abnormal.
    
    But now only CACHEFILES_OP_READ is killable, because OP_CLOSE and OP_OPEN
    is initiated from kworker context and the signal is prohibited in these
    kworker.
    
    Note that when the req in xas changes, i.e. xas_load(&xas) != req, it
    means that a process will complete the current request soon, so wait
    again for the request to be completed.
    
    In addition, add the cachefiles_ondemand_finish_req() helper function to
    simplify the code.
    
    Suggested-by: Hou Tao <houtao1@huawei.com>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Link: https://lore.kernel.org/r/20240522114308.2402121-13-libaokun@huaweicloud.com
    Acked-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: Jia Zhu <zhujia.zj@bytedance.com>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cachefiles: Set object to close if ondemand_id < 0 in copen [+ + +]
Author: Zizhi Wo <wozizhi@huawei.com>
Date:   Wed May 22 19:43:06 2024 +0800

    cachefiles: Set object to close if ondemand_id < 0 in copen
    
    [ Upstream commit 4f8703fb3482f92edcfd31661857b16fec89c2c0 ]
    
    If copen is maliciously called in the user mode, it may delete the request
    corresponding to the random id. And the request may have not been read yet.
    
    Note that when the object is set to reopen, the open request will be done
    with the still reopen state in above case. As a result, the request
    corresponding to this object is always skipped in select_req function, so
    the read request is never completed and blocks other process.
    
    Fix this issue by simply set object to close if its id < 0 in copen.
    
    Signed-off-by: Zizhi Wo <wozizhi@huawei.com>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Link: https://lore.kernel.org/r/20240522114308.2402121-11-libaokun@huaweicloud.com
    Acked-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: Jia Zhu <zhujia.zj@bytedance.com>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
can: kvaser_usb: fix return value for hif_usb_send_regout [+ + +]
Author: Chen Ni <nichen@iscas.ac.cn>
Date:   Tue May 21 12:10:20 2024 +0800

    can: kvaser_usb: fix return value for hif_usb_send_regout
    
    [ Upstream commit 0d34d8163fd87978a6abd792e2d8ad849f4c3d57 ]
    
    As the potential failure of usb_submit_urb(), it should be better to
    return the err variable to catch the error.
    
    Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
    Link: https://lore.kernel.org/all/20240521041020.1519416-1-nichen@iscas.ac.cn
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cifs: fix noisy message on copy_file_range [+ + +]
Author: Steve French <stfrench@microsoft.com>
Date:   Wed Jul 17 00:42:22 2024 -0500

    cifs: fix noisy message on copy_file_range
    
    commit ae4ccca47195332c69176b8615c5ee17efd30c46 upstream.
    
    There are common cases where copy_file_range can noisily
    log "source and target of copy not on same server"
    e.g. the mv command across mounts to two different server's shares.
    Change this to informational rather than logging as an error.
    
    A followon patch will add dynamic trace points e.g. for
    cifs_file_copychunk_range
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Shyam Prasad N <sprasad@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
clk: qcom: apss-ipq-pll: remove 'config_ctl_hi_val' from Stromer pll configs [+ + +]
Author: Gabor Juhos <j4g8y7@gmail.com>
Date:   Thu May 9 10:08:04 2024 +0200

    clk: qcom: apss-ipq-pll: remove 'config_ctl_hi_val' from Stromer pll configs
    
    [ Upstream commit 2ba8425678af422da37b6c9b50e9ce66f0f55cae ]
    
    Since the CONFIG_CTL register is only 32 bits wide in the Stromer
    and Stromer Plus PLLs , the 'config_ctl_hi_val' values from the
    IPQ5018 and IPQ5332 configurations are not used so remove those.
    
    No functional changes.
    
    Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
    Reviewed-by: Kathiravan Thirumoorthy <quic_kathirav@quicinc.com>
    Acked-by: Konrad Dybcio <konrad.dybcio@linaro.org>
    Link: https://lore.kernel.org/r/20240509-stromer-config-ctl-v1-1-6034e17b28d5@gmail.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
closures: Change BUG_ON() to WARN_ON() [+ + +]
Author: Kent Overstreet <kent.overstreet@linux.dev>
Date:   Thu Jun 20 09:45:09 2024 -0400

    closures: Change BUG_ON() to WARN_ON()
    
    [ Upstream commit 339b84ab6b1d66900c27bd999271cb2ae40ce812 ]
    
    If a BUG_ON() can be hit in the wild, it shouldn't be a BUG_ON()
    
    For reference, this has popped up once in the CI, and we'll need more
    info to debug it:
    
    03240 ------------[ cut here ]------------
    03240 kernel BUG at lib/closure.c:21!
    03240 kernel BUG at lib/closure.c:21!
    03240 Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
    03240 Modules linked in:
    03240 CPU: 15 PID: 40534 Comm: kworker/u80:1 Not tainted 6.10.0-rc4-ktest-ga56da69799bd #25570
    03240 Hardware name: linux,dummy-virt (DT)
    03240 Workqueue: btree_update btree_interior_update_work
    03240 pstate: 00001005 (nzcv daif -PAN -UAO -TCO -DIT +SSBS BTYPE=--)
    03240 pc : closure_put+0x224/0x2a0
    03240 lr : closure_put+0x24/0x2a0
    03240 sp : ffff0000d12071c0
    03240 x29: ffff0000d12071c0 x28: dfff800000000000 x27: ffff0000d1207360
    03240 x26: 0000000000000040 x25: 0000000000000040 x24: 0000000000000040
    03240 x23: ffff0000c1f20180 x22: 0000000000000000 x21: ffff0000c1f20168
    03240 x20: 0000000040000000 x19: ffff0000c1f20140 x18: 0000000000000001
    03240 x17: 0000000000003aa0 x16: 0000000000003ad0 x15: 1fffe0001c326974
    03240 x14: 0000000000000a1e x13: 0000000000000000 x12: 1fffe000183e402d
    03240 x11: ffff6000183e402d x10: dfff800000000000 x9 : ffff6000183e402e
    03240 x8 : 0000000000000001 x7 : 00009fffe7c1bfd3 x6 : ffff0000c1f2016b
    03240 x5 : ffff0000c1f20168 x4 : ffff6000183e402e x3 : ffff800081391954
    03240 x2 : 0000000000000001 x1 : 0000000000000000 x0 : 00000000a8000000
    03240 Call trace:
    03240  closure_put+0x224/0x2a0
    03240  bch2_check_for_deadlock+0x910/0x1028
    03240  bch2_six_check_for_deadlock+0x1c/0x30
    03240  six_lock_slowpath.isra.0+0x29c/0xed0
    03240  six_lock_ip_waiter+0xa8/0xf8
    03240  __bch2_btree_node_lock_write+0x14c/0x298
    03240  bch2_trans_lock_write+0x6d4/0xb10
    03240  __bch2_trans_commit+0x135c/0x5520
    03240  btree_interior_update_work+0x1248/0x1c10
    03240  process_scheduled_works+0x53c/0xd90
    03240  worker_thread+0x370/0x8c8
    03240  kthread+0x258/0x2e8
    03240  ret_from_fork+0x10/0x20
    03240 Code: aa1303e0 d63f0020 a94363f7 17ffff8c (d4210000)
    03240 ---[ end trace 0000000000000000 ]---
    03240 Kernel panic - not syncing: Oops - BUG: Fatal exception
    03240 SMP: stopping secondary CPUs
    03241 SMP: failed to stop secondary CPUs 13,15
    03241 Kernel Offset: disabled
    03241 CPU features: 0x00,00000003,80000008,4240500b
    03241 Memory Limit: none
    03241 ---[ end Kernel panic - not syncing: Oops - BUG: Fatal exception ]---
    03246 ========= FAILED TIMEOUT copygc_torture_no_checksum in 7200s
    
    Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cpumask: limit FORCE_NR_CPUS to just the UP case [+ + +]
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Jun 18 09:00:04 2024 -0700

    cpumask: limit FORCE_NR_CPUS to just the UP case
    
    [ Upstream commit 5d272dd1b3430bb31fa30042490fa081512424e4 ]
    
    Hardcoding the number of CPUs at compile time does improve code
    generation, but if you get it wrong the result will be confusion.
    
    We already limited this earlier to only "experts" (see commit
    fe5759d5bfda "cpumask: limit visibility of FORCE_NR_CPUS"), but with
    distro kernel configs often having EXPERT enabled, that turns out to not
    be much of a limit.
    
    To quote the philosophers at Disney: "Everyone can be an expert. And
    when everyone's an expert, no one will be".
    
    There's a runtime warning if you then set nr_cpus to anything but the
    forced number, but apparently that can be ignored too [1] and by then
    it's pretty much too late anyway.
    
    If we had some real way to limit this to "embedded only", maybe it would
    be worth it, but let's see if anybody even notices that the option is
    gone.  We need to simplify kernel configuration anyway.
    
    Link: https://lore.kernel.org/all/20240618105036.208a8860@rorschach.local.home/ [1]
    Reported-by: Steven Rostedt <rostedt@goodmis.org>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Paul McKenney <paulmck@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Yury Norov <yury.norov@gmail.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drivers/perf: riscv: Reset the counter to hpmevent mapping while starting cpus [+ + +]
Author: Samuel Holland <samuel.holland@sifive.com>
Date:   Fri Jun 28 00:51:42 2024 -0700

    drivers/perf: riscv: Reset the counter to hpmevent mapping while starting cpus
    
    [ Upstream commit 7dd646cf745c34d31e7ed2a52265e9ca8308f58f ]
    
    Currently, we stop all the counters while a new cpu is brought online.
    However, the hpmevent to counter mappings are not reset. The firmware may
    have some stale encoding in their mapping structure which may lead to
    undesirable results. We have not encountered such scenario though.
    
    Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
    Signed-off-by: Atish Patra <atishp@rivosinc.com>
    Link: https://lore.kernel.org/r/20240628-misc_perf_fixes-v4-2-e01cfddcf035@rivosinc.com
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/display: Account for cursor prefetch BW in DML1 mode support [+ + +]
Author: Alvin Lee <alvin.lee2@amd.com>
Date:   Thu Jun 20 15:11:38 2024 -0400

    drm/amd/display: Account for cursor prefetch BW in DML1 mode support
    
    [ Upstream commit 074b3a886713f69d98d30bb348b1e4cb3ce52b22 ]
    
    [Description]
    We need to ensure to take into account cursor prefetch BW in
    mode support or we may pass ModeQuery but fail an actual flip
    which will cause a hang. Flip may fail because the cursor_pre_bw
    is populated during mode programming (and mode programming is
    never called prior to ModeQuery).
    
    Reviewed-by: Chaitanya Dhere <chaitanya.dhere@amd.com>
    Reviewed-by: Nevenko Stupar <nevenko.stupar@amd.com>
    Signed-off-by: Jerry Zuo <jerry.zuo@amd.com>
    Signed-off-by: Alvin Lee <alvin.lee2@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Add refresh rate range check [+ + +]
Author: Tom Chung <chiahsuan.chung@amd.com>
Date:   Wed Jun 19 14:03:55 2024 +0800

    drm/amd/display: Add refresh rate range check
    
    [ Upstream commit 74ad26b36d303ac233eccadc5c3a8d7ee4709f31 ]
    
    [Why]
    We only enable the VRR while monitor usable refresh rate range
    is greater than 10 Hz.
    But we did not check the range in DRM_EDID_FEATURE_CONTINUOUS_FREQ
    case.
    
    [How]
    Add a refresh rate range check before set the freesync_capable flag
    in DRM_EDID_FEATURE_CONTINUOUS_FREQ case.
    
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Reviewed-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
    Signed-off-by: Jerry Zuo <jerry.zuo@amd.com>
    Signed-off-by: Tom Chung <chiahsuan.chung@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: change dram_clock_latency to 34us for dcn35 [+ + +]
Author: Paul Hsieh <paul.hsieh@amd.com>
Date:   Tue May 28 14:36:00 2024 +0800

    drm/amd/display: change dram_clock_latency to 34us for dcn35
    
    [ Upstream commit 6071607bfefefc50a3907c0ba88878846960d29a ]
    
    [Why & How]
    Current DRAM setting would cause underflow on customer platform.
    Modify dram_clock_change_latency_us from 11.72 to 34.0 us as per recommendation from HW team
    
    Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Acked-by: Zaeem Mohamed <zaeem.mohamed@amd.com>
    Signed-off-by: Paul Hsieh <paul.hsieh@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Change dram_clock_latency to 34us for dcn351 [+ + +]
Author: Daniel Miess <daniel.miess@amd.com>
Date:   Tue May 28 16:17:17 2024 -0400

    drm/amd/display: Change dram_clock_latency to 34us for dcn351
    
    [ Upstream commit c60e20f13c27662de36cd5538d6299760780db52 ]
    
    [Why]
    Intermittent underflow observed when using 4k144 display on
    dcn351
    
    [How]
    Update dram_clock_change_latency_us from 11.72us to 34us
    
    Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Acked-by: Zaeem Mohamed <zaeem.mohamed@amd.com>
    Signed-off-by: Daniel Miess <daniel.miess@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Fix array-index-out-of-bounds in dml2/FCLKChangeSupport [+ + +]
Author: Roman Li <Roman.Li@amd.com>
Date:   Wed Jun 26 14:08:41 2024 -0400

    drm/amd/display: Fix array-index-out-of-bounds in dml2/FCLKChangeSupport
    
    [ Upstream commit 0ad4b4a2f6357c45fbe444ead1a929a0b4017d03 ]
    
    [Why]
    Potential out of bounds access in dml2_calculate_rq_and_dlg_params()
    because the value of out_lowest_state_idx used as an index for FCLKChangeSupport
    array can be greater than 1.
    
    [How]
    Currently dml2 core specifies identical values for all FCLKChangeSupport
    elements. Always use index 0 in the condition to avoid out of bounds access.
    
    Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
    Signed-off-by: Jerry Zuo <jerry.zuo@amd.com>
    Signed-off-by: Roman Li <Roman.Li@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Fix refresh rate range for some panel [+ + +]
Author: Tom Chung <chiahsuan.chung@amd.com>
Date:   Fri Jun 14 15:38:56 2024 +0800

    drm/amd/display: Fix refresh rate range for some panel
    
    [ Upstream commit 9ef1548aeaa8858e7aee2152bf95cc71cdcd6dff ]
    
    [Why]
    Some of the panels does not have the refresh rate range info
    in base EDID and only have the refresh rate range info in
    DisplayID block.
    It will cause the max/min freesync refresh rate set to 0.
    
    [How]
    Try to parse the refresh rate range info from DisplayID if the
    max/min refresh rate is 0.
    
    Reviewed-by: Sun peng Li <sunpeng.li@amd.com>
    Signed-off-by: Jerry Zuo <jerry.zuo@amd.com>
    Signed-off-by: Tom Chung <chiahsuan.chung@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Update efficiency bandwidth for dcn351 [+ + +]
Author: Fangzhi Zuo <Jerry.Zuo@amd.com>
Date:   Wed Jun 26 14:07:49 2024 -0400

    drm/amd/display: Update efficiency bandwidth for dcn351
    
    [ Upstream commit 7ae37db29a8bc4d3d116a409308dd98fc3a0b1b3 ]
    
    Fix 4k240 underflow on dcn351
    
    Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
    Signed-off-by: Fangzhi Zuo <Jerry.Zuo@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/swsmu: add MALL init support workaround for smu_v14_0_1 [+ + +]
Author: Li Ma <li.ma@amd.com>
Date:   Thu Jun 6 20:25:34 2024 +0800

    drm/amd/swsmu: add MALL init support workaround for smu_v14_0_1
    
    [ Upstream commit c223376b3019a00a0241faea0bc8c966738d1cc5 ]
    
    [Why]
    SMU firmware has not supported MALL PG.
    
    [How]
    Disable MALL PG and make it always on until SMU firmware is ready.
    
    Signed-off-by: Li Ma <li.ma@amd.com>
    Reviewed-by: Tim Huang <Tim.Huang@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu/pptable: Fix UBSAN array-index-out-of-bounds [+ + +]
Author: Tasos Sahanidis <tasos@tasossah.com>
Date:   Fri May 31 19:23:30 2024 +0300

    drm/amdgpu/pptable: Fix UBSAN array-index-out-of-bounds
    
    [ Upstream commit c6c4dd54012551cce5cde408b35468f2c62b0cce ]
    
    Flexible arrays used [1] instead of []. Replace the former with the latter
    to resolve multiple UBSAN warnings observed on boot with a BONAIRE card.
    
    In addition, use the __counted_by attribute where possible to hint the
    length of the arrays to the compiler and any sanitizers.
    
    Signed-off-by: Tasos Sahanidis <tasos@tasossah.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu: Indicate CU havest info to CP [+ + +]
Author: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
Date:   Wed Jun 5 09:30:50 2024 -0400

    drm/amdgpu: Indicate CU havest info to CP
    
    [ Upstream commit 49c9ffabde555c841392858d8b9e6cf58998a50c ]
    
    To achieve full occupancy CP hardware needs to know if CUs in SE are
    symmetrically or asymmetrically harvested
    
    v2: Reset is_symmetric_cus for each loop
    
    Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: init TA fw for psp v14 [+ + +]
Author: Likun Gao <Likun.Gao@amd.com>
Date:   Wed Jun 12 14:30:40 2024 +0800

    drm/amdgpu: init TA fw for psp v14
    
    [ Upstream commit ed5a4484f074aa2bfb1dad99ff3628ea8da4acdc ]
    
    Add support to init TA firmware for psp v14.
    
    Signed-off-by: Likun Gao <Likun.Gao@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/exynos: dp: drop driver owner initialization [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Tue Jun 4 15:11:29 2024 +0200

    drm/exynos: dp: drop driver owner initialization
    
    [ Upstream commit 1f3512cdf8299f9edaea9046d53ea324a7730bab ]
    
    Core in platform_driver_register() already sets the .owner, so driver
    does not need to.  Whatever is set here will be anyway overwritten by
    main driver calling platform_driver_register().
    
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Inki Dae <inki.dae@samsung.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/mediatek: Call drm_atomic_helper_shutdown() at shutdown time [+ + +]
Author: Douglas Anderson <dianders@chromium.org>
Date:   Tue Jun 11 10:27:44 2024 -0700

    drm/mediatek: Call drm_atomic_helper_shutdown() at shutdown time
    
    [ Upstream commit c38896ca6318c2df20bbe6c8e3f633e071fda910 ]
    
    Based on grepping through the source code this driver appears to be
    missing a call to drm_atomic_helper_shutdown() at system shutdown
    time. Among other things, this means that if a panel is in use that it
    won't be cleanly powered off at system shutdown time.
    
    The fact that we should call drm_atomic_helper_shutdown() in the case
    of OS shutdown/restart comes straight out of the kernel doc "driver
    instance overview" in drm_drv.c.
    
    This driver users the component model and shutdown happens in the base
    driver. The "drvdata" for this driver will always be valid if
    shutdown() is called and as of commit 2a073968289d
    ("drm/atomic-helper: drm_atomic_helper_shutdown(NULL) should be a
    noop") we don't need to confirm that "drm" is non-NULL.
    
    Suggested-by: Maxime Ripard <mripard@kernel.org>
    Reviewed-by: Maxime Ripard <mripard@kernel.org>
    Reviewed-by: Fei Shao <fshao@chromium.org>
    Tested-by: Fei Shao <fshao@chromium.org>
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Maxime Ripard <mripard@kernel.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240611102744.v2.1.I2b014f90afc4729b6ecc7b5ddd1f6dedcea4625b@changeid
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/radeon: check bo_va->bo is non-NULL before using it [+ + +]
Author: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Date:   Tue Jun 25 14:31:34 2024 +0200

    drm/radeon: check bo_va->bo is non-NULL before using it
    
    [ Upstream commit 6fb15dcbcf4f212930350eaee174bb60ed40a536 ]
    
    The call to radeon_vm_clear_freed might clear bo_va->bo, so
    we have to check it before dereferencing it.
    
    Signed-off-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/vmwgfx: Fix missing HYPERVISOR_GUEST dependency [+ + +]
Author: Alexey Makhalov <alexey.makhalov@broadcom.com>
Date:   Sat Jun 15 18:25:10 2024 -0700

    drm/vmwgfx: Fix missing HYPERVISOR_GUEST dependency
    
    [ Upstream commit 8c4d6945fe5bd04ff847c3c788abd34ca354ecee ]
    
    VMWARE_HYPERCALL alternative will not work as intended without VMware guest code
    initialization.
    
      [ bp: note that this doesn't reproduce with newer gccs so it must be
        something gcc-9-specific. ]
    
    Closes: https://lore.kernel.org/oe-kbuild-all/202406152104.FxakP1MB-lkp@intel.com/
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Alexey Makhalov <alexey.makhalov@broadcom.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/r/20240616012511.198243-1-alexey.makhalov@broadcom.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm: panel-orientation-quirks: Add quirk for Aya Neo KUN [+ + +]
Author: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Date:   Sun Mar 10 23:04:00 2024 +0100

    drm: panel-orientation-quirks: Add quirk for Aya Neo KUN
    
    [ Upstream commit f74fb5df429ebc6a614dc5aa9e44d7194d402e5a ]
    
    Similar to the other Aya Neo devices this one features
    again a portrait screen, here with a native resolution
    of 1600x2560.
    
    Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240310220401.895591-1-tjakobi@math.uni-bielefeld.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm: renesas: shmobile: Call drm_atomic_helper_shutdown() at shutdown time [+ + +]
Author: Douglas Anderson <dianders@chromium.org>
Date:   Wed Jun 12 09:23:13 2024 +0200

    drm: renesas: shmobile: Call drm_atomic_helper_shutdown() at shutdown time
    
    [ Upstream commit 0320ca14c6fb68ad19aa72e55a1a21c061b2946b ]
    
    Based on grepping through the source code, this driver appears to be
    missing a call to drm_atomic_helper_shutdown() at system shutdown time.
    This is important because drm_atomic_helper_shutdown() will cause
    panels to get disabled cleanly which may be important for their power
    sequencing.  Future changes will remove any custom powering off in
    individual panel drivers so the DRM drivers need to start getting this
    right.
    
    The fact that we should call drm_atomic_helper_shutdown() in the case of
    OS shutdown comes straight out of the kernel doc "driver instance
    overview" in drm_drv.c.
    
    [geert: shmob_drm_remove() already calls drm_atomic_helper_shutdown]
    
    Suggested-by: Maxime Ripard <mripard@kernel.org>
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Link: https://lore.kernel.org/r/20230901164111.RFT.15.Iaf638a1d4c8b3c307a6192efabb4cbb06b195f15@changeid
    [geert: s/drm_helper_force_disable_all/drm_atomic_helper_shutdown/]
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Reviewed-by: Sui Jingfeng <sui.jingfeng@linux.dev>
    Signed-off-by: Maxime Ripard <mripard@kernel.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/17c6a5a668e5975f871b77fb1fca6711a0799d9e.1718176895.git.geert+renesas@glider.be
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
efi/libstub: zboot.lds: Discard .discard sections [+ + +]
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Wed May 22 10:32:43 2024 -0700

    efi/libstub: zboot.lds: Discard .discard sections
    
    [ Upstream commit 5134acb15d9ef27aa2b90aad46d4e89fcef79fdc ]
    
    When building ARCH=loongarch defconfig + CONFIG_UNWINDER_ORC=y using
    LLVM, there is a warning from ld.lld when linking the EFI zboot image
    due to the use of unreachable() in number() in vsprintf.c:
    
      ld.lld: warning: drivers/firmware/efi/libstub/lib.a(vsprintf.stub.o):(.discard.unreachable+0x0): has non-ABS relocation R_LARCH_32_PCREL against symbol ''
    
    If the compiler cannot eliminate the default case for any reason, the
    .discard.unreachable section will remain in the final binary but the
    entire point of any section prefixed with .discard is that it is only
    used at compile time, so it can be discarded via /DISCARD/ in a linker
    script. The asm-generic vmlinux.lds.h includes .discard and .discard.*
    in the COMMON_DISCARDS macro but that is not used for zboot.lds, as it
    is not a kernel image linker script.
    
    Add .discard and .discard.* to /DISCARD/ in zboot.lds, so that any
    sections meant to be discarded at link time are not included in the
    final zboot image. This issue is not specific to LoongArch, it is just
    the first architecture to select CONFIG_OBJTOOL, which defines
    annotate_unreachable() as an asm statement to add the
    .discard.unreachable section, and use the EFI stub.
    
    Closes: https://github.com/ClangBuiltLinux/linux/issues/2023
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Acked-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
erofs: ensure m_llen is reset to 0 if metadata is invalid [+ + +]
Author: Gao Xiang <xiang@kernel.org>
Date:   Sun Jun 30 02:57:43 2024 +0800

    erofs: ensure m_llen is reset to 0 if metadata is invalid
    
    [ Upstream commit 9b32b063be1001e322c5f6e01f2a649636947851 ]
    
    Sometimes, the on-disk metadata might be invalid due to user
    interrupts, storage failures, or other unknown causes.
    
    In that case, z_erofs_map_blocks_iter() may still return a valid
    m_llen while other fields remain invalid (e.g., m_plen can be 0).
    
    Due to the return value of z_erofs_scan_folio() in some path will
    be ignored on purpose, the following z_erofs_scan_folio() could
    then use the invalid value by accident.
    
    Let's reset m_llen to 0 to prevent this.
    
    Link: https://lore.kernel.org/r/20240629185743.2819229-1-hsiangkao@linux.alibaba.com
    Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fs/file: fix the check in find_next_fd() [+ + +]
Author: Yuntao Wang <yuntao.wang@linux.dev>
Date:   Thu May 30 00:06:56 2024 +0800

    fs/file: fix the check in find_next_fd()
    
    [ Upstream commit ed8c7fbdfe117abbef81f65428ba263118ef298a ]
    
    The maximum possible return value of find_next_zero_bit(fdt->full_fds_bits,
    maxbit, bitbit) is maxbit. This return value, multiplied by BITS_PER_LONG,
    gives the value of bitbit, which can never be greater than maxfd, it can
    only be equal to maxfd at most, so the following check 'if (bitbit > maxfd)'
    will never be true.
    
    Moreover, when bitbit equals maxfd, it indicates that there are no unused
    fds, and the function can directly return.
    
    Fix this check.
    
    Signed-off-by: Yuntao Wang <yuntao.wang@linux.dev>
    Link: https://lore.kernel.org/r/20240529160656.209352-1-yuntao.wang@linux.dev
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fs: better handle deep ancestor chains in is_subdir() [+ + +]
Author: Christian Brauner <brauner@kernel.org>
Date:   Tue Jul 2 21:03:26 2024 +0200

    fs: better handle deep ancestor chains in is_subdir()
    
    [ Upstream commit 391b59b045004d5b985d033263ccba3e941a7740 ]
    
    Jan reported that 'cd ..' may take a long time in deep directory
    hierarchies under a bind-mount. If concurrent renames happen it is
    possible to livelock in is_subdir() because it will keep retrying.
    
    Change is_subdir() from simply retrying over and over to retry once and
    then acquire the rename lock to handle deep ancestor chains better. The
    list of alternatives to this approach were less then pleasant. Change
    the scope of rcu lock to cover the whole walk while at it.
    
    A big thanks to Jan and Linus. Both Jan and Linus had proposed
    effectively the same thing just that one version ended up being slightly
    more elegant.
    
    Reported-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gpio: pca953x: fix pca953x_irq_bus_sync_unlock race [+ + +]
Author: Ian Ray <ian.ray@gehealthcare.com>
Date:   Thu Jun 20 07:29:15 2024 +0300

    gpio: pca953x: fix pca953x_irq_bus_sync_unlock race
    
    [ Upstream commit bfc6444b57dc7186b6acc964705d7516cbaf3904 ]
    
    Ensure that `i2c_lock' is held when setting interrupt latch and mask in
    pca953x_irq_bus_sync_unlock() in order to avoid races.
    
    The other (non-probe) call site pca953x_gpio_set_multiple() ensures the
    lock is held before calling pca953x_write_regs().
    
    The problem occurred when a request raced against irq_bus_sync_unlock()
    approximately once per thousand reboots on an i.MX8MP based system.
    
     * Normal case
    
       0-0022: write register AI|3a {03,02,00,00,01} Input latch P0
       0-0022: write register AI|49 {fc,fd,ff,ff,fe} Interrupt mask P0
       0-0022: write register AI|08 {ff,00,00,00,00} Output P3
       0-0022: write register AI|12 {fc,00,00,00,00} Config P3
    
     * Race case
    
       0-0022: write register AI|08 {ff,00,00,00,00} Output P3
       0-0022: write register AI|08 {03,02,00,00,01} *** Wrong register ***
       0-0022: write register AI|12 {fc,00,00,00,00} Config P3
       0-0022: write register AI|49 {fc,fd,ff,ff,fe} Interrupt mask P0
    
    Signed-off-by: Ian Ray <ian.ray@gehealthcare.com>
    Link: https://lore.kernel.org/r/20240620042915.2173-1-ian.ray@gehealthcare.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hfsplus: fix uninit-value in copy_name [+ + +]
Author: Edward Adam Davis <eadavis@qq.com>
Date:   Tue May 21 13:21:46 2024 +0800

    hfsplus: fix uninit-value in copy_name
    
    [ Upstream commit 0570730c16307a72f8241df12363f76600baf57d ]
    
    [syzbot reported]
    BUG: KMSAN: uninit-value in sized_strscpy+0xc4/0x160
     sized_strscpy+0xc4/0x160
     copy_name+0x2af/0x320 fs/hfsplus/xattr.c:411
     hfsplus_listxattr+0x11e9/0x1a50 fs/hfsplus/xattr.c:750
     vfs_listxattr fs/xattr.c:493 [inline]
     listxattr+0x1f3/0x6b0 fs/xattr.c:840
     path_listxattr fs/xattr.c:864 [inline]
     __do_sys_listxattr fs/xattr.c:876 [inline]
     __se_sys_listxattr fs/xattr.c:873 [inline]
     __x64_sys_listxattr+0x16b/0x2f0 fs/xattr.c:873
     x64_sys_call+0x2ba0/0x3b50 arch/x86/include/generated/asm/syscalls_64.h:195
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcf/0x1e0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Uninit was created at:
     slab_post_alloc_hook mm/slub.c:3877 [inline]
     slab_alloc_node mm/slub.c:3918 [inline]
     kmalloc_trace+0x57b/0xbe0 mm/slub.c:4065
     kmalloc include/linux/slab.h:628 [inline]
     hfsplus_listxattr+0x4cc/0x1a50 fs/hfsplus/xattr.c:699
     vfs_listxattr fs/xattr.c:493 [inline]
     listxattr+0x1f3/0x6b0 fs/xattr.c:840
     path_listxattr fs/xattr.c:864 [inline]
     __do_sys_listxattr fs/xattr.c:876 [inline]
     __se_sys_listxattr fs/xattr.c:873 [inline]
     __x64_sys_listxattr+0x16b/0x2f0 fs/xattr.c:873
     x64_sys_call+0x2ba0/0x3b50 arch/x86/include/generated/asm/syscalls_64.h:195
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcf/0x1e0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [Fix]
    When allocating memory to strbuf, initialize memory to 0.
    
    Reported-and-tested-by: syzbot+efde959319469ff8d4d7@syzkaller.appspotmail.com
    Signed-off-by: Edward Adam Davis <eadavis@qq.com>
    Link: https://lore.kernel.org/r/tencent_8BBB6433BC9E1C1B7B4BDF1BF52574BA8808@qq.com
    Reported-and-tested-by: syzbot+01ade747b16e9c8030e0@syzkaller.appspotmail.com
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
HID: Ignore battery for ELAN touchscreens 2F2C and 4116 [+ + +]
Author: Louis Dalibard <ontake@ontake.dev>
Date:   Fri Jun 7 16:53:43 2024 +0200

    HID: Ignore battery for ELAN touchscreens 2F2C and 4116
    
    [ Upstream commit a3a5a37efba11b7cf1a86abe7bccfbcdb521764e ]
    
    At least ASUS Zenbook 14 (2023) and ASUS Zenbook 14 Pro (2023) are affected.
    
    The touchscreen reports a battery status of 0% and jumps to 1% when a
    stylus is used.
    
    The device ID was added and the battery ignore quirk was enabled for it.
    
    [jkosina@suse.com: reformatted changelog a bit]
    Signed-off-by: Louis Dalibard <ontake@ontake.dev>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ibmvnic: Add tx check to prevent skb leak [+ + +]
Author: Nick Child <nnac123@linux.ibm.com>
Date:   Thu Jun 20 10:23:11 2024 -0500

    ibmvnic: Add tx check to prevent skb leak
    
    [ Upstream commit 0983d288caf984de0202c66641577b739caad561 ]
    
    Below is a summary of how the driver stores a reference to an skb during
    transmit:
        tx_buff[free_map[consumer_index]]->skb = new_skb;
        free_map[consumer_index] = IBMVNIC_INVALID_MAP;
        consumer_index ++;
    Where variable data looks like this:
        free_map == [4, IBMVNIC_INVALID_MAP, IBMVNIC_INVALID_MAP, 0, 3]
                                                    consumer_index^
        tx_buff == [skb=null, skb=<ptr>, skb=<ptr>, skb=null, skb=null]
    
    The driver has checks to ensure that free_map[consumer_index] pointed to
    a valid index but there was no check to ensure that this index pointed
    to an unused/null skb address. So, if, by some chance, our free_map and
    tx_buff lists become out of sync then we were previously risking an
    skb memory leak. This could then cause tcp congestion control to stop
    sending packets, eventually leading to ETIMEDOUT.
    
    Therefore, add a conditional to ensure that the skb address is null. If
    not then warn the user (because this is still a bug that should be
    patched) and free the old pointer to prevent memleak/tcp problems.
    
    Signed-off-by: Nick Child <nnac123@linux.ibm.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ila: block BH in ila_output() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri May 31 13:26:35 2024 +0000

    ila: block BH in ila_output()
    
    [ Upstream commit cf28ff8e4c02e1ffa850755288ac954b6ff0db8c ]
    
    As explained in commit 1378817486d6 ("tipc: block BH
    before using dst_cache"), net/core/dst_cache.c
    helpers need to be called with BH disabled.
    
    ila_output() is called from lwtunnel_output()
    possibly from process context, and under rcu_read_lock().
    
    We might be interrupted by a softirq, re-enter ila_output()
    and corrupt dst_cache data structures.
    
    Fix the race by using local_bh_disable().
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Link: https://lore.kernel.org/r/20240531132636.2637995-5-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
input: Add event code for accessibility key [+ + +]
Author: Aseda Aboagye <aaboagye@chromium.org>
Date:   Tue Jun 4 23:10:47 2024 +0000

    input: Add event code for accessibility key
    
    [ Upstream commit 0c7dd00de018ff70b3452c424901816e26366a8a ]
    
    HUTRR116 added support for a new usage titled "System Accessibility
    Binding" which toggles a system-wide bound accessibility UI or command.
    This commit simply adds a new event code for the usage.
    
    Signed-off-by: Aseda Aboagye <aaboagye@chromium.org>
    Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Link: https://lore.kernel.org/r/Zl-e97O9nvudco5z@google.com
    Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

input: Add support for "Do Not Disturb" [+ + +]
Author: Aseda Aboagye <aaboagye@chromium.org>
Date:   Tue Jun 4 23:16:32 2024 +0000

    input: Add support for "Do Not Disturb"
    
    [ Upstream commit 22d6d060ac77955291deb43efc2f3f4f9632c6cb ]
    
    HUTRR94 added support for a new usage titled "System Do Not Disturb"
    which toggles a system-wide Do Not Disturb setting. This commit simply
    adds a new event code for the usage.
    
    Signed-off-by: Aseda Aboagye <aaboagye@chromium.org>
    Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Link: https://lore.kernel.org/r/Zl-gUHE70s7wCAoB@google.com
    Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Input: ads7846 - use spi_device_id table [+ + +]
Author: Alexander Stein <alexander.stein@ew.tq-group.com>
Date:   Wed Jun 19 14:27:02 2024 +0200

    Input: ads7846 - use spi_device_id table
    
    [ Upstream commit 7c7b1be19b228b450c2945ec379d7fc6bfef9852 ]
    
    As the driver supports more devices over time the single MODULE_ALIAS
    is complete and raises several warnings:
    SPI driver ads7846 has no spi_device_id for ti,tsc2046
    SPI driver ads7846 has no spi_device_id for ti,ads7843
    SPI driver ads7846 has no spi_device_id for ti,ads7845
    SPI driver ads7846 has no spi_device_id for ti,ads7873
    
    Fix this by adding a spi_device_id table and removing the manual
    MODULE_ALIAS.
    
    Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
    Link: https://lore.kernel.org/r/20240619122703.2081476-1-alexander.stein@ew.tq-group.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Input: elantech - fix touchpad state on resume for Lenovo N24 [+ + +]
Author: Jonathan Denose <jdenose@google.com>
Date:   Fri May 3 16:12:07 2024 +0000

    Input: elantech - fix touchpad state on resume for Lenovo N24
    
    [ Upstream commit a69ce592cbe0417664bc5a075205aa75c2ec1273 ]
    
    The Lenovo N24 on resume becomes stuck in a state where it
    sends incorrect packets, causing elantech_packet_check_v4 to fail.
    The only way for the device to resume sending the correct packets is for
    it to be disabled and then re-enabled.
    
    This change adds a dmi check to trigger this behavior on resume.
    
    Signed-off-by: Jonathan Denose <jdenose@google.com>
    Link: https://lore.kernel.org/r/20240503155020.v2.1.Ifa0e25ebf968d8f307f58d678036944141ab17e6@changeid
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Input: i8042 - add Ayaneo Kun to i8042 quirk table [+ + +]
Author: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Date:   Fri May 31 15:43:07 2024 -0700

    Input: i8042 - add Ayaneo Kun to i8042 quirk table
    
    [ Upstream commit 955af6355ddfe35140f9706a635838212a32513b ]
    
    See the added comment for details. Also fix a typo in the
    quirk's define.
    
    Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
    Link: https://lore.kernel.org/r/20240531190100.3874731-1-tjakobi@math.uni-bielefeld.de
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Input: silead - Always support 10 fingers [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sat May 25 21:38:53 2024 +0200

    Input: silead - Always support 10 fingers
    
    [ Upstream commit 38a38f5a36da9820680d413972cb733349400532 ]
    
    When support for Silead touchscreens was orginal added some touchscreens
    with older firmware versions only supported 5 fingers and this was made
    the default requiring the setting of a "silead,max-fingers=10" uint32
    device-property for all touchscreen models which do support 10 fingers.
    
    There are very few models with the old 5 finger fw, so in practice the
    setting of the "silead,max-fingers=10" is boilerplate which needs to
    be copy and pasted to every touchscreen config.
    
    Reporting that 10 fingers are supported on devices which only support
    5 fingers doesn't cause any problems for userspace in practice, since
    at max 4 finger gestures are supported anyways. Drop the max_fingers
    configuration and simply always assume 10 fingers.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Link: https://lore.kernel.org/r/20240525193854.39130-2-hdegoede@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Input: xpad - add support for ASUS ROG RAIKIRI PRO [+ + +]
Author: Luke D. Jones <luke@ljones.dev>
Date:   Fri Jun 7 16:37:48 2024 -0700

    Input: xpad - add support for ASUS ROG RAIKIRI PRO
    
    [ Upstream commit cee77149ebe9cd971ba238d87aa10e09bd98f1c9 ]
    
    Add the VID/PID for ASUS ROG RAIKIRI PRO to the list of known devices.
    
    Signed-off-by: Luke D. Jones <luke@ljones.dev>
    Link: https://lore.kernel.org/r/20240607223722.1170776-1-luke@ljones.dev
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
io_uring: fix possible deadlock in io_register_iowq_max_workers() [+ + +]
Author: Hagar Hemdan <hagarhem@amazon.com>
Date:   Tue Jun 4 13:05:27 2024 +0000

    io_uring: fix possible deadlock in io_register_iowq_max_workers()
    
    [ Upstream commit 73254a297c2dd094abec7c9efee32455ae875bdf ]
    
    The io_register_iowq_max_workers() function calls io_put_sq_data(),
    which acquires the sqd->lock without releasing the uring_lock.
    Similar to the commit 009ad9f0c6ee ("io_uring: drop ctx->uring_lock
    before acquiring sqd->lock"), this can lead to a potential deadlock
    situation.
    
    To resolve this issue, the uring_lock is released before calling
    io_put_sq_data(), and then it is re-acquired after the function call.
    
    This change ensures that the locks are acquired in the correct
    order, preventing the possibility of a deadlock.
    
    Suggested-by: Maximilian Heyne <mheyne@amazon.de>
    Signed-off-by: Hagar Hemdan <hagarhem@amazon.com>
    Link: https://lore.kernel.org/r/20240604130527.3597-1-hagarhem@amazon.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iomap: Fix iomap_adjust_read_range for plen calculation [+ + +]
Author: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Date:   Tue May 7 14:25:42 2024 +0530

    iomap: Fix iomap_adjust_read_range for plen calculation
    
    [ Upstream commit f5ceb1bbc98c69536d4673a97315e8427e67de1b ]
    
    If the extent spans the block that contains i_size, we need to handle
    both halves separately so that we properly zero data in the page cache
    for blocks that are entirely outside of i_size. But this is needed only
    when i_size is within the current folio under processing.
    "orig_pos + length > isize" can be true for all folios if the mapped
    extent length is greater than the folio size. That is making plen to
    break for every folio instead of only the last folio.
    
    So use orig_plen for checking if "orig_pos + orig_plen > isize".
    
    Signed-off-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
    Link: https://lore.kernel.org/r/a32e5f9a4fcfdb99077300c4020ed7ae61d6e0f9.1715067055.git.ritesh.list@gmail.com
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Jan Kara <jack@suse.cz>
    cc: Ojaswin Mujoo <ojaswin@linux.ibm.com>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
kconfig: gconf: give a proper initial state to the Save button [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Sun Jun 2 03:20:40 2024 +0900

    kconfig: gconf: give a proper initial state to the Save button
    
    [ Upstream commit 46edf4372e336ef3a61c3126e49518099d2e2e6d ]
    
    Currently, the initial state of the "Save" button is always active.
    
    If none of the CONFIG options are changed while loading the .config
    file, the "Save" button should be greyed out.
    
    This can be fixed by calling conf_read() after widget initialization.
    
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

kconfig: remove wrong expr_trans_bool() [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Tue Jun 4 01:19:04 2024 +0900

    kconfig: remove wrong expr_trans_bool()
    
    [ Upstream commit 77a92660d8fe8d29503fae768d9f5eb529c88b36 ]
    
    expr_trans_bool() performs an incorrect transformation.
    
    [Test Code]
    
        config MODULES
                def_bool y
                modules
    
        config A
                def_bool y
                select C if B != n
    
        config B
                def_tristate m
    
        config C
                tristate
    
    [Result]
    
        CONFIG_MODULES=y
        CONFIG_A=y
        CONFIG_B=m
        CONFIG_C=m
    
    This output is incorrect because CONFIG_C=y is expected.
    
    Documentation/kbuild/kconfig-language.rst clearly explains the function
    of the '!=' operator:
    
        If the values of both symbols are equal, it returns 'n',
        otherwise 'y'.
    
    Therefore, the statement:
    
        select C if B != n
    
    should be equivalent to:
    
        select C if y
    
    Or, more simply:
    
        select C
    
    Hence, the symbol C should be selected by the value of A, which is 'y'.
    
    However, expr_trans_bool() wrongly transforms it to:
    
        select C if B
    
    Therefore, the symbol C is selected by (A && B), which is 'm'.
    
    The comment block of expr_trans_bool() correctly explains its intention:
    
      * bool FOO!=n => FOO
        ^^^^
    
    If FOO is bool, FOO!=n can be simplified into FOO. This is correct.
    
    However, the actual code performs this transformation when FOO is
    tristate:
    
        if (e->left.sym->type == S_TRISTATE) {
                                 ^^^^^^^^^^
    
    While it can be fixed to S_BOOLEAN, there is no point in doing so
    because expr_tranform() already transforms FOO!=n to FOO when FOO is
    bool. (see the "case E_UNEQUAL" part)
    
    expr_trans_bool() is wrong and unnecessary.
    
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Acked-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ksmbd: return FILE_DEVICE_DISK instead of super magic [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Mon Jun 24 08:39:23 2024 +0900

    ksmbd: return FILE_DEVICE_DISK instead of super magic
    
    [ Upstream commit 25a6e135569b3901452e4863c94560df7c11c492 ]
    
    MS-SMB2 specification describes setting ->DeviceType to FILE_DEVICE_DISK
    or FILE_DEVICE_CD_ROM. Set FILE_DEVICE_DISK instead of super magic in
    FS_DEVICE_INFORMATION. And Set FILE_READ_ONLY_DEVICE for read-only share.
    
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
KVM: PPC: Book3S HV: Prevent UAF in kvm_spapr_tce_attach_iommu_group() [+ + +]
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Fri Jun 14 22:29:10 2024 +1000

    KVM: PPC: Book3S HV: Prevent UAF in kvm_spapr_tce_attach_iommu_group()
    
    [ Upstream commit a986fa57fd81a1430e00b3c6cf8a325d6f894a63 ]
    
    Al reported a possible use-after-free (UAF) in kvm_spapr_tce_attach_iommu_group().
    
    It looks up `stt` from tablefd, but then continues to use it after doing
    fdput() on the returned fd. After the fdput() the tablefd is free to be
    closed by another thread. The close calls kvm_spapr_tce_release() and
    then release_spapr_tce_table() (via call_rcu()) which frees `stt`.
    
    Although there are calls to rcu_read_lock() in
    kvm_spapr_tce_attach_iommu_group() they are not sufficient to prevent
    the UAF, because `stt` is used outside the locked regions.
    
    With an artifcial delay after the fdput() and a userspace program which
    triggers the race, KASAN detects the UAF:
    
      BUG: KASAN: slab-use-after-free in kvm_spapr_tce_attach_iommu_group+0x298/0x720 [kvm]
      Read of size 4 at addr c000200027552c30 by task kvm-vfio/2505
      CPU: 54 PID: 2505 Comm: kvm-vfio Not tainted 6.10.0-rc3-next-20240612-dirty #1
      Hardware name: 8335-GTH POWER9 0x4e1202 opal:skiboot-v6.5.3-35-g1851b2a06 PowerNV
      Call Trace:
        dump_stack_lvl+0xb4/0x108 (unreliable)
        print_report+0x2b4/0x6ec
        kasan_report+0x118/0x2b0
        __asan_load4+0xb8/0xd0
        kvm_spapr_tce_attach_iommu_group+0x298/0x720 [kvm]
        kvm_vfio_set_attr+0x524/0xac0 [kvm]
        kvm_device_ioctl+0x144/0x240 [kvm]
        sys_ioctl+0x62c/0x1810
        system_call_exception+0x190/0x440
        system_call_vectored_common+0x15c/0x2ec
      ...
      Freed by task 0:
       ...
       kfree+0xec/0x3e0
       release_spapr_tce_table+0xd4/0x11c [kvm]
       rcu_core+0x568/0x16a0
       handle_softirqs+0x23c/0x920
       do_softirq_own_stack+0x6c/0x90
       do_softirq_own_stack+0x58/0x90
       __irq_exit_rcu+0x218/0x2d0
       irq_exit+0x30/0x80
       arch_local_irq_restore+0x128/0x230
       arch_local_irq_enable+0x1c/0x30
       cpuidle_enter_state+0x134/0x5cc
       cpuidle_enter+0x6c/0xb0
       call_cpuidle+0x7c/0x100
       do_idle+0x394/0x410
       cpu_startup_entry+0x60/0x70
       start_secondary+0x3fc/0x410
       start_secondary_prolog+0x10/0x14
    
    Fix it by delaying the fdput() until `stt` is no longer in use, which
    is effectively the entire function. To keep the patch minimal add a call
    to fdput() at each of the existing return paths. Future work can convert
    the function to goto or __cleanup style cleanup.
    
    With the fix in place the test case no longer triggers the UAF.
    
    Reported-by: Al Viro <viro@zeniv.linux.org.uk>
    Closes: https://lore.kernel.org/all/20240610024437.GA1464458@ZenIV/
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240614122910.3499489-1-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: Linux 6.9.11 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jul 25 09:53:42 2024 +0200

    Linux 6.9.11
    
    Link: https://lore.kernel.org/r/20240723180143.461739294@linuxfoundation.org
    Tested-by: Ronald Warsow <rwarsow@gmx.de>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Conor Dooley <conor.dooley@microchip.com>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Ron Economos <re@w6rz.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
LoongArch: Fix GMAC's phy-mode definitions in dts [+ + +]
Author: Huacai Chen <chenhuacai@kernel.org>
Date:   Mon Jun 3 15:45:53 2024 +0800

    LoongArch: Fix GMAC's phy-mode definitions in dts
    
    [ Upstream commit eb36e520f4f1b690fd776f15cbac452f82ff7bfa ]
    
    The GMAC of Loongson chips cannot insert the correct 1.5-2ns delay. So
    we need the PHY to insert internal delays for both transmit and receive
    data lines from/to the PHY device. Fix this by changing the "phy-mode"
    from "rgmii" to "rgmii-id" in dts.
    
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
loop: Disable fallocate() zero and discard if not supported [+ + +]
Author: Cyril Hrubis <chrubis@suse.cz>
Date:   Thu Jun 13 18:38:17 2024 +0200

    loop: Disable fallocate() zero and discard if not supported
    
    [ Upstream commit 5f75e081ab5cbfbe7aca2112a802e69576ee9778 ]
    
    If fallcate is implemented but zero and discard operations are not
    supported by the filesystem the backing file is on we continue to fill
    dmesg with errors from the blk_mq_end_request() since each time we call
    fallocate() on the loop device the EOPNOTSUPP error from lo_fallocate()
    ends up propagated into the block layer. In the end syscall succeeds
    since the blkdev_issue_zeroout() falls back to writing zeroes which
    makes the errors even more misleading and confusing.
    
    How to reproduce:
    
    1. make sure /tmp is mounted as tmpfs
    2. dd if=/dev/zero of=/tmp/disk.img bs=1M count=100
    3. losetup /dev/loop0 /tmp/disk.img
    4. mkfs.ext2 /dev/loop0
    5. dmesg |tail
    
    [710690.898214] operation not supported error, dev loop0, sector 204672 op 0x9:(WRITE_ZEROES) flags 0x8000800 phys_seg 0 prio class 0
    [710690.898279] operation not supported error, dev loop0, sector 522 op 0x9:(WRITE_ZEROES) flags 0x8000800 phys_seg 0 prio class 0
    [710690.898603] operation not supported error, dev loop0, sector 16906 op 0x9:(WRITE_ZEROES) flags 0x8000800 phys_seg 0 prio class 0
    [710690.898917] operation not supported error, dev loop0, sector 32774 op 0x9:(WRITE_ZEROES) flags 0x8000800 phys_seg 0 prio class 0
    [710690.899218] operation not supported error, dev loop0, sector 49674 op 0x9:(WRITE_ZEROES) flags 0x8000800 phys_seg 0 prio class 0
    [710690.899484] operation not supported error, dev loop0, sector 65542 op 0x9:(WRITE_ZEROES) flags 0x8000800 phys_seg 0 prio class 0
    [710690.899743] operation not supported error, dev loop0, sector 82442 op 0x9:(WRITE_ZEROES) flags 0x8000800 phys_seg 0 prio class 0
    [710690.900015] operation not supported error, dev loop0, sector 98310 op 0x9:(WRITE_ZEROES) flags 0x8000800 phys_seg 0 prio class 0
    [710690.900276] operation not supported error, dev loop0, sector 115210 op 0x9:(WRITE_ZEROES) flags 0x8000800 phys_seg 0 prio class 0
    [710690.900546] operation not supported error, dev loop0, sector 131078 op 0x9:(WRITE_ZEROES) flags 0x8000800 phys_seg 0 prio class 0
    
    This patch changes the lo_fallocate() to clear the flags for zero and
    discard operations if we get EOPNOTSUPP from the backing file fallocate
    callback, that way we at least stop spewing errors after the first
    unsuccessful try.
    
    CC: Jan Kara <jack@suse.cz>
    Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20240613163817.22640-1-chrubis@suse.cz
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mei: demote client disconnect warning on suspend to debug [+ + +]
Author: Alexander Usyskin <alexander.usyskin@intel.com>
Date:   Thu May 30 12:14:15 2024 +0300

    mei: demote client disconnect warning on suspend to debug
    
    [ Upstream commit 1db5322b7e6b58e1b304ce69a50e9dca798ca95b ]
    
    Change level for the "not connected" client message in the write
    callback from error to debug.
    
    The MEI driver currently disconnects all clients upon system suspend.
    This behavior is by design and user-space applications with
    open connections before the suspend are expected to handle errors upon
    resume, by reopening their handles, reconnecting,
    and retrying their operations.
    
    However, the current driver implementation logs an error message every
    time a write operation is attempted on a disconnected client.
    Since this is a normal and expected flow after system resume
    logging this as an error can be misleading.
    
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Link: https://lore.kernel.org/r/20240530091415.725247-1-tomas.winkler@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mips: fix compat_sys_lseek syscall [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Jun 20 18:23:04 2024 +0200

    mips: fix compat_sys_lseek syscall
    
    [ Upstream commit 0d5679a0aae2d8cda72169452c32e5cb88a7ab33 ]
    
    This is almost compatible, but passing a negative offset should result
    in a EINVAL error, but on mips o32 compat mode would seek to a large
    32-bit byte offset.
    
    Use compat_sys_lseek() to correctly sign-extend the argument.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mm: page_ref: remove folio_try_get_rcu() [+ + +]
Author: Yang Shi <yang@os.amperecomputing.com>
Date:   Tue Jun 25 13:53:50 2024 -0700

    mm: page_ref: remove folio_try_get_rcu()
    
    commit fa2690af573dfefb47ba6eef888797a64b6b5f3c upstream.
    
    The below bug was reported on a non-SMP kernel:
    
    [  275.267158][ T4335] ------------[ cut here ]------------
    [  275.267949][ T4335] kernel BUG at include/linux/page_ref.h:275!
    [  275.268526][ T4335] invalid opcode: 0000 [#1] KASAN PTI
    [  275.269001][ T4335] CPU: 0 PID: 4335 Comm: trinity-c3 Not tainted 6.7.0-rc4-00061-gefa7df3e3bb5 #1
    [  275.269787][ T4335] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
    [  275.270679][ T4335] RIP: 0010:try_get_folio (include/linux/page_ref.h:275 (discriminator 3) mm/gup.c:79 (discriminator 3))
    [  275.272813][ T4335] RSP: 0018:ffffc90005dcf650 EFLAGS: 00010202
    [  275.273346][ T4335] RAX: 0000000000000246 RBX: ffffea00066e0000 RCX: 0000000000000000
    [  275.274032][ T4335] RDX: fffff94000cdc007 RSI: 0000000000000004 RDI: ffffea00066e0034
    [  275.274719][ T4335] RBP: ffffea00066e0000 R08: 0000000000000000 R09: fffff94000cdc006
    [  275.275404][ T4335] R10: ffffea00066e0037 R11: 0000000000000000 R12: 0000000000000136
    [  275.276106][ T4335] R13: ffffea00066e0034 R14: dffffc0000000000 R15: ffffea00066e0008
    [  275.276790][ T4335] FS:  00007fa2f9b61740(0000) GS:ffffffff89d0d000(0000) knlGS:0000000000000000
    [  275.277570][ T4335] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  275.278143][ T4335] CR2: 00007fa2f6c00000 CR3: 0000000134b04000 CR4: 00000000000406f0
    [  275.278833][ T4335] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  275.279521][ T4335] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  275.280201][ T4335] Call Trace:
    [  275.280499][ T4335]  <TASK>
    [ 275.280751][ T4335] ? die (arch/x86/kernel/dumpstack.c:421 arch/x86/kernel/dumpstack.c:434 arch/x86/kernel/dumpstack.c:447)
    [ 275.281087][ T4335] ? do_trap (arch/x86/kernel/traps.c:112 arch/x86/kernel/traps.c:153)
    [ 275.281463][ T4335] ? try_get_folio (include/linux/page_ref.h:275 (discriminator 3) mm/gup.c:79 (discriminator 3))
    [ 275.281884][ T4335] ? try_get_folio (include/linux/page_ref.h:275 (discriminator 3) mm/gup.c:79 (discriminator 3))
    [ 275.282300][ T4335] ? do_error_trap (arch/x86/kernel/traps.c:174)
    [ 275.282711][ T4335] ? try_get_folio (include/linux/page_ref.h:275 (discriminator 3) mm/gup.c:79 (discriminator 3))
    [ 275.283129][ T4335] ? handle_invalid_op (arch/x86/kernel/traps.c:212)
    [ 275.283561][ T4335] ? try_get_folio (include/linux/page_ref.h:275 (discriminator 3) mm/gup.c:79 (discriminator 3))
    [ 275.283990][ T4335] ? exc_invalid_op (arch/x86/kernel/traps.c:264)
    [ 275.284415][ T4335] ? asm_exc_invalid_op (arch/x86/include/asm/idtentry.h:568)
    [ 275.284859][ T4335] ? try_get_folio (include/linux/page_ref.h:275 (discriminator 3) mm/gup.c:79 (discriminator 3))
    [ 275.285278][ T4335] try_grab_folio (mm/gup.c:148)
    [ 275.285684][ T4335] __get_user_pages (mm/gup.c:1297 (discriminator 1))
    [ 275.286111][ T4335] ? __pfx___get_user_pages (mm/gup.c:1188)
    [ 275.286579][ T4335] ? __pfx_validate_chain (kernel/locking/lockdep.c:3825)
    [ 275.287034][ T4335] ? mark_lock (kernel/locking/lockdep.c:4656 (discriminator 1))
    [ 275.287416][ T4335] __gup_longterm_locked (mm/gup.c:1509 mm/gup.c:2209)
    [ 275.288192][ T4335] ? __pfx___gup_longterm_locked (mm/gup.c:2204)
    [ 275.288697][ T4335] ? __pfx_lock_acquire (kernel/locking/lockdep.c:5722)
    [ 275.289135][ T4335] ? __pfx___might_resched (kernel/sched/core.c:10106)
    [ 275.289595][ T4335] pin_user_pages_remote (mm/gup.c:3350)
    [ 275.290041][ T4335] ? __pfx_pin_user_pages_remote (mm/gup.c:3350)
    [ 275.290545][ T4335] ? find_held_lock (kernel/locking/lockdep.c:5244 (discriminator 1))
    [ 275.290961][ T4335] ? mm_access (kernel/fork.c:1573)
    [ 275.291353][ T4335] process_vm_rw_single_vec+0x142/0x360
    [ 275.291900][ T4335] ? __pfx_process_vm_rw_single_vec+0x10/0x10
    [ 275.292471][ T4335] ? mm_access (kernel/fork.c:1573)
    [ 275.292859][ T4335] process_vm_rw_core+0x272/0x4e0
    [ 275.293384][ T4335] ? hlock_class (arch/x86/include/asm/bitops.h:227 arch/x86/include/asm/bitops.h:239 include/asm-generic/bitops/instrumented-non-atomic.h:142 kernel/locking/lockdep.c:228)
    [ 275.293780][ T4335] ? __pfx_process_vm_rw_core+0x10/0x10
    [ 275.294350][ T4335] process_vm_rw (mm/process_vm_access.c:284)
    [ 275.294748][ T4335] ? __pfx_process_vm_rw (mm/process_vm_access.c:259)
    [ 275.295197][ T4335] ? __task_pid_nr_ns (include/linux/rcupdate.h:306 (discriminator 1) include/linux/rcupdate.h:780 (discriminator 1) kernel/pid.c:504 (discriminator 1))
    [ 275.295634][ T4335] __x64_sys_process_vm_readv (mm/process_vm_access.c:291)
    [ 275.296139][ T4335] ? syscall_enter_from_user_mode (kernel/entry/common.c:94 kernel/entry/common.c:112)
    [ 275.296642][ T4335] do_syscall_64 (arch/x86/entry/common.c:51 (discriminator 1) arch/x86/entry/common.c:82 (discriminator 1))
    [ 275.297032][ T4335] ? __task_pid_nr_ns (include/linux/rcupdate.h:306 (discriminator 1) include/linux/rcupdate.h:780 (discriminator 1) kernel/pid.c:504 (discriminator 1))
    [ 275.297470][ T4335] ? lockdep_hardirqs_on_prepare (kernel/locking/lockdep.c:4300 kernel/locking/lockdep.c:4359)
    [ 275.297988][ T4335] ? do_syscall_64 (arch/x86/include/asm/cpufeature.h:171 arch/x86/entry/common.c:97)
    [ 275.298389][ T4335] ? lockdep_hardirqs_on_prepare (kernel/locking/lockdep.c:4300 kernel/locking/lockdep.c:4359)
    [ 275.298906][ T4335] ? do_syscall_64 (arch/x86/include/asm/cpufeature.h:171 arch/x86/entry/common.c:97)
    [ 275.299304][ T4335] ? do_syscall_64 (arch/x86/include/asm/cpufeature.h:171 arch/x86/entry/common.c:97)
    [ 275.299703][ T4335] ? do_syscall_64 (arch/x86/include/asm/cpufeature.h:171 arch/x86/entry/common.c:97)
    [ 275.300115][ T4335] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:129)
    
    This BUG is the VM_BUG_ON(!in_atomic() && !irqs_disabled()) assertion in
    folio_ref_try_add_rcu() for non-SMP kernel.
    
    The process_vm_readv() calls GUP to pin the THP. An optimization for
    pinning THP instroduced by commit 57edfcfd3419 ("mm/gup: accelerate thp
    gup even for "pages != NULL"") calls try_grab_folio() to pin the THP,
    but try_grab_folio() is supposed to be called in atomic context for
    non-SMP kernel, for example, irq disabled or preemption disabled, due to
    the optimization introduced by commit e286781d5f2e ("mm: speculative
    page references").
    
    The commit efa7df3e3bb5 ("mm: align larger anonymous mappings on THP
    boundaries") is not actually the root cause although it was bisected to.
    It just makes the problem exposed more likely.
    
    The follow up discussion suggested the optimization for non-SMP kernel
    may be out-dated and not worth it anymore [1].  So removing the
    optimization to silence the BUG.
    
    However calling try_grab_folio() in GUP slow path actually is
    unnecessary, so the following patch will clean this up.
    
    [1] https://lore.kernel.org/linux-mm/821cf1d6-92b9-4ac4-bacc-d8f2364ac14f@paulmck-laptop/
    
    Link: https://lkml.kernel.org/r/20240625205350.1777481-1-yang@os.amperecomputing.com
    Fixes: 57edfcfd3419 ("mm/gup: accelerate thp gup even for "pages != NULL"")
    Signed-off-by: Yang Shi <yang@os.amperecomputing.com>
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Tested-by: Oliver Sang <oliver.sang@intel.com>
    Acked-by: Peter Xu <peterx@redhat.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Paul E. McKenney <paulmck@kernel.org>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Vivek Kasireddy <vivek.kasireddy@intel.com>
    Cc: <stable@vger.kernel.org>    [6.6+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net: ipv6: rpl_iptunnel: block BH in rpl_output() and rpl_input() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri May 31 13:26:33 2024 +0000

    net: ipv6: rpl_iptunnel: block BH in rpl_output() and rpl_input()
    
    [ Upstream commit db0090c6eb12c31246438b7fe2a8f1b833e7a653 ]
    
    As explained in commit 1378817486d6 ("tipc: block BH
    before using dst_cache"), net/core/dst_cache.c
    helpers need to be called with BH disabled.
    
    Disabling preemption in rpl_output() is not good enough,
    because rpl_output() is called from process context,
    lwtunnel_output() only uses rcu_read_lock().
    
    We might be interrupted by a softirq, re-enter rpl_output()
    and corrupt dst_cache data structures.
    
    Fix the race by using local_bh_disable() instead of
    preempt_disable().
    
    Apply a similar change in rpl_input().
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Alexander Aring <aahringo@redhat.com>
    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Link: https://lore.kernel.org/r/20240531132636.2637995-3-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mac802154: Fix racy device stats updates by DEV_STATS_INC() and DEV_STATS_ADD() [+ + +]
Author: Yunshui Jiang <jiangyunshui@kylinos.cn>
Date:   Fri May 31 16:07:39 2024 +0800

    net: mac802154: Fix racy device stats updates by DEV_STATS_INC() and DEV_STATS_ADD()
    
    [ Upstream commit b8ec0dc3845f6c9089573cb5c2c4b05f7fc10728 ]
    
    mac802154 devices update their dev->stats fields locklessly. Therefore
    these counters should be updated atomically. Adopt SMP safe DEV_STATS_INC()
    and DEV_STATS_ADD() to achieve this.
    
    Signed-off-by: Yunshui Jiang <jiangyunshui@kylinos.cn>
    Message-ID: <20240531080739.2608969-1-jiangyunshui@kylinos.cn>
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mvpp2: fill-in dev_port attribute [+ + +]
Author: Aryan Srivastava <aryan.srivastava@alliedtelesis.co.nz>
Date:   Thu Jun 20 16:12:02 2024 +1200

    net: mvpp2: fill-in dev_port attribute
    
    [ Upstream commit 00418d5530ca1f42d8721fe0a3e73d1ae477c223 ]
    
    Fill this in so user-space can identify multiple ports on the same CP
    unit.
    
    Signed-off-by: Aryan Srivastava <aryan.srivastava@alliedtelesis.co.nz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: usb: qmi_wwan: add Telit FN912 compositions [+ + +]
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Tue Jun 25 12:22:36 2024 +0200

    net: usb: qmi_wwan: add Telit FN912 compositions
    
    [ Upstream commit 77453e2b015b5ced5b3f45364dd5a72dfc3bdecb ]
    
    Add the following Telit FN912 compositions:
    
    0x3000: rmnet + tty (AT/NMEA) + tty (AT) + tty (diag)
    T:  Bus=03 Lev=01 Prnt=03 Port=07 Cnt=01 Dev#=  8 Spd=480  MxCh= 0
    D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=3000 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN912
    S:  SerialNumber=92c4c4d8
    C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x3001: rmnet + tty (AT) + tty (diag) + DPL (data packet logging) + adb
    T:  Bus=03 Lev=01 Prnt=03 Port=07 Cnt=01 Dev#=  7 Spd=480  MxCh= 0
    D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=3001 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN912
    S:  SerialNumber=92c4c4d8
    C:  #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 3 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=80 Driver=(none)
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Acked-by: Bjørn Mork <bjorn@mork.no>
    Link: https://patch.msgid.link/20240625102236.69539-1-dnlplm@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfs, fscache: export fscache_put_volume() and add fscache_try_get_volume() [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Fri Jul 19 21:28:10 2024 +0800

    netfs, fscache: export fscache_put_volume() and add fscache_try_get_volume()
    
    [ Upstream commit 85b08b31a22b481ec6528130daf94eee4452e23f ]
    
    Export fscache_put_volume() and add fscache_try_get_volume()
    helper function to allow cachefiles to get/put fscache_volume
    via linux/fscache-cache.h.
    
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Link: https://lore.kernel.org/r/20240628062930.2467993-2-libaokun@huaweicloud.com
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Stable-dep-of: 522018a0de6b ("cachefiles: fix slab-use-after-free in fscache_withdraw_volume()")
    Stable-dep-of: 5d8f80578907 ("cachefiles: fix slab-use-after-free in cachefiles_withdraw_cookie()")
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nfs: Avoid flushing many pages with NFS_FILE_SYNC [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Fri May 24 18:14:19 2024 +0200

    nfs: Avoid flushing many pages with NFS_FILE_SYNC
    
    [ Upstream commit a527c3ba41c4c61e2069bfce4091e5515f06a8dd ]
    
    When we are doing WB_SYNC_ALL writeback, nfs submits write requests with
    NFS_FILE_SYNC flag to the server (which then generally treats it as an
    O_SYNC write). This helps to reduce latency for single requests but when
    submitting more requests, additional fsyncs on the server side hurt
    latency. NFS generally avoids this additional overhead by not setting
    NFS_FILE_SYNC if desc->pg_moreio is set.
    
    However this logic doesn't always work. When we do random 4k writes to a huge
    file and then call fsync(2), each page writeback is going to be sent with
    NFS_FILE_SYNC because after preparing one page for writeback, we start writing
    back next, nfs_do_writepage() will call nfs_pageio_cond_complete() which finds
    the page is not contiguous with previously prepared IO and submits is *without*
    setting desc->pg_moreio.  Hence NFS_FILE_SYNC is used resulting in poor
    performance.
    
    Fix the problem by setting desc->pg_moreio in nfs_pageio_cond_complete() before
    submitting outstanding IO. This improves throughput of
    fsync-after-random-writes on my test SSD from ~70MB/s to ~250MB/s.
    
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nfs: don't invalidate dentries on transient errors [+ + +]
Author: Scott Mayhew <smayhew@redhat.com>
Date:   Thu May 23 15:01:22 2024 -0400

    nfs: don't invalidate dentries on transient errors
    
    [ Upstream commit 0c8c7c559740d2d8b66048162af6c4dba8f0c88c ]
    
    This is a slight variation on a patch previously proposed by Neil Brown
    that never got merged.
    
    Prior to commit 5ceb9d7fdaaf ("NFS: Refactor nfs_lookup_revalidate()"),
    any error from nfs_lookup_verify_inode() other than -ESTALE would result
    in nfs_lookup_revalidate() returning that error (-ESTALE is mapped to
    zero).
    
    Since that commit, all errors result in nfs_lookup_revalidate()
    returning zero, resulting in dentries being invalidated where they
    previously were not (particularly in the case of -ERESTARTSYS).
    
    Fix it by passing the actual error code to nfs_lookup_revalidate_done(),
    and leaving the decision on whether to  map the error code to zero or
    one to nfs_lookup_revalidate_done().
    
    A simple reproducer is to run the following python code in a
    subdirectory of an NFS mount (not in the root of the NFS mount):
    
    ---8<---
    import os
    import multiprocessing
    import time
    
    if __name__=="__main__":
        multiprocessing.set_start_method("spawn")
    
        count = 0
        while True:
            try:
                os.getcwd()
                pool = multiprocessing.Pool(10)
                pool.close()
                pool.terminate()
                count += 1
            except Exception as e:
                print(f"Failed after {count} iterations")
                print(e)
                break
    ---8<---
    
    Prior to commit 5ceb9d7fdaaf, the above code would run indefinitely.
    After commit 5ceb9d7fdaaf, it fails almost immediately with -ENOENT.
    
    Signed-off-by: Scott Mayhew <smayhew@redhat.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nfs: propagate readlink errors in nfs_symlink_filler [+ + +]
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Tue May 21 15:58:40 2024 +0300

    nfs: propagate readlink errors in nfs_symlink_filler
    
    [ Upstream commit 134d0b3f2440cdddd12fc3444c9c0f62331ce6fc ]
    
    There is an inherent race where a symlink file may have been overriden
    (by a different client) between lookup and readlink, resulting in a
    spurious EIO error returned to userspace. Fix this by propagating back
    ESTALE errors such that the vfs will retry the lookup/get_link (similar
    to nfs4_file_open) at least once.
    
    Cc: Dan Aloni <dan.aloni@vastdata.com>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
NFSv4: Fix memory leak in nfs4_set_security_label [+ + +]
Author: Dmitry Mastykin <mastichi@gmail.com>
Date:   Wed May 22 10:45:24 2024 +0300

    NFSv4: Fix memory leak in nfs4_set_security_label
    
    [ Upstream commit aad11473f8f4be3df86461081ce35ec5b145ba68 ]
    
    We leak nfs_fattr and nfs4_label every time we set a security xattr.
    
    Signed-off-by: Dmitry Mastykin <mastichi@gmail.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
null_blk: fix validation of block size [+ + +]
Author: Andreas Hindborg <a.hindborg@samsung.com>
Date:   Mon Jun 3 21:26:45 2024 +0200

    null_blk: fix validation of block size
    
    [ Upstream commit c462ecd659b5fce731f1d592285832fd6ad54053 ]
    
    Block size should be between 512 and PAGE_SIZE and be a power of 2. The current
    check does not validate this, so update the check.
    
    Without this patch, null_blk would Oops due to a null pointer deref when
    loaded with bs=1536 [1].
    
    Link: https://lore.kernel.org/all/87wmn8mocd.fsf@metaspace.dk/
    
    Signed-off-by: Andreas Hindborg <a.hindborg@samsung.com>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Link: https://lore.kernel.org/r/20240603192645.977968-1-nmi@metaspace.dk
    [axboe: remove unnecessary braces and != 0 check]
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvme-fabrics: use reserved tag for reg read/write command [+ + +]
Author: Chunguang Xu <chunguang.xu@shopee.com>
Date:   Fri May 31 17:24:21 2024 +0800

    nvme-fabrics: use reserved tag for reg read/write command
    
    [ Upstream commit 7dc3bfcb4c9cc58970fff6aaa48172cb224d85aa ]
    
    In some scenarios, if too many commands are issued by nvme command in
    the same time by user tasks, this may exhaust all tags of admin_q. If
    a reset (nvme reset or IO timeout) occurs before these commands finish,
    reconnect routine may fail to update nvme regs due to insufficient tags,
    which will cause kernel hang forever. In order to workaround this issue,
    maybe we can let reg_read32()/reg_read64()/reg_write32() use reserved
    tags. This maybe safe for nvmf:
    
    1. For the disable ctrl path,  we will not issue connect command
    2. For the enable ctrl / fw activate path, since connect and reg_xx()
       are called serially.
    
    So the reserved tags may still be enough while reg_xx() use reserved tags.
    
    Signed-off-by: Chunguang Xu <chunguang.xu@shopee.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvme: avoid double free special payload [+ + +]
Author: Chunguang Xu <chunguang.xu@shopee.com>
Date:   Tue Jun 11 18:02:08 2024 +0800

    nvme: avoid double free special payload
    
    [ Upstream commit e5d574ab37f5f2e7937405613d9b1a724811e5ad ]
    
    If a discard request needs to be retried, and that retry may fail before
    a new special payload is added, a double free will result. Clear the
    RQF_SPECIAL_LOAD when the request is cleaned.
    
    Signed-off-by: Chunguang Xu <chunguang.xu@shopee.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Max Gurtovoy <mgurtovoy@nvidia.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nvme: fix NVME_NS_DEAC may incorrectly identifying the disk as EXT_LBA. [+ + +]
Author: Boyang Yu <yuboyang@dapustor.com>
Date:   Mon Jun 17 21:11:44 2024 +0800

    nvme: fix NVME_NS_DEAC may incorrectly identifying the disk as EXT_LBA.
    
    [ Upstream commit 9570a48847e3acfa1a741cef431c923325ddc637 ]
    
    The value of NVME_NS_DEAC is 3,
    which means NVME_NS_METADATA_SUPPORTED | NVME_NS_EXT_LBAS. Provide a
    unique value for this feature flag.
    
    Fixes 1b96f862eccc ("nvme: implement the DEAC bit for the Write Zeroes command")
    Signed-off-by: Boyang Yu <yuboyang@dapustor.com>
    Reviewed-by: Kanchan Joshi <joshi.k@samsung.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvmet: always initialize cqe.result [+ + +]
Author: Daniel Wagner <dwagner@suse.de>
Date:   Wed Jun 12 16:11:59 2024 +0200

    nvmet: always initialize cqe.result
    
    [ Upstream commit cd0c1b8e045a8d2785342b385cb2684d9b48e426 ]
    
    The spec doesn't mandate that the first two double words (aka results)
    for the command queue entry need to be set to 0 when they are not
    used (not specified). Though, the target implemention returns 0 for TCP
    and FC but not for RDMA.
    
    Let's make RDMA behave the same and thus explicitly initializing the
    result field. This prevents leaking any data from the stack.
    
    Signed-off-by: Daniel Wagner <dwagner@suse.de>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
octeontx2-pf: Fix coverity and klockwork issues in octeon PF driver [+ + +]
Author: Ratheesh Kannoth <rkannoth@marvell.com>
Date:   Sat Jun 22 12:14:37 2024 +0530

    octeontx2-pf: Fix coverity and klockwork issues in octeon PF driver
    
    [ Upstream commit 02ea312055da84e08e3e5bce2539c1ff11c8b5f2 ]
    
    Fix unintended sign extension and klockwork issues. These are not real
    issue but for sanity checks.
    
    Signed-off-by: Ratheesh Kannoth <rkannoth@marvell.com>
    Signed-off-by: Suman Ghosh <sumang@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
of/irq: Disable "interrupt-map" parsing for PASEMI Nemo [+ + +]
Author: Marc Zyngier <maz@kernel.org>
Date:   Tue Jul 2 22:42:46 2024 +0100

    of/irq: Disable "interrupt-map" parsing for PASEMI Nemo
    
    commit 2cf6b7d15a28640117bf9f75dc050892cf78a6e8 upstream.
    
    Once again, we've broken PASEMI Nemo boards with its incomplete
    "interrupt-map" translations. Commit 935df1bd40d4 ("of/irq: Factor out
    parsing of interrupt-map parent phandle+args from of_irq_parse_raw()")
    changed the behavior resulting in the existing work-around not taking
    effect. Rework the work-around to just skip parsing "interrupt-map" up
    front by using the of_irq_imap_abusers list.
    
    Fixes: 935df1bd40d4 ("of/irq: Factor out parsing of interrupt-map parent phandle+args from of_irq_parse_raw()")
    Reported-by: Christian Zigotzky <chzigotzky@xenosoft.de>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/86ed8ba2sp.wl-maz@kernel.org
    Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

of/irq: Factor out parsing of interrupt-map parent phandle+args from of_irq_parse_raw() [+ + +]
Author: Rob Herring (Arm) <robh@kernel.org>
Date:   Wed May 29 14:59:20 2024 -0500

    of/irq: Factor out parsing of interrupt-map parent phandle+args from of_irq_parse_raw()
    
    [ Upstream commit 935df1bd40d43c4ee91838c42a20e9af751885cc ]
    
    Factor out the parsing of interrupt-map interrupt parent phandle and its
    arg cells to a separate function, of_irq_parse_imap_parent(), so that it
    can be used in other parsing scenarios (e.g. fw_devlink).
    
    There was a refcount leak on non-matching entries when iterating thru
    "interrupt-map" which is fixed.
    
    Tested-by: Marc Zyngier <maz@kernel.org>
    Tested-by: Anup Patel <apatel@ventanamicro.com>
    Link: https://lore.kernel.org/r/20240529-dt-interrupt-map-fix-v2-1-ef86dc5bcd2a@kernel.org
    Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
parport: amiga: Mark driver struct with __refdata to prevent section mismatch [+ + +]
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Mon May 13 09:52:06 2024 +0200

    parport: amiga: Mark driver struct with __refdata to prevent section mismatch
    
    [ Upstream commit 73fedc31fed38cb6039fd8a7efea1774143b68b0 ]
    
    As described in the added code comment, a reference to .exit.text is ok
    for drivers registered via module_platform_driver_probe(). Make this
    explicit to prevent the following section mismatch warning
    
            WARNING: modpost: drivers/parport/parport_amiga: section mismatch in reference: amiga_parallel_driver+0x8 (section: .data) -> amiga_parallel_remove (section: .exit.text)
    
    that triggers on an allmodconfig W=1 build.
    
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Link: https://lore.kernel.org/r/20240513075206.2337310-2-u.kleine-koenig@pengutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/mellanox: nvsw-sn2201: Add check for platform_device_add_resources [+ + +]
Author: Chen Ni <nichen@iscas.ac.cn>
Date:   Wed Jun 5 11:27:45 2024 +0800

    platform/mellanox: nvsw-sn2201: Add check for platform_device_add_resources
    
    [ Upstream commit d56fbfbaf592a115b2e11c1044829afba34069d2 ]
    
    Add check for the return value of platform_device_add_resources() and
    return the error if it fails in order to catch the error.
    
    Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
    Link: https://lore.kernel.org/r/20240605032745.2916183-1-nichen@iscas.ac.cn
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/x86/amd/hsmp: Check HSMP support on AMD family of processors [+ + +]
Author: Suma Hegde <suma.hegde@amd.com>
Date:   Mon Jun 3 08:15:12 2024 +0000

    platform/x86/amd/hsmp: Check HSMP support on AMD family of processors
    
    [ Upstream commit 77f1972bdcf7513293e8bbe376b9fe837310ee9c ]
    
    HSMP interface is supported only on few x86 processors from AMD.
    Accessing HSMP registers on rest of the platforms might cause
    unexpected behaviour. So add a check.
    
    Also unavailability of this interface on rest of the processors
    is not an error. Hence, use pr_info() instead of the pr_err() to
    log the message.
    
    Signed-off-by: Suma Hegde <suma.hegde@amd.com>
    Reviewed-by: Naveen Krishna Chatradhi <naveenkrishna.chatradhi@amd.com>
    Link: https://lore.kernel.org/r/20240603081512.142909-1-suma.hegde@amd.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/x86: lg-laptop: Change ACPI device id [+ + +]
Author: Armin Wolf <W_Armin@gmx.de>
Date:   Fri Jun 7 01:35:39 2024 +0200

    platform/x86: lg-laptop: Change ACPI device id
    
    [ Upstream commit 58a54f27a0dac81f7fd3514be01012635219a53c ]
    
    The LGEX0815 ACPI device id is used for handling hotkey events, but
    this functionality is already handled by the wireless-hotkey driver.
    
    The LGEX0820 ACPI device id however is used to manage various
    platform features using the WMAB/WMBB ACPI methods. Use this ACPI
    device id to avoid blocking the wireless-hotkey driver from probing.
    
    Tested-by: Agathe Boutmy <agathe@boutmy.com>
    Signed-off-by: Armin Wolf <W_Armin@gmx.de>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20240606233540.9774-4-W_Armin@gmx.de
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

platform/x86: lg-laptop: Remove LGEX0815 hotkey handling [+ + +]
Author: Armin Wolf <W_Armin@gmx.de>
Date:   Fri Jun 7 01:35:38 2024 +0200

    platform/x86: lg-laptop: Remove LGEX0815 hotkey handling
    
    [ Upstream commit 413c204595ca98a4f33414a948c18d7314087342 ]
    
    The rfkill hotkey handling is already provided by the wireless-hotkey
    driver. Remove the now unnecessary rfkill hotkey handling to avoid
    duplicating functionality.
    
    The ACPI notify handler still prints debugging information when
    receiving ACPI notifications to aid in reverse-engineering.
    
    Tested-by: Agathe Boutmy <agathe@boutmy.com>
    Signed-off-by: Armin Wolf <W_Armin@gmx.de>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20240606233540.9774-3-W_Armin@gmx.de
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

platform/x86: lg-laptop: Use ACPI device handle when evaluating WMAB/WMBB [+ + +]
Author: Armin Wolf <W_Armin@gmx.de>
Date:   Fri Jun 7 01:35:40 2024 +0200

    platform/x86: lg-laptop: Use ACPI device handle when evaluating WMAB/WMBB
    
    [ Upstream commit b27ea279556121b54d3f45d0529706cf100cdb3a ]
    
    On the LG Gram 16Z90S, the WMAB and WMBB ACPI methods are not mapped
    under \XINI, but instead are mapped under \_SB.XINI.
    
    The reason for this is that the LGEX0820 ACPI device used by this
    driver is mapped at \_SB.XINI, so the ACPI methods where moved as well
    to appear below the LGEX0820 ACPI device.
    
    Fix this by using the ACPI handle from the ACPI device when evaluating
    both methods.
    
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218901
    Tested-by: Agathe Boutmy <agathe@boutmy.com>
    Signed-off-by: Armin Wolf <W_Armin@gmx.de>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20240606233540.9774-5-W_Armin@gmx.de
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

platform/x86: wireless-hotkey: Add support for LG Airplane Button [+ + +]
Author: Armin Wolf <W_Armin@gmx.de>
Date:   Fri Jun 7 01:35:37 2024 +0200

    platform/x86: wireless-hotkey: Add support for LG Airplane Button
    
    [ Upstream commit 151e78a0b89ee6dec93382dbdf5b1ef83f9c4716 ]
    
    The LGEX0815 ACPI device is used by the "LG Airplane Mode Button"
    Windows driver for handling rfkill requests. When the ACPI device
    receives an 0x80 ACPI notification, an rfkill event is to be
    send to userspace.
    
    Add support for the LGEX0815 ACPI device to the driver.
    
    Tested-by: Agathe Boutmy <agathe@boutmy.com>
    Signed-off-by: Armin Wolf <W_Armin@gmx.de>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20240606233540.9774-2-W_Armin@gmx.de
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PNP: Hide pnp_bus_type from the non-PNP code [+ + +]
Author: Andy Shevchenko <andy.shevchenko@gmail.com>
Date:   Tue May 28 13:25:03 2024 +0300

    PNP: Hide pnp_bus_type from the non-PNP code
    
    [ Upstream commit edcde848c01eb071a91d479a6b3101d9cf48e905 ]
    
    The pnp_bus_type is defined only when CONFIG_PNP=y, while being
    not guarded by ifdeffery in the header. Moreover, it's not used
    outside of the PNP code. Move it to the internal header to make
    sure no-one will try to (ab)use it.
    
    Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/eeh: avoid possible crash when edev->pdev changes [+ + +]
Author: Ganesh Goudar <ganeshgr@linux.ibm.com>
Date:   Mon Jun 17 19:32:40 2024 +0530

    powerpc/eeh: avoid possible crash when edev->pdev changes
    
    [ Upstream commit a1216e62d039bf63a539bbe718536ec789a853dd ]
    
    If a PCI device is removed during eeh_pe_report_edev(), edev->pdev
    will change and can cause a crash, hold the PCI rescan/remove lock
    while taking a copy of edev->pdev->bus.
    
    Signed-off-by: Ganesh Goudar <ganeshgr@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240617140240.580453-1-ganeshgr@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/pseries: Whitelist dtl slub object for copying to userspace [+ + +]
Author: Anjali K <anjalik@linux.ibm.com>
Date:   Fri Jun 14 23:08:44 2024 +0530

    powerpc/pseries: Whitelist dtl slub object for copying to userspace
    
    [ Upstream commit 1a14150e1656f7a332a943154fc486504db4d586 ]
    
    Reading the dispatch trace log from /sys/kernel/debug/powerpc/dtl/cpu-*
    results in a BUG() when the config CONFIG_HARDENED_USERCOPY is enabled as
    shown below.
    
        kernel BUG at mm/usercopy.c:102!
        Oops: Exception in kernel mode, sig: 5 [#1]
        LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=2048 NUMA pSeries
        Modules linked in: xfs libcrc32c dm_service_time sd_mod t10_pi sg ibmvfc
        scsi_transport_fc ibmveth pseries_wdt dm_multipath dm_mirror dm_region_hash dm_log dm_mod fuse
        CPU: 27 PID: 1815 Comm: python3 Not tainted 6.10.0-rc3 #85
        Hardware name: IBM,9040-MRX POWER10 (raw) 0x800200 0xf000006 of:IBM,FW1060.00 (NM1060_042) hv:phyp pSeries
        NIP:  c0000000005d23d4 LR: c0000000005d23d0 CTR: 00000000006ee6f8
        REGS: c000000120c078c0 TRAP: 0700   Not tainted  (6.10.0-rc3)
        MSR:  8000000000029033 <SF,EE,ME,IR,DR,RI,LE>  CR: 2828220f  XER: 0000000e
        CFAR: c0000000001fdc80 IRQMASK: 0
        [ ... GPRs omitted ... ]
        NIP [c0000000005d23d4] usercopy_abort+0x78/0xb0
        LR [c0000000005d23d0] usercopy_abort+0x74/0xb0
        Call Trace:
         usercopy_abort+0x74/0xb0 (unreliable)
         __check_heap_object+0xf8/0x120
         check_heap_object+0x218/0x240
         __check_object_size+0x84/0x1a4
         dtl_file_read+0x17c/0x2c4
         full_proxy_read+0x8c/0x110
         vfs_read+0xdc/0x3a0
         ksys_read+0x84/0x144
         system_call_exception+0x124/0x330
         system_call_vectored_common+0x15c/0x2ec
        --- interrupt: 3000 at 0x7fff81f3ab34
    
    Commit 6d07d1cd300f ("usercopy: Restrict non-usercopy caches to size 0")
    requires that only whitelisted areas in slab/slub objects can be copied to
    userspace when usercopy hardening is enabled using CONFIG_HARDENED_USERCOPY.
    Dtl contains hypervisor dispatch events which are expected to be read by
    privileged users. Hence mark this safe for user access.
    Specify useroffset=0 and usersize=DISPATCH_LOG_BYTES to whitelist the
    entire object.
    
    Co-developed-by: Vishal Chourasia <vishalc@linux.ibm.com>
    Signed-off-by: Vishal Chourasia <vishalc@linux.ibm.com>
    Signed-off-by: Anjali K <anjalik@linux.ibm.com>
    Reviewed-by: Srikar Dronamraju <srikar@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240614173844.746818-1-anjalik@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
riscv: stacktrace: fix usage of ftrace_graph_ret_addr() [+ + +]
Author: Puranjay Mohan <puranjay@kernel.org>
Date:   Tue Jun 18 14:58:20 2024 +0000

    riscv: stacktrace: fix usage of ftrace_graph_ret_addr()
    
    [ Upstream commit 393da6cbb2ff89aadc47683a85269f913aa1c139 ]
    
    ftrace_graph_ret_addr() takes an `idx` integer pointer that is used to
    optimize the stack unwinding. Pass it a valid pointer to utilize the
    optimizations that might be available in the future.
    
    The commit is making riscv's usage of ftrace_graph_ret_addr() match
    x86_64.
    
    Signed-off-by: Puranjay Mohan <puranjay@kernel.org>
    Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Link: https://lore.kernel.org/r/20240618145820.62112-1-puranjay@kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
s390/sclp: Fix sclp_init() cleanup on failure [+ + +]
Author: Heiko Carstens <hca@linux.ibm.com>
Date:   Fri Jun 14 18:09:01 2024 +0200

    s390/sclp: Fix sclp_init() cleanup on failure
    
    [ Upstream commit 6434b33faaa063df500af355ee6c3942e0f8d982 ]
    
    If sclp_init() fails it only partially cleans up: if there are multiple
    failing calls to sclp_init() sclp_state_change_event will be added several
    times to sclp_reg_list, which results in the following warning:
    
    ------------[ cut here ]------------
    list_add double add: new=000003ffe1598c10, prev=000003ffe1598bf0, next=000003ffe1598c10.
    WARNING: CPU: 0 PID: 1 at lib/list_debug.c:35 __list_add_valid_or_report+0xde/0xf8
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.10.0-rc3
    Krnl PSW : 0404c00180000000 000003ffe0d6076a (__list_add_valid_or_report+0xe2/0xf8)
               R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:3 CC:0 PM:0 RI:0 EA:3
    ...
    Call Trace:
     [<000003ffe0d6076a>] __list_add_valid_or_report+0xe2/0xf8
    ([<000003ffe0d60766>] __list_add_valid_or_report+0xde/0xf8)
     [<000003ffe0a8d37e>] sclp_init+0x40e/0x450
     [<000003ffe00009f2>] do_one_initcall+0x42/0x1e0
     [<000003ffe15b77a6>] do_initcalls+0x126/0x150
     [<000003ffe15b7a0a>] kernel_init_freeable+0x1ba/0x1f8
     [<000003ffe0d6650e>] kernel_init+0x2e/0x180
     [<000003ffe000301c>] __ret_from_fork+0x3c/0x60
     [<000003ffe0d759ca>] ret_from_fork+0xa/0x30
    
    Fix this by removing sclp_state_change_event from sclp_reg_list when
    sclp_init() fails.
    
    Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scsi: core: alua: I/O errors for ALUA state transitions [+ + +]
Author: Martin Wilck <martin.wilck@suse.com>
Date:   Tue May 14 16:03:44 2024 +0200

    scsi: core: alua: I/O errors for ALUA state transitions
    
    [ Upstream commit 10157b1fc1a762293381e9145041253420dfc6ad ]
    
    When a host is configured with a few LUNs and I/O is running, injecting FC
    faults repeatedly leads to path recovery problems.  The LUNs have 4 paths
    each and 3 of them come back active after say an FC fault which makes 2 of
    the paths go down, instead of all 4. This happens after several iterations
    of continuous FC faults.
    
    Reason here is that we're returning an I/O error whenever we're
    encountering sense code 06/04/0a (LOGICAL UNIT NOT ACCESSIBLE, ASYMMETRIC
    ACCESS STATE TRANSITION) instead of retrying.
    
    [mwilck: The original patch was developed by Rajashekhar M A and Hannes
    Reinecke. I moved the code to alua_check_sense() as suggested by Mike
    Christie [1]. Evan Milne had raised the question whether pg->state should
    be set to transitioning in the UA case [2]. I believe that doing this is
    correct. SCSI_ACCESS_STATE_TRANSITIONING by itself doesn't cause I/O
    errors. Our handler schedules an RTPG, which will only result in an I/O
    error condition if the transitioning timeout expires.]
    
    [1] https://lore.kernel.org/all/0bc96e82-fdda-4187-148d-5b34f81d4942@oracle.com/
    [2] https://lore.kernel.org/all/CAGtn9r=kicnTDE2o7Gt5Y=yoidHYD7tG8XdMHEBJTBraVEoOCw@mail.gmail.com/
    
    Co-developed-by: Rajashekhar M A <rajs@netapp.com>
    Co-developed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Martin Wilck <martin.wilck@suse.com>
    Link: https://lore.kernel.org/r/20240514140344.19538-1-mwilck@suse.com
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: libsas: Fix exp-attached device scan after probe failure scanned in again after probe failed [+ + +]
Author: Xingui Yang <yangxingui@huawei.com>
Date:   Wed Jun 19 09:17:42 2024 +0000

    scsi: libsas: Fix exp-attached device scan after probe failure scanned in again after probe failed
    
    [ Upstream commit ab2068a6fb84751836a84c26ca72b3beb349619d ]
    
    The expander phy will be treated as broadcast flutter in the next
    revalidation after the exp-attached end device probe failed, as follows:
    
    [78779.654026] sas: broadcast received: 0
    [78779.654037] sas: REVALIDATING DOMAIN on port 0, pid:10
    [78779.654680] sas: ex 500e004aaaaaaa1f phy05 change count has changed
    [78779.662977] sas: ex 500e004aaaaaaa1f phy05 originated BROADCAST(CHANGE)
    [78779.662986] sas: ex 500e004aaaaaaa1f phy05 new device attached
    [78779.663079] sas: ex 500e004aaaaaaa1f phy05:U:8 attached: 500e004aaaaaaa05 (stp)
    [78779.693542] hisi_sas_v3_hw 0000:b4:02.0: dev[16:5] found
    [78779.701155] sas: done REVALIDATING DOMAIN on port 0, pid:10, res 0x0
    [78779.707864] sas: Enter sas_scsi_recover_host busy: 0 failed: 0
    ...
    [78835.161307] sas: --- Exit sas_scsi_recover_host: busy: 0 failed: 0 tries: 1
    [78835.171344] sas: sas_probe_sata: for exp-attached device 500e004aaaaaaa05 returned -19
    [78835.180879] hisi_sas_v3_hw 0000:b4:02.0: dev[16:5] is gone
    [78835.187487] sas: broadcast received: 0
    [78835.187504] sas: REVALIDATING DOMAIN on port 0, pid:10
    [78835.188263] sas: ex 500e004aaaaaaa1f phy05 change count has changed
    [78835.195870] sas: ex 500e004aaaaaaa1f phy05 originated BROADCAST(CHANGE)
    [78835.195875] sas: ex 500e004aaaaaaa1f rediscovering phy05
    [78835.196022] sas: ex 500e004aaaaaaa1f phy05:U:A attached: 500e004aaaaaaa05 (stp)
    [78835.196026] sas: ex 500e004aaaaaaa1f phy05 broadcast flutter
    [78835.197615] sas: done REVALIDATING DOMAIN on port 0, pid:10, res 0x0
    
    The cause of the problem is that the related ex_phy's attached_sas_addr was
    not cleared after the end device probe failed, so reset it.
    
    Signed-off-by: Xingui Yang <yangxingui@huawei.com>
    Link: https://lore.kernel.org/r/20240619091742.25465-1-yangxingui@huawei.com
    Reviewed-by: John Garry <john.g.garry@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: qedf: Don't process stag work during unload and recovery [+ + +]
Author: Saurav Kashyap <skashyap@marvell.com>
Date:   Wed May 15 14:40:59 2024 +0530

    scsi: qedf: Don't process stag work during unload and recovery
    
    [ Upstream commit 51071f0831ea975fc045526dd7e17efe669dc6e1 ]
    
    Stag work can cause issues during unload and recovery, hence don't process
    it.
    
    Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Link: https://lore.kernel.org/r/20240515091101.18754-2-skashyap@marvell.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: qedf: Set qed_slowpath_params to zero before use [+ + +]
Author: Saurav Kashyap <skashyap@marvell.com>
Date:   Wed May 15 14:41:01 2024 +0530

    scsi: qedf: Set qed_slowpath_params to zero before use
    
    [ Upstream commit 6c3bb589debd763dc4b94803ddf3c13b4fcca776 ]
    
    Zero qed_slowpath_params before use.
    
    Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Link: https://lore.kernel.org/r/20240515091101.18754-4-skashyap@marvell.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: qedf: Wait for stag work during unload [+ + +]
Author: Saurav Kashyap <skashyap@marvell.com>
Date:   Wed May 15 14:41:00 2024 +0530

    scsi: qedf: Wait for stag work during unload
    
    [ Upstream commit 78e88472b60936025b83eba57cffa59d3501dc07 ]
    
    If stag work is already scheduled and unload is called, it can lead to
    issues as unload cleans up the work element. Wait for stag work to get
    completed before cleanup during unload.
    
    Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Link: https://lore.kernel.org/r/20240515091101.18754-3-skashyap@marvell.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: sr: Fix unintentional arithmetic wraparound [+ + +]
Author: Justin Stitt <justinstitt@google.com>
Date:   Wed May 8 17:22:51 2024 +0000

    scsi: sr: Fix unintentional arithmetic wraparound
    
    [ Upstream commit 9fad9d560af5c654bb38e0b07ee54a4e9acdc5cd ]
    
    Running syzkaller with the newly reintroduced signed integer overflow
    sanitizer produces this report:
    
    [   65.194362] ------------[ cut here ]------------
    [   65.197752] UBSAN: signed-integer-overflow in ../drivers/scsi/sr_ioctl.c:436:9
    [   65.203607] -2147483648 * 177 cannot be represented in type 'int'
    [   65.207911] CPU: 2 PID: 10416 Comm: syz-executor.1 Not tainted 6.8.0-rc2-00035-gb3ef86b5a957 #1
    [   65.213585] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [   65.219923] Call Trace:
    [   65.221556]  <TASK>
    [   65.223029]  dump_stack_lvl+0x93/0xd0
    [   65.225573]  handle_overflow+0x171/0x1b0
    [   65.228219]  sr_select_speed+0xeb/0xf0
    [   65.230786]  ? __pm_runtime_resume+0xe6/0x130
    [   65.233606]  sr_block_ioctl+0x15d/0x1d0
    ...
    
    Historically, the signed integer overflow sanitizer did not work in the
    kernel due to its interaction with `-fwrapv` but this has since been
    changed [1] in the newest version of Clang. It was re-enabled in the kernel
    with Commit 557f8c582a9b ("ubsan: Reintroduce signed overflow sanitizer").
    
    Firstly, let's change the type of "speed" to unsigned long as
    sr_select_speed()'s only caller passes in an unsigned long anyways.
    
    $ git grep '\.select_speed'
    |       drivers/scsi/sr.c:      .select_speed           = sr_select_speed,
    ...
    |       static int cdrom_ioctl_select_speed(struct cdrom_device_info *cdi,
    |                       unsigned long arg)
    |       {
    |               ...
    |               return cdi->ops->select_speed(cdi, arg);
    |       }
    
    Next, let's add an extra check to make sure we don't exceed 0xffff/177
    (350) since 0xffff is the max speed. This has two benefits: 1) we deal
    with integer overflow before it happens and 2) we properly respect the
    max speed of 0xffff. There are some "magic" numbers here but I did not
    want to change more than what was necessary.
    
    Link: https://github.com/llvm/llvm-project/pull/82432 [1]
    Closes: https://github.com/KSPP/linux/issues/357
    Cc: linux-hardening@vger.kernel.org
    Signed-off-by: Justin Stitt <justinstitt@google.com>
    Link: https://lore.kernel.org/r/20240508-b4-b4-sio-sr_select_speed-v2-1-00b68f724290@google.com
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftest/timerns: fix clang build failures for abs() calls [+ + +]
Author: John Hubbard <jhubbard@nvidia.com>
Date:   Wed Jul 3 19:52:47 2024 -0700

    selftest/timerns: fix clang build failures for abs() calls
    
    [ Upstream commit f76f9bc616b7320df6789241ca7d26cedcf03cf3 ]
    
    When building with clang, via:
    
        make LLVM=1 -C tools/testing/selftests
    
    ...clang warns about mismatches between the expected and required
    integer length being supplied to abs(3).
    
    Fix this by using the correct variant of abs(3): labs(3) or llabs(3), in
    these cases.
    
    Reviewed-by: Dmitry Safonov <dima@arista.com>
    Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
    Signed-off-by: John Hubbard <jhubbard@nvidia.com>
    Acked-by: Andrei Vagin <avagin@google.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/bpf: Extend tcx tests to cover late tcx_entry release [+ + +]
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Mon Jul 8 15:31:30 2024 +0200

    selftests/bpf: Extend tcx tests to cover late tcx_entry release
    
    [ Upstream commit 5f1d18de79180deac2822c93e431bbe547f7d3ce ]
    
    Add a test case which replaces an active ingress qdisc while keeping the
    miniq in-tact during the transition period to the new clsact qdisc.
    
      # ./vmtest.sh -- ./test_progs -t tc_link
      [...]
      ./test_progs -t tc_link
      [    3.412871] bpf_testmod: loading out-of-tree module taints kernel.
      [    3.413343] bpf_testmod: module verification failed: signature and/or required key missing - tainting kernel
      #332     tc_links_after:OK
      #333     tc_links_append:OK
      #334     tc_links_basic:OK
      #335     tc_links_before:OK
      #336     tc_links_chain_classic:OK
      #337     tc_links_chain_mixed:OK
      #338     tc_links_dev_chain0:OK
      #339     tc_links_dev_cleanup:OK
      #340     tc_links_dev_mixed:OK
      #341     tc_links_ingress:OK
      #342     tc_links_invalid:OK
      #343     tc_links_prepend:OK
      #344     tc_links_replace:OK
      #345     tc_links_revision:OK
      Summary: 14/0 PASSED, 0 SKIPPED, 0 FAILED
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Martin KaFai Lau <martin.lau@kernel.org>
    Link: https://lore.kernel.org/r/20240708133130.11609-2-daniel@iogearbox.net
    Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/futex: pass _GNU_SOURCE without a value to the compiler [+ + +]
Author: John Hubbard <jhubbard@nvidia.com>
Date:   Tue May 28 19:29:38 2024 -0700

    selftests/futex: pass _GNU_SOURCE without a value to the compiler
    
    [ Upstream commit cb708ab9f584f159798b60853edcf0c8b67ce295 ]
    
    It's slightly better to set _GNU_SOURCE in the source code, but if one
    must do it via the compiler invocation, then the best way to do so is
    this:
    
        $(CC) -D_GNU_SOURCE=
    
    ...because otherwise, if this form is used:
    
        $(CC) -D_GNU_SOURCE
    
    ...then that leads the compiler to set a value, as if you had passed in:
    
        $(CC) -D_GNU_SOURCE=1
    
    That, in turn, leads to warnings under both gcc and clang, like this:
    
        futex_requeue_pi.c:20: warning: "_GNU_SOURCE" redefined
    
    Fix this by using the "-D_GNU_SOURCE=" form.
    
    Reviewed-by: Edward Liaw <edliaw@google.com>
    Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
    Signed-off-by: John Hubbard <jhubbard@nvidia.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/openat2: Fix build warnings on ppc64 [+ + +]
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Tue May 21 13:03:25 2024 +1000

    selftests/openat2: Fix build warnings on ppc64
    
    [ Upstream commit 84b6df4c49a1cc2854a16937acd5fd3e6315d083 ]
    
    Fix warnings like:
    
      openat2_test.c: In function ‘test_openat2_flags’:
      openat2_test.c:303:73: warning: format ‘%llX’ expects argument of type
      ‘long long unsigned int’, but argument 5 has type ‘__u64’ {aka ‘long
      unsigned int’} [-Wformat=]
    
    By switching to unsigned long long for u64 for ppc64 builds.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/overlayfs: Fix build error on ppc64 [+ + +]
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Tue May 21 12:26:16 2024 +1000

    selftests/overlayfs: Fix build error on ppc64
    
    [ Upstream commit e8b8c5264d4ebd248f60a5cef077fe615806e7a0 ]
    
    Fix build error on ppc64:
      dev_in_maps.c: In function ‘get_file_dev_and_inode’:
      dev_in_maps.c:60:59: error: format ‘%llu’ expects argument of type
      ‘long long unsigned int *’, but argument 7 has type ‘__u64 *’ {aka ‘long
      unsigned int *’} [-Werror=format=]
    
    By switching to unsigned long long for u64 for ppc64 builds.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/vDSO: fix clang build errors and warnings [+ + +]
Author: John Hubbard <jhubbard@nvidia.com>
Date:   Fri Jul 5 09:57:34 2024 -1000

    selftests/vDSO: fix clang build errors and warnings
    
    [ Upstream commit 73810cd45b99c6c418e1c6a487b52c1e74edb20d ]
    
    When building with clang, via:
    
        make LLVM=1 -C tools/testing/selftests
    
    ...there are several warnings, and an error. This fixes all of those and
    allows these tests to run and pass.
    
    1. Fix linker error (undefined reference to memcpy) by providing a local
       version of memcpy.
    
    2. clang complains about using this form:
    
        if (g = h & 0xf0000000)
    
    ...so factor out the assignment into a separate step.
    
    3. The code is passing a signed const char* to elf_hash(), which expects
       a const unsigned char *. There are several callers, so fix this at
       the source by allowing the function to accept a signed argument, and
       then converting to unsigned operations, once inside the function.
    
    4. clang doesn't have __attribute__((externally_visible)) and generates
       a warning to that effect. Fortunately, gcc 12 and gcc 13 do not seem
       to require that attribute in order to build, run and pass tests here,
       so remove it.
    
    Reviewed-by: Carlos Llamas <cmllamas@google.com>
    Reviewed-by: Edward Liaw <edliaw@google.com>
    Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
    Tested-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
    Signed-off-by: John Hubbard <jhubbard@nvidia.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests: cachestat: Fix build warnings on ppc64 [+ + +]
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Tue May 21 13:01:11 2024 +1000

    selftests: cachestat: Fix build warnings on ppc64
    
    [ Upstream commit bc4d5f5d2debf8bb65fba188313481549ead8576 ]
    
    Fix warnings like:
      test_cachestat.c: In function ‘print_cachestat’:
      test_cachestat.c:30:38: warning: format ‘%llu’ expects argument of
      type ‘long long unsigned int’, but argument 2 has type ‘__u64’ {aka
      ‘long unsigned int’} [-Wformat=]
    
    By switching to unsigned long long for u64 for ppc64 builds.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests: openvswitch: Set value to nla flags. [+ + +]
Author: Adrian Moreno <amorenoz@redhat.com>
Date:   Tue Jun 18 09:29:21 2024 +0200

    selftests: openvswitch: Set value to nla flags.
    
    [ Upstream commit a8763466669d21b570b26160d0a5e0a2ee529d22 ]
    
    Netlink flags, although they don't have payload at the netlink level,
    are represented as having "True" as value in pyroute2.
    
    Without it, trying to add a flow with a flag-type action (e.g: pop_vlan)
    fails with the following traceback:
    
    Traceback (most recent call last):
      File "[...]/ovs-dpctl.py", line 2498, in <module>
        sys.exit(main(sys.argv))
                 ^^^^^^^^^^^^^^
      File "[...]/ovs-dpctl.py", line 2487, in main
        ovsflow.add_flow(rep["dpifindex"], flow)
      File "[...]/ovs-dpctl.py", line 2136, in add_flow
        reply = self.nlm_request(
                ^^^^^^^^^^^^^^^^^
      File "[...]/pyroute2/netlink/nlsocket.py", line 822, in nlm_request
        return tuple(self._genlm_request(*argv, **kwarg))
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "[...]/pyroute2/netlink/generic/__init__.py", line 126, in
    nlm_request
        return tuple(super().nlm_request(*argv, **kwarg))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "[...]/pyroute2/netlink/nlsocket.py", line 1124, in nlm_request
        self.put(msg, msg_type, msg_flags, msg_seq=msg_seq)
      File "[...]/pyroute2/netlink/nlsocket.py", line 389, in put
        self.sendto_gate(msg, addr)
      File "[...]/pyroute2/netlink/nlsocket.py", line 1056, in sendto_gate
        msg.encode()
      File "[...]/pyroute2/netlink/__init__.py", line 1245, in encode
        offset = self.encode_nlas(offset)
                 ^^^^^^^^^^^^^^^^^^^^^^^^
      File "[...]/pyroute2/netlink/__init__.py", line 1560, in encode_nlas
        nla_instance.setvalue(cell[1])
      File "[...]/pyroute2/netlink/__init__.py", line 1265, in setvalue
        nlv.setvalue(nla_tuple[1])
                     ~~~~~~~~~^^^
    IndexError: list index out of range
    
    Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
    Acked-by: Aaron Conole <aconole@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
spi: davinci: Unset POWERDOWN bit when releasing resources [+ + +]
Author: Bastien Curutchet <bastien.curutchet@bootlin.com>
Date:   Mon Jun 24 09:17:45 2024 +0200

    spi: davinci: Unset POWERDOWN bit when releasing resources
    
    [ Upstream commit 1762dc01fc78ef5f19693e9317eae7491c6c7e1b ]
    
    On the OMAPL138, the SPI reference clock is provided by the Power and
    Sleep Controller (PSC). The PSC's datasheet says that 'some peripherals
    have special programming requirements and additional recommended steps
    you must take before you can invoke the PSC module state transition'. I
    didn't find more details in documentation but it appears that PSC needs
    the SPI to clear the POWERDOWN bit before disabling the clock. Indeed,
    when this bit is set, the PSC gets stuck in transitions from enable to
    disable state.
    
    Clear the POWERDOWN bit when releasing driver's resources
    
    Signed-off-by: Bastien Curutchet <bastien.curutchet@bootlin.com>
    Link: https://patch.msgid.link/20240624071745.17409-1-bastien.curutchet@bootlin.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: Fix OCTAL mode support [+ + +]
Author: Patrice Chotard <patrice.chotard@foss.st.com>
Date:   Tue Jun 18 15:29:51 2024 +0200

    spi: Fix OCTAL mode support
    
    [ Upstream commit d6a711a898672dd873aab3844f754a3ca40723a5 ]
    
    Add OCTAL mode support.
    Issue detected using "--octal" spidev_test's option.
    
    Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
    Link: https://msgid.link/r/20240618132951.2743935-4-patrice.chotard@foss.st.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: imx: Don't expect DMA for i.MX{25,35,50,51,53} cspi devices [+ + +]
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Wed May 8 11:56:10 2024 +0200

    spi: imx: Don't expect DMA for i.MX{25,35,50,51,53} cspi devices
    
    [ Upstream commit ce1dac560a74220f2e53845ec0723b562288aed4 ]
    
    While in commit 2dd33f9cec90 ("spi: imx: support DMA for imx35") it was
    claimed that DMA works on i.MX25, i.MX31 and i.MX35 the respective
    device trees don't add DMA channels. The Reference manuals of i.MX31 and
    i.MX25 also don't mention the CSPI core being DMA capable. (I didn't
    check the others.)
    
    Since commit e267a5b3ec59 ("spi: spi-imx: Use dev_err_probe for failed
    DMA channel requests") this results in an error message
    
            spi_imx 43fa4000.spi: error -ENODEV: can't get the TX DMA channel!
    
    during boot. However that isn't fatal and the driver gets loaded just
    fine, just without using DMA.
    
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Link: https://patch.msgid.link/20240508095610.2146640-2-u.kleine-koenig@pengutronix.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: mux: set ctlr->bits_per_word_mask [+ + +]
Author: David Lechner <dlechner@baylibre.com>
Date:   Mon Jul 8 20:05:30 2024 -0500

    spi: mux: set ctlr->bits_per_word_mask
    
    [ Upstream commit c8bd922d924bb4ab6c6c488310157d1a27996f31 ]
    
    Like other SPI controller flags, bits_per_word_mask may be used by a
    peripheral driver, so it needs to reflect the capabilities of the
    underlying controller.
    
    Signed-off-by: David Lechner <dlechner@baylibre.com>
    Link: https://patch.msgid.link/20240708-spi-mux-fix-v1-3-6c8845193128@baylibre.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tee: optee: ffa: Fix missing-field-initializers warning [+ + +]
Author: Mark-PK Tsai <mark-pk.tsai@mediatek.com>
Date:   Thu Jun 27 14:59:09 2024 +0800

    tee: optee: ffa: Fix missing-field-initializers warning
    
    [ Upstream commit e0556255a53d6d3d406a28362dffd972018a997c ]
    
    The 'missing-field-initializers' warning was reported
    when building with W=2.
    This patch use designated initializers for
    'struct ffa_send_direct_data' to suppress the warning
    and clarify the initialization intent.
    
    Signed-off-by: ming-jen.chang <ming-jen.chang@mediatek.com>
    Signed-off-by: Mark-PK Tsai <mark-pk.tsai@mediatek.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tools/power/cpupower: Fix Pstate frequency reporting on AMD Family 1Ah CPUs [+ + +]
Author: Dhananjay Ugwekar <Dhananjay.Ugwekar@amd.com>
Date:   Tue Apr 30 14:07:06 2024 +0530

    tools/power/cpupower: Fix Pstate frequency reporting on AMD Family 1Ah CPUs
    
    [ Upstream commit 43cad521c6d228ea0c51e248f8e5b3a6295a2849 ]
    
    Update cpupower's P-State frequency calculation and reporting with AMD
    Family 1Ah+ processors, when using the acpi-cpufreq driver. This is due
    to a change in the PStateDef MSR layout in AMD Family 1Ah+.
    
    Tested on 4th and 5th Gen AMD EPYC system
    
    Signed-off-by: Ananth Narayan <Ananth.Narayan@amd.com>
    Signed-off-by: Dhananjay Ugwekar <Dhananjay.Ugwekar@amd.com>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
vfio/pci: Insert full vma on mmap'd MMIO fault [+ + +]
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Thu Jun 6 21:52:07 2024 -0600

    vfio/pci: Insert full vma on mmap'd MMIO fault
    
    [ Upstream commit d71a989cf5d961989c273093cdff2550acdde314 ]
    
    In order to improve performance of typical scenarios we can try to insert
    the entire vma on fault.  This accelerates typical cases, such as when
    the MMIO region is DMA mapped by QEMU.  The vfio_iommu_type1 driver will
    fault in the entire DMA mapped range through fixup_user_fault().
    
    In synthetic testing, this improves the time required to walk a PCI BAR
    mapping from userspace by roughly 1/3rd.
    
    This is likely an interim solution until vmf_insert_pfn_{pmd,pud}() gain
    support for pfnmaps.
    
    Suggested-by: Yan Zhao <yan.y.zhao@intel.com>
    Link: https://lore.kernel.org/all/Zl6XdUkt%2FzMMGOLF@yzhao56-desk.sh.intel.com/
    Reviewed-by: Yan Zhao <yan.y.zhao@intel.com>
    Link: https://lore.kernel.org/r/20240607035213.2054226-1-alex.williamson@redhat.com
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

vfio/pci: Use unmap_mapping_range() [+ + +]
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Wed May 29 22:52:31 2024 -0600

    vfio/pci: Use unmap_mapping_range()
    
    [ Upstream commit aac6db75a9fc2c7a6f73e152df8f15101dda38e6 ]
    
    With the vfio device fd tied to the address space of the pseudo fs
    inode, we can use the mm to track all vmas that might be mmap'ing
    device BARs, which removes our vma_list and all the complicated lock
    ordering necessary to manually zap each related vma.
    
    Note that we can no longer store the pfn in vm_pgoff if we want to use
    unmap_mapping_range() to zap a selective portion of the device fd
    corresponding to BAR mappings.
    
    This also converts our mmap fault handler to use vmf_insert_pfn()
    because we no longer have a vma_list to avoid the concurrency problem
    with io_remap_pfn_range().  The goal is to eventually use the vm_ops
    huge_fault handler to avoid the additional faulting overhead, but
    vmf_insert_pfn_{pmd,pud}() need to learn about pfnmaps first.
    
    Also, Jason notes that a race exists between unmap_mapping_range() and
    the fops mmap callback if we were to call io_remap_pfn_range() to
    populate the vma on mmap.  Specifically, mmap_region() does call_mmap()
    before it does vma_link_file() which gives a window where the vma is
    populated but invisible to unmap_mapping_range().
    
    Suggested-by: Jason Gunthorpe <jgg@nvidia.com>
    Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    Link: https://lore.kernel.org/r/20240530045236.1005864-3-alex.williamson@redhat.com
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
vfio: Create vfio_fs_type with inode per device [+ + +]
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Wed May 29 22:52:30 2024 -0600

    vfio: Create vfio_fs_type with inode per device
    
    [ Upstream commit b7c5e64fecfa88764791679cca4786ac65de739e ]
    
    By linking all the device fds we provide to userspace to an
    address space through a new pseudo fs, we can use tools like
    unmap_mapping_range() to zap all vmas associated with a device.
    
    Suggested-by: Jason Gunthorpe <jgg@nvidia.com>
    Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    Link: https://lore.kernel.org/r/20240530045236.1005864-2-alex.williamson@redhat.com
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
wifi: cfg80211: fix 6 GHz scan request building [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Fri May 10 11:37:38 2024 +0200

    wifi: cfg80211: fix 6 GHz scan request building
    
    [ Upstream commit f7a8b10bfd614d7a9a16fbe80d28ead4f063cb00 ]
    
    The 6 GHz scan request struct allocated by cfg80211_scan_6ghz() is
    meant to be formed this way:
    
     [base struct][channels][ssids][6ghz_params]
    
    It is allocated with [channels] as the maximum number of channels
    supported by the driver in the 6 GHz band, since allocation is
    before knowing how many there will be.
    
    However, the inner pointers are set incorrectly: initially, the
    6 GHz scan parameters pointer is set:
    
     [base struct][channels]
                            ^ scan_6ghz_params
    
    and later the SSID pointer is set to the end of the actually
    _used_ channels.
    
     [base struct][channels]
                      ^ ssids
    
    If many APs were to be discovered, and many channels used, and
    there were many SSIDs, then the SSIDs could overlap the 6 GHz
    parameters.
    
    Additionally, the request->ssids for most of the function points
    to the original request still (given the struct copy) but is used
    normally, which is confusing.
    
    Clear this up, by actually using the allocated space for 6 GHz
    parameters _after_ the SSIDs, and set up the SSIDs initially so
    they are used more clearly. Just like in nl80211.c, set them
    only if there actually are SSIDs though.
    
    Finally, also copy the elements (ie/ie_len) so they're part of
    the same request, not pointing to the old request.
    
    Co-developed-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Reviewed-by: Ilan Peer <ilan.peer@intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Link: https://msgid.link/20240510113738.4190692ef4ee.I0cb19188be17a8abd029805e3373c0a7777c214c@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: cfg80211: wext: add extra SIOCSIWSCAN data check [+ + +]
Author: Dmitry Antipov <dmantipov@yandex.ru>
Date:   Fri May 31 06:20:10 2024 +0300

    wifi: cfg80211: wext: add extra SIOCSIWSCAN data check
    
    [ Upstream commit 6ef09cdc5ba0f93826c09d810c141a8d103a80fc ]
    
    In 'cfg80211_wext_siwscan()', add extra check whether number of
    channels passed via 'ioctl(sock, SIOCSIWSCAN, ...)' doesn't exceed
    IW_MAX_FREQUENCIES and reject invalid request with -EINVAL otherwise.
    
    Reported-by: syzbot+253cd2d2491df77c93ac@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=253cd2d2491df77c93ac
    Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
    Link: https://msgid.link/20240531032010.451295-1-dmantipov@yandex.ru
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: cfg80211: wext: set ssids=NULL for passive scans [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Tue Jun 11 18:58:16 2024 +0200

    wifi: cfg80211: wext: set ssids=NULL for passive scans
    
    commit 0941772342d59e48733131ac3a202fa1a4d832e9 upstream.
    
    In nl80211, we always set the ssids of a scan request to
    NULL when n_ssids==0 (passive scan). Drivers have relied
    on this behaviour in the past, so we fixed it in 6 GHz
    scan requests as well, and added a warning so we'd have
    assurance the API would always be called that way.
    
    syzbot found that wext doesn't ensure that, so we reach
    the check and trigger the warning. Fix the wext code to
    set the ssids pointer to NULL when there are none.
    
    Reported-by: syzbot+cd6135193ba6bb9ad158@syzkaller.appspotmail.com
    Fixes: f7a8b10bfd61 ("wifi: cfg80211: fix 6 GHz scan request building")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: iwlwifi: mvm: d3: fix WoWLAN command version lookup [+ + +]
Author: Yedidya Benshimol <yedidya.ben.shimol@intel.com>
Date:   Fri May 10 17:06:29 2024 +0300

    wifi: iwlwifi: mvm: d3: fix WoWLAN command version lookup
    
    [ Upstream commit b7ffca99313d856f7d1cc89038d9061b128e8e97 ]
    
    After moving from commands to notificaitons in the d3 resume flow,
    removing the WOWLAN_GET_STATUSES and REPLY_OFFLOADS_QUERY_CMD causes
    the return of the default value when looking up their version.
    Returning zero here results in the driver sending the not supported
    NON_QOS_TX_COUNTER_CMD.
    
    Signed-off-by: Yedidya Benshimol <yedidya.ben.shimol@intel.com>
    Reviewed-by: Gregory Greenman <gregory.greenman@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://msgid.link/20240510170500.8cabfd580614.If3a0db9851f56041f8f5360959354abd5379224a@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: mvm: don't wake up rx_sync_waitq upon RFKILL [+ + +]
Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Date:   Wed Jul 3 06:43:16 2024 +0300

    wifi: iwlwifi: mvm: don't wake up rx_sync_waitq upon RFKILL
    
    commit e715c9302b1c6fae990b9898a80fac855549d1f0 upstream.
    
    Since we now want to sync the queues even when we're in RFKILL, we
    shouldn't wake up the wait queue since we still expect to get all the
    notifications from the firmware.
    
    Fixes: 4d08c0b3357c ("wifi: iwlwifi: mvm: handle BA session teardown in RF-kill")
    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20240703064027.be7a9dbeacde.I5586cb3ca8d6e44f79d819a48a0c22351ff720c9@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: iwlwifi: mvm: Fix scan abort handling with HW rfkill [+ + +]
Author: Ilan Peer <ilan.peer@intel.com>
Date:   Mon May 13 13:27:13 2024 +0300

    wifi: iwlwifi: mvm: Fix scan abort handling with HW rfkill
    
    [ Upstream commit e6dd2936ce7ce94a1915b799f8af8193ec628e87 ]
    
    When HW rfkill is toggled to disable the RF, the flow to stop scan is
    called. When trying to send the command to abort the scan, since
    HW rfkill is toggled, the command is not sent due to rfkill being
    asserted, and -ERFKILL is returned from iwl_trans_send_cmd(), but this
    is silently ignored in iwl_mvm_send_cmd() and thus the scan abort flow
    continues to wait for scan complete notification and fails. Since it
    fails, the UID to type mapping is not cleared, and thus a warning is
    later fired when trying to stop the interface.
    
    To fix this, modify the UMAC scan abort flow to force sending the
    scan abort command even when in rfkill, so stop the FW from accessing
    the radio etc.
    
    Signed-off-by: Ilan Peer <ilan.peer@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://msgid.link/20240513132416.8cbe2f8c1a97.Iffe235c12a919dafec88eef399eb1f7bae2c5bdb@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: mvm: handle BA session teardown in RF-kill [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon May 13 13:27:10 2024 +0300

    wifi: iwlwifi: mvm: handle BA session teardown in RF-kill
    
    [ Upstream commit 4d08c0b3357cba0aeffaf3abc62cae0c154f2816 ]
    
    When entering RF-kill, mac80211 tears down BA sessions, but
    due to RF-kill the commands aren't sent to the device. As a
    result, there can be frames pending on the reorder buffer or
    perhaps even received while doing so, leading to warnings.
    
    Avoid the warnings by doing the BA session teardown normally
    even in RF-kill, which also requires queue sync.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://msgid.link/20240513132416.0762cd80fb3d.I43c5877f3b546159b2db4f36d6d956b333c41cf0@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: mvm: Handle BIGTK cipher in kek_kck cmd [+ + +]
Author: Yedidya Benshimol <yedidya.ben.shimol@intel.com>
Date:   Mon May 13 13:27:09 2024 +0300

    wifi: iwlwifi: mvm: Handle BIGTK cipher in kek_kck cmd
    
    [ Upstream commit 08b16d1b5997dc378533318e2a9cd73c7a898284 ]
    
    The BIGTK cipher field was added to the kek_kck_material_cmd
    but wasn't assigned. Fix that by differentiating between the
    IGTK/BIGTK keys and assign the ciphers fields accordingly.
    
    Signed-off-by: Yedidya Benshimol <yedidya.ben.shimol@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://msgid.link/20240513132416.7fd0b22b7267.Ie9b581652b74bd7806980364d59e1b2e78e682c0@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: mvm: properly set 6 GHz channel direct probe option [+ + +]
Author: Ayala Beker <ayala.beker@intel.com>
Date:   Mon May 13 13:27:11 2024 +0300

    wifi: iwlwifi: mvm: properly set 6 GHz channel direct probe option
    
    [ Upstream commit 989830d1cf16bd149bf0690d889a9caef95fb5b1 ]
    
    Ensure that the 6 GHz channel is configured with a valid direct BSSID,
    avoiding any invalid or multicast BSSID addresses.
    
    Signed-off-by: Ayala Beker <ayala.beker@intel.com>
    Reviewed-by: Ilan Peer <ilan.peer@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://msgid.link/20240513132416.91a631a0fe60.I2ea2616af9b8a2eaf959b156c69cf65a2f1204d4@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: mvm: remove stale STA link data during restart [+ + +]
Author: Benjamin Berg <benjamin.berg@intel.com>
Date:   Mon May 13 13:27:08 2024 +0300

    wifi: iwlwifi: mvm: remove stale STA link data during restart
    
    [ Upstream commit cc3ba78f202de9752aceb16342ab62bdfbffac7e ]
    
    If pre-recovery mac80211 tried to disable a link but this disablement
    failed, then there might be a mismatch between mac80211 assuming the
    link has been disabled and the driver still having the data around.
    During recover itself, that is not a problem, but should the link be
    activated again at a later point, iwlwifi will refuse the activation as
    it detects the inconsistent state.
    
    Solve this corner-case by iterating the station in the restart cleanup
    handler.
    
    Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://msgid.link/20240513132416.d2fd60338055.I840d4fdce5fd49fe69896d928b071067e3730259@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: properly set WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK [+ + +]
Author: Daniel Gabay <daniel.gabay@intel.com>
Date:   Wed Jul 3 06:43:13 2024 +0300

    wifi: iwlwifi: properly set WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK
    
    [ Upstream commit 4ec17ce716bdaf680288ce680b4621b52483cc96 ]
    
    The WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK should be set based on the
    WOWLAN_KEK_KCK_MATERIAL command version. Currently, the command
    version in the firmware has advanced to 4, which prevents the
    flag from being set correctly, fix that.
    
    Signed-off-by: Daniel Gabay <daniel.gabay@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20240703064026.a0f162108575.If1a9785727d2a1b0197a396680965df1b53d4096@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: apply mcast rate only if interface is up [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Wed May 15 13:34:10 2024 +0200

    wifi: mac80211: apply mcast rate only if interface is up
    
    [ Upstream commit 02c665f048a439c0d58cc45334c94634bd7c18e6 ]
    
    If the interface isn't enabled, don't apply multicast
    rate changes immediately.
    
    Reported-by: syzbot+de87c09cc7b964ea2e23@syzkaller.appspotmail.com
    Link: https://msgid.link/20240515133410.d6cffe5756cc.I47b624a317e62bdb4609ff7fa79403c0c444d32d@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: Avoid address calculations via out of bounds array indexing [+ + +]
Author: Kenton Groombridge <concord@gentoo.org>
Date:   Wed Jun 5 11:22:18 2024 -0400

    wifi: mac80211: Avoid address calculations via out of bounds array indexing
    
    [ Upstream commit 2663d0462eb32ae7c9b035300ab6b1523886c718 ]
    
    req->n_channels must be set before req->channels[] can be used.
    
    This patch fixes one of the issues encountered in [1].
    
    [   83.964255] UBSAN: array-index-out-of-bounds in net/mac80211/scan.c:364:4
    [   83.964258] index 0 is out of range for type 'struct ieee80211_channel *[]'
    [...]
    [   83.964264] Call Trace:
    [   83.964267]  <TASK>
    [   83.964269]  dump_stack_lvl+0x3f/0xc0
    [   83.964274]  __ubsan_handle_out_of_bounds+0xec/0x110
    [   83.964278]  ieee80211_prep_hw_scan+0x2db/0x4b0
    [   83.964281]  __ieee80211_start_scan+0x601/0x990
    [   83.964291]  nl80211_trigger_scan+0x874/0x980
    [   83.964295]  genl_family_rcv_msg_doit+0xe8/0x160
    [   83.964298]  genl_rcv_msg+0x240/0x270
    [...]
    
    [1] https://bugzilla.kernel.org/show_bug.cgi?id=218810
    
    Co-authored-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Kenton Groombridge <concord@gentoo.org>
    Link: https://msgid.link/20240605152218.236061-1-concord@gentoo.org
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: disable softirqs for queued frame handling [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Wed Jun 26 09:15:59 2024 +0200

    wifi: mac80211: disable softirqs for queued frame handling
    
    commit 321028bc45f01edb9e57b0ae5c11c5c3600d00ca upstream.
    
    As noticed by syzbot, calling ieee80211_handle_queued_frames()
    (and actually handling frames there) requires softirqs to be
    disabled, since we call into the RX code. Fix that in the case
    of cleaning up frames left over during shutdown.
    
    Fixes: 177c6ae9725d ("wifi: mac80211: handle tasklet frames before stopping")
    Reported-by: syzbot+1d516edf1e74469ba5d3@syzkaller.appspotmail.com
    Link: https://patch.msgid.link/20240626091559.cd6f08105a6e.I74778610a5ff2cf8680964698131099d2960352a@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: mac80211: fix UBSAN noise in ieee80211_prep_hw_scan() [+ + +]
Author: Dmitry Antipov <dmantipov@yandex.ru>
Date:   Fri May 17 18:33:32 2024 +0300

    wifi: mac80211: fix UBSAN noise in ieee80211_prep_hw_scan()
    
    [ Upstream commit 92ecbb3ac6f3fe8ae9edf3226c76aa17b6800699 ]
    
    When testing the previous patch with CONFIG_UBSAN_BOUNDS, I've
    noticed the following:
    
    UBSAN: array-index-out-of-bounds in net/mac80211/scan.c:372:4
    index 0 is out of range for type 'struct ieee80211_channel *[]'
    CPU: 0 PID: 1435 Comm: wpa_supplicant Not tainted 6.9.0+ #1
    Hardware name: LENOVO 20UN005QRT/20UN005QRT <...BIOS details...>
    Call Trace:
     <TASK>
     dump_stack_lvl+0x2d/0x90
     __ubsan_handle_out_of_bounds+0xe7/0x140
     ? timerqueue_add+0x98/0xb0
     ieee80211_prep_hw_scan+0x2db/0x480 [mac80211]
     ? __kmalloc+0xe1/0x470
     __ieee80211_start_scan+0x541/0x760 [mac80211]
     rdev_scan+0x1f/0xe0 [cfg80211]
     nl80211_trigger_scan+0x9b6/0xae0 [cfg80211]
     ...<the rest is not too useful...>
    
    Since '__ieee80211_start_scan()' leaves 'hw_scan_req->req.n_channels'
    uninitialized, actual boundaries of 'hw_scan_req->req.channels' can't
    be checked in 'ieee80211_prep_hw_scan()'. Although an initialization
    of 'hw_scan_req->req.n_channels' introduces some confusion around
    allocated vs. used VLA members, this shouldn't be a problem since
    everything is correctly adjusted soon in 'ieee80211_prep_hw_scan()'.
    
    Cleanup 'kmalloc()' math in '__ieee80211_start_scan()' by using the
    convenient 'struct_size()' as well.
    
    Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
    Link: https://msgid.link/20240517153332.18271-2-dmantipov@yandex.ru
    [improve (imho) indentation a bit]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: handle tasklet frames before stopping [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Wed May 15 13:53:19 2024 +0200

    wifi: mac80211: handle tasklet frames before stopping
    
    [ Upstream commit 177c6ae9725d783f9e96f02593ce8fb2639be22f ]
    
    The code itself doesn't want to handle frames from the driver
    if it's already stopped, but if the tasklet was queued before
    and runs after the stop, then all bets are off. Flush queues
    before actually stopping, RX should be off at this point since
    all the interfaces are removed already, etc.
    
    Reported-by: syzbot+8830db5d3593b5546d2e@syzkaller.appspotmail.com
    Link: https://msgid.link/20240515135318.b05f11385c9a.I41c1b33a2e1814c3a7ef352cd7f2951b91785617@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: mesh: init nonpeer_pm to active by default in mesh sdata [+ + +]
Author: Nicolas Escande <nico.escande@gmail.com>
Date:   Mon May 27 16:17:59 2024 +0200

    wifi: mac80211: mesh: init nonpeer_pm to active by default in mesh sdata
    
    [ Upstream commit 6f6291f09a322c1c1578badac8072d049363f4e6 ]
    
    With a ath9k device I can see that:
            iw phy phy0 interface add mesh0 type mp
            ip link set mesh0 up
            iw dev mesh0 scan
    
    Will start a scan with the Power Management bit set in the Frame Control Field.
    This is because we set this bit depending on the nonpeer_pm variable of the mesh
    iface sdata and when there are no active links on the interface it remains to
    NL80211_MESH_POWER_UNKNOWN.
    
    As soon as links starts to be established, it wil switch to
    NL80211_MESH_POWER_ACTIVE as it is the value set by befault on the per sta
    nonpeer_pm field.
    As we want no power save by default, (as expressed with the per sta ini values),
    lets init it to the expected default value of NL80211_MESH_POWER_ACTIVE.
    
    Also please note that we cannot change the default value from userspace prior to
    establishing a link as using NL80211_CMD_SET_MESH_CONFIG will not work before
    NL80211_CMD_JOIN_MESH has been issued. So too late for our initial scan.
    
    Signed-off-by: Nicolas Escande <nico.escande@gmail.com>
    Link: https://msgid.link/20240527141759.299411-1-nico.escande@gmail.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
workqueue: Refactor worker ID formatting and make wq_worker_comm() use full ID string [+ + +]
Author: Tejun Heo <tj@kernel.org>
Date:   Mon May 20 13:28:33 2024 -1000

    workqueue: Refactor worker ID formatting and make wq_worker_comm() use full ID string
    
    [ Upstream commit 2a1b02bcba78f8498ab00d6142e1238d85b01591 ]
    
    Currently, worker ID formatting is open coded in create_worker(),
    init_rescuer() and worker_thread() (for %WORKER_DIE case). The formatted ID
    is saved into task->comm and wq_worker_comm() uses it as the base name to
    append extra information to when generating the name to be shown to
    userspace.
    
    However, TASK_COMM_LEN is only 16 leading to badly truncated names for
    rescuers. For example, the rescuer for the inet_frag_wq workqueue becomes:
    
      $ ps -ef | grep '[k]worker/R-inet'
      root         483       2  0 Apr26 ?        00:00:00 [kworker/R-inet_]
    
    Even for non-rescue workers, it's easy to run over 15 characters on
    moderately large machines.
    
    Fit it by consolidating worker ID formatting into a new helper
    format_worker_id() and calling it from wq_worker_comm() to obtain the
    untruncated worker ID string.
    
      $ ps -ef | grep '[k]worker/R-inet'
      root          60       2  0 12:10 ?        00:00:00 [kworker/R-inet_frag_wq]
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-and-tested-by: Jan Engelhardt <jengelh@inai.de>
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>