Changelog in Linux kernel 6.6.48

 
accel/habanalabs/gaudi2: unsecure tpc count registers [+ + +]
Author: Ofir Bitton <obitton@habana.ai>
Date:   Wed Jun 28 14:40:46 2023 +0300

    accel/habanalabs/gaudi2: unsecure tpc count registers
    
    [ Upstream commit 1e3a78270b4ec1c8c177eb310c08128d52137a69 ]
    
    As TPC kernels now must use those registers we unsecure them.
    
    Signed-off-by: Ofir Bitton <obitton@habana.ai>
    Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
    Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
accel/habanalabs: export dma-buf only if size/offset multiples of PAGE_SIZE [+ + +]
Author: Tomer Tayar <ttayar@habana.ai>
Date:   Wed Aug 9 16:14:49 2023 +0300

    accel/habanalabs: export dma-buf only if size/offset multiples of PAGE_SIZE
    
    [ Upstream commit 0b75cb5b240fddf181c284d415ee77ef61b418d6 ]
    
    It is currently allowed for a user to export dma-buf with size and
    offset that are not multiples of PAGE_SIZE.
    The exported memory is mapped for the importer device, and there it will
    be rounded to PAGE_SIZE, leading to actually exporting more than the
    user intended to.
    To make the user be aware of it, accept only size and offset which are
    multiple of PAGE_SIZE.
    
    Signed-off-by: Tomer Tayar <ttayar@habana.ai>
    Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
    Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

accel/habanalabs: fix bug in timestamp interrupt handling [+ + +]
Author: farah kassabri <fkassabri@habana.ai>
Date:   Thu Aug 24 15:45:21 2023 +0300

    accel/habanalabs: fix bug in timestamp interrupt handling
    
    [ Upstream commit 0165994c215f321e2d055368f89b424756e340eb ]
    
    There is a potential race between user thread seeking to re-use
    a timestamp record with new interrupt id, while this record is still
    in the middle of interrupt handling and it is about to be freed.
    Imagine the driver set the record in_use to 0 and only then fill the
    free_node information. This might lead to unpleasant scenario where
    the new registration thread detects the record as free to use, and
    change the cq buff address. That will cause the free_node to get
    the wrong buffer address to put refcount to.
    
    Signed-off-by: farah kassabri <fkassabri@habana.ai>
    Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
    Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

accel/habanalabs: fix debugfs files permissions [+ + +]
Author: Avri Kehat <akehat@habana.ai>
Date:   Tue Jan 16 17:54:36 2024 +0200

    accel/habanalabs: fix debugfs files permissions
    
    [ Upstream commit 0b105a2a7225f2736bd07aca0538cd67f09bfa20 ]
    
    debugfs files are created with permissions that don't align
    with the access requirements.
    
    Signed-off-by: Avri Kehat <akehat@habana.ai>
    Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
    Reviewed-by: Carl Vanderlip <quic_carlv@quicinc.com>
    Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ACPI: EC: Evaluate _REG outside the EC scope more carefully [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Mon Aug 12 15:16:21 2024 +0200

    ACPI: EC: Evaluate _REG outside the EC scope more carefully
    
    commit 71bf41b8e913ec9fc91f0d39ab8fb320229ec604 upstream.
    
    Commit 60fa6ae6e6d0 ("ACPI: EC: Install address space handler at the
    namespace root") caused _REG methods for EC operation regions outside
    the EC device scope to be evaluated which on some systems leads to the
    evaluation of _REG methods in the scopes of device objects representing
    devices that are not present and not functional according to the _STA
    return values. Some of those device objects represent EC "alternatives"
    and if _REG is evaluated for their operation regions, the platform
    firmware may be confused and the platform may start to behave
    incorrectly.
    
    To avoid this problem, only evaluate _REG for EC operation regions
    located in the scopes of device objects representing known-to-be-present
    devices.
    
    For this purpose, partially revert commit 60fa6ae6e6d0 and trigger the
    evaluation of _REG for EC operation regions from acpi_bus_attach() for
    the known-valid devices.
    
    Fixes: 60fa6ae6e6d0 ("ACPI: EC: Install address space handler at the namespace root")
    Link: https://lore.kernel.org/linux-acpi/1f76b7e2-1928-4598-8037-28a1785c2d13@redhat.com
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=2298938
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=2302253
    Reported-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Cc: All applicable <stable@vger.kernel.org>
    Link: https://patch.msgid.link/23612351.6Emhk5qWAg@rjwysocki.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ACPICA: Add a depth argument to acpi_execute_reg_methods() [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Mon Aug 12 15:11:42 2024 +0200

    ACPICA: Add a depth argument to acpi_execute_reg_methods()
    
    commit cdf65d73e001fde600b18d7e45afadf559425ce5 upstream.
    
    A subsequent change will need to pass a depth argument to
    acpi_execute_reg_methods(), so prepare that function for it.
    
    No intentional functional changes.
    
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Cc: All applicable <stable@vger.kernel.org>
    Link: https://patch.msgid.link/8451567.NyiUUSuA9g@rjwysocki.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
afs: fix __afs_break_callback() / afs_drop_open_mmap() race [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Sep 29 20:24:34 2023 -0400

    afs: fix __afs_break_callback() / afs_drop_open_mmap() race
    
    [ Upstream commit 275655d3207b9e65d1561bf21c06a622d9ec1d43 ]
    
    In __afs_break_callback() we might check ->cb_nr_mmap and if it's non-zero
    do queue_work(&vnode->cb_work).  In afs_drop_open_mmap() we decrement
    ->cb_nr_mmap and do flush_work(&vnode->cb_work) if it reaches zero.
    
    The trouble is, there's nothing to prevent __afs_break_callback() from
    seeing ->cb_nr_mmap before the decrement and do queue_work() after both
    the decrement and flush_work().  If that happens, we might be in trouble -
    vnode might get freed before the queued work runs.
    
    __afs_break_callback() is always done under ->cb_lock, so let's make
    sure that ->cb_nr_mmap can change from non-zero to zero while holding
    ->cb_lock (the spinlock component of it - it's a seqlock and we don't
    need to mess with the counter).
    
    Acked-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ALSA: hda/realtek: Fix noise from speakers on Lenovo IdeaPad 3 15IAU7 [+ + +]
Author: Parsa Poorshikhian <parsa.poorsh@gmail.com>
Date:   Sat Aug 10 18:39:06 2024 +0330

    ALSA: hda/realtek: Fix noise from speakers on Lenovo IdeaPad 3 15IAU7
    
    [ Upstream commit ef9718b3d54e822de294351251f3a574f8a082ce ]
    
    Fix noise from speakers connected to AUX port when no sound is playing.
    The problem occurs because the `alc_shutup_pins` function includes
    a 0x10ec0257 vendor ID, which causes noise on Lenovo IdeaPad 3 15IAU7 with
    Realtek ALC257 codec when no sound is playing.
    Removing this vendor ID from the function fixes the bug.
    
    Fixes: 70794b9563fe ("ALSA: hda/realtek: Add more codec ID to no shutup pins list")
    Signed-off-by: Parsa Poorshikhian <parsa.poorsh@gmail.com>
    Link: https://patch.msgid.link/20240810150939.330693-1-parsa.poorsh@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda/tas2781: fix wrong calibrated data order [+ + +]
Author: Baojun Xu <baojun.xu@ti.com>
Date:   Tue Aug 13 12:37:48 2024 +0800

    ALSA: hda/tas2781: fix wrong calibrated data order
    
    commit 3beddef84d90590270465a907de1cfe2539ac70d upstream.
    
    Wrong calibration data order cause sound too low in some device.
    Fix wrong calibrated data order, add calibration data converssion
    by get_unaligned_be32() after reading from UEFI.
    
    Fixes: 5be27f1e3ec9 ("ALSA: hda/tas2781: Add tas2781 HDA driver")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Baojun Xu <baojun.xu@ti.com>
    Link: https://patch.msgid.link/20240813043749.108-1-shenghao-ding@ti.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/tas2781: Use correct endian conversion [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Aug 14 12:04:59 2024 +0200

    ALSA: hda/tas2781: Use correct endian conversion
    
    [ Upstream commit 829e2a23121fb36ee30ea5145c2a85199f68e2c8 ]
    
    The data conversion is done rather by a wrong function.  We convert to
    BE32, not from BE32.  Although the end result must be same, this was
    complained by the compiler.
    
    Fix the code again and align with another similar function
    tas2563_apply_calib() that does already right.
    
    Fixes: 3beddef84d90 ("ALSA: hda/tas2781: fix wrong calibrated data order")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202408141630.DiDUB8Z4-lkp@intel.com/
    Link: https://patch.msgid.link/20240814100500.1944-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: timer: Relax start tick time check for slave timer elements [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Aug 10 10:48:32 2024 +0200

    ALSA: timer: Relax start tick time check for slave timer elements
    
    commit ccbfcac05866ebe6eb3bc6d07b51d4ed4fcde436 upstream.
    
    The recent addition of a sanity check for a too low start tick time
    seems breaking some applications that uses aloop with a certain slave
    timer setup.  They may have the initial resolution 0, hence it's
    treated as if it were a too low value.
    
    Relax and skip the check for the slave timer instance for addressing
    the regression.
    
    Fixes: 4a63bd179fa8 ("ALSA: timer: Set lower bound of start tick time")
    Cc: <stable@vger.kernel.org>
    Link: https://github.com/raspberrypi/linux/issues/6294
    Link: https://patch.msgid.link/20240810084833.10939-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: usb-audio: Add delay quirk for VIVO USB-C-XE710 HEADSET [+ + +]
Author: Lianqin Hu <hulianqin@vivo.com>
Date:   Sun Aug 11 08:30:11 2024 +0000

    ALSA: usb-audio: Add delay quirk for VIVO USB-C-XE710 HEADSET
    
    commit 004eb8ba776ccd3e296ea6f78f7ae7985b12824e upstream.
    
    Audio control requests that sets sampling frequency sometimes fail on
    this card. Adding delay between control messages eliminates that problem.
    
    Signed-off-by: Lianqin Hu <hulianqin@vivo.com>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/TYUPR06MB6217FF67076AF3E49E12C877D2842@TYUPR06MB6217.apcprd06.prod.outlook.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: usb-audio: Support Yamaha P-125 quirk entry [+ + +]
Author: Juan José Arboleda <soyjuanarbol@gmail.com>
Date:   Tue Aug 13 11:10:53 2024 -0500

    ALSA: usb-audio: Support Yamaha P-125 quirk entry
    
    commit c286f204ce6ba7b48e3dcba53eda7df8eaa64dd9 upstream.
    
    This patch adds a USB quirk for the Yamaha P-125 digital piano.
    
    Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20240813161053.70256-1-soyjuanarbol@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
arm64: ACPI: NUMA: initialize all values of acpi_early_node_map to NUMA_NO_NODE [+ + +]
Author: Haibo Xu <haibo1.xu@intel.com>
Date:   Mon Aug 5 11:30:24 2024 +0800

    arm64: ACPI: NUMA: initialize all values of acpi_early_node_map to NUMA_NO_NODE
    
    commit a21dcf0ea8566ebbe011c79d6ed08cdfea771de3 upstream.
    
    Currently, only acpi_early_node_map[0] was initialized to NUMA_NO_NODE.
    To ensure all the values were properly initialized, switch to initialize
    all of them to NUMA_NO_NODE.
    
    Fixes: e18962491696 ("arm64: numa: rework ACPI NUMA initialization")
    Cc: <stable@vger.kernel.org> # 4.19.x
    Reported-by: Andrew Jones <ajones@ventanamicro.com>
    Suggested-by: Andrew Jones <ajones@ventanamicro.com>
    Signed-off-by: Haibo Xu <haibo1.xu@intel.com>
    Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>
    Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Acked-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
    Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
    Link: https://lore.kernel.org/r/853d7f74aa243f6f5999e203246f0d1ae92d2b61.1722828421.git.haibo1.xu@intel.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

arm64: Fix KASAN random tag seed initialization [+ + +]
Author: Samuel Holland <samuel.holland@sifive.com>
Date:   Wed Aug 14 02:09:53 2024 -0700

    arm64: Fix KASAN random tag seed initialization
    
    [ Upstream commit f75c235565f90c4a17b125e47f1c68ef6b8c2bce ]
    
    Currently, kasan_init_sw_tags() is called before setup_per_cpu_areas(),
    so per_cpu(prng_state, cpu) accesses the same address regardless of the
    value of "cpu", and the same seed value gets copied to the percpu area
    for every CPU. Fix this by moving the call to smp_prepare_boot_cpu(),
    which is the first architecture hook after setup_per_cpu_areas().
    
    Fixes: 3c9e3aa11094 ("kasan: add tag related helper functions")
    Fixes: 3f41b6093823 ("kasan: fix random seed generation for tag-based mode")
    Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
    Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com>
    Link: https://lore.kernel.org/r/20240814091005.969756-1-samuel.holland@sifive.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ASoC: cs35l45: Checks index of cs35l45_irqs[] [+ + +]
Author: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
Date:   Thu Aug 31 11:20:39 2023 -0500

    ASoC: cs35l45: Checks index of cs35l45_irqs[]
    
    [ Upstream commit 44f37b6ce041c838cb2f49f08998c41f1ab3b08c ]
    
    Checks the index computed by the virq offset before printing the
    error condition in cs35l45_spk_safe_err() handler.
    
    Signed-off-by: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
    Signed-off-by: Vlad Karpovich <vkarpovi@opensource.cirrus.com>
    Acked-by: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
    Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20230831162042.471801-1-vkarpovi@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: SOF: Intel: hda-dsp: Make sure that no irq handler is pending before suspend [+ + +]
Author: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Date:   Thu Oct 12 15:18:48 2023 -0400

    ASoC: SOF: Intel: hda-dsp: Make sure that no irq handler is pending before suspend
    
    [ Upstream commit 576a0b71b5b479008dacb3047a346625040f5ac6 ]
    
    In the existing IPC support, the reply to each IPC message is handled in
    an IRQ thread. The assumption is that the IRQ thread is scheduled without
    significant delays.
    
    On an experimental (iow, buggy) kernel, the IRQ thread dealing with the
    reply to the last IPC message before powering-down the DSP can be delayed
    by several seconds. The IRQ thread will proceed with register accesses
    after the DSP is powered-down which results in a kernel crash.
    
    While the bug which causes the delay is not in the audio stack, we must
    handle such cases with defensive programming to avoid such crashes.
    
    Call synchronize_irq() before proceeding to power down the DSP to make
    sure that no irq thread is pending execution.
    
    Closes: https://github.com/thesofproject/linux/issues/4608
    Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20231012191850.147140-3-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: SOF: ipc4: check return value of snd_sof_ipc_msg_data [+ + +]
Author: Bard Liao <yung-chuan.liao@linux.intel.com>
Date:   Wed Nov 29 14:20:21 2023 +0200

    ASoC: SOF: ipc4: check return value of snd_sof_ipc_msg_data
    
    [ Upstream commit 2bd512626f8ea3957c981cadd2ebf75feff737dd ]
    
    snd_sof_ipc_msg_data could return error.
    
    Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Link: https://lore.kernel.org/r/20231129122021.679-1-peter.ujfalusi@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
atm: idt77252: prevent use after free in dequeue_rx() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Fri Aug 9 15:28:19 2024 +0300

    atm: idt77252: prevent use after free in dequeue_rx()
    
    [ Upstream commit a9a18e8f770c9b0703dab93580d0b02e199a4c79 ]
    
    We can't dereference "skb" after calling vcc->push() because the skb
    is released.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
binfmt_misc: cleanup on filesystem umount [+ + +]
Author: Christian Brauner <brauner@kernel.org>
Date:   Thu Oct 28 12:31:13 2021 +0200

    binfmt_misc: cleanup on filesystem umount
    
    [ Upstream commit 1c5976ef0f7ad76319df748ccb99a4c7ba2ba464 ]
    
    Currently, registering a new binary type pins the binfmt_misc
    filesystem. Specifically, this means that as long as there is at least
    one binary type registered the binfmt_misc filesystem survives all
    umounts, i.e. the superblock is not destroyed. Meaning that a umount
    followed by another mount will end up with the same superblock and the
    same binary type handlers. This is a behavior we tend to discourage for
    any new filesystems (apart from a few special filesystems such as e.g.
    configfs or debugfs). A umount operation without the filesystem being
    pinned - by e.g. someone holding a file descriptor to an open file -
    should usually result in the destruction of the superblock and all
    associated resources. This makes introspection easier and leads to
    clearly defined, simple and clean semantics. An administrator can rely
    on the fact that a umount will guarantee a clean slate making it
    possible to reinitialize a filesystem. Right now all binary types would
    need to be explicitly deleted before that can happen.
    
    This allows us to remove the heavy-handed calls to simple_pin_fs() and
    simple_release_fs() when creating and deleting binary types. This in
    turn allows us to replace the current brittle pinning mechanism abusing
    dget() which has caused a range of bugs judging from prior fixes in [2]
    and [3]. The additional dget() in load_misc_binary() pins the dentry but
    only does so for the sake to prevent ->evict_inode() from freeing the
    node when a user removes the binary type and kill_node() is run. Which
    would mean ->interpreter and ->interp_file would be freed causing a UAF.
    
    This isn't really nicely documented nor is it very clean because it
    relies on simple_pin_fs() pinning the filesystem as long as at least one
    binary type exists. Otherwise it would cause load_misc_binary() to hold
    on to a dentry belonging to a superblock that has been shutdown.
    Replace that implicit pinning with a clean and simple per-node refcount
    and get rid of the ugly dget() pinning. A similar mechanism exists for
    e.g. binderfs (cf. [4]). All the cleanup work can now be done in
    ->evict_inode().
    
    In a follow-up patch we will make it possible to use binfmt_misc in
    sandboxes. We will use the cleaner semantics where a umount for the
    filesystem will cause the superblock and all resources to be
    deallocated. In preparation for this apply the same semantics to the
    initial binfmt_misc mount. Note, that this is a user-visible change and
    as such a uapi change but one that we can reasonably risk. We've
    discussed this in earlier versions of this patchset (cf. [1]).
    
    The main user and provider of binfmt_misc is systemd. Systemd provides
    binfmt_misc via autofs since it is configurable as a kernel module and
    is used by a few exotic packages and users. As such a binfmt_misc mount
    is triggered when /proc/sys/fs/binfmt_misc is accessed and is only
    provided on demand. Other autofs on demand filesystems include EFI ESP
    which systemd umounts if the mountpoint stays idle for a certain amount
    of time. This doesn't apply to the binfmt_misc autofs mount which isn't
    touched once it is mounted meaning this change can't accidently wipe
    binary type handlers without someone having explicitly unmounted
    binfmt_misc. After speaking to systemd folks they don't expect this
    change to affect them.
    
    In line with our general policy, if we see a regression for systemd or
    other users with this change we will switch back to the old behavior for
    the initial binfmt_misc mount and have binary types pin the filesystem
    again. But while we touch this code let's take the chance and let's
    improve on the status quo.
    
    [1]: https://lore.kernel.org/r/20191216091220.465626-2-laurent@vivier.eu
    [2]: commit 43a4f2619038 ("exec: binfmt_misc: fix race between load_misc_binary() and kill_node()"
    [3]: commit 83f918274e4b ("exec: binfmt_misc: shift filp_close(interp_file) from kill_node() to bm_evict_inode()")
    [4]: commit f0fe2c0f050d ("binder: prevent UAF for binderfs devices II")
    
    Link: https://lore.kernel.org/r/20211028103114.2849140-1-brauner@kernel.org (v1)
    Cc: Sargun Dhillon <sargun@sargun.me>
    Cc: Serge Hallyn <serge@hallyn.com>
    Cc: Jann Horn <jannh@google.com>
    Cc: Henning Schild <henning.schild@siemens.com>
    Cc: Andrei Vagin <avagin@gmail.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Laurent Vivier <laurent@vivier.eu>
    Cc: linux-fsdevel@vger.kernel.org
    Acked-by: Serge Hallyn <serge@hallyn.com>
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bitmap: introduce generic optimized bitmap_size() [+ + +]
Author: Alexander Lobakin <aleksander.lobakin@intel.com>
Date:   Wed Mar 27 16:23:49 2024 +0100

    bitmap: introduce generic optimized bitmap_size()
    
    commit a37fbe666c016fd89e4460d0ebfcea05baba46dc upstream.
    
    The number of times yet another open coded
    `BITS_TO_LONGS(nbits) * sizeof(long)` can be spotted is huge.
    Some generic helper is long overdue.
    
    Add one, bitmap_size(), but with one detail.
    BITS_TO_LONGS() uses DIV_ROUND_UP(). The latter works well when both
    divident and divisor are compile-time constants or when the divisor
    is not a pow-of-2. When it is however, the compilers sometimes tend
    to generate suboptimal code (GCC 13):
    
    48 83 c0 3f             add    $0x3f,%rax
    48 c1 e8 06             shr    $0x6,%rax
    48 8d 14 c5 00 00 00 00 lea    0x0(,%rax,8),%rdx
    
    %BITS_PER_LONG is always a pow-2 (either 32 or 64), but GCC still does
    full division of `nbits + 63` by it and then multiplication by 8.
    Instead of BITS_TO_LONGS(), use ALIGN() and then divide by 8. GCC:
    
    8d 50 3f                lea    0x3f(%rax),%edx
    c1 ea 03                shr    $0x3,%edx
    81 e2 f8 ff ff 1f       and    $0x1ffffff8,%edx
    
    Now it shifts `nbits + 63` by 3 positions (IOW performs fast division
    by 8) and then masks bits[2:0]. bloat-o-meter:
    
    add/remove: 0/0 grow/shrink: 20/133 up/down: 156/-773 (-617)
    
    Clang does it better and generates the same code before/after starting
    from -O1, except that with the ALIGN() approach it uses %edx and thus
    still saves some bytes:
    
    add/remove: 0/0 grow/shrink: 9/133 up/down: 18/-538 (-520)
    
    Note that we can't expand DIV_ROUND_UP() by adding a check and using
    this approach there, as it's used in array declarations where
    expressions are not allowed.
    Add this helper to tools/ as well.
    
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Acked-by: Yury Norov <yury.norov@gmail.com>
    Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
block: Fix lockdep warning in blk_mq_mark_tag_wait [+ + +]
Author: Li Lingfeng <lilingfeng3@huawei.com>
Date:   Thu Aug 15 10:47:36 2024 +0800

    block: Fix lockdep warning in blk_mq_mark_tag_wait
    
    [ Upstream commit b313a8c835516bdda85025500be866ac8a74e022 ]
    
    Lockdep reported a warning in Linux version 6.6:
    
    [  414.344659] ================================
    [  414.345155] WARNING: inconsistent lock state
    [  414.345658] 6.6.0-07439-gba2303cacfda #6 Not tainted
    [  414.346221] --------------------------------
    [  414.346712] inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
    [  414.347545] kworker/u10:3/1152 [HC0[0]:SC0[0]:HE0:SE1] takes:
    [  414.349245] ffff88810edd1098 (&sbq->ws[i].wait){+.?.}-{2:2}, at: blk_mq_dispatch_rq_list+0x131c/0x1ee0
    [  414.351204] {IN-SOFTIRQ-W} state was registered at:
    [  414.351751]   lock_acquire+0x18d/0x460
    [  414.352218]   _raw_spin_lock_irqsave+0x39/0x60
    [  414.352769]   __wake_up_common_lock+0x22/0x60
    [  414.353289]   sbitmap_queue_wake_up+0x375/0x4f0
    [  414.353829]   sbitmap_queue_clear+0xdd/0x270
    [  414.354338]   blk_mq_put_tag+0xdf/0x170
    [  414.354807]   __blk_mq_free_request+0x381/0x4d0
    [  414.355335]   blk_mq_free_request+0x28b/0x3e0
    [  414.355847]   __blk_mq_end_request+0x242/0xc30
    [  414.356367]   scsi_end_request+0x2c1/0x830
    [  414.345155] WARNING: inconsistent lock state
    [  414.345658] 6.6.0-07439-gba2303cacfda #6 Not tainted
    [  414.346221] --------------------------------
    [  414.346712] inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
    [  414.347545] kworker/u10:3/1152 [HC0[0]:SC0[0]:HE0:SE1] takes:
    [  414.349245] ffff88810edd1098 (&sbq->ws[i].wait){+.?.}-{2:2}, at: blk_mq_dispatch_rq_list+0x131c/0x1ee0
    [  414.351204] {IN-SOFTIRQ-W} state was registered at:
    [  414.351751]   lock_acquire+0x18d/0x460
    [  414.352218]   _raw_spin_lock_irqsave+0x39/0x60
    [  414.352769]   __wake_up_common_lock+0x22/0x60
    [  414.353289]   sbitmap_queue_wake_up+0x375/0x4f0
    [  414.353829]   sbitmap_queue_clear+0xdd/0x270
    [  414.354338]   blk_mq_put_tag+0xdf/0x170
    [  414.354807]   __blk_mq_free_request+0x381/0x4d0
    [  414.355335]   blk_mq_free_request+0x28b/0x3e0
    [  414.355847]   __blk_mq_end_request+0x242/0xc30
    [  414.356367]   scsi_end_request+0x2c1/0x830
    [  414.356863]   scsi_io_completion+0x177/0x1610
    [  414.357379]   scsi_complete+0x12f/0x260
    [  414.357856]   blk_complete_reqs+0xba/0xf0
    [  414.358338]   __do_softirq+0x1b0/0x7a2
    [  414.358796]   irq_exit_rcu+0x14b/0x1a0
    [  414.359262]   sysvec_call_function_single+0xaf/0xc0
    [  414.359828]   asm_sysvec_call_function_single+0x1a/0x20
    [  414.360426]   default_idle+0x1e/0x30
    [  414.360873]   default_idle_call+0x9b/0x1f0
    [  414.361390]   do_idle+0x2d2/0x3e0
    [  414.361819]   cpu_startup_entry+0x55/0x60
    [  414.362314]   start_secondary+0x235/0x2b0
    [  414.362809]   secondary_startup_64_no_verify+0x18f/0x19b
    [  414.363413] irq event stamp: 428794
    [  414.363825] hardirqs last  enabled at (428793): [<ffffffff816bfd1c>] ktime_get+0x1dc/0x200
    [  414.364694] hardirqs last disabled at (428794): [<ffffffff85470177>] _raw_spin_lock_irq+0x47/0x50
    [  414.365629] softirqs last  enabled at (428444): [<ffffffff85474780>] __do_softirq+0x540/0x7a2
    [  414.366522] softirqs last disabled at (428419): [<ffffffff813f65ab>] irq_exit_rcu+0x14b/0x1a0
    [  414.367425]
                   other info that might help us debug this:
    [  414.368194]  Possible unsafe locking scenario:
    [  414.368900]        CPU0
    [  414.369225]        ----
    [  414.369548]   lock(&sbq->ws[i].wait);
    [  414.370000]   <Interrupt>
    [  414.370342]     lock(&sbq->ws[i].wait);
    [  414.370802]
                    *** DEADLOCK ***
    [  414.371569] 5 locks held by kworker/u10:3/1152:
    [  414.372088]  #0: ffff88810130e938 ((wq_completion)writeback){+.+.}-{0:0}, at: process_scheduled_works+0x357/0x13f0
    [  414.373180]  #1: ffff88810201fdb8 ((work_completion)(&(&wb->dwork)->work)){+.+.}-{0:0}, at: process_scheduled_works+0x3a3/0x13f0
    [  414.374384]  #2: ffffffff86ffbdc0 (rcu_read_lock){....}-{1:2}, at: blk_mq_run_hw_queue+0x637/0xa00
    [  414.375342]  #3: ffff88810edd1098 (&sbq->ws[i].wait){+.?.}-{2:2}, at: blk_mq_dispatch_rq_list+0x131c/0x1ee0
    [  414.376377]  #4: ffff888106205a08 (&hctx->dispatch_wait_lock){+.-.}-{2:2}, at: blk_mq_dispatch_rq_list+0x1337/0x1ee0
    [  414.378607]
                   stack backtrace:
    [  414.379177] CPU: 0 PID: 1152 Comm: kworker/u10:3 Not tainted 6.6.0-07439-gba2303cacfda #6
    [  414.380032] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
    [  414.381177] Workqueue: writeback wb_workfn (flush-253:0)
    [  414.381805] Call Trace:
    [  414.382136]  <TASK>
    [  414.382429]  dump_stack_lvl+0x91/0xf0
    [  414.382884]  mark_lock_irq+0xb3b/0x1260
    [  414.383367]  ? __pfx_mark_lock_irq+0x10/0x10
    [  414.383889]  ? stack_trace_save+0x8e/0xc0
    [  414.384373]  ? __pfx_stack_trace_save+0x10/0x10
    [  414.384903]  ? graph_lock+0xcf/0x410
    [  414.385350]  ? save_trace+0x3d/0xc70
    [  414.385808]  mark_lock.part.20+0x56d/0xa90
    [  414.386317]  mark_held_locks+0xb0/0x110
    [  414.386791]  ? __pfx_do_raw_spin_lock+0x10/0x10
    [  414.387320]  lockdep_hardirqs_on_prepare+0x297/0x3f0
    [  414.387901]  ? _raw_spin_unlock_irq+0x28/0x50
    [  414.388422]  trace_hardirqs_on+0x58/0x100
    [  414.388917]  _raw_spin_unlock_irq+0x28/0x50
    [  414.389422]  __blk_mq_tag_busy+0x1d6/0x2a0
    [  414.389920]  __blk_mq_get_driver_tag+0x761/0x9f0
    [  414.390899]  blk_mq_dispatch_rq_list+0x1780/0x1ee0
    [  414.391473]  ? __pfx_blk_mq_dispatch_rq_list+0x10/0x10
    [  414.392070]  ? sbitmap_get+0x2b8/0x450
    [  414.392533]  ? __blk_mq_get_driver_tag+0x210/0x9f0
    [  414.393095]  __blk_mq_sched_dispatch_requests+0xd99/0x1690
    [  414.393730]  ? elv_attempt_insert_merge+0x1b1/0x420
    [  414.394302]  ? __pfx___blk_mq_sched_dispatch_requests+0x10/0x10
    [  414.394970]  ? lock_acquire+0x18d/0x460
    [  414.395456]  ? blk_mq_run_hw_queue+0x637/0xa00
    [  414.395986]  ? __pfx_lock_acquire+0x10/0x10
    [  414.396499]  blk_mq_sched_dispatch_requests+0x109/0x190
    [  414.397100]  blk_mq_run_hw_queue+0x66e/0xa00
    [  414.397616]  blk_mq_flush_plug_list.part.17+0x614/0x2030
    [  414.398244]  ? __pfx_blk_mq_flush_plug_list.part.17+0x10/0x10
    [  414.398897]  ? writeback_sb_inodes+0x241/0xcc0
    [  414.399429]  blk_mq_flush_plug_list+0x65/0x80
    [  414.399957]  __blk_flush_plug+0x2f1/0x530
    [  414.400458]  ? __pfx___blk_flush_plug+0x10/0x10
    [  414.400999]  blk_finish_plug+0x59/0xa0
    [  414.401467]  wb_writeback+0x7cc/0x920
    [  414.401935]  ? __pfx_wb_writeback+0x10/0x10
    [  414.402442]  ? mark_held_locks+0xb0/0x110
    [  414.402931]  ? __pfx_do_raw_spin_lock+0x10/0x10
    [  414.403462]  ? lockdep_hardirqs_on_prepare+0x297/0x3f0
    [  414.404062]  wb_workfn+0x2b3/0xcf0
    [  414.404500]  ? __pfx_wb_workfn+0x10/0x10
    [  414.404989]  process_scheduled_works+0x432/0x13f0
    [  414.405546]  ? __pfx_process_scheduled_works+0x10/0x10
    [  414.406139]  ? do_raw_spin_lock+0x101/0x2a0
    [  414.406641]  ? assign_work+0x19b/0x240
    [  414.407106]  ? lock_is_held_type+0x9d/0x110
    [  414.407604]  worker_thread+0x6f2/0x1160
    [  414.408075]  ? __kthread_parkme+0x62/0x210
    [  414.408572]  ? lockdep_hardirqs_on_prepare+0x297/0x3f0
    [  414.409168]  ? __kthread_parkme+0x13c/0x210
    [  414.409678]  ? __pfx_worker_thread+0x10/0x10
    [  414.410191]  kthread+0x33c/0x440
    [  414.410602]  ? __pfx_kthread+0x10/0x10
    [  414.411068]  ret_from_fork+0x4d/0x80
    [  414.411526]  ? __pfx_kthread+0x10/0x10
    [  414.411993]  ret_from_fork_asm+0x1b/0x30
    [  414.412489]  </TASK>
    
    When interrupt is turned on while a lock holding by spin_lock_irq it
    throws a warning because of potential deadlock.
    
    blk_mq_prep_dispatch_rq
     blk_mq_get_driver_tag
      __blk_mq_get_driver_tag
       __blk_mq_alloc_driver_tag
        blk_mq_tag_busy -> tag is already busy
        // failed to get driver tag
     blk_mq_mark_tag_wait
      spin_lock_irq(&wq->lock) -> lock A (&sbq->ws[i].wait)
      __add_wait_queue(wq, wait) -> wait queue active
      blk_mq_get_driver_tag
      __blk_mq_tag_busy
    -> 1) tag must be idle, which means there can't be inflight IO
       spin_lock_irq(&tags->lock) -> lock B (hctx->tags)
       spin_unlock_irq(&tags->lock) -> unlock B, turn on interrupt accidentally
    -> 2) context must be preempt by IO interrupt to trigger deadlock.
    
    As shown above, the deadlock is not possible in theory, but the warning
    still need to be fixed.
    
    Fix it by using spin_lock_irqsave to get lockB instead of spin_lock_irq.
    
    Fixes: 4f1731df60f9 ("blk-mq: fix potential io hang by wrong 'wake_batch'")
    Signed-off-by: Li Lingfeng <lilingfeng3@huawei.com>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Reviewed-by: Yu Kuai <yukuai3@huawei.com>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Link: https://lore.kernel.org/r/20240815024736.2040971-1-lilingfeng@huaweicloud.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Bluetooth: bnep: Fix out-of-bound access [+ + +]
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date:   Wed Feb 28 12:11:08 2024 -0500

    Bluetooth: bnep: Fix out-of-bound access
    
    [ Upstream commit 0f0639b4d6f649338ce29c62da3ec0787fa08cd1 ]
    
    This fixes attempting to access past ethhdr.h_source, although it seems
    intentional to copy also the contents of h_proto this triggers
    out-of-bound access problems with the likes of static analyzer, so this
    instead just copy ETH_ALEN and then proceed to use put_unaligned to copy
    h_proto separetely.
    
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: hci_conn: Check non NULL function before calling for HFP offload [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Fri Dec 8 09:51:26 2023 +0800

    Bluetooth: hci_conn: Check non NULL function before calling for HFP offload
    
    [ Upstream commit 132d0fd0b8418094c9e269e5bc33bf5b864f4a65 ]
    
    For some controllers such as QCA2066, it does not need to send
    HCI_Configure_Data_Path to configure non-HCI data transport path to support
    HFP offload, their device drivers may set hdev->get_codec_config_data as
    NULL, so Explicitly add this non NULL checking before calling the function.
    
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: hci_core: Fix LE quote calculation [+ + +]
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date:   Mon Aug 12 11:22:08 2024 -0400

    Bluetooth: hci_core: Fix LE quote calculation
    
    [ Upstream commit 932021a11805b9da4bd6abf66fe233cccd59fe0e ]
    
    Function hci_sched_le needs to update the respective counter variable
    inplace other the likes of hci_quote_sent would attempt to use the
    possible outdated value of conn->{le_cnt,acl_cnt}.
    
    Link: https://github.com/bluez/bluez/issues/915
    Fixes: 73d80deb7bdf ("Bluetooth: prioritizing data over HCI")
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: MGMT: Add error handling to pair_device() [+ + +]
Author: Griffin Kroah-Hartman <griffin@kroah.com>
Date:   Thu Aug 15 13:51:00 2024 +0200

    Bluetooth: MGMT: Add error handling to pair_device()
    
    commit 538fd3921afac97158d4177139a0ad39f056dbb2 upstream.
    
    hci_conn_params_add() never checks for a NULL value and could lead to a NULL
    pointer dereference causing a crash.
    
    Fixed by adding error handling in the function.
    
    Cc: Stable <stable@kernel.org>
    Fixes: 5157b8a503fa ("Bluetooth: Fix initializing conn_params in scan phase")
    Signed-off-by: Griffin Kroah-Hartman <griffin@kroah.com>
    Reported-by: Yiwei Zhang <zhan4630@purdue.edu>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bluetooth: SMP: Fix assumption of Central always being Initiator [+ + +]
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date:   Wed Aug 30 15:08:06 2023 -0700

    Bluetooth: SMP: Fix assumption of Central always being Initiator
    
    [ Upstream commit 28cd47f75185c4818b0fb1b46f2f02faaba96376 ]
    
    SMP initiator role shall be considered the one that initiates the
    pairing procedure with SMP_CMD_PAIRING_REQ:
    
    BLUETOOTH CORE SPECIFICATION Version 5.3 | Vol 3, Part H
    page 1557:
    
    Figure 2.1: LE pairing phases
    
    Note that by sending SMP_CMD_SECURITY_REQ it doesn't change the role to
    be Initiator.
    
    Link: https://github.com/bluez/bluez/issues/567
    Fixes: b28b4943660f ("Bluetooth: Add strict checks for allowed SMP PDUs")
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bnxt_en: Fix double DMA unmapping for XDP_REDIRECT [+ + +]
Author: Somnath Kotur <somnath.kotur@broadcom.com>
Date:   Tue Aug 20 13:34:15 2024 -0700

    bnxt_en: Fix double DMA unmapping for XDP_REDIRECT
    
    [ Upstream commit 8baeef7616d5194045c5a6b97fd1246b87c55b13 ]
    
    Remove the dma_unmap_page_attrs() call in the driver's XDP_REDIRECT
    code path.  This should have been removed when we let the page pool
    handle the DMA mapping.  This bug causes the warning:
    
    WARNING: CPU: 7 PID: 59 at drivers/iommu/dma-iommu.c:1198 iommu_dma_unmap_page+0xd5/0x100
    CPU: 7 PID: 59 Comm: ksoftirqd/7 Tainted: G        W          6.8.0-1010-gcp #11-Ubuntu
    Hardware name: Dell Inc. PowerEdge R7525/0PYVT1, BIOS 2.15.2 04/02/2024
    RIP: 0010:iommu_dma_unmap_page+0xd5/0x100
    Code: 89 ee 48 89 df e8 cb f2 69 ff 48 83 c4 08 5b 41 5c 41 5d 41 5e 41 5f 5d 31 c0 31 d2 31 c9 31 f6 31 ff 45 31 c0 e9 ab 17 71 00 <0f> 0b 48 83 c4 08 5b 41 5c 41 5d 41 5e 41 5f 5d 31 c0 31 d2 31 c9
    RSP: 0018:ffffab1fc0597a48 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: ffff99ff838280c8 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: ffffab1fc0597a78 R08: 0000000000000002 R09: ffffab1fc0597c1c
    R10: ffffab1fc0597cd3 R11: ffff99ffe375acd8 R12: 00000000e65b9000
    R13: 0000000000000050 R14: 0000000000001000 R15: 0000000000000002
    FS:  0000000000000000(0000) GS:ffff9a06efb80000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000565c34c37210 CR3: 00000005c7e3e000 CR4: 0000000000350ef0
    ? show_regs+0x6d/0x80
    ? __warn+0x89/0x150
    ? iommu_dma_unmap_page+0xd5/0x100
    ? report_bug+0x16a/0x190
    ? handle_bug+0x51/0xa0
    ? exc_invalid_op+0x18/0x80
    ? iommu_dma_unmap_page+0xd5/0x100
    ? iommu_dma_unmap_page+0x35/0x100
    dma_unmap_page_attrs+0x55/0x220
    ? bpf_prog_4d7e87c0d30db711_xdp_dispatcher+0x64/0x9f
    bnxt_rx_xdp+0x237/0x520 [bnxt_en]
    bnxt_rx_pkt+0x640/0xdd0 [bnxt_en]
    __bnxt_poll_work+0x1a1/0x3d0 [bnxt_en]
    bnxt_poll+0xaa/0x1e0 [bnxt_en]
    __napi_poll+0x33/0x1e0
    net_rx_action+0x18a/0x2f0
    
    Fixes: 578fcfd26e2a ("bnxt_en: Let the page pool manage the DMA mapping")
    Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com>
    Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
    Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://patch.msgid.link/20240820203415.168178-1-michael.chan@broadcom.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bonding: fix bond_ipsec_offload_ok return type [+ + +]
Author: Nikolay Aleksandrov <razor@blackwall.org>
Date:   Fri Aug 16 14:48:10 2024 +0300

    bonding: fix bond_ipsec_offload_ok return type
    
    [ Upstream commit fc59b9a5f7201b9f7272944596113a82cc7773d5 ]
    
    Fix the return type which should be bool.
    
    Fixes: 955b785ec6b3 ("bonding: fix suspicious RCU usage in bond_ipsec_offload_ok()")
    Signed-off-by: Nikolay Aleksandrov <razor@blackwall.org>
    Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bonding: fix null pointer deref in bond_ipsec_offload_ok [+ + +]
Author: Nikolay Aleksandrov <razor@blackwall.org>
Date:   Fri Aug 16 14:48:11 2024 +0300

    bonding: fix null pointer deref in bond_ipsec_offload_ok
    
    [ Upstream commit 95c90e4ad89d493a7a14fa200082e466e2548f9d ]
    
    We must check if there is an active slave before dereferencing the pointer.
    
    Fixes: 18cb261afd7b ("bonding: support hardware encryption offload to slaves")
    Signed-off-by: Nikolay Aleksandrov <razor@blackwall.org>
    Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bonding: fix xfrm real_dev null pointer dereference [+ + +]
Author: Nikolay Aleksandrov <razor@blackwall.org>
Date:   Fri Aug 16 14:48:12 2024 +0300

    bonding: fix xfrm real_dev null pointer dereference
    
    [ Upstream commit f8cde9805981c50d0c029063dc7d82821806fc44 ]
    
    We shouldn't set real_dev to NULL because packets can be in transit and
    xfrm might call xdo_dev_offload_ok() in parallel. All callbacks assume
    real_dev is set.
    
     Example trace:
     kernel: BUG: unable to handle page fault for address: 0000000000001030
     kernel: bond0: (slave eni0np1): making interface the new active one
     kernel: #PF: supervisor write access in kernel mode
     kernel: #PF: error_code(0x0002) - not-present page
     kernel: PGD 0 P4D 0
     kernel: Oops: 0002 [#1] PREEMPT SMP
     kernel: CPU: 4 PID: 2237 Comm: ping Not tainted 6.7.7+ #12
     kernel: Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-2.fc40 04/01/2014
     kernel: RIP: 0010:nsim_ipsec_offload_ok+0xc/0x20 [netdevsim]
     kernel: bond0: (slave eni0np1): bond_ipsec_add_sa_all: failed to add SA
     kernel: Code: e0 0f 0b 48 83 7f 38 00 74 de 0f 0b 48 8b 47 08 48 8b 37 48 8b 78 40 e9 b2 e5 9a d7 66 90 0f 1f 44 00 00 48 8b 86 80 02 00 00 <83> 80 30 10 00 00 01 b8 01 00 00 00 c3 0f 1f 80 00 00 00 00 0f 1f
     kernel: bond0: (slave eni0np1): making interface the new active one
     kernel: RSP: 0018:ffffabde81553b98 EFLAGS: 00010246
     kernel: bond0: (slave eni0np1): bond_ipsec_add_sa_all: failed to add SA
     kernel:
     kernel: RAX: 0000000000000000 RBX: ffff9eb404e74900 RCX: ffff9eb403d97c60
     kernel: RDX: ffffffffc090de10 RSI: ffff9eb404e74900 RDI: ffff9eb3c5de9e00
     kernel: RBP: ffff9eb3c0a42000 R08: 0000000000000010 R09: 0000000000000014
     kernel: R10: 7974203030303030 R11: 3030303030303030 R12: 0000000000000000
     kernel: R13: ffff9eb3c5de9e00 R14: ffffabde81553cc8 R15: ffff9eb404c53000
     kernel: FS:  00007f2a77a3ad00(0000) GS:ffff9eb43bd00000(0000) knlGS:0000000000000000
     kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     kernel: CR2: 0000000000001030 CR3: 00000001122ab000 CR4: 0000000000350ef0
     kernel: bond0: (slave eni0np1): making interface the new active one
     kernel: Call Trace:
     kernel:  <TASK>
     kernel:  ? __die+0x1f/0x60
     kernel: bond0: (slave eni0np1): bond_ipsec_add_sa_all: failed to add SA
     kernel:  ? page_fault_oops+0x142/0x4c0
     kernel:  ? do_user_addr_fault+0x65/0x670
     kernel:  ? kvm_read_and_reset_apf_flags+0x3b/0x50
     kernel: bond0: (slave eni0np1): making interface the new active one
     kernel:  ? exc_page_fault+0x7b/0x180
     kernel:  ? asm_exc_page_fault+0x22/0x30
     kernel:  ? nsim_bpf_uninit+0x50/0x50 [netdevsim]
     kernel: bond0: (slave eni0np1): bond_ipsec_add_sa_all: failed to add SA
     kernel:  ? nsim_ipsec_offload_ok+0xc/0x20 [netdevsim]
     kernel: bond0: (slave eni0np1): making interface the new active one
     kernel:  bond_ipsec_offload_ok+0x7b/0x90 [bonding]
     kernel:  xfrm_output+0x61/0x3b0
     kernel: bond0: (slave eni0np1): bond_ipsec_add_sa_all: failed to add SA
     kernel:  ip_push_pending_frames+0x56/0x80
    
    Fixes: 18cb261afd7b ("bonding: support hardware encryption offload to slaves")
    Signed-off-by: Nikolay Aleksandrov <razor@blackwall.org>
    Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bonding: fix xfrm state handling when clearing active slave [+ + +]
Author: Nikolay Aleksandrov <razor@blackwall.org>
Date:   Fri Aug 16 14:48:13 2024 +0300

    bonding: fix xfrm state handling when clearing active slave
    
    [ Upstream commit c4c5c5d2ef40a9f67a9241dc5422eac9ffe19547 ]
    
    If the active slave is cleared manually the xfrm state is not flushed.
    This leads to xfrm add/del imbalance and adding the same state multiple
    times. For example when the device cannot handle anymore states we get:
     [ 1169.884811] bond0: (slave eni0np1): bond_ipsec_add_sa_all: failed to add SA
    because it's filled with the same state after multiple active slave
    clearings. This change also has a few nice side effects: user-space
    gets a notification for the change, the old device gets its mac address
    and promisc/mcast adjusted properly.
    
    Fixes: 18cb261afd7b ("bonding: support hardware encryption offload to slaves")
    Signed-off-by: Nikolay Aleksandrov <razor@blackwall.org>
    Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpf: Fix a kernel verifier crash in stacksafe() [+ + +]
Author: Yonghong Song <yonghong.song@linux.dev>
Date:   Mon Aug 12 14:48:47 2024 -0700

    bpf: Fix a kernel verifier crash in stacksafe()
    
    commit bed2eb964c70b780fb55925892a74f26cb590b25 upstream.
    
    Daniel Hodges reported a kernel verifier crash when playing with sched-ext.
    Further investigation shows that the crash is due to invalid memory access
    in stacksafe(). More specifically, it is the following code:
    
        if (exact != NOT_EXACT &&
            old->stack[spi].slot_type[i % BPF_REG_SIZE] !=
            cur->stack[spi].slot_type[i % BPF_REG_SIZE])
                return false;
    
    The 'i' iterates old->allocated_stack.
    If cur->allocated_stack < old->allocated_stack the out-of-bound
    access will happen.
    
    To fix the issue add 'i >= cur->allocated_stack' check such that if
    the condition is true, stacksafe() should fail. Otherwise,
    cur->stack[spi].slot_type[i % BPF_REG_SIZE] memory access is legal.
    
    Fixes: 2793a8b015f7 ("bpf: exact states comparison for iterator convergence checks")
    Cc: Eduard Zingerman <eddyz87@gmail.com>
    Reported-by: Daniel Hodges <hodgesd@meta.com>
    Acked-by: Eduard Zingerman <eddyz87@gmail.com>
    Signed-off-by: Yonghong Song <yonghong.song@linux.dev>
    Link: https://lore.kernel.org/r/20240812214847.213612-1-yonghong.song@linux.dev
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    [ shung-hsi.yu: "exact" variable is bool instead enum because commit
      4f81c16f50ba ("bpf: Recognize that two registers are safe when their
      ranges match") is not present. ]
    Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

bpf: Fix updating attached freplace prog in prog_array map [+ + +]
Author: Leon Hwang <leon.hwang@linux.dev>
Date:   Sun Jul 28 19:46:11 2024 +0800

    bpf: Fix updating attached freplace prog in prog_array map
    
    [ Upstream commit fdad456cbcca739bae1849549c7a999857c56f88 ]
    
    The commit f7866c358733 ("bpf: Fix null pointer dereference in resolve_prog_type() for BPF_PROG_TYPE_EXT")
    fixed a NULL pointer dereference panic, but didn't fix the issue that
    fails to update attached freplace prog to prog_array map.
    
    Since commit 1c123c567fb1 ("bpf: Resolve fext program type when checking map compatibility"),
    freplace prog and its target prog are able to tail call each other.
    
    And the commit 3aac1ead5eb6 ("bpf: Move prog->aux->linked_prog and trampoline into bpf_link on attach")
    sets prog->aux->dst_prog as NULL after attaching freplace prog to its
    target prog.
    
    After loading freplace the prog_array's owner type is BPF_PROG_TYPE_SCHED_CLS.
    Then, after attaching freplace its prog->aux->dst_prog is NULL.
    Then, while updating freplace in prog_array the bpf_prog_map_compatible()
    incorrectly returns false because resolve_prog_type() returns
    BPF_PROG_TYPE_EXT instead of BPF_PROG_TYPE_SCHED_CLS.
    After this patch the resolve_prog_type() returns BPF_PROG_TYPE_SCHED_CLS
    and update to prog_array can succeed.
    
    Fixes: f7866c358733 ("bpf: Fix null pointer dereference in resolve_prog_type() for BPF_PROG_TYPE_EXT")
    Cc: Toke Høiland-Jørgensen <toke@redhat.com>
    Cc: Martin KaFai Lau <martin.lau@kernel.org>
    Acked-by: Yonghong Song <yonghong.song@linux.dev>
    Signed-off-by: Leon Hwang <leon.hwang@linux.dev>
    Link: https://lore.kernel.org/r/20240728114612.48486-2-leon.hwang@linux.dev
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
btrfs: change BUG_ON to assertion in tree_move_down() [+ + +]
Author: David Sterba <dsterba@suse.com>
Date:   Tue Feb 6 23:06:46 2024 +0100

    btrfs: change BUG_ON to assertion in tree_move_down()
    
    [ Upstream commit 56f335e043ae73c32dbb70ba95488845dc0f1e6e ]
    
    There's only one caller of tree_move_down() that does not pass level 0
    so the assertion is better suited here.
    
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: change BUG_ON to assertion when checking for delayed_node root [+ + +]
Author: David Sterba <dsterba@suse.com>
Date:   Sat Jan 20 02:26:32 2024 +0100

    btrfs: change BUG_ON to assertion when checking for delayed_node root
    
    [ Upstream commit be73f4448b607e6b7ce41cd8ef2214fdf6e7986f ]
    
    The pointer to root is initialized in btrfs_init_delayed_node(), no need
    to check for it again. Change the BUG_ON to assertion.
    
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: defrag: change BUG_ON to assertion in btrfs_defrag_leaves() [+ + +]
Author: David Sterba <dsterba@suse.com>
Date:   Fri Jan 19 20:15:41 2024 +0100

    btrfs: defrag: change BUG_ON to assertion in btrfs_defrag_leaves()
    
    [ Upstream commit 51d4be540054be32d7ce28b63ea9b84ac6ff1db2 ]
    
    The BUG_ON verifies a condition that should be guaranteed by the correct
    use of the path search (with keep_locks and lowest_level set), an
    assertion is the suitable check.
    
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: delayed-inode: drop pointless BUG_ON in __btrfs_remove_delayed_item() [+ + +]
Author: David Sterba <dsterba@suse.com>
Date:   Sat Jan 20 02:22:37 2024 +0100

    btrfs: delayed-inode: drop pointless BUG_ON in __btrfs_remove_delayed_item()
    
    [ Upstream commit 778e618b8bfedcc39354373c1b072c5fe044fa7b ]
    
    There's a BUG_ON checking for a valid pointer of fs_info::delayed_root
    but it is valid since init_mount_fs_info() and has the same lifetime as
    fs_info.
    
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: delete pointless BUG_ON check on quota root in btrfs_qgroup_account_extent() [+ + +]
Author: David Sterba <dsterba@suse.com>
Date:   Tue Feb 6 23:20:53 2024 +0100

    btrfs: delete pointless BUG_ON check on quota root in btrfs_qgroup_account_extent()
    
    [ Upstream commit f40a3ea94881f668084f68f6b9931486b1606db0 ]
    
    The BUG_ON is deep in the qgroup code where we can expect that it
    exists. A NULL pointer would cause a crash.
    
    It was added long ago in 550d7a2ed5db35 ("btrfs: qgroup: Add new qgroup
    calculation function btrfs_qgroup_account_extents()."). It maybe made
    sense back then as the quota enable/disable state machine was not that
    robust as it is nowadays, so we can just delete it.
    
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: handle invalid root reference found in may_destroy_subvol() [+ + +]
Author: David Sterba <dsterba@suse.com>
Date:   Wed Jan 24 22:58:01 2024 +0100

    btrfs: handle invalid root reference found in may_destroy_subvol()
    
    [ Upstream commit 6fbc6f4ac1f4907da4fc674251527e7dc79ffbf6 ]
    
    The may_destroy_subvol() looks up a root by a key, allowing to do an
    inexact search when key->offset is -1.  It's never expected to find such
    item, as it would break the allowed range of a root id.
    
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: push errors up from add_async_extent() [+ + +]
Author: David Sterba <dsterba@suse.com>
Date:   Wed Jan 24 17:26:25 2024 +0100

    btrfs: push errors up from add_async_extent()
    
    [ Upstream commit dbe6cda68f0e1be269e6509c8bf3d8d89089c1c4 ]
    
    The memory allocation error in add_async_extent() is not handled
    properly, return an error and push the BUG_ON to the caller. Handling it
    there is not trivial so at least make it visible.
    
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: rename bitmap_set_bits() -> btrfs_bitmap_set_bits() [+ + +]
Author: Alexander Lobakin <aleksander.lobakin@intel.com>
Date:   Wed Mar 27 16:23:47 2024 +0100

    btrfs: rename bitmap_set_bits() -> btrfs_bitmap_set_bits()
    
    commit 4ca532d64648d4776d15512caed3efea05ca7195 upstream.
    
    bitmap_set_bits() does not start with the FS' prefix and may collide
    with a new generic helper one day. It operates with the FS-specific
    types, so there's no change those two could do the same thing.
    Just add the prefix to exclude such possible conflict.
    
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Acked-by: David Sterba <dsterba@suse.com>
    Reviewed-by: Yury Norov <yury.norov@gmail.com>
    Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: replace sb::s_blocksize by fs_info::sectorsize [+ + +]
Author: David Sterba <dsterba@suse.com>
Date:   Tue Jan 16 17:33:20 2024 +0100

    btrfs: replace sb::s_blocksize by fs_info::sectorsize
    
    [ Upstream commit 4e00422ee62663e31e611d7de4d2c4aa3f8555f2 ]
    
    The block size stored in the super block is used by subsystems outside
    of btrfs and it's a copy of fs_info::sectorsize. Unify that to always
    use our sectorsize, with the exception of mount where we first need to
    use fixed values (4K) until we read the super block and can set the
    sectorsize.
    
    Replace all uses, in most cases it's fewer pointer indirections.
    
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Stable-dep-of: 46a6e10a1ab1 ("btrfs: send: allow cloning non-aligned extent if it ends at i_size")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: send: allow cloning non-aligned extent if it ends at i_size [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Aug 12 14:18:06 2024 +0100

    btrfs: send: allow cloning non-aligned extent if it ends at i_size
    
    [ Upstream commit 46a6e10a1ab16cc71d4a3cab73e79aabadd6b8ea ]
    
    If we a find that an extent is shared but its end offset is not sector
    size aligned, then we don't clone it and issue write operations instead.
    This is because the reflink (remap_file_range) operation does not allow
    to clone unaligned ranges, except if the end offset of the range matches
    the i_size of the source and destination files (and the start offset is
    sector size aligned).
    
    While this is not incorrect because send can only guarantee that a file
    has the same data in the source and destination snapshots, it's not
    optimal and generates confusion and surprising behaviour for users.
    
    For example, running this test:
    
      $ cat test.sh
      #!/bin/bash
    
      DEV=/dev/sdi
      MNT=/mnt/sdi
    
      mkfs.btrfs -f $DEV
      mount $DEV $MNT
    
      # Use a file size not aligned to any possible sector size.
      file_size=$((1 * 1024 * 1024 + 5)) # 1MB + 5 bytes
      dd if=/dev/random of=$MNT/foo bs=$file_size count=1
      cp --reflink=always $MNT/foo $MNT/bar
    
      btrfs subvolume snapshot -r $MNT/ $MNT/snap
      rm -f /tmp/send-test
      btrfs send -f /tmp/send-test $MNT/snap
    
      umount $MNT
      mkfs.btrfs -f $DEV
      mount $DEV $MNT
    
      btrfs receive -vv -f /tmp/send-test $MNT
    
      xfs_io -r -c "fiemap -v" $MNT/snap/bar
    
      umount $MNT
    
    Gives the following result:
    
      (...)
      mkfile o258-7-0
      rename o258-7-0 -> bar
      write bar - offset=0 length=49152
      write bar - offset=49152 length=49152
      write bar - offset=98304 length=49152
      write bar - offset=147456 length=49152
      write bar - offset=196608 length=49152
      write bar - offset=245760 length=49152
      write bar - offset=294912 length=49152
      write bar - offset=344064 length=49152
      write bar - offset=393216 length=49152
      write bar - offset=442368 length=49152
      write bar - offset=491520 length=49152
      write bar - offset=540672 length=49152
      write bar - offset=589824 length=49152
      write bar - offset=638976 length=49152
      write bar - offset=688128 length=49152
      write bar - offset=737280 length=49152
      write bar - offset=786432 length=49152
      write bar - offset=835584 length=49152
      write bar - offset=884736 length=49152
      write bar - offset=933888 length=49152
      write bar - offset=983040 length=49152
      write bar - offset=1032192 length=16389
      chown bar - uid=0, gid=0
      chmod bar - mode=0644
      utimes bar
      utimes
      BTRFS_IOC_SET_RECEIVED_SUBVOL uuid=06d640da-9ca1-604c-b87c-3375175a8eb3, stransid=7
      /mnt/sdi/snap/bar:
       EXT: FILE-OFFSET      BLOCK-RANGE      TOTAL FLAGS
         0: [0..2055]:       26624..28679      2056   0x1
    
    There's no clone operation to clone extents from the file foo into file
    bar and fiemap confirms there's no shared flag (0x2000).
    
    So update send_write_or_clone() so that it proceeds with cloning if the
    source and destination ranges end at the i_size of the respective files.
    
    After this changes the result of the test is:
    
      (...)
      mkfile o258-7-0
      rename o258-7-0 -> bar
      clone bar - source=foo source offset=0 offset=0 length=1048581
      chown bar - uid=0, gid=0
      chmod bar - mode=0644
      utimes bar
      utimes
      BTRFS_IOC_SET_RECEIVED_SUBVOL uuid=582420f3-ea7d-564e-bbe5-ce440d622190, stransid=7
      /mnt/sdi/snap/bar:
       EXT: FILE-OFFSET      BLOCK-RANGE      TOTAL FLAGS
         0: [0..2055]:       26624..28679      2056 0x2001
    
    A test case for fstests will also follow up soon.
    
    Link: https://github.com/kdave/btrfs-progs/issues/572#issuecomment-2282841416
    CC: stable@vger.kernel.org # 5.10+
    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: send: handle unexpected data in header buffer in begin_cmd() [+ + +]
Author: David Sterba <dsterba@suse.com>
Date:   Tue Feb 6 22:47:13 2024 +0100

    btrfs: send: handle unexpected data in header buffer in begin_cmd()
    
    [ Upstream commit e80e3f732cf53c64b0d811e1581470d67f6c3228 ]
    
    Change BUG_ON to a proper error handling in the unlikely case of seeing
    data when the command is started. This is supposed to be reset when the
    command is finished (send_cmd, send_encoded_extent).
    
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: send: handle unexpected inode in header process_recorded_refs() [+ + +]
Author: David Sterba <dsterba@suse.com>
Date:   Tue Feb 6 22:47:13 2024 +0100

    btrfs: send: handle unexpected inode in header process_recorded_refs()
    
    [ Upstream commit 5d2288711ccc483feca73151c46ee835bda17839 ]
    
    Change BUG_ON to proper error handling when an unexpected inode number
    is encountered. As the comment says this should never happen.
    
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: tests: allocate dummy fs_info and root in test_find_delalloc() [+ + +]
Author: David Sterba <dsterba@suse.com>
Date:   Mon Jan 29 19:04:33 2024 +0100

    btrfs: tests: allocate dummy fs_info and root in test_find_delalloc()
    
    [ Upstream commit b2136cc288fce2f24a92f3d656531b2d50ebec5a ]
    
    Allocate fs_info and root to have a valid fs_info pointer in case it's
    dereferenced by a helper outside of tests, like find_lock_delalloc_range().
    
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: tree-checker: add dev extent item checks [+ + +]
Author: Qu Wenruo <wqu@suse.com>
Date:   Sun Aug 11 15:00:22 2024 +0930

    btrfs: tree-checker: add dev extent item checks
    
    commit 008e2512dc5696ab2dc5bf264e98a9fe9ceb830e upstream.
    
    [REPORT]
    There is a corruption report that btrfs refused to mount a fs that has
    overlapping dev extents:
    
      BTRFS error (device sdc): dev extent devid 4 physical offset 14263979671552 overlap with previous dev extent end 14263980982272
      BTRFS error (device sdc): failed to verify dev extents against chunks: -117
      BTRFS error (device sdc): open_ctree failed
    
    [CAUSE]
    The direct cause is very obvious, there is a bad dev extent item with
    incorrect length.
    
    With btrfs check reporting two overlapping extents, the second one shows
    some clue on the cause:
    
      ERROR: dev extent devid 4 offset 14263979671552 len 6488064 overlap with previous dev extent end 14263980982272
      ERROR: dev extent devid 13 offset 2257707008000 len 6488064 overlap with previous dev extent end 2257707270144
      ERROR: errors found in extent allocation tree or chunk allocation
    
    The second one looks like a bitflip happened during new chunk
    allocation:
    hex(2257707008000) = 0x20da9d30000
    hex(2257707270144) = 0x20da9d70000
    diff               = 0x00000040000
    
    So it looks like a bitflip happened during new dev extent allocation,
    resulting the second overlap.
    
    Currently we only do the dev-extent verification at mount time, but if the
    corruption is caused by memory bitflip, we really want to catch it before
    writing the corruption to the storage.
    
    Furthermore the dev extent items has the following key definition:
    
            (<device id> DEV_EXTENT <physical offset>)
    
    Thus we can not just rely on the generic key order check to make sure
    there is no overlapping.
    
    [ENHANCEMENT]
    Introduce dedicated dev extent checks, including:
    
    - Fixed member checks
      * chunk_tree should always be BTRFS_CHUNK_TREE_OBJECTID (3)
      * chunk_objectid should always be
        BTRFS_FIRST_CHUNK_CHUNK_TREE_OBJECTID (256)
    
    - Alignment checks
      * chunk_offset should be aligned to sectorsize
      * length should be aligned to sectorsize
      * key.offset should be aligned to sectorsize
    
    - Overlap checks
      If the previous key is also a dev-extent item, with the same
      device id, make sure we do not overlap with the previous dev extent.
    
    Reported: Stefan N <stefannnau@gmail.com>
    Link: https://lore.kernel.org/linux-btrfs/CA+W5K0rSO3koYTo=nzxxTm1-Pdu1HYgVxEpgJ=aGc7d=E8mGEg@mail.gmail.com/
    CC: stable@vger.kernel.org # 5.10+
    Reviewed-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: tree-checker: reject BTRFS_FT_UNKNOWN dir type [+ + +]
Author: Qu Wenruo <wqu@suse.com>
Date:   Mon Aug 12 08:52:44 2024 +0930

    btrfs: tree-checker: reject BTRFS_FT_UNKNOWN dir type
    
    commit 31723c9542dba1681cc3720571fdf12ffe0eddd9 upstream.
    
    [REPORT]
    There is a bug report that kernel is rejecting a mismatching inode mode
    and its dir item:
    
      [ 1881.553937] BTRFS critical (device dm-0): inode mode mismatch with
      dir: inode mode=040700 btrfs type=2 dir type=0
    
    [CAUSE]
    It looks like the inode mode is correct, while the dir item type
    0 is BTRFS_FT_UNKNOWN, which should not be generated by btrfs at all.
    
    This may be caused by a memory bit flip.
    
    [ENHANCEMENT]
    Although tree-checker is not able to do any cross-leaf verification, for
    this particular case we can at least reject any dir type with
    BTRFS_FT_UNKNOWN.
    
    So here we enhance the dir type check from [0, BTRFS_FT_MAX), to
    (0, BTRFS_FT_MAX).
    Although the existing corruption can not be fixed just by such enhanced
    checking, it should prevent the same 0x2->0x0 bitflip for dir type to
    reach disk in the future.
    
    Reported-by: Kota <nospam@kota.moe>
    Link: https://lore.kernel.org/linux-btrfs/CACsxjPYnQF9ZF-0OhH16dAx50=BXXOcP74MxBc3BG+xae4vTTw@mail.gmail.com/
    CC: stable@vger.kernel.org # 5.4+
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: zlib: fix and simplify the inline extent decompression [+ + +]
Author: Qu Wenruo <wqu@suse.com>
Date:   Mon Jan 8 19:38:44 2024 +1030

    btrfs: zlib: fix and simplify the inline extent decompression
    
    [ Upstream commit 2c25716dcc25a0420c4ad49d6e6bf61e60a21434 ]
    
    [BUG]
    
    If we have a filesystem with 4k sectorsize, and an inlined compressed
    extent created like this:
    
            item 4 key (257 INODE_ITEM 0) itemoff 15863 itemsize 160
                    generation 8 transid 8 size 4096 nbytes 4096
                    block group 0 mode 100600 links 1 uid 0 gid 0 rdev 0
                    sequence 1 flags 0x0(none)
            item 5 key (257 INODE_REF 256) itemoff 15839 itemsize 24
                    index 2 namelen 14 name: source_inlined
            item 6 key (257 EXTENT_DATA 0) itemoff 15770 itemsize 69
                    generation 8 type 0 (inline)
                    inline extent data size 48 ram_bytes 4096 compression 1 (zlib)
    
    Which has an inline compressed extent at file offset 0, and its
    decompressed size is 4K, allowing us to reflink that 4K range to another
    location (which will not be compressed).
    
    If we do such reflink on a subpage system, it would fail like this:
    
      # xfs_io -f -c "reflink $mnt/source_inlined 0 60k 4k" $mnt/dest
      XFS_IOC_CLONE_RANGE: Input/output error
    
    [CAUSE]
    In zlib_decompress(), we didn't treat @start_byte as just a page offset,
    but also use it as an indicator on whether we should switch our output
    buffer.
    
    In reality, for subpage cases, although @start_byte can be non-zero,
    we should never switch input/output buffer, since the whole input/output
    buffer should never exceed one sector.
    
    Note: The above assumption is only not true if we're going to support
    multi-page sectorsize.
    
    Thus the current code using @start_byte as a condition to switch
    input/output buffer or finish the decompression is completely incorrect.
    
    [FIX]
    The fix involves several modifications:
    
    - Rename @start_byte to @dest_pgoff to properly express its meaning
    
    - Add an extra ASSERT() inside btrfs_decompress() to make sure the
      input/output size never exceeds one sector.
    
    - Use Z_FINISH flag to make sure the decompression happens in one go
    
    - Remove the loop needed to switch input/output buffers
    
    - Use correct destination offset inside the destination page
    
    - Consider early end as an error
    
    After the fix, even on 64K page sized aarch64, above reflink now
    works as expected:
    
      # xfs_io -f -c "reflink $mnt/source_inlined 0 60k 4k" $mnt/dest
      linked 4096/4096 bytes at offset 61440
    
    And resulted a correct file layout:
    
            item 9 key (258 INODE_ITEM 0) itemoff 15542 itemsize 160
                    generation 10 transid 10 size 65536 nbytes 4096
                    block group 0 mode 100600 links 1 uid 0 gid 0 rdev 0
                    sequence 1 flags 0x0(none)
            item 10 key (258 INODE_REF 256) itemoff 15528 itemsize 14
                    index 3 namelen 4 name: dest
            item 11 key (258 XATTR_ITEM 3817753667) itemoff 15445 itemsize 83
                    location key (0 UNKNOWN.0 0) type XATTR
                    transid 10 data_len 37 name_len 16
                    name: security.selinux
                    data unconfined_u:object_r:unlabeled_t:s0
            item 12 key (258 EXTENT_DATA 61440) itemoff 15392 itemsize 53
                    generation 10 type 1 (regular)
                    extent data disk byte 13631488 nr 4096
                    extent data offset 0 nr 4096 ram 4096
                    extent compression 0 (none)
    
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: zoned: properly take lock to read/update block group's zoned variables [+ + +]
Author: Naohiro Aota <naohiro.aota@wdc.com>
Date:   Thu Aug 1 16:47:52 2024 +0900

    btrfs: zoned: properly take lock to read/update block group's zoned variables
    
    commit e30729d4bd4001881be4d1ad4332a5d4985398f8 upstream.
    
    __btrfs_add_free_space_zoned() references and modifies bg's alloc_offset,
    ro, and zone_unusable, but without taking the lock. It is mostly safe
    because they monotonically increase (at least for now) and this function is
    mostly called by a transaction commit, which is serialized by itself.
    
    Still, taking the lock is a safer and correct option and I'm going to add a
    change to reset zone_unusable while a block group is still alive. So, add
    locking around the operations.
    
    Fixes: 169e0da91a21 ("btrfs: zoned: track unusable bytes for zones")
    CC: stable@vger.kernel.org # 5.15+
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cgroup: Avoid extra dereference in css_populate_dir() [+ + +]
Author: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Date:   Tue Sep 12 12:34:35 2023 +0530

    cgroup: Avoid extra dereference in css_populate_dir()
    
    [ Upstream commit d24f05987ce8bf61e62d86fedbe47523dc5c3393 ]
    
    Use css directly instead of dereferencing it from &cgroup->self, while
    adding the cgroup v2 cft base and psi files in css_populate_dir(). Both
    points to the same css, when css->ss is NULL, this avoids extra deferences
    and makes code consistent in usage across the function.
    
    Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: change alloc_pages name in dma_map_ops to avoid name conflicts [+ + +]
Author: Suren Baghdasaryan <surenb@google.com>
Date:   Thu Mar 21 09:36:39 2024 -0700

    change alloc_pages name in dma_map_ops to avoid name conflicts
    
    [ Upstream commit 8a2f11878771da65b8ac135c73b47dae13afbd62 ]
    
    After redefining alloc_pages, all uses of that name are being replaced.
    Change the conflicting names to prevent preprocessor from replacing them
    when it's not intended.
    
    Link: https://lkml.kernel.org/r/20240321163705.3067592-18-surenb@google.com
    Signed-off-by: Suren Baghdasaryan <surenb@google.com>
    Tested-by: Kees Cook <keescook@chromium.org>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Alex Gaynor <alex.gaynor@gmail.com>
    Cc: Alice Ryhl <aliceryhl@google.com>
    Cc: Andreas Hindborg <a.hindborg@samsung.com>
    Cc: Benno Lossin <benno.lossin@proton.me>
    Cc: "Björn Roy Baron" <bjorn3_gh@protonmail.com>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Dennis Zhou <dennis@kernel.org>
    Cc: Gary Guo <gary@garyguo.net>
    Cc: Kent Overstreet <kent.overstreet@linux.dev>
    Cc: Miguel Ojeda <ojeda@kernel.org>
    Cc: Pasha Tatashin <pasha.tatashin@soleen.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Wedson Almeida Filho <wedsonaf@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Stable-dep-of: 61ebe5a747da ("mm/vmalloc: fix page mapping if vm_area_alloc_pages() with high order fallback to order 0")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
char: xillybus: Check USB endpoints when probing device [+ + +]
Author: Eli Billauer <eli.billauer@gmail.com>
Date:   Fri Aug 16 10:02:00 2024 +0300

    char: xillybus: Check USB endpoints when probing device
    
    commit 2374bf7558de915edc6ec8cb10ec3291dfab9594 upstream.
    
    Ensure, as the driver probes the device, that all endpoints that the
    driver may attempt to access exist and are of the correct type.
    
    All XillyUSB devices must have a Bulk IN and Bulk OUT endpoint at
    address 1. This is verified in xillyusb_setup_base_eps().
    
    On top of that, a XillyUSB device may have additional Bulk OUT
    endpoints. The information about these endpoints' addresses is deduced
    from a data structure (the IDT) that the driver fetches from the device
    while probing it. These endpoints are checked in setup_channels().
    
    A XillyUSB device never has more than one IN endpoint, as all data
    towards the host is multiplexed in this single Bulk IN endpoint. This is
    why setup_channels() only checks OUT endpoints.
    
    Reported-by: syzbot+eac39cba052f2e750dbe@syzkaller.appspotmail.com
    Cc: stable <stable@kernel.org>
    Closes: https://lore.kernel.org/all/0000000000001d44a6061f7a54ee@google.com/T/
    Fixes: a53d1202aef1 ("char: xillybus: Add driver for XillyUSB (Xillybus variant for USB)").
    Signed-off-by: Eli Billauer <eli.billauer@gmail.com>
    Link: https://lore.kernel.org/r/20240816070200.50695-2-eli.billauer@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

char: xillybus: Don't destroy workqueue from work item running on it [+ + +]
Author: Eli Billauer <eli.billauer@gmail.com>
Date:   Thu Aug 1 15:11:26 2024 +0300

    char: xillybus: Don't destroy workqueue from work item running on it
    
    commit ccbde4b128ef9c73d14d0d7817d68ef795f6d131 upstream.
    
    Triggered by a kref decrement, destroy_workqueue() may be called from
    within a work item for destroying its own workqueue. This illegal
    situation is averted by adding a module-global workqueue for exclusive
    use of the offending work item. Other work items continue to be queued
    on per-device workqueues to ensure performance.
    
    Reported-by: syzbot+91dbdfecdd3287734d8e@syzkaller.appspotmail.com
    Cc: stable <stable@kernel.org>
    Closes: https://lore.kernel.org/lkml/0000000000000ab25a061e1dfe9f@google.com/
    Signed-off-by: Eli Billauer <eli.billauer@gmail.com>
    Link: https://lore.kernel.org/r/20240801121126.60183-1-eli.billauer@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

char: xillybus: Refine workqueue handling [+ + +]
Author: Eli Billauer <eli.billauer@gmail.com>
Date:   Fri Aug 16 10:01:59 2024 +0300

    char: xillybus: Refine workqueue handling
    
    commit ad899c301c880766cc709aad277991b3ab671b66 upstream.
    
    As the wakeup work item now runs on a separate workqueue, it needs to be
    flushed separately along with flushing the device's workqueue.
    
    Also, move the destroy_workqueue() call to the end of the exit method,
    so that deinitialization is done in the opposite order of
    initialization.
    
    Fixes: ccbde4b128ef ("char: xillybus: Don't destroy workqueue from work item running on it")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Eli Billauer <eli.billauer@gmail.com>
    Link: https://lore.kernel.org/r/20240816070200.50695-1-eli.billauer@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
clk: visconti: Add bounds-checking coverage for struct visconti_pll_provider [+ + +]
Author: Gustavo A. R. Silva <gustavoars@kernel.org>
Date:   Mon Oct 16 16:06:16 2023 -0600

    clk: visconti: Add bounds-checking coverage for struct visconti_pll_provider
    
    [ Upstream commit 397d887c1601a71e8a8abdb6beea67d58f0472d3 ]
    
    In order to gain the bounds-checking coverage that __counted_by provides
    to flexible-array members at run-time via CONFIG_UBSAN_BOUNDS (for array
    indexing) and CONFIG_FORTIFY_SOURCE (for strcpy/memcpy-family functions),
    we must make sure that the counter member, in this particular case `num`,
    is updated before the first access to the flex-array member, in this
    particular case array `hws`. See below:
    
    commit f316cdff8d67 ("clk: Annotate struct clk_hw_onecell_data with
    __counted_by") introduced `__counted_by` for `struct clk_hw_onecell_data`
    together with changes to relocate some of assignments of counter `num`
    before `hws` is accessed:
    
    include/linux/clk-provider.h:
    1380 struct clk_hw_onecell_data {
    1381         unsigned int num;
    1382         struct clk_hw *hws[] __counted_by(num);
    1383 };
    
    However, this structure is used as a member in other structs, in this
    case in `struct visconti_pll_provider`:
    
    drivers/clk/visconti/pll.h:
     16 struct visconti_pll_provider {
     17         void __iomem *reg_base;
     18         struct device_node *node;
     19
     20         /* Must be last */
     21         struct clk_hw_onecell_data clk_data;
     22 };
    
    Hence, we need to move the assignments to `ctx->clk_data.num` after
    allocation for `struct visconti_pll_provider` and before accessing the
    flexible array `ctx->clk_data.hws`. And, as assignments for all members
    in `struct visconti_pll_provider` are originally adjacent to each other,
    relocate all assignments together, so we don't split up
    `ctx->clk_data.hws = nr_plls` from the rest. :)
    
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Acked-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
    Link: https://lore.kernel.org/r/e3189f3e40e8723b6d794fb2260e2e9ab6b960bd.1697492890.git.gustavoars@kernel.org
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
clocksource/drivers/arm_global_timer: Guard against division by zero [+ + +]
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Sun Feb 25 16:13:35 2024 +0100

    clocksource/drivers/arm_global_timer: Guard against division by zero
    
    [ Upstream commit e651f2fae33634175fae956d896277cf916f5d09 ]
    
    The result of the division of new_rate by gt_target_rate can be zero (if
    new_rate is smaller than gt_target_rate). Using that result as divisor
    without checking can result in a division by zero error. Guard against
    this by checking for a zero value earlier.
    While here, also change the psv variable to an unsigned long to make
    sure we don't overflow the datatype as all other types involved are also
    unsiged long.
    
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Link: https://lore.kernel.org/r/20240225151336.2728533-3-martin.blumenstingl@googlemail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
clocksource: Make watchdog and suspend-timing multiplication overflow safe [+ + +]
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Mar 25 08:40:23 2024 +0200

    clocksource: Make watchdog and suspend-timing multiplication overflow safe
    
    [ Upstream commit d0304569fb019d1bcfbbbce1ce6df6b96f04079b ]
    
    Kernel timekeeping is designed to keep the change in cycles (since the last
    timer interrupt) below max_cycles, which prevents multiplication overflow
    when converting cycles to nanoseconds. However, if timer interrupts stop,
    the clocksource_cyc2ns() calculation will eventually overflow.
    
    Add protection against that. Simplify by folding together
    clocksource_delta() and clocksource_cyc2ns() into cycles_to_nsec_safe().
    Check against max_cycles, falling back to a slower higher precision
    calculation.
    
    Suggested-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/20240325064023.2997-20-adrian.hunter@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cpu/SMT: Enable SMT only if a core is online [+ + +]
Author: Nysal Jan K.A <nysal@linux.ibm.com>
Date:   Wed Jul 31 08:31:12 2024 +0530

    cpu/SMT: Enable SMT only if a core is online
    
    [ Upstream commit 6c17ea1f3eaa330d445ac14a9428402ce4e3055e ]
    
    If a core is offline then enabling SMT should not online CPUs of
    this core. By enabling SMT, what is intended is either changing the SMT
    value from "off" to "on" or setting the SMT level (threads per core) from a
    lower to higher value.
    
    On PowerPC the ppc64_cpu utility can be used, among other things, to
    perform the following functions:
    
    ppc64_cpu --cores-on                # Get the number of online cores
    ppc64_cpu --cores-on=X              # Put exactly X cores online
    ppc64_cpu --offline-cores=X[,Y,...] # Put specified cores offline
    ppc64_cpu --smt={on|off|value}      # Enable, disable or change SMT level
    
    If the user has decided to offline certain cores, enabling SMT should
    not online CPUs in those cores. This patch fixes the issue and changes
    the behaviour as described, by introducing an arch specific function
    topology_is_core_online(). It is currently implemented only for PowerPC.
    
    Fixes: 73c58e7e1412 ("powerpc: Add HOTPLUG_SMT support")
    Reported-by: Tyrel Datwyler <tyreld@linux.ibm.com>
    Closes: https://groups.google.com/g/powerpc-utils-devel/c/wrwVzAAnRlI/m/5KJSoqP4BAAJ
    Signed-off-by: Nysal Jan K.A <nysal@linux.ibm.com>
    Reviewed-by: Shrikanth Hegde <sshegde@linux.ibm.com>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240731030126.956210-2-nysal@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cxgb4: add forgotten u64 ivlan cast before shift [+ + +]
Author: Nikolay Kuratov <kniv@yandex-team.ru>
Date:   Mon Aug 19 10:54:08 2024 +0300

    cxgb4: add forgotten u64 ivlan cast before shift
    
    commit 80a1e7b83bb1834b5568a3872e64c05795d88f31 upstream.
    
    It is done everywhere in cxgb4 code, e.g. in is_filter_exact_match()
    There is no reason it should not be done here
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE
    
    Signed-off-by: Nikolay Kuratov <kniv@yandex-team.ru>
    Cc: stable@vger.kernel.org
    Fixes: 12b276fbf6e0 ("cxgb4: add support to create hash filters")
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://patch.msgid.link/20240819075408.92378-1-kniv@yandex-team.ru
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dm persistent data: fix memory allocation failure [+ + +]
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue Aug 13 16:35:14 2024 +0200

    dm persistent data: fix memory allocation failure
    
    commit faada2174c08662ae98b439c69efe3e79382c538 upstream.
    
    kmalloc is unreliable when allocating more than 8 pages of memory. It may
    fail when there is plenty of free memory but the memory is fragmented.
    Zdenek Kabelac observed such failure in his tests.
    
    This commit changes kmalloc to kvmalloc - kvmalloc will fall back to
    vmalloc if the large allocation fails.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Reported-by: Zdenek Kabelac <zkabelac@redhat.com>
    Reviewed-by: Mike Snitzer <snitzer@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dm resume: don't return EINVAL when signalled [+ + +]
Author: Khazhismel Kumykov <khazhy@google.com>
Date:   Tue Aug 13 12:39:52 2024 +0200

    dm resume: don't return EINVAL when signalled
    
    commit 7a636b4f03af9d541205f69e373672e7b2b60a8a upstream.
    
    If the dm_resume method is called on a device that is not suspended, the
    method will suspend the device briefly, before resuming it (so that the
    table will be swapped).
    
    However, there was a bug that the return value of dm_suspended_md was not
    checked. dm_suspended_md may return an error when it is interrupted by a
    signal. In this case, do_resume would call dm_swap_table, which would
    return -EINVAL.
    
    This commit fixes the logic, so that error returned by dm_suspend is
    checked and the resume operation is undone.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Khazhismel Kumykov <khazhy@google.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dm suspend: return -ERESTARTSYS instead of -EINTR [+ + +]
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue Aug 13 12:38:51 2024 +0200

    dm suspend: return -ERESTARTSYS instead of -EINTR
    
    [ Upstream commit 1e1fd567d32fcf7544c6e09e0e5bc6c650da6e23 ]
    
    This commit changes device mapper, so that it returns -ERESTARTSYS
    instead of -EINTR when it is interrupted by a signal (so that the ioctl
    can be restarted).
    
    The manpage signal(7) says that the ioctl function should be restarted if
    the signal was handled with SA_RESTART.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dpaa2-switch: Fix error checking in dpaa2_switch_seed_bp() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Sat Aug 17 09:52:46 2024 +0300

    dpaa2-switch: Fix error checking in dpaa2_switch_seed_bp()
    
    [ Upstream commit c50e7475961c36ec4d21d60af055b32f9436b431 ]
    
    The dpaa2_switch_add_bufs() function returns the number of bufs that it
    was able to add.  It returns BUFS_PER_CMD (7) for complete success or a
    smaller number if there are not enough pages available.  However, the
    error checking is looking at the total number of bufs instead of the
    number which were added on this iteration.  Thus the error checking
    only works correctly for the first iteration through the loop and
    subsequent iterations are always counted as a success.
    
    Fix this by checking only the bufs added in the current iteration.
    
    Fixes: 0b1b71370458 ("staging: dpaa2-switch: handle Rx path on control interface")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
    Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
    Link: https://patch.msgid.link/eec27f30-b43f-42b6-b8ee-04a6f83423b6@stanley.mountain
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/amdgpu/imu_v11_0: Increase buffer size to ensure all possible values can be stored [+ + +]
Author: Lee Jones <lee@kernel.org>
Date:   Thu Aug 24 08:37:05 2023 +0100

    drm/amd/amdgpu/imu_v11_0: Increase buffer size to ensure all possible values can be stored
    
    [ Upstream commit a728342ae4ec2a7fdab0038b11427579424f133e ]
    
    Fixes the following W=1 kernel build warning(s):
    
     drivers/gpu/drm/amd/amdgpu/imu_v11_0.c: In function ‘imu_v11_0_init_microcode’:
     drivers/gpu/drm/amd/amdgpu/imu_v11_0.c:52:54: warning: ‘_imu.bin’ directive output may be truncated writing 8 bytes into a region of size between 4 and 33 [-Wformat-truncation=]
     drivers/gpu/drm/amd/amdgpu/imu_v11_0.c:52:9: note: ‘snprintf’ output between 16 and 45 bytes into a destination of size 40
    
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/amdgpu: command submission parser for JPEG [+ + +]
Author: David (Ming Qiang) Wu <David.Wu3@amd.com>
Date:   Thu Aug 8 12:19:50 2024 -0400

    drm/amd/amdgpu: command submission parser for JPEG
    
    [ Upstream commit 470516c2925493594a690bc4d05b1f4471d9f996 ]
    
    Add JPEG IB command parser to ensure registers
    in the command are within the JPEG IP block.
    
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: David (Ming Qiang) Wu <David.Wu3@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit a7f670d5d8e77b092404ca8a35bb0f8f89ed3117)
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/display: Adjust cursor position [+ + +]
Author: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Date:   Thu Aug 1 16:16:35 2024 -0600

    drm/amd/display: Adjust cursor position
    
    [ Upstream commit 56fb276d0244d430496f249335a44ae114dd5f54 ]
    
    [why & how]
    When the commit 9d84c7ef8a87 ("drm/amd/display: Correct cursor position
    on horizontal mirror") was introduced, it used the wrong calculation for
    the position copy for X. This commit uses the correct calculation for that
    based on the original patch.
    
    Fixes: 9d84c7ef8a87 ("drm/amd/display: Correct cursor position on horizontal mirror")
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Acked-by: Wayne Lin <wayne.lin@amd.com>
    Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Tom Chung <chiahsuan.chung@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 8f9b23abbae5ffcd64856facd26a86b67195bc2f)
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Enable otg synchronization logic for DCN321 [+ + +]
Author: Loan Chen <lo-an.chen@amd.com>
Date:   Fri Aug 2 13:57:40 2024 +0800

    drm/amd/display: Enable otg synchronization logic for DCN321
    
    [ Upstream commit 0dbb81d44108a2a1004e5b485ef3fca5bc078424 ]
    
    [Why]
    Tiled display cannot synchronize properly after S3.
    The fix for commit 5f0c74915815 ("drm/amd/display: Fix for otg
    synchronization logic") is not enable in DCN321, which causes
    the otg is excluded from synchronization.
    
    [How]
    Enable otg synchronization logic in dcn321.
    
    Fixes: 5f0c74915815 ("drm/amd/display: Fix for otg synchronization logic")
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Alvin Lee <alvin.lee2@amd.com>
    Signed-off-by: Loan Chen <lo-an.chen@amd.com>
    Signed-off-by: Tom Chung <chiahsuan.chung@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit d6ed53712f583423db61fbb802606759e023bf7b)
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: fix cursor offset on rotation 180 [+ + +]
Author: Melissa Wen <mwen@igalia.com>
Date:   Tue Jan 31 15:05:46 2023 -0100

    drm/amd/display: fix cursor offset on rotation 180
    
    [ Upstream commit 737222cebecbdbcdde2b69475c52bcb9ecfeb830 ]
    
    [why & how]
    Cursor gets clipped off in the middle of the screen with hw
    rotation 180. Fix a miscalculation of cursor offset when it's
    placed near the edges in the pipe split case.
    
    Cursor bugs with hw rotation were reported on AMD issue
    tracker:
    https://gitlab.freedesktop.org/drm/amd/-/issues/2247
    
    The issues on rotation 270 was fixed by:
    https://lore.kernel.org/amd-gfx/20221118125935.4013669-22-Brian.Chang@amd.com/
    that partially addressed the rotation 180 too. So, this patch is the
    final bits for rotation 180.
    
    Reported-by: Xaver Hugl <xaver.hugl@gmail.com>
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/2247
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Fixes: 9d84c7ef8a87 ("drm/amd/display: Correct cursor position on horizontal mirror")
    Signed-off-by: Melissa Wen <mwen@igalia.com>
    Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
    Signed-off-by: Tom Chung <chiahsuan.chung@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 1fd2cf090096af8a25bf85564341cfc21cec659d)
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Validate hw_points_num before using it [+ + +]
Author: Alex Hung <alex.hung@amd.com>
Date:   Mon Jul 10 18:23:58 2023 -0600

    drm/amd/display: Validate hw_points_num before using it
    
    [ Upstream commit 58c3b3341cea4f75dc8c003b89f8a6dd8ec55e50 ]
    
    [WHAT]
    hw_points_num is 0 before ogam LUT is programmed; however, function
    "dwb3_program_ogam_pwl" assumes hw_points_num is always greater than 0,
    i.e. substracting it by 1 as an array index.
    
    [HOW]
    Check hw_points_num is not equal to 0 before using it.
    
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Alex Hung <alex.hung@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/pm: fix error flow in sensor fetching [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Aug 18 12:21:32 2023 -0400

    drm/amd/pm: fix error flow in sensor fetching
    
    [ Upstream commit a5600853167aeba5cade81f184a382a0d1b14641 ]
    
    Sensor fetching functions should return an signed int to
    handle errors properly.
    
    Reviewed-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
    Reported-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu/jpeg2: properly set atomics vmid field [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Jul 12 10:00:33 2024 -0400

    drm/amdgpu/jpeg2: properly set atomics vmid field
    
    commit e414a304f2c5368a84f03ad34d29b89f965a33c9 upstream.
    
    This needs to be set as well if the IB uses atomics.
    
    Reviewed-by: Leo Liu <leo.liu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 35c628774e50b3784c59e8ca7973f03bcb067132)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdgpu/jpeg4: properly set atomics vmid field [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Jul 12 10:06:05 2024 -0400

    drm/amdgpu/jpeg4: properly set atomics vmid field
    
    commit e6c6bd6253e792cee6c5c065e106e87b9f0d9ae9 upstream.
    
    This needs to be set as well if the IB uses atomics.
    
    Reviewed-by: Leo Liu <leo.liu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit c6c2e8b6a427d4fecc7c36cffccb908185afcab2)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdgpu/vcn: identify unified queue in sw init [+ + +]
Author: Boyuan Zhang <boyuan.zhang@amd.com>
Date:   Thu Jul 11 16:19:54 2024 -0400

    drm/amdgpu/vcn: identify unified queue in sw init
    
    commit ecfa23c8df7ef3ea2a429dfe039341bf792e95b4 upstream.
    
    Determine whether VCN using unified queue in sw_init, instead of calling
    functions later on.
    
    v2: fix coding style
    
    Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Ruijing Dong <ruijing.dong@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amdgpu/vcn: not pause dpg for unified queue [+ + +]
Author: Boyuan Zhang <boyuan.zhang@amd.com>
Date:   Wed Jul 10 16:17:12 2024 -0400

    drm/amdgpu/vcn: not pause dpg for unified queue
    
    commit 7d75ef3736a025db441be652c8cc8e84044a215f upstream.
    
    For unified queue, DPG pause for encoding is done inside VCN firmware,
    so there is no need to pause dpg based on ring type in kernel.
    
    For VCN3 and below, pausing DPG for encoding in kernel is still needed.
    
    v2: add more comments
    v3: update commit message
    
    Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Ruijing Dong <ruijing.dong@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdgpu: access RLC_SPM_MC_CNTL through MMIO in SRIOV runtime [+ + +]
Author: ZhenGuo Yin <zhenguo.yin@amd.com>
Date:   Mon Aug 28 14:18:52 2023 +0800

    drm/amdgpu: access RLC_SPM_MC_CNTL through MMIO in SRIOV runtime
    
    [ Upstream commit 9f05cfc78c6880e06940ea78fbc43f6392710f17 ]
    
    Register RLC_SPM_MC_CNTL is not blocked by L1 policy, VF can
    directly access it through MMIO during SRIOV runtime.
    
    v2: use SOC15 interface to access registers
    
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: ZhenGuo Yin <zhenguo.yin@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: Actually check flags for all context ops. [+ + +]
Author: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Date:   Tue Aug 6 22:27:32 2024 +0200

    drm/amdgpu: Actually check flags for all context ops.
    
    commit 0573a1e2ea7e35bff08944a40f1adf2bb35cea61 upstream.
    
    Missing validation ...
    
    Checked libdrm and it clears all the structs, so we should be
    safe to just check everything.
    
    Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit c6b86421f1f9ddf9d706f2453159813ee39d0cf9)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amdgpu: fix dereference null return value for the function amdgpu_vm_pt_parent [+ + +]
Author: Jesse Zhang <jesse.zhang@amd.com>
Date:   Thu May 23 17:14:45 2024 +0800

    drm/amdgpu: fix dereference null return value for the function amdgpu_vm_pt_parent
    
    [ Upstream commit 511a623fb46a6cf578c61d4f2755783c48807c77 ]
    
    The pointer parent may be NULLed by the function amdgpu_vm_pt_parent.
    To make the code more robust, check the pointer parent.
    
    Signed-off-by: Jesse Zhang <Jesse.Zhang@amd.com>
    Suggested-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: Validate TA binary size [+ + +]
Author: Candice Li <candice.li@amd.com>
Date:   Thu Aug 15 11:37:28 2024 +0800

    drm/amdgpu: Validate TA binary size
    
    commit c99769bceab4ecb6a067b9af11f9db281eea3e2a upstream.
    
    Add TA binary size validation to avoid OOB write.
    
    Signed-off-by: Candice Li <candice.li@amd.com>
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit c0a04e3570d72aaf090962156ad085e37c62e442)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdkfd: Move dma unmapping after TLB flush [+ + +]
Author: Philip Yang <Philip.Yang@amd.com>
Date:   Mon Sep 11 14:44:22 2023 -0400

    drm/amdkfd: Move dma unmapping after TLB flush
    
    [ Upstream commit 101b8104307eac734f2dfa4d3511430b0b631c73 ]
    
    Otherwise GPU may access the stale mapping and generate IOMMU
    IO_PAGE_FAULT.
    
    Move this to inside p->mutex to prevent multiple threads mapping and
    unmapping concurrently race condition.
    
    After kfd_mem_dmaunmap_attachment is removed from unmap_bo_from_gpuvm,
    kfd_mem_dmaunmap_attachment is called if failed to map to GPUs, and
    before free the mem attachment in case failed to unmap from GPUs.
    
    Signed-off-by: Philip Yang <Philip.Yang@amd.com>
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdkfd: reserve the BO before validating it [+ + +]
Author: Lang Yu <Lang.Yu@amd.com>
Date:   Thu Jan 11 12:27:07 2024 +0800

    drm/amdkfd: reserve the BO before validating it
    
    [ Upstream commit 0c93bd49576677ae1a18817d5ec000ef031d5187 ]
    
    Fix a warning.
    
    v2: Avoid unmapping attachment repeatedly when ERESTARTSYS.
    
    v3: Lock the BO before accessing ttm->sg to avoid race conditions.(Felix)
    
    [   41.708711] WARNING: CPU: 0 PID: 1463 at drivers/gpu/drm/ttm/ttm_bo.c:846 ttm_bo_validate+0x146/0x1b0 [ttm]
    [   41.708989] Call Trace:
    [   41.708992]  <TASK>
    [   41.708996]  ? show_regs+0x6c/0x80
    [   41.709000]  ? ttm_bo_validate+0x146/0x1b0 [ttm]
    [   41.709008]  ? __warn+0x93/0x190
    [   41.709014]  ? ttm_bo_validate+0x146/0x1b0 [ttm]
    [   41.709024]  ? report_bug+0x1f9/0x210
    [   41.709035]  ? handle_bug+0x46/0x80
    [   41.709041]  ? exc_invalid_op+0x1d/0x80
    [   41.709048]  ? asm_exc_invalid_op+0x1f/0x30
    [   41.709057]  ? amdgpu_amdkfd_gpuvm_dmaunmap_mem+0x2c/0x80 [amdgpu]
    [   41.709185]  ? ttm_bo_validate+0x146/0x1b0 [ttm]
    [   41.709197]  ? amdgpu_amdkfd_gpuvm_dmaunmap_mem+0x2c/0x80 [amdgpu]
    [   41.709337]  ? srso_alias_return_thunk+0x5/0x7f
    [   41.709346]  kfd_mem_dmaunmap_attachment+0x9e/0x1e0 [amdgpu]
    [   41.709467]  amdgpu_amdkfd_gpuvm_dmaunmap_mem+0x56/0x80 [amdgpu]
    [   41.709586]  kfd_ioctl_unmap_memory_from_gpu+0x1b7/0x300 [amdgpu]
    [   41.709710]  kfd_ioctl+0x1ec/0x650 [amdgpu]
    [   41.709822]  ? __pfx_kfd_ioctl_unmap_memory_from_gpu+0x10/0x10 [amdgpu]
    [   41.709945]  ? srso_alias_return_thunk+0x5/0x7f
    [   41.709949]  ? tomoyo_file_ioctl+0x20/0x30
    [   41.709959]  __x64_sys_ioctl+0x9c/0xd0
    [   41.709967]  do_syscall_64+0x3f/0x90
    [   41.709973]  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
    
    Fixes: 101b8104307e ("drm/amdkfd: Move dma unmapping after TLB flush")
    Signed-off-by: Lang Yu <Lang.Yu@amd.com>
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/bridge: tc358768: Attempt to fix DSI horizontal timings [+ + +]
Author: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Date:   Wed Sep 6 09:50:59 2023 +0300

    drm/bridge: tc358768: Attempt to fix DSI horizontal timings
    
    [ Upstream commit 9fc75c40faa29df14ba16066be6bdfaea9f39ce4 ]
    
    The DSI horizontal timing calculations done by the driver seem to often
    lead to underflows or overflows, depending on the videomode.
    
    There are two main things the current driver doesn't seem to get right:
    DSI HSW and HFP, and VSDly. However, even following Toshiba's
    documentation it seems we don't always get a working display.
    
    This patch attempts to fix the horizontal timings for DSI event mode, and
    on a system with a DSI->HDMI encoder, a lot of standard HDMI modes now
    seem to work. The work relies on Toshiba's documentation, but also quite
    a bit on empirical testing.
    
    This also adds timing related debug prints to make it easier to improve
    on this later.
    
    The DSI pulse mode has only been tested with a fixed-resolution panel,
    which limits the testing of different modes on DSI pulse mode. However,
    as the VSDly calculation also affects pulse mode, so this might cause a
    regression.
    
    Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
    Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
    Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com> # Asus TF700T
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
    Signed-off-by: Robert Foss <rfoss@kernel.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230906-tc358768-v4-12-31725f008a50@ideasonboard.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/lima: set gp bus_stop bit before hard reset [+ + +]
Author: Erico Nunes <nunes.erico@gmail.com>
Date:   Wed Jan 24 03:59:43 2024 +0100

    drm/lima: set gp bus_stop bit before hard reset
    
    [ Upstream commit 27aa58ec85f973d98d336df7b7941149308db80f ]
    
    This is required for reliable hard resets. Otherwise, doing a hard reset
    while a task is still running (such as a task which is being stopped by
    the drm_sched timeout handler) may result in random mmu write timeouts
    or lockups which cause the entire gpu to hang.
    
    Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
    Signed-off-by: Qiang Yu <yuq825@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240124025947.2110659-5-nunes.erico@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/dp: fix the max supported bpp logic [+ + +]
Author: Abhinav Kumar <quic_abhinavk@quicinc.com>
Date:   Mon Aug 5 13:20:08 2024 -0700

    drm/msm/dp: fix the max supported bpp logic
    
    [ Upstream commit d19d5b8d8f6dab942ce5ddbcf34bf7275e778250 ]
    
    Fix the dp_panel_get_supported_bpp() API to return the minimum
    supported bpp correctly for relevant cases and use this API
    to correct the behavior of DP driver which hard-codes the max supported
    bpp to 30.
    
    This is incorrect because the number of lanes and max data rate
    supported by the lanes need to be taken into account.
    
    Replace the hardcoded limit with the appropriate math which accounts
    for the accurate number of lanes and max data rate.
    
    changes in v2:
            - Fix the dp_panel_get_supported_bpp() and use it
            - Drop the max_t usage as dp_panel_get_supported_bpp() already
              returns the min_bpp correctly now
    
    changes in v3:
            - replace min_t with just min as all params are u32
    
    Fixes: c943b4948b58 ("drm/msm/dp: add displayPort driver support")
    Reported-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Closes: https://gitlab.freedesktop.org/drm/msm/-/issues/43
    Tested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> # SM8350-HDK
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Patchwork: https://patchwork.freedesktop.org/patch/607073/
    Link: https://lore.kernel.org/r/20240805202009.1120981-1-quic_abhinavk@quicinc.com
    Signed-off-by: Stephen Boyd <swboyd@chromium.org>
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dp: reset the link phy params before link training [+ + +]
Author: Abhinav Kumar <quic_abhinavk@quicinc.com>
Date:   Thu Jul 25 15:04:50 2024 -0700

    drm/msm/dp: reset the link phy params before link training
    
    [ Upstream commit 319aca883bfa1b85ee08411541b51b9a934ac858 ]
    
    Before re-starting link training reset the link phy params namely
    the pre-emphasis and voltage swing levels otherwise the next
    link training begins at the previously cached levels which can result
    in link training failures.
    
    Fixes: 8ede2ecc3e5e ("drm/msm/dp: Add DP compliance tests on Snapdragon Chipsets")
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Tested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> # SM8350-HDK
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Patchwork: https://patchwork.freedesktop.org/patch/605946/
    Link: https://lore.kernel.org/r/20240725220450.131245-1-quic_abhinavk@quicinc.com
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/dpu: capture snapshot on the first commit_done timeout [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Mon Feb 26 04:28:01 2024 +0200

    drm/msm/dpu: capture snapshot on the first commit_done timeout
    
    [ Upstream commit 4be445f5b6b6810baf397b2d159bd07c3573fd75 ]
    
    In order to debug commit_done timeouts, capture the devcoredump state
    when the first timeout occurs after the encoder has been enabled.
    
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/579850/
    Link: https://lore.kernel.org/r/20240226-fd-dpu-debug-timeout-v4-3-51eec83dde23@linaro.org
    Stable-dep-of: aedf02e46eb5 ("drm/msm/dpu: move dpu_encoder's connector assignment to atomic_enable()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: cleanup FB if dpu_format_populate_layout fails [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Jun 25 00:13:41 2024 +0300

    drm/msm/dpu: cleanup FB if dpu_format_populate_layout fails
    
    [ Upstream commit bfa1a6283be390947d3649c482e5167186a37016 ]
    
    If the dpu_format_populate_layout() fails, then FB is prepared, but not
    cleaned up. This ends up leaking the pin_count on the GEM object and
    causes a splat during DRM file closure:
    
    msm_obj->pin_count
    WARNING: CPU: 2 PID: 569 at drivers/gpu/drm/msm/msm_gem.c:121 update_lru_locked+0xc4/0xcc
    [...]
    Call trace:
     update_lru_locked+0xc4/0xcc
     put_pages+0xac/0x100
     msm_gem_free_object+0x138/0x180
     drm_gem_object_free+0x1c/0x30
     drm_gem_object_handle_put_unlocked+0x108/0x10c
     drm_gem_object_release_handle+0x58/0x70
     idr_for_each+0x68/0xec
     drm_gem_release+0x28/0x40
     drm_file_free+0x174/0x234
     drm_release+0xb0/0x160
     __fput+0xc0/0x2c8
     __fput_sync+0x50/0x5c
     __arm64_sys_close+0x38/0x7c
     invoke_syscall+0x48/0x118
     el0_svc_common.constprop.0+0x40/0xe0
     do_el0_svc+0x1c/0x28
     el0_svc+0x4c/0x120
     el0t_64_sync_handler+0x100/0x12c
     el0t_64_sync+0x190/0x194
    irq event stamp: 129818
    hardirqs last  enabled at (129817): [<ffffa5f6d953fcc0>] console_unlock+0x118/0x124
    hardirqs last disabled at (129818): [<ffffa5f6da7dcf04>] el1_dbg+0x24/0x8c
    softirqs last  enabled at (129808): [<ffffa5f6d94afc18>] handle_softirqs+0x4c8/0x4e8
    softirqs last disabled at (129785): [<ffffa5f6d94105e4>] __do_softirq+0x14/0x20
    
    Fixes: 25fdd5933e4c ("drm/msm: Add SDM845 DPU support")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Patchwork: https://patchwork.freedesktop.org/patch/600714/
    Link: https://lore.kernel.org/r/20240625-dpu-mode-config-width-v5-1-501d984d634f@linaro.org
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: don't play tricks with debug macros [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Fri Aug 2 22:47:34 2024 +0300

    drm/msm/dpu: don't play tricks with debug macros
    
    [ Upstream commit df24373435f5899a2a98b7d377479c8d4376613b ]
    
    DPU debugging macros need to be converted to a proper drm_debug_*
    macros, however this is a going an intrusive patch, not suitable for a
    fix. Wire DPU_DEBUG and DPU_DEBUG_DRIVER to always use DRM_DEBUG_DRIVER
    to make sure that DPU debugging messages always end up in the drm debug
    messages and are controlled via the usual drm.debug mask.
    
    I don't think that it is a good idea for a generic DPU_DEBUG macro to be
    tied to DRM_UT_KMS. It is used to report a debug message from driver, so by
    default it should go to the DRM_UT_DRIVER channel. While refactoring
    debug macros later on we might end up with particular messages going to
    ATOMIC or KMS, but DRIVER should be the default.
    
    Fixes: 25fdd5933e4c ("drm/msm: Add SDM845 DPU support")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Patchwork: https://patchwork.freedesktop.org/patch/606932/
    Link: https://lore.kernel.org/r/20240802-dpu-fix-wb-v2-2-7eac9eb8e895@linaro.org
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: drop MSM_ENC_VBLANK support [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Wed Oct 4 06:19:03 2023 +0300

    drm/msm/dpu: drop MSM_ENC_VBLANK support
    
    [ Upstream commit a08935fc859b22884dcb6b5126d3a986467101ce ]
    
    There are no in-kernel users of MSM_ENC_VBLANK wait type. Drop it
    together with the corresponding wait_for_vblank callback.
    
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Patchwork: https://patchwork.freedesktop.org/patch/560701/
    Link: https://lore.kernel.org/r/20231004031903.518223-1-dmitry.baryshkov@linaro.org
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Stable-dep-of: aedf02e46eb5 ("drm/msm/dpu: move dpu_encoder's connector assignment to atomic_enable()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: move dpu_encoder's connector assignment to atomic_enable() [+ + +]
Author: Abhinav Kumar <quic_abhinavk@quicinc.com>
Date:   Wed Jul 31 12:17:22 2024 -0700

    drm/msm/dpu: move dpu_encoder's connector assignment to atomic_enable()
    
    [ Upstream commit aedf02e46eb549dac8db4821a6b9f0c6bf6e3990 ]
    
    For cases where the crtc's connectors_changed was set without enable/active
    getting toggled , there is an atomic_enable() call followed by an
    atomic_disable() but without an atomic_mode_set().
    
    This results in a NULL ptr access for the dpu_encoder_get_drm_fmt() call in
    the atomic_enable() as the dpu_encoder's connector was cleared in the
    atomic_disable() but not re-assigned as there was no atomic_mode_set() call.
    
    Fix the NULL ptr access by moving the assignment for atomic_enable() and also
    use drm_atomic_get_new_connector_for_encoder() to get the connector from
    the atomic_state.
    
    Fixes: 25fdd5933e4c ("drm/msm: Add SDM845 DPU support")
    Reported-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Closes: https://gitlab.freedesktop.org/drm/msm/-/issues/59
    Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Tested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> # SM8350-HDK
    Patchwork: https://patchwork.freedesktop.org/patch/606729/
    Link: https://lore.kernel.org/r/20240731191723.3050932-1-quic_abhinavk@quicinc.com
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: split dpu_encoder_wait_for_event into two functions [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Mon Feb 26 04:28:00 2024 +0200

    drm/msm/dpu: split dpu_encoder_wait_for_event into two functions
    
    [ Upstream commit d72a3d35b7ef5a3c0260462f130fa3dd7576aa2f ]
    
    Stop multiplexing several events via the dpu_encoder_wait_for_event()
    function. Split it into two distinct functions two allow separate
    handling of those events.
    
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/579848/
    Link: https://lore.kernel.org/r/20240226-fd-dpu-debug-timeout-v4-2-51eec83dde23@linaro.org
    Stable-dep-of: aedf02e46eb5 ("drm/msm/dpu: move dpu_encoder's connector assignment to atomic_enable()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: take plane rotation into account for wide planes [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Thu Jun 27 00:45:57 2024 +0300

    drm/msm/dpu: take plane rotation into account for wide planes
    
    [ Upstream commit d3a785e4f983f523380e023d8a05fb6d04402957 ]
    
    Take into account the plane rotation and flipping when calculating src
    positions for the wide plane parts.
    
    This is not an issue yet, because rotation is only supported for the
    UBWC planes and wide UBWC planes are rejected anyway because in parallel
    multirect case only the half of the usual width is supported for tiled
    formats. However it's better to fix this now rather than stumbling upon
    it later.
    
    Fixes: 80e8ae3b38ab ("drm/msm/dpu: add support for wide planes")
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/601059/
    Link: https://lore.kernel.org/r/20240627-dpu-virtual-wide-v5-3-5efb90cbb8be@linaro.org
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: try multirect based on mdp clock limits [+ + +]
Author: Abhinav Kumar <quic_abhinavk@quicinc.com>
Date:   Mon Sep 11 15:16:27 2023 -0700

    drm/msm/dpu: try multirect based on mdp clock limits
    
    [ Upstream commit e6c0de5f445091d250b75dabc4c60dd2643b8c98 ]
    
    It's certainly possible that for large resolutions a single DPU SSPP
    cannot process the image without exceeding the MDP clock limits but
    it can still process it in multirect mode because the source rectangles
    will get divided and can fall within the MDP clock limits.
    
    If the SSPP cannot process the image even in multirect mode, then it
    will be rejected in dpu_plane_atomic_check_pipe().
    
    Hence try using multirect for resolutions which cannot be processed
    by a single SSPP without exceeding the MDP clock limits.
    
    changes in v2:
            - use crtc_state's adjusted_mode instead of mode
            - fix the UBWC condition to check maxlinewidth
    
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Tested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/556817/
    Link: https://lore.kernel.org/r/20230911221627.9569-2-quic_abhinavk@quicinc.com
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Stable-dep-of: d3a785e4f983 ("drm/msm/dpu: take plane rotation into account for wide planes")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/dpu: use drmm-managed allocation for dpu_encoder_phys [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Sat Dec 2 00:18:43 2023 +0300

    drm/msm/dpu: use drmm-managed allocation for dpu_encoder_phys
    
    [ Upstream commit 73169b45e1ed296b4357a694f5fa586ac0643ac1 ]
    
    Change struct allocation of encoder's phys backend data to use
    drmm_kzalloc(). This removes the need to perform any actions on encoder
    destruction.
    
    Reviewed-by: Jessica Zhang <quic_jesszhan@quicinc.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/570051/
    Link: https://lore.kernel.org/r/20231201211845.1026967-12-dmitry.baryshkov@linaro.org
    Stable-dep-of: aedf02e46eb5 ("drm/msm/dpu: move dpu_encoder's connector assignment to atomic_enable()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/mdss: Handle the reg bus ICC path [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Sun Dec 3 01:42:47 2023 +0300

    drm/msm/mdss: Handle the reg bus ICC path
    
    [ Upstream commit a55c8ff252d374acb6f78b979cadc38073ce95e8 ]
    
    Apart from the already handled data bus (MAS_MDP_Pn<->DDR), there's
    another path that needs to be handled to ensure MDSS functions properly,
    namely the "reg bus", a.k.a the CPU-MDSS interconnect.
    
    Gating that path may have a variety of effects, from none to otherwise
    inexplicable DSI timeouts.
    
    Provide a way for MDSS driver to vote on this bus.
    
    A note regarding vote values. Newer platforms have corresponding
    bandwidth values in the vendor DT files. For the older platforms there
    was a static vote in the mdss_mdp and rotator drivers. I choose to be
    conservative here and choose this value as a default.
    
    Co-developed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
    Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Patchwork: https://patchwork.freedesktop.org/patch/570164/
    Link: https://lore.kernel.org/r/20231202224247.1282567-5-dmitry.baryshkov@linaro.org
    Stable-dep-of: 3e30296b374a ("drm/msm: fix the highest_bank_bit for sc7180")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/mdss: Rename path references to mdp_path [+ + +]
Author: Konrad Dybcio <konrad.dybcio@linaro.org>
Date:   Sun Dec 3 01:42:45 2023 +0300

    drm/msm/mdss: Rename path references to mdp_path
    
    [ Upstream commit fabaf176322d687b91a4acf1630c0d0a7d097faa ]
    
    The DPU1 driver needs to handle all MDPn<->DDR paths, as well as
    CPU<->SLAVE_DISPLAY_CFG. The former ones share how their values are
    calculated, but the latter one has static predefines spanning all SoCs.
    
    In preparation for supporting the CPU<->SLAVE_DISPLAY_CFG path, rename
    the path-related struct members to include "mdp_".
    
    Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Patchwork: https://patchwork.freedesktop.org/patch/570163/
    Link: https://lore.kernel.org/r/20231202224247.1282567-3-dmitry.baryshkov@linaro.org
    Stable-dep-of: 3e30296b374a ("drm/msm: fix the highest_bank_bit for sc7180")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm/mdss: specify cfg bandwidth for SDM670 [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Fri Dec 15 03:32:22 2023 +0200

    drm/msm/mdss: specify cfg bandwidth for SDM670
    
    commit 8d35217149daa33358c284aca6a56d5ab92cfc6c upstream.
    
    Lower the requested CFG bus bandwidth for the SDM670 platform. The
    default value is 153600 kBps, which is twice as big as required by the
    platform according to the vendor kernel.
    
    Fixes: a55c8ff252d3 ("drm/msm/mdss: Handle the reg bus ICC path")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Tested-by: Richard Acayan <mailingradian@gmail.com>
    Patchwork: https://patchwork.freedesktop.org/patch/572182/
    Link: https://lore.kernel.org/r/20231215013222.827975-1-dmitry.baryshkov@linaro.org
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/msm/mdss: switch mdss to use devm_of_icc_get() [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Sun Dec 3 01:42:44 2023 +0300

    drm/msm/mdss: switch mdss to use devm_of_icc_get()
    
    [ Upstream commit ded61d7dc5a0f8cfe7390aba33187c862d09b177 ]
    
    Stop using hand-written reset function for ICC release, use
    devm_of_icc_get() instead.
    
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Patchwork: https://patchwork.freedesktop.org/patch/570161/
    Link: https://lore.kernel.org/r/20231202224247.1282567-2-dmitry.baryshkov@linaro.org
    Stable-dep-of: 3e30296b374a ("drm/msm: fix the highest_bank_bit for sc7180")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm: fix the highest_bank_bit for sc7180 [+ + +]
Author: Abhinav Kumar <quic_abhinavk@quicinc.com>
Date:   Thu Aug 8 16:52:27 2024 -0700

    drm/msm: fix the highest_bank_bit for sc7180
    
    [ Upstream commit 3e30296b374af33cb4c12ff93df0b1e5b2d0f80b ]
    
    sc7180 programs the ubwc settings as 0x1e as that would mean a
    highest bank bit of 14 which matches what the GPU sets as well.
    
    However, the highest_bank_bit field of the msm_mdss_data which is
    being used to program the SSPP's fetch configuration is programmed
    to a highest bank bit of 16 as 0x3 translates to 16 and not 14.
    
    Fix the highest bank bit field used for the SSPP to match the mdss
    and gpu settings.
    
    Fixes: 6f410b246209 ("drm/msm/mdss: populate missing data")
    Reviewed-by: Rob Clark <robdclark@gmail.com>
    Tested-by: Stephen Boyd <swboyd@chromium.org> # Trogdor.Lazor
    Patchwork: https://patchwork.freedesktop.org/patch/607625/
    Link: https://lore.kernel.org/r/20240808235227.2701479-1-quic_abhinavk@quicinc.com
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm: Reduce fallout of fence signaling vs reclaim hangs [+ + +]
Author: Rob Clark <robdclark@chromium.org>
Date:   Fri Nov 17 07:14:19 2023 -0800

    drm/msm: Reduce fallout of fence signaling vs reclaim hangs
    
    [ Upstream commit 4bea53b9c7c72fd12a0ceebe88a71723c0a514b8 ]
    
    Until various PM devfreq/QoS and interconnect patches land, we could
    potentially trigger reclaim from gpu scheduler thread, and under enough
    memory pressure that could trigger a sort of deadlock.  Eventually the
    wait will timeout and we'll move on to consider other GEM objects.  But
    given that there is still a potential for deadlock/stalling, we should
    reduce the timeout to contain the damage.
    
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Patchwork: https://patchwork.freedesktop.org/patch/568031/
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/panel: nt36523: Set 120Hz fps for xiaomi,elish panels [+ + +]
Author: Jianhua Lu <lujianhua000@gmail.com>
Date:   Fri Jan 12 22:00:47 2024 +0800

    drm/panel: nt36523: Set 120Hz fps for xiaomi,elish panels
    
    commit de8ac5696ebc3a2d89c88b70aa3996ee112e76ef upstream.
    
    After commit e6c0de5f4450 ("drm/msm/dpu: try multirect based on mdp clock limits")
    merged, 120Hz is working on xiaomi,elish panels, so feature it.
    
    Signed-off-by: Jianhua Lu <lujianhua000@gmail.com>
    Reviewed-by: Jessica Zhang <quic_jesszhan@quicinc.com>
    Link: https://lore.kernel.org/r/20240112140047.18123-1-lujianhua000@gmail.com
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240112140047.18123-1-lujianhua000@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/rockchip: vop2: clear afbc en and transform bit for cluster window at linear mode [+ + +]
Author: Andy Yan <andy.yan@rock-chips.com>
Date:   Mon Dec 11 19:57:41 2023 +0800

    drm/rockchip: vop2: clear afbc en and transform bit for cluster window at linear mode
    
    [ Upstream commit 20529a68307feed00dd3d431d3fff0572616b0f2 ]
    
    The enable bit and transform offset of cluster windows should be
    cleared when it work at linear mode, or we may have a iommu fault
    issue on rk3588 which cluster windows switch between afbc and linear
    mode.
    
    As the cluster windows of rk3568 only supports afbc format
    so is therefore not affected.
    
    Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
    Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20231211115741.1784954-1-andyshrk@163.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/tegra: Zero-initialize iosys_map [+ + +]
Author: Mikko Perttunen <mperttunen@nvidia.com>
Date:   Fri Sep 1 14:59:10 2023 +0300

    drm/tegra: Zero-initialize iosys_map
    
    [ Upstream commit 3868ff006b572cf501a3327832d36c64a9eca86a ]
    
    UBSAN reports an invalid load for bool, as the iosys_map is read
    later without being initialized. Zero-initialize it to avoid this.
    
    Reported-by: Ashish Mhetre <amhetre@nvidia.com>
    Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230901115910.701518-2-cyndis@kapsi.fi
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
EDAC/skx_common: Allow decoding of SGX addresses [+ + +]
Author: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Date:   Mon Apr 8 20:04:19 2024 +0800

    EDAC/skx_common: Allow decoding of SGX addresses
    
    [ Upstream commit e0d335077831196bffe6a634ffe385fc684192ca ]
    
    There are no "struct page" associations with SGX pages, causing the check
    pfn_to_online_page() to fail. This results in the inability to decode the
    SGX addresses and warning messages like:
    
      Invalid address 0x34cc9a98840 in IA32_MC17_ADDR
    
    Add an additional check to allow the decoding of the error address and to
    skip the warning message, if the error address is an SGX address.
    
    Fixes: 1e92af09fab1 ("EDAC/skx_common: Filter out the invalid address")
    Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Link: https://lore.kernel.org/r/20240408120419.50234-1-qiuxu.zhuo@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

EDAC/skx_common: Filter out the invalid address [+ + +]
Author: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Date:   Thu Dec 7 09:45:12 2023 +0800

    EDAC/skx_common: Filter out the invalid address
    
    [ Upstream commit 1e92af09fab1b5589f3a7ae68109e3c6a5ca6c6e ]
    
    Decoding an invalid address with certain firmware decoders could
    cause a #PF (Page Fault) in the EFI runtime context, which could
    subsequently hang the system. To make {i10nm,skx}_edac more robust
    against such bogus firmware decoders, filter out invalid addresses
    before allowing the firmware decoder to process them.
    
    Suggested-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Link: https://lore.kernel.org/r/20231207014512.78564-1-qiuxu.zhuo@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
evm: don't copy up 'security.evm' xattr [+ + +]
Author: Mimi Zohar <zohar@linux.ibm.com>
Date:   Tue Dec 12 06:12:43 2023 -0500

    evm: don't copy up 'security.evm' xattr
    
    [ Upstream commit 40ca4ee3136d2d09977d1cab8c0c0e1582c3359d ]
    
    The security.evm HMAC and the original file signatures contain
    filesystem specific data.  As a result, the HMAC and signature
    are not the same on the stacked and backing filesystems.
    
    Don't copy up 'security.evm'.
    
    Reviewed-by: Amir Goldstein <amir73il@gmail.com>
    Reviewed-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ext4: do not trim the group with corrupted block bitmap [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Thu Jan 4 22:20:34 2024 +0800

    ext4: do not trim the group with corrupted block bitmap
    
    [ Upstream commit 172202152a125955367393956acf5f4ffd092e0d ]
    
    Otherwise operating on an incorrupted block bitmap can lead to all sorts
    of unknown problems.
    
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20240104142040.2835097-3-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ext4: set the type of max_zeroout to unsigned int to avoid overflow [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Tue Mar 19 19:33:24 2024 +0800

    ext4: set the type of max_zeroout to unsigned int to avoid overflow
    
    [ Upstream commit 261341a932d9244cbcd372a3659428c8723e5a49 ]
    
    The max_zeroout is of type int and the s_extent_max_zeroout_kb is of
    type uint, and the s_extent_max_zeroout_kb can be freely modified via
    the sysfs interface. When the block size is 1024, max_zeroout may
    overflow, so declare it as unsigned int to avoid overflow.
    
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20240319113325.3110393-9-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
f2fs: fix to do sanity check in update_sit_entry [+ + +]
Author: Zhiguo Niu <zhiguo.niu@unisoc.com>
Date:   Wed Feb 28 19:59:54 2024 +0800

    f2fs: fix to do sanity check in update_sit_entry
    
    [ Upstream commit 36959d18c3cf09b3c12157c6950e18652067de77 ]
    
    If GET_SEGNO return NULL_SEGNO for some unecpected case,
    update_sit_entry will access invalid memory address,
    cause system crash. It is better to do sanity check about
    GET_SEGNO just like update_segment_mtime & locate_dirty_segment.
    
    Also remove some redundant judgment code.
    
    Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com>
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

f2fs: stop checkpoint when get a out-of-bounds segment [+ + +]
Author: Zhiguo Niu <zhiguo.niu@unisoc.com>
Date:   Tue Feb 20 14:11:24 2024 +0800

    f2fs: stop checkpoint when get a out-of-bounds segment
    
    [ Upstream commit f9e28904e6442019043a8e94ec6747a064d06003 ]
    
    There is low probability that an out-of-bounds segment will be got
    on a small-capacity device. In order to prevent subsequent write requests
    allocating block address from this invalid segment, which may cause
    unexpected issue, stop checkpoint should be performed.
    
    Also introduce a new stop cp reason: STOP_CP_REASON_NO_SEGMENT.
    
    Note, f2fs_stop_checkpoint(, false) is complex and it may sleep, so we should
    move it outside segmap_lock spinlock coverage in get_new_segment().
    
    Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com>
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
firmware: cirrus: cs_dsp: Initialize debugfs_root to invalid [+ + +]
Author: Richard Fitzgerald <rf@opensource.cirrus.com>
Date:   Thu Mar 7 10:53:53 2024 +0000

    firmware: cirrus: cs_dsp: Initialize debugfs_root to invalid
    
    [ Upstream commit 66626b15636b5f5cf3d7f6104799f77462748974 ]
    
    Initialize debugfs_root to -ENODEV so that if the client never sets a
    valid debugfs root the debugfs files will not be created.
    
    A NULL pointer passed to any of the debugfs_create_*() functions means
    "create in the root of debugfs". It doesn't mean "ignore".
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Link: https://msgid.link/r/20240307105353.40067-1-rf@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: fix bitmap corruption on close_range() with CLOSE_RANGE_UNSHARE [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sat Aug 3 18:02:00 2024 -0400

    fix bitmap corruption on close_range() with CLOSE_RANGE_UNSHARE
    
    commit 9a2fa1472083580b6c66bdaf291f591e1170123a upstream.
    
    copy_fd_bitmaps(new, old, count) is expected to copy the first
    count/BITS_PER_LONG bits from old->full_fds_bits[] and fill
    the rest with zeroes.  What it does is copying enough words
    (BITS_TO_LONGS(count/BITS_PER_LONG)), then memsets the rest.
    That works fine, *if* all bits past the cutoff point are
    clear.  Otherwise we are risking garbage from the last word
    we'd copied.
    
    For most of the callers that is true - expand_fdtable() has
    count equal to old->max_fds, so there's no open descriptors
    past count, let alone fully occupied words in ->open_fds[],
    which is what bits in ->full_fds_bits[] correspond to.
    
    The other caller (dup_fd()) passes sane_fdtable_size(old_fdt, max_fds),
    which is the smallest multiple of BITS_PER_LONG that covers all
    opened descriptors below max_fds.  In the common case (copying on
    fork()) max_fds is ~0U, so all opened descriptors will be below
    it and we are fine, by the same reasons why the call in expand_fdtable()
    is safe.
    
    Unfortunately, there is a case where max_fds is less than that
    and where we might, indeed, end up with junk in ->full_fds_bits[] -
    close_range(from, to, CLOSE_RANGE_UNSHARE) with
            * descriptor table being currently shared
            * 'to' being above the current capacity of descriptor table
            * 'from' being just under some chunk of opened descriptors.
    In that case we end up with observably wrong behaviour - e.g. spawn
    a child with CLONE_FILES, get all descriptors in range 0..127 open,
    then close_range(64, ~0U, CLOSE_RANGE_UNSHARE) and watch dup(0) ending
    up with descriptor #128, despite #64 being observably not open.
    
    The minimally invasive fix would be to deal with that in dup_fd().
    If this proves to add measurable overhead, we can go that way, but
    let's try to fix copy_fd_bitmaps() first.
    
    * new helper: bitmap_copy_and_expand(to, from, bits_to_copy, size).
    * make copy_fd_bitmaps() take the bitmap size in words, rather than
    bits; it's 'count' argument is always a multiple of BITS_PER_LONG,
    so we are not losing any information, and that way we can use the
    same helper for all three bitmaps - compiler will see that count
    is a multiple of BITS_PER_LONG for the large ones, so it'll generate
    plain memcpy()+memset().
    
    Reproducer added to tools/testing/selftests/core/close_range_test.c
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fs/netfs/fscache_cookie: add missing "n_accesses" check [+ + +]
Author: Max Kellermann <max.kellermann@ionos.com>
Date:   Mon Jul 29 17:19:30 2024 +0100

    fs/netfs/fscache_cookie: add missing "n_accesses" check
    
    commit f71aa06398aabc2e3eaac25acdf3d62e0094ba70 upstream.
    
    This fixes a NULL pointer dereference bug due to a data race which
    looks like this:
    
      BUG: kernel NULL pointer dereference, address: 0000000000000008
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      PGD 0 P4D 0
      Oops: 0000 [#1] SMP PTI
      CPU: 33 PID: 16573 Comm: kworker/u97:799 Not tainted 6.8.7-cm4all1-hp+ #43
      Hardware name: HP ProLiant DL380 Gen9/ProLiant DL380 Gen9, BIOS P89 10/17/2018
      Workqueue: events_unbound netfs_rreq_write_to_cache_work
      RIP: 0010:cachefiles_prepare_write+0x30/0xa0
      Code: 57 41 56 45 89 ce 41 55 49 89 cd 41 54 49 89 d4 55 53 48 89 fb 48 83 ec 08 48 8b 47 08 48 83 7f 10 00 48 89 34 24 48 8b 68 20 <48> 8b 45 08 4c 8b 38 74 45 49 8b 7f 50 e8 4e a9 b0 ff 48 8b 73 10
      RSP: 0018:ffffb4e78113bde0 EFLAGS: 00010286
      RAX: ffff976126be6d10 RBX: ffff97615cdb8438 RCX: 0000000000020000
      RDX: ffff97605e6c4c68 RSI: ffff97605e6c4c60 RDI: ffff97615cdb8438
      RBP: 0000000000000000 R08: 0000000000278333 R09: 0000000000000001
      R10: ffff97605e6c4600 R11: 0000000000000001 R12: ffff97605e6c4c68
      R13: 0000000000020000 R14: 0000000000000001 R15: ffff976064fe2c00
      FS:  0000000000000000(0000) GS:ffff9776dfd40000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000008 CR3: 000000005942c002 CR4: 00000000001706f0
      Call Trace:
       <TASK>
       ? __die+0x1f/0x70
       ? page_fault_oops+0x15d/0x440
       ? search_module_extables+0xe/0x40
       ? fixup_exception+0x22/0x2f0
       ? exc_page_fault+0x5f/0x100
       ? asm_exc_page_fault+0x22/0x30
       ? cachefiles_prepare_write+0x30/0xa0
       netfs_rreq_write_to_cache_work+0x135/0x2e0
       process_one_work+0x137/0x2c0
       worker_thread+0x2e9/0x400
       ? __pfx_worker_thread+0x10/0x10
       kthread+0xcc/0x100
       ? __pfx_kthread+0x10/0x10
       ret_from_fork+0x30/0x50
       ? __pfx_kthread+0x10/0x10
       ret_from_fork_asm+0x1b/0x30
       </TASK>
      Modules linked in:
      CR2: 0000000000000008
      ---[ end trace 0000000000000000 ]---
    
    This happened because fscache_cookie_state_machine() was slow and was
    still running while another process invoked fscache_unuse_cookie();
    this led to a fscache_cookie_lru_do_one() call, setting the
    FSCACHE_COOKIE_DO_LRU_DISCARD flag, which was picked up by
    fscache_cookie_state_machine(), withdrawing the cookie via
    cachefiles_withdraw_cookie(), clearing cookie->cache_priv.
    
    At the same time, yet another process invoked
    cachefiles_prepare_write(), which found a NULL pointer in this code
    line:
    
      struct cachefiles_object *object = cachefiles_cres_object(cres);
    
    The next line crashes, obviously:
    
      struct cachefiles_cache *cache = object->volume->cache;
    
    During cachefiles_prepare_write(), the "n_accesses" counter is
    non-zero (via fscache_begin_operation()).  The cookie must not be
    withdrawn until it drops to zero.
    
    The counter is checked by fscache_cookie_state_machine() before
    switching to FSCACHE_COOKIE_STATE_RELINQUISHING and
    FSCACHE_COOKIE_STATE_WITHDRAWING (in "case
    FSCACHE_COOKIE_STATE_FAILED"), but not for
    FSCACHE_COOKIE_STATE_LRU_DISCARDING ("case
    FSCACHE_COOKIE_STATE_ACTIVE").
    
    This patch adds the missing check.  With a non-zero access counter,
    the function returns and the next fscache_end_cookie_access() call
    will queue another fscache_cookie_state_machine() call to handle the
    still-pending FSCACHE_COOKIE_DO_LRU_DISCARD.
    
    Fixes: 12bb21a29c19 ("fscache: Implement cookie user counting and resource pinning")
    Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Link: https://lore.kernel.org/r/20240729162002.3436763-2-dhowells@redhat.com
    cc: Jeff Layton <jlayton@kernel.org>
    cc: netfs@lists.linux.dev
    cc: linux-fsdevel@vger.kernel.org
    cc: stable@vger.kernel.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fs/ntfs3: add prefix to bitmap_size() and use BITS_TO_U64() [+ + +]
Author: Alexander Lobakin <aleksander.lobakin@intel.com>
Date:   Wed Mar 27 16:23:46 2024 +0100

    fs/ntfs3: add prefix to bitmap_size() and use BITS_TO_U64()
    
    commit 3f5ef5109f6a054ce58b3bec7214ed76c9cc269f upstream.
    
    bitmap_size() is a pretty generic name and one may want to use it for
    a generic bitmap API function. At the same time, its logic is
    NTFS-specific, as it aligns to the sizeof(u64), not the sizeof(long)
    (although it uses ideologically right ALIGN() instead of division).
    Add the prefix 'ntfs3_' used for that FS (not just 'ntfs_' to not mix
    it with the legacy module) and use generic BITS_TO_U64() while at it.
    
    Suggested-by: Yury Norov <yury.norov@gmail.com> # BITS_TO_U64()
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Reviewed-by: Yury Norov <yury.norov@gmail.com>
    Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fs: binfmt_elf_efpic: don't use missing interpreter's properties [+ + +]
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Thu Jan 18 07:06:37 2024 -0800

    fs: binfmt_elf_efpic: don't use missing interpreter's properties
    
    [ Upstream commit 15fd1dc3dadb4268207fa6797e753541aca09a2a ]
    
    Static FDPIC executable may get an executable stack even when it has
    non-executable GNU_STACK segment. This happens when STACK segment has rw
    permissions, but does not specify stack size. In that case FDPIC loader
    uses permissions of the interpreter's stack, and for static executables
    with no interpreter it results in choosing the arch-default permissions
    for the stack.
    
    Fix that by using the interpreter's properties only when the interpreter
    is actually used.
    
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Link: https://lore.kernel.org/r/20240118150637.660461-1-jcmvbkbc@gmail.com
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fuse: fix UAF in rcu pathwalks [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Sep 28 00:19:39 2023 -0400

    fuse: fix UAF in rcu pathwalks
    
    [ Upstream commit 053fc4f755ad43cf35210677bcba798ccdc48d0c ]
    
    ->permission(), ->get_link() and ->inode_get_acl() might dereference
    ->s_fs_info (and, in case of ->permission(), ->s_fs_info->fc->user_ns
    as well) when called from rcu pathwalk.
    
    Freeing ->s_fs_info->fc is rcu-delayed; we need to make freeing ->s_fs_info
    and dropping ->user_ns rcu-delayed too.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

fuse: Initialize beyond-EOF page contents before setting uptodate [+ + +]
Author: Jann Horn <jannh@google.com>
Date:   Tue Aug 6 21:51:42 2024 +0200

    fuse: Initialize beyond-EOF page contents before setting uptodate
    
    commit 3c0da3d163eb32f1f91891efaade027fa9b245b9 upstream.
    
    fuse_notify_store(), unlike fuse_do_readpage(), does not enable page
    zeroing (because it can be used to change partial page contents).
    
    So fuse_notify_store() must be more careful to fully initialize page
    contents (including parts of the page that are beyond end-of-file)
    before marking the page uptodate.
    
    The current code can leave beyond-EOF page contents uninitialized, which
    makes these uninitialized page contents visible to userspace via mmap().
    
    This is an information leak, but only affects systems which do not
    enable init-on-alloc (via CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y or the
    corresponding kernel command line parameter).
    
    Link: https://bugs.chromium.org/p/project-zero/issues/detail?id=2574
    Cc: stable@kernel.org
    Fixes: a1d75f258230 ("fuse: add store request")
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
gfs2: Refcounting fix in gfs2_thaw_super [+ + +]
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Mon Dec 25 20:07:46 2023 +0100

    gfs2: Refcounting fix in gfs2_thaw_super
    
    [ Upstream commit 4e58543e7da4859c4ba61d15493e3522b6ad71fd ]
    
    It turns out that the .freeze_super and .thaw_super operations require
    the filesystem to manage the superblock refcount itself.  We are using
    the freeze_super() and thaw_super() helpers to mostly take care of that
    for us, but this means that the superblock may no longer be around by
    when thaw_super() returns, and gfs2_thaw_super() will then access freed
    memory.  Take an extra superblock reference in gfs2_thaw_super() to fix
    that.
    
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gfs2: setattr_chown: Add missing initialization [+ + +]
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Sat Oct 21 20:51:13 2023 +0200

    gfs2: setattr_chown: Add missing initialization
    
    [ Upstream commit 2d8d7990619878a848b1d916c2f936d3012ee17d ]
    
    Add a missing initialization of variable ap in setattr_chown().
    Without, chown() may be able to bypass quotas.
    
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gpio: mlxbf3: Support shutdown() function [+ + +]
Author: Asmaa Mnebhi <asmaa@nvidia.com>
Date:   Tue Jun 11 13:15:09 2024 -0400

    gpio: mlxbf3: Support shutdown() function
    
    [ Upstream commit aad41832326723627ad8ac9ee8a543b6dca4454d ]
    
    During Linux graceful reboot, the GPIO interrupts are not disabled.
    Since the drivers are not removed during graceful reboot,
    the logic to call mlxbf3_gpio_irq_disable() is not triggered.
    Interrupts that remain enabled can cause issues on subsequent boots.
    
    For example, the mlxbf-gige driver contains PHY logic to bring up the link.
    If the gpio-mlxbf3 driver loads first, the mlxbf-gige driver
    will use a GPIO interrupt to bring up the link.
    Otherwise, it will use polling.
    The next time Linux boots and loads the drivers in this order, we encounter the issue:
    - mlxbf-gige loads first and uses polling while the GPIO10
      interrupt is still enabled from the previous boot. So if
      the interrupt triggers, there is nothing to clear it.
    - gpio-mlxbf3 loads.
    - i2c-mlxbf loads. The interrupt doesn't trigger for I2C
      because it is shared with the GPIO interrupt line which
      was not cleared.
    
    The solution is to add a shutdown function to the GPIO driver to clear and disable
    all interrupts. Also clear the interrupt after disabling it in mlxbf3_gpio_irq_disable().
    
    Fixes: 38a700efc510 ("gpio: mlxbf3: Add gpio driver support")
    Signed-off-by: Asmaa Mnebhi <asmaa@nvidia.com>
    Reviewed-by: David Thompson <davthompson@nvidia.com>
    Reviewed-by: Andy Shevchenko <andy@kernel.org>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20240611171509.22151-1-asmaa@nvidia.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gpio: sysfs: extend the critical section for unregistering sysfs devices [+ + +]
Author: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Date:   Wed Jan 24 14:08:45 2024 +0100

    gpio: sysfs: extend the critical section for unregistering sysfs devices
    
    [ Upstream commit 59cba4a0e6ca1058fbf88fec22530a4e2841802a ]
    
    Checking the gdev->mockdev pointer for NULL must be part of the critical
    section.
    
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gtp: pull network headers in gtp_dev_xmit() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Aug 8 13:24:55 2024 +0000

    gtp: pull network headers in gtp_dev_xmit()
    
    commit 3a3be7ff9224f424e485287b54be00d2c6bd9c40 upstream.
    
    syzbot/KMSAN reported use of uninit-value in get_dev_xmit() [1]
    
    We must make sure the IPv4 or Ipv6 header is pulled in skb->head
    before accessing fields in them.
    
    Use pskb_inet_may_pull() to fix this issue.
    
    [1]
    BUG: KMSAN: uninit-value in ipv6_pdp_find drivers/net/gtp.c:220 [inline]
     BUG: KMSAN: uninit-value in gtp_build_skb_ip6 drivers/net/gtp.c:1229 [inline]
     BUG: KMSAN: uninit-value in gtp_dev_xmit+0x1424/0x2540 drivers/net/gtp.c:1281
      ipv6_pdp_find drivers/net/gtp.c:220 [inline]
      gtp_build_skb_ip6 drivers/net/gtp.c:1229 [inline]
      gtp_dev_xmit+0x1424/0x2540 drivers/net/gtp.c:1281
      __netdev_start_xmit include/linux/netdevice.h:4913 [inline]
      netdev_start_xmit include/linux/netdevice.h:4922 [inline]
      xmit_one net/core/dev.c:3580 [inline]
      dev_hard_start_xmit+0x247/0xa20 net/core/dev.c:3596
      __dev_queue_xmit+0x358c/0x5610 net/core/dev.c:4423
      dev_queue_xmit include/linux/netdevice.h:3105 [inline]
      packet_xmit+0x9c/0x6c0 net/packet/af_packet.c:276
      packet_snd net/packet/af_packet.c:3145 [inline]
      packet_sendmsg+0x90e3/0xa3a0 net/packet/af_packet.c:3177
      sock_sendmsg_nosec net/socket.c:730 [inline]
      __sock_sendmsg+0x30f/0x380 net/socket.c:745
      __sys_sendto+0x685/0x830 net/socket.c:2204
      __do_sys_sendto net/socket.c:2216 [inline]
      __se_sys_sendto net/socket.c:2212 [inline]
      __x64_sys_sendto+0x125/0x1d0 net/socket.c:2212
      x64_sys_call+0x3799/0x3c10 arch/x86/include/generated/asm/syscalls_64.h:45
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Uninit was created at:
      slab_post_alloc_hook mm/slub.c:3994 [inline]
      slab_alloc_node mm/slub.c:4037 [inline]
      kmem_cache_alloc_node_noprof+0x6bf/0xb80 mm/slub.c:4080
      kmalloc_reserve+0x13d/0x4a0 net/core/skbuff.c:583
      __alloc_skb+0x363/0x7b0 net/core/skbuff.c:674
      alloc_skb include/linux/skbuff.h:1320 [inline]
      alloc_skb_with_frags+0xc8/0xbf0 net/core/skbuff.c:6526
      sock_alloc_send_pskb+0xa81/0xbf0 net/core/sock.c:2815
      packet_alloc_skb net/packet/af_packet.c:2994 [inline]
      packet_snd net/packet/af_packet.c:3088 [inline]
      packet_sendmsg+0x749c/0xa3a0 net/packet/af_packet.c:3177
      sock_sendmsg_nosec net/socket.c:730 [inline]
      __sock_sendmsg+0x30f/0x380 net/socket.c:745
      __sys_sendto+0x685/0x830 net/socket.c:2204
      __do_sys_sendto net/socket.c:2216 [inline]
      __se_sys_sendto net/socket.c:2212 [inline]
      __x64_sys_sendto+0x125/0x1d0 net/socket.c:2212
      x64_sys_call+0x3799/0x3c10 arch/x86/include/generated/asm/syscalls_64.h:45
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    CPU: 0 UID: 0 PID: 7115 Comm: syz.1.515 Not tainted 6.11.0-rc1-syzkaller-00043-g94ede2a3e913 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/27/2024
    
    Fixes: 999cb275c807 ("gtp: add IPv6 support")
    Fixes: 459aa660eb1d ("gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U)")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Harald Welte <laforge@gnumonks.org>
    Reviewed-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Link: https://patch.msgid.link/20240808132455.3413916-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
HID: wacom: Defer calculation of resolution until resolution_code is known [+ + +]
Author: Jason Gerecke <jason.gerecke@wacom.com>
Date:   Tue Jul 30 08:51:55 2024 -0700

    HID: wacom: Defer calculation of resolution until resolution_code is known
    
    commit 1b8f9c1fb464968a5b18d3acc1da8c00bad24fad upstream.
    
    The Wacom driver maps the HID_DG_TWIST usage to ABS_Z (rather than ABS_RZ)
    for historic reasons. When the code to support twist was introduced in
    commit 50066a042da5 ("HID: wacom: generic: Add support for height, tilt,
    and twist usages"), we were careful to write it in such a way that it had
    HID calculate the resolution of the twist axis assuming ABS_RZ instead
    (so that we would get correct angular behavior). This was broken with
    the introduction of commit 08a46b4190d3 ("HID: wacom: Set a default
    resolution for older tablets"), which moved the resolution calculation
    to occur *before* the adjustment from ABS_Z to ABS_RZ occurred.
    
    This commit moves the calculation of resolution after the point that
    we are finished setting things up for its proper use.
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Fixes: 08a46b4190d3 ("HID: wacom: Set a default resolution for older tablets")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
hrtimer: Prevent queuing of hrtimer without a function callback [+ + +]
Author: Phil Chang <phil.chang@mediatek.com>
Date:   Mon Jun 10 21:31:36 2024 +0800

    hrtimer: Prevent queuing of hrtimer without a function callback
    
    [ Upstream commit 5a830bbce3af16833fe0092dec47b6dd30279825 ]
    
    The hrtimer function callback must not be NULL. It has to be specified by
    the call side but it is not validated by the hrtimer code. When a hrtimer
    is queued without a function callback, the kernel crashes with a null
    pointer dereference when trying to execute the callback in __run_hrtimer().
    
    Introduce a validation before queuing the hrtimer in
    hrtimer_start_range_ns().
    
    [anna-maria: Rephrase commit message]
    
    Signed-off-by: Phil Chang <phil.chang@mediatek.com>
    Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hrtimer: Select housekeeping CPU during migration [+ + +]
Author: Costa Shulyupin <costa.shul@redhat.com>
Date:   Thu Feb 22 22:08:56 2024 +0200

    hrtimer: Select housekeeping CPU during migration
    
    [ Upstream commit 56c2cb10120894be40c40a9bf0ce798da14c50f6 ]
    
    During CPU-down hotplug, hrtimers may migrate to isolated CPUs,
    compromising CPU isolation.
    
    Address this issue by masking valid CPUs for hrtimers using
    housekeeping_cpumask(HK_TYPE_TIMER).
    
    Suggested-by: Waiman Long <longman@redhat.com>
    Signed-off-by: Costa Shulyupin <costa.shul@redhat.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Waiman Long <longman@redhat.com>
    Link: https://lore.kernel.org/r/20240222200856.569036-1-costa.shul@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hwmon: (ltc2992) Avoid division by zero [+ + +]
Author: Antoniu Miclaus <antoniu.miclaus@analog.com>
Date:   Wed Oct 11 16:57:53 2023 +0300

    hwmon: (ltc2992) Avoid division by zero
    
    [ Upstream commit 10b02902048737f376104bc69e5212466e65a542 ]
    
    Do not allow setting shunt resistor to 0. This results in a division by
    zero when performing current value computations based on input voltages
    and connected resistor values.
    
    Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
    Link: https://lore.kernel.org/r/20231011135754.13508-1-antoniu.miclaus@analog.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hwmon: (ltc2992) Fix memory leak in ltc2992_parse_dt() [+ + +]
Author: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Date:   Thu May 23 17:47:14 2024 +0200

    hwmon: (ltc2992) Fix memory leak in ltc2992_parse_dt()
    
    commit a94ff8e50c20bde6d50864849a98b106e45d30c6 upstream.
    
    A new error path was added to the fwnode_for_each_available_node() loop
    in ltc2992_parse_dt(), which leads to an early return that requires a
    call to fwnode_handle_put() to avoid a memory leak in that case.
    
    Add the missing fwnode_handle_put() in the error path from a zero value
    shunt resistor.
    
    Cc: stable@vger.kernel.org
    Fixes: 10b029020487 ("hwmon: (ltc2992) Avoid division by zero")
    Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
    Link: https://lore.kernel.org/r/20240523-fwnode_for_each_available_child_node_scoped-v2-1-701f3a03f2fb@gmail.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

hwmon: (pc87360) Bounds check data->innr usage [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Thu Nov 30 12:02:07 2023 -0800

    hwmon: (pc87360) Bounds check data->innr usage
    
    [ Upstream commit 4265eb062a7303e537ab3792ade31f424c3c5189 ]
    
    Without visibility into the initializers for data->innr, GCC suspects
    using it as an index could walk off the end of the various 14-element
    arrays in data. Perform an explicit clamp to the array size. Silences
    the following warning with GCC 12+:
    
    ../drivers/hwmon/pc87360.c: In function 'pc87360_update_device':
    ../drivers/hwmon/pc87360.c:341:49: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
      341 |                                 data->in_max[i] = pc87360_read_value(data,
          |                                 ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
      342 |                                                   LD_IN, i,
          |                                                   ~~~~~~~~~
      343 |                                                   PC87365_REG_IN_MAX);
          |                                                   ~~~~~~~~~~~~~~~~~~~
    ../drivers/hwmon/pc87360.c:209:12: note: at offset 255 into destination object 'in_max' of size 14
      209 |         u8 in_max[14];          /* Register value */
          |            ^~~~~~
    
    Cc: Jim Cromie <jim.cromie@gmail.com>
    Cc: Jean Delvare <jdelvare@suse.com>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Cc: linux-hwmon@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
    Link: https://lore.kernel.org/r/20231130200207.work.679-kees@kernel.org
    [groeck: Added comment into code clarifying context]
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i2c: qcom-geni: Add missing geni_icc_disable in geni_i2c_runtime_resume [+ + +]
Author: Andi Shyti <andi.shyti@kernel.org>
Date:   Mon Aug 12 21:40:28 2024 +0200

    i2c: qcom-geni: Add missing geni_icc_disable in geni_i2c_runtime_resume
    
    commit 4e91fa1ef3ce6290b4c598e54b5eb6cf134fbec8 upstream.
    
    Add the missing geni_icc_disable() call before returning in the
    geni_i2c_runtime_resume() function.
    
    Commit 9ba48db9f77c ("i2c: qcom-geni: Add missing
    geni_icc_disable in geni_i2c_runtime_resume") by Gaosheng missed
    disabling the interconnect in one case.
    
    Fixes: bf225ed357c6 ("i2c: i2c-qcom-geni: Add interconnect support")
    Cc: Gaosheng Cui <cuigaosheng1@huawei.com>
    Cc: stable@vger.kernel.org # v5.9+
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

i2c: riic: avoid potential division by zero [+ + +]
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Wed Sep 6 22:00:23 2023 +0200

    i2c: riic: avoid potential division by zero
    
    [ Upstream commit 7890fce6201aed46d3576e3d641f9ee5c1f0e16f ]
    
    Value comes from DT, so it could be 0. Unlikely, but could be.
    
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i2c: stm32f7: Add atomic_xfer method to driver [+ + +]
Author: Sean Nyekjaer <sean@geanix.com>
Date:   Wed Aug 16 10:05:52 2023 +0200

    i2c: stm32f7: Add atomic_xfer method to driver
    
    commit 470a662688563d8f5e0fb164930d6f5507a883e4 upstream.
    
    Add an atomic_xfer method to the driver so that it behaves correctly
    when controlling a PMIC that is responsible for device shutdown.
    
    The atomic_xfer method added is similar to the one from the i2c-mv64xxx
    driver. When running an atomic_xfer a bool flag in the driver data is
    set, the interrupt is not unmasked on transfer start, and the IRQ
    handler is manually invoked while waiting for pending transfers to
    complete.
    
    Signed-off-by: Sean Nyekjaer <sean@geanix.com>
    Acked-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Cc: Christoph Niedermaier <cniedermaier@dh-electronics.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

i2c: tegra: Do not mark ACPI devices as irq safe [+ + +]
Author: Breno Leitao <leitao@debian.org>
Date:   Tue Aug 13 09:12:53 2024 -0700

    i2c: tegra: Do not mark ACPI devices as irq safe
    
    commit 14d069d92951a3e150c0a81f2ca3b93e54da913b upstream.
    
    On ACPI machines, the tegra i2c module encounters an issue due to a
    mutex being called inside a spinlock. This leads to the following bug:
    
            BUG: sleeping function called from invalid context at kernel/locking/mutex.c:585
            ...
    
            Call trace:
            __might_sleep
            __mutex_lock_common
            mutex_lock_nested
            acpi_subsys_runtime_resume
            rpm_resume
            tegra_i2c_xfer
    
    The problem arises because during __pm_runtime_resume(), the spinlock
    &dev->power.lock is acquired before rpm_resume() is called. Later,
    rpm_resume() invokes acpi_subsys_runtime_resume(), which relies on
    mutexes, triggering the error.
    
    To address this issue, devices on ACPI are now marked as not IRQ-safe,
    considering the dependency of acpi_subsys_runtime_resume() on mutexes.
    
    Fixes: bd2fdedbf2ba ("i2c: tegra: Add the ACPI support")
    Cc: <stable@vger.kernel.org> # v5.17+
    Co-developed-by: Michael van der Westhuizen <rmikey@meta.com>
    Signed-off-by: Michael van der Westhuizen <rmikey@meta.com>
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
    Reviewed-by: Andy Shevchenko <andy@kernel.org>
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
i3c: mipi-i3c-hci: Do not unmap region not mapped for transfer [+ + +]
Author: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Date:   Thu Sep 21 08:57:01 2023 +0300

    i3c: mipi-i3c-hci: Do not unmap region not mapped for transfer
    
    [ Upstream commit b8806e0c939f168237593af0056c309bf31022b0 ]
    
    Fix following warning (with CONFIG_DMA_API_DEBUG) which happens with a
    transfer without a data buffer.
    
            DMA-API: i3c mipi-i3c-hci.0: device driver tries to free DMA memory it has not allocated [device address=0x0000000000000000] [size=0 bytes]
    
    For those transfers the hci_dma_queue_xfer() doesn't create a mapping and
    the DMA address pointer xfer->data_dma is not set.
    
    Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Link: https://lore.kernel.org/r/20230921055704.1087277-10-jarkko.nikula@linux.intel.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i3c: mipi-i3c-hci: Remove BUG() when Ring Abort request times out [+ + +]
Author: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Date:   Thu Sep 21 08:56:57 2023 +0300

    i3c: mipi-i3c-hci: Remove BUG() when Ring Abort request times out
    
    [ Upstream commit 361acacaf7c706223968c8186f0d3b6e214e7403 ]
    
    Ring Abort request will timeout in case there is an error in the Host
    Controller interrupt delivery or Ring Header configuration. Using BUG()
    makes hard to debug those cases.
    
    Make it less severe and turn BUG() to WARN_ON().
    
    Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Link: https://lore.kernel.org/r/20230921055704.1087277-6-jarkko.nikula@linux.intel.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
IB/hfi1: Fix potential deadlock on &irq_src_lock and &dd->uctxt_lock [+ + +]
Author: Chengfeng Ye <dg573847474@gmail.com>
Date:   Tue Sep 26 10:11:16 2023 +0000

    IB/hfi1: Fix potential deadlock on &irq_src_lock and &dd->uctxt_lock
    
    [ Upstream commit 2f19c4b8395ccb6eb25ccafee883c8cfbe3fc193 ]
    
    handle_receive_interrupt_napi_sp() running inside interrupt handler
    could introduce inverse lock ordering between &dd->irq_src_lock
    and &dd->uctxt_lock, if read_mod_write() is preempted by the isr.
    
              [CPU0]                                        |          [CPU1]
    hfi1_ipoib_dev_open()                                   |
    --> hfi1_netdev_enable_queues()                         |
    --> enable_queues(rx)                                   |
    --> hfi1_rcvctrl()                                      |
    --> set_intr_bits()                                     |
    --> read_mod_write()                                    |
    --> spin_lock(&dd->irq_src_lock)                        |
                                                            | hfi1_poll()
                                                            | --> poll_next()
                                                            | --> spin_lock_irq(&dd->uctxt_lock)
                                                            |
                                                            | --> hfi1_rcvctrl()
                                                            | --> set_intr_bits()
                                                            | --> read_mod_write()
                                                            | --> spin_lock(&dd->irq_src_lock)
    <interrupt>                                             |
       --> handle_receive_interrupt_napi_sp()               |
       --> set_all_fastpath()                               |
       --> hfi1_rcd_get_by_index()                          |
       --> spin_lock_irqsave(&dd->uctxt_lock)               |
    
    This flaw was found by an experimental static analysis tool I am
    developing for irq-related deadlock.
    
    To prevent the potential deadlock, the patch use spin_lock_irqsave()
    on &dd->irq_src_lock inside read_mod_write() to prevent the possible
    deadlock scenario.
    
    Signed-off-by: Chengfeng Ye <dg573847474@gmail.com>
    Link: https://lore.kernel.org/r/20230926101116.2797-1-dg573847474@gmail.com
    Acked-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ice: fix ICE_LAST_OFFSET formula [+ + +]
Author: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Date:   Wed Aug 7 12:53:25 2024 +0200

    ice: fix ICE_LAST_OFFSET formula
    
    [ Upstream commit b966ad832942b5a11e002f9b5ef102b08425b84a ]
    
    For bigger PAGE_SIZE archs, ice driver works on 3k Rx buffers.
    Therefore, ICE_LAST_OFFSET should take into account ICE_RXBUF_3072, not
    ICE_RXBUF_2048.
    
    Fixes: 7237f5b0dba4 ("ice: introduce legacy Rx flag")
    Suggested-by: Luiz Capitulino <luizcap@redhat.com>
    Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ice: fix page reuse when PAGE_SIZE is over 8k [+ + +]
Author: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Date:   Wed Aug 7 12:53:24 2024 +0200

    ice: fix page reuse when PAGE_SIZE is over 8k
    
    [ Upstream commit 50b2143356e888777fc5bca023c39f34f404613a ]
    
    Architectures that have PAGE_SIZE >= 8192 such as arm64 should act the
    same as x86 currently, meaning reuse of a page should only take place
    when no one else is busy with it.
    
    Do two things independently of underlying PAGE_SIZE:
    - store the page count under ice_rx_buf::pgcnt
    - then act upon its value vs ice_rx_buf::pagecnt_bias when making the
      decision regarding page reuse
    
    Fixes: 2b245cb29421 ("ice: Implement transmit and NAPI support")
    Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ice: fix truesize operations for PAGE_SIZE >= 8192 [+ + +]
Author: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Date:   Wed Aug 7 12:53:26 2024 +0200

    ice: fix truesize operations for PAGE_SIZE >= 8192
    
    [ Upstream commit d53d4dcce69be5773e2d0878c9899ebfbf58c393 ]
    
    When working on multi-buffer packet on arch that has PAGE_SIZE >= 8192,
    truesize is calculated and stored in xdp_buff::frame_sz per each
    processed Rx buffer. This means that frame_sz will contain the truesize
    based on last received buffer, but commit 1dc1a7e7f410 ("ice:
    Centrallize Rx buffer recycling") assumed this value will be constant
    for each buffer, which breaks the page recycling scheme and mess up the
    way we update the page::page_offset.
    
    To fix this, let us work on constant truesize when PAGE_SIZE >= 8192
    instead of basing this on size of a packet read from Rx descriptor. This
    way we can simplify the code and avoid calculating truesize per each
    received frame and on top of that when using
    xdp_update_skb_shared_info(), current formula for truesize update will
    be valid.
    
    This means ice_rx_frame_truesize() can be removed altogether.
    Furthermore, first call to it within ice_clean_rx_irq() for 4k PAGE_SIZE
    was redundant as xdp_buff::frame_sz is initialized via xdp_init_buff()
    in ice_vsi_cfg_rxq(). This should have been removed at the point where
    xdp_buff struct started to be a member of ice_rx_ring and it was no
    longer a stack based variable.
    
    There are two fixes tags as my understanding is that the first one
    exposed us to broken truesize and page_offset handling and then second
    introduced broken skb_shared_info update in ice_{construct,build}_skb().
    
    Reported-and-tested-by: Luiz Capitulino <luizcap@redhat.com>
    Closes: https://lore.kernel.org/netdev/8f9e2a5c-fd30-4206-9311-946a06d031bb@redhat.com/
    Fixes: 1dc1a7e7f410 ("ice: Centrallize Rx buffer recycling")
    Fixes: 2fba7dc5157b ("ice: Add support for XDP multi-buffer on Rx side")
    Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
igb: cope with large MAX_SKB_FRAGS [+ + +]
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Fri Aug 16 17:20:34 2024 +0200

    igb: cope with large MAX_SKB_FRAGS
    
    [ Upstream commit 8aba27c4a5020abdf60149239198297f88338a8d ]
    
    Sabrina reports that the igb driver does not cope well with large
    MAX_SKB_FRAG values: setting MAX_SKB_FRAG to 45 causes payload
    corruption on TX.
    
    An easy reproducer is to run ssh to connect to the machine.  With
    MAX_SKB_FRAGS=17 it works, with MAX_SKB_FRAGS=45 it fails.  This has
    been reported originally in
    https://bugzilla.redhat.com/show_bug.cgi?id=2265320
    
    The root cause of the issue is that the driver does not take into
    account properly the (possibly large) shared info size when selecting
    the ring layout, and will try to fit two packets inside the same 4K
    page even when the 1st fraglist will trump over the 2nd head.
    
    Address the issue by checking if 2K buffers are insufficient.
    
    Fixes: 3948b05950fd ("net: introduce a config option to tweak MAX_SKB_FRAGS")
    Reported-by: Jan Tluka <jtluka@redhat.com>
    Reported-by: Jirka Hladky <jhladky@redhat.com>
    Reported-by: Sabrina Dubroca <sd@queasysnail.net>
    Tested-by: Sabrina Dubroca <sd@queasysnail.net>
    Tested-by: Corinna Vinschen <vinschen@redhat.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Corinna Vinschen <vinschen@redhat.com>
    Link: https://patch.msgid.link/20240816152034.1453285-1-vinschen@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
igc: Fix packet still tx after gate close by reducing i226 MAC retry buffer [+ + +]
Author: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
Date:   Sat Jul 6 11:38:07 2024 -0400

    igc: Fix packet still tx after gate close by reducing i226 MAC retry buffer
    
    [ Upstream commit e037a26ead187901f83cad9c503ccece5ff6817a ]
    
    Testing uncovered that even when the taprio gate is closed, some packets
    still transmit.
    
    According to i225/6 hardware errata [1], traffic might overflow the
    planned QBV window. This happens because MAC maintains an internal buffer,
    primarily for supporting half duplex retries. Therefore, even when the
    gate closes, residual MAC data in the buffer may still transmit.
    
    To mitigate this for i226, reduce the MAC's internal buffer from 192 bytes
    to the recommended 88 bytes by modifying the RETX_CTL register value.
    
    This follows guidelines from:
    [1] Ethernet Controller I225/I22 Spec Update Rev 2.1 Errata Item 9:
        TSN: Packet Transmission Might Cross Qbv Window
    [2] I225/6 SW User Manual Rev 1.2.4: Section 8.11.5 Retry Buffer Control
    
    Note that the RETX_CTL register can't be used in TSN mode because half
    duplex feature cannot coexist with TSN.
    
    Test Steps:
    1.  Send taprio cmd to board A:
        tc qdisc replace dev enp1s0 parent root handle 100 taprio \
        num_tc 4 \
        map 3 2 1 0 3 3 3 3 3 3 3 3 3 3 3 3 \
        queues 1@0 1@1 1@2 1@3 \
        base-time 0 \
        sched-entry S 0x07 500000 \
        sched-entry S 0x0f 500000 \
        flags 0x2 \
        txtime-delay 0
    
        Note that for TC3, gate should open for 500us and close for another
        500us.
    
    3.  Take tcpdump log on Board B.
    
    4.  Send udp packets via UDP tai app from Board A to Board B.
    
    5.  Analyze tcpdump log via wireshark log on Board B. Ensure that the
        total time from the first to the last packet received during one cycle
        for TC3 does not exceed 500us.
    
    Fixes: 43546211738e ("igc: Add new device ID's")
    Signed-off-by: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
    Acked-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

igc: Fix qbv tx latency by setting gtxoffset [+ + +]
Author: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
Date:   Sun Jul 7 08:53:18 2024 -0400

    igc: Fix qbv tx latency by setting gtxoffset
    
    commit 6c3fc0b1c3d073bd6fc3bf43dbd0e64240537464 upstream.
    
    A large tx latency issue was discovered during testing when only QBV was
    enabled. The issue occurs because gtxoffset was not set when QBV is
    active, it was only set when launch time is active.
    
    The patch "igc: Correct the launchtime offset" only sets gtxoffset when
    the launchtime_enable field is set by the user. Enabling launchtime_enable
    ultimately sets the register IGC_TXQCTL_QUEUE_MODE_LAUNCHT (referred to as
    LaunchT in the SW user manual).
    
    Section 7.5.2.6 of the IGC i225/6 SW User Manual Rev 1.2.4 states:
    "The latency between transmission scheduling (launch time) and the
    time the packet is transmitted to the network is listed in Table 7-61."
    
    However, the patch misinterprets the phrase "launch time" in that section
    by assuming it specifically refers to the LaunchT register, whereas it
    actually denotes the generic term for when a packet is released from the
    internal buffer to the MAC transmit logic.
    
    This launch time, as per that section, also implicitly refers to the QBV
    gate open time, where a packet waits in the buffer for the QBV gate to
    open. Therefore, latency applies whenever QBV is in use. TSN features such
    as QBU and QAV reuse QBV, making the latency universal to TSN features.
    
    Discussed with i226 HW owner (Shalev, Avi) and we were in agreement that
    the term "launch time" used in Section 7.5.2.6 is not clear and can be
    easily misinterpreted. Avi will update this section to:
    "When TQAVCTRL.TRANSMIT_MODE = TSN, the latency between transmission
    scheduling and the time the packet is transmitted to the network is listed
    in Table 7-61."
    
    Fix this issue by using igc_tsn_is_tx_mode_in_tsn() as a condition to
    write to gtxoffset, aligning with the newly updated SW User Manual.
    
    Tested:
    1. Enrol taprio on talker board
       base-time 0
       cycle-time 1000000
       flags 0x2
       index 0 cmd S gatemask 0x1 interval1
       index 0 cmd S gatemask 0x1 interval2
    
       Note:
       interval1 = interval for a 64 bytes packet to go through
       interval2 = cycle-time - interval1
    
    2. Take tcpdump on listener board
    
    3. Use udp tai app on talker to send packets to listener
    
    4. Check the timestamp on listener via wireshark
    
    Test Result:
    100 Mbps: 113 ~193 ns
    1000 Mbps: 52 ~ 84 ns
    2500 Mbps: 95 ~ 223 ns
    
    Note that the test result is similar to the patch "igc: Correct the
    launchtime offset".
    
    Fixes: 790835fcc0cb ("igc: Correct the launchtime offset")
    Signed-off-by: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Acked-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

igc: Fix qbv_config_change_errors logics [+ + +]
Author: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
Date:   Sun Jul 7 08:53:16 2024 -0400

    igc: Fix qbv_config_change_errors logics
    
    [ Upstream commit f8d6acaee9d35cbff3c3cfad94641666c596f8da ]
    
    When user issues these cmds:
    1. Either a) or b)
       a) mqprio with hardware offload disabled
       b) taprio with txtime-assist feature enabled
    2. etf
    3. tc qdisc delete
    4. taprio with base time in the past
    
    At step 4, qbv_config_change_errors wrongly increased by 1.
    
    Excerpt from IEEE 802.1Q-2018 8.6.9.3.1:
    "If AdminBaseTime specifies a time in the past, and the current schedule
    is running, then: Increment ConfigChangeError counter"
    
    qbv_config_change_errors should only increase if base time is in the past
    and no taprio is active. In user perspective, taprio was not active when
    first triggered at step 4. However, i225/6 reuses qbv for etf, so qbv is
    enabled with a dummy schedule at step 2 where it enters
    igc_tsn_enable_offload() and qbv_count got incremented to 1. At step 4, it
    enters igc_tsn_enable_offload() again, qbv_count is incremented to 2.
    Because taprio is running, tc_setup_type is TC_SETUP_QDISC_ETF and
    qbv_count > 1, qbv_config_change_errors value got incremented.
    
    This issue happens due to reliance on qbv_count field where a non-zero
    value indicates that taprio is running. But qbv_count increases
    regardless if taprio is triggered by user or by other tsn feature. It does
    not align with qbv_config_change_errors expectation where it is only
    concerned with taprio triggered by user.
    
    Fixing this by relocating the qbv_config_change_errors logic to
    igc_save_qbv_schedule(), eliminating reliance on qbv_count and its
    inaccuracies from i225/6's multiple uses of qbv feature for other TSN
    features.
    
    The new function created: igc_tsn_is_taprio_activated_by_user() uses
    taprio_offload_enable field to indicate that the current running taprio
    was triggered by user, instead of triggered by non-qbv feature like etf.
    
    Fixes: ae4fe4698300 ("igc: Add qbv_config_change_errors counter")
    Signed-off-by: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Acked-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

igc: Fix reset adapter logics when tx mode change [+ + +]
Author: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
Date:   Sun Jul 7 08:53:17 2024 -0400

    igc: Fix reset adapter logics when tx mode change
    
    [ Upstream commit 0afeaeb5dae86aceded0d5f0c3a54d27858c0c6f ]
    
    Following the "igc: Fix TX Hang issue when QBV Gate is close" changes,
    remaining issues with the reset adapter logic in igc_tsn_offload_apply()
    have been observed:
    
    1. The reset adapter logics for i225 and i226 differ, although they should
       be the same according to the guidelines in I225/6 HW Design Section
       7.5.2.1 on software initialization during tx mode changes.
    2. The i225 resets adapter every time, even though tx mode doesn't change.
       This occurs solely based on the condition  igc_is_device_id_i225() when
       calling schedule_work().
    3. i226 doesn't reset adapter for tsn->legacy tx mode changes. It only
       resets adapter for legacy->tsn tx mode transitions.
    4. qbv_count introduced in the patch is actually not needed; in this
       context, a non-zero value of qbv_count is used to indicate if tx mode
       was unconditionally set to tsn in igc_tsn_enable_offload(). This could
       be replaced by checking the existing register
       IGC_TQAVCTRL_TRANSMIT_MODE_TSN bit.
    
    This patch resolves all issues and enters schedule_work() to reset the
    adapter only when changing tx mode. It also removes reliance on qbv_count.
    
    qbv_count field will be removed in a future patch.
    
    Test ran:
    
    1. Verify reset adapter behaviour in i225/6:
       a) Enrol a new GCL
          Reset adapter observed (tx mode change legacy->tsn)
       b) Enrol a new GCL without deleting qdisc
          No reset adapter observed (tx mode remain tsn->tsn)
       c) Delete qdisc
          Reset adapter observed (tx mode change tsn->legacy)
    
    2. Tested scenario from "igc: Fix TX Hang issue when QBV Gate is closed"
       to confirm it remains resolved.
    
    Fixes: 175c241288c0 ("igc: Fix TX Hang issue when QBV Gate is closed")
    Signed-off-by: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Acked-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Input: i8042 - add forcenorestore quirk to leave controller untouched even on s3 [+ + +]
Author: Werner Sembach <wse@tuxedocomputers.com>
Date:   Thu Jan 4 19:31:17 2024 +0100

    Input: i8042 - add forcenorestore quirk to leave controller untouched even on s3
    
    commit 3d765ae2daccc570b3f4fbcb57eb321b12cdded2 upstream.
    
    On s3 resume the i8042 driver tries to restore the controller to a known
    state by reinitializing things, however this can confuse the controller
    with different effects. Mostly occasionally unresponsive keyboards after
    resume.
    
    These issues do not rise on s0ix resume as here the controller is assumed
    to preserved its state from before suspend.
    
    This patch adds a quirk for devices where the reinitialization on s3 resume
    is not needed and might be harmful as described above. It does this by
    using the s0ix resume code path at selected locations.
    
    This new quirk goes beyond what the preexisting reset=never quirk does,
    which only skips some reinitialization steps.
    
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20240104183118.779778-2-wse@tuxedocomputers.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: i8042 - use new forcenorestore quirk to replace old buggy quirk combination [+ + +]
Author: Werner Sembach <wse@tuxedocomputers.com>
Date:   Thu Jan 4 19:31:18 2024 +0100

    Input: i8042 - use new forcenorestore quirk to replace old buggy quirk combination
    
    commit aaa4ca873d3da768896ffc909795359a01e853ef upstream.
    
    The old quirk combination sometimes cause a laggy keyboard after boot. With
    the new quirk the initial issue of an unresponsive keyboard after s3 resume
    is also fixed, but it doesn't have the negative side effect of the
    sometimes laggy keyboard.
    
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20240104183118.779778-3-wse@tuxedocomputers.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: MT - limit max slots [+ + +]
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Mon Jul 29 21:51:30 2024 +0900

    Input: MT - limit max slots
    
    commit 99d3bf5f7377d42f8be60a6b9cb60fb0be34dceb upstream.
    
    syzbot is reporting too large allocation at input_mt_init_slots(), for
    num_slots is supplied from userspace using ioctl(UI_DEV_CREATE).
    
    Since nobody knows possible max slots, this patch chose 1024.
    
    Reported-by: syzbot <syzbot+0122fa359a69694395d5@syzkaller.appspotmail.com>
    Closes: https://syzkaller.appspot.com/bug?extid=0122fa359a69694395d5
    Suggested-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: George Kennedy <george.kennedy@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
iommu/arm-smmu-qcom: Add SDM670 MDSS compatible [+ + +]
Author: Richard Acayan <mailingradian@gmail.com>
Date:   Mon Sep 25 19:42:48 2023 -0400

    iommu/arm-smmu-qcom: Add SDM670 MDSS compatible
    
    [ Upstream commit 270a1470408e44619a55be1079254bf2ba0567fb ]
    
    Add the compatible for the MDSS client on the Snapdragon 670 so it can
    be properly configured by the IOMMU driver.
    
    Otherwise, there is an unhandled context fault.
    
    Signed-off-by: Richard Acayan <mailingradian@gmail.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20230925234246.900351-3-mailingradian@gmail.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ionic: check cmd_regs before copying in or out [+ + +]
Author: Shannon Nelson <shannon.nelson@amd.com>
Date:   Fri Feb 23 14:27:41 2024 -0800

    ionic: check cmd_regs before copying in or out
    
    [ Upstream commit 7662fad348ac54120e9e6443cb0bbe4f3b582219 ]
    
    Since we now have potential cases of NULL cmd_regs and info_regs
    during a reset recovery, and left NULL if a reset recovery has
    failed, we need to check that they exist before we use them.
    Most of the cases were covered in the original patch where we
    verify before doing the ioreadb() for health or cmd status.
    However, we need to protect a few uses of io mem that could
    be hit in error recovery or asynchronous threads calls as well
    (e.g. ethtool or devlink handlers).
    
    Fixes: 219e183272b4 ("ionic: no fw read when PCI reset failed")
    Reviewed-by: Brett Creeley <brett.creeley@amd.com>
    Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ionic: no fw read when PCI reset failed [+ + +]
Author: Shannon Nelson <shannon.nelson@amd.com>
Date:   Mon Dec 11 10:58:01 2023 -0800

    ionic: no fw read when PCI reset failed
    
    [ Upstream commit 219e183272b4a566650a37264aff90a8c613d9b5 ]
    
    If there was a failed attempt to reset the PCI connection,
    don't later try to read from PCI as the space is unmapped
    and will cause a paging request crash.  When clearing the PCI
    setup we can clear the dev_info register pointer, and check
    it before using it in the fw_running test.
    
    Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
    Reviewed-by: Brett Creeley <brett.creeley@amd.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ionic: prevent pci disable of already disabled device [+ + +]
Author: Shannon Nelson <shannon.nelson@amd.com>
Date:   Mon Dec 11 10:58:00 2023 -0800

    ionic: prevent pci disable of already disabled device
    
    [ Upstream commit 13943d6c82730a2a4e40e05d6deaca26a8de0a4d ]
    
    If a reset fails, the PCI device is left in a disabled
    state, so don't try to disable it again on driver remove.
    This prevents a scary looking WARN trace in the kernel log.
    
        ionic 0000:2b:00.0: disabling already-disabled device
    
    Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
    Reviewed-by: Brett Creeley <brett.creeley@amd.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ionic: use pci_is_enabled not open code [+ + +]
Author: Shannon Nelson <shannon.nelson@amd.com>
Date:   Fri Feb 16 14:52:59 2024 -0800

    ionic: use pci_is_enabled not open code
    
    [ Upstream commit 121e4dcba3700b30e63f25203d09ddfccbab4a09 ]
    
    Since there is a utility available for this, use
    the API rather than open code.
    
    Fixes: 13943d6c8273 ("ionic: prevent pci disable of already disabled device")
    Reviewed-by: Brett Creeley <brett.creeley@amd.com>
    Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ip6_tunnel: Fix broken GRO [+ + +]
Author: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Date:   Thu Aug 15 17:14:16 2024 +0200

    ip6_tunnel: Fix broken GRO
    
    [ Upstream commit 4b3e33fcc38f7750604b065c55a43e94c5bc3145 ]
    
    GRO code checks for matching layer 2 headers to see, if packet belongs
    to the same flow and because ip6 tunnel set dev->hard_header_len
    this check fails in cases, where it shouldn't. To fix this don't
    set hard_header_len, but use needed_headroom like ipv4/ip_tunnel.c
    does.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
    Link: https://patch.msgid.link/20240815151419.109864-1-tbogendoerfer@suse.de
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipv6: fix possible UAF in ip6_finish_output2() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Aug 20 16:08:58 2024 +0000

    ipv6: fix possible UAF in ip6_finish_output2()
    
    [ Upstream commit da273b377ae0d9bd255281ed3c2adb228321687b ]
    
    If skb_expand_head() returns NULL, skb has been freed
    and associated dst/idev could also have been freed.
    
    We need to hold rcu_read_lock() to make sure the dst and
    associated idev are alive.
    
    Fixes: 5796015fa968 ("ipv6: allocate enough headroom in ip6_finish_output2()")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Vasily Averin <vasily.averin@linux.dev>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://patch.msgid.link/20240820160859.3786976-3-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ipv6: prevent possible UAF in ip6_xmit() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Aug 20 16:08:59 2024 +0000

    ipv6: prevent possible UAF in ip6_xmit()
    
    [ Upstream commit 2d5ff7e339d04622d8282661df36151906d0e1c7 ]
    
    If skb_expand_head() returns NULL, skb has been freed
    and the associated dst/idev could also have been freed.
    
    We must use rcu_read_lock() to prevent a possible UAF.
    
    Fixes: 0c9f227bee11 ("ipv6: use skb_expand_head in ip6_xmit")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Vasily Averin <vasily.averin@linux.dev>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://patch.msgid.link/20240820160859.3786976-4-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ipv6: prevent UAF in ip6_send_skb() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Aug 20 16:08:57 2024 +0000

    ipv6: prevent UAF in ip6_send_skb()
    
    [ Upstream commit faa389b2fbaaec7fd27a390b4896139f9da662e3 ]
    
    syzbot reported an UAF in ip6_send_skb() [1]
    
    After ip6_local_out() has returned, we no longer can safely
    dereference rt, unless we hold rcu_read_lock().
    
    A similar issue has been fixed in commit
    a688caa34beb ("ipv6: take rcu lock in rawv6_send_hdrinc()")
    
    Another potential issue in ip6_finish_output2() is handled in a
    separate patch.
    
    [1]
     BUG: KASAN: slab-use-after-free in ip6_send_skb+0x18d/0x230 net/ipv6/ip6_output.c:1964
    Read of size 8 at addr ffff88806dde4858 by task syz.1.380/6530
    
    CPU: 1 UID: 0 PID: 6530 Comm: syz.1.380 Not tainted 6.11.0-rc3-syzkaller-00306-gdf6cbc62cc9b #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/06/2024
    Call Trace:
     <TASK>
      __dump_stack lib/dump_stack.c:93 [inline]
      dump_stack_lvl+0x241/0x360 lib/dump_stack.c:119
      print_address_description mm/kasan/report.c:377 [inline]
      print_report+0x169/0x550 mm/kasan/report.c:488
      kasan_report+0x143/0x180 mm/kasan/report.c:601
      ip6_send_skb+0x18d/0x230 net/ipv6/ip6_output.c:1964
      rawv6_push_pending_frames+0x75c/0x9e0 net/ipv6/raw.c:588
      rawv6_sendmsg+0x19c7/0x23c0 net/ipv6/raw.c:926
      sock_sendmsg_nosec net/socket.c:730 [inline]
      __sock_sendmsg+0x1a6/0x270 net/socket.c:745
      sock_write_iter+0x2dd/0x400 net/socket.c:1160
     do_iter_readv_writev+0x60a/0x890
      vfs_writev+0x37c/0xbb0 fs/read_write.c:971
      do_writev+0x1b1/0x350 fs/read_write.c:1018
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f936bf79e79
    Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f936cd7f038 EFLAGS: 00000246 ORIG_RAX: 0000000000000014
    RAX: ffffffffffffffda RBX: 00007f936c115f80 RCX: 00007f936bf79e79
    RDX: 0000000000000001 RSI: 0000000020000040 RDI: 0000000000000004
    RBP: 00007f936bfe7916 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 0000000000000000 R14: 00007f936c115f80 R15: 00007fff2860a7a8
     </TASK>
    
    Allocated by task 6530:
      kasan_save_stack mm/kasan/common.c:47 [inline]
      kasan_save_track+0x3f/0x80 mm/kasan/common.c:68
      unpoison_slab_object mm/kasan/common.c:312 [inline]
      __kasan_slab_alloc+0x66/0x80 mm/kasan/common.c:338
      kasan_slab_alloc include/linux/kasan.h:201 [inline]
      slab_post_alloc_hook mm/slub.c:3988 [inline]
      slab_alloc_node mm/slub.c:4037 [inline]
      kmem_cache_alloc_noprof+0x135/0x2a0 mm/slub.c:4044
      dst_alloc+0x12b/0x190 net/core/dst.c:89
      ip6_blackhole_route+0x59/0x340 net/ipv6/route.c:2670
      make_blackhole net/xfrm/xfrm_policy.c:3120 [inline]
      xfrm_lookup_route+0xd1/0x1c0 net/xfrm/xfrm_policy.c:3313
      ip6_dst_lookup_flow+0x13e/0x180 net/ipv6/ip6_output.c:1257
      rawv6_sendmsg+0x1283/0x23c0 net/ipv6/raw.c:898
      sock_sendmsg_nosec net/socket.c:730 [inline]
      __sock_sendmsg+0x1a6/0x270 net/socket.c:745
      ____sys_sendmsg+0x525/0x7d0 net/socket.c:2597
      ___sys_sendmsg net/socket.c:2651 [inline]
      __sys_sendmsg+0x2b0/0x3a0 net/socket.c:2680
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Freed by task 45:
      kasan_save_stack mm/kasan/common.c:47 [inline]
      kasan_save_track+0x3f/0x80 mm/kasan/common.c:68
      kasan_save_free_info+0x40/0x50 mm/kasan/generic.c:579
      poison_slab_object+0xe0/0x150 mm/kasan/common.c:240
      __kasan_slab_free+0x37/0x60 mm/kasan/common.c:256
      kasan_slab_free include/linux/kasan.h:184 [inline]
      slab_free_hook mm/slub.c:2252 [inline]
      slab_free mm/slub.c:4473 [inline]
      kmem_cache_free+0x145/0x350 mm/slub.c:4548
      dst_destroy+0x2ac/0x460 net/core/dst.c:124
      rcu_do_batch kernel/rcu/tree.c:2569 [inline]
      rcu_core+0xafd/0x1830 kernel/rcu/tree.c:2843
      handle_softirqs+0x2c4/0x970 kernel/softirq.c:554
      __do_softirq kernel/softirq.c:588 [inline]
      invoke_softirq kernel/softirq.c:428 [inline]
      __irq_exit_rcu+0xf4/0x1c0 kernel/softirq.c:637
      irq_exit_rcu+0x9/0x30 kernel/softirq.c:649
      instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1043 [inline]
      sysvec_apic_timer_interrupt+0xa6/0xc0 arch/x86/kernel/apic/apic.c:1043
      asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702
    
    Last potentially related work creation:
      kasan_save_stack+0x3f/0x60 mm/kasan/common.c:47
      __kasan_record_aux_stack+0xac/0xc0 mm/kasan/generic.c:541
      __call_rcu_common kernel/rcu/tree.c:3106 [inline]
      call_rcu+0x167/0xa70 kernel/rcu/tree.c:3210
      refdst_drop include/net/dst.h:263 [inline]
      skb_dst_drop include/net/dst.h:275 [inline]
      nf_ct_frag6_queue net/ipv6/netfilter/nf_conntrack_reasm.c:306 [inline]
      nf_ct_frag6_gather+0xb9a/0x2080 net/ipv6/netfilter/nf_conntrack_reasm.c:485
      ipv6_defrag+0x2c8/0x3c0 net/ipv6/netfilter/nf_defrag_ipv6_hooks.c:67
      nf_hook_entry_hookfn include/linux/netfilter.h:154 [inline]
      nf_hook_slow+0xc3/0x220 net/netfilter/core.c:626
      nf_hook include/linux/netfilter.h:269 [inline]
      __ip6_local_out+0x6fa/0x800 net/ipv6/output_core.c:143
      ip6_local_out+0x26/0x70 net/ipv6/output_core.c:153
      ip6_send_skb+0x112/0x230 net/ipv6/ip6_output.c:1959
      rawv6_push_pending_frames+0x75c/0x9e0 net/ipv6/raw.c:588
      rawv6_sendmsg+0x19c7/0x23c0 net/ipv6/raw.c:926
      sock_sendmsg_nosec net/socket.c:730 [inline]
      __sock_sendmsg+0x1a6/0x270 net/socket.c:745
      sock_write_iter+0x2dd/0x400 net/socket.c:1160
     do_iter_readv_writev+0x60a/0x890
    
    Fixes: 0625491493d9 ("ipv6: ip6_push_pending_frames() should increment IPSTATS_MIB_OUTDISCARDS")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://patch.msgid.link/20240820160859.3786976-2-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc [+ + +]
Author: Guanrui Huang <guanrui.huang@linux.alibaba.com>
Date:   Thu Apr 18 14:10:53 2024 +0800

    irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc
    
    [ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ]
    
    This BUG_ON() is useless, because the same effect will be obtained
    by letting the code run its course and vm being dereferenced,
    triggering an exception.
    
    So just remove this check.
    
    Signed-off-by: Guanrui Huang <guanrui.huang@linux.alibaba.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
irqchip/renesas-rzg2l: Do not set TIEN and TINT source at the same time [+ + +]
Author: Biju Das <biju.das.jz@bp.renesas.com>
Date:   Mon Mar 18 08:50:40 2024 +0000

    irqchip/renesas-rzg2l: Do not set TIEN and TINT source at the same time
    
    [ Upstream commit dce0919c83c325ac9dec5bc8838d5de6d32c01b1 ]
    
    As per the hardware team, TIEN and TINT source should not set at the same
    time due to a possible hardware race leading to spurious IRQ.
    
    Currently on some scenarios hardware settings for TINT detection is not in
    sync with TINT source as the enable/disable overrides source setting value
    leading to hardware inconsistent state. For eg: consider the case GPIOINT0
    is used as TINT interrupt and configuring GPIOINT5 as edge type. During
    rzg2l_irq_set_type(), TINT source for GPIOINT5 is set. On disable(),
    clearing of the entire bytes of TINT source selection for GPIOINT5 is same
    as GPIOINT0 with TIEN disabled. Apart from this during enable(), the
    setting of GPIOINT5 with TIEN results in spurious IRQ as due to a HW race,
    it is possible that IP can use the TIEN with previous source value
    (GPIOINT0).
    
    So, just update TIEN during enable/disable as TINT source is already set
    during rzg2l_irq_set_type(). This will make the consistent hardware
    settings for detection method tied with TINT source and allows to simplify
    the code.
    
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
jfs: define xtree root and page independently [+ + +]
Author: Dave Kleikamp <dave.kleikamp@oracle.com>
Date:   Thu Oct 5 09:16:14 2023 -0500

    jfs: define xtree root and page independently
    
    commit a779ed754e52d582b8c0e17959df063108bd0656 upstream.
    
    In order to make array bounds checking sane, provide a separate
    definition of the in-inode xtree root and the external xtree page.
    
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Tested-by: Manas Ghandat <ghandatmanas@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
kcm: Serialise kcm_sendmsg() for the same socket. [+ + +]
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Thu Aug 15 15:04:37 2024 -0700

    kcm: Serialise kcm_sendmsg() for the same socket.
    
    [ Upstream commit 807067bf014d4a3ae2cc55bd3de16f22a01eb580 ]
    
    syzkaller reported UAF in kcm_release(). [0]
    
    The scenario is
    
      1. Thread A builds a skb with MSG_MORE and sets kcm->seq_skb.
    
      2. Thread A resumes building skb from kcm->seq_skb but is blocked
         by sk_stream_wait_memory()
    
      3. Thread B calls sendmsg() concurrently, finishes building kcm->seq_skb
         and puts the skb to the write queue
    
      4. Thread A faces an error and finally frees skb that is already in the
         write queue
    
      5. kcm_release() does double-free the skb in the write queue
    
    When a thread is building a MSG_MORE skb, another thread must not touch it.
    
    Let's add a per-sk mutex and serialise kcm_sendmsg().
    
    [0]:
    BUG: KASAN: slab-use-after-free in __skb_unlink include/linux/skbuff.h:2366 [inline]
    BUG: KASAN: slab-use-after-free in __skb_dequeue include/linux/skbuff.h:2385 [inline]
    BUG: KASAN: slab-use-after-free in __skb_queue_purge_reason include/linux/skbuff.h:3175 [inline]
    BUG: KASAN: slab-use-after-free in __skb_queue_purge include/linux/skbuff.h:3181 [inline]
    BUG: KASAN: slab-use-after-free in kcm_release+0x170/0x4c8 net/kcm/kcmsock.c:1691
    Read of size 8 at addr ffff0000ced0fc80 by task syz-executor329/6167
    
    CPU: 1 PID: 6167 Comm: syz-executor329 Tainted: G    B              6.8.0-rc5-syzkaller-g9abbc24128bc #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/25/2024
    Call trace:
     dump_backtrace+0x1b8/0x1e4 arch/arm64/kernel/stacktrace.c:291
     show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:298
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0xd0/0x124 lib/dump_stack.c:106
     print_address_description mm/kasan/report.c:377 [inline]
     print_report+0x178/0x518 mm/kasan/report.c:488
     kasan_report+0xd8/0x138 mm/kasan/report.c:601
     __asan_report_load8_noabort+0x20/0x2c mm/kasan/report_generic.c:381
     __skb_unlink include/linux/skbuff.h:2366 [inline]
     __skb_dequeue include/linux/skbuff.h:2385 [inline]
     __skb_queue_purge_reason include/linux/skbuff.h:3175 [inline]
     __skb_queue_purge include/linux/skbuff.h:3181 [inline]
     kcm_release+0x170/0x4c8 net/kcm/kcmsock.c:1691
     __sock_release net/socket.c:659 [inline]
     sock_close+0xa4/0x1e8 net/socket.c:1421
     __fput+0x30c/0x738 fs/file_table.c:376
     ____fput+0x20/0x30 fs/file_table.c:404
     task_work_run+0x230/0x2e0 kernel/task_work.c:180
     exit_task_work include/linux/task_work.h:38 [inline]
     do_exit+0x618/0x1f64 kernel/exit.c:871
     do_group_exit+0x194/0x22c kernel/exit.c:1020
     get_signal+0x1500/0x15ec kernel/signal.c:2893
     do_signal+0x23c/0x3b44 arch/arm64/kernel/signal.c:1249
     do_notify_resume+0x74/0x1f4 arch/arm64/kernel/entry-common.c:148
     exit_to_user_mode_prepare arch/arm64/kernel/entry-common.c:169 [inline]
     exit_to_user_mode arch/arm64/kernel/entry-common.c:178 [inline]
     el0_svc+0xac/0x168 arch/arm64/kernel/entry-common.c:713
     el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:730
     el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:598
    
    Allocated by task 6166:
     kasan_save_stack mm/kasan/common.c:47 [inline]
     kasan_save_track+0x40/0x78 mm/kasan/common.c:68
     kasan_save_alloc_info+0x70/0x84 mm/kasan/generic.c:626
     unpoison_slab_object mm/kasan/common.c:314 [inline]
     __kasan_slab_alloc+0x74/0x8c mm/kasan/common.c:340
     kasan_slab_alloc include/linux/kasan.h:201 [inline]
     slab_post_alloc_hook mm/slub.c:3813 [inline]
     slab_alloc_node mm/slub.c:3860 [inline]
     kmem_cache_alloc_node+0x204/0x4c0 mm/slub.c:3903
     __alloc_skb+0x19c/0x3d8 net/core/skbuff.c:641
     alloc_skb include/linux/skbuff.h:1296 [inline]
     kcm_sendmsg+0x1d3c/0x2124 net/kcm/kcmsock.c:783
     sock_sendmsg_nosec net/socket.c:730 [inline]
     __sock_sendmsg net/socket.c:745 [inline]
     sock_sendmsg+0x220/0x2c0 net/socket.c:768
     splice_to_socket+0x7cc/0xd58 fs/splice.c:889
     do_splice_from fs/splice.c:941 [inline]
     direct_splice_actor+0xec/0x1d8 fs/splice.c:1164
     splice_direct_to_actor+0x438/0xa0c fs/splice.c:1108
     do_splice_direct_actor fs/splice.c:1207 [inline]
     do_splice_direct+0x1e4/0x304 fs/splice.c:1233
     do_sendfile+0x460/0xb3c fs/read_write.c:1295
     __do_sys_sendfile64 fs/read_write.c:1362 [inline]
     __se_sys_sendfile64 fs/read_write.c:1348 [inline]
     __arm64_sys_sendfile64+0x160/0x3b4 fs/read_write.c:1348
     __invoke_syscall arch/arm64/kernel/syscall.c:37 [inline]
     invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:51
     el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:136
     do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:155
     el0_svc+0x54/0x168 arch/arm64/kernel/entry-common.c:712
     el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:730
     el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:598
    
    Freed by task 6167:
     kasan_save_stack mm/kasan/common.c:47 [inline]
     kasan_save_track+0x40/0x78 mm/kasan/common.c:68
     kasan_save_free_info+0x5c/0x74 mm/kasan/generic.c:640
     poison_slab_object+0x124/0x18c mm/kasan/common.c:241
     __kasan_slab_free+0x3c/0x78 mm/kasan/common.c:257
     kasan_slab_free include/linux/kasan.h:184 [inline]
     slab_free_hook mm/slub.c:2121 [inline]
     slab_free mm/slub.c:4299 [inline]
     kmem_cache_free+0x15c/0x3d4 mm/slub.c:4363
     kfree_skbmem+0x10c/0x19c
     __kfree_skb net/core/skbuff.c:1109 [inline]
     kfree_skb_reason+0x240/0x6f4 net/core/skbuff.c:1144
     kfree_skb include/linux/skbuff.h:1244 [inline]
     kcm_release+0x104/0x4c8 net/kcm/kcmsock.c:1685
     __sock_release net/socket.c:659 [inline]
     sock_close+0xa4/0x1e8 net/socket.c:1421
     __fput+0x30c/0x738 fs/file_table.c:376
     ____fput+0x20/0x30 fs/file_table.c:404
     task_work_run+0x230/0x2e0 kernel/task_work.c:180
     exit_task_work include/linux/task_work.h:38 [inline]
     do_exit+0x618/0x1f64 kernel/exit.c:871
     do_group_exit+0x194/0x22c kernel/exit.c:1020
     get_signal+0x1500/0x15ec kernel/signal.c:2893
     do_signal+0x23c/0x3b44 arch/arm64/kernel/signal.c:1249
     do_notify_resume+0x74/0x1f4 arch/arm64/kernel/entry-common.c:148
     exit_to_user_mode_prepare arch/arm64/kernel/entry-common.c:169 [inline]
     exit_to_user_mode arch/arm64/kernel/entry-common.c:178 [inline]
     el0_svc+0xac/0x168 arch/arm64/kernel/entry-common.c:713
     el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:730
     el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:598
    
    The buggy address belongs to the object at ffff0000ced0fc80
     which belongs to the cache skbuff_head_cache of size 240
    The buggy address is located 0 bytes inside of
     freed 240-byte region [ffff0000ced0fc80, ffff0000ced0fd70)
    
    The buggy address belongs to the physical page:
    page:00000000d35f4ae4 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x10ed0f
    flags: 0x5ffc00000000800(slab|node=0|zone=2|lastcpupid=0x7ff)
    page_type: 0xffffffff()
    raw: 05ffc00000000800 ffff0000c1cbf640 fffffdffc3423100 dead000000000004
    raw: 0000000000000000 00000000000c000c 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff0000ced0fb80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff0000ced0fc00: fb fb fb fb fb fb fc fc fc fc fc fc fc fc fc fc
    >ffff0000ced0fc80: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                       ^
     ffff0000ced0fd00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fc fc
     ffff0000ced0fd80: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb
    
    Fixes: ab7ac4eb9832 ("kcm: Kernel Connection Multiplexor module")
    Reported-by: syzbot+b72d86aa5df17ce74c60@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=b72d86aa5df17ce74c60
    Tested-by: syzbot+b72d86aa5df17ce74c60@syzkaller.appspotmail.com
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20240815220437.69511-1-kuniyu@amazon.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
kernfs: fix false-positive WARN(nr_mmapped) in kernfs_drain_open_files [+ + +]
Author: Neel Natu <neelnatu@google.com>
Date:   Sat Jan 27 15:46:36 2024 -0800

    kernfs: fix false-positive WARN(nr_mmapped) in kernfs_drain_open_files
    
    [ Upstream commit 05d8f255867e3196565bb31a911a437697fab094 ]
    
    Prior to this change 'on->nr_mmapped' tracked the total number of
    mmaps across all of its associated open files via kernfs_fop_mmap().
    Thus if the file descriptor associated with a kernfs_open_file was
    mmapped 10 times then we would have: 'of->mmapped = true' and
    'of_on(of)->nr_mmapped = 10'.
    
    The problem is that closing or draining a 'of->mmapped' file would
    only decrement one from the 'of_on(of)->nr_mmapped' counter.
    
    For e.g. we have this from kernfs_unlink_open_file():
            if (of->mmapped)
                    on->nr_mmapped--;
    
    The WARN_ON_ONCE(on->nr_mmapped) in kernfs_drain_open_files() is
    easy to reproduce by:
    1. opening a (mmap-able) kernfs file.
    2. mmap-ing that file more than once (mapping just once masks the issue).
    3. trigger a drain of that kernfs file.
    
    Modulo out-of-tree patches I was able to trigger this reliably by
    identifying pci device nodes in sysfs that have resource regions
    that are mmap-able and that don't have any driver attached to them
    (steps 1 and 2). For step 3 we can "echo 1 > remove" to trigger a
    kernfs_drain.
    
    Signed-off-by: Neel Natu <neelnatu@google.com>
    Link: https://lore.kernel.org/r/20240127234636.609265-1-neelnatu@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ksmbd: fix race condition between destroy_previous_session() and smb2 operations() [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Tue Aug 27 09:27:56 2024 +0900

    ksmbd: fix race condition between destroy_previous_session() and smb2 operations()
    
    [ Upstream commit 76e98a158b207771a6c9a0de0a60522a446a3447 ]
    
    If there is ->PreviousSessionId field in the session setup request,
    The session of the previous connection should be destroyed.
    During this, if the smb2 operation requests in the previous session are
    being processed, a racy issue could happen with ksmbd_destroy_file_table().
    This patch sets conn->status to KSMBD_SESS_NEED_RECONNECT to block
    incoming  operations and waits until on-going operations are complete
    (i.e. idle) before desctorying the previous session.
    
    Fixes: c8efcc786146 ("ksmbd: add support for durable handles v1/v2")
    Cc: stable@vger.kernel.org # v6.6+
    Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-25040
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ksmbd: the buffer of smb2 query dir response has at least 1 byte [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Tue Aug 20 22:07:38 2024 +0900

    ksmbd: the buffer of smb2 query dir response has at least 1 byte
    
    commit ce61b605a00502c59311d0a4b1f58d62b48272d0 upstream.
    
    When STATUS_NO_MORE_FILES status is set to smb2 query dir response,
    ->StructureSize is set to 9, which mean buffer has 1 byte.
    This issue occurs because ->Buffer[1] in smb2_query_directory_rsp to
    flex-array.
    
    Fixes: eb3e28c1e89b ("smb3: Replace smb2pdu 1-element arrays with flex-arrays")
    Cc: stable@vger.kernel.org # v6.1+
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
KVM: arm64: Make ICC_*SGI*_EL1 undef in the absence of a vGICv3 [+ + +]
Author: Marc Zyngier <maz@kernel.org>
Date:   Tue Aug 20 11:03:38 2024 +0100

    KVM: arm64: Make ICC_*SGI*_EL1 undef in the absence of a vGICv3
    
    commit 3e6245ebe7ef341639e9a7e402b3ade8ad45a19f upstream.
    
    On a system with a GICv3, if a guest hasn't been configured with
    GICv3 and that the host is not capable of GICv2 emulation,
    a write to any of the ICC_*SGI*_EL1 registers is trapped to EL2.
    
    We therefore try to emulate the SGI access, only to hit a NULL
    pointer as no private interrupt is allocated (no GIC, remember?).
    
    The obvious fix is to give the guest what it deserves, in the
    shape of a UNDEF exception.
    
    Reported-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20240820100349.3544850-2-maz@kernel.org
    Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

KVM: s390: fix validity interception issue when gisa is switched off [+ + +]
Author: Michael Mueller <mimu@linux.ibm.com>
Date:   Thu Aug 1 14:31:09 2024 +0200

    KVM: s390: fix validity interception issue when gisa is switched off
    
    commit 5a44bb061d04b0306f2aa8add761d86d152b9377 upstream.
    
    We might run into a SIE validity if gisa has been disabled either via using
    kernel parameter "kvm.use_gisa=0" or by setting the related sysfs
    attribute to N (echo N >/sys/module/kvm/parameters/use_gisa).
    
    The validity is caused by an invalid value in the SIE control block's
    gisa designation. That happens because we pass the uninitialized gisa
    origin to virt_to_phys() before writing it to the gisa designation.
    
    To fix this we return 0 in kvm_s390_get_gisa_desc() if the origin is 0.
    kvm_s390_get_gisa_desc() is used to determine which gisa designation to
    set in the SIE control block. A value of 0 in the gisa designation disables
    gisa usage.
    
    The issue surfaces in the host kernel with the following kernel message as
    soon a new kvm guest start is attemted.
    
    kvm: unhandled validity intercept 0x1011
    WARNING: CPU: 0 PID: 781237 at arch/s390/kvm/intercept.c:101 kvm_handle_sie_intercept+0x42e/0x4d0 [kvm]
    Modules linked in: vhost_net tap tun xt_CHECKSUM xt_MASQUERADE xt_conntrack ipt_REJECT xt_tcpudp nft_compat x_tables nf_nat_tftp nf_conntrack_tftp vfio_pci_core irqbypass vhost_vsock vmw_vsock_virtio_transport_common vsock vhost vhost_iotlb kvm nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ip_set nf_tables sunrpc mlx5_ib ib_uverbs ib_core mlx5_core uvdevice s390_trng eadm_sch vfio_ccw zcrypt_cex4 mdev vfio_iommu_type1 vfio sch_fq_codel drm i2c_core loop drm_panel_orientation_quirks configfs nfnetlink lcs ctcm fsm dm_service_time ghash_s390 prng chacha_s390 libchacha aes_s390 des_s390 libdes sha3_512_s390 sha3_256_s390 sha512_s390 sha256_s390 sha1_s390 sha_common dm_mirror dm_region_hash dm_log zfcp scsi_transport_fc scsi_dh_rdac scsi_dh_emc scsi_dh_alua pkey zcrypt dm_multipath rng_core autofs4 [last unloaded: vfio_pci]
    CPU: 0 PID: 781237 Comm: CPU 0/KVM Not tainted 6.10.0-08682-gcad9f11498ea #6
    Hardware name: IBM 3931 A01 701 (LPAR)
    Krnl PSW : 0704c00180000000 000003d93deb0122 (kvm_handle_sie_intercept+0x432/0x4d0 [kvm])
               R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:0 PM:0 RI:0 EA:3
    Krnl GPRS: 000003d900000027 000003d900000023 0000000000000028 000002cd00000000
               000002d063a00900 00000359c6daf708 00000000000bebb5 0000000000001eff
               000002cfd82e9000 000002cfd80bc000 0000000000001011 000003d93deda412
               000003ff8962df98 000003d93de77ce0 000003d93deb011e 00000359c6daf960
    Krnl Code: 000003d93deb0112: c020fffe7259       larl    %r2,000003d93de7e5c4
               000003d93deb0118: c0e53fa8beac       brasl   %r14,000003d9bd3c7e70
              #000003d93deb011e: af000000           mc      0,0
              >000003d93deb0122: a728ffea           lhi     %r2,-22
               000003d93deb0126: a7f4fe24           brc     15,000003d93deafd6e
               000003d93deb012a: 9101f0b0           tm      176(%r15),1
               000003d93deb012e: a774fe48           brc     7,000003d93deafdbe
               000003d93deb0132: 40a0f0ae           sth     %r10,174(%r15)
    Call Trace:
     [<000003d93deb0122>] kvm_handle_sie_intercept+0x432/0x4d0 [kvm]
    ([<000003d93deb011e>] kvm_handle_sie_intercept+0x42e/0x4d0 [kvm])
     [<000003d93deacc10>] vcpu_post_run+0x1d0/0x3b0 [kvm]
     [<000003d93deaceda>] __vcpu_run+0xea/0x2d0 [kvm]
     [<000003d93dead9da>] kvm_arch_vcpu_ioctl_run+0x16a/0x430 [kvm]
     [<000003d93de93ee0>] kvm_vcpu_ioctl+0x190/0x7c0 [kvm]
     [<000003d9bd728b4e>] vfs_ioctl+0x2e/0x70
     [<000003d9bd72a092>] __s390x_sys_ioctl+0xc2/0xd0
     [<000003d9be0e9222>] __do_syscall+0x1f2/0x2e0
     [<000003d9be0f9a90>] system_call+0x70/0x98
    Last Breaking-Event-Address:
     [<000003d9bd3c7f58>] __warn_printk+0xe8/0xf0
    
    Cc: stable@vger.kernel.org
    Reported-by: Christian Borntraeger <borntraeger@linux.ibm.com>
    Fixes: fe0ef0030463 ("KVM: s390: sort out physical vs virtual pointers usage")
    Signed-off-by: Michael Mueller <mimu@linux.ibm.com>
    Tested-by: Christian Borntraeger <borntraeger@linux.ibm.com>
    Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
    Link: https://lore.kernel.org/r/20240801123109.2782155-1-mimu@linux.ibm.com
    Message-ID: <20240801123109.2782155-1-mimu@linux.ibm.com>
    Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 6.6.48 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Aug 29 17:33:59 2024 +0200

    Linux 6.6.48
    
    Link: https://lore.kernel.org/r/20240827143843.399359062@linuxfoundation.org
    Tested-by: SeongJae Park <sj@kernel.org>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com>
    Tested-by: Miguel Ojeda <ojeda@kernel.org>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: kernelci.org bot <bot@kernelci.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
md/raid5-cache: use READ_ONCE/WRITE_ONCE for 'conf->log' [+ + +]
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Tue Oct 10 23:19:41 2023 +0800

    md/raid5-cache: use READ_ONCE/WRITE_ONCE for 'conf->log'
    
    [ Upstream commit 06a4d0d8c642b5ea654e832b74dca12965356da0 ]
    
    'conf->log' is set with 'reconfig_mutex' grabbed, however, readers are
    not procted, hence protect it with READ_ONCE/WRITE_ONCE to prevent
    reading abnormal values.
    
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Signed-off-by: Song Liu <song@kernel.org>
    Link: https://lore.kernel.org/r/20231010151958.145896-3-yukuai1@huaweicloud.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
md: clean up invalid BUG_ON in md_ioctl [+ + +]
Author: Li Nan <linan122@huawei.com>
Date:   Mon Feb 26 11:14:38 2024 +0800

    md: clean up invalid BUG_ON in md_ioctl
    
    [ Upstream commit 9dd8702e7cd28ebf076ff838933f29cf671165ec ]
    
    'disk->private_data' is set to mddev in md_alloc() and never set to NULL,
    and users need to open mddev before submitting ioctl. So mddev must not
    have been freed during ioctl, and there is no need to check mddev here.
    Clean up it.
    
    Signed-off-by: Li Nan <linan122@huawei.com>
    Reviewed-by: Yu Kuai <yukuai3@huawei.com>
    Signed-off-by: Song Liu <song@kernel.org>
    Link: https://lore.kernel.org/r/20240226031444.3606764-4-linan666@huaweicloud.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
media: drivers/media/dvb-core: copy user arrays safely [+ + +]
Author: Philipp Stanner <pstanner@redhat.com>
Date:   Thu Nov 2 20:16:34 2023 +0100

    media: drivers/media/dvb-core: copy user arrays safely
    
    [ Upstream commit 102fb77c2deb0df3683ef8ff7a6f4cf91dc456e2 ]
    
    At several positions in dvb_frontend.c, memdup_user() is utilized to
    copy userspace arrays. This is done without overflow checks.
    
    Use the new wrapper memdup_array_user() to copy the arrays more safely.
    
    Link: https://lore.kernel.org/linux-media/20231102191633.52592-2-pstanner@redhat.com
    Suggested-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Philipp Stanner <pstanner@redhat.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: pci: cx23885: check cx23885_vdev_init() return [+ + +]
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Thu Oct 19 08:58:49 2023 +0200

    media: pci: cx23885: check cx23885_vdev_init() return
    
    [ Upstream commit 15126b916e39b0cb67026b0af3c014bfeb1f76b3 ]
    
    cx23885_vdev_init() can return a NULL pointer, but that pointer
    is used in the next line without a check.
    
    Add a NULL pointer check and go to the error unwind if it is NULL.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Reported-by: Sicong Huang <huangsicong@iie.ac.cn>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: qcom: venus: fix incorrect return value [+ + +]
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Fri Oct 6 12:08:47 2023 +0200

    media: qcom: venus: fix incorrect return value
    
    [ Upstream commit 51b74c09ac8c5862007fc2bf0d465529d06dd446 ]
    
    'pd' can be NULL, and in that case it shouldn't be passed to
    PTR_ERR. Fixes a smatch warning:
    
    drivers/media/platform/qcom/venus/pm_helpers.c:873 vcodec_domains_get() warn: passing zero to 'PTR_ERR'
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: radio-isa: use dev_name to fill in bus_info [+ + +]
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Sat Sep 23 17:21:04 2023 +0200

    media: radio-isa: use dev_name to fill in bus_info
    
    [ Upstream commit 8b7f3cf4eb9a95940eaabad3226caeaa0d9aa59d ]
    
    This fixes this warning:
    
    drivers/media/radio/radio-isa.c: In function 'radio_isa_querycap':
    drivers/media/radio/radio-isa.c:39:57: warning: '%s' directive output may be truncated writing up to 35 bytes into a region of size 28 [-Wformat-truncation=]
       39 |         snprintf(v->bus_info, sizeof(v->bus_info), "ISA:%s", isa->v4l2_dev.name);
          |                                                         ^~
    drivers/media/radio/radio-isa.c:39:9: note: 'snprintf' output between 5 and 40 bytes into a destination of size 32
       39 |         snprintf(v->bus_info, sizeof(v->bus_info), "ISA:%s", isa->v4l2_dev.name);
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: s5p-mfc: Fix potential deadlock on condlock [+ + +]
Author: Chengfeng Ye <dg573847474@gmail.com>
Date:   Tue Sep 26 10:53:30 2023 +0000

    media: s5p-mfc: Fix potential deadlock on condlock
    
    [ Upstream commit 04d19e65137e3cd4a5004e624c85c762933d115c ]
    
    As &dev->condlock is acquired under irq context along the following
    call chain from s5p_mfc_irq(), other acquisition of the same lock
    inside process context or softirq context should disable irq avoid double
    lock. enc_post_frame_start() seems to be one such function that execute
    under process context or softirq context.
    
    <deadlock #1>
    
    enc_post_frame_start()
    --> clear_work_bit()
    --> spin_loc(&dev->condlock)
    <interrupt>
       --> s5p_mfc_irq()
       --> s5p_mfc_handle_frame()
       --> clear_work_bit()
       --> spin_lock(&dev->condlock)
    
    This flaw was found by an experimental static analysis tool I am
    developing for irq-related deadlock.
    
    To prevent the potential deadlock, the patch change clear_work_bit()
    inside enc_post_frame_start() to clear_work_bit_irqsave().
    
    Signed-off-by: Chengfeng Ye <dg573847474@gmail.com>
    Acked-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
memcg_write_event_control(): fix a user-triggerable oops [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun Jul 21 14:45:08 2024 -0400

    memcg_write_event_control(): fix a user-triggerable oops
    
    commit 046667c4d3196938e992fba0dfcde570aa85cd0e upstream.
    
    we are *not* guaranteed that anything past the terminating NUL
    is mapped (let alone initialized with anything sane).
    
    Fixes: 0dea116876ee ("cgroup: implement eventfd-based generic API for notifications")
    Cc: stable@vger.kernel.org
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
memory: stm32-fmc2-ebi: check regmap_read return value [+ + +]
Author: Christophe Kerello <christophe.kerello@foss.st.com>
Date:   Mon Feb 26 11:14:25 2024 +0100

    memory: stm32-fmc2-ebi: check regmap_read return value
    
    [ Upstream commit 722463f73bcf65a8c818752a38c14ee672c77da1 ]
    
    Check regmap_read return value to avoid to use uninitialized local
    variables.
    
    Signed-off-by: Christophe Kerello <christophe.kerello@foss.st.com>
    Link: https://lore.kernel.org/r/20240226101428.37791-3-christophe.kerello@foss.st.com
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

memory: tegra: Skip SID programming if SID registers aren't set [+ + +]
Author: Ashish Mhetre <amhetre@nvidia.com>
Date:   Tue Nov 7 16:57:13 2023 +0530

    memory: tegra: Skip SID programming if SID registers aren't set
    
    [ Upstream commit 0d6c918011ce4764ed277de4726a468b7ffe5fed ]
    
    There are few MC clients where SID security and override register
    offsets are not specified like "sw_cluster0" in tegra234. Don't program
    SID override for such clients because it leads to access to invalid
    addresses.
    
    Signed-off-by: Ashish Mhetre <amhetre@nvidia.com>
    Link: https://lore.kernel.org/r/20231107112713.21399-2-amhetre@nvidia.com
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
MIPS: Loongson64: Set timer mode in cpu-probe [+ + +]
Author: Jiaxun Yang <jiaxun.yang@flygoat.com>
Date:   Tue Jul 23 17:15:44 2024 +0800

    MIPS: Loongson64: Set timer mode in cpu-probe
    
    commit 1cb6ab446424649f03c82334634360c2e3043684 upstream.
    
    Loongson64 C and G processors have EXTIMER feature which
    is conflicting with CP0 counter.
    
    Although the processor resets in EXTIMER disabled & INTIMER
    enabled mode, which is compatible with MIPS CP0 compare, firmware
    may attempt to enable EXTIMER and interfere CP0 compare.
    
    Set timer mode back to MIPS compatible mode to fix booting on
    systems with such firmware before we have an actual driver for
    EXTIMER.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mlxbf_gige: disable RX filters until RX path initialized [+ + +]
Author: David Thompson <davthompson@nvidia.com>
Date:   Fri Aug 9 12:36:12 2024 -0400

    mlxbf_gige: disable RX filters until RX path initialized
    
    [ Upstream commit df934abb185c71c9f2fa07a5013672d0cbd36560 ]
    
    A recent change to the driver exposed a bug where the MAC RX
    filters (unicast MAC, broadcast MAC, and multicast MAC) are
    configured and enabled before the RX path is fully initialized.
    The result of this bug is that after the PHY is started packets
    that match these MAC RX filters start to flow into the RX FIFO.
    And then, after rx_init() is completed, these packets will go
    into the driver RX ring as well. If enough packets are received
    to fill the RX ring (default size is 128 packets) before the call
    to request_irq() completes, the driver RX function becomes stuck.
    
    This bug is intermittent but is most likely to be seen where the
    oob_net0 interface is connected to a busy network with lots of
    broadcast and multicast traffic.
    
    All the MAC RX filters must be disabled until the RX path is ready,
    i.e. all initialization is done and all the IRQs are installed.
    
    Fixes: f7442a634ac0 ("mlxbf_gige: call request_irq() after NAPI initialized")
    Reviewed-by: Asmaa Mnebhi <asmaa@nvidia.com>
    Signed-off-by: David Thompson <davthompson@nvidia.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20240809163612.12852-1-davthompson@nvidia.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mm/memory-failure: use raw_spinlock_t in struct memory_failure_cpu [+ + +]
Author: Waiman Long <longman@redhat.com>
Date:   Tue Aug 6 12:41:07 2024 -0400

    mm/memory-failure: use raw_spinlock_t in struct memory_failure_cpu
    
    commit d75abd0d0bc29e6ebfebbf76d11b4067b35844af upstream.
    
    The memory_failure_cpu structure is a per-cpu structure.  Access to its
    content requires the use of get_cpu_var() to lock in the current CPU and
    disable preemption.  The use of a regular spinlock_t for locking purpose
    is fine for a non-RT kernel.
    
    Since the integration of RT spinlock support into the v5.15 kernel, a
    spinlock_t in a RT kernel becomes a sleeping lock and taking a sleeping
    lock in a preemption disabled context is illegal resulting in the
    following kind of warning.
    
      [12135.732244] BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
      [12135.732248] in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 270076, name: kworker/0:0
      [12135.732252] preempt_count: 1, expected: 0
      [12135.732255] RCU nest depth: 2, expected: 2
        :
      [12135.732420] Hardware name: Dell Inc. PowerEdge R640/0HG0J8, BIOS 2.10.2 02/24/2021
      [12135.732423] Workqueue: kacpi_notify acpi_os_execute_deferred
      [12135.732433] Call Trace:
      [12135.732436]  <TASK>
      [12135.732450]  dump_stack_lvl+0x57/0x81
      [12135.732461]  __might_resched.cold+0xf4/0x12f
      [12135.732479]  rt_spin_lock+0x4c/0x100
      [12135.732491]  memory_failure_queue+0x40/0xe0
      [12135.732503]  ghes_do_memory_failure+0x53/0x390
      [12135.732516]  ghes_do_proc.constprop.0+0x229/0x3e0
      [12135.732575]  ghes_proc+0xf9/0x1a0
      [12135.732591]  ghes_notify_hed+0x6a/0x150
      [12135.732602]  notifier_call_chain+0x43/0xb0
      [12135.732626]  blocking_notifier_call_chain+0x43/0x60
      [12135.732637]  acpi_ev_notify_dispatch+0x47/0x70
      [12135.732648]  acpi_os_execute_deferred+0x13/0x20
      [12135.732654]  process_one_work+0x41f/0x500
      [12135.732695]  worker_thread+0x192/0x360
      [12135.732715]  kthread+0x111/0x140
      [12135.732733]  ret_from_fork+0x29/0x50
      [12135.732779]  </TASK>
    
    Fix it by using a raw_spinlock_t for locking instead.
    
    Also move the pr_err() out of the lock critical section and after
    put_cpu_ptr() to avoid indeterminate latency and the possibility of sleep
    with this call.
    
    [longman@redhat.com: don't hold percpu ref across pr_err(), per Miaohe]
      Link: https://lkml.kernel.org/r/20240807181130.1122660-1-longman@redhat.com
    Link: https://lkml.kernel.org/r/20240806164107.1044956-1-longman@redhat.com
    Fixes: 0f383b6dc96e ("locking/spinlock: Provide RT variant")
    Signed-off-by: Waiman Long <longman@redhat.com>
    Acked-by: Miaohe Lin <linmiaohe@huawei.com>
    Cc: "Huang, Ying" <ying.huang@intel.com>
    Cc: Juri Lelli <juri.lelli@redhat.com>
    Cc: Len Brown <len.brown@intel.com>
    Cc: Naoya Horiguchi <nao.horiguchi@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/numa: no task_numa_fault() call if PMD is changed [+ + +]
Author: Zi Yan <ziy@nvidia.com>
Date:   Fri Aug 9 10:59:05 2024 -0400

    mm/numa: no task_numa_fault() call if PMD is changed
    
    commit fd8c35a92910f4829b7c99841f39b1b952c259d5 upstream.
    
    When handling a numa page fault, task_numa_fault() should be called by a
    process that restores the page table of the faulted folio to avoid
    duplicated stats counting.  Commit c5b5a3dd2c1f ("mm: thp: refactor NUMA
    fault handling") restructured do_huge_pmd_numa_page() and did not avoid
    task_numa_fault() call in the second page table check after a numa
    migration failure.  Fix it by making all !pmd_same() return immediately.
    
    This issue can cause task_numa_fault() being called more than necessary
    and lead to unexpected numa balancing results (It is hard to tell whether
    the issue will cause positive or negative performance impact due to
    duplicated numa fault counting).
    
    Link: https://lkml.kernel.org/r/20240809145906.1513458-3-ziy@nvidia.com
    Fixes: c5b5a3dd2c1f ("mm: thp: refactor NUMA fault handling")
    Reported-by: "Huang, Ying" <ying.huang@intel.com>
    Closes: https://lore.kernel.org/linux-mm/87zfqfw0yw.fsf@yhuang6-desk2.ccr.corp.intel.com/
    Signed-off-by: Zi Yan <ziy@nvidia.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
    Cc: "Huang, Ying" <ying.huang@intel.com>
    Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Yang Shi <shy828301@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mm/numa: no task_numa_fault() call if PTE is changed [+ + +]
Author: Zi Yan <ziy@nvidia.com>
Date:   Fri Aug 9 10:59:04 2024 -0400

    mm/numa: no task_numa_fault() call if PTE is changed
    
    commit 40b760cfd44566bca791c80e0720d70d75382b84 upstream.
    
    When handling a numa page fault, task_numa_fault() should be called by a
    process that restores the page table of the faulted folio to avoid
    duplicated stats counting.  Commit b99a342d4f11 ("NUMA balancing: reduce
    TLB flush via delaying mapping on hint page fault") restructured
    do_numa_page() and did not avoid task_numa_fault() call in the second page
    table check after a numa migration failure.  Fix it by making all
    !pte_same() return immediately.
    
    This issue can cause task_numa_fault() being called more than necessary
    and lead to unexpected numa balancing results (It is hard to tell whether
    the issue will cause positive or negative performance impact due to
    duplicated numa fault counting).
    
    Link: https://lkml.kernel.org/r/20240809145906.1513458-2-ziy@nvidia.com
    Fixes: b99a342d4f11 ("NUMA balancing: reduce TLB flush via delaying mapping on hint page fault")
    Signed-off-by: Zi Yan <ziy@nvidia.com>
    Reported-by: "Huang, Ying" <ying.huang@intel.com>
    Closes: https://lore.kernel.org/linux-mm/87zfqfw0yw.fsf@yhuang6-desk2.ccr.corp.intel.com/
    Acked-by: David Hildenbrand <david@redhat.com>
    Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
    Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Yang Shi <shy828301@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/vmalloc: fix page mapping if vm_area_alloc_pages() with high order fallback to order 0 [+ + +]
Author: Hailong Liu <hailong.liu@oppo.com>
Date:   Thu Aug 8 20:19:56 2024 +0800

    mm/vmalloc: fix page mapping if vm_area_alloc_pages() with high order fallback to order 0
    
    [ Upstream commit 61ebe5a747da649057c37be1c37eb934b4af79ca ]
    
    The __vmap_pages_range_noflush() assumes its argument pages** contains
    pages with the same page shift.  However, since commit e9c3cda4d86e ("mm,
    vmalloc: fix high order __GFP_NOFAIL allocations"), if gfp_flags includes
    __GFP_NOFAIL with high order in vm_area_alloc_pages() and page allocation
    failed for high order, the pages** may contain two different page shifts
    (high order and order-0).  This could lead __vmap_pages_range_noflush() to
    perform incorrect mappings, potentially resulting in memory corruption.
    
    Users might encounter this as follows (vmap_allow_huge = true, 2M is for
    PMD_SIZE):
    
    kvmalloc(2M, __GFP_NOFAIL|GFP_X)
        __vmalloc_node_range_noprof(vm_flags=VM_ALLOW_HUGE_VMAP)
            vm_area_alloc_pages(order=9) ---> order-9 allocation failed and fallback to order-0
                vmap_pages_range()
                    vmap_pages_range_noflush()
                        __vmap_pages_range_noflush(page_shift = 21) ----> wrong mapping happens
    
    We can remove the fallback code because if a high-order allocation fails,
    __vmalloc_node_range_noprof() will retry with order-0.  Therefore, it is
    unnecessary to fallback to order-0 here.  Therefore, fix this by removing
    the fallback code.
    
    Link: https://lkml.kernel.org/r/20240808122019.3361-1-hailong.liu@oppo.com
    Fixes: e9c3cda4d86e ("mm, vmalloc: fix high order __GFP_NOFAIL allocations")
    Signed-off-by: Hailong Liu <hailong.liu@oppo.com>
    Reported-by: Tangquan Zheng <zhengtangquan@oppo.com>
    Reviewed-by: Baoquan He <bhe@redhat.com>
    Reviewed-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
    Acked-by: Barry Song <baohua@kernel.org>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mm: fix endless reclaim on machines with unaccepted memory [+ + +]
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Fri Aug 9 14:48:47 2024 +0300

    mm: fix endless reclaim on machines with unaccepted memory
    
    [ Upstream commit 807174a93d24c456503692dc3f5af322ee0b640a ]
    
    Unaccepted memory is considered unusable free memory, which is not counted
    as free on the zone watermark check.  This causes get_page_from_freelist()
    to accept more memory to hit the high watermark, but it creates problems
    in the reclaim path.
    
    The reclaim path encounters a failed zone watermark check and attempts to
    reclaim memory.  This is usually successful, but if there is little or no
    reclaimable memory, it can result in endless reclaim with little to no
    progress.  This can occur early in the boot process, just after start of
    the init process when the only reclaimable memory is the page cache of the
    init executable and its libraries.
    
    Make unaccepted memory free from watermark check point of view.  This way
    unaccepted memory will never be the trigger of memory reclaim.  Accept
    more memory in the get_page_from_freelist() if needed.
    
    Link: https://lkml.kernel.org/r/20240809114854.3745464-2-kirill.shutemov@linux.intel.com
    Fixes: dcdfdd40fa82 ("mm: Add support for unaccepted memory")
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reported-by: Jianxiong Gao <jxgao@google.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Tested-by: Jianxiong Gao <jxgao@google.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Mike Rapoport (Microsoft) <rppt@kernel.org>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: <stable@vger.kernel.org>    [6.5+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

mm: Remove kmem_valid_obj() [+ + +]
Author: Zhen Lei <thunder.leizhen@huawei.com>
Date:   Sat Aug 5 11:17:25 2023 +0800

    mm: Remove kmem_valid_obj()
    
    commit 6e284c55fc0bef7d25fd34d29db11f483da60ea4 upstream.
    
    Function kmem_dump_obj() will splat if passed a pointer to a non-slab
    object. So nothing calls it directly, instead calling kmem_valid_obj()
    first to determine whether the passed pointer to a valid slab object. This
    means that merging kmem_valid_obj() into kmem_dump_obj() will make the
    code more concise. Therefore, convert kmem_dump_obj() to work the same
    way as vmalloc_dump_obj(), removing the need for the kmem_dump_obj()
    caller to check kmem_valid_obj().  After this, there are no remaining
    calls to kmem_valid_obj() anymore, and it can be safely removed.
    
    Suggested-by: Matthew Wilcox <willy@infradead.org>
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mmc: dw_mmc: allow biu and ciu clocks to defer [+ + +]
Author: Ben Whitten <ben.whitten@gmail.com>
Date:   Sun Aug 11 22:22:11 2024 +0100

    mmc: dw_mmc: allow biu and ciu clocks to defer
    
    commit 6275c7bc8dd07644ea8142a1773d826800f0f3f7 upstream.
    
    Fix a race condition if the clock provider comes up after mmc is probed,
    this causes mmc to fail without retrying.
    When given the DEFER error from the clk source, pass it on up the chain.
    
    Fixes: f90a0612f0e1 ("mmc: dw_mmc: lookup for optional biu and ciu clocks")
    Signed-off-by: Ben Whitten <ben.whitten@gmail.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20240811212212.123255-1-ben.whitten@gmail.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mmc: mmc_test: Fix NULL dereference on allocation failure [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Tue Aug 20 11:44:08 2024 +0300

    mmc: mmc_test: Fix NULL dereference on allocation failure
    
    [ Upstream commit a1e627af32ed60713941cbfc8075d44cad07f6dd ]
    
    If the "test->highmem = alloc_pages()" allocation fails then calling
    __free_pages(test->highmem) will result in a NULL dereference.  Also
    change the error code to -ENOMEM instead of returning success.
    
    Fixes: 2661081f5ab9 ("mmc_test: highmem tests")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/8c90be28-67b4-4b0d-a105-034dc72a0b31@stanley.mountain
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

mmc: mtk-sd: receive cmd8 data when hs400 tuning fail [+ + +]
Author: Mengqi Zhang <mengqi.zhang@mediatek.com>
Date:   Tue Jul 16 09:37:04 2024 +0800

    mmc: mtk-sd: receive cmd8 data when hs400 tuning fail
    
    commit 9374ae912dbb1eed8139ed75fd2c0f1b30ca454d upstream.
    
    When we use cmd8 as the tuning command in hs400 mode, the command
    response sent back by some eMMC devices cannot be correctly sampled
    by MTK eMMC controller at some weak sample timing. In this case,
    command timeout error may occur. So we must receive the following
    data to make sure the next cmd8 send correctly.
    
    Signed-off-by: Mengqi Zhang <mengqi.zhang@mediatek.com>
    Fixes: c4ac38c6539b ("mmc: mtk-sd: Add HS400 online tuning support")
    Cc: stable@vger.stable.com
    Link: https://lore.kernel.org/r/20240716013704.10578-1-mengqi.zhang@mediatek.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mptcp: correct MPTCP_SUBFLOW_ATTR_SSN_OFFSET reserved size [+ + +]
Author: Eugene Syromiatnikov <esyr@redhat.com>
Date:   Mon Aug 12 08:51:23 2024 +0200

    mptcp: correct MPTCP_SUBFLOW_ATTR_SSN_OFFSET reserved size
    
    [ Upstream commit 655111b838cdabdb604f3625a9ff08c5eedb11da ]
    
    ssn_offset field is u32 and is placed into the netlink response with
    nla_put_u32(), but only 2 bytes are reserved for the attribute payload
    in subflow_get_info_size() (even though it makes no difference
    in the end, as it is aligned up to 4 bytes).  Supply the correct
    argument to the relevant nla_total_size() call to make it less
    confusing.
    
    Fixes: 5147dfb50832 ("mptcp: allow dumping subflow context to userspace")
    Signed-off-by: Eugene Syromiatnikov <esyr@redhat.com>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20240812065024.GA19719@asgard.redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

mptcp: pm: avoid possible UaF when selecting endp [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Aug 19 21:45:32 2024 +0200

    mptcp: pm: avoid possible UaF when selecting endp
    
    commit 48e50dcbcbaaf713d82bf2da5c16aeced94ad07d upstream.
    
    select_local_address() and select_signal_address() both select an
    endpoint entry from the list inside an RCU protected section, but return
    a reference to it, to be read later on. If the entry is dereferenced
    after the RCU unlock, reading info could cause a Use-after-Free.
    
    A simple solution is to copy the required info while inside the RCU
    protected section to avoid any risk of UaF later. The address ID might
    need to be modified later to handle the ID0 case later, so a copy seems
    OK to deal with.
    
    Reported-by: Paolo Abeni <pabeni@redhat.com>
    Closes: https://lore.kernel.org/45cd30d3-7710-491c-ae4d-a1368c00beb1@redhat.com
    Fixes: 01cacb00b35c ("mptcp: add netlink-based PM")
    Cc: stable@vger.kernel.org
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-14-38035d40de5b@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: pm: check add_addr_accept_max before accepting new ADD_ADDR [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Aug 19 21:45:28 2024 +0200

    mptcp: pm: check add_addr_accept_max before accepting new ADD_ADDR
    
    commit 0137a3c7c2ea3f9df8ebfc65d78b4ba712a187bb upstream.
    
    The limits might have changed in between, it is best to check them
    before accepting new ADD_ADDR.
    
    Fixes: d0876b2284cf ("mptcp: add the incoming RM_ADDR support")
    Cc: stable@vger.kernel.org
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-10-38035d40de5b@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: pm: fullmesh: select the right ID later [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Aug 19 21:45:30 2024 +0200

    mptcp: pm: fullmesh: select the right ID later
    
    commit 09355f7abb9fbfc1a240be029837921ea417bf4f upstream.
    
    When reacting upon the reception of an ADD_ADDR, the in-kernel PM first
    looks for fullmesh endpoints. If there are some, it will pick them,
    using their entry ID.
    
    It should set the ID 0 when using the endpoint corresponding to the
    initial subflow, it is a special case imposed by the MPTCP specs.
    
    Note that msk->mpc_endpoint_id might not be set when receiving the first
    ADD_ADDR from the server. So better to compare the addresses.
    
    Fixes: 1a0d6136c5f0 ("mptcp: local addresses fullmesh")
    Cc: stable@vger.kernel.org
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-12-38035d40de5b@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: pm: only decrement add_addr_accepted for MPJ req [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Aug 19 21:45:27 2024 +0200

    mptcp: pm: only decrement add_addr_accepted for MPJ req
    
    commit 1c1f721375989579e46741f59523e39ec9b2a9bd upstream.
    
    Adding the following warning ...
    
      WARN_ON_ONCE(msk->pm.add_addr_accepted == 0)
    
    ... before decrementing the add_addr_accepted counter helped to find a
    bug when running the "remove single subflow" subtest from the
    mptcp_join.sh selftest.
    
    Removing a 'subflow' endpoint will first trigger a RM_ADDR, then the
    subflow closure. Before this patch, and upon the reception of the
    RM_ADDR, the other peer will then try to decrement this
    add_addr_accepted. That's not correct because the attached subflows have
    not been created upon the reception of an ADD_ADDR.
    
    A way to solve that is to decrement the counter only if the attached
    subflow was an MP_JOIN to a remote id that was not 0, and initiated by
    the host receiving the RM_ADDR.
    
    Fixes: d0876b2284cf ("mptcp: add the incoming RM_ADDR support")
    Cc: stable@vger.kernel.org
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-9-38035d40de5b@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: pm: only in-kernel cannot have entries with ID 0 [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Aug 19 21:45:29 2024 +0200

    mptcp: pm: only in-kernel cannot have entries with ID 0
    
    commit ca6e55a703ca2894611bb5c5bca8bfd2290fd91e upstream.
    
    The ID 0 is specific per MPTCP connections. The per netns entries cannot
    have this special ID 0 then.
    
    But that's different for the userspace PM where the entries are per
    connection, they can then use this special ID 0.
    
    Fixes: f40be0db0b76 ("mptcp: unify pm get_flags_and_ifindex_by_id")
    Cc: stable@vger.kernel.org
    Acked-by: Geliang Tang <geliang@kernel.org>
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-11-38035d40de5b@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: pm: only mark 'subflow' endp as available [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Aug 19 21:45:26 2024 +0200

    mptcp: pm: only mark 'subflow' endp as available
    
    commit 322ea3778965da72862cca2a0c50253aacf65fe6 upstream.
    
    Adding the following warning ...
    
      WARN_ON_ONCE(msk->pm.local_addr_used == 0)
    
    ... before decrementing the local_addr_used counter helped to find a bug
    when running the "remove single address" subtest from the mptcp_join.sh
    selftests.
    
    Removing a 'signal' endpoint will trigger the removal of all subflows
    linked to this endpoint via mptcp_pm_nl_rm_addr_or_subflow() with
    rm_type == MPTCP_MIB_RMSUBFLOW. This will decrement the local_addr_used
    counter, which is wrong in this case because this counter is linked to
    'subflow' endpoints, and here it is a 'signal' endpoint that is being
    removed.
    
    Now, the counter is decremented, only if the ID is being used outside
    of mptcp_pm_nl_rm_addr_or_subflow(), only for 'subflow' endpoints, and
    if the ID is not 0 -- local_addr_used is not taking into account these
    ones. This marking of the ID as being available, and the decrement is
    done no matter if a subflow using this ID is currently available,
    because the subflow could have been closed before.
    
    Fixes: 06faa2271034 ("mptcp: remove multi addresses and subflows in PM")
    Cc: stable@vger.kernel.org
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-8-38035d40de5b@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: pm: re-using ID of unused flushed subflows [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Aug 19 21:45:23 2024 +0200

    mptcp: pm: re-using ID of unused flushed subflows
    
    commit ef34a6ea0cab1800f4b3c9c3c2cefd5091e03379 upstream.
    
    If no subflows are attached to the 'subflow' endpoints that are being
    flushed, the corresponding addr IDs will not be marked as available
    again.
    
    Mark all ID as being available when flushing all the 'subflow'
    endpoints, and reset local_addr_used counter to cover these cases.
    
    Note that mptcp_pm_remove_addrs_and_subflows() helper is only called for
    flushing operations, not to remove a specific set of addresses and
    subflows.
    
    Fixes: 06faa2271034 ("mptcp: remove multi addresses and subflows in PM")
    Cc: stable@vger.kernel.org
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-5-38035d40de5b@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: pm: re-using ID of unused removed ADD_ADDR [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Aug 19 21:45:19 2024 +0200

    mptcp: pm: re-using ID of unused removed ADD_ADDR
    
    commit e255683c06df572ead96db5efb5d21be30c0efaa upstream.
    
    If no subflow is attached to the 'signal' endpoint that is being
    removed, the addr ID will not be marked as available again.
    
    Mark the linked ID as available when removing the address entry from the
    list to cover this case.
    
    Fixes: b6c08380860b ("mptcp: remove addr and subflow in PM netlink")
    Cc: stable@vger.kernel.org
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-1-38035d40de5b@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: pm: re-using ID of unused removed subflows [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Aug 19 21:45:21 2024 +0200

    mptcp: pm: re-using ID of unused removed subflows
    
    commit edd8b5d868a4d459f3065493001e293901af758d upstream.
    
    If no subflow is attached to the 'subflow' endpoint that is being
    removed, the addr ID will not be marked as available again.
    
    Mark the linked ID as available when removing the 'subflow' endpoint if
    no subflow is attached to it.
    
    While at it, the local_addr_used counter is decremented if the ID was
    marked as being used to reflect the reality, but also to allow adding
    new endpoints after that.
    
    Fixes: b6c08380860b ("mptcp: remove addr and subflow in PM netlink")
    Cc: stable@vger.kernel.org
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-3-38035d40de5b@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: pm: remove mptcp_pm_remove_subflow() [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Aug 19 21:45:25 2024 +0200

    mptcp: pm: remove mptcp_pm_remove_subflow()
    
    commit f448451aa62d54be16acb0034223c17e0d12bc69 upstream.
    
    This helper is confusing. It is in pm.c, but it is specific to the
    in-kernel PM and it cannot be used by the userspace one. Also, it simply
    calls one in-kernel specific function with the PM lock, while the
    similar mptcp_pm_remove_addr() helper requires the PM lock.
    
    What's left is the pr_debug(), which is not that useful, because a
    similar one is present in the only function called by this helper:
    
      mptcp_pm_nl_rm_subflow_received()
    
    After these modifications, this helper can be marked as 'static', and
    the lock can be taken only once in mptcp_pm_flush_addrs_and_subflows().
    
    Note that it is not a bug fix, but it will help backporting the
    following commits.
    
    Fixes: 0ee4261a3681 ("mptcp: implement mptcp_pm_remove_subflow")
    Cc: stable@vger.kernel.org
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-7-38035d40de5b@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/mlx5e: Correctly report errors for ethtool rx flows [+ + +]
Author: Cosmin Ratiu <cratiu@nvidia.com>
Date:   Thu Aug 8 17:41:05 2024 +0300

    net/mlx5e: Correctly report errors for ethtool rx flows
    
    [ Upstream commit cbc796be1779c4dbc9a482c7233995e2a8b6bfb3 ]
    
    Previously, an ethtool rx flow with no attrs would not be added to the
    NIC as it has no rules to configure the hw with, but it would be
    reported as successful to the caller (return code 0). This is confusing
    for the user as ethtool then reports "Added rule $num", but no rule was
    actually added.
    
    This change corrects that by instead reporting these wrong rules as
    -EINVAL.
    
    Fixes: b29c61dac3a2 ("net/mlx5e: Ethtool steering flow validation refactoring")
    Signed-off-by: Cosmin Ratiu <cratiu@nvidia.com>
    Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
    Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/20240808144107.2095424-5-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/mlx5e: Take state lock during tx timeout reporter [+ + +]
Author: Dragos Tatulea <dtatulea@nvidia.com>
Date:   Thu Aug 8 17:41:04 2024 +0300

    net/mlx5e: Take state lock during tx timeout reporter
    
    [ Upstream commit e6b5afd30b99b43682a7764e1a74a42fe4d5f4b3 ]
    
    mlx5e_safe_reopen_channels() requires the state lock taken. The
    referenced changed in the Fixes tag removed the lock to fix another
    issue. This patch adds it back but at a later point (when calling
    mlx5e_safe_reopen_channels()) to avoid the deadlock referenced in the
    Fixes tag.
    
    Fixes: eab0da38912e ("net/mlx5e: Fix possible deadlock on mlx5e_tx_timeout_work")
    Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
    Link: https://lore.kernel.org/all/ZplpKq8FKi3vwfxv@gmail.com/T/
    Reviewed-by: Breno Leitao <leitao@debian.org>
    Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/20240808144107.2095424-4-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/sun3_82586: Avoid reading past buffer in debug output [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Tue Feb 6 08:16:54 2024 -0800

    net/sun3_82586: Avoid reading past buffer in debug output
    
    [ Upstream commit 4bea747f3fbec33c16d369b2f51e55981d7c78d0 ]
    
    Since NUM_XMIT_BUFFS is always 1, building m68k with sun3_defconfig and
    -Warraybounds, this build warning is visible[1]:
    
    drivers/net/ethernet/i825xx/sun3_82586.c: In function 'sun3_82586_timeout':
    drivers/net/ethernet/i825xx/sun3_82586.c:990:122: warning: array subscript 1 is above array bounds of 'volatile struct transmit_cmd_struct *[1]' [-Warray-bounds=]
      990 |                 printk("%s: command-stats: %04x %04x\n",dev->name,swab16(p->xmit_cmds[0]->cmd_status),swab16(p->xmit_cmds[1]->cmd_status));
          |                                                                                                               ~~~~~~~~~~~~^~~
    ...
    drivers/net/ethernet/i825xx/sun3_82586.c:156:46: note: while referencing 'xmit_cmds'
      156 |         volatile struct transmit_cmd_struct *xmit_cmds[NUM_XMIT_BUFFS];
    
    Avoid accessing index 1 since it doesn't exist.
    
    Link: https://github.com/KSPP/linux/issues/325 [1]
    Cc: Sam Creasey <sammy@sammy.net>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Tested-by: Simon Horman <horms@kernel.org> # build-tested
    Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
    Link: https://lore.kernel.org/r/20240206161651.work.876-kees@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: axienet: Fix register defines comment description [+ + +]
Author: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
Date:   Fri Aug 9 11:56:09 2024 +0530

    net: axienet: Fix register defines comment description
    
    [ Upstream commit 9ff2f816e2aa65ca9a1cdf0954842f8173c0f48d ]
    
    In axiethernet header fix register defines comment description to be
    inline with IP documentation. It updates MAC configuration register,
    MDIO configuration register and frame filter control description.
    
    Fixes: 8a3b7a252dca ("drivers/net/ethernet/xilinx: added Xilinx AXI Ethernet driver")
    Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dsa: microchip: fix PTP config failure when using multiple ports [+ + +]
Author: Martin Whitaker <foss@martin-whitaker.me.uk>
Date:   Sat Aug 17 10:41:41 2024 +0100

    net: dsa: microchip: fix PTP config failure when using multiple ports
    
    commit 6efea5135417ae8194485d1d05ea79a21cf1a11c upstream.
    
    When performing the port_hwtstamp_set operation, ptp_schedule_worker()
    will be called if hardware timestamoing is enabled on any of the ports.
    When using multiple ports for PTP, port_hwtstamp_set is executed for
    each port. When called for the first time ptp_schedule_worker() returns
    0. On subsequent calls it returns 1, indicating the worker is already
    scheduled. Currently the ksz driver treats 1 as an error and fails to
    complete the port_hwtstamp_set operation, thus leaving the timestamping
    configuration for those ports unchanged.
    
    This patch fixes this by ignoring the ptp_schedule_worker() return
    value.
    
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/7aae307a-35ca-4209-a850-7b2749d40f90@martin-whitaker.me.uk
    Fixes: bb01ad30570b0 ("net: dsa: microchip: ptp: manipulating absolute time using ptp hw clock")
    Signed-off-by: Martin Whitaker <foss@martin-whitaker.me.uk>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Acked-by: Arun Ramadoss <arun.ramadoss@microchip.com>
    Link: https://patch.msgid.link/20240817094141.3332-1-foss@martin-whitaker.me.uk
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: dsa: mv88e6xxx: Fix out-of-bound access [+ + +]
Author: Joseph Huang <Joseph.Huang@garmin.com>
Date:   Mon Aug 19 19:52:50 2024 -0400

    net: dsa: mv88e6xxx: Fix out-of-bound access
    
    [ Upstream commit 528876d867a23b5198022baf2e388052ca67c952 ]
    
    If an ATU violation was caused by a CPU Load operation, the SPID could
    be larger than DSA_MAX_PORTS (the size of mv88e6xxx_chip.ports[] array).
    
    Fixes: 75c05a74e745 ("net: dsa: mv88e6xxx: Fix counting of ATU violations")
    Signed-off-by: Joseph Huang <Joseph.Huang@garmin.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://patch.msgid.link/20240819235251.1331763-1-Joseph.Huang@garmin.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dsa: vsc73xx: check busy flag in MDIO operations [+ + +]
Author: Pawel Dembicki <paweldembicki@gmail.com>
Date:   Fri Aug 9 21:38:04 2024 +0200

    net: dsa: vsc73xx: check busy flag in MDIO operations
    
    [ Upstream commit fa63c6434b6f6aaf9d8d599dc899bc0a074cc0ad ]
    
    The VSC73xx has a busy flag used during MDIO operations. It is raised
    when MDIO read/write operations are in progress. Without it, PHYs are
    misconfigured and bus operations do not work as expected.
    
    Fixes: 05bd97fc559d ("net: dsa: Add Vitesse VSC73xx DSA router driver")
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dsa: vsc73xx: pass value in phy_write operation [+ + +]
Author: Pawel Dembicki <paweldembicki@gmail.com>
Date:   Fri Aug 9 21:38:03 2024 +0200

    net: dsa: vsc73xx: pass value in phy_write operation
    
    [ Upstream commit 5b9eebc2c7a5f0cc7950d918c1e8a4ad4bed5010 ]
    
    In the 'vsc73xx_phy_write' function, the register value is missing,
    and the phy write operation always sends zeros.
    
    This commit passes the value variable into the proper register.
    
    Fixes: 05bd97fc559d ("net: dsa: Add Vitesse VSC73xx DSA router driver")
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dsa: vsc73xx: use read_poll_timeout instead delay loop [+ + +]
Author: Pawel Dembicki <paweldembicki@gmail.com>
Date:   Wed Apr 17 22:50:44 2024 +0200

    net: dsa: vsc73xx: use read_poll_timeout instead delay loop
    
    [ Upstream commit eb7e33d01db3aec128590391b2397384bab406b6 ]
    
    Switch the delay loop during the Arbiter empty check from
    vsc73xx_adjust_link() to use read_poll_timeout(). Functionally,
    one msleep() call is eliminated at the end of the loop in the timeout
    case.
    
    As Russell King suggested:
    
    "This [change] avoids the issue that on the last iteration, the code reads
    the register, tests it, finds the condition that's being waiting for is
    false, _then_ waits and end up printing the error message - that last
    wait is rather useless, and as the arbiter state isn't checked after
    waiting, it could be that we had success during the last wait."
    
    Suggested-by: Russell King <linux@armlinux.org.uk>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
    Link: https://lore.kernel.org/r/20240417205048.3542839-2-paweldembicki@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: fa63c6434b6f ("net: dsa: vsc73xx: check busy flag in MDIO operations")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ethernet: mtk_wed: check update_wo_rx_stats in mtk_wed_update_rx_stats() [+ + +]
Author: Lorenzo Bianconi <lorenzo@kernel.org>
Date:   Tue Sep 12 10:28:00 2023 +0200

    net: ethernet: mtk_wed: check update_wo_rx_stats in mtk_wed_update_rx_stats()
    
    [ Upstream commit 486e6ca6b48d68d7fefc99e15cc1865e2210d893 ]
    
    Check if update_wo_rx_stats function pointer is properly set in
    mtk_wed_update_rx_stats routine before accessing it.
    
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://lore.kernel.org/r/b0d233386e059bccb59f18f69afb79a7806e5ded.1694507226.git.lorenzo@kernel.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ethernet: mtk_wed: fix use-after-free panic in mtk_wed_setup_tc_block_cb() [+ + +]
Author: Zheng Zhang <everything411@qq.com>
Date:   Sat Aug 10 13:26:51 2024 +0800

    net: ethernet: mtk_wed: fix use-after-free panic in mtk_wed_setup_tc_block_cb()
    
    [ Upstream commit db1b4bedb9b97c6d34b03d03815147c04fffe8b4 ]
    
    When there are multiple ap interfaces on one band and with WED on,
    turning the interface down will cause a kernel panic on MT798X.
    
    Previously, cb_priv was freed in mtk_wed_setup_tc_block() without
    marking NULL,and mtk_wed_setup_tc_block_cb() didn't check the value, too.
    
    Assign NULL after free cb_priv in mtk_wed_setup_tc_block() and check NULL
    in mtk_wed_setup_tc_block_cb().
    
    ----------
    Unable to handle kernel paging request at virtual address 0072460bca32b4f5
    Call trace:
     mtk_wed_setup_tc_block_cb+0x4/0x38
     0xffffffc0794084bc
     tcf_block_playback_offloads+0x70/0x1e8
     tcf_block_unbind+0x6c/0xc8
    ...
    ---------
    
    Fixes: 799684448e3e ("net: ethernet: mtk_wed: introduce wed wo support")
    Signed-off-by: Zheng Zhang <everything411@qq.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: hns3: add checking for vf id of mailbox [+ + +]
Author: Jian Shen <shenjian15@huawei.com>
Date:   Thu Mar 7 09:01:15 2024 +0800

    net: hns3: add checking for vf id of mailbox
    
    [ Upstream commit 4e2969a0d6a7549bc0bc1ebc990588b622c4443d ]
    
    Add checking for vf id of mailbox, in order to avoid array
    out-of-bounds risk.
    
    Signed-off-by: Jian Shen <shenjian15@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Reviewed-by: Sunil Goutham <sgoutham@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: hns3: fix a deadlock problem when config TC during resetting [+ + +]
Author: Jie Wang <wangjie125@huawei.com>
Date:   Tue Aug 13 22:10:22 2024 +0800

    net: hns3: fix a deadlock problem when config TC during resetting
    
    [ Upstream commit be5e816d00a506719e9dbb1a9c861c5ced30a109 ]
    
    When config TC during the reset process, may cause a deadlock, the flow is
    as below:
                                 pf reset start
                                     │
                                     ▼
                                  ......
    setup tc                         │
        │                            ▼
        ▼                      DOWN: napi_disable()
    napi_disable()(skip)             │
        │                            │
        ▼                            ▼
      ......                      ......
        │                            │
        ▼                            │
    napi_enable()                    │
                                     ▼
                               UINIT: netif_napi_del()
                                     │
                                     ▼
                                  ......
                                     │
                                     ▼
                               INIT: netif_napi_add()
                                     │
                                     ▼
                                  ......                 global reset start
                                     │                      │
                                     ▼                      ▼
                               UP: napi_enable()(skip)    ......
                                     │                      │
                                     ▼                      ▼
                                  ......                 napi_disable()
    
    In reset process, the driver will DOWN the port and then UINIT, in this
    case, the setup tc process will UP the port before UINIT, so cause the
    problem. Adds a DOWN process in UINIT to fix it.
    
    Fixes: bb6b94a896d4 ("net: hns3: Add reset interface implementation in client")
    Signed-off-by: Jie Wang <wangjie125@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: hns3: fix wrong use of semaphore up [+ + +]
Author: Jie Wang <wangjie125@huawei.com>
Date:   Tue Aug 13 22:10:20 2024 +0800

    net: hns3: fix wrong use of semaphore up
    
    [ Upstream commit 8445d9d3c03101859663d34fda747f6a50947556 ]
    
    Currently, if hns3 PF or VF FLR reset failed after five times retry,
    the reset done process will directly release the semaphore
    which has already released in hclge_reset_prepare_general.
    This will cause down operation fail.
    
    So this patch fixes it by adding reset state judgement. The up operation is
    only called after successful PF FLR reset.
    
    Fixes: 8627bdedc435 ("net: hns3: refactor the precedure of PF FLR")
    Fixes: f28368bb4542 ("net: hns3: refactor the procedure of VF FLR")
    Signed-off-by: Jie Wang <wangjie125@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: hns3: use the user's cfg after reset [+ + +]
Author: Peiyang Wang <wangpeiyang1@huawei.com>
Date:   Tue Aug 13 22:10:21 2024 +0800

    net: hns3: use the user's cfg after reset
    
    [ Upstream commit 30545e17eac1f50c5ef49644daf6af205100a965 ]
    
    Consider the followed case that the user change speed and reset the net
    interface. Before the hw change speed successfully, the driver get old
    old speed from hw by timer task. After reset, the previous speed is config
    to hw. As a result, the new speed is configed successfully but lost after
    PF reset. The followed pictured shows more dirrectly.
    
    +------+              +----+                 +----+
    | USER |              | PF |                 | HW |
    +---+--+              +-+--+                 +-+--+
        |  ethtool -s 100G  |                      |
        +------------------>|   set speed 100G     |
        |                   +--------------------->|
        |                   |  set successfully    |
        |                   |<---------------------+---+
        |                   |query cfg (timer task)|   |
        |                   +--------------------->|   | handle speed
        |                   |     return 200G      |   | changing event
        |  ethtool --reset  |<---------------------+   | (100G)
        +------------------>|  cfg previous speed  |<--+
        |                   |  after reset (200G)  |
        |                   +--------------------->|
        |                   |                      +---+
        |                   |query cfg (timer task)|   |
        |                   +--------------------->|   | handle speed
        |                   |     return 100G      |   | changing event
        |                   |<---------------------+   | (200G)
        |                   |                      |<--+
        |                   |query cfg (timer task)|
        |                   +--------------------->|
        |                   |     return 200G      |
        |                   |<---------------------+
        |                   |                      |
        v                   v                      v
    
    This patch save new speed if hw change speed successfully, which will be
    used after reset successfully.
    
    Fixes: 2d03eacc0b7e ("net: hns3: Only update mac configuation when necessary")
    Signed-off-by: Peiyang Wang <wangpeiyang1@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mana: Fix doorbell out of order violation and avoid unnecessary doorbell rings [+ + +]
Author: Long Li <longli@microsoft.com>
Date:   Fri Aug 9 08:58:58 2024 -0700

    net: mana: Fix doorbell out of order violation and avoid unnecessary doorbell rings
    
    commit 58a63729c957621f1990c3494c702711188ca347 upstream.
    
    After napi_complete_done() is called when NAPI is polling in the current
    process context, another NAPI may be scheduled and start running in
    softirq on another CPU and may ring the doorbell before the current CPU
    does. When combined with unnecessary rings when there is no need to arm
    the CQ, it triggers error paths in the hardware.
    
    This patch fixes this by calling napi_complete_done() after doorbell
    rings. It limits the number of unnecessary rings when there is
    no need to arm. MANA hardware specifies that there must be one doorbell
    ring every 8 CQ wraparounds. This driver guarantees one doorbell ring as
    soon as the number of consumed CQEs exceeds 4 CQ wraparounds. In practical
    workloads, the 4 CQ wraparounds proves to be big enough that it rarely
    exceeds this limit before all the napi weight is consumed.
    
    To implement this, add a per-CQ counter cq->work_done_since_doorbell,
    and make sure the CQ is armed as soon as passing 4 wraparounds of the CQ.
    
    Cc: stable@vger.kernel.org
    Fixes: e1b5683ff62e ("net: mana: Move NAPI from EQ to CQ")
    Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: Long Li <longli@microsoft.com>
    Link: https://patch.msgid.link/1723219138-29887-1-git-send-email-longli@linuxonhyperv.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: mana: Fix RX buf alloc_size alignment and atomic op panic [+ + +]
Author: Haiyang Zhang <haiyangz@microsoft.com>
Date:   Fri Aug 9 14:01:24 2024 -0700

    net: mana: Fix RX buf alloc_size alignment and atomic op panic
    
    commit 32316f676b4ee87c0404d333d248ccf777f739bc upstream.
    
    The MANA driver's RX buffer alloc_size is passed into napi_build_skb() to
    create SKB. skb_shinfo(skb) is located at the end of skb, and its alignment
    is affected by the alloc_size passed into napi_build_skb(). The size needs
    to be aligned properly for better performance and atomic operations.
    Otherwise, on ARM64 CPU, for certain MTU settings like 4000, atomic
    operations may panic on the skb_shinfo(skb)->dataref due to alignment fault.
    
    To fix this bug, add proper alignment to the alloc_size calculation.
    
    Sample panic info:
    [  253.298819] Unable to handle kernel paging request at virtual address ffff000129ba5cce
    [  253.300900] Mem abort info:
    [  253.301760]   ESR = 0x0000000096000021
    [  253.302825]   EC = 0x25: DABT (current EL), IL = 32 bits
    [  253.304268]   SET = 0, FnV = 0
    [  253.305172]   EA = 0, S1PTW = 0
    [  253.306103]   FSC = 0x21: alignment fault
    Call trace:
     __skb_clone+0xfc/0x198
     skb_clone+0x78/0xe0
     raw6_local_deliver+0xfc/0x228
     ip6_protocol_deliver_rcu+0x80/0x500
     ip6_input_finish+0x48/0x80
     ip6_input+0x48/0xc0
     ip6_sublist_rcv_finish+0x50/0x78
     ip6_sublist_rcv+0x1cc/0x2b8
     ipv6_list_rcv+0x100/0x150
     __netif_receive_skb_list_core+0x180/0x220
     netif_receive_skb_list_internal+0x198/0x2a8
     __napi_poll+0x138/0x250
     net_rx_action+0x148/0x330
     handle_softirqs+0x12c/0x3a0
    
    Cc: stable@vger.kernel.org
    Fixes: 80f6215b450e ("net: mana: Add support for jumbo frame")
    Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
    Reviewed-by: Long Li <longli@microsoft.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: mctp: test: Use correct skb for route input check [+ + +]
Author: Jeremy Kerr <jk@codeconstruct.com.au>
Date:   Fri Aug 16 18:29:17 2024 +0800

    net: mctp: test: Use correct skb for route input check
    
    [ Upstream commit ce335db0621648472f9bb4b7191eb2e13a5793cf ]
    
    In the MCTP route input test, we're routing one skb, then (when delivery
    is expected) checking the resulting routed skb.
    
    However, we're currently checking the original skb length, rather than
    the routed skb. Check the routed skb instead; the original will have
    been freed at this point.
    
    Fixes: 8892c0490779 ("mctp: Add route input to socket tests")
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Closes: https://lore.kernel.org/kernel-janitors/4ad204f0-94cf-46c5-bdab-49592addf315@kili.mountain/
    Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20240816-mctp-kunit-skb-fix-v1-1-3c367ac89c27@codeconstruct.com.au
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mscc: ocelot: fix QoS class for injected packets with "ocelot-8021q" [+ + +]
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Thu Aug 15 03:07:03 2024 +0300

    net: mscc: ocelot: fix QoS class for injected packets with "ocelot-8021q"
    
    [ Upstream commit e1b9e80236c540fa85d76e2d510d1b38e1968c5d ]
    
    There are 2 distinct code paths (listed below) in the source code which
    set up an injection header for Ocelot(-like) switches. Code path (2)
    lacks the QoS class and source port being set correctly. Especially the
    improper QoS classification is a problem for the "ocelot-8021q"
    alternative DSA tagging protocol, because we support tc-taprio and each
    packet needs to be scheduled precisely through its time slot. This
    includes PTP, which is normally assigned to a traffic class other than
    0, but would be sent through TC 0 nonetheless.
    
    The code paths are:
    
    (1) ocelot_xmit_common() from net/dsa/tag_ocelot.c - called only by the
        standard "ocelot" DSA tagging protocol which uses NPI-based
        injection - sets up bit fields in the tag manually to account for
        a small difference (destination port offset) between Ocelot and
        Seville. Namely, ocelot_ifh_set_dest() is omitted out of
        ocelot_xmit_common(), because there's also seville_ifh_set_dest().
    
    (2) ocelot_ifh_set_basic(), called by:
        - ocelot_fdma_prepare_skb() for FDMA transmission of the ocelot
          switchdev driver
        - ocelot_port_xmit() -> ocelot_port_inject_frame() for
          register-based transmission of the ocelot switchdev driver
        - felix_port_deferred_xmit() -> ocelot_port_inject_frame() for the
          DSA tagger ocelot-8021q when it must transmit PTP frames (also
          through register-based injection).
        sets the bit fields according to its own logic.
    
    The problem is that (2) doesn't call ocelot_ifh_set_qos_class().
    Copying that logic from ocelot_xmit_common() fixes that.
    
    Unfortunately, although desirable, it is not easily possible to
    de-duplicate code paths (1) and (2), and make net/dsa/tag_ocelot.c
    directly call ocelot_ifh_set_basic()), because of the ocelot/seville
    difference. This is the "minimal" fix with some logic duplicated (but
    at least more consolidated).
    
    Fixes: 0a6f17c6ae21 ("net: dsa: tag_ocelot_8021q: add support for PTP timestamping")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mscc: ocelot: serialize access to the injection/extraction groups [+ + +]
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Thu Aug 15 03:07:04 2024 +0300

    net: mscc: ocelot: serialize access to the injection/extraction groups
    
    [ Upstream commit c5e12ac3beb0dd3a718296b2d8af5528e9ab728e ]
    
    As explained by Horatiu Vultur in commit 603ead96582d ("net: sparx5: Add
    spinlock for frame transmission from CPU") which is for a similar
    hardware design, multiple CPUs can simultaneously perform injection
    or extraction. There are only 2 register groups for injection and 2
    for extraction, and the driver only uses one of each. So we'd better
    serialize access using spin locks, otherwise frame corruption is
    possible.
    
    Note that unlike in sparx5, FDMA in ocelot does not have this issue
    because struct ocelot_fdma_tx_ring already contains an xmit_lock.
    
    I guess this is mostly a problem for NXP LS1028A, as that is dual core.
    I don't think VSC7514 is. So I'm blaming the commit where LS1028A (aka
    the felix DSA driver) started using register-based packet injection and
    extraction.
    
    Fixes: 0a6f17c6ae21 ("net: dsa: tag_ocelot_8021q: add support for PTP timestamping")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mscc: ocelot: use ocelot_xmit_get_vlan_info() also for FDMA and register injection [+ + +]
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Thu Aug 15 03:07:02 2024 +0300

    net: mscc: ocelot: use ocelot_xmit_get_vlan_info() also for FDMA and register injection
    
    [ Upstream commit 67c3ca2c5cfe6a50772514e3349b5e7b3b0fac03 ]
    
    Problem description
    -------------------
    
    On an NXP LS1028A (felix DSA driver) with the following configuration:
    
    - ocelot-8021q tagging protocol
    - VLAN-aware bridge (with STP) spanning at least swp0 and swp1
    - 8021q VLAN upper interfaces on swp0 and swp1: swp0.700, swp1.700
    - ptp4l on swp0.700 and swp1.700
    
    we see that the ptp4l instances do not see each other's traffic,
    and they all go to the grand master state due to the
    ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES condition.
    
    Jumping to the conclusion for the impatient
    -------------------------------------------
    
    There is a zero-day bug in the ocelot switchdev driver in the way it
    handles VLAN-tagged packet injection. The correct logic already exists in
    the source code, in function ocelot_xmit_get_vlan_info() added by commit
    5ca721c54d86 ("net: dsa: tag_ocelot: set the classified VLAN during xmit").
    But it is used only for normal NPI-based injection with the DSA "ocelot"
    tagging protocol. The other injection code paths (register-based and
    FDMA-based) roll their own wrong logic. This affects and was noticed on
    the DSA "ocelot-8021q" protocol because it uses register-based injection.
    
    By moving ocelot_xmit_get_vlan_info() to a place that's common for both
    the DSA tagger and the ocelot switch library, it can also be called from
    ocelot_port_inject_frame() in ocelot.c.
    
    We need to touch the lines with ocelot_ifh_port_set()'s prototype
    anyway, so let's rename it to something clearer regarding what it does,
    and add a kernel-doc. ocelot_ifh_set_basic() should do.
    
    Investigation notes
    -------------------
    
    Debugging reveals that PTP event (aka those carrying timestamps, like
    Sync) frames injected into swp0.700 (but also swp1.700) hit the wire
    with two VLAN tags:
    
    00000000: 01 1b 19 00 00 00 00 01 02 03 04 05 81 00 02 bc
                                                  ~~~~~~~~~~~
    00000010: 81 00 02 bc 88 f7 00 12 00 2c 00 00 02 00 00 00
              ~~~~~~~~~~~
    00000020: 00 00 00 00 00 00 00 00 00 00 00 01 02 ff fe 03
    00000030: 04 05 00 01 00 04 00 00 00 00 00 00 00 00 00 00
    00000040: 00 00
    
    The second (unexpected) VLAN tag makes felix_check_xtr_pkt() ->
    ptp_classify_raw() fail to see these as PTP packets at the link
    partner's receiving end, and return PTP_CLASS_NONE (because the BPF
    classifier is not written to expect 2 VLAN tags).
    
    The reason why packets have 2 VLAN tags is because the transmission
    code treats VLAN incorrectly.
    
    Neither ocelot switchdev, nor felix DSA, declare the NETIF_F_HW_VLAN_CTAG_TX
    feature. Therefore, at xmit time, all VLANs should be in the skb head,
    and none should be in the hwaccel area. This is done by:
    
    static struct sk_buff *validate_xmit_vlan(struct sk_buff *skb,
                                              netdev_features_t features)
    {
            if (skb_vlan_tag_present(skb) &&
                !vlan_hw_offload_capable(features, skb->vlan_proto))
                    skb = __vlan_hwaccel_push_inside(skb);
            return skb;
    }
    
    But ocelot_port_inject_frame() handles things incorrectly:
    
            ocelot_ifh_port_set(ifh, port, rew_op, skb_vlan_tag_get(skb));
    
    void ocelot_ifh_port_set(struct sk_buff *skb, void *ifh, int port, u32 rew_op)
    {
            (...)
            if (vlan_tag)
                    ocelot_ifh_set_vlan_tci(ifh, vlan_tag);
            (...)
    }
    
    The way __vlan_hwaccel_push_inside() pushes the tag inside the skb head
    is by calling:
    
    static inline void __vlan_hwaccel_clear_tag(struct sk_buff *skb)
    {
            skb->vlan_present = 0;
    }
    
    which does _not_ zero out skb->vlan_tci as seen by skb_vlan_tag_get().
    This means that ocelot, when it calls skb_vlan_tag_get(), sees
    (and uses) a residual skb->vlan_tci, while the same VLAN tag is
    _already_ in the skb head.
    
    The trivial fix for double VLAN headers is to replace the content of
    ocelot_ifh_port_set() with:
    
            if (skb_vlan_tag_present(skb))
                    ocelot_ifh_set_vlan_tci(ifh, skb_vlan_tag_get(skb));
    
    but this would not be correct either, because, as mentioned,
    vlan_hw_offload_capable() is false for us, so we'd be inserting dead
    code and we'd always transmit packets with VID=0 in the injection frame
    header.
    
    I can't actually test the ocelot switchdev driver and rely exclusively
    on code inspection, but I don't think traffic from 8021q uppers has ever
    been injected properly, and not double-tagged. Thus I'm blaming the
    introduction of VLAN fields in the injection header - early driver code.
    
    As hinted at in the early conclusion, what we _want_ to happen for
    VLAN transmission was already described once in commit 5ca721c54d86
    ("net: dsa: tag_ocelot: set the classified VLAN during xmit").
    
    ocelot_xmit_get_vlan_info() intends to ensure that if the port through
    which we're transmitting is under a VLAN-aware bridge, the outer VLAN
    tag from the skb head is stripped from there and inserted into the
    injection frame header (so that the packet is processed in hardware
    through that actual VLAN). And in all other cases, the packet is sent
    with VID=0 in the injection frame header, since the port is VLAN-unaware
    and has logic to strip this VID on egress (making it invisible to the
    wire).
    
    Fixes: 08d02364b12f ("net: mscc: fix the injection header")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ngbe: Fix phy mode set to external phy [+ + +]
Author: Mengyuan Lou <mengyuanlou@net-swift.com>
Date:   Tue Aug 20 11:04:25 2024 +0800

    net: ngbe: Fix phy mode set to external phy
    
    commit f2916c83d746eb99f50f42c15cf4c47c2ea5f3b3 upstream.
    
    The MAC only has add the TX delay and it can not be modified.
    MAC and PHY are both set the TX delay cause transmission problems.
    So just disable TX delay in PHY, when use rgmii to attach to
    external phy, set PHY_INTERFACE_MODE_RGMII_RXID to phy drivers.
    And it is does not matter to internal phy.
    
    Fixes: bc2426d74aa3 ("net: ngbe: convert phylib to phylink")
    Signed-off-by: Mengyuan Lou <mengyuanlou@net-swift.com>
    Cc: stable@vger.kernel.org # 6.3+
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://patch.msgid.link/E6759CF1387CF84C+20240820030425.93003-1-mengyuanlou@net-swift.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: mengyuanlou <mengyuanlou@net-swift.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: ovs: fix ovs_drop_reasons error [+ + +]
Author: Menglong Dong <menglong8.dong@gmail.com>
Date:   Wed Aug 21 20:32:52 2024 +0800

    net: ovs: fix ovs_drop_reasons error
    
    [ Upstream commit 57fb67783c4011581882f32e656d738da1f82042 ]
    
    There is something wrong with ovs_drop_reasons. ovs_drop_reasons[0] is
    "OVS_DROP_LAST_ACTION", but OVS_DROP_LAST_ACTION == __OVS_DROP_REASON + 1,
    which means that ovs_drop_reasons[1] should be "OVS_DROP_LAST_ACTION".
    
    And as Adrian tested, without the patch, adding flow to drop packets
    results in:
    
    drop at: do_execute_actions+0x197/0xb20 [openvsw (0xffffffffc0db6f97)
    origin: software
    input port ifindex: 8
    timestamp: Tue Aug 20 10:19:17 2024 859853461 nsec
    protocol: 0x800
    length: 98
    original length: 98
    drop reason: OVS_DROP_ACTION_ERROR
    
    With the patch, the same results in:
    
    drop at: do_execute_actions+0x197/0xb20 [openvsw (0xffffffffc0db6f97)
    origin: software
    input port ifindex: 8
    timestamp: Tue Aug 20 10:16:13 2024 475856608 nsec
    protocol: 0x800
    length: 98
    original length: 98
    drop reason: OVS_DROP_LAST_ACTION
    
    Fix this by initializing ovs_drop_reasons with index.
    
    Fixes: 9d802da40b7c ("net: openvswitch: add last-action drop reason")
    Signed-off-by: Menglong Dong <dongml2@chinatelecom.cn>
    Tested-by: Adrian Moreno <amorenoz@redhat.com>
    Reviewed-by: Adrian Moreno <amorenoz@redhat.com>
    Link: https://patch.msgid.link/20240821123252.186305-1-dongml2@chinatelecom.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: xilinx: axienet: Always disable promiscuous mode [+ + +]
Author: Sean Anderson <sean.anderson@linux.dev>
Date:   Thu Aug 22 11:40:55 2024 -0400

    net: xilinx: axienet: Always disable promiscuous mode
    
    [ Upstream commit 4ae738dfef2c0323752ab81786e2d298c9939321 ]
    
    If promiscuous mode is disabled when there are fewer than four multicast
    addresses, then it will not be reflected in the hardware. Fix this by
    always clearing the promiscuous mode flag even when we program multicast
    addresses.
    
    Fixes: 8a3b7a252dca ("drivers/net/ethernet/xilinx: added Xilinx AXI Ethernet driver")
    Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20240822154059.1066595-2-sean.anderson@linux.dev
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: xilinx: axienet: Fix dangling multicast addresses [+ + +]
Author: Sean Anderson <sean.anderson@linux.dev>
Date:   Thu Aug 22 11:40:56 2024 -0400

    net: xilinx: axienet: Fix dangling multicast addresses
    
    [ Upstream commit 797a68c9de0f5a5447baf4bd3bb9c10a3993435b ]
    
    If a multicast address is removed but there are still some multicast
    addresses, that address would remain programmed into the frame filter.
    Fix this by explicitly setting the enable bit for each filter.
    
    Fixes: 8a3b7a252dca ("drivers/net/ethernet/xilinx: added Xilinx AXI Ethernet driver")
    Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20240822154059.1066595-3-sean.anderson@linux.dev
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netem: fix return value if duplicate enqueue fails [+ + +]
Author: Stephen Hemminger <stephen@networkplumber.org>
Date:   Mon Aug 19 10:56:45 2024 -0700

    netem: fix return value if duplicate enqueue fails
    
    [ Upstream commit c07ff8592d57ed258afee5a5e04991a48dbaf382 ]
    
    There is a bug in netem_enqueue() introduced by
    commit 5845f706388a ("net: netem: fix skb length BUG_ON in __skb_to_sgvec")
    that can lead to a use-after-free.
    
    This commit made netem_enqueue() always return NET_XMIT_SUCCESS
    when a packet is duplicated, which can cause the parent qdisc's q.qlen
    to be mistakenly incremented. When this happens qlen_notify() may be
    skipped on the parent during destruction, leaving a dangling pointer
    for some classful qdiscs like DRR.
    
    There are two ways for the bug happen:
    
    - If the duplicated packet is dropped by rootq->enqueue() and then
      the original packet is also dropped.
    - If rootq->enqueue() sends the duplicated packet to a different qdisc
      and the original packet is dropped.
    
    In both cases NET_XMIT_SUCCESS is returned even though no packets
    are enqueued at the netem qdisc.
    
    The fix is to defer the enqueue of the duplicate packet until after
    the original packet has been guaranteed to return NET_XMIT_SUCCESS.
    
    Fixes: 5845f706388a ("net: netem: fix skb length BUG_ON in __skb_to_sgvec")
    Reported-by: Budimir Markovic <markovicbudimir@gmail.com>
    Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20240819175753.5151-1-stephen@networkplumber.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfilter: allow ipv6 fragments to arrive on different devices [+ + +]
Author: Tom Hughes <tom@compton.nu>
Date:   Tue Aug 6 12:40:52 2024 +0100

    netfilter: allow ipv6 fragments to arrive on different devices
    
    [ Upstream commit 3cd740b985963f874a1a094f1969e998b9d05554 ]
    
    Commit 264640fc2c5f4 ("ipv6: distinguish frag queues by device
    for multicast and link-local packets") modified the ipv6 fragment
    reassembly logic to distinguish frag queues by device for multicast
    and link-local packets but in fact only the main reassembly code
    limits the use of the device to those address types and the netfilter
    reassembly code uses the device for all packets.
    
    This means that if fragments of a packet arrive on different interfaces
    then netfilter will fail to reassemble them and the fragments will be
    expired without going any further through the filters.
    
    Fixes: 648700f76b03 ("inet: frags: use rhashtables for reassembly units")
    Signed-off-by: Tom Hughes <tom@compton.nu>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: flowtable: initialise extack before use [+ + +]
Author: Donald Hunter <donald.hunter@gmail.com>
Date:   Tue Aug 6 17:16:37 2024 +0100

    netfilter: flowtable: initialise extack before use
    
    [ Upstream commit e9767137308daf906496613fd879808a07f006a2 ]
    
    Fix missing initialisation of extack in flow offload.
    
    Fixes: c29f74e0df7a ("netfilter: nf_flow_table: hardware offload support")
    Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: flowtable: validate vlan header [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Tue Aug 13 12:39:46 2024 +0200

    netfilter: flowtable: validate vlan header
    
    [ Upstream commit 6ea14ccb60c8ab829349979b22b58a941ec4a3ee ]
    
    Ensure there is sufficient room to access the protocol field of the
    VLAN header, validate it once before the flowtable lookup.
    
    =====================================================
    BUG: KMSAN: uninit-value in nf_flow_offload_inet_hook+0x45a/0x5f0 net/netfilter/nf_flow_table_inet.c:32
     nf_flow_offload_inet_hook+0x45a/0x5f0 net/netfilter/nf_flow_table_inet.c:32
     nf_hook_entry_hookfn include/linux/netfilter.h:154 [inline]
     nf_hook_slow+0xf4/0x400 net/netfilter/core.c:626
     nf_hook_ingress include/linux/netfilter_netdev.h:34 [inline]
     nf_ingress net/core/dev.c:5440 [inline]
    
    Fixes: 4cd91f7c290f ("netfilter: flowtable: add vlan support")
    Reported-by: syzbot+8407d9bb88cd4c6bf61a@syzkaller.appspotmail.com
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_queue: drop packets with cloned unconfirmed conntracks [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Wed Aug 7 21:28:41 2024 +0200

    netfilter: nf_queue: drop packets with cloned unconfirmed conntracks
    
    [ Upstream commit 7d8dc1c7be8d3509e8f5164dd5df64c8e34d7eeb ]
    
    Conntrack assumes an unconfirmed entry (not yet committed to global hash
    table) has a refcount of 1 and is not visible to other cores.
    
    With multicast forwarding this assumption breaks down because such
    skbs get cloned after being picked up, i.e.  ct->use refcount is > 1.
    
    Likewise, bridge netfilter will clone broad/mutlicast frames and
    all frames in case they need to be flood-forwarded during learning
    phase.
    
    For ip multicast forwarding or plain bridge flood-forward this will
    "work" because packets don't leave softirq and are implicitly
    serialized.
    
    With nfqueue this no longer holds true, the packets get queued
    and can be reinjected in arbitrary ways.
    
    Disable this feature, I see no other solution.
    
    After this patch, nfqueue cannot queue packets except the last
    multicast/broadcast packet.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: A better name for nft_obj_filter [+ + +]
Author: Phil Sutter <phil@nwl.cc>
Date:   Fri Oct 20 19:34:30 2023 +0200

    netfilter: nf_tables: A better name for nft_obj_filter
    
    [ Upstream commit ecf49cad807061d880bea27a5da8e0114ddc7690 ]
    
    Name it for what it is supposed to become, a real nft_obj_dump_ctx. No
    functional change intended.
    
    Signed-off-by: Phil Sutter <phil@nwl.cc>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Stable-dep-of: bd662c4218f9 ("netfilter: nf_tables: Add locking for NFT_MSG_GETOBJ_RESET requests")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: Add locking for NFT_MSG_GETOBJ_RESET requests [+ + +]
Author: Phil Sutter <phil@nwl.cc>
Date:   Fri Aug 9 15:07:32 2024 +0200

    netfilter: nf_tables: Add locking for NFT_MSG_GETOBJ_RESET requests
    
    [ Upstream commit bd662c4218f9648e888bebde9468146965f3f8a0 ]
    
    Objects' dump callbacks are not concurrency-safe per-se with reset bit
    set. If two CPUs perform a reset at the same time, at least counter and
    quota objects suffer from value underrun.
    
    Prevent this by introducing dedicated locking callbacks for nfnetlink
    and the asynchronous dump handling to serialize access.
    
    Fixes: 43da04a593d8 ("netfilter: nf_tables: atomic dump and reset for stateful objects")
    Signed-off-by: Phil Sutter <phil@nwl.cc>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: Audit log dump reset after the fact [+ + +]
Author: Phil Sutter <phil@nwl.cc>
Date:   Fri Aug 9 15:07:30 2024 +0200

    netfilter: nf_tables: Audit log dump reset after the fact
    
    [ Upstream commit e0b6648b0446e59522819c75ba1dcb09e68d3e94 ]
    
    In theory, dumpreset may fail and invalidate the preceeding log message.
    Fix this and use the occasion to prepare for object reset locking, which
    benefits from a few unrelated changes:
    
    * Add an early call to nfnetlink_unicast if not resetting which
      effectively skips the audit logging but also unindents it.
    * Extract the table's name from the netlink attribute (which is verified
      via earlier table lookup) to not rely upon validity of the looked up
      table pointer.
    * Do not use local variable family, it will vanish.
    
    Fixes: 8e6cf365e1d5 ("audit: log nftables configuration change events")
    Signed-off-by: Phil Sutter <phil@nwl.cc>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: Carry reset boolean in nft_obj_dump_ctx [+ + +]
Author: Phil Sutter <phil@nwl.cc>
Date:   Fri Oct 20 19:34:33 2023 +0200

    netfilter: nf_tables: Carry reset boolean in nft_obj_dump_ctx
    
    [ Upstream commit a552339063d37b3b1133d9dfc31f851edafb27bb ]
    
    Relieve the dump callback from having to inspect nlmsg_type upon each
    call, just do it once at start of the dump.
    
    Signed-off-by: Phil Sutter <phil@nwl.cc>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Stable-dep-of: bd662c4218f9 ("netfilter: nf_tables: Add locking for NFT_MSG_GETOBJ_RESET requests")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: Carry s_idx in nft_obj_dump_ctx [+ + +]
Author: Phil Sutter <phil@nwl.cc>
Date:   Fri Oct 20 19:34:31 2023 +0200

    netfilter: nf_tables: Carry s_idx in nft_obj_dump_ctx
    
    [ Upstream commit 2eda95cfa2fc43bcb21a801dc1d16a0b7cc73860 ]
    
    Prep work for moving the context into struct netlink_callback scratch
    area.
    
    Signed-off-by: Phil Sutter <phil@nwl.cc>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Stable-dep-of: bd662c4218f9 ("netfilter: nf_tables: Add locking for NFT_MSG_GETOBJ_RESET requests")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: Drop pointless memset in nf_tables_dump_obj [+ + +]
Author: Phil Sutter <phil@nwl.cc>
Date:   Fri Oct 20 19:34:28 2023 +0200

    netfilter: nf_tables: Drop pointless memset in nf_tables_dump_obj
    
    [ Upstream commit ff16111cc10c82ee065ffbd9fa8d6210394ff8c6 ]
    
    The code does not make use of cb->args fields past the first one, no
    need to zero them.
    
    Signed-off-by: Phil Sutter <phil@nwl.cc>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Stable-dep-of: bd662c4218f9 ("netfilter: nf_tables: Add locking for NFT_MSG_GETOBJ_RESET requests")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: Introduce nf_tables_getobj_single [+ + +]
Author: Phil Sutter <phil@nwl.cc>
Date:   Fri Aug 9 15:07:31 2024 +0200

    netfilter: nf_tables: Introduce nf_tables_getobj_single
    
    [ Upstream commit 69fc3e9e90f1afc11f4015e6b75d18ab9acee348 ]
    
    Outsource the reply skb preparation for non-dump getrule requests into a
    distinct function. Prep work for object reset locking.
    
    Signed-off-by: Phil Sutter <phil@nwl.cc>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Stable-dep-of: bd662c4218f9 ("netfilter: nf_tables: Add locking for NFT_MSG_GETOBJ_RESET requests")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: nft_obj_filter fits into cb->ctx [+ + +]
Author: Phil Sutter <phil@nwl.cc>
Date:   Fri Oct 20 19:34:32 2023 +0200

    netfilter: nf_tables: nft_obj_filter fits into cb->ctx
    
    [ Upstream commit 5a893b9cdf6fa5758f43d323a1d7fa6d1bf489ff ]
    
    No need to allocate it if one may just use struct netlink_callback's
    scratch area for it.
    
    Signed-off-by: Phil Sutter <phil@nwl.cc>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Stable-dep-of: bd662c4218f9 ("netfilter: nf_tables: Add locking for NFT_MSG_GETOBJ_RESET requests")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: Unconditionally allocate nft_obj_filter [+ + +]
Author: Phil Sutter <phil@nwl.cc>
Date:   Fri Oct 20 19:34:29 2023 +0200

    netfilter: nf_tables: Unconditionally allocate nft_obj_filter
    
    [ Upstream commit 4279cc60b354d2d2b970655a70a151cbfa1d958b ]
    
    Prep work for moving the filter into struct netlink_callback's scratch
    area.
    
    Signed-off-by: Phil Sutter <phil@nwl.cc>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Stable-dep-of: bd662c4218f9 ("netfilter: nf_tables: Add locking for NFT_MSG_GETOBJ_RESET requests")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nft_counter: Disable BH in nft_counter_offload_stats(). [+ + +]
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Tue Aug 20 09:54:30 2024 +0200

    netfilter: nft_counter: Disable BH in nft_counter_offload_stats().
    
    [ Upstream commit 1eacdd71b3436b54d5fc8218c4bb0187d92a6892 ]
    
    The sequence counter nft_counter_seq is a per-CPU counter. There is no
    lock associated with it. nft_counter_do_eval() is using the same counter
    and disables BH which suggest that it can be invoked from a softirq.
    This in turn means that nft_counter_offload_stats(), which disables only
    preemption, can be interrupted by nft_counter_do_eval() leading to two
    writer for one seqcount_t.
    This can lead to loosing stats or reading statistics while they are
    updated.
    
    Disable BH during stats update in nft_counter_offload_stats() to ensure
    one writer at a time.
    
    Fixes: b72920f6e4a9d ("netfilter: nftables: counter hardware offload support")
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nft_counter: Synchronize nft_counter_reset() against reader. [+ + +]
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Tue Aug 20 09:54:31 2024 +0200

    netfilter: nft_counter: Synchronize nft_counter_reset() against reader.
    
    [ Upstream commit a0b39e2dc7017ac667b70bdeee5293e410fab2fb ]
    
    nft_counter_reset() resets the counter by subtracting the previously
    retrieved value from the counter. This is a write operation on the
    counter and as such it requires to be performed with a write sequence of
    nft_counter_seq to serialize against its possible reader.
    
    Update the packets/ bytes within write-sequence of nft_counter_seq.
    
    Fixes: d84701ecbcd6a ("netfilter: nft_counter: rework atomic dump and reset")
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netlink: hold nlk->cb_mutex longer in __netlink_dump_start() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Feb 22 10:50:13 2024 +0000

    netlink: hold nlk->cb_mutex longer in __netlink_dump_start()
    
    [ Upstream commit b5590270068c4324dac4a2b5a4a156e02e21339f ]
    
    __netlink_dump_start() releases nlk->cb_mutex right before
    calling netlink_dump() which grabs it again.
    
    This seems dangerous, even if KASAN did not bother yet.
    
    Add a @lock_taken parameter to netlink_dump() to let it
    grab the mutex if called from netlink_recvmsg() only.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
NFS: avoid infinite loop in pnfs_update_layout. [+ + +]
Author: NeilBrown <neilb@suse.de>
Date:   Wed Feb 28 11:24:53 2024 +1100

    NFS: avoid infinite loop in pnfs_update_layout.
    
    [ Upstream commit 2fdbc20036acda9e5694db74a032d3c605323005 ]
    
    If pnfsd_update_layout() is called on a file for which recovery has
    failed it will enter a tight infinite loop.
    
    NFS_LAYOUT_INVALID_STID will be set, nfs4_select_rw_stateid() will
    return -EIO, and nfs4_schedule_stateid_recovery() will do nothing, so
    nfs4_client_recover_expired_lease() will not wait.  So the code will
    loop indefinitely.
    
    Break the loop by testing the validity of the open stateid at the top of
    the loop.
    
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
NFSD: simplify error paths in nfsd_svc() [+ + +]
Author: NeilBrown <neilb@suse.de>
Date:   Mon Sep 25 12:06:44 2023 +1000

    NFSD: simplify error paths in nfsd_svc()
    
    commit bf32075256e9dd9c6b736859e2c5813981339908 upstream.
    
    The error paths in nfsd_svc() are needlessly complex and can result in a
    final call to svc_put() without nfsd_last_thread() being called.  This
    results in the listening sockets not being closed properly.
    
    The per-netns setup provided by nfsd_startup_new() and removed by
    nfsd_shutdown_net() is needed precisely when there are running threads.
    So we don't need nfsd_up_before.  We don't need to know if it *was* up.
    We only need to know if any threads are left.  If none are, then we must
    call nfsd_shutdown_net().  But we don't need to do that explicitly as
    nfsd_last_thread() does that for us.
    
    So simply call nfsd_last_thread() before the last svc_put() if there are
    no running threads.  That will always do the right thing.
    
    Also discard:
     pr_info("nfsd: last server has exited, flushing export cache\n");
    It may not be true if an attempt to start the first server failed, and
    it isn't particularly helpful and it simply reports normal behaviour.
    
    Signed-off-by: NeilBrown <neilb@suse.de>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Reported-by: Li Lingfeng <lilingfeng3@huawei.com>
    Suggested-by: Li Lingfeng <lilingfeng3@huawei.com>
    Tested-by: Li Lingfeng <lilingfeng3@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nouveau/firmware: use dma non-coherent allocator [+ + +]
Author: Dave Airlie <airlied@redhat.com>
Date:   Fri Aug 16 06:19:23 2024 +1000

    nouveau/firmware: use dma non-coherent allocator
    
    commit 9b340aeb26d50e9a9ec99599e2a39b035fac978e upstream.
    
    Currently, enabling SG_DEBUG in the kernel will cause nouveau to hit a
    BUG() on startup, when the iommu is enabled:
    
    kernel BUG at include/linux/scatterlist.h:187!
    invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
    CPU: 7 PID: 930 Comm: (udev-worker) Not tainted 6.9.0-rc3Lyude-Test+ #30
    Hardware name: MSI MS-7A39/A320M GAMING PRO (MS-7A39), BIOS 1.I0 01/22/2019
    RIP: 0010:sg_init_one+0x85/0xa0
    Code: 69 88 32 01 83 e1 03 f6 c3 03 75 20 a8 01 75 1e 48 09 cb 41 89 54
    24 08 49 89 1c 24 41 89 6c 24 0c 5b 5d 41 5c e9 7b b9 88 00 <0f> 0b 0f 0b
    0f 0b 48 8b 05 5e 46 9a 01 eb b2 66 66 2e 0f 1f 84 00
    RSP: 0018:ffffa776017bf6a0 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: ffffa77600d87000 RCX: 000000000000002b
    RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffffa77680d87000
    RBP: 000000000000e000 R08: 0000000000000000 R09: 0000000000000000
    R10: ffff98f4c46aa508 R11: 0000000000000000 R12: ffff98f4c46aa508
    R13: ffff98f4c46aa008 R14: ffffa77600d4a000 R15: ffffa77600d4a018
    FS:  00007feeb5aae980(0000) GS:ffff98f5c4dc0000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f22cb9a4520 CR3: 00000001043ba000 CR4: 00000000003506f0
    Call Trace:
     <TASK>
     ? die+0x36/0x90
     ? do_trap+0xdd/0x100
     ? sg_init_one+0x85/0xa0
     ? do_error_trap+0x65/0x80
     ? sg_init_one+0x85/0xa0
     ? exc_invalid_op+0x50/0x70
     ? sg_init_one+0x85/0xa0
     ? asm_exc_invalid_op+0x1a/0x20
     ? sg_init_one+0x85/0xa0
     nvkm_firmware_ctor+0x14a/0x250 [nouveau]
     nvkm_falcon_fw_ctor+0x42/0x70 [nouveau]
     ga102_gsp_booter_ctor+0xb4/0x1a0 [nouveau]
     r535_gsp_oneinit+0xb3/0x15f0 [nouveau]
     ? srso_return_thunk+0x5/0x5f
     ? srso_return_thunk+0x5/0x5f
     ? nvkm_udevice_new+0x95/0x140 [nouveau]
     ? srso_return_thunk+0x5/0x5f
     ? srso_return_thunk+0x5/0x5f
     ? ktime_get+0x47/0xb0
    
    Fix this by using the non-coherent allocator instead, I think there
    might be a better answer to this, but it involve ripping up some of
    APIs using sg lists.
    
    Cc: stable@vger.kernel.org
    Fixes: 2541626cfb79 ("drm/nouveau/acr: use common falcon HS FW code for ACR FWs")
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Danilo Krummrich <dakr@kernel.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240815201923.632803-1-airlied@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nvme: clear caller pointer on identify failure [+ + +]
Author: Keith Busch <kbusch@kernel.org>
Date:   Wed Mar 6 06:20:30 2024 -0800

    nvme: clear caller pointer on identify failure
    
    [ Upstream commit 7e80eb792bd7377a20f204943ac31c77d859be89 ]
    
    The memory allocated for the identification is freed on failure. Set
    it to NULL so the caller doesn't have a pointer to that freed address.
    
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nvme: fix namespace removal list [+ + +]
Author: Keith Busch <kbusch@kernel.org>
Date:   Thu Jun 13 09:36:50 2024 -0700

    nvme: fix namespace removal list
    
    [ Upstream commit ff0ffe5b7c3c12c6e0cca16652905963ae817b44 ]
    
    This function wants to move a subset of a list from one element to the
    tail into another list. It also needs to use the srcu synchronize
    instead of the regular rcu version. Do this one element at a time
    because that's the only to do it.
    
    Fixes: be647e2c76b27f4 ("nvme: use srcu for iterating namespace list")
    Reported-by: Venkat Rao Bagalkote <venkat88@linux.vnet.ibm.com>
    Tested-by: Venkat Rao Bagalkote <venkat88@linux.vnet.ibm.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nvme: use srcu for iterating namespace list [+ + +]
Author: Keith Busch <kbusch@kernel.org>
Date:   Tue May 21 06:41:45 2024 -0700

    nvme: use srcu for iterating namespace list
    
    [ Upstream commit be647e2c76b27f409cdd520f66c95be888b553a3 ]
    
    The nvme pci driver synchronizes with all the namespace queues during a
    reset to ensure that there's no pending timeout work.
    
    Meanwhile the timeout work potentially iterates those same namespaces to
    freeze their queues.
    
    Each of those namespace iterations use the same read lock. If a write
    lock should somehow get between the synchronize and freeze steps, then
    forward progress is deadlocked.
    
    We had been relying on the nvme controller state machine to ensure the
    reset work wouldn't conflict with timeout work. That guarantee may be a
    bit fragile to rely on, so iterate the namespace lists without taking
    potentially circular locks, as reported by lockdep.
    
    Link: https://lore.kernel.org/all/20220930001943.zdbvolc3gkekfmcv@shindev/
    Reported-by: Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Tested-by: Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvmet-rdma: fix possible bad dereference when freeing rsps [+ + +]
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Wed May 8 10:53:06 2024 +0300

    nvmet-rdma: fix possible bad dereference when freeing rsps
    
    [ Upstream commit 73964c1d07c054376f1b32a62548571795159148 ]
    
    It is possible that the host connected and saw a cm established
    event and started sending nvme capsules on the qp, however the
    ctrl did not yet see an established event. This is why the
    rsp_wait_list exists (for async handling of these cmds, we move
    them to a pending list).
    
    Furthermore, it is possible that the ctrl cm times out, resulting
    in a connect-error cm event. in this case we hit a bad deref [1]
    because in nvmet_rdma_free_rsps we assume that all the responses
    are in the free list.
    
    We are freeing the cmds array anyways, so don't even bother to
    remove the rsp from the free_list. It is also guaranteed that we
    are not racing anything when we are releasing the queue so no
    other context accessing this array should be running.
    
    [1]:
    --
    Workqueue: nvmet-free-wq nvmet_rdma_free_queue_work [nvmet_rdma]
    [...]
    pc : nvmet_rdma_free_rsps+0x78/0xb8 [nvmet_rdma]
    lr : nvmet_rdma_free_queue_work+0x88/0x120 [nvmet_rdma]
     Call trace:
     nvmet_rdma_free_rsps+0x78/0xb8 [nvmet_rdma]
     nvmet_rdma_free_queue_work+0x88/0x120 [nvmet_rdma]
     process_one_work+0x1ec/0x4a0
     worker_thread+0x48/0x490
     kthread+0x158/0x160
     ret_from_fork+0x10/0x18
    --
    
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvmet-tcp: do not continue for invalid icreq [+ + +]
Author: Hannes Reinecke <hare@suse.de>
Date:   Fri Mar 8 08:11:05 2024 +0100

    nvmet-tcp: do not continue for invalid icreq
    
    [ Upstream commit 0889d13b9e1cbef49e802ae09f3b516911ad82a1 ]
    
    When the length check for an icreq sqe fails we should not
    continue processing but rather return immediately as all
    other contents of that sqe cannot be relied on.
    
    Signed-off-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvmet-trace: avoid dereferencing pointer too early [+ + +]
Author: Daniel Wagner <dwagner@suse.de>
Date:   Mon Dec 18 16:30:51 2023 +0100

    nvmet-trace: avoid dereferencing pointer too early
    
    [ Upstream commit 0e716cec6fb11a14c220ee17c404b67962e902f7 ]
    
    The first command issued from the host to the target is the fabrics
    connect command. At this point, neither the target queue nor the
    controller have been allocated. But we already try to trace this command
    in nvmet_req_init.
    
    Reported by KASAN.
    
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    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-af: Fix CPT AF register offset calculation [+ + +]
Author: Bharat Bhushan <bbhushan2@marvell.com>
Date:   Wed Aug 21 12:35:58 2024 +0530

    octeontx2-af: Fix CPT AF register offset calculation
    
    [ Upstream commit af688a99eb1fc7ef69774665d61e6be51cea627a ]
    
    Some CPT AF registers are per LF and others are global. Translation
    of PF/VF local LF slot number to actual LF slot number is required
    only for accessing perf LF registers. CPT AF global registers access
    do not require any LF slot number. Also, there is no reason CPT
    PF/VF to know actual lf's register offset.
    
    Without this fix microcode loading will fail, VFs cannot be created
    and hardware is not usable.
    
    Fixes: bc35e28af789 ("octeontx2-af: replace cpt slot with lf id on reg write")
    Signed-off-by: Bharat Bhushan <bbhushan2@marvell.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20240821070558.1020101-1-bbhushan2@marvell.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
openrisc: Call setup_memory() earlier in the init sequence [+ + +]
Author: Oreoluwa Babatunde <quic_obabatun@quicinc.com>
Date:   Fri Feb 9 16:29:30 2024 -0800

    openrisc: Call setup_memory() earlier in the init sequence
    
    [ Upstream commit 7b432bf376c9c198a7ff48f1ed14a14c0ffbe1fe ]
    
    The unflatten_and_copy_device_tree() function contains a call to
    memblock_alloc(). This means that memblock is allocating memory before
    any of the reserved memory regions are set aside in the setup_memory()
    function which calls early_init_fdt_scan_reserved_mem(). Therefore,
    there is a possibility for memblock to allocate from any of the
    reserved memory regions.
    
    Hence, move the call to setup_memory() to be earlier in the init
    sequence so that the reserved memory regions are set aside before any
    allocations are done using memblock.
    
    Signed-off-by: Oreoluwa Babatunde <quic_obabatun@quicinc.com>
    Signed-off-by: Stafford Horne <shorne@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
parisc: Use irq_enter_rcu() to fix warning at kernel/context_tracking.c:367 [+ + +]
Author: Helge Deller <deller@gmx.de>
Date:   Tue Nov 28 23:16:00 2023 +0100

    parisc: Use irq_enter_rcu() to fix warning at kernel/context_tracking.c:367
    
    [ Upstream commit 73cb4a2d8d7e0259f94046116727084f21e4599f ]
    
    Use irq*_rcu() functions to fix this kernel warning:
    
     WARNING: CPU: 0 PID: 0 at kernel/context_tracking.c:367 ct_irq_enter+0xa0/0xd0
     Modules linked in:
     CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.7.0-rc3-64bit+ #1037
     Hardware name: 9000/785/C3700
    
     IASQ: 0000000000000000 0000000000000000 IAOQ: 00000000412cd758 00000000412cd75c
      IIR: 03ffe01f    ISR: 0000000000000000  IOR: 0000000043c20c20
      CPU:        0   CR30: 0000000041caa000 CR31: 0000000000000000
      ORIG_R28: 0000000000000005
      IAOQ[0]: ct_irq_enter+0xa0/0xd0
      IAOQ[1]: ct_irq_enter+0xa4/0xd0
      RP(r2): irq_enter+0x34/0x68
     Backtrace:
      [<000000004034a3ec>] irq_enter+0x34/0x68
      [<000000004030dc48>] do_cpu_irq_mask+0xc0/0x450
      [<0000000040303070>] intr_return+0x0/0xc
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/surface: aggregator: Fix warning when controller is destroyed in probe [+ + +]
Author: Maximilian Luz <luzmaximilian@gmail.com>
Date:   Sun Aug 11 14:46:44 2024 +0200

    platform/surface: aggregator: Fix warning when controller is destroyed in probe
    
    [ Upstream commit bc923d594db21bee0ead128eb4bb78f7e77467a4 ]
    
    There is a small window in ssam_serial_hub_probe() where the controller
    is initialized but has not been started yet. Specifically, between
    ssam_controller_init() and ssam_controller_start(). Any failure in this
    window, for example caused by a failure of serdev_device_open(),
    currently results in an incorrect warning being emitted.
    
    In particular, any failure in this window results in the controller
    being destroyed via ssam_controller_destroy(). This function checks the
    state of the controller and, in an attempt to validate that the
    controller has been cleanly shut down before we try and deallocate any
    resources, emits a warning if that state is not SSAM_CONTROLLER_STOPPED.
    
    However, since we have only just initialized the controller and have not
    yet started it, its state is SSAM_CONTROLLER_INITIALIZED. Note that this
    is the only point at which the controller has this state, as it will
    change after we start the controller with ssam_controller_start() and
    never revert back. Further, at this point no communication has taken
    place and the sender and receiver threads have not been started yet (and
    we may not even have an open serdev device either).
    
    Therefore, it is perfectly safe to call ssam_controller_destroy() with a
    state of SSAM_CONTROLLER_INITIALIZED. This, however, means that the
    warning currently being emitted is incorrect. Fix it by extending the
    check.
    
    Fixes: c167b9c7e3d6 ("platform/surface: Add Surface Aggregator subsystem")
    Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
    Link: https://lore.kernel.org/r/20240811124645.246016-1-luzmaximilian@gmail.com
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/x86/intel/ifs: Call release_firmware() when handling errors. [+ + +]
Author: Jithu Joseph <jithu.joseph@intel.com>
Date:   Thu Jan 25 00:22:50 2024 -0800

    platform/x86/intel/ifs: Call release_firmware() when handling errors.
    
    commit 8c898ec07a2fc1d4694e81097a48e94a3816308d upstream.
    
    Missing release_firmware() due to error handling blocked any future image
    loading.
    
    Fix the return code and release_fiwmare() to release the bad image.
    
    Fixes: 25a76dbb36dd ("platform/x86/intel/ifs: Validate image size")
    Reported-by: Pengfei Xu <pengfei.xu@intel.com>
    Signed-off-by: Jithu Joseph <jithu.joseph@intel.com>
    Signed-off-by: Ashok Raj <ashok.raj@intel.com>
    Tested-by: Pengfei Xu <pengfei.xu@intel.com>
    Reviewed-by: Tony Luck <tony.luck@intel.com>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20240125082254.424859-2-ashok.raj@intel.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

platform/x86/intel/ifs: Validate image size [+ + +]
Author: Jithu Joseph <jithu.joseph@intel.com>
Date:   Thu Oct 5 12:51:33 2023 -0700

    platform/x86/intel/ifs: Validate image size
    
    [ Upstream commit 25a76dbb36dd58ad4df7f6a4dc43061a10b0d817 ]
    
    Perform additional validation prior to loading IFS image.
    
    Error out if the size of the file being loaded doesn't match the size
    specified in the header.
    
    Signed-off-by: Jithu Joseph <jithu.joseph@intel.com>
    Reviewed-by: Tony Luck <tony.luck@intel.com>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Tested-by: Pengfei Xu <pengfei.xu@intel.com>
    Link: https://lore.kernel.org/r/20231005195137.3117166-6-jithu.joseph@intel.com
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/x86: lg-laptop: fix %s null argument warning [+ + +]
Author: Gergo Koteles <soyer@irl.hu>
Date:   Wed Apr 3 16:34:27 2024 +0200

    platform/x86: lg-laptop: fix %s null argument warning
    
    [ Upstream commit e71c8481692582c70cdfd0996c20cdcc71e425d3 ]
    
    W=1 warns about null argument to kprintf:
    warning: ‘%s’ directive argument is null [-Wformat-overflow=]
    pr_info("product: %s  year: %d\n", product, year);
    
    Use "unknown" instead of NULL.
    
    Signed-off-by: Gergo Koteles <soyer@irl.hu>
    Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
    Link: https://lore.kernel.org/r/33d40e976f08f82b9227d0ecae38c787fcc0c0b2.1712154684.git.soyer@irl.hu
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pmdomain: imx: scu-pd: Remove duplicated clocks [+ + +]
Author: Alexander Stein <alexander.stein@ew.tq-group.com>
Date:   Wed Jul 17 10:03:33 2024 +0200

    pmdomain: imx: scu-pd: Remove duplicated clocks
    
    commit 50359c9c3cb3e55e840e3485f5ee37da5b2b16b6 upstream.
    
    These clocks are already added to the list. Remove the duplicates ones.
    
    Fixes: a67d780720ff ("genpd: imx: scu-pd: add more PDs")
    Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20240717080334.2210988-1-alexander.stein@ew.tq-group.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

pmdomain: imx: wait SSAR when i.MX93 power domain on [+ + +]
Author: Peng Fan <peng.fan@nxp.com>
Date:   Wed Aug 14 20:47:40 2024 +0800

    pmdomain: imx: wait SSAR when i.MX93 power domain on
    
    commit 52dd070c62e4ae2b5e7411b920e3f7a64235ecfb upstream.
    
    With "quiet" set in bootargs, there is power domain failure:
    "imx93_power_domain 44462400.power-domain: pd_off timeout: name:
     44462400.power-domain, stat: 4"
    
    The current power on opertation takes ISO state as power on finished
    flag, but it is wrong. Before powering on operation really finishes,
    powering off comes and powering off will never finish because the last
    powering on still not finishes, so the following powering off actually
    not trigger hardware state machine to run. SSAR is the last step when
    powering on a domain, so need to wait SSAR done when powering on.
    
    Since EdgeLock Enclave(ELE) handshake is involved in the flow, enlarge
    the waiting time to 10ms for both on and off to avoid timeout.
    
    Cc: stable@vger.kernel.org
    Fixes: 0a0f7cc25d4a ("soc: imx: add i.MX93 SRC power domain driver")
    Reviewed-by: Jacky Bai <ping.bai@nxp.com>
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Link: https://lore.kernel.org/r/20240814124740.2778952-1-peng.fan@oss.nxp.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
powerpc/boot: Handle allocation failure in simple_realloc() [+ + +]
Author: Li zeming <zeming@nfschina.com>
Date:   Mon Dec 19 10:18:16 2022 +0800

    powerpc/boot: Handle allocation failure in simple_realloc()
    
    [ Upstream commit 69b0194ccec033c208b071e019032c1919c2822d ]
    
    simple_malloc() will return NULL when there is not enough memory left.
    Check pointer 'new' before using it to copy the old data.
    
    Signed-off-by: Li zeming <zeming@nfschina.com>
    [mpe: Reword subject, use change log from Christophe]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20221219021816.3012-1-zeming@nfschina.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

powerpc/boot: Only free if realloc() succeeds [+ + +]
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Thu Feb 29 22:51:49 2024 +1100

    powerpc/boot: Only free if realloc() succeeds
    
    [ Upstream commit f2d5bccaca3e8c09c9b9c8485375f7bdbb2631d2 ]
    
    simple_realloc() frees the original buffer (ptr) even if the
    reallocation failed.
    
    Fix it to behave like standard realloc() and only free the original
    buffer if the reallocation succeeded.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240229115149.749264-1-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/pseries/papr-sysparm: Validate buffer object lengths [+ + +]
Author: Nathan Lynch <nathanl@linux.ibm.com>
Date:   Tue Dec 12 11:01:57 2023 -0600

    powerpc/pseries/papr-sysparm: Validate buffer object lengths
    
    [ Upstream commit 35aae182bd7b422be3cefc08c12207bf2b973364 ]
    
    The ability to get and set system parameters will be exposed to user
    space, so let's get a little more strict about malformed
    papr_sysparm_buf objects.
    
    * Create accessors for the length field of struct papr_sysparm_buf.
      The length is always stored in MSB order and this is better than
      spreading the necessary conversions all over.
    
    * Reject attempts to submit invalid buffers to RTAS.
    
    * Warn if RTAS returns a buffer with an invalid length, clamping the
      returned length to a safe value that won't overrun the buffer.
    
    These are meant as precautionary measures to mitigate both firmware
    and kernel bugs in this area, should they arise, but I am not aware of
    any.
    
    Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20231212-papr-sys_rtas-vs-lockdown-v6-10-e9eafd0c8c6c@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/topology: Check if a core is online [+ + +]
Author: Nysal Jan K.A <nysal@linux.ibm.com>
Date:   Wed Jul 31 08:31:13 2024 +0530

    powerpc/topology: Check if a core is online
    
    [ Upstream commit 227bbaabe64b6f9cd98aa051454c1d4a194a8c6a ]
    
    topology_is_core_online() checks if the core a CPU belongs to
    is online. The core is online if at least one of the sibling
    CPUs is online. The first CPU of an online core is also online
    in the common case, so this should be fairly quick.
    
    Fixes: 73c58e7e1412 ("powerpc: Add HOTPLUG_SMT support")
    Signed-off-by: Nysal Jan K.A <nysal@linux.ibm.com>
    Reviewed-by: Shrikanth Hegde <sshegde@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240731030126.956210-3-nysal@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/xics: Check return value of kasprintf in icp_native_map_one_cpu [+ + +]
Author: Kunwu Chan <chentao@kylinos.cn>
Date:   Wed Nov 22 11:06:51 2023 +0800

    powerpc/xics: Check return value of kasprintf in icp_native_map_one_cpu
    
    [ Upstream commit 45b1ba7e5d1f6881050d558baf9bc74a2ae13930 ]
    
    kasprintf() returns a pointer to dynamically allocated memory
    which can be NULL upon failure. Ensure the allocation was successful
    by checking the pointer validity.
    
    Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20231122030651.3818-1-chentao@kylinos.cn
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
quota: Remove BUG_ON from dqget() [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Fri Oct 20 13:34:08 2023 +0200

    quota: Remove BUG_ON from dqget()
    
    [ Upstream commit 249f374eb9b6b969c64212dd860cc1439674c4a8 ]
    
    dqget() checks whether dquot->dq_sb is set when returning it using
    BUG_ON. Firstly this doesn't work as an invalidation check for quite
    some time (we release dquot with dq_sb set these days), secondly using
    BUG_ON is quite harsh. Use WARN_ON_ONCE and check whether dquot is still
    hashed instead.
    
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rcu: Dump memory object info if callback function is invalid [+ + +]
Author: Zhen Lei <thunder.leizhen@huawei.com>
Date:   Sat Aug 5 11:17:26 2023 +0800

    rcu: Dump memory object info if callback function is invalid
    
    [ Upstream commit 2cbc482d325ee58001472c4359b311958c4efdd1 ]
    
    When a structure containing an RCU callback rhp is (incorrectly) freed
    and reallocated after rhp is passed to call_rcu(), it is not unusual for
    rhp->func to be set to NULL. This defeats the debugging prints used by
    __call_rcu_common() in kernels built with CONFIG_DEBUG_OBJECTS_RCU_HEAD=y,
    which expect to identify the offending code using the identity of this
    function.
    
    And in kernels build without CONFIG_DEBUG_OBJECTS_RCU_HEAD=y, things
    are even worse, as can be seen from this splat:
    
    Unable to handle kernel NULL pointer dereference at virtual address 0
    ... ...
    PC is at 0x0
    LR is at rcu_do_batch+0x1c0/0x3b8
    ... ...
     (rcu_do_batch) from (rcu_core+0x1d4/0x284)
     (rcu_core) from (__do_softirq+0x24c/0x344)
     (__do_softirq) from (__irq_exit_rcu+0x64/0x108)
     (__irq_exit_rcu) from (irq_exit+0x8/0x10)
     (irq_exit) from (__handle_domain_irq+0x74/0x9c)
     (__handle_domain_irq) from (gic_handle_irq+0x8c/0x98)
     (gic_handle_irq) from (__irq_svc+0x5c/0x94)
     (__irq_svc) from (arch_cpu_idle+0x20/0x3c)
     (arch_cpu_idle) from (default_idle_call+0x4c/0x78)
     (default_idle_call) from (do_idle+0xf8/0x150)
     (do_idle) from (cpu_startup_entry+0x18/0x20)
     (cpu_startup_entry) from (0xc01530)
    
    This commit therefore adds calls to mem_dump_obj(rhp) to output some
    information, for example:
    
      slab kmalloc-256 start ffff410c45019900 pointer offset 0 size 256
    
    This provides the rough size of the memory block and the offset of the
    rcu_head structure, which as least provides at least a few clues to help
    locate the problem. If the problem is reproducible, additional slab
    debugging can be enabled, for example, CONFIG_DEBUG_SLAB=y, which can
    provide significantly more information.
    
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

rcu: Eliminate rcu_gp_slow_unregister() false positive [+ + +]
Author: Paul E. McKenney <paulmck@kernel.org>
Date:   Fri Aug 18 08:53:58 2023 -0700

    rcu: Eliminate rcu_gp_slow_unregister() false positive
    
    [ Upstream commit 0ae9942f03d0d034fdb0a4f44fc99f62a3107987 ]
    
    When using rcutorture as a module, there are a number of conditions that
    can abort the modprobe operation, for example, when attempting to run
    both RCU CPU stall warning tests and forward-progress tests.  This can
    cause rcu_torture_cleanup() to be invoked on the unwind path out of
    rcu_rcu_torture_init(), which will mean that rcu_gp_slow_unregister()
    is invoked without a matching rcu_gp_slow_register().  This will cause
    a splat because rcu_gp_slow_unregister() is passed rcu_fwd_cb_nodelay,
    which does not match a NULL pointer.
    
    This commit therefore forgives a mismatch involving a NULL pointer, thus
    avoiding this false-positive splat.
    
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/rtrs: Fix the problem of variable not initialized fully [+ + +]
Author: Zhu Yanjun <yanjun.zhu@linux.dev>
Date:   Tue Sep 19 10:08:06 2023 +0800

    RDMA/rtrs: Fix the problem of variable not initialized fully
    
    [ Upstream commit c5930a1aa08aafe6ffe15b5d28fe875f88f6ac86 ]
    
    No functionality change. The variable which is not initialized fully
    will introduce potential risks.
    
    Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
    Link: https://lore.kernel.org/r/20230919020806.534183-1-yanjun.zhu@intel.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "ACPI: EC: Evaluate orphan _REG under EC device" [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Mon Aug 12 15:08:04 2024 +0200

    Revert "ACPI: EC: Evaluate orphan _REG under EC device"
    
    commit 779bac9994452f6a894524f70c00cfb0cd4b6364 upstream.
    
    This reverts commit 0e6b6dedf168 ("Revert "ACPI: EC: Evaluate orphan
    _REG under EC device") because the problem addressed by it will be
    addressed differently in what follows.
    
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Cc: All applicable <stable@vger.kernel.org>
    Link: https://patch.msgid.link/3236716.5fSG56mABF@rjwysocki.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "bpf, sockmap: Prevent lock inversion deadlock in map delete elem" [+ + +]
Author: Jakub Sitnicki <jakub@cloudflare.com>
Date:   Mon May 27 13:20:08 2024 +0200

    Revert "bpf, sockmap: Prevent lock inversion deadlock in map delete elem"
    
    [ Upstream commit 3b9ce0491a43e9af7f108b2f1bced7cd35931660 ]
    
    This reverts commit ff91059932401894e6c86341915615c5eb0eca48.
    
    This check is no longer needed. BPF programs attached to tracepoints are
    now rejected by the verifier when they attempt to delete from a
    sockmap/sockhash maps.
    
    Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Link: https://lore.kernel.org/bpf/20240527-sockmap-verify-deletes-v1-2-944b372f2101@cloudflare.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "drm/amd/display: Validate hw_points_num before using it" [+ + +]
Author: Alex Hung <alex.hung@amd.com>
Date:   Wed Oct 11 13:18:38 2023 -0600

    Revert "drm/amd/display: Validate hw_points_num before using it"
    
    commit 8f4bdbc8e99db6ec9cb0520748e49a2f2d7d1727 upstream.
    
    This reverts commit 58c3b3341cea4f75dc8c003b89f8a6dd8ec55e50.
    
    [WHY & HOW]
    The writeback series cause a regression in thunderbolt display.
    
    Signed-off-by: Alex Hung <alex.hung@amd.com>
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "misc: fastrpc: Restrict untrusted app to attach to privileged PD" [+ + +]
Author: Griffin Kroah-Hartman <griffin@kroah.com>
Date:   Thu Aug 15 11:49:20 2024 +0200

    Revert "misc: fastrpc: Restrict untrusted app to attach to privileged PD"
    
    commit 9bb5e74b2bf88fbb024bb15ded3b011e02c673be upstream.
    
    This reverts commit bab2f5e8fd5d2f759db26b78d9db57412888f187.
    
    Joel reported that this commit breaks userspace and stops sensors in
    SDM845 from working. Also breaks other qcom SoC devices running postmarketOS.
    
    Cc: stable <stable@kernel.org>
    Cc: Ekansh Gupta <quic_ekangupt@quicinc.com>
    Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reported-by: Joel Selvaraj <joelselvaraj.oss@gmail.com>
    Link: https://lore.kernel.org/r/9a9f5646-a554-4b65-8122-d212bb665c81@umsystem.edu
    Signed-off-by: Griffin Kroah-Hartman <griffin@kroah.com>
    Acked-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Fixes: bab2f5e8fd5d ("misc: fastrpc: Restrict untrusted app to attach to privileged PD")
    Link: https://lore.kernel.org/r/20240815094920.8242-1-griffin@kroah.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "s390/dasd: Establish DMA alignment" [+ + +]
Author: Jan Höppner <hoeppner@linux.ibm.com>
Date:   Tue Aug 20 16:13:07 2024 +0200

    Revert "s390/dasd: Establish DMA alignment"
    
    This reverts commit bc792884b76f ("s390/dasd: Establish DMA alignment").
    
    Quoting the original commit:
        linux-next commit bf8d08532bc1 ("iomap: add support for dma aligned
        direct-io") changes the alignment requirement to come from the block
        device rather than the block size, and the default alignment
        requirement is 512-byte boundaries. Since DASD I/O has page
        alignments for IDAW/TIDAW requests, let's override this value to
        restore the expected behavior.
    
    I mentioned TIDAW, but that was wrong. TIDAWs have no distinct alignment
    requirement (per p. 15-70 of POPS SA22-7832-13):
    
       Unless otherwise specified, TIDAWs may designate
       a block of main storage on any boundary and length
       up to 4K bytes, provided the specified block does not
       cross a 4 K-byte boundary.
    
    IDAWs do, but the original commit neglected that while ECKD DASD are
    typically formatted in 4096-byte blocks, they don't HAVE to be. Formatting
    an ECKD volume with smaller blocks is permitted (dasdfmt -b xxx), and the
    problematic commit enforces alignment properties to such a device that
    will result in errors, such as:
    
       [test@host ~]# lsdasd -l a367 | grep blksz
         blksz:                             512
       [test@host ~]# mkfs.xfs -f /dev/disk/by-path/ccw-0.0.a367-part1
       meta-data=/dev/dasdc1            isize=512    agcount=4, agsize=230075 blks
                =                       sectsz=512   attr=2, projid32bit=1
                =                       crc=1        finobt=1, sparse=1, rmapbt=1
                =                       reflink=1    bigtime=1 inobtcount=1 nrext64=1
       data     =                       bsize=4096   blocks=920299, imaxpct=25
                =                       sunit=0      swidth=0 blks
       naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
       log      =internal log           bsize=4096   blocks=16384, version=2
                =                       sectsz=512   sunit=0 blks, lazy-count=1
       realtime =none                   extsz=4096   blocks=0, rtextents=0
       error reading existing superblock: Invalid argument
       mkfs.xfs: pwrite failed: Invalid argument
       libxfs_bwrite: write failed on (unknown) bno 0x70565c/0x100, err=22
       mkfs.xfs: Releasing dirty buffer to free list!
       found dirty buffer (bulk) on free list!
       mkfs.xfs: pwrite failed: Invalid argument
       ...snipped...
    
    The original commit omitted the FBA discipline for just this reason,
    but the formatted block size of the other disciplines was overlooked.
    The solution to all of this is to revert to the original behavior,
    such that the block size can be respected.
    
    But what of the original problem? That was manifested with a direct-io
    QEMU guest, where QEMU itself was changed a month or two later with
    commit 25474d90aa ("block: use the request length for iov alignment")
    such that the blamed kernel commit is unnecessary.
    
    Note: This is an adapted version of the original upstream commit
    2a07bb64d801 ("s390/dasd: Remove DMA alignment").
    
    Cc: stable@vger.kernel.org # 6.0+
    Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "usb: gadget: uvc: cleanup request when not in correct state" [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Oct 5 10:51:04 2023 +0200

    Revert "usb: gadget: uvc: cleanup request when not in correct state"
    
    commit dddc00f255415b826190cfbaa5d6dbc87cd9ded1 upstream.
    
    This reverts commit 52a39f2cf62bb5430ad1f54cd522dbfdab1d71ba.
    
    Based on review comments, it was applied too soon and needs more work.
    
    Reported-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Link: https://lore.kernel.org/r/20231005081716.GA13853@pendragon.ideasonboard.com
    Cc: Michael Grzeschik <m.grzeschik@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Revert "usb: typec: tcpm: clear pd_event queue in PORT_RESET" [+ + +]
Author: Xu Yang <xu.yang_2@nxp.com>
Date:   Fri Aug 9 19:29:01 2024 +0800

    Revert "usb: typec: tcpm: clear pd_event queue in PORT_RESET"
    
    commit 21ea1ce37fc267dc45fe27517bbde926211683df upstream.
    
    This reverts commit bf20c69cf3cf9c6445c4925dd9a8a6ca1b78bfdf.
    
    During tcpm_init() stage, if the VBUS is still present after
    tcpm_reset_port(), then we assume that VBUS will off and goto safe0v
    after a specific discharge time. Following a TCPM_VBUS_EVENT event if
    VBUS reach to off state. TCPM_VBUS_EVENT event may be set during
    PORT_RESET handling stage. If pd_events reset to 0 after TCPM_VBUS_EVENT
    set, we will lost this VBUS event. Then the port state machine may stuck
    at one state.
    
    Before:
    
    [    2.570172] pending state change PORT_RESET -> PORT_RESET_WAIT_OFF @ 100 ms [rev1 NONE_AMS]
    [    2.570179] state change PORT_RESET -> PORT_RESET_WAIT_OFF [delayed 100 ms]
    [    2.570182] pending state change PORT_RESET_WAIT_OFF -> SNK_UNATTACHED @ 920 ms [rev1 NONE_AMS]
    [    3.490213] state change PORT_RESET_WAIT_OFF -> SNK_UNATTACHED [delayed 920 ms]
    [    3.490220] Start toggling
    [    3.546050] CC1: 0 -> 0, CC2: 0 -> 2 [state TOGGLING, polarity 0, connected]
    [    3.546057] state change TOGGLING -> SRC_ATTACH_WAIT [rev1 NONE_AMS]
    
    After revert this patch, we can see VBUS off event and the port will goto
    expected state.
    
    [    2.441992] pending state change PORT_RESET -> PORT_RESET_WAIT_OFF @ 100 ms [rev1 NONE_AMS]
    [    2.441999] state change PORT_RESET -> PORT_RESET_WAIT_OFF [delayed 100 ms]
    [    2.442002] pending state change PORT_RESET_WAIT_OFF -> SNK_UNATTACHED @ 920 ms [rev1 NONE_AMS]
    [    2.442122] VBUS off
    [    2.442125] state change PORT_RESET_WAIT_OFF -> SNK_UNATTACHED [rev1 NONE_AMS]
    [    2.442127] VBUS VSAFE0V
    [    2.442351] CC1: 0 -> 0, CC2: 0 -> 0 [state SNK_UNATTACHED, polarity 0, disconnected]
    [    2.442357] Start toggling
    [    2.491850] CC1: 0 -> 0, CC2: 0 -> 2 [state TOGGLING, polarity 0, connected]
    [    2.491858] state change TOGGLING -> SRC_ATTACH_WAIT [rev1 NONE_AMS]
    [    2.491863] pending state change SRC_ATTACH_WAIT -> SNK_TRY @ 200 ms [rev1 NONE_AMS]
    [    2.691905] state change SRC_ATTACH_WAIT -> SNK_TRY [delayed 200 ms]
    
    Fixes: bf20c69cf3cf ("usb: typec: tcpm: clear pd_event queue in PORT_RESET")
    Cc: stable@vger.kernel.org
    Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
    Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20240809112901.535072-1-xu.yang_2@nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
riscv: blacklist assembly symbols for kprobe [+ + +]
Author: Clément Léger <cleger@rivosinc.com>
Date:   Wed Oct 4 15:10:09 2023 +0200

    riscv: blacklist assembly symbols for kprobe
    
    [ Upstream commit 5014396af9bbac0f28d9afee7eae405206d01ee7 ]
    
    Adding kprobes on some assembly functions (mainly exception handling)
    will result in crashes (either recursive trap or panic). To avoid such
    errors, add ASM_NOKPROBE() macro which allow adding specific symbols
    into the __kprobe_blacklist section and use to blacklist the following
    symbols that showed to be problematic:
    - handle_exception()
    - ret_from_exception()
    - handle_kernel_stack_overflow()
    
    Signed-off-by: Clément Léger <cleger@rivosinc.com>
    Reviewed-by: Charlie Jenkins <charlie@rivosinc.com>
    Link: https://lore.kernel.org/r/20231004131009.409193-1-cleger@rivosinc.com
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

riscv: change XIP's kernel_map.size to be size of the entire kernel [+ + +]
Author: Nam Cao <namcao@linutronix.de>
Date:   Wed May 8 21:19:17 2024 +0200

    riscv: change XIP's kernel_map.size to be size of the entire kernel
    
    commit 57d76bc51fd80824bcc0c84a5b5ec944f1b51edd upstream.
    
    With XIP kernel, kernel_map.size is set to be only the size of data part of
    the kernel. This is inconsistent with "normal" kernel, who sets it to be
    the size of the entire kernel.
    
    More importantly, XIP kernel fails to boot if CONFIG_DEBUG_VIRTUAL is
    enabled, because there are checks on virtual addresses with the assumption
    that kernel_map.size is the size of the entire kernel (these checks are in
    arch/riscv/mm/physaddr.c).
    
    Change XIP's kernel_map.size to be the size of the entire kernel.
    
    Signed-off-by: Nam Cao <namcao@linutronix.de>
    Cc: <stable@vger.kernel.org> # v6.1+
    Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
    Link: https://lore.kernel.org/r/20240508191917.2892064-1-namcao@linutronix.de
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

riscv: entry: always initialize regs->a0 to -ENOSYS [+ + +]
Author: Celeste Liu <coelacanthushex@gmail.com>
Date:   Thu Jun 27 22:23:39 2024 +0800

    riscv: entry: always initialize regs->a0 to -ENOSYS
    
    [ Upstream commit 61119394631f219e23ce98bcc3eb993a64a8ea64 ]
    
    Otherwise when the tracer changes syscall number to -1, the kernel fails
    to initialize a0 with -ENOSYS and subsequently fails to return the error
    code of the failed syscall to userspace. For example, it will break
    strace syscall tampering.
    
    Fixes: 52449c17bdd1 ("riscv: entry: set a0 = -ENOSYS only when syscall != -1")
    Reported-by: "Dmitry V. Levin" <ldv@strace.io>
    Reviewed-by: Björn Töpel <bjorn@rivosinc.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Celeste Liu <CoelacanthusHex@gmail.com>
    Link: https://lore.kernel.org/r/20240627142338.5114-2-CoelacanthusHex@gmail.com
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rtc: nct3018y: fix possible NULL dereference [+ + +]
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Thu Feb 29 23:21:27 2024 +0100

    rtc: nct3018y: fix possible NULL dereference
    
    [ Upstream commit babfeb9cbe7ebc657bd5b3e4f9fde79f560b6acc ]
    
    alarm_enable and alarm_flag are allowed to be NULL but will be dereferenced
    later by the dev_dbg call.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Reported-by: Dan Carpenter <error27@gmail.com>
    Closes: https://lore.kernel.org/r/202305180042.DEzW1pSd-lkp@intel.com/
    Link: https://lore.kernel.org/r/20240229222127.1878176-1-alexandre.belloni@bootlin.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rtla/osnoise: Prevent NULL dereference in error handling [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Fri Aug 9 15:34:30 2024 +0300

    rtla/osnoise: Prevent NULL dereference in error handling
    
    commit 90574d2a675947858b47008df8d07f75ea50d0d0 upstream.
    
    If the "tool->data" allocation fails then there is no need to call
    osnoise_free_top() and, in fact, doing so will lead to a NULL dereference.
    
    Cc: stable@vger.kernel.org
    Cc: John Kacur <jkacur@redhat.com>
    Cc: "Luis Claudio R. Goncalves" <lgoncalv@redhat.com>
    Cc: Clark Williams <williams@redhat.com>
    Fixes: 1eceb2fc2ca5 ("rtla/osnoise: Add osnoise top mode")
    Link: https://lore.kernel.org/f964ed1f-64d2-4fde-ad3e-708331f8f358@stanley.mountain
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
rust: fix the default format for CONFIG_{RUSTC,BINDGEN}_VERSION_TEXT [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Sat Jul 27 23:03:00 2024 +0900

    rust: fix the default format for CONFIG_{RUSTC,BINDGEN}_VERSION_TEXT
    
    [ Upstream commit aacf93e87f0d808ef46e621aa56caea336b4433c ]
    
    Another oddity in these config entries is their default value can fall
    back to 'n', which is a value for bool or tristate symbols.
    
    The '|| echo n' is an incorrect workaround to avoid the syntax error.
    This is not a big deal, as the entry is hidden by 'depends on RUST' in
    situations where '$(RUSTC) --version' or '$(BINDGEN) --version' fails.
    Anyway, it looks odd.
    
    The default of a string type symbol should be a double-quoted string
    literal. Turn it into an empty string when the version command fails.
    
    Fixes: 2f7ab1267dc9 ("Kbuild: add Rust support")
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Link: https://lore.kernel.org/r/20240727140302.1806011-2-masahiroy@kernel.org
    [ Rebased on top of v6.11-rc1. - Miguel ]
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

rust: suppress error messages from CONFIG_{RUSTC,BINDGEN}_VERSION_TEXT [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Sat Jul 27 23:02:59 2024 +0900

    rust: suppress error messages from CONFIG_{RUSTC,BINDGEN}_VERSION_TEXT
    
    [ Upstream commit 5ce86c6c861352c9346ebb5c96ed70cb67414aa3 ]
    
    While this is a somewhat unusual case, I encountered odd error messages
    when I ran Kconfig in a foreign architecture chroot.
    
      $ make allmodconfig
      sh: 1: rustc: not found
      sh: 1: bindgen: not found
      #
      # configuration written to .config
      #
    
    The successful execution of 'command -v rustc' does not necessarily mean
    that 'rustc --version' will succeed.
    
      $ sh -c 'command -v rustc'
      /home/masahiro/.cargo/bin/rustc
      $ sh -c 'rustc --version'
      sh: 1: rustc: not found
    
    Here, 'rustc' is built for x86, and I ran it in an arm64 system.
    
    The current code:
    
      command -v $(RUSTC) >/dev/null 2>&1 && $(RUSTC) --version || echo n
    
    can be turned into:
    
      command -v $(RUSTC) >/dev/null 2>&1 && $(RUSTC) --version 2>/dev/null || echo n
    
    However, I did not understand the necessity of 'command -v $(RUSTC)'.
    
    I simplified it to:
    
      $(RUSTC) --version 2>/dev/null || echo n
    
    Fixes: 2f7ab1267dc9 ("Kbuild: add Rust support")
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Link: https://lore.kernel.org/r/20240727140302.1806011-1-masahiroy@kernel.org
    [ Rebased on top of v6.11-rc1. - Miguel ]
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

rust: work around `bindgen` 0.69.0 issue [+ + +]
Author: Miguel Ojeda <ojeda@kernel.org>
Date:   Tue Jul 9 18:06:03 2024 +0200

    rust: work around `bindgen` 0.69.0 issue
    
    [ Upstream commit 9e98db17837093cb0f4dcfcc3524739d93249c45 ]
    
    `bindgen` 0.69.0 contains a bug: `--version` does not work without
    providing a header [1]:
    
        error: the following required arguments were not provided:
          <HEADER>
    
        Usage: bindgen <FLAGS> <OPTIONS> <HEADER> -- <CLANG_ARGS>...
    
    Thus, in preparation for supporting several `bindgen` versions, work
    around the issue by passing a dummy argument.
    
    Include a comment so that we can remove the workaround in the future.
    
    Link: https://github.com/rust-lang/rust-bindgen/pull/2678 [1]
    Reviewed-by: Finn Behrens <me@kloenk.dev>
    Tested-by: Benno Lossin <benno.lossin@proton.me>
    Tested-by: Andreas Hindborg <a.hindborg@samsung.com>
    Link: https://lore.kernel.org/r/20240709160615.998336-9-ojeda@kernel.org
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Stable-dep-of: 5ce86c6c8613 ("rust: suppress error messages from CONFIG_{RUSTC,BINDGEN}_VERSION_TEXT")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rxrpc: Don't pick values out of the wire header when setting up security [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Tue Jan 30 08:24:58 2024 +0000

    rxrpc: Don't pick values out of the wire header when setting up security
    
    [ Upstream commit a1c9af4d4467354132417c2d8db10d6e928a7f77 ]
    
    Don't pick values out of the wire header in rxkad when setting up DATA
    packet security, but rather use other sources.  This makes it easier to get
    rid of txb->wire.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: "David S. Miller" <davem@davemloft.net>
    cc: Eric Dumazet <edumazet@google.com>
    cc: Jakub Kicinski <kuba@kernel.org>
    cc: Paolo Abeni <pabeni@redhat.com>
    cc: linux-afs@lists.infradead.org
    cc: netdev@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
s390/cio: rename bitmap_size() -> idset_bitmap_size() [+ + +]
Author: Alexander Lobakin <aleksander.lobakin@intel.com>
Date:   Wed Mar 27 16:23:45 2024 +0100

    s390/cio: rename bitmap_size() -> idset_bitmap_size()
    
    commit c1023f5634b9bfcbfff0dc200245309e3cde9b54 upstream.
    
    bitmap_size() is a pretty generic name and one may want to use it for
    a generic bitmap API function. At the same time, its logic is not
    "generic", i.e. it's not just `nbits -> size of bitmap in bytes`
    converter as it would be expected from its name.
    Add the prefix 'idset_' used throughout the file where the function
    resides.
    
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Acked-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
s390/dasd: fix error recovery leading to data corruption on ESE devices [+ + +]
Author: Stefan Haberland <sth@linux.ibm.com>
Date:   Mon Aug 12 14:57:33 2024 +0200

    s390/dasd: fix error recovery leading to data corruption on ESE devices
    
    commit 7db4042336580dfd75cb5faa82c12cd51098c90b upstream.
    
    Extent Space Efficient (ESE) or thin provisioned volumes need to be
    formatted on demand during usual IO processing.
    
    The dasd_ese_needs_format function checks for error codes that signal
    the non existence of a proper track format.
    
    The check for incorrect length is to imprecise since other error cases
    leading to transport of insufficient data also have this flag set.
    This might lead to data corruption in certain error cases for example
    during a storage server warmstart.
    
    Fix by removing the check for incorrect length and replacing by
    explicitly checking for invalid track format in transport mode.
    
    Also remove the check for file protected since this is not a valid
    ESE handling case.
    
    Cc: stable@vger.kernel.org # 5.3+
    Fixes: 5e2b17e712cf ("s390/dasd: Add dynamic formatting support for ESE volumes")
    Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
    Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
    Link: https://lore.kernel.org/r/20240812125733.126431-3-sth@linux.ibm.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
s390/iucv: fix receive buffer virtual vs physical address confusion [+ + +]
Author: Alexander Gordeev <agordeev@linux.ibm.com>
Date:   Fri Feb 16 13:13:26 2024 +0100

    s390/iucv: fix receive buffer virtual vs physical address confusion
    
    [ Upstream commit 4e8477aeb46dfe74e829c06ea588dd00ba20c8cc ]
    
    Fix IUCV_IPBUFLST-type buffers virtual vs physical address confusion.
    This does not fix a bug since virtual and physical address spaces are
    currently the same.
    
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Reviewed-by: Alexandra Winter <wintera@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
s390/smp,mcck: fix early IPI handling [+ + +]
Author: Heiko Carstens <hca@linux.ibm.com>
Date:   Tue Sep 5 15:49:37 2023 +0200

    s390/smp,mcck: fix early IPI handling
    
    [ Upstream commit 4a1725281fc5b0009944b1c0e1d2c1dc311a09ec ]
    
    Both the external call as well as the emergency signal submask bits in
    control register 0 are set before any interrupt handler is registered.
    
    Change the order and first register the interrupt handler and only then
    enable the interrupts by setting the corresponding bits in control
    register 0.
    
    This prevents that the second part of the machine check handler for
    early machine check handling is not executed: the machine check handler
    sends an IPI to the CPU it runs on. If the corresponding interrupts are
    enabled, but no interrupt handler is present, the interrupt is ignored.
    
    Reviewed-by: Sven Schnelle <svens@linux.ibm.com>
    Acked-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
s390/uv: Panic for set and remove shared access UVC errors [+ + +]
Author: Claudio Imbrenda <imbrenda@linux.ibm.com>
Date:   Thu Aug 1 13:25:48 2024 +0200

    s390/uv: Panic for set and remove shared access UVC errors
    
    [ Upstream commit cff59d8631e1409ffdd22d9d717e15810181b32c ]
    
    The return value uv_set_shared() and uv_remove_shared() (which are
    wrappers around the share() function) is not always checked. The system
    integrity of a protected guest depends on the Share and Unshare UVCs
    being successful. This means that any caller that fails to check the
    return value will compromise the security of the protected guest.
    
    No code path that would lead to such violation of the security
    guarantees is currently exercised, since all the areas that are shared
    never get unshared during the lifetime of the system. This might
    change and become an issue in the future.
    
    The Share and Unshare UVCs can only fail in case of hypervisor
    misbehaviour (either a bug or malicious behaviour). In such cases there
    is no reasonable way forward, and the system needs to panic.
    
    This patch replaces the return at the end of the share() function with
    a panic, to guarantee system integrity.
    
    Fixes: 5abb9351dfd9 ("s390/uv: introduce guest side ultravisor code")
    Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
    Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com>
    Reviewed-by: Steffen Eiden <seiden@linux.ibm.com>
    Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
    Link: https://lore.kernel.org/r/20240801112548.85303-1-imbrenda@linux.ibm.com
    Message-ID: <20240801112548.85303-1-imbrenda@linux.ibm.com>
    [frankja@linux.ibm.com: Fixed up patch subject]
    Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sched/topology: Handle NUMA_NO_NODE in sched_numa_find_nth_cpu() [+ + +]
Author: Yury Norov <yury.norov@gmail.com>
Date:   Sat Aug 19 07:12:37 2023 -0700

    sched/topology: Handle NUMA_NO_NODE in sched_numa_find_nth_cpu()
    
    [ Upstream commit 9ecea9ae4d3127a09fb5dfcea87f248937a39ff5 ]
    
    sched_numa_find_nth_cpu() doesn't handle NUMA_NO_NODE properly, and
    may crash kernel if passed with it. On the other hand, the only user
    of sched_numa_find_nth_cpu() has to check NUMA_NO_NODE case explicitly.
    
    It would be easier for users if this logic will get moved into
    sched_numa_find_nth_cpu().
    
    Signed-off-by: Yury Norov <yury.norov@gmail.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Mel Gorman <mgorman@suse.de>
    Link: https://lore.kernel.org/r/20230819141239.287290-6-yury.norov@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scsi: core: Fix the return value of scsi_logical_block_count() [+ + +]
Author: Chaotian Jing <chaotian.jing@mediatek.com>
Date:   Tue Aug 13 13:34:10 2024 +0800

    scsi: core: Fix the return value of scsi_logical_block_count()
    
    commit f03e94f23b04c2b71c0044c1534921b3975ef10c upstream.
    
    scsi_logical_block_count() should return the block count of a given SCSI
    command. The original implementation ended up shifting twice, leading to an
    incorrect count being returned. Fix the conversion between bytes and
    logical blocks.
    
    Cc: stable@vger.kernel.org
    Fixes: 6a20e21ae1e2 ("scsi: core: Add helper to return number of logical blocks in a request")
    Signed-off-by: Chaotian Jing <chaotian.jing@mediatek.com>
    Link: https://lore.kernel.org/r/20240813053534.7720-1-chaotian.jing@mediatek.com
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scsi: lpfc: Initialize status local variable in lpfc_sli4_repost_sgl_list() [+ + +]
Author: Justin Tee <justin.tee@broadcom.com>
Date:   Wed Jan 31 10:50:56 2024 -0800

    scsi: lpfc: Initialize status local variable in lpfc_sli4_repost_sgl_list()
    
    [ Upstream commit 3d0f9342ae200aa1ddc4d6e7a573c6f8f068d994 ]
    
    A static code analyzer tool indicates that the local variable called status
    in the lpfc_sli4_repost_sgl_list() routine could be used to print garbage
    uninitialized values in the routine's log message.
    
    Fix by initializing to zero.
    
    Signed-off-by: Justin Tee <justin.tee@broadcom.com>
    Link: https://lore.kernel.org/r/20240131185112.149731-2-justintee8345@gmail.com
    Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: spi: Fix sshdr use [+ + +]
Author: Mike Christie <michael.christie@oracle.com>
Date:   Wed Oct 4 16:00:07 2023 -0500

    scsi: spi: Fix sshdr use
    
    [ Upstream commit 0b149cee836aa53989ea089af1cb9d90d7c6ac9e ]
    
    If scsi_execute_cmd returns < 0, it doesn't initialize the sshdr, so we
    shouldn't access the sshdr. If it returns 0, then the cmd executed
    successfully, so there is no need to check the sshdr. This has us access
    the sshdr when we get a return value > 0.
    
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Link: https://lore.kernel.org/r/20231004210013.5601-7-michael.christie@oracle.com
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: John Garry <john.g.garry@oracle.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/bpf: Add a test to verify previous stacksafe() fix [+ + +]
Author: Yonghong Song <yonghong.song@linux.dev>
Date:   Mon Aug 12 14:48:52 2024 -0700

    selftests/bpf: Add a test to verify previous stacksafe() fix
    
    commit 662c3e2db00f92e50c26e9dc4fe47c52223d9982 upstream.
    
    A selftest is added such that without the previous patch,
    a crash can happen. With the previous patch, the test can
    run successfully. The new test is written in a way which
    mimics original crash case:
      main_prog
        static_prog_1
          static_prog_2
    where static_prog_1 has different paths to static_prog_2
    and some path has stack allocated and some other path
    does not. A stacksafe() checking in static_prog_2()
    triggered the crash.
    
    Signed-off-by: Yonghong Song <yonghong.song@linux.dev>
    Link: https://lore.kernel.org/r/20240812214852.214037-1-yonghong.song@linux.dev
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

selftests/bpf: Fix a few tests for GCC related warnings. [+ + +]
Author: Cupertino Miranda <cupertino.miranda@oracle.com>
Date:   Fri May 10 19:38:50 2024 +0100

    selftests/bpf: Fix a few tests for GCC related warnings.
    
    [ Upstream commit 5ddafcc377f98778acc08f660dee6400aece6a62 ]
    
    This patch corrects a few warnings to allow selftests to compile for
    GCC.
    
    -- progs/cpumask_failure.c --
    
    progs/bpf_misc.h:136:22: error: ‘cpumask’ is used uninitialized
    [-Werror=uninitialized]
      136 | #define __sink(expr) asm volatile("" : "+g"(expr))
          |                      ^~~
    progs/cpumask_failure.c:68:9: note: in expansion of macro ‘__sink’
       68 |         __sink(cpumask);
    
    The macro __sink(cpumask) with the '+' contraint modifier forces the
    the compiler to expect a read and write from cpumask. GCC detects
    that cpumask is never initialized and reports an error.
    This patch removes the spurious non required definitions of cpumask.
    
    -- progs/dynptr_fail.c --
    
    progs/dynptr_fail.c:1444:9: error: ‘ptr1’ may be used uninitialized
    [-Werror=maybe-uninitialized]
     1444 |         bpf_dynptr_clone(&ptr1, &ptr2);
    
    Many of the tests in the file are related to the detection of
    uninitialized pointers by the verifier. GCC is able to detect possible
    uninitialized values, and reports this as an error.
    The patch initializes all of the previous uninitialized structs.
    
    -- progs/test_tunnel_kern.c --
    
    progs/test_tunnel_kern.c:590:9: error: array subscript 1 is outside
    array bounds of ‘struct geneve_opt[1]’ [-Werror=array-bounds=]
      590 |         *(int *) &gopt.opt_data = bpf_htonl(0xdeadbeef);
          |         ^~~~~~~~~~~~~~~~~~~~~~~
    progs/test_tunnel_kern.c:575:27: note: at offset 4 into object ‘gopt’ of
    size 4
      575 |         struct geneve_opt gopt;
    
    This tests accesses beyond the defined data for the struct geneve_opt
    which contains as last field "u8 opt_data[0]" which clearly does not get
    reserved space (in stack) in the function header. This pattern is
    repeated in ip6geneve_set_tunnel and geneve_set_tunnel functions.
    GCC is able to see this and emits a warning.
    The patch introduces a local struct that allocates enough space to
    safely allow the write to opt_data field.
    
    -- progs/jeq_infer_not_null_fail.c --
    
    progs/jeq_infer_not_null_fail.c:21:40: error: array subscript ‘struct
    bpf_map[0]’ is partly outside array bounds of ‘struct <anonymous>[1]’
    [-Werror=array-bounds=]
       21 |         struct bpf_map *inner_map = map->inner_map_meta;
          |                                        ^~
    progs/jeq_infer_not_null_fail.c:14:3: note: object ‘m_hash’ of size 32
       14 | } m_hash SEC(".maps");
    
    This example defines m_hash in the context of the compilation unit and
    casts it to struct bpf_map which is much smaller than the size of struct
    bpf_map. It errors out in GCC when it attempts to access an element that
    would be defined in struct bpf_map outsize of the defined limits for
    m_hash.
    This patch disables the warning through a GCC pragma.
    
    This changes were tested in bpf-next master selftests without any
    regressions.
    
    Signed-off-by: Cupertino Miranda <cupertino.miranda@oracle.com>
    Cc: jose.marchesi@oracle.com
    Cc: david.faust@oracle.com
    Cc: Yonghong Song <yonghong.song@linux.dev>
    Cc: Eduard Zingerman <eddyz87@gmail.com>
    Cc: Andrii Nakryiko <andrii.nakryiko@gmail.com>
    Link: https://lore.kernel.org/r/20240510183850.286661-2-cupertino.miranda@oracle.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/mm: log run_vmtests.sh results in TAP format [+ + +]
Author: Ryan Roberts <ryan.roberts@arm.com>
Date:   Thu Dec 14 16:24:34 2023 +0000

    selftests/mm: log run_vmtests.sh results in TAP format
    
    [ Upstream commit a3c5cc5129ef55ac6c69f468e5ee6e4b0cd8179c ]
    
    When running tests on a CI system (e.g.  LAVA) it is useful to output test
    results in TAP (Test Anything Protocol) format so that the CI can parse
    the fine-grained results to show regressions.  Many of the mm selftest
    binaries already output using the TAP format.  And the kselftests runner
    (run_kselftest.sh) also uses the format.  CI systems such as LAVA can
    already handle nested TAP reports.  However, with the mm selftests we have
    3 levels of nesting (run_kselftest.sh -> run_vmtests.sh -> individual test
    binaries) and the middle level did not previously support TAP, which
    breaks the parser.
    
    Let's fix that by teaching run_vmtests.sh to output using the TAP format.
    Ideally this would be opt-in via a command line argument to avoid the
    possibility of breaking anyone's existing scripts that might scrape the
    output.  However, it is not possible to pass arguments to tests invoked
    via run_kselftest.sh.  So I've implemented an opt-out option (-n), which
    will revert to the existing output format.
    
    Future changes to this file should be aware of 2 new conventions:
    
     - output that is part of the TAP reporting is piped through tap_output
     - general output is piped through tap_prefix
    
    Link: https://lkml.kernel.org/r/20231214162434.3580009-1-ryan.roberts@arm.com
    Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
    Reviewed-by: Mark Brown <broonie@kernel.org>
    Tested-by: John Hubbard <jhubbard@nvidia.com>
    Cc: Aishwarya TCV <aishwarya.tcv@arm.com>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Stable-dep-of: 7c5e8d212d7d ("selftests: memfd_secret: don't build memfd_secret test on unsupported arches")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests: memfd_secret: don't build memfd_secret test on unsupported arches [+ + +]
Author: Muhammad Usama Anjum <usama.anjum@collabora.com>
Date:   Fri Aug 9 12:56:42 2024 +0500

    selftests: memfd_secret: don't build memfd_secret test on unsupported arches
    
    [ Upstream commit 7c5e8d212d7d81991a580e7de3904ea213d9a852 ]
    
    [1] mentions that memfd_secret is only supported on arm64, riscv, x86 and
    x86_64 for now.  It doesn't support other architectures.  I found the
    build error on arm and decided to send the fix as it was creating noise on
    KernelCI:
    
    memfd_secret.c: In function 'memfd_secret':
    memfd_secret.c:42:24: error: '__NR_memfd_secret' undeclared (first use in this function);
    did you mean 'memfd_secret'?
       42 |         return syscall(__NR_memfd_secret, flags);
          |                        ^~~~~~~~~~~~~~~~~
          |                        memfd_secret
    
    Hence I'm adding condition that memfd_secret should only be compiled on
    supported architectures.
    
    Also check in run_vmtests script if memfd_secret binary is present before
    executing it.
    
    Link: https://lkml.kernel.org/r/20240812061522.1933054-1-usama.anjum@collabora.com
    Link: https://lore.kernel.org/all/20210518072034.31572-7-rppt@kernel.org/ [1]
    Link: https://lkml.kernel.org/r/20240809075642.403247-1-usama.anjum@collabora.com
    Fixes: 76fe17ef588a ("secretmem: test: add basic selftest for memfd_secret(2)")
    Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
    Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
    Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
    Cc: Albert Ou <aou@eecs.berkeley.edu>
    Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
    Cc: Mike Rapoport (Microsoft) <rppt@kernel.org>
    Cc: Palmer Dabbelt <palmer@dabbelt.com>
    Cc: Paul Walmsley <paul.walmsley@sifive.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests: mptcp: join: check re-using ID of closed subflow [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Aug 19 21:45:22 2024 +0200

    selftests: mptcp: join: check re-using ID of closed subflow
    
    commit 65fb58afa341ad68e71e5c4d816b407e6a683a66 upstream.
    
    This test extends "delete and re-add" to validate the previous commit. A
    new 'subflow' endpoint is added, but the subflow request will be
    rejected. The result is that no subflow will be established from this
    address.
    
    Later, the endpoint is removed and re-added after having cleared the
    firewall rule. Before the previous commit, the client would not have
    been able to create this new subflow.
    
    While at it, extra checks have been added to validate the expected
    numbers of MPJ and RM_ADDR.
    
    The 'Fixes' tag here below is the same as the one from the previous
    commit: this patch here is not fixing anything wrong in the selftests,
    but it validates the previous fix for an issue introduced by this commit
    ID.
    
    Fixes: b6c08380860b ("mptcp: remove addr and subflow in PM netlink")
    Cc: stable@vger.kernel.org
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-4-38035d40de5b@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

selftests: mptcp: join: validate fullmesh endp on 1st sf [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Aug 19 21:45:31 2024 +0200

    selftests: mptcp: join: validate fullmesh endp on 1st sf
    
    commit 4878f9f8421f4587bee7b232c1c8a9d3a7d4d782 upstream.
    
    This case was not covered, and the wrong ID was set before the previous
    commit.
    
    The rest is not modified, it is just that it will increase the code
    coverage.
    
    The right address ID can be verified by looking at the packet traces. We
    could automate that using Netfilter with some cBPF code for example, but
    that's always a bit cryptic. Packetdrill seems better fitted for that.
    
    Fixes: 4f49d63352da ("selftests: mptcp: add fullmesh testcases")
    Cc: stable@vger.kernel.org
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-13-38035d40de5b@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

selftests: net: lib: ignore possible errors [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Fri Jun 7 18:31:02 2024 +0200

    selftests: net: lib: ignore possible errors
    
    [ Upstream commit 7e0620bc6a5ec6b340a0be40054f294ca26c010f ]
    
    No need to disable errexit temporary, simply ignore the only possible
    and not handled error.
    
    Reviewed-by: Geliang Tang <geliang@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://lore.kernel.org/r/20240607-upstream-net-next-20240607-selftests-mptcp-net-lib-v1-1-e36986faac94@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 7965a7f32a53 ("selftests: net: lib: kill PIDs before del netns")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests: net: lib: kill PIDs before del netns [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Tue Aug 13 15:39:34 2024 +0200

    selftests: net: lib: kill PIDs before del netns
    
    [ Upstream commit 7965a7f32a53d9ad807ce2c53bdda69ba104974f ]
    
    When deleting netns, it is possible to still have some tasks running,
    e.g. background tasks like tcpdump running in the background, not
    stopped because the test has been interrupted.
    
    Before deleting the netns, it is then safer to kill all attached PIDs,
    if any. That should reduce some noises after the end of some tests, and
    help with the debugging of some issues. That's why this modification is
    seen as a "fix".
    
    Fixes: 25ae948b4478 ("selftests/net: add lib.sh")
    Acked-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Acked-by: Florian Westphal <fw@strlen.de>
    Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
    Link: https://patch.msgid.link/20240813-upstream-net-20240813-selftests-net-lib-kill-v1-1-27b689b248b8@kernel.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests: udpgro: report error when receive failed [+ + +]
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Thu Aug 15 15:59:50 2024 +0800

    selftests: udpgro: report error when receive failed
    
    [ Upstream commit 7167395a4be7930ecac6a33b4e54d7e3dd9ee209 ]
    
    Currently, we only check the latest senders's exit code. If the receiver
    report failed, it is not recoreded. Fix it by checking the exit code
    of all the involved processes.
    
    Before:
      bad GRO lookup       ok
      multiple GRO socks   ./udpgso_bench_rx: recv: bad packet len, got 1452, expected 14520
    
     ./udpgso_bench_rx: recv: bad packet len, got 1452, expected 14520
    
     failed
     $ echo $?
     0
    
    After:
      bad GRO lookup       ok
      multiple GRO socks   ./udpgso_bench_rx: recv: bad packet len, got 1452, expected 14520
    
     ./udpgso_bench_rx: recv: bad packet len, got 1452, expected 14520
    
     failed
     $ echo $?
     1
    
    Fixes: 3327a9c46352 ("selftests: add functionals test for UDP GRO")
    Suggested-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selinux: add the processing of the failure of avc_add_xperms_decision() [+ + +]
Author: Zhen Lei <thunder.leizhen@huawei.com>
Date:   Wed Aug 7 17:00:56 2024 +0800

    selinux: add the processing of the failure of avc_add_xperms_decision()
    
    commit 6dd1e4c045afa6a4ba5d46f044c83bd357c593c2 upstream.
    
    When avc_add_xperms_decision() fails, the information recorded by the new
    avc node is incomplete. In this case, the new avc node should be released
    instead of replacing the old avc node.
    
    Cc: stable@vger.kernel.org
    Fixes: fa1aa143ac4a ("selinux: extended permissions for ioctls")
    Suggested-by: Stephen Smalley <stephen.smalley.work@gmail.com>
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Acked-by: Stephen Smalley <stephen.smalley.work@gmail.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

selinux: fix potential counting error in avc_add_xperms_decision() [+ + +]
Author: Zhen Lei <thunder.leizhen@huawei.com>
Date:   Tue Aug 6 14:51:13 2024 +0800

    selinux: fix potential counting error in avc_add_xperms_decision()
    
    commit 379d9af3f3da2da1bbfa67baf1820c72a080d1f1 upstream.
    
    The count increases only when a node is successfully added to
    the linked list.
    
    Cc: stable@vger.kernel.org
    Fixes: fa1aa143ac4a ("selinux: extended permissions for ioctls")
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Acked-by: Stephen Smalley <stephen.smalley.work@gmail.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

selinux: revert our use of vma_is_initial_heap() [+ + +]
Author: Paul Moore <paul@paul-moore.com>
Date:   Thu Aug 8 11:57:38 2024 -0400

    selinux: revert our use of vma_is_initial_heap()
    
    commit 05a3d6e9307250a5911d75308e4363466794ab21 upstream.
    
    Unfortunately it appears that vma_is_initial_heap() is currently broken
    for applications that do not currently have any heap allocated, e.g.
    brk == start_brk.  The breakage is such that it will cause SELinux to
    check for the process/execheap permission on memory regions that cross
    brk/start_brk even when there is no heap.
    
    The proper fix would be to correct vma_is_initial_heap(), but as there
    are multiple callers I am hesitant to unilaterally modify the helper
    out of concern that I would end up breaking some other subsystem.  The
    mm developers have been made aware of the situation and hopefully they
    will have a fix at some point in the future, but we need a fix soon so
    we are simply going to revert our use of vma_is_initial_heap() in favor
    of our old logic/code which works as expected, even in the face of a
    zero size heap.  We can return to using vma_is_initial_heap() at some
    point in the future when it is fixed.
    
    Cc: stable@vger.kernel.org
    Reported-by: Marc Reisner <reisner.marc@gmail.com>
    Closes: https://lore.kernel.org/all/ZrPmoLKJEf1wiFmM@marcreisner.com
    Fixes: 68df1baf158f ("selinux: use vma_is_initial_stack() and vma_is_initial_heap()")
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
smb: client: ignore unhandled reparse tags [+ + +]
Author: Paulo Alcantara <pc@manguebit.com>
Date:   Wed Aug 21 00:45:03 2024 -0300

    smb: client: ignore unhandled reparse tags
    
    [ Upstream commit ec686804117a0421cf31d54427768aaf93aa0069 ]
    
    Just ignore reparse points that the client can't parse rather than
    bailing out and not opening the file or directory.
    
    Reported-by: Marc <1marc1@gmail.com>
    Closes: https://lore.kernel.org/r/CAMHwNVv-B+Q6wa0FEXrAuzdchzcJRsPKDDRrNaYZJd6X-+iJzw@mail.gmail.com
    Fixes: 539aad7f14da ("smb: client: introduce ->parse_reparse_point()")
    Tested-by: Anthony Nandaa (Microsoft) <profnandaa@gmail.com>
    Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ssb: Fix division by zero issue in ssb_calc_clock_rate [+ + +]
Author: Rand Deeb <rand.sec96@gmail.com>
Date:   Tue Sep 5 02:23:46 2023 +0300

    ssb: Fix division by zero issue in ssb_calc_clock_rate
    
    [ Upstream commit e0b5127fa134fe0284d58877b6b3133939c8b3ce ]
    
    In ssb_calc_clock_rate(), there is a potential issue where the value of
    m1 could be zero due to initialization using clkfactor_f6_resolv(). This
    situation raised concerns about the possibility of a division by zero
    error.
    
    We fixed it by following the suggestions provided by Larry Finger
    <Larry.Finger@lwfinger.net> and Michael Büsch <m@bues.ch>. The fix
    involves returning a value of 1 instead of 0 in clkfactor_f6_resolv().
    This modification ensures the proper functioning of the code and
    eliminates the risk of division by zero errors.
    
    Signed-off-by: Rand Deeb <rand.sec96@gmail.com>
    Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
    Acked-by: Michael Büsch <m@bues.ch>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/20230904232346.34991-1-rand.sec96@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
staging: iio: resolver: ad2s1210: fix use before initialization [+ + +]
Author: David Lechner <dlechner@baylibre.com>
Date:   Fri Sep 29 12:23:07 2023 -0500

    staging: iio: resolver: ad2s1210: fix use before initialization
    
    [ Upstream commit 7fe2d05cee46b1c4d9f1efaeab08cc31a0dfff60 ]
    
    This fixes a use before initialization in ad2s1210_probe(). The
    ad2s1210_setup_gpios() function uses st->sdev but it was being called
    before this field was initialized.
    
    Signed-off-by: David Lechner <dlechner@baylibre.com>
    Link: https://lore.kernel.org/r/20230929-ad2s1210-mainline-v3-2-fa4364281745@baylibre.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

staging: ks7010: disable bh on tx_dev_lock [+ + +]
Author: Chengfeng Ye <dg573847474@gmail.com>
Date:   Tue Sep 26 16:13:23 2023 +0000

    staging: ks7010: disable bh on tx_dev_lock
    
    [ Upstream commit 058cbee52ccd7be77e373d31a4f14670cfd32018 ]
    
    As &priv->tx_dev.tx_dev_lock is also acquired by xmit callback which
    could be call from timer under softirq context, use spin_lock_bh()
    on it to prevent potential deadlock.
    
    hostif_sme_work()
    --> hostif_sme_set_pmksa()
    --> hostif_mib_set_request()
    --> ks_wlan_hw_tx()
    --> spin_lock(&priv->tx_dev.tx_dev_lock)
    
    ks_wlan_start_xmit()
    --> hostif_data_request()
    --> ks_wlan_hw_tx()
    --> spin_lock(&priv->tx_dev.tx_dev_lock)
    
    Signed-off-by: Chengfeng Ye <dg573847474@gmail.com>
    Link: https://lore.kernel.org/r/20230926161323.41928-1-dg573847474@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tc-testing: don't access non-existent variable on exception [+ + +]
Author: Simon Horman <horms@kernel.org>
Date:   Thu Aug 15 16:37:13 2024 +0100

    tc-testing: don't access non-existent variable on exception
    
    [ Upstream commit a0c9fe5eecc97680323ee83780ea3eaf440ba1b7 ]
    
    Since commit 255c1c7279ab ("tc-testing: Allow test cases to be skipped")
    the variable test_ordinal doesn't exist in call_pre_case().
    So it should not be accessed when an exception occurs.
    
    This resolves the following splat:
    
      ...
      During handling of the above exception, another exception occurred:
    
      Traceback (most recent call last):
        File ".../tdc.py", line 1028, in <module>
          main()
        File ".../tdc.py", line 1022, in main
          set_operation_mode(pm, parser, args, remaining)
        File ".../tdc.py", line 966, in set_operation_mode
          catresults = test_runner_serial(pm, args, alltests)
        File ".../tdc.py", line 642, in test_runner_serial
          (index, tsr) = test_runner(pm, args, alltests)
        File ".../tdc.py", line 536, in test_runner
          res = run_one_test(pm, args, index, tidx)
        File ".../tdc.py", line 419, in run_one_test
          pm.call_pre_case(tidx)
        File ".../tdc.py", line 146, in call_pre_case
          print('test_ordinal is {}'.format(test_ordinal))
      NameError: name 'test_ordinal' is not defined
    
    Fixes: 255c1c7279ab ("tc-testing: Allow test cases to be skipped")
    Signed-off-by: Simon Horman <horms@kernel.org>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Link: https://patch.msgid.link/20240815-tdc-test-ordinal-v1-1-0255c122a427@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tcp/dccp: bypass empty buckets in inet_twsk_purge() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Mar 27 19:12:06 2024 +0000

    tcp/dccp: bypass empty buckets in inet_twsk_purge()
    
    [ Upstream commit 50e2907ef8bb52cf80ecde9eec5c4dac07177146 ]
    
    TCP ehash table is often sparsely populated.
    
    inet_twsk_purge() spends too much time calling cond_resched().
    
    This patch can reduce time spent in inet_twsk_purge() by 20x.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Link: https://lore.kernel.org/r/20240327191206.508114-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 565d121b6998 ("tcp: prevent concurrent execution of tcp_sk_exit_batch")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tcp/dccp: do not care about families in inet_twsk_purge() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Mar 29 15:32:03 2024 +0000

    tcp/dccp: do not care about families in inet_twsk_purge()
    
    [ Upstream commit 1eeb5043573981f3a1278876515851b7f6b1df1b ]
    
    We lost ability to unload ipv6 module a long time ago.
    
    Instead of calling expensive inet_twsk_purge() twice,
    we can handle all families in one round.
    
    Also remove an extra line added in my prior patch,
    per Kuniyuki Iwashima feedback.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/netdev/20240327192934.6843-1-kuniyu@amazon.com/
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Link: https://lore.kernel.org/r/20240329153203.345203-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 565d121b6998 ("tcp: prevent concurrent execution of tcp_sk_exit_batch")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tcp: do not export tcp_twsk_purge() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Apr 19 07:19:42 2024 +0000

    tcp: do not export tcp_twsk_purge()
    
    commit c51db4ac10d57c366f9a92121e3889bfc6c324cd upstream.
    
    After commit 1eeb50435739 ("tcp/dccp: do not care about
    families in inet_twsk_purge()") tcp_twsk_purge() is
    no longer potentially called from a module.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Kuniyuki Iwashima <kuniyu@amazon.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

tcp: prevent concurrent execution of tcp_sk_exit_batch [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Aug 13 00:28:25 2024 +0200

    tcp: prevent concurrent execution of tcp_sk_exit_batch
    
    [ Upstream commit 565d121b69980637f040eb4d84289869cdaabedf ]
    
    Its possible that two threads call tcp_sk_exit_batch() concurrently,
    once from the cleanup_net workqueue, once from a task that failed to clone
    a new netns.  In the latter case, error unwinding calls the exit handlers
    in reverse order for the 'failed' netns.
    
    tcp_sk_exit_batch() calls tcp_twsk_purge().
    Problem is that since commit b099ce2602d8 ("net: Batch inet_twsk_purge"),
    this function picks up twsk in any dying netns, not just the one passed
    in via exit_batch list.
    
    This means that the error unwind of setup_net() can "steal" and destroy
    timewait sockets belonging to the exiting netns.
    
    This allows the netns exit worker to proceed to call
    
    WARN_ON_ONCE(!refcount_dec_and_test(&net->ipv4.tcp_death_row.tw_refcount));
    
    without the expected 1 -> 0 transition, which then splats.
    
    At same time, error unwind path that is also running inet_twsk_purge()
    will splat as well:
    
    WARNING: .. at lib/refcount.c:31 refcount_warn_saturate+0x1ed/0x210
    ...
     refcount_dec include/linux/refcount.h:351 [inline]
     inet_twsk_kill+0x758/0x9c0 net/ipv4/inet_timewait_sock.c:70
     inet_twsk_deschedule_put net/ipv4/inet_timewait_sock.c:221
     inet_twsk_purge+0x725/0x890 net/ipv4/inet_timewait_sock.c:304
     tcp_sk_exit_batch+0x1c/0x170 net/ipv4/tcp_ipv4.c:3522
     ops_exit_list+0x128/0x180 net/core/net_namespace.c:178
     setup_net+0x714/0xb40 net/core/net_namespace.c:375
     copy_net_ns+0x2f0/0x670 net/core/net_namespace.c:508
     create_new_namespaces+0x3ea/0xb10 kernel/nsproxy.c:110
    
    ... because refcount_dec() of tw_refcount unexpectedly dropped to 0.
    
    This doesn't seem like an actual bug (no tw sockets got lost and I don't
    see a use-after-free) but as erroneous trigger of debug check.
    
    Add a mutex to force strict ordering: the task that calls tcp_twsk_purge()
    blocks other task from doing final _dec_and_test before mutex-owner has
    removed all tw sockets of dying netns.
    
    Fixes: e9bd0cca09d1 ("tcp: Don't allocate tcp_death_row outside of struct netns_ipv4.")
    Reported-by: syzbot+8ea26396ff85d23a8929@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/0000000000003a5292061f5e4e19@google.com/
    Link: https://lore.kernel.org/netdev/20240812140104.GA21559@breakpoint.cc/
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Reviewed-by: Jason Xing <kerneljasonxing@gmail.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20240812222857.29837-1-fw@strlen.de
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tcp: Update window clamping condition [+ + +]
Author: Subash Abhinov Kasiviswanathan <quic_subashab@quicinc.com>
Date:   Thu Aug 8 16:06:40 2024 -0700

    tcp: Update window clamping condition
    
    [ Upstream commit a2cbb1603943281a604f5adc48079a148db5cb0d ]
    
    This patch is based on the discussions between Neal Cardwell and
    Eric Dumazet in the link
    https://lore.kernel.org/netdev/20240726204105.1466841-1-quic_subashab@quicinc.com/
    
    It was correctly pointed out that tp->window_clamp would not be
    updated in cases where net.ipv4.tcp_moderate_rcvbuf=0 or if
    (copied <= tp->rcvq_space.space). While it is expected for most
    setups to leave the sysctl enabled, the latter condition may
    not end up hitting depending on the TCP receive queue size and
    the pattern of arriving data.
    
    The updated check should be hit only on initial MSS update from
    TCP_MIN_MSS to measured MSS value and subsequently if there was
    an update to a larger value.
    
    Fixes: 05f76b2d634e ("tcp: Adjust clamping window for applications specifying SO_RCVBUF")
    Signed-off-by: Sean Tranchetti <quic_stranche@quicinc.com>
    Signed-off-by: Subash Abhinov Kasiviswanathan <quic_subashab@quicinc.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
thunderbolt: Mark XDomain as unplugged when router is removed [+ + +]
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Thu Jun 13 15:05:03 2024 +0300

    thunderbolt: Mark XDomain as unplugged when router is removed
    
    commit e2006140ad2e01a02ed0aff49cc2ae3ceeb11f8d upstream.
    
    I noticed that when we do discrete host router NVM upgrade and it gets
    hot-removed from the PCIe side as a result of NVM firmware authentication,
    if there is another host connected with enabled paths we hang in tearing
    them down. This is due to fact that the Thunderbolt networking driver
    also tries to cleanup the paths and ends up blocking in
    tb_disconnect_xdomain_paths() waiting for the domain lock.
    
    However, at this point we already cleaned the paths in tb_stop() so
    there is really no need for tb_disconnect_xdomain_paths() to do that
    anymore. Furthermore it already checks if the XDomain is unplugged and
    bails out early so take advantage of that and mark the XDomain as
    unplugged when we remove the parent router.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tick: Move got_idle_tick away from common flags [+ + +]
Author: Frederic Weisbecker <frederic@kernel.org>
Date:   Sun Feb 25 23:55:03 2024 +0100

    tick: Move got_idle_tick away from common flags
    
    [ Upstream commit 3ce74f1a8566dbbc9774f85fb0ce781fe290fd32 ]
    
    tick_nohz_idle_got_tick() is called by cpuidle_reflect() within the idle
    loop with interrupts enabled. This function modifies the struct
    tick_sched's bitfield "got_idle_tick". However this bitfield is stored
    within the same mask as other bitfields that can be modified from
    interrupts.
    
    Fortunately so far it looks like the only race that can happen is while
    writing ->got_idle_tick to 0, an interrupt fires and writes the
    ->idle_active field to 0. It's then possible that the interrupted write
    to ->got_idle_tick writes back the old value of ->idle_active back to 1.
    
    However if that happens, the worst possible outcome is that the time
    spent between that interrupt and the upcoming call to
    tick_nohz_idle_exit() is accounted as idle, which is negligible quantity.
    
    Still all the bitfield writes within this struct tick_sched's shadow
    mask should be IRQ-safe. Therefore move this bitfield out to its own
    storage to avoid further suprises.
    
    Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/20240225225508.11587-12-frederic@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tools/testing/selftests/mm/run_vmtests.sh: lower the ptrace permissions [+ + +]
Author: Itaru Kitayama <itaru.kitayama@linux.dev>
Date:   Mon Oct 30 17:54:45 2023 +0900

    tools/testing/selftests/mm/run_vmtests.sh: lower the ptrace permissions
    
    [ Upstream commit 2ffc27b15b11c9584ac46335c2ed2248d2aa4137 ]
    
    On Ubuntu and probably other distros, ptrace permissions are tightend a
    bit by default; i.e., /proc/sys/kernel/yama/ptrace_score is set to 1.
    This cases memfd_secret's ptrace attach test fails with a permission
    error.  Set it to 0 piror to running the program.
    
    Link: https://lkml.kernel.org/r/20231030-selftest-v1-1-743df68bb996@linux.dev
    Signed-off-by: Itaru Kitayama <itaru.kitayama@linux.dev>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Stable-dep-of: 7c5e8d212d7d ("selftests: memfd_secret: don't build memfd_secret test on unsupported arches")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tools: move alignment-related macros to new [+ + +]
Author: Alexander Lobakin <aleksander.lobakin@intel.com>
Date:   Wed Mar 27 16:23:48 2024 +0100

    tools: move alignment-related macros to new <linux/align.h>
    
    commit 10a04ff09bcc39e0044190ffe9f00f998f13647c upstream.
    
    Currently, tools have *ALIGN*() macros scattered across the unrelated
    headers, as there are only 3 of them and they were added separately
    each time on an as-needed basis.
    Anyway, let's make it more consistent with the kernel headers and allow
    using those macros outside of the mentioned headers. Create
    <linux/align.h> inside the tools/ folder and include it where needed.
    
    Signed-off-by: Yury Norov <yury.norov@gmail.com>
    Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tty: atmel_serial: use the correct RTS flag. [+ + +]
Author: Mathieu Othacehe <m.othacehe@gmail.com>
Date:   Thu Aug 8 08:06:37 2024 +0200

    tty: atmel_serial: use the correct RTS flag.
    
    commit c9f6613b16123989f2c3bd04b1d9b2365d6914e7 upstream.
    
    In RS485 mode, the RTS pin is driven high by hardware when the transmitter
    is operating. This behaviour cannot be changed. This means that the driver
    should claim that it supports SER_RS485_RTS_ON_SEND and not
    SER_RS485_RTS_AFTER_SEND.
    
    Otherwise, when configuring the port with the SER_RS485_RTS_ON_SEND, one
    get the following warning:
    
    kern.warning kernel: atmel_usart_serial atmel_usart_serial.2.auto:
    ttyS1 (1): invalid RTS setting, using RTS_AFTER_SEND instead
    
    which is contradictory with what's really happening.
    
    Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
    Cc: stable <stable@kernel.org>
    Tested-by: Alexander Dahl <ada@thorsis.com>
    Fixes: af47c491e3c7 ("serial: atmel: Fill in rs485_supported")
    Link: https://lore.kernel.org/r/20240808060637.19886-1-othacehe@gnu.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

tty: serial: fsl_lpuart: mark last busy before uart_add_one_port [+ + +]
Author: Peng Fan <peng.fan@nxp.com>
Date:   Thu Aug 8 22:03:25 2024 +0800

    tty: serial: fsl_lpuart: mark last busy before uart_add_one_port
    
    commit dc98d76a15bc29a9a4e76f2f65f39f3e590fb15c upstream.
    
    With "earlycon initcall_debug=1 loglevel=8" in bootargs, kernel
    sometimes boot hang. It is because normal console still is not ready,
    but runtime suspend is called, so early console putchar will hang
    in waiting TRDE set in UARTSTAT.
    
    The lpuart driver has auto suspend delay set to 3000ms, but during
    uart_add_one_port, a child device serial ctrl will added and probed with
    its pm runtime enabled(see serial_ctrl.c).
    The runtime suspend call path is:
    device_add
         |-> bus_probe_device
               |->device_initial_probe
                       |->__device_attach
                             |-> pm_runtime_get_sync(dev->parent);
                             |-> pm_request_idle(dev);
                             |-> pm_runtime_put(dev->parent);
    
    So in the end, before normal console ready, the lpuart get runtime
    suspended. And earlycon putchar will hang.
    
    To address the issue, mark last busy just after pm_runtime_enable,
    three seconds is long enough to switch from bootconsole to normal
    console.
    
    Fixes: 43543e6f539b ("tty: serial: fsl_lpuart: Add runtime pm support")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Link: https://lore.kernel.org/r/20240808140325.580105-1-peng.fan@oss.nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
udp: fix receiving fraglist GSO packets [+ + +]
Author: Felix Fietkau <nbd@nbd.name>
Date:   Mon Aug 19 17:06:21 2024 +0200

    udp: fix receiving fraglist GSO packets
    
    [ Upstream commit b128ed5ab27330deeeaf51ea8bb69f1442a96f7f ]
    
    When assembling fraglist GSO packets, udp4_gro_complete does not set
    skb->csum_start, which makes the extra validation in __udp_gso_segment fail.
    
    Fixes: 89add40066f9 ("net: drop bad gso csum_start and offset in virtio_net_hdr")
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://patch.msgid.link/20240819150621.59833-1-nbd@nbd.name
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
usb: dwc3: core: Skip setting event buffers for host only controllers [+ + +]
Author: Krishna Kurapati <quic_kriskura@quicinc.com>
Date:   Sat Apr 20 10:18:55 2024 +0530

    usb: dwc3: core: Skip setting event buffers for host only controllers
    
    [ Upstream commit 89d7f962994604a3e3d480832788d06179abefc5 ]
    
    On some SoC's like SA8295P where the tertiary controller is host-only
    capable, GEVTADDRHI/LO, GEVTSIZ, GEVTCOUNT registers are not accessible.
    Trying to access them leads to a crash.
    
    For DRD/Peripheral supported controllers, event buffer setup is done
    again in gadget_pullup. Skip setup or cleanup of event buffers if
    controller is host-only capable.
    
    Suggested-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
    Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
    Reviewed-by: Bjorn Andersson <andersson@kernel.org>
    Tested-by: Johan Hovold <johan+linaro@kernel.org>
    Link: https://lore.kernel.org/r/20240420044901.884098-4-quic_kriskura@quicinc.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: gadget: fsl: Increase size of name buffer for endpoints [+ + +]
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Fri Feb 23 18:33:16 2024 +0100

    usb: gadget: fsl: Increase size of name buffer for endpoints
    
    [ Upstream commit 87850f6cc20911e35eafcbc1d56b0d649ae9162d ]
    
    This fixes a W=1 warning about sprintf writing up to 16 bytes into a
    buffer of size 14. There is no practical relevance because there are not
    more than 32 endpoints.
    
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Link: https://lore.kernel.org/r/6754df25c56aae04f8110594fad2cd2452b1862a.1708709120.git.u.kleine-koenig@pengutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: gadget: uvc: cleanup request when not in correct state [+ + +]
Author: Michael Grzeschik <m.grzeschik@pengutronix.de>
Date:   Mon Sep 11 16:05:29 2023 +0200

    usb: gadget: uvc: cleanup request when not in correct state
    
    [ Upstream commit 52a39f2cf62bb5430ad1f54cd522dbfdab1d71ba ]
    
    The uvc_video_enable function of the uvc-gadget driver is dequeing and
    immediately deallocs all requests on its disable codepath. This is not
    save since the dequeue function is async and does not ensure that the
    requests are left unlinked in the controller driver.
    
    By adding the ep_free_request into the completion path of the requests
    we ensure that the request will be properly deallocated.
    
    Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
    Link: https://lore.kernel.org/r/20230911140530.2995138-3-m.grzeschik@pengutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
vfs: Don't evict inode under the inode lru traversing context [+ + +]
Author: Zhihao Cheng <chengzhihao1@huawei.com>
Date:   Fri Aug 9 11:16:28 2024 +0800

    vfs: Don't evict inode under the inode lru traversing context
    
    commit 2a0629834cd82f05d424bbc193374f9a43d1f87d upstream.
    
    The inode reclaiming process(See function prune_icache_sb) collects all
    reclaimable inodes and mark them with I_FREEING flag at first, at that
    time, other processes will be stuck if they try getting these inodes
    (See function find_inode_fast), then the reclaiming process destroy the
    inodes by function dispose_list(). Some filesystems(eg. ext4 with
    ea_inode feature, ubifs with xattr) may do inode lookup in the inode
    evicting callback function, if the inode lookup is operated under the
    inode lru traversing context, deadlock problems may happen.
    
    Case 1: In function ext4_evict_inode(), the ea inode lookup could happen
            if ea_inode feature is enabled, the lookup process will be stuck
            under the evicting context like this:
    
     1. File A has inode i_reg and an ea inode i_ea
     2. getfattr(A, xattr_buf) // i_ea is added into lru // lru->i_ea
     3. Then, following three processes running like this:
    
        PA                              PB
     echo 2 > /proc/sys/vm/drop_caches
      shrink_slab
       prune_dcache_sb
       // i_reg is added into lru, lru->i_ea->i_reg
       prune_icache_sb
        list_lru_walk_one
         inode_lru_isolate
          i_ea->i_state |= I_FREEING // set inode state
         inode_lru_isolate
          __iget(i_reg)
          spin_unlock(&i_reg->i_lock)
          spin_unlock(lru_lock)
                                         rm file A
                                          i_reg->nlink = 0
          iput(i_reg) // i_reg->nlink is 0, do evict
           ext4_evict_inode
            ext4_xattr_delete_inode
             ext4_xattr_inode_dec_ref_all
              ext4_xattr_inode_iget
               ext4_iget(i_ea->i_ino)
                iget_locked
                 find_inode_fast
                  __wait_on_freeing_inode(i_ea) ----→ AA deadlock
        dispose_list // cannot be executed by prune_icache_sb
         wake_up_bit(&i_ea->i_state)
    
    Case 2: In deleted inode writing function ubifs_jnl_write_inode(), file
            deleting process holds BASEHD's wbuf->io_mutex while getting the
            xattr inode, which could race with inode reclaiming process(The
            reclaiming process could try locking BASEHD's wbuf->io_mutex in
            inode evicting function), then an ABBA deadlock problem would
            happen as following:
    
     1. File A has inode ia and a xattr(with inode ixa), regular file B has
        inode ib and a xattr.
     2. getfattr(A, xattr_buf) // ixa is added into lru // lru->ixa
     3. Then, following three processes running like this:
    
            PA                PB                        PC
                    echo 2 > /proc/sys/vm/drop_caches
                     shrink_slab
                      prune_dcache_sb
                      // ib and ia are added into lru, lru->ixa->ib->ia
                      prune_icache_sb
                       list_lru_walk_one
                        inode_lru_isolate
                         ixa->i_state |= I_FREEING // set inode state
                        inode_lru_isolate
                         __iget(ib)
                         spin_unlock(&ib->i_lock)
                         spin_unlock(lru_lock)
                                                       rm file B
                                                        ib->nlink = 0
     rm file A
      iput(ia)
       ubifs_evict_inode(ia)
        ubifs_jnl_delete_inode(ia)
         ubifs_jnl_write_inode(ia)
          make_reservation(BASEHD) // Lock wbuf->io_mutex
          ubifs_iget(ixa->i_ino)
           iget_locked
            find_inode_fast
             __wait_on_freeing_inode(ixa)
              |          iput(ib) // ib->nlink is 0, do evict
              |           ubifs_evict_inode
              |            ubifs_jnl_delete_inode(ib)
              ↓             ubifs_jnl_write_inode
         ABBA deadlock ←-----make_reservation(BASEHD)
                       dispose_list // cannot be executed by prune_icache_sb
                        wake_up_bit(&ixa->i_state)
    
    Fix the possible deadlock by using new inode state flag I_LRU_ISOLATING
    to pin the inode in memory while inode_lru_isolate() reclaims its pages
    instead of using ordinary inode reference. This way inode deletion
    cannot be triggered from inode_lru_isolate() thus avoiding the deadlock.
    evict() is made to wait for I_LRU_ISOLATING to be cleared before
    proceeding with inode cleanup.
    
    Link: https://lore.kernel.org/all/37c29c42-7685-d1f0-067d-63582ffac405@huaweicloud.com/
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=219022
    Fixes: e50e5129f384 ("ext4: xattr-in-inode support")
    Fixes: 7959cf3a7506 ("ubifs: journal: Handle xattrs like files")
    Cc: stable@vger.kernel.org
    Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
    Link: https://lore.kernel.org/r/20240809031628.1069873-1-chengzhihao@huaweicloud.com
    Reviewed-by: Jan Kara <jack@suse.cz>
    Suggested-by: Jan Kara <jack@suse.cz>
    Suggested-by: Mateusz Guzik <mjguzik@gmail.com>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
virtiofs: forbid newlines in tags [+ + +]
Author: Stefan Hajnoczi <stefanha@redhat.com>
Date:   Mon Feb 12 19:11:47 2024 -0500

    virtiofs: forbid newlines in tags
    
    [ Upstream commit 40488cc16f7ea0d193a4e248f0d809c25cc377db ]
    
    Newlines in virtiofs tags are awkward for users and potential vectors
    for string injection attacks.
    
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: Vivek Goyal <vgoyal@redhat.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
vsock: fix recursive ->recvmsg calls [+ + +]
Author: Cong Wang <cong.wang@bytedance.com>
Date:   Sun Aug 11 19:21:53 2024 -0700

    vsock: fix recursive ->recvmsg calls
    
    [ Upstream commit 69139d2919dd4aa9a553c8245e7c63e82613e3fc ]
    
    After a vsock socket has been added to a BPF sockmap, its prot->recvmsg
    has been replaced with vsock_bpf_recvmsg(). Thus the following
    recursiion could happen:
    
    vsock_bpf_recvmsg()
     -> __vsock_recvmsg()
      -> vsock_connectible_recvmsg()
       -> prot->recvmsg()
        -> vsock_bpf_recvmsg() again
    
    We need to fix it by calling the original ->recvmsg() without any BPF
    sockmap logic in __vsock_recvmsg().
    
    Fixes: 634f1a7110b4 ("vsock: support sockmap")
    Reported-by: syzbot+bdb4bd87b5e22058e2a4@syzkaller.appspotmail.com
    Tested-by: syzbot+bdb4bd87b5e22058e2a4@syzkaller.appspotmail.com
    Cc: Bobby Eshleman <bobby.eshleman@bytedance.com>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: Stefano Garzarella <sgarzare@redhat.com>
    Signed-off-by: Cong Wang <cong.wang@bytedance.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Link: https://patch.msgid.link/20240812022153.86512-1-xiyou.wangcong@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
wifi: ath11k: fix ath11k_mac_op_remain_on_channel() stack usage [+ + +]
Author: Dmitry Antipov <dmantipov@yandex.ru>
Date:   Tue Sep 26 07:29:04 2023 +0300

    wifi: ath11k: fix ath11k_mac_op_remain_on_channel() stack usage
    
    [ Upstream commit 4fd15bb705d3faa7e6adab2daba2e3af80d9b6bd ]
    
    When compiling with clang 16.0.6, I've noticed the following:
    
    drivers/net/wireless/ath/ath11k/mac.c:8903:12: warning: stack frame
    size (1032) exceeds limit (1024) in 'ath11k_mac_op_remain_on_channel'
    [-Wframe-larger-than]
    static int ath11k_mac_op_remain_on_channel(struct ieee80211_hw *hw,
               ^
    68/1032 (6.59%) spills, 964/1032 (93.41%) variables
    
    So switch to kzalloc()'ed instance of 'struct scan_req_params' like
    it's done in 'ath11k_mac_op_hw_scan()'. Compile tested only.
    
    Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
    Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20230926042906.13725-1-dmantipov@yandex.ru
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: Add missing qmi_txn_cancel() calls [+ + +]
Author: Jeff Johnson <quic_jjohnson@quicinc.com>
Date:   Thu Jan 11 10:05:31 2024 -0800

    wifi: ath12k: Add missing qmi_txn_cancel() calls
    
    [ Upstream commit 2e82b5f09a97f1b98b885470c81c1248bec103af ]
    
    Per the QMI documentation "A client calling qmi_txn_init() must call
    either qmi_txn_wait() or qmi_txn_cancel() to free up the allocated
    resources."
    
    Unfortunately, in most of the ath12k messaging functions, when
    qmi_send_request() fails, the function returns without performing the
    necessary cleanup. So update those functions to call qmi_txn_cancel()
    when qmi_send_request() fails.
    
    No functional changes, compile tested only.
    
    Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://msgid.link/20240111-qmi-cleanup-v2-2-53343af953d5@quicinc.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: fix WARN_ON during ath12k_mac_update_vif_chan [+ + +]
Author: Manish Dharanenthiran <quic_mdharane@quicinc.com>
Date:   Tue Sep 5 16:29:41 2023 +0300

    wifi: ath12k: fix WARN_ON during ath12k_mac_update_vif_chan
    
    [ Upstream commit 8b8b990fe495e9be057249e1651b59b5ebacf2ef ]
    
    Fix WARN_ON() from ath12k_mac_update_vif_chan() if vdev is not up.
    Since change_chanctx can be called even before vdev_up.
    
    Do vdev stop followed by a vdev start in case of vdev is down.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0-02903-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Manish Dharanenthiran <quic_mdharane@quicinc.com>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20230802085852.19821-2-quic_mdharane@quicinc.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: brcmfmac: cfg80211: Handle SSID based pmksa deletion [+ + +]
Author: Janne Grunau <j@jannau.net>
Date:   Sat Aug 3 21:52:55 2024 +0200

    wifi: brcmfmac: cfg80211: Handle SSID based pmksa deletion
    
    commit 2ad4e1ada8eebafa2d75a4b75eeeca882de6ada1 upstream.
    
    wpa_supplicant 2.11 sends since 1efdba5fdc2c ("Handle PMKSA flush in the
    driver for SAE/OWE offload cases") SSID based PMKSA del commands.
    brcmfmac is not prepared and tries to dereference the NULL bssid and
    pmkid pointers in cfg80211_pmksa. PMKID_V3 operations support SSID based
    updates so copy the SSID.
    
    Fixes: a96202acaea4 ("wifi: brcmfmac: cfg80211: Add support for PMKID_V3 operations")
    Cc: stable@vger.kernel.org # 6.4.x
    Signed-off-by: Janne Grunau <j@jannau.net>
    Reviewed-by: Neal Gompa <neal@gompa.dev>
    Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://patch.msgid.link/20240803-brcmfmac_pmksa_del_ssid-v1-1-4e85f19135e1@jannau.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: cfg80211: check wiphy mutex is held for wdev mutex [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Aug 28 13:59:56 2023 +0200

    wifi: cfg80211: check wiphy mutex is held for wdev mutex
    
    [ Upstream commit 1474bc87fe57deac726cc10203f73daa6c3212f7 ]
    
    This might seem pretty pointless rather than changing the locking
    immediately, but it seems safer to run for a while with checks and
    the old locking scheme, and then remove the wdev lock later.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: cw1200: Avoid processing an invalid TIM IE [+ + +]
Author: Jeff Johnson <quic_jjohnson@quicinc.com>
Date:   Thu Aug 31 11:22:57 2023 -0700

    wifi: cw1200: Avoid processing an invalid TIM IE
    
    [ Upstream commit b7bcea9c27b3d87b54075735c870500123582145 ]
    
    While converting struct ieee80211_tim_ie::virtual_map to be a flexible
    array it was observed that the TIM IE processing in cw1200_rx_cb()
    could potentially process a malformed IE in a manner that could result
    in a buffer over-read. Add logic to verify that the TIM IE length is
    large enough to hold a valid TIM payload before processing it.
    
    Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/20230831-ieee80211_tim_ie-v3-1-e10ff584ab5d@quicinc.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: abort scan when rfkill on but device enabled [+ + +]
Author: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Date:   Wed Oct 4 12:36:28 2023 +0300

    wifi: iwlwifi: abort scan when rfkill on but device enabled
    
    [ Upstream commit 3c6a0b1f0add72e7f522bc9145222b86d0a7712a ]
    
    In RFKILL we first set the RFKILL bit, then we abort scan
    (if one exists) by waiting for the notification from FW
    and notifying mac80211. And then we stop the device.
    But in case we have a scan ongoing in the period of time between
    rfkill on and before the device is stopped - we will not wait for the
    FW notification because of the iwl_mvm_is_radio_killed() condition,
    and then the scan_status and uid_status are misconfigured,
    (scan_status is cleared but uid_status not)
    and when the notification suddenly arrives (before stopping the device)
    we will get into the assert about scan_status and uid_status mismatch.
    Fix this by waiting for FW notif when rfkill is on but the device isn't
    disabled yet.
    
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
    Link: https://lore.kernel.org/r/20231004123422.c43b69aa2c77.Icc7b5efb47974d6f499156ff7510b786e177993b@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: check for kmemdup() return value in iwl_parse_tlv_firmware() [+ + +]
Author: Dmitry Antipov <dmantipov@yandex.ru>
Date:   Mon Oct 9 20:04:49 2023 +0300

    wifi: iwlwifi: check for kmemdup() return value in iwl_parse_tlv_firmware()
    
    [ Upstream commit 3c8aaaa7557b1e33e6ef95a27a5d8a139dcd0874 ]
    
    In 'iwl_parse_tlv_firmware()', check for 'kmemdup()' return value
    when handling IWL_UCODE_TLV_CURRENT_PC and set the number of parsed
    entries only if an allocation was successful (just like it does with
    handling IWL_UCODE_TLV_CMD_VERSIONS above). Compile tested only.
    
    Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
    Acked-by: Gregory Greenman <gregory.greenman@intel.com>
    Link: https://lore.kernel.org/r/20231009170453.149905-1-dmantipov@yandex.ru
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: fw: Fix debugfs command sending [+ + +]
Author: Mukesh Sisodiya <mukesh.sisodiya@intel.com>
Date:   Wed Oct 4 12:36:32 2023 +0300

    wifi: iwlwifi: fw: Fix debugfs command sending
    
    [ Upstream commit 048449fc666d736a1a17d950fde0b5c5c8fd10cc ]
    
    During debugfs command handling transport function is used directly,
    this bypasses the locking used by runtime operation function
    and leads to a kernel warning when two commands are
    sent in parallel.
    
    Fix it by using runtime operations function when sending
    debugfs command.
    
    Signed-off-by: Mukesh Sisodiya <mukesh.sisodiya@intel.com>
    Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
    Link: https://lore.kernel.org/r/20231004123422.4f80ac90658a.Ia1dfa1195c919f3002fe08db3eefbd2bfa921bbf@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: mvm: avoid garbage iPN [+ + +]
Author: Shaul Triebitz <shaul.triebitz@intel.com>
Date:   Mon Feb 5 21:21:13 2024 +0200

    wifi: iwlwifi: mvm: avoid garbage iPN
    
    [ Upstream commit 0c1c91604f3e3fc41f4d77dcfc3753860a9a32c9 ]
    
    After waking from D3, we set the iPN given by the firmware.
    For some reason, CIPHER_SUITE_AES_CMAC was missed.
    That caused copying garbage to the iPN - causing false replays.
    
    (since 'seq' is on the stack, and the iPN from the firmware
    was not copied into it, it contains garbage which later is
    copied to the iPN key).
    
    Signed-off-by: Shaul Triebitz <shaul.triebitz@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://msgid.link/20240205211151.2be5b35be30f.I99db8700d01092d22a6d76f1fc1bd5916c9df784@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: mvm: fix recovery flow in CSA [+ + +]
Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Date:   Wed Sep 13 14:56:46 2023 +0300

    wifi: iwlwifi: mvm: fix recovery flow in CSA
    
    [ Upstream commit 828c79d9feb000acbd9c15bd1ed7e0914473b363 ]
    
    If the firmware crashes in the de-activation / re-activation
    of the link during CSA, we will not have a valid phy_ctxt
    pointer in mvmvif. This is a legit case, but when mac80211
    removes the station to cleanup our state during the
    re-configuration, we need to make sure we clear ap_sta
    otherwise we won't re-add the station after the firmware has
    been restarted. Later on, we'd activate the link, try to send
    a TLC command crash again on ASSERT 3508.
    
    Fix this by properly cleaning up our state.
    
    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
    Link: https://lore.kernel.org/r/20230913145231.2651e6f6a55a.I4cd50e88ee5c23c1c8dd5b157a800e4b4c96f236@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: fix BA session teardown race [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Tue Aug 29 20:16:11 2023 +0200

    wifi: mac80211: fix BA session teardown race
    
    [ Upstream commit 05f136220d17839eb7c155f015ace9152f603225 ]
    
    As previously reported by Alexander, whose commit 69403bad97aa
    ("wifi: mac80211: sdata can be NULL during AMPDU start") I'm
    reverting as part of this commit, there's a race between station
    destruction and aggregation setup, where the aggregation setup
    can happen while the station is being removed and queue the work
    after ieee80211_sta_tear_down_BA_sessions() has already run in
    __sta_info_destroy_part1(), and thus the worker will run with a
    now freed station. In his case, this manifested in a NULL sdata
    pointer, but really there's no guarantee whatsoever.
    
    The real issue seems to be that it's possible at all to have a
    situation where this occurs - we want to stop the BA sessions
    when doing _part1, but we cannot be sure, and WLAN_STA_BLOCK_BA
    isn't necessarily effective since we don't know that the setup
    isn't concurrently running and already got past the check.
    
    Simply call ieee80211_sta_tear_down_BA_sessions() again in the
    second part of station destruction, since at that point really
    nothing else can hold a reference to the station any more.
    
    Also revert the sdata checks since those are just misleading at
    this point.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: flush STA queues on unauthorization [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Sep 28 17:35:39 2023 +0300

    wifi: mac80211: flush STA queues on unauthorization
    
    [ Upstream commit 06d6af4e1223339bb597b02fa8ad3f979ddb5511 ]
    
    When the station is marked as no longer authorized, we shouldn't
    transmit to it any longer, but in particular we shouldn't be able
    to transmit to it after removing keys, which might lead to frames
    being sent out unencrypted depending on the exact hardware offload
    mechanism. Thus, instead of flushing only on station destruction,
    which covers only some cases, always flush on unauthorization.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
    Link: https://lore.kernel.org/r/20230928172905.d47f528829e7.I96903652c7ee0c5c66891f8b2364383da8e45a1f@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: lock wiphy in IP address notifier [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Aug 28 13:59:41 2023 +0200

    wifi: mac80211: lock wiphy in IP address notifier
    
    [ Upstream commit 730538edc8e0eb14b02708f65100a0deaf43e6cd ]
    
    Lock the wiphy in the IP address notifier as another
    place that should have it locked before calling into
    the driver. This needs a bit of attention since the
    notifier can be called while the wiphy is already
    locked, when we remove an interface. Handle this by
    not running the notifier in this case, and instead
    calling out to the driver directly.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: fix race condition related to checking tx queue fill status [+ + +]
Author: Felix Fietkau <nbd@nbd.name>
Date:   Tue Aug 29 10:39:53 2023 +0200

    wifi: mt76: fix race condition related to checking tx queue fill status
    
    [ Upstream commit 0335c034e7265d36d956e806f33202c94a8a9860 ]
    
    When drv_tx calls race against local tx scheduling, the queue fill status checks
    can potentially race, leading to dma queue entries being overwritten.
    Fix this by deferring packets from drv_tx calls to the tx worker, in order to
    ensure that all regular queue tx comes from the same context.
    
    Reported-by: Ryder Lee <Ryder.Lee@mediatek.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86: Increase brk randomness entropy for 64-bit systems [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Fri Feb 16 22:25:43 2024 -0800

    x86: Increase brk randomness entropy for 64-bit systems
    
    [ Upstream commit 44c76825d6eefee9eb7ce06c38e1a6632ac7eb7d ]
    
    In commit c1d171a00294 ("x86: randomize brk"), arch_randomize_brk() was
    defined to use a 32MB range (13 bits of entropy), but was never increased
    when moving to 64-bit. The default arch_randomize_brk() uses 32MB for
    32-bit tasks, and 1GB (18 bits of entropy) for 64-bit tasks.
    
    Update x86_64 to match the entropy used by arm64 and other 64-bit
    architectures.
    
    Reported-by: y0un9n132@gmail.com
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Jiri Kosina <jkosina@suse.com>
    Closes: https://lore.kernel.org/linux-hardening/CA+2EKTVLvc8hDZc+2Yhwmus=dzOUG5E4gV7ayCbu0MPJTZzWkw@mail.gmail.com/
    Link: https://lore.kernel.org/r/20240217062545.1631668-1-keescook@chromium.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xhci: Fix Panther point NULL pointer deref at full-speed re-enumeration [+ + +]
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Thu Aug 15 17:11:17 2024 +0300

    xhci: Fix Panther point NULL pointer deref at full-speed re-enumeration
    
    commit af8e119f52e9c13e556be9e03f27957554a84656 upstream.
    
    re-enumerating full-speed devices after a failed address device command
    can trigger a NULL pointer dereference.
    
    Full-speed devices may need to reconfigure the endpoint 0 Max Packet Size
    value during enumeration. Usb core calls usb_ep0_reinit() in this case,
    which ends up calling xhci_configure_endpoint().
    
    On Panther point xHC the xhci_configure_endpoint() function will
    additionally check and reserve bandwidth in software. Other hosts do
    this in hardware
    
    If xHC address device command fails then a new xhci_virt_device structure
    is allocated as part of re-enabling the slot, but the bandwidth table
    pointers are not set up properly here.
    This triggers the NULL pointer dereference the next time usb_ep0_reinit()
    is called and xhci_configure_endpoint() tries to check and reserve
    bandwidth
    
    [46710.713538] usb 3-1: new full-speed USB device number 5 using xhci_hcd
    [46710.713699] usb 3-1: Device not responding to setup address.
    [46710.917684] usb 3-1: Device not responding to setup address.
    [46711.125536] usb 3-1: device not accepting address 5, error -71
    [46711.125594] BUG: kernel NULL pointer dereference, address: 0000000000000008
    [46711.125600] #PF: supervisor read access in kernel mode
    [46711.125603] #PF: error_code(0x0000) - not-present page
    [46711.125606] PGD 0 P4D 0
    [46711.125610] Oops: Oops: 0000 [#1] PREEMPT SMP PTI
    [46711.125615] CPU: 1 PID: 25760 Comm: kworker/1:2 Not tainted 6.10.3_2 #1
    [46711.125620] Hardware name: Gigabyte Technology Co., Ltd.
    [46711.125623] Workqueue: usb_hub_wq hub_event [usbcore]
    [46711.125668] RIP: 0010:xhci_reserve_bandwidth (drivers/usb/host/xhci.c
    
    Fix this by making sure bandwidth table pointers are set up correctly
    after a failed address device command, and additionally by avoiding
    checking for bandwidth in cases like this where no actual endpoints are
    added or removed, i.e. only context for default control endpoint 0 is
    evaluated.
    
    Reported-by: Karel Balej <balejk@matfyz.cz>
    Closes: https://lore.kernel.org/linux-usb/D3CKQQAETH47.1MUO22RTCH2O3@matfyz.cz/
    Cc: stable@vger.kernel.org
    Fixes: 651aaf36a7d7 ("usb: xhci: Handle USB transaction error on address command")
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20240815141117.2702314-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>