Changelog in Linux kernel 5.10.234

 
ACPI: resource: Add Asus Vivobook X1504VAP to irq1_level_low_skip_override[] [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Dec 20 19:13:52 2024 +0100

    ACPI: resource: Add Asus Vivobook X1504VAP to irq1_level_low_skip_override[]
    
    commit 66d337fede44dcbab4107d37684af8fcab3d648e upstream.
    
    Like the Vivobook X1704VAP the X1504VAP has its keyboard IRQ (1) described
    as ActiveLow in the DSDT, which the kernel overrides to EdgeHigh which
    breaks the keyboard.
    
    Add the X1504VAP to the irq1_level_low_skip_override[] quirk table to fix
    this.
    
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219224
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://patch.msgid.link/20241220181352.25974-1-hdegoede@redhat.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ACPI: resource: Add TongFang GM5HG0A to irq1_edge_low_force_override[] [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sat Dec 28 17:48:45 2024 +0100

    ACPI: resource: Add TongFang GM5HG0A to irq1_edge_low_force_override[]
    
    commit 7ed4e4a659d99499dc6968c61970d41b64feeac0 upstream.
    
    The TongFang GM5HG0A is a TongFang barebone design which is sold under
    various brand names.
    
    The ACPI IRQ override for the keyboard IRQ must be used on these AMD Zen
    laptops in order for the IRQ to work.
    
    At least on the SKIKK Vanaheim variant the DMI product- and board-name
    strings have been replaced by the OEM with "Vanaheim" so checking that
    board-name contains "GM5HG0A" as is usually done for TongFang barebones
    quirks does not work.
    
    The DMI OEM strings do contain "GM5HG0A". I have looked at the dmidecode
    for a few other TongFang devices and the TongFang code-name string being
    in the OEM strings seems to be something which is consistently true.
    
    Add a quirk checking one of the DMI_OEM_STRING(s) is "GM5HG0A" in the hope
    that this will work for other OEM versions of the "GM5HG0A" too.
    
    Link: https://www.skikk.eu/en/laptops/vanaheim-15-rtx-4060
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219614
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://patch.msgid.link/20241228164845.42381-1-hdegoede@redhat.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
afs: Fix the maximum cell name length [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Mon Jan 6 16:21:00 2025 +0000

    afs: Fix the maximum cell name length
    
    [ Upstream commit 8fd56ad6e7c90ac2bddb0741c6b248c8c5d56ac8 ]
    
    The kafs filesystem limits the maximum length of a cell to 256 bytes, but a
    problem occurs if someone actually does that: kafs tries to create a
    directory under /proc/net/afs/ with the name of the cell, but that fails
    with a warning:
    
            WARNING: CPU: 0 PID: 9 at fs/proc/generic.c:405
    
    because procfs limits the maximum filename length to 255.
    
    However, the DNS limits the maximum lookup length and, by extension, the
    maximum cell name, to 255 less two (length count and trailing NUL).
    
    Fix this by limiting the maximum acceptable cellname length to 253.  This
    also allows us to be sure we can create the "/afs/.<cell>/" mountpoint too.
    
    Further, split the YFS VL record cell name maximum to be the 256 allowed by
    the protocol and ignore the record retrieved by YFSVL.GetCellName if it
    exceeds 253.
    
    Fixes: c3e9f888263b ("afs: Implement client support for the YFSVL.GetCellName RPC op")
    Reported-by: syzbot+7848fee1f1e5c53f912b@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/r/6776d25d.050a0220.3a8527.0048.GAE@google.com/
    Signed-off-by: David Howells <dhowells@redhat.com>
    Link: https://lore.kernel.org/r/376236.1736180460@warthog.procyon.org.uk
    Tested-by: syzbot+7848fee1f1e5c53f912b@syzkaller.appspotmail.com
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
arm64: dts: rockchip: add #power-domain-cells to power domain nodes [+ + +]
Author: Johan Jonker <jbx6244@gmail.com>
Date:   Sat Apr 17 13:29:45 2021 +0200

    arm64: dts: rockchip: add #power-domain-cells to power domain nodes
    
    [ Upstream commit 837188d49823230f47afdbbec7556740e89a8557 ]
    
    Add #power-domain-cells to power domain nodes, because they
    are required by power-domain.yaml
    
    Signed-off-by: Johan Jonker <jbx6244@gmail.com>
    Link: https://lore.kernel.org/r/20210417112952.8516-9-jbx6244@gmail.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Stable-dep-of: 3699f2c43ea9 ("arm64: dts: rockchip: add hevc power domain clock to rk3328")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: add hevc power domain clock to rk3328 [+ + +]
Author: Peter Geis <pgwipeout@gmail.com>
Date:   Sat Dec 14 22:43:39 2024 +0000

    arm64: dts: rockchip: add hevc power domain clock to rk3328
    
    [ Upstream commit 3699f2c43ea9984e00d70463f8c29baaf260ea97 ]
    
    There is a race condition at startup between disabling power domains not
    used and disabling clocks not used on the rk3328. When the clocks are
    disabled first, the hevc power domain fails to shut off leading to a
    splat of failures. Add the hevc core clock to the rk3328 power domain
    node to prevent this condition.
    
    rcu: INFO: rcu_sched detected expedited stalls on CPUs/tasks: { 3-.... }
    1087 jiffies s: 89 root: 0x8/.
    rcu: blocking rcu_node structures (internal RCU debug):
    Sending NMI from CPU 0 to CPUs 3:
    NMI backtrace for cpu 3
    CPU: 3 UID: 0 PID: 86 Comm: kworker/3:3 Not tainted 6.12.0-rc5+ #53
    Hardware name: Firefly ROC-RK3328-CC (DT)
    Workqueue: pm genpd_power_off_work_fn
    pstate: 20400005 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : regmap_unlock_spinlock+0x18/0x30
    lr : regmap_read+0x60/0x88
    sp : ffff800081123c00
    x29: ffff800081123c00 x28: ffff2fa4c62cad80 x27: 0000000000000000
    x26: ffffd74e6e660eb8 x25: ffff2fa4c62cae00 x24: 0000000000000040
    x23: ffffd74e6d2f3ab8 x22: 0000000000000001 x21: ffff800081123c74
    x20: 0000000000000000 x19: ffff2fa4c0412000 x18: 0000000000000000
    x17: 77202c31203d2065 x16: 6c6469203a72656c x15: 6c6f72746e6f632d
    x14: 7265776f703a6e6f x13: 2063766568206e69 x12: 616d6f64202c3431
    x11: 347830206f742030 x10: 3430303034783020 x9 : ffffd74e6c7369e0
    x8 : 3030316666206e69 x7 : 205d383738353733 x6 : 332e31202020205b
    x5 : ffffd74e6c73fc88 x4 : ffffd74e6c73fcd4 x3 : ffffd74e6c740b40
    x2 : ffff800080015484 x1 : 0000000000000000 x0 : ffff2fa4c0412000
    Call trace:
    regmap_unlock_spinlock+0x18/0x30
    rockchip_pmu_set_idle_request+0xac/0x2c0
    rockchip_pd_power+0x144/0x5f8
    rockchip_pd_power_off+0x1c/0x30
    _genpd_power_off+0x9c/0x180
    genpd_power_off.part.0.isra.0+0x130/0x2a8
    genpd_power_off_work_fn+0x6c/0x98
    process_one_work+0x170/0x3f0
    worker_thread+0x290/0x4a8
    kthread+0xec/0xf8
    ret_from_fork+0x10/0x20
    rockchip-pm-domain ff100000.syscon:power-controller: failed to get ack on domain 'hevc', val=0x88220
    
    Fixes: 52e02d377a72 ("arm64: dts: rockchip: add core dtsi file for RK3328 SoCs")
    Signed-off-by: Peter Geis <pgwipeout@gmail.com>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Link: https://lore.kernel.org/r/20241214224339.24674-1-pgwipeout@gmail.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ASoC: mediatek: disable buffer pre-allocation [+ + +]
Author: Chen-Yu Tsai <wenst@chromium.org>
Date:   Thu Dec 19 18:53:02 2024 +0800

    ASoC: mediatek: disable buffer pre-allocation
    
    [ Upstream commit 32c9c06adb5b157ef259233775a063a43746d699 ]
    
    On Chromebooks based on Mediatek MT8195 or MT8188, the audio frontend
    (AFE) is limited to accessing a very small window (1 MiB) of memory,
    which is described as a reserved memory region in the device tree.
    
    On these two platforms, the maximum buffer size is given as 512 KiB.
    The MediaTek common code uses the same value for preallocations. This
    means that only the first two PCM substreams get preallocations, and
    then the whole space is exhausted, barring any other substreams from
    working. Since the substreams used are not always the first two, this
    means audio won't work correctly.
    
    This is observed on the MT8188 Geralt Chromebooks, on which the
    "mediatek,dai-link" property was dropped when it was upstreamed. That
    property causes the driver to only register the PCM substreams listed
    in the property, and in the order given.
    
    Instead of trying to compute an optimal value and figuring out which
    streams are used, simply disable preallocation. The PCM buffers are
    managed by the core and are allocated and released on the fly. There
    should be no impact to any of the other MediaTek platforms.
    
    Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://patch.msgid.link/20241219105303.548437-1-wenst@chromium.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: samsung: Add missing depends on I2C [+ + +]
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Wed Jan 8 13:48:28 2025 +0000

    ASoC: samsung: Add missing depends on I2C
    
    [ Upstream commit 704dbe97a68153a84319ad63f526e12ba868b88e ]
    
    When switching to selects for MFD_WM8994 a dependency should have also
    been added for I2C, as the dependency on MFD_WM8994 will not be
    considered by the select.
    
    Fixes: fd55c6065bec ("ASoC: samsung: Add missing selects for MFD_WM8994")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202501082020.2bpGGVTW-lkp@intel.com/
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://patch.msgid.link/20250108134828.246570-1-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: samsung: Add missing selects for MFD_WM8994 [+ + +]
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Tue Jan 7 10:41:34 2025 +0000

    ASoC: samsung: Add missing selects for MFD_WM8994
    
    [ Upstream commit fd55c6065bec5268740e944a1800e6fad00974d9 ]
    
    Anything selecting SND_SOC_WM8994 should also select MFD_WM8994, as
    SND_SOC_WM8994 does not automatically do so. Add the missing selects.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202501071530.UwIXs7OL-lkp@intel.com/
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://patch.msgid.link/20250107104134.12147-1-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: wm8994: Add depends on MFD core [+ + +]
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Mon Jan 6 15:46:39 2025 +0000

    ASoC: wm8994: Add depends on MFD core
    
    [ Upstream commit 5ed01155cea69801f1f0c908954a56a5a3474bed ]
    
    The ASoC driver should not be used without the MFD component. This was
    causing randconfig issues with regmap IRQ which is selected by the MFD
    part of the wm8994 driver.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202501061337.R0DlBUoD-lkp@intel.com/
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://patch.msgid.link/20250106154639.3999553-1-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
blk-cgroup: Fix UAF in blkcg_unpin_online() [+ + +]
Author: Tejun Heo <tj@kernel.org>
Date:   Fri Dec 6 07:59:51 2024 -1000

    blk-cgroup: Fix UAF in blkcg_unpin_online()
    
    commit 86e6ca55b83c575ab0f2e105cf08f98e58d3d7af upstream.
    
    blkcg_unpin_online() walks up the blkcg hierarchy putting the online pin. To
    walk up, it uses blkcg_parent(blkcg) but it was calling that after
    blkcg_destroy_blkgs(blkcg) which could free the blkcg, leading to the
    following UAF:
    
      ==================================================================
      BUG: KASAN: slab-use-after-free in blkcg_unpin_online+0x15a/0x270
      Read of size 8 at addr ffff8881057678c0 by task kworker/9:1/117
    
      CPU: 9 UID: 0 PID: 117 Comm: kworker/9:1 Not tainted 6.13.0-rc1-work-00182-gb8f52214c61a-dirty #48
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS unknown 02/02/2022
      Workqueue: cgwb_release cgwb_release_workfn
      Call Trace:
       <TASK>
       dump_stack_lvl+0x27/0x80
       print_report+0x151/0x710
       kasan_report+0xc0/0x100
       blkcg_unpin_online+0x15a/0x270
       cgwb_release_workfn+0x194/0x480
       process_scheduled_works+0x71b/0xe20
       worker_thread+0x82a/0xbd0
       kthread+0x242/0x2c0
       ret_from_fork+0x33/0x70
       ret_from_fork_asm+0x1a/0x30
       </TASK>
      ...
      Freed by task 1944:
       kasan_save_track+0x2b/0x70
       kasan_save_free_info+0x3c/0x50
       __kasan_slab_free+0x33/0x50
       kfree+0x10c/0x330
       css_free_rwork_fn+0xe6/0xb30
       process_scheduled_works+0x71b/0xe20
       worker_thread+0x82a/0xbd0
       kthread+0x242/0x2c0
       ret_from_fork+0x33/0x70
       ret_from_fork_asm+0x1a/0x30
    
    Note that the UAF is not easy to trigger as the free path is indirected
    behind a couple RCU grace periods and a work item execution. I could only
    trigger it with artifical msleep() injected in blkcg_unpin_online().
    
    Fix it by reading the parent pointer before destroying the blkcg's blkg's.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Abagail ren <renzezhongucas@gmail.com>
    Suggested-by: Linus Torvalds <torvalds@linuxfoundation.org>
    Fixes: 4308a434e5e0 ("blkcg: don't offline parent blkcg first")
    Cc: stable@vger.kernel.org # v5.7+
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
block: remove the update_bdev parameter to set_capacity_revalidate_and_notify [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Nov 16 15:56:56 2020 +0100

    block: remove the update_bdev parameter to set_capacity_revalidate_and_notify
    
    [ Upstream commit 449f4ec9892ebc2f37a7eae6d97db2cf7c65e09a ]
    
    The update_bdev argument is always set to true, so remove it.  Also
    rename the function to the slighly less verbose set_capacity_and_notify,
    as propagating the disk size to the block device isn't really
    revalidation.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Petr Vorel <pvorel@suse.cz>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: 74363ec674cb ("zram: fix uninitialized ZRAM not releasing backing device")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Bluetooth: RFCOMM: Fix not validating setsockopt user input [+ + +]
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date:   Fri Apr 5 15:43:45 2024 -0400

    Bluetooth: RFCOMM: Fix not validating setsockopt user input
    
    commit a97de7bff13b1cc825c1b1344eaed8d6c2d3e695 upstream.
    
    syzbot reported rfcomm_sock_setsockopt_old() is copying data without
    checking user input length.
    
    BUG: KASAN: slab-out-of-bounds in copy_from_sockptr_offset
    include/linux/sockptr.h:49 [inline]
    BUG: KASAN: slab-out-of-bounds in copy_from_sockptr
    include/linux/sockptr.h:55 [inline]
    BUG: KASAN: slab-out-of-bounds in rfcomm_sock_setsockopt_old
    net/bluetooth/rfcomm/sock.c:632 [inline]
    BUG: KASAN: slab-out-of-bounds in rfcomm_sock_setsockopt+0x893/0xa70
    net/bluetooth/rfcomm/sock.c:673
    Read of size 4 at addr ffff8880209a8bc3 by task syz-executor632/5064
    
    Fixes: 9f2c8a03fbb3 ("Bluetooth: Replace RFCOMM link mode with security level")
    Fixes: bb23c0ab8246 ("Bluetooth: Add support for deferring RFCOMM connection setup")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Keerthana K <keerthana.kalyanasundaram@broadcom.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
bpf: Fix bpf_sk_select_reuseport() memory leak [+ + +]
Author: Michal Luczaj <mhal@rbox.co>
Date:   Fri Jan 10 14:21:55 2025 +0100

    bpf: Fix bpf_sk_select_reuseport() memory leak
    
    [ Upstream commit b3af60928ab9129befa65e6df0310d27300942bf ]
    
    As pointed out in the original comment, lookup in sockmap can return a TCP
    ESTABLISHED socket. Such TCP socket may have had SO_ATTACH_REUSEPORT_EBPF
    set before it was ESTABLISHED. In other words, a non-NULL sk_reuseport_cb
    does not imply a non-refcounted socket.
    
    Drop sk's reference in both error paths.
    
    unreferenced object 0xffff888101911800 (size 2048):
      comm "test_progs", pid 44109, jiffies 4297131437
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        80 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace (crc 9336483b):
        __kmalloc_noprof+0x3bf/0x560
        __reuseport_alloc+0x1d/0x40
        reuseport_alloc+0xca/0x150
        reuseport_attach_prog+0x87/0x140
        sk_reuseport_attach_bpf+0xc8/0x100
        sk_setsockopt+0x1181/0x1990
        do_sock_setsockopt+0x12b/0x160
        __sys_setsockopt+0x7b/0xc0
        __x64_sys_setsockopt+0x1b/0x30
        do_syscall_64+0x93/0x180
        entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    Fixes: 64d85290d79c ("bpf: Allow bpf_map_lookup_elem for SOCKMAP and SOCKHASH")
    Signed-off-by: Michal Luczaj <mhal@rbox.co>
    Reviewed-by: Martin KaFai Lau <martin.lau@kernel.org>
    Link: https://patch.msgid.link/20250110-reuseport-memleak-v1-1-fa1ddab0adfe@rbox.co
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ceph: give up on paths longer than PATH_MAX [+ + +]
Author: Max Kellermann <max.kellermann@ionos.com>
Date:   Mon Nov 18 23:28:28 2024 +0100

    ceph: give up on paths longer than PATH_MAX
    
    commit 550f7ca98ee028a606aa75705a7e77b1bd11720f upstream.
    
    If the full path to be built by ceph_mdsc_build_path() happens to be
    longer than PATH_MAX, then this function will enter an endless (retry)
    loop, effectively blocking the whole task.  Most of the machine
    becomes unusable, making this a very simple and effective DoS
    vulnerability.
    
    I cannot imagine why this retry was ever implemented, but it seems
    rather useless and harmful to me.  Let's remove it and fail with
    ENAMETOOLONG instead.
    
    Cc: stable@vger.kernel.org
    Reported-by: Dario Weißer <dario@cure53.de>
    Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
    Reviewed-by: Alex Markuze <amarkuze@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    [idryomov@gmail.com: backport to 6.1: pr_warn() is still in use]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
cxgb4: Avoid removal of uninserted tid [+ + +]
Author: Anumula Murali Mohan Reddy <anumula@chelsio.com>
Date:   Fri Jan 3 14:53:27 2025 +0530

    cxgb4: Avoid removal of uninserted tid
    
    [ Upstream commit 4c1224501e9d6c5fd12d83752f1c1b444e0e3418 ]
    
    During ARP failure, tid is not inserted but _c4iw_free_ep()
    attempts to remove tid which results in error.
    This patch fixes the issue by avoiding removal of uninserted tid.
    
    Fixes: 59437d78f088 ("cxgb4/chtls: fix ULD connection failures due to wrong TID base")
    Signed-off-by: Anumula Murali Mohan Reddy <anumula@chelsio.com>
    Signed-off-by: Potnuri Bharat Teja <bharat@chelsio.com>
    Link: https://patch.msgid.link/20250103092327.1011925-1-anumula@chelsio.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm array: fix cursor index when skipping across block boundaries [+ + +]
Author: Ming-Hung Tsai <mtsai@redhat.com>
Date:   Thu Dec 5 19:41:53 2024 +0800

    dm array: fix cursor index when skipping across block boundaries
    
    [ Upstream commit 0bb1968da2737ba68fd63857d1af2b301a18d3bf ]
    
    dm_array_cursor_skip() seeks to the target position by loading array
    blocks iteratively until the specified number of entries to skip is
    reached. When seeking across block boundaries, it uses
    dm_array_cursor_next() to step into the next block.
    dm_array_cursor_skip() must first move the cursor index to the end
    of the current block; otherwise, the cursor position could incorrectly
    remain in the same block, causing the actual number of skipped entries
    to be much smaller than expected.
    
    This bug affects cache resizing in v2 metadata and could lead to data
    loss if the fast device is shrunk during the first-time resume. For
    example:
    
    1. create a cache metadata consists of 32768 blocks, with a dirty block
       assigned to the second bitmap block. cache_restore v1.0 is required.
    
    cat <<EOF >> cmeta.xml
    <superblock uuid="" block_size="64" nr_cache_blocks="32768" \
    policy="smq" hint_width="4">
      <mappings>
        <mapping cache_block="32767" origin_block="0" dirty="true"/>
      </mappings>
    </superblock>
    EOF
    dmsetup create cmeta --table "0 8192 linear /dev/sdc 0"
    cache_restore -i cmeta.xml -o /dev/mapper/cmeta --metadata-version=2
    
    2. bring up the cache while attempt to discard all the blocks belonging
       to the second bitmap block (block# 32576 to 32767). The last command
       is expected to fail, but it actually succeeds.
    
    dmsetup create cdata --table "0 2084864 linear /dev/sdc 8192"
    dmsetup create corig --table "0 65536 linear /dev/sdc 2105344"
    dmsetup create cache --table "0 65536 cache /dev/mapper/cmeta \
    /dev/mapper/cdata /dev/mapper/corig 64 2 metadata2 writeback smq \
    2 migration_threshold 0"
    
    In addition to the reproducer described above, this fix can be
    verified using the "array_cursor/skip" tests in dm-unit:
      dm-unit run /pdata/array_cursor/skip/ --kernel-dir <KERNEL_DIR>
    
    Signed-off-by: Ming-Hung Tsai <mtsai@redhat.com>
    Fixes: 9b696229aa7d ("dm persistent data: add cursor skip functions to the cursor APIs")
    Reviewed-by: Joe Thornber <thornber@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dm array: fix releasing a faulty array block twice in dm_array_cursor_end [+ + +]
Author: Ming-Hung Tsai <mtsai@redhat.com>
Date:   Thu Dec 5 19:41:51 2024 +0800

    dm array: fix releasing a faulty array block twice in dm_array_cursor_end
    
    [ Upstream commit f2893c0804d86230ffb8f1c8703fdbb18648abc8 ]
    
    When dm_bm_read_lock() fails due to locking or checksum errors, it
    releases the faulty block implicitly while leaving an invalid output
    pointer behind. The caller of dm_bm_read_lock() should not operate on
    this invalid dm_block pointer, or it will lead to undefined result.
    For example, the dm_array_cursor incorrectly caches the invalid pointer
    on reading a faulty array block, causing a double release in
    dm_array_cursor_end(), then hitting the BUG_ON in dm-bufio cache_put().
    
    Reproduce steps:
    
    1. initialize a cache device
    
    dmsetup create cmeta --table "0 8192 linear /dev/sdc 0"
    dmsetup create cdata --table "0 65536 linear /dev/sdc 8192"
    dmsetup create corig --table "0 524288 linear /dev/sdc $262144"
    dd if=/dev/zero of=/dev/mapper/cmeta bs=4k count=1
    dmsetup create cache --table "0 524288 cache /dev/mapper/cmeta \
    /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0"
    
    2. wipe the second array block offline
    
    dmsteup remove cache cmeta cdata corig
    mapping_root=$(dd if=/dev/sdc bs=1c count=8 skip=192 \
    2>/dev/null | hexdump -e '1/8 "%u\n"')
    ablock=$(dd if=/dev/sdc bs=1c count=8 skip=$((4096*mapping_root+2056)) \
    2>/dev/null | hexdump -e '1/8 "%u\n"')
    dd if=/dev/zero of=/dev/sdc bs=4k count=1 seek=$ablock
    
    3. try reopen the cache device
    
    dmsetup create cmeta --table "0 8192 linear /dev/sdc 0"
    dmsetup create cdata --table "0 65536 linear /dev/sdc 8192"
    dmsetup create corig --table "0 524288 linear /dev/sdc $262144"
    dmsetup create cache --table "0 524288 cache /dev/mapper/cmeta \
    /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0"
    
    Kernel logs:
    
    (snip)
    device-mapper: array: array_block_check failed: blocknr 0 != wanted 10
    device-mapper: block manager: array validator check failed for block 10
    device-mapper: array: get_ablock failed
    device-mapper: cache metadata: dm_array_cursor_next for mapping failed
    ------------[ cut here ]------------
    kernel BUG at drivers/md/dm-bufio.c:638!
    
    Fix by setting the cached block pointer to NULL on errors.
    
    In addition to the reproducer described above, this fix can be
    verified using the "array_cursor/damaged" test in dm-unit:
      dm-unit run /pdata/array_cursor/damaged --kernel-dir <KERNEL_DIR>
    
    Signed-off-by: Ming-Hung Tsai <mtsai@redhat.com>
    Fixes: fdd1315aa5f0 ("dm array: introduce cursor api")
    Reviewed-by: Joe Thornber <thornber@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dm array: fix unreleased btree blocks on closing a faulty array cursor [+ + +]
Author: Ming-Hung Tsai <mtsai@redhat.com>
Date:   Thu Dec 5 19:41:52 2024 +0800

    dm array: fix unreleased btree blocks on closing a faulty array cursor
    
    [ Upstream commit 626f128ee9c4133b1cfce4be2b34a1508949370e ]
    
    The cached block pointer in dm_array_cursor might be NULL if it reaches
    an unreadable array block, or the array is empty. Therefore,
    dm_array_cursor_end() should call dm_btree_cursor_end() unconditionally,
    to prevent leaving unreleased btree blocks.
    
    This fix can be verified using the "array_cursor/iterate/empty" test
    in dm-unit:
      dm-unit run /pdata/array_cursor/iterate/empty --kernel-dir <KERNEL_DIR>
    
    Signed-off-by: Ming-Hung Tsai <mtsai@redhat.com>
    Fixes: fdd1315aa5f0 ("dm array: introduce cursor api")
    Reviewed-by: Joe Thornber <thornber@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm thin: make get_first_thin use rcu-safe list first function [+ + +]
Author: Krister Johansen <kjlx@templeofstupid.com>
Date:   Tue Jan 7 15:24:58 2025 -0800

    dm thin: make get_first_thin use rcu-safe list first function
    
    commit 80f130bfad1dab93b95683fc39b87235682b8f72 upstream.
    
    The documentation in rculist.h explains the absence of list_empty_rcu()
    and cautions programmers against relying on a list_empty() ->
    list_first() sequence in RCU safe code.  This is because each of these
    functions performs its own READ_ONCE() of the list head.  This can lead
    to a situation where the list_empty() sees a valid list entry, but the
    subsequent list_first() sees a different view of list head state after a
    modification.
    
    In the case of dm-thin, this author had a production box crash from a GP
    fault in the process_deferred_bios path.  This function saw a valid list
    head in get_first_thin() but when it subsequently dereferenced that and
    turned it into a thin_c, it got the inside of the struct pool, since the
    list was now empty and referring to itself.  The kernel on which this
    occurred printed both a warning about a refcount_t being saturated, and
    a UBSAN error for an out-of-bounds cpuid access in the queued spinlock,
    prior to the fault itself.  When the resulting kdump was examined, it
    was possible to see another thread patiently waiting in thin_dtr's
    synchronize_rcu.
    
    The thin_dtr call managed to pull the thin_c out of the active thins
    list (and have it be the last entry in the active_thins list) at just
    the wrong moment which lead to this crash.
    
    Fortunately, the fix here is straight forward.  Switch get_first_thin()
    function to use list_first_or_null_rcu() which performs just a single
    READ_ONCE() and returns NULL if the list is already empty.
    
    This was run against the devicemapper test suite's thin-provisioning
    suites for delete and suspend and no regressions were observed.
    
    Signed-off-by: Krister Johansen <kjlx@templeofstupid.com>
    Fixes: b10ebd34ccca ("dm thin: fix rcu_read_lock being held in code that can sleep")
    Cc: stable@vger.kernel.org
    Acked-by: Ming-Hung Tsai <mtsai@redhat.com>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dm-ebs: don't set the flag DM_TARGET_PASSES_INTEGRITY [+ + +]
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue Jan 7 17:47:01 2025 +0100

    dm-ebs: don't set the flag DM_TARGET_PASSES_INTEGRITY
    
    commit 47f33c27fc9565fb0bc7dfb76be08d445cd3d236 upstream.
    
    dm-ebs uses dm-bufio to process requests that are not aligned on logical
    sector size. dm-bufio doesn't support passing integrity data (and it is
    unclear how should it do it), so we shouldn't set the
    DM_TARGET_PASSES_INTEGRITY flag.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: d3c7b35c20d6 ("dm: add emulated block size target")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amd/display: Add check for granularity in dml ceil/floor helpers [+ + +]
Author: Roman Li <Roman.Li@amd.com>
Date:   Fri Dec 13 13:51:07 2024 -0500

    drm/amd/display: Add check for granularity in dml ceil/floor helpers
    
    commit 0881fbc4fd62e00a2b8e102725f76d10351b2ea8 upstream.
    
    [Why]
    Wrapper functions for dcn_bw_ceil2() and dcn_bw_floor2()
    should check for granularity is non zero to avoid assert and
    divide-by-zero error in dcn_bw_ functions.
    
    [How]
    Add check for granularity 0.
    
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Reviewed-by: Alvin Lee <alvin.lee2@amd.com>
    Signed-off-by: Roman Li <Roman.Li@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit f6e09701c3eb2ccb8cb0518e0b67f1c69742a4ec)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amd/display: increase MAX_SURFACES to the value supported by hw [+ + +]
Author: Melissa Wen <mwen@igalia.com>
Date:   Tue Dec 17 17:45:04 2024 -0300

    drm/amd/display: increase MAX_SURFACES to the value supported by hw
    
    commit 21541bc6b44241e3f791f9e552352d8440b2b29e upstream.
    
    As the hw supports up to 4 surfaces, increase the maximum number of
    surfaces to prevent the DC error when trying to use more than three
    planes.
    
    [drm:dc_state_add_plane [amdgpu]] *ERROR* Surface: can not attach plane_state 000000003e2cb82c! Maximum is: 3
    
    Link: https://gitlab.freedesktop.org/drm/amd/-/issues/3693
    Signed-off-by: Melissa Wen <mwen@igalia.com>
    Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit b8d6daffc871a42026c3c20bff7b8fa0302298c1)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/bridge: adv7533: Switch to devm MIPI-DSI helpers [+ + +]
Author: Maxime Ripard <mripard@kernel.org>
Date:   Mon Oct 25 17:15:16 2021 +0200

    drm/bridge: adv7533: Switch to devm MIPI-DSI helpers
    
    [ Upstream commit ee9418808bcce77e2c31dbbfc58621ea99a05597 ]
    
    Let's switch to the new devm MIPI-DSI function to register and attach
    our secondary device. This also avoids leaking the device when we detach
    the bridge.
    
    Acked-by: Sam Ravnborg <sam@ravnborg.org>
    Tested-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211025151536.1048186-2-maxime@cerno.tech
    Stable-dep-of: 81adbd3ff21c ("drm: adv7511: Fix use-after-free in adv7533_attach_dsi()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/mipi-dsi: Create devm device attachment [+ + +]
Author: Maxime Ripard <mripard@kernel.org>
Date:   Fri Sep 10 12:11:58 2021 +0200

    drm/mipi-dsi: Create devm device attachment
    
    [ Upstream commit db6568498b35a4d5d5a99420df27ed25fae31406 ]
    
    MIPI-DSI devices need to call mipi_dsi_attach() when their probe is done
    to attach against their host.
    
    However, at removal or when an error occurs, that attachment needs to be
    undone through a call to mipi_dsi_detach().
    
    Let's create a device-managed variant of the attachment function that
    will automatically detach the device at unbind.
    
    Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210910101218.1632297-5-maxime@cerno.tech
    Stable-dep-of: 81adbd3ff21c ("drm: adv7511: Fix use-after-free in adv7533_attach_dsi()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/mipi-dsi: Create devm device registration [+ + +]
Author: Maxime Ripard <mripard@kernel.org>
Date:   Fri Sep 10 12:11:57 2021 +0200

    drm/mipi-dsi: Create devm device registration
    
    [ Upstream commit a1419fb4a73e47f0eab2985dff594ed52397471b ]
    
    Devices that take their data through the MIPI-DSI bus but are controlled
    through a secondary bus like I2C have to register a secondary device on
    the MIPI-DSI bus through the mipi_dsi_device_register_full() function.
    
    At removal or when an error occurs, that device needs to be removed
    through a call to mipi_dsi_device_unregister().
    
    Let's create a device-managed variant of the registration function that
    will automatically unregister the device at unbind.
    
    Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210910101218.1632297-4-maxime@cerno.tech
    Stable-dep-of: 81adbd3ff21c ("drm: adv7511: Fix use-after-free in adv7533_attach_dsi()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

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

    drm/radeon: check bo_va->bo is non-NULL before using it
    
    commit 6fb15dcbcf4f212930350eaee174bb60ed40a536 upstream.
    
    The call to radeon_vm_clear_freed might clear bo_va->bo, so
    we have to check it before dereferencing it.
    
    Signed-off-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/v3d: Assign job pointer to NULL before signaling the fence [+ + +]
Author: Maíra Canal <mcanal@igalia.com>
Date:   Wed Jan 22 22:24:03 2025 -0300

    drm/v3d: Assign job pointer to NULL before signaling the fence
    
    commit 6e64d6b3a3c39655de56682ec83e894978d23412 upstream.
    
    In commit e4b5ccd392b9 ("drm/v3d: Ensure job pointer is set to NULL
    after job completion"), we introduced a change to assign the job pointer
    to NULL after completing a job, indicating job completion.
    
    However, this approach created a race condition between the DRM
    scheduler workqueue and the IRQ execution thread. As soon as the fence is
    signaled in the IRQ execution thread, a new job starts to be executed.
    This results in a race condition where the IRQ execution thread sets the
    job pointer to NULL simultaneously as the `run_job()` function assigns
    a new job to the pointer.
    
    This race condition can lead to a NULL pointer dereference if the IRQ
    execution thread sets the job pointer to NULL after `run_job()` assigns
    it to the new job. When the new job completes and the GPU emits an
    interrupt, `v3d_irq()` is triggered, potentially causing a crash.
    
    [  466.310099] Unable to handle kernel NULL pointer dereference at virtual address 00000000000000c0
    [  466.318928] Mem abort info:
    [  466.321723]   ESR = 0x0000000096000005
    [  466.325479]   EC = 0x25: DABT (current EL), IL = 32 bits
    [  466.330807]   SET = 0, FnV = 0
    [  466.333864]   EA = 0, S1PTW = 0
    [  466.337010]   FSC = 0x05: level 1 translation fault
    [  466.341900] Data abort info:
    [  466.344783]   ISV = 0, ISS = 0x00000005, ISS2 = 0x00000000
    [  466.350285]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
    [  466.355350]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
    [  466.360677] user pgtable: 4k pages, 39-bit VAs, pgdp=0000000089772000
    [  466.367140] [00000000000000c0] pgd=0000000000000000, p4d=0000000000000000, pud=0000000000000000
    [  466.375875] Internal error: Oops: 0000000096000005 [#1] PREEMPT SMP
    [  466.382163] Modules linked in: rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device algif_hash algif_skcipher af_alg bnep binfmt_misc vc4 snd_soc_hdmi_codec drm_display_helper cec brcmfmac_wcc spidev rpivid_hevc(C) drm_client_lib brcmfmac hci_uart drm_dma_helper pisp_be btbcm brcmutil snd_soc_core aes_ce_blk v4l2_mem2mem bluetooth aes_ce_cipher snd_compress videobuf2_dma_contig ghash_ce cfg80211 gf128mul snd_pcm_dmaengine videobuf2_memops ecdh_generic sha2_ce ecc videobuf2_v4l2 snd_pcm v3d sha256_arm64 rfkill videodev snd_timer sha1_ce libaes gpu_sched snd videobuf2_common sha1_generic drm_shmem_helper mc rp1_pio drm_kms_helper raspberrypi_hwmon spi_bcm2835 gpio_keys i2c_brcmstb rp1 raspberrypi_gpiomem rp1_mailbox rp1_adc nvmem_rmem uio_pdrv_genirq uio i2c_dev drm ledtrig_pattern drm_panel_orientation_quirks backlight fuse dm_mod ip_tables x_tables ipv6
    [  466.458429] CPU: 0 UID: 1000 PID: 2008 Comm: chromium Tainted: G         C         6.13.0-v8+ #18
    [  466.467336] Tainted: [C]=CRAP
    [  466.470306] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
    [  466.476157] pstate: 404000c9 (nZcv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [  466.483143] pc : v3d_irq+0x118/0x2e0 [v3d]
    [  466.487258] lr : __handle_irq_event_percpu+0x60/0x228
    [  466.492327] sp : ffffffc080003ea0
    [  466.495646] x29: ffffffc080003ea0 x28: ffffff80c0c94200 x27: 0000000000000000
    [  466.502807] x26: ffffffd08dd81d7b x25: ffffff80c0c94200 x24: ffffff8003bdc200
    [  466.509969] x23: 0000000000000001 x22: 00000000000000a7 x21: 0000000000000000
    [  466.517130] x20: ffffff8041bb0000 x19: 0000000000000001 x18: 0000000000000000
    [  466.524291] x17: ffffffafadfb0000 x16: ffffffc080000000 x15: 0000000000000000
    [  466.531452] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
    [  466.538613] x11: 0000000000000000 x10: 0000000000000000 x9 : ffffffd08c527eb0
    [  466.545777] x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000000000
    [  466.552941] x5 : ffffffd08c4100d0 x4 : ffffffafadfb0000 x3 : ffffffc080003f70
    [  466.560102] x2 : ffffffc0829e8058 x1 : 0000000000000001 x0 : 0000000000000000
    [  466.567263] Call trace:
    [  466.569711]  v3d_irq+0x118/0x2e0 [v3d] (P)
    [  466.573826]  __handle_irq_event_percpu+0x60/0x228
    [  466.578546]  handle_irq_event+0x54/0xb8
    [  466.582391]  handle_fasteoi_irq+0xac/0x240
    [  466.586498]  generic_handle_domain_irq+0x34/0x58
    [  466.591128]  gic_handle_irq+0x48/0xd8
    [  466.594798]  call_on_irq_stack+0x24/0x58
    [  466.598730]  do_interrupt_handler+0x88/0x98
    [  466.602923]  el0_interrupt+0x44/0xc0
    [  466.606508]  __el0_irq_handler_common+0x18/0x28
    [  466.611050]  el0t_64_irq_handler+0x10/0x20
    [  466.615156]  el0t_64_irq+0x198/0x1a0
    [  466.618740] Code: 52800035 3607faf3 f9442e80 52800021 (f9406018)
    [  466.624853] ---[ end trace 0000000000000000 ]---
    [  466.629483] Kernel panic - not syncing: Oops: Fatal exception in interrupt
    [  466.636384] SMP: stopping secondary CPUs
    [  466.640320] Kernel Offset: 0x100c400000 from 0xffffffc080000000
    [  466.646259] PHYS_OFFSET: 0x0
    [  466.649141] CPU features: 0x100,00000170,00901250,0200720b
    [  466.654644] Memory Limit: none
    [  466.657706] ---[ end Kernel panic - not syncing: Oops: Fatal exception in interrupt ]---
    
    Fix the crash by assigning the job pointer to NULL before signaling the
    fence. This ensures that the job pointer is cleared before any new job
    starts execution, preventing the race condition and the NULL pointer
    dereference crash.
    
    Cc: stable@vger.kernel.org
    Fixes: e4b5ccd392b9 ("drm/v3d: Ensure job pointer is set to NULL after job completion")
    Signed-off-by: Maíra Canal <mcanal@igalia.com>
    Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
    Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
    Tested-by: Phil Elwell <phil@raspberrypi.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20250123012403.20447-1-mcanal@igalia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/v3d: Ensure job pointer is set to NULL after job completion [+ + +]
Author: Maíra Canal <mcanal@igalia.com>
Date:   Mon Jan 13 12:47:40 2025 -0300

    drm/v3d: Ensure job pointer is set to NULL after job completion
    
    [ Upstream commit e4b5ccd392b92300a2b341705cc4805681094e49 ]
    
    After a job completes, the corresponding pointer in the device must
    be set to NULL. Failing to do so triggers a warning when unloading
    the driver, as it appears the job is still active. To prevent this,
    assign the job pointer to NULL after completing the job, indicating
    the job has finished.
    
    Fixes: 14d1d1908696 ("drm/v3d: Remove the bad signaled() implementation.")
    Signed-off-by: Maíra Canal <mcanal@igalia.com>
    Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20250113154741.67520-1-mcanal@igalia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm: adv7511: Fix use-after-free in adv7533_attach_dsi() [+ + +]
Author: Biju Das <biju.das.jz@bp.renesas.com>
Date:   Tue Nov 19 19:20:29 2024 +0000

    drm: adv7511: Fix use-after-free in adv7533_attach_dsi()
    
    [ Upstream commit 81adbd3ff21c1182e06aa02c6be0bfd9ea02d8e8 ]
    
    The host_node pointer was assigned and freed in adv7533_parse_dt(), and
    later, adv7533_attach_dsi() uses the same. Fix this use-after-free issue
    by dropping of_node_put() in adv7533_parse_dt() and calling of_node_put()
    in error path of probe() and also in the remove().
    
    Fixes: 1e4d58cd7f88 ("drm/bridge: adv7533: Create a MIPI DSI device")
    Cc: stable@vger.kernel.org
    Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241119192040.152657-2-biju.das.jz@bp.renesas.com
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm: bridge: adv7511: Remove redundant null check before clk_disable_unprepare [+ + +]
Author: Xu Wang <vulab@iscas.ac.cn>
Date:   Fri Nov 27 09:18:29 2020 +0000

    drm: bridge: adv7511: Remove redundant null check before clk_disable_unprepare
    
    [ Upstream commit 3fc5a284213d5fca1c0807ea8725355d39808930 ]
    
    Because clk_disable_unprepare() already checked NULL clock parameter,
    so the additional check is unnecessary, just remove them.
    
    Signed-off-by: Xu Wang <vulab@iscas.ac.cn>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Stable-dep-of: 81adbd3ff21c ("drm: adv7511: Fix use-after-free in adv7533_attach_dsi()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm: bridge: adv7511: unregister cec i2c device after cec adapter [+ + +]
Author: Alvin Šipraga <alsi@bang-olufsen.dk>
Date:   Sun Jun 12 16:48:54 2022 +0200

    drm: bridge: adv7511: unregister cec i2c device after cec adapter
    
    [ Upstream commit 40cdb02cb9f965732eb543d47f15bef8d10f0f5f ]
    
    cec_unregister_adapter() assumes that the underlying adapter ops are
    callable. For example, if the CEC adapter currently has a valid physical
    address, then the unregistration procedure will invalidate the physical
    address by setting it to f.f.f.f. Whence the following kernel oops
    observed after removing the adv7511 module:
    
        Unable to handle kernel execution of user memory at virtual address 0000000000000000
        Internal error: Oops: 86000004 [#1] PREEMPT_RT SMP
        Call trace:
         0x0
         adv7511_cec_adap_log_addr+0x1ac/0x1c8 [adv7511]
         cec_adap_unconfigure+0x44/0x90 [cec]
         __cec_s_phys_addr.part.0+0x68/0x230 [cec]
         __cec_s_phys_addr+0x40/0x50 [cec]
         cec_unregister_adapter+0xb4/0x118 [cec]
         adv7511_remove+0x60/0x90 [adv7511]
         i2c_device_remove+0x34/0xe0
         device_release_driver_internal+0x114/0x1f0
         driver_detach+0x54/0xe0
         bus_remove_driver+0x60/0xd8
         driver_unregister+0x34/0x60
         i2c_del_driver+0x2c/0x68
         adv7511_exit+0x1c/0x67c [adv7511]
         __arm64_sys_delete_module+0x154/0x288
         invoke_syscall+0x48/0x100
         el0_svc_common.constprop.0+0x48/0xe8
         do_el0_svc+0x28/0x88
         el0_svc+0x1c/0x50
         el0t_64_sync_handler+0xa8/0xb0
         el0t_64_sync+0x15c/0x160
        Code: bad PC value
        ---[ end trace 0000000000000000 ]---
    
    Protect against this scenario by unregistering i2c_cec after
    unregistering the CEC adapter. Duly disable the CEC clock afterwards
    too.
    
    Fixes: 3b1b975003e4 ("drm: adv7511/33: add HDMI CEC support")
    Signed-off-by: Alvin Šipraga <alsi@bang-olufsen.dk>
    Reviewed-by: Robert Foss <robert.foss@linaro.org>
    Signed-off-by: Robert Foss <robert.foss@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220612144854.2223873-3-alvin@pqrs.dk
    Stable-dep-of: 81adbd3ff21c ("drm: adv7511: Fix use-after-free in adv7533_attach_dsi()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm: bridge: adv7511: use dev_err_probe in probe function [+ + +]
Author: Ahmad Fatoum <a.fatoum@pengutronix.de>
Date:   Wed Oct 26 14:52:46 2022 +0200

    drm: bridge: adv7511: use dev_err_probe in probe function
    
    [ Upstream commit 2a865248399a13bb2b2bcc50297069a7521de258 ]
    
    adv7511 probe may need to be attempted multiple times before no
    -EPROBE_DEFER is returned. Currently, every such probe results in
    an error message:
    
    [    4.534229] adv7511 1-003d: failed to find dsi host
    [    4.580288] adv7511 1-003d: failed to find dsi host
    
    This is misleading, as there is no error and probe deferral is normal
    behavior. Fix this by using dev_err_probe that will suppress
    -EPROBE_DEFER errors. While at it, we touch all dev_err in the probe
    path. This makes the code more concise and included the error code
    everywhere to aid user in debugging.
    
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20221026125246.3188260-1-a.fatoum@pengutronix.de
    Stable-dep-of: 81adbd3ff21c ("drm: adv7511: Fix use-after-free in adv7533_attach_dsi()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
exfat: fix the infinite loop in exfat_readdir() [+ + +]
Author: Yuezhang Mo <Yuezhang.Mo@sony.com>
Date:   Fri Dec 13 13:08:37 2024 +0800

    exfat: fix the infinite loop in exfat_readdir()
    
    [ Upstream commit fee873761bd978d077d8c55334b4966ac4cb7b59 ]
    
    If the file system is corrupted so that a cluster is linked to
    itself in the cluster chain, and there is an unused directory
    entry in the cluster, 'dentry' will not be incremented, causing
    condition 'dentry < max_dentries' unable to prevent an infinite
    loop.
    
    This infinite loop causes s_lock not to be released, and other
    tasks will hang, such as exfat_sync_fs().
    
    This commit stops traversing the cluster chain when there is unused
    directory entry in the cluster to avoid this infinite loop.
    
    Reported-by: syzbot+205c2644abdff9d3f9fc@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=205c2644abdff9d3f9fc
    Tested-by: syzbot+205c2644abdff9d3f9fc@syzkaller.appspotmail.com
    Fixes: ca06197382bd ("exfat: add directory operations")
    Signed-off-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
    Reviewed-by: Sungjong Seo <sj1557.seo@samsung.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fou: remove warn in gue_gro_receive on unsupported protocol [+ + +]
Author: Willem de Bruijn <willemb@google.com>
Date:   Fri Jun 14 08:25:18 2024 -0400

    fou: remove warn in gue_gro_receive on unsupported protocol
    
    commit dd89a81d850fa9a65f67b4527c0e420d15bf836c upstream.
    
    Drop the WARN_ON_ONCE inn gue_gro_receive if the encapsulated type is
    not known or does not have a GRO handler.
    
    Such a packet is easily constructed. Syzbot generates them and sets
    off this warning.
    
    Remove the warning as it is expected and not actionable.
    
    The warning was previously reduced from WARN_ON to WARN_ON_ONCE in
    commit 270136613bf7 ("fou: Do WARN_ON_ONCE in gue_gro_receive for bad
    proto callbacks").
    
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20240614122552.1649044-1-willemdebruijn.kernel@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fs/proc: fix softlockup in __read_vmcore (part 2) [+ + +]
Author: Rik van Riel <riel@surriel.com>
Date:   Fri Jan 10 10:28:21 2025 -0500

    fs/proc: fix softlockup in __read_vmcore (part 2)
    
    commit cbc5dde0a461240046e8a41c43d7c3b76d5db952 upstream.
    
    Since commit 5cbcb62dddf5 ("fs/proc: fix softlockup in __read_vmcore") the
    number of softlockups in __read_vmcore at kdump time have gone down, but
    they still happen sometimes.
    
    In a memory constrained environment like the kdump image, a softlockup is
    not just a harmless message, but it can interfere with things like RCU
    freeing memory, causing the crashdump to get stuck.
    
    The second loop in __read_vmcore has a lot more opportunities for natural
    sleep points, like scheduling out while waiting for a data write to
    happen, but apparently that is not always enough.
    
    Add a cond_resched() to the second loop in __read_vmcore to (hopefully)
    get rid of the softlockups.
    
    Link: https://lkml.kernel.org/r/20250110102821.2a37581b@fangorn
    Fixes: 5cbcb62dddf5 ("fs/proc: fix softlockup in __read_vmcore")
    Signed-off-by: Rik van Riel <riel@surriel.com>
    Reported-by: Breno Leitao <leitao@debian.org>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Dave Young <dyoung@redhat.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fs: fix missing declaration of init_files [+ + +]
Author: Zhang Kunbo <zhangkunbo@huawei.com>
Date:   Tue Dec 17 07:18:36 2024 +0000

    fs: fix missing declaration of init_files
    
    [ Upstream commit 2b2fc0be98a828cf33a88a28e9745e8599fb05cf ]
    
    fs/file.c should include include/linux/init_task.h  for
     declaration of init_files. This fixes the sparse warning:
    
    fs/file.c:501:21: warning: symbol 'init_files' was not declared. Should it be static?
    
    Signed-off-by: Zhang Kunbo <zhangkunbo@huawei.com>
    Link: https://lore.kernel.org/r/20241217071836.2634868-1-zhangkunbo@huawei.com
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gfs2: Truncate address space when flipping GFS2_DIF_JDATA flag [+ + +]
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Mon Jan 13 19:31:28 2025 +0100

    gfs2: Truncate address space when flipping GFS2_DIF_JDATA flag
    
    commit 7c9d9223802fbed4dee1ae301661bf346964c9d2 upstream.
    
    Truncate an inode's address space when flipping the GFS2_DIF_JDATA flag:
    depending on that flag, the pages in the address space will either use
    buffer heads or iomap_folio_state structs, and we cannot mix the two.
    
    Reported-by: Kun Hu <huk23@m.fudan.edu.cn>, Jiaji Qin <jjtan24@m.fudan.edu.cn>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
gpiolib: cdev: Fix use after free in lineinfo_changed_notify [+ + +]
Author: Zhongqiu Han <quic_zhonhan@quicinc.com>
Date:   Sun May 5 22:11:56 2024 +0800

    gpiolib: cdev: Fix use after free in lineinfo_changed_notify
    
    commit 02f6b0e1ec7e0e7d059dddc893645816552039da upstream.
    
    The use-after-free issue occurs as follows: when the GPIO chip device file
    is being closed by invoking gpio_chrdev_release(), watched_lines is freed
    by bitmap_free(), but the unregistration of lineinfo_changed_nb notifier
    chain failed due to waiting write rwsem. Additionally, one of the GPIO
    chip's lines is also in the release process and holds the notifier chain's
    read rwsem. Consequently, a race condition leads to the use-after-free of
    watched_lines.
    
    Here is the typical stack when issue happened:
    
    [free]
    gpio_chrdev_release()
      --> bitmap_free(cdev->watched_lines)                  <-- freed
      --> blocking_notifier_chain_unregister()
        --> down_write(&nh->rwsem)                          <-- waiting rwsem
              --> __down_write_common()
                --> rwsem_down_write_slowpath()
                      --> schedule_preempt_disabled()
                        --> schedule()
    
    [use]
    st54spi_gpio_dev_release()
      --> gpio_free()
        --> gpiod_free()
          --> gpiod_free_commit()
            --> gpiod_line_state_notify()
              --> blocking_notifier_call_chain()
                --> down_read(&nh->rwsem);                  <-- held rwsem
                --> notifier_call_chain()
                  --> lineinfo_changed_notify()
                    --> test_bit(xxxx, cdev->watched_lines) <-- use after free
    
    The side effect of the use-after-free issue is that a GPIO line event is
    being generated for userspace where it shouldn't. However, since the chrdev
    is being closed, userspace won't have the chance to read that event anyway.
    
    To fix the issue, call the bitmap_free() function after the unregistration
    of lineinfo_changed_nb notifier chain.
    
    Fixes: 51c1064e82e7 ("gpiolib: add new ioctl() for monitoring changes in line info")
    Signed-off-by: Zhongqiu Han <quic_zhonhan@quicinc.com>
    Link: https://lore.kernel.org/r/20240505141156.2944912-1-quic_zhonhan@quicinc.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Bruno VERNAY <bruno.vernay@se.com>
    Signed-off-by: Hugo SIMELIERE <hsimeliere.opensource@witekio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
gtp: Destroy device along with udp socket's netns dismantle. [+ + +]
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Fri Jan 10 10:47:53 2025 +0900

    gtp: Destroy device along with udp socket's netns dismantle.
    
    [ Upstream commit eb28fd76c0a08a47b470677c6cef9dd1c60e92d1 ]
    
    gtp_newlink() links the device to a list in dev_net(dev) instead of
    src_net, where a udp tunnel socket is created.
    
    Even when src_net is removed, the device stays alive on dev_net(dev).
    Then, removing src_net triggers the splat below. [0]
    
    In this example, gtp0 is created in ns2, and the udp socket is created
    in ns1.
    
      ip netns add ns1
      ip netns add ns2
      ip -n ns1 link add netns ns2 name gtp0 type gtp role sgsn
      ip netns del ns1
    
    Let's link the device to the socket's netns instead.
    
    Now, gtp_net_exit_batch_rtnl() needs another netdev iteration to remove
    all gtp devices in the netns.
    
    [0]:
    ref_tracker: net notrefcnt@000000003d6e7d05 has 1/2 users at
         sk_alloc (./include/net/net_namespace.h:345 net/core/sock.c:2236)
         inet_create (net/ipv4/af_inet.c:326 net/ipv4/af_inet.c:252)
         __sock_create (net/socket.c:1558)
         udp_sock_create4 (net/ipv4/udp_tunnel_core.c:18)
         gtp_create_sock (./include/net/udp_tunnel.h:59 drivers/net/gtp.c:1423)
         gtp_create_sockets (drivers/net/gtp.c:1447)
         gtp_newlink (drivers/net/gtp.c:1507)
         rtnl_newlink (net/core/rtnetlink.c:3786 net/core/rtnetlink.c:3897 net/core/rtnetlink.c:4012)
         rtnetlink_rcv_msg (net/core/rtnetlink.c:6922)
         netlink_rcv_skb (net/netlink/af_netlink.c:2542)
         netlink_unicast (net/netlink/af_netlink.c:1321 net/netlink/af_netlink.c:1347)
         netlink_sendmsg (net/netlink/af_netlink.c:1891)
         ____sys_sendmsg (net/socket.c:711 net/socket.c:726 net/socket.c:2583)
         ___sys_sendmsg (net/socket.c:2639)
         __sys_sendmsg (net/socket.c:2669)
         do_syscall_64 (arch/x86/entry/common.c:52 arch/x86/entry/common.c:83)
    
    WARNING: CPU: 1 PID: 60 at lib/ref_tracker.c:179 ref_tracker_dir_exit (lib/ref_tracker.c:179)
    Modules linked in:
    CPU: 1 UID: 0 PID: 60 Comm: kworker/u16:2 Not tainted 6.13.0-rc5-00147-g4c1224501e9d #5
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
    Workqueue: netns cleanup_net
    RIP: 0010:ref_tracker_dir_exit (lib/ref_tracker.c:179)
    Code: 00 00 00 fc ff df 4d 8b 26 49 bd 00 01 00 00 00 00 ad de 4c 39 f5 0f 85 df 00 00 00 48 8b 74 24 08 48 89 df e8 a5 cc 12 02 90 <0f> 0b 90 48 8d 6b 44 be 04 00 00 00 48 89 ef e8 80 de 67 ff 48 89
    RSP: 0018:ff11000009a07b60 EFLAGS: 00010286
    RAX: 0000000000002bd3 RBX: ff1100000f4e1aa0 RCX: 1ffffffff0e40ac6
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffff8423ee3c
    RBP: ff1100000f4e1af0 R08: 0000000000000001 R09: fffffbfff0e395ae
    R10: 0000000000000001 R11: 0000000000036001 R12: ff1100000f4e1af0
    R13: dead000000000100 R14: ff1100000f4e1af0 R15: dffffc0000000000
    FS:  0000000000000000(0000) GS:ff1100006ce80000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f9b2464bd98 CR3: 0000000005286005 CR4: 0000000000771ef0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe07f0 DR7: 0000000000000400
    PKRU: 55555554
    Call Trace:
     <TASK>
     ? __warn (kernel/panic.c:748)
     ? ref_tracker_dir_exit (lib/ref_tracker.c:179)
     ? report_bug (lib/bug.c:201 lib/bug.c:219)
     ? handle_bug (arch/x86/kernel/traps.c:285)
     ? exc_invalid_op (arch/x86/kernel/traps.c:309 (discriminator 1))
     ? asm_exc_invalid_op (./arch/x86/include/asm/idtentry.h:621)
     ? _raw_spin_unlock_irqrestore (./arch/x86/include/asm/irqflags.h:42 ./arch/x86/include/asm/irqflags.h:97 ./arch/x86/include/asm/irqflags.h:155 ./include/linux/spinlock_api_smp.h:151 kernel/locking/spinlock.c:194)
     ? ref_tracker_dir_exit (lib/ref_tracker.c:179)
     ? __pfx_ref_tracker_dir_exit (lib/ref_tracker.c:158)
     ? kfree (mm/slub.c:4613 mm/slub.c:4761)
     net_free (net/core/net_namespace.c:476 net/core/net_namespace.c:467)
     cleanup_net (net/core/net_namespace.c:664 (discriminator 3))
     process_one_work (kernel/workqueue.c:3229)
     worker_thread (kernel/workqueue.c:3304 kernel/workqueue.c:3391)
     kthread (kernel/kthread.c:389)
     ret_from_fork (arch/x86/kernel/process.c:147)
     ret_from_fork_asm (arch/x86/entry/entry_64.S:257)
     </TASK>
    
    Fixes: 459aa660eb1d ("gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U)")
    Reported-by: Xiao Liang <shaw.leon@gmail.com>
    Closes: https://lore.kernel.org/netdev/20250104125732.17335-1-shaw.leon@gmail.com/
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gtp: use exit_batch_rtnl() method [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Feb 6 14:43:03 2024 +0000

    gtp: use exit_batch_rtnl() method
    
    [ Upstream commit 6eedda01b2bfdcf427b37759e053dc27232f3af1 ]
    
    exit_batch_rtnl() is called while RTNL is held,
    and devices to be unregistered can be queued in the dev_kill_list.
    
    This saves one rtnl_lock()/rtnl_unlock() pair per netns
    and one unregister_netdevice_many() call per netns.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Antoine Tenart <atenart@kernel.org>
    Link: https://lore.kernel.org/r/20240206144313.2050392-8-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 46841c7053e6 ("gtp: Use for_each_netdev_rcu() in gtp_genl_dump_pdp().")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gtp: Use for_each_netdev_rcu() in gtp_genl_dump_pdp(). [+ + +]
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Fri Jan 10 10:47:52 2025 +0900

    gtp: Use for_each_netdev_rcu() in gtp_genl_dump_pdp().
    
    [ Upstream commit 46841c7053e6d25fb33e0534ef023833bf03e382 ]
    
    gtp_newlink() links the gtp device to a list in dev_net(dev).
    
    However, even after the gtp device is moved to another netns,
    it stays on the list but should be invisible.
    
    Let's use for_each_netdev_rcu() for netdev traversal in
    gtp_genl_dump_pdp().
    
    Note that gtp_dev_list is no longer used under RCU, so list
    helpers are converted to the non-RCU variant.
    
    Fixes: 459aa660eb1d ("gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U)")
    Reported-by: Xiao Liang <shaw.leon@gmail.com>
    Closes: https://lore.kernel.org/netdev/CABAhCOQdBL6h9M2C+kd+bGivRJ9Q72JUxW+-gur0nub_=PmFPA@mail.gmail.com/
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hfs: Sanity check the root record [+ + +]
Author: Leo Stone <leocstone@gmail.com>
Date:   Sat Nov 30 21:14:19 2024 -0800

    hfs: Sanity check the root record
    
    [ Upstream commit b905bafdea21a75d75a96855edd9e0b6051eee30 ]
    
    In the syzbot reproducer, the hfs_cat_rec for the root dir has type
    HFS_CDR_FIL after being read with hfs_bnode_read() in hfs_super_fill().
    This indicates it should be used as an hfs_cat_file, which is 102 bytes.
    Only the first 70 bytes of that struct are initialized, however,
    because the entrylength passed into hfs_bnode_read() is still the length of
    a directory record. This causes uninitialized values to be used later on,
    when the hfs_cat_rec union is treated as the larger hfs_cat_file struct.
    
    Add a check to make sure the retrieved record has the correct type
    for the root directory (HFS_CDR_DIR), and make sure we load the correct
    number of bytes for a directory record.
    
    Reported-by: syzbot+2db3c7526ba68f4ea776@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=2db3c7526ba68f4ea776
    Tested-by: syzbot+2db3c7526ba68f4ea776@syzkaller.appspotmail.com
    Tested-by: Leo Stone <leocstone@gmail.com>
    Signed-off-by: Leo Stone <leocstone@gmail.com>
    Link: https://lore.kernel.org/r/20241201051420.77858-1-leocstone@gmail.com
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hrtimers: Handle CPU state correctly on hotplug [+ + +]
Author: Koichiro Den <koichiro.den@canonical.com>
Date:   Fri Dec 20 22:44:21 2024 +0900

    hrtimers: Handle CPU state correctly on hotplug
    
    commit 2f8dea1692eef2b7ba6a256246ed82c365fdc686 upstream.
    
    Consider a scenario where a CPU transitions from CPUHP_ONLINE to halfway
    through a CPU hotunplug down to CPUHP_HRTIMERS_PREPARE, and then back to
    CPUHP_ONLINE:
    
    Since hrtimers_prepare_cpu() does not run, cpu_base.hres_active remains set
    to 1 throughout. However, during a CPU unplug operation, the tick and the
    clockevents are shut down at CPUHP_AP_TICK_DYING. On return to the online
    state, for instance CFS incorrectly assumes that the hrtick is already
    active, and the chance of the clockevent device to transition to oneshot
    mode is also lost forever for the CPU, unless it goes back to a lower state
    than CPUHP_HRTIMERS_PREPARE once.
    
    This round-trip reveals another issue; cpu_base.online is not set to 1
    after the transition, which appears as a WARN_ON_ONCE in enqueue_hrtimer().
    
    Aside of that, the bulk of the per CPU state is not reset either, which
    means there are dangling pointers in the worst case.
    
    Address this by adding a corresponding startup() callback, which resets the
    stale per CPU state and sets the online flag.
    
    [ tglx: Make the new callback unconditionally available, remove the online
            modification in the prepare() callback and clear the remaining
            state in the starting callback instead of the prepare callback ]
    
    Fixes: 5c0930ccaad5 ("hrtimers: Push pending hrtimers away from outgoing CPU earlier")
    Signed-off-by: Koichiro Den <koichiro.den@canonical.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/all/20241220134421.3809834-1-koichiro.den@canonical.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
i2c: mux: demux-pinctrl: check initial mux selection, too [+ + +]
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Wed Jan 15 08:29:45 2025 +0100

    i2c: mux: demux-pinctrl: check initial mux selection, too
    
    [ Upstream commit ca89f73394daf92779ddaa37b42956f4953f3941 ]
    
    When misconfigured, the initial setup of the current mux channel can
    fail, too. It must be checked as well.
    
    Fixes: 50a5ba876908 ("i2c: mux: demux-pinctrl: add driver")
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i2c: rcar: fix NACK handling when being a target [+ + +]
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Wed Jan 15 13:36:23 2025 +0100

    i2c: rcar: fix NACK handling when being a target
    
    [ Upstream commit 093f70c134f70e4632b295240f07d2b50b74e247 ]
    
    When this controller is a target, the NACK handling had two issues.
    First, the return value from the backend was not checked on the initial
    WRITE_REQUESTED. So, the driver missed to send a NACK in this case.
    Also, the NACK always arrives one byte late on the bus, even in the
    WRITE_RECEIVED case. This seems to be a HW issue. We should then not
    rely on the backend to correctly NACK the superfluous byte as well. Fix
    both issues by introducing a flag which gets set whenever the backend
    requests a NACK and keep sending it until we get a STOP condition.
    
    Fixes: de20d1857dd6 ("i2c: rcar: add slave support")
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ieee802154: ca8210: Add missing check for kfifo_alloc() in ca8210_probe() [+ + +]
Author: Keisuke Nishimura <keisuke.nishimura@inria.fr>
Date:   Tue Oct 29 19:27:12 2024 +0100

    ieee802154: ca8210: Add missing check for kfifo_alloc() in ca8210_probe()
    
    [ Upstream commit 2c87309ea741341c6722efdf1fb3f50dd427c823 ]
    
    ca8210_test_interface_init() returns the result of kfifo_alloc(),
    which can be non-zero in case of an error. The caller, ca8210_probe(),
    should check the return value and do error-handling if it fails.
    
    Fixes: ded845a781a5 ("ieee802154: Add CA8210 IEEE 802.15.4 device driver")
    Signed-off-by: Keisuke Nishimura <keisuke.nishimura@inria.fr>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/20241029182712.318271-1-keisuke.nishimura@inria.fr
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iio: adc: at91: call input_free_device() on allocated iio_dev [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Sat Dec 7 13:30:45 2024 +0900

    iio: adc: at91: call input_free_device() on allocated iio_dev
    
    commit de6a73bad1743e9e81ea5a24c178c67429ff510b upstream.
    
    Current implementation of at91_ts_register() calls input_free_deivce()
    on st->ts_input, however, the err label can be reached before the
    allocated iio_dev is stored to st->ts_input. Thus call
    input_free_device() on input instead of st->ts_input.
    
    Fixes: 84882b060301 ("iio: adc: at91_adc: Add support for touchscreens without TSMR")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Link: https://patch.msgid.link/20241207043045.1255409-1-joe@pf.is.s.u-tokyo.ac.jp
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: adc: rockchip_saradc: fix information leak in triggered buffer [+ + +]
Author: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Date:   Mon Nov 25 22:16:12 2024 +0100

    iio: adc: rockchip_saradc: fix information leak in triggered buffer
    
    commit 38724591364e1e3b278b4053f102b49ea06ee17c upstream.
    
    The 'data' local struct is used to push data to user space from a
    triggered buffer, but it does not set values for inactive channels, as
    it only uses iio_for_each_active_channel() to assign new values.
    
    Initialize the struct to zero before using it to avoid pushing
    uninitialized information to userspace.
    
    Cc: stable@vger.kernel.org
    Fixes: 4e130dc7b413 ("iio: adc: rockchip_saradc: Add support iio buffers")
    Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
    Link: https://patch.msgid.link/20241125-iio_memset_scan_holes-v1-4-0cb6e98d895c@gmail.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Bin Lan <lanbincn@qq.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: adc: ti-ads124s08: Use gpiod_set_value_cansleep() [+ + +]
Author: Fabio Estevam <festevam@gmail.com>
Date:   Fri Nov 22 13:43:08 2024 -0300

    iio: adc: ti-ads124s08: Use gpiod_set_value_cansleep()
    
    commit 2a8e34096ec70d73ebb6d9920688ea312700cbd9 upstream.
    
    Using gpiod_set_value() to control the reset GPIO causes some verbose
    warnings during boot when the reset GPIO is controlled by an I2C IO
    expander.
    
    As the caller can sleep, use the gpiod_set_value_cansleep() variant to
    fix the issue.
    
    Tested on a custom i.MX93 board with a ADS124S08 ADC.
    
    Cc: stable@kernel.org
    Fixes: e717f8c6dfec ("iio: adc: Add the TI ads124s08 ADC code")
    Signed-off-by: Fabio Estevam <festevam@gmail.com>
    Link: https://patch.msgid.link/20241122164308.390340-1-festevam@gmail.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: adc: ti-ads8688: fix information leak in triggered buffer [+ + +]
Author: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Date:   Mon Nov 25 22:16:16 2024 +0100

    iio: adc: ti-ads8688: fix information leak in triggered buffer
    
    commit 2a7377ccfd940cd6e9201756aff1e7852c266e69 upstream.
    
    The 'buffer' local array is used to push data to user space from a
    triggered buffer, but it does not set values for inactive channels, as
    it only uses iio_for_each_active_channel() to assign new values.
    
    Initialize the array to zero before using it to avoid pushing
    uninitialized information to userspace.
    
    Cc: stable@vger.kernel.org
    Fixes: 61fa5dfa5f52 ("iio: adc: ti-ads8688: Fix alignment of buffer in iio_push_to_buffers_with_timestamp()")
    Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
    Link: https://patch.msgid.link/20241125-iio_memset_scan_holes-v1-8-0cb6e98d895c@gmail.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: dummy: iio_simply_dummy_buffer: fix information leak in triggered buffer [+ + +]
Author: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Date:   Mon Nov 25 22:16:17 2024 +0100

    iio: dummy: iio_simply_dummy_buffer: fix information leak in triggered buffer
    
    commit 333be433ee908a53f283beb95585dfc14c8ffb46 upstream.
    
    The 'data' array is allocated via kmalloc() and it is used to push data
    to user space from a triggered buffer, but it does not set values for
    inactive channels, as it only uses iio_for_each_active_channel()
    to assign new values.
    
    Use kzalloc for the memory allocation to avoid pushing uninitialized
    information to userspace.
    
    Cc: stable@vger.kernel.org
    Fixes: 415f79244757 ("iio: Move IIO Dummy Driver out of staging")
    Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
    Link: https://patch.msgid.link/20241125-iio_memset_scan_holes-v1-9-0cb6e98d895c@gmail.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: gyro: fxas21002c: Fix missing data update in trigger handler [+ + +]
Author: Carlos Song <carlos.song@nxp.com>
Date:   Sat Nov 16 10:29:45 2024 -0500

    iio: gyro: fxas21002c: Fix missing data update in trigger handler
    
    commit fa13ac6cdf9b6c358e7d77c29fb60145c7a87965 upstream.
    
    The fxas21002c_trigger_handler() may fail to acquire sample data because
    the runtime PM enters the autosuspend state and sensor can not return
    sample data in standby mode..
    
    Resume the sensor before reading the sample data into the buffer within the
    trigger handler. After the data is read, place the sensor back into the
    autosuspend state.
    
    Fixes: a0701b6263ae ("iio: gyro: add core driver for fxas21002c")
    Signed-off-by: Carlos Song <carlos.song@nxp.com>
    Signed-off-by: Frank Li <Frank.Li@nxp.com>
    Link: https://patch.msgid.link/20241116152945.4006374-1-Frank.Li@nxp.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: imu: inv_icm42600: fix spi burst write not supported [+ + +]
Author: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
Date:   Tue Nov 12 10:30:10 2024 +0100

    iio: imu: inv_icm42600: fix spi burst write not supported
    
    commit c0f866de4ce447bca3191b9cefac60c4b36a7922 upstream.
    
    Burst write with SPI is not working for all icm42600 chips. It was
    only used for setting user offsets with regmap_bulk_write.
    
    Add specific SPI regmap config for using only single write with SPI.
    
    Fixes: 9f9ff91b775b ("iio: imu: inv_icm42600: add SPI driver for inv_icm42600 driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
    Link: https://patch.msgid.link/20241112-inv-icm42600-fix-spi-burst-write-not-supported-v2-1-97690dc03607@tdk.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: imu: inv_icm42600: fix timestamps after suspend if sensor is on [+ + +]
Author: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
Date:   Wed Nov 13 21:25:45 2024 +0100

    iio: imu: inv_icm42600: fix timestamps after suspend if sensor is on
    
    commit 65a60a590142c54a3f3be11ff162db2d5b0e1e06 upstream.
    
    Currently suspending while sensors are one will result in timestamping
    continuing without gap at resume. It can work with monotonic clock but
    not with other clocks. Fix that by resetting timestamping.
    
    Fixes: ec74ae9fd37c ("iio: imu: inv_icm42600: add accurate timestamping")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
    Link: https://patch.msgid.link/20241113-inv_icm42600-fix-timestamps-after-suspend-v1-1-dfc77c394173@tdk.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: imu: kmx61: fix information leak in triggered buffer [+ + +]
Author: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Date:   Mon Nov 25 22:16:13 2024 +0100

    iio: imu: kmx61: fix information leak in triggered buffer
    
    commit 6ae053113f6a226a2303caa4936a4c37f3bfff7b upstream.
    
    The 'buffer' local array is used to push data to user space from a
    triggered buffer, but it does not set values for inactive channels, as
    it only uses iio_for_each_active_channel() to assign new values.
    
    Initialize the array to zero before using it to avoid pushing
    uninitialized information to userspace.
    
    Cc: stable@vger.kernel.org
    Fixes: c3a23ecc0901 ("iio: imu: kmx61: Add support for data ready triggers")
    Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
    Link: https://patch.msgid.link/20241125-iio_memset_scan_holes-v1-5-0cb6e98d895c@gmail.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: inkern: call iio_device_put() only on mapped devices [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Date:   Wed Dec 4 20:13:42 2024 +0900

    iio: inkern: call iio_device_put() only on mapped devices
    
    commit 64f43895b4457532a3cc524ab250b7a30739a1b1 upstream.
    
    In the error path of iio_channel_get_all(), iio_device_put() is called
    on all IIO devices, which can cause a refcount imbalance. Fix this error
    by calling iio_device_put() only on IIO devices whose refcounts were
    previously incremented by iio_device_get().
    
    Fixes: 314be14bb893 ("iio: Rename _st_ functions to loose the bit that meant the staging version.")
    Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
    Link: https://patch.msgid.link/20241204111342.1246706-1-joe@pf.is.s.u-tokyo.ac.jp
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: light: vcnl4035: fix information leak in triggered buffer [+ + +]
Author: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Date:   Mon Nov 25 22:16:14 2024 +0100

    iio: light: vcnl4035: fix information leak in triggered buffer
    
    commit 47b43e53c0a0edf5578d5d12f5fc71c019649279 upstream.
    
    The 'buffer' local array is used to push data to userspace from a
    triggered buffer, but it does not set an initial value for the single
    data element, which is an u16 aligned to 8 bytes. That leaves at least
    4 bytes uninitialized even after writing an integer value with
    regmap_read().
    
    Initialize the array to zero before using it to avoid pushing
    uninitialized information to userspace.
    
    Cc: stable@vger.kernel.org
    Fixes: ec90b52c07c0 ("iio: light: vcnl4035: Fix buffer alignment in iio_push_to_buffers_with_timestamp()")
    Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
    Link: https://patch.msgid.link/20241125-iio_memset_scan_holes-v1-6-0cb6e98d895c@gmail.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: pressure: zpa2326: fix information leak in triggered buffer [+ + +]
Author: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Date:   Mon Nov 25 22:16:11 2024 +0100

    iio: pressure: zpa2326: fix information leak in triggered buffer
    
    commit 6007d10c5262f6f71479627c1216899ea7f09073 upstream.
    
    The 'sample' local struct is used to push data to user space from a
    triggered buffer, but it has a hole between the temperature and the
    timestamp (u32 pressure, u16 temperature, GAP, u64 timestamp).
    This hole is never initialized.
    
    Initialize the struct to zero before using it to avoid pushing
    uninitialized information to userspace.
    
    Cc: stable@vger.kernel.org
    Fixes: 03b262f2bbf4 ("iio:pressure: initial zpa2326 barometer support")
    Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
    Link: https://patch.msgid.link/20241125-iio_memset_scan_holes-v1-3-0cb6e98d895c@gmail.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Input: atkbd - map F23 key to support default copilot shortcut [+ + +]
Author: Mark Pearson <mpearson-lenovo@squebb.ca>
Date:   Mon Jan 20 20:24:08 2025 -0800

    Input: atkbd - map F23 key to support default copilot shortcut
    
    commit 907bc9268a5a9f823ffa751957a5c1dd59f83f42 upstream.
    
    Microsoft defined Meta+Shift+F23 as the Copilot shortcut instead of a
    dedicated keycode, and multiple vendors have their keyboards emit this
    sequence in response to users pressing a dedicated "Copilot" key.
    Unfortunately the default keymap table in atkbd does not map scancode
    0x6e (F23) and so the key combination does not work even if userspace
    is ready to handle it.
    
    Because this behavior is common between multiple vendors and the
    scancode is currently unused map 0x6e to keycode 193 (KEY_F23) so that
    key sequence is generated properly.
    
    MS documentation for the scan code:
    https://learn.microsoft.com/en-us/windows/win32/inputdev/about-keyboard-input#scan-codes
    Confirmed on Lenovo, HP and Dell machines by Canonical.
    Tested on Lenovo T14s G6 AMD.
    
    Signed-off-by: Mark Pearson <mpearson-lenovo@squebb.ca>
    Link: https://lore.kernel.org/r/20250107034554.25843-1-mpearson-lenovo@squebb.ca
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: xpad - add support for wooting two he (arm) [+ + +]
Author: Jack Greiner <jack@emoss.org>
Date:   Fri Jan 17 16:51:58 2025 -0800

    Input: xpad - add support for wooting two he (arm)
    
    commit 222f3390c15c4452a9f7e26f5b7d9138e75d00d5 upstream.
    
    Add Wooting Two HE (ARM) to the list of supported devices.
    
    Signed-off-by: Jack Greiner <jack@emoss.org>
    Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
    Link: https://lore.kernel.org/r/20250107192830.414709-3-rojtberg@gmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: xpad - add unofficial Xbox 360 wireless receiver clone [+ + +]
Author: Nilton Perim Neto <niltonperimneto@gmail.com>
Date:   Fri Jan 17 09:34:18 2025 -0800

    Input: xpad - add unofficial Xbox 360 wireless receiver clone
    
    commit e4940fe6322c851659c17852b671c6e7b1aa9f56 upstream.
    
    Although it mimics the Microsoft's VendorID, it is in fact a clone.
    Taking into account that the original Microsoft Receiver is not being
    manufactured anymore, this drive can solve dpad issues encontered by
    those who still use the original 360 Wireless controller
    but are using a receiver clone.
    
    Signed-off-by: Nilton Perim Neto <niltonperimneto@gmail.com>
    Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
    Link: https://lore.kernel.org/r/20250107192830.414709-12-rojtberg@gmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ipv4: ip_tunnel: Fix suspicious RCU usage warning in ip_tunnel_find() [+ + +]
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Wed Oct 23 15:30:09 2024 +0300

    ipv4: ip_tunnel: Fix suspicious RCU usage warning in ip_tunnel_find()
    
    commit 90e0569dd3d32f4f4d2ca691d3fa5a8a14a13c12 upstream.
    
    The per-netns IP tunnel hash table is protected by the RTNL mutex and
    ip_tunnel_find() is only called from the control path where the mutex is
    taken.
    
    Add a lockdep expression to hlist_for_each_entry_rcu() in
    ip_tunnel_find() in order to validate that the mutex is held and to
    silence the suspicious RCU usage warning [1].
    
    [1]
    WARNING: suspicious RCU usage
    6.12.0-rc3-custom-gd95d9a31aceb #139 Not tainted
    -----------------------------
    net/ipv4/ip_tunnel.c:221 RCU-list traversed in non-reader section!!
    
    other info that might help us debug this:
    
    rcu_scheduler_active = 2, debug_locks = 1
    1 lock held by ip/362:
     #0: ffffffff86fc7cb0 (rtnl_mutex){+.+.}-{3:3}, at: rtnetlink_rcv_msg+0x377/0xf60
    
    stack backtrace:
    CPU: 12 UID: 0 PID: 362 Comm: ip Not tainted 6.12.0-rc3-custom-gd95d9a31aceb #139
    Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
    Call Trace:
     <TASK>
     dump_stack_lvl+0xba/0x110
     lockdep_rcu_suspicious.cold+0x4f/0xd6
     ip_tunnel_find+0x435/0x4d0
     ip_tunnel_newlink+0x517/0x7a0
     ipgre_newlink+0x14c/0x170
     __rtnl_newlink+0x1173/0x19c0
     rtnl_newlink+0x6c/0xa0
     rtnetlink_rcv_msg+0x3cc/0xf60
     netlink_rcv_skb+0x171/0x450
     netlink_unicast+0x539/0x7f0
     netlink_sendmsg+0x8c1/0xd80
     ____sys_sendmsg+0x8f9/0xc20
     ___sys_sendmsg+0x197/0x1e0
     __sys_sendmsg+0x122/0x1f0
     do_syscall_64+0xbb/0x1d0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
    Suggested-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20241023123009.749764-1-idosch@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Alva Lan <alvalan9@foxmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ipv6: avoid possible NULL deref in rt6_uncached_list_flush_dev() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Sep 13 08:31:47 2024 +0000

    ipv6: avoid possible NULL deref in rt6_uncached_list_flush_dev()
    
    commit 04ccecfa959d3b9ae7348780d8e379c6486176ac upstream.
    
    Blamed commit accidentally removed a check for rt->rt6i_idev being NULL,
    as spotted by syzbot:
    
    Oops: general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] PREEMPT SMP KASAN PTI
    KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
    CPU: 1 UID: 0 PID: 10998 Comm: syz-executor Not tainted 6.11.0-rc6-syzkaller-00208-g625403177711 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/06/2024
     RIP: 0010:rt6_uncached_list_flush_dev net/ipv6/route.c:177 [inline]
     RIP: 0010:rt6_disable_ip+0x33e/0x7e0 net/ipv6/route.c:4914
    Code: 41 80 3c 04 00 74 0a e8 90 d0 9b f7 48 8b 7c 24 08 48 8b 07 48 89 44 24 10 4c 89 f0 48 c1 e8 03 48 b9 00 00 00 00 00 fc ff df <80> 3c 08 00 74 08 4c 89 f7 e8 64 d0 9b f7 48 8b 44 24 18 49 39 06
    RSP: 0018:ffffc900047374e0 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: 1ffff1100fdf8f33 RCX: dffffc0000000000
    RDX: 0000000000000000 RSI: 0000000000000004 RDI: ffff88807efc78c0
    RBP: ffffc900047375d0 R08: 0000000000000003 R09: fffff520008e6e8c
    R10: dffffc0000000000 R11: fffff520008e6e8c R12: 1ffff1100fdf8f18
    R13: ffff88807efc7998 R14: 0000000000000000 R15: ffff88807efc7930
    FS:  0000000000000000(0000) GS:ffff8880b8900000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000020002a80 CR3: 0000000022f62000 CR4: 00000000003506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
      addrconf_ifdown+0x15d/0x1bd0 net/ipv6/addrconf.c:3856
     addrconf_notify+0x3cb/0x1020
      notifier_call_chain+0x19f/0x3e0 kernel/notifier.c:93
      call_netdevice_notifiers_extack net/core/dev.c:2032 [inline]
      call_netdevice_notifiers net/core/dev.c:2046 [inline]
      unregister_netdevice_many_notify+0xd81/0x1c40 net/core/dev.c:11352
      unregister_netdevice_many net/core/dev.c:11414 [inline]
      unregister_netdevice_queue+0x303/0x370 net/core/dev.c:11289
      unregister_netdevice include/linux/netdevice.h:3129 [inline]
      __tun_detach+0x6b9/0x1600 drivers/net/tun.c:685
      tun_detach drivers/net/tun.c:701 [inline]
      tun_chr_close+0x108/0x1b0 drivers/net/tun.c:3510
      __fput+0x24a/0x8a0 fs/file_table.c:422
      task_work_run+0x24f/0x310 kernel/task_work.c:228
      exit_task_work include/linux/task_work.h:40 [inline]
      do_exit+0xa2f/0x27f0 kernel/exit.c:882
      do_group_exit+0x207/0x2c0 kernel/exit.c:1031
      __do_sys_exit_group kernel/exit.c:1042 [inline]
      __se_sys_exit_group kernel/exit.c:1040 [inline]
      __x64_sys_exit_group+0x3f/0x40 kernel/exit.c:1040
      x64_sys_call+0x2634/0x2640 arch/x86/include/generated/asm/syscalls_64.h:232
      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:0x7f1acc77def9
    Code: Unable to access opcode bytes at 0x7f1acc77decf.
    RSP: 002b:00007ffeb26fa738 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f1acc77def9
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000043
    RBP: 00007f1acc7dd508 R08: 00007ffeb26f84d7 R09: 0000000000000003
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001
    R13: 0000000000000003 R14: 00000000ffffffff R15: 00007ffeb26fa8e0
     </TASK>
    Modules linked in:
    ---[ end trace 0000000000000000 ]---
     RIP: 0010:rt6_uncached_list_flush_dev net/ipv6/route.c:177 [inline]
     RIP: 0010:rt6_disable_ip+0x33e/0x7e0 net/ipv6/route.c:4914
    Code: 41 80 3c 04 00 74 0a e8 90 d0 9b f7 48 8b 7c 24 08 48 8b 07 48 89 44 24 10 4c 89 f0 48 c1 e8 03 48 b9 00 00 00 00 00 fc ff df <80> 3c 08 00 74 08 4c 89 f7 e8 64 d0 9b f7 48 8b 44 24 18 49 39 06
    RSP: 0018:ffffc900047374e0 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: 1ffff1100fdf8f33 RCX: dffffc0000000000
    RDX: 0000000000000000 RSI: 0000000000000004 RDI: ffff88807efc78c0
    RBP: ffffc900047375d0 R08: 0000000000000003 R09: fffff520008e6e8c
    R10: dffffc0000000000 R11: fffff520008e6e8c R12: 1ffff1100fdf8f18
    R13: ffff88807efc7998 R14: 0000000000000000 R15: ffff88807efc7930
    FS:  0000000000000000(0000) GS:ffff8880b8900000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000020002a80 CR3: 0000000022f62000 CR4: 00000000003506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    
    Fixes: e332bc67cf5e ("ipv6: Don't call with rt6_uncached_list_flush_dev")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Acked-by: Martin KaFai Lau <martin.lau@kernel.org>
    Link: https://patch.msgid.link/20240913083147.3095442-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: BRUNO VERNAY <bruno.vernay@se.com>
    Signed-off-by: Hugo SIMELIERE <hsimeliere.opensource@witekio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
irqchip/gic-v3: Handle CPU_PM_ENTER_FAILED correctly [+ + +]
Author: Yogesh Lal <quic_ylal@quicinc.com>
Date:   Fri Dec 20 15:09:07 2024 +0530

    irqchip/gic-v3: Handle CPU_PM_ENTER_FAILED correctly
    
    commit 0d62a49ab55c99e8deb4593b8d9f923de1ab5c18 upstream.
    
    When a CPU attempts to enter low power mode, it disables the redistributor
    and Group 1 interrupts and reinitializes the system registers upon wakeup.
    
    If the transition into low power mode fails, then the CPU_PM framework
    invokes the PM notifier callback with CPU_PM_ENTER_FAILED to allow the
    drivers to undo the state changes.
    
    The GIC V3 driver ignores CPU_PM_ENTER_FAILED, which leaves the GIC in
    disabled state.
    
    Handle CPU_PM_ENTER_FAILED in the same way as CPU_PM_EXIT to restore normal
    operation.
    
    [ tglx: Massage change log, add Fixes tag ]
    
    Fixes: 3708d52fc6bb ("irqchip: gic-v3: Implement CPU PM notifier")
    Signed-off-by: Yogesh Lal <quic_ylal@quicinc.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/all/20241220093907.2747601-1-quic_ylal@quicinc.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
irqchip/sunxi-nmi: Add missing SKIP_WAKE flag [+ + +]
Author: Philippe Simons <simons.philippe@gmail.com>
Date:   Sun Jan 12 13:34:02 2025 +0100

    irqchip/sunxi-nmi: Add missing SKIP_WAKE flag
    
    [ Upstream commit 3a748d483d80f066ca4b26abe45cdc0c367d13e9 ]
    
    Some boards with Allwinner SoCs connect the PMIC's IRQ pin to the SoC's NMI
    pin instead of a normal GPIO. Since the power key is connected to the PMIC,
    and people expect to wake up a suspended system via this key, the NMI IRQ
    controller must stay alive when the system goes into suspend.
    
    Add the SKIP_WAKE flag to prevent the sunxi NMI controller from going to
    sleep, so that the power key can wake up those systems.
    
    [ tglx: Fixed up coding style ]
    
    Signed-off-by: Philippe Simons <simons.philippe@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/all/20250112123402.388520-1-simons.philippe@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
jbd2: flush filesystem device before updating tail sequence [+ + +]
Author: Zhang Yi <yi.zhang@huawei.com>
Date:   Tue Dec 3 09:44:07 2024 +0800

    jbd2: flush filesystem device before updating tail sequence
    
    [ Upstream commit a0851ea9cd555c333795b85ddd908898b937c4e1 ]
    
    When committing transaction in jbd2_journal_commit_transaction(), the
    disk caches for the filesystem device should be flushed before updating
    the journal tail sequence. However, this step is missed if the journal
    is not located on the filesystem device. As a result, the filesystem may
    become inconsistent following a power failure or system crash. Fix it by
    ensuring that the filesystem device is flushed appropriately.
    
    Fixes: 3339578f0578 ("jbd2: cleanup journal tail after transaction commit")
    Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
    Link: https://lore.kernel.org/r/20241203014407.805916-3-yi.zhang@huaweicloud.com
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
kheaders: Ignore silly-rename files [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Fri Dec 13 13:50:01 2024 +0000

    kheaders: Ignore silly-rename files
    
    [ Upstream commit 973b710b8821c3401ad7a25360c89e94b26884ac ]
    
    Tell tar to ignore silly-rename files (".__afs*" and ".nfs*") when building
    the header archive.  These occur when a file that is open is unlinked
    locally, but hasn't yet been closed.  Such files are visible to the user
    via the getdents() syscall and so programs may want to do things with them.
    
    During the kernel build, such files may be made during the processing of
    header files and the cleanup may get deferred by fput() which may result in
    tar seeing these files when it reads the directory, but they may have
    disappeared by the time it tries to open them, causing tar to fail with an
    error.  Further, we don't want to include them in the tarball if they still
    exist.
    
    With CONFIG_HEADERS_INSTALL=y, something like the following may be seen:
    
       find: './kernel/.tmp_cpio_dir/include/dt-bindings/reset/.__afs2080': No such file or directory
       tar: ./include/linux/greybus/.__afs3C95: File removed before we read it
    
    The find warning doesn't seem to cause a problem.
    
    Fix this by telling tar when called from in gen_kheaders.sh to exclude such
    files.  This only affects afs and nfs; cifs uses the Windows Hidden
    attribute to prevent the file from being seen.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Link: https://lore.kernel.org/r/20241213135013.2964079-2-dhowells@redhat.com
    cc: Masahiro Yamada <masahiroy@kernel.org>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    cc: linux-nfs@vger.kernel.org
    cc: linux-kernel@vger.kernel.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: Linux 5.10.234 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Feb 1 18:22:34 2025 +0100

    Linux 5.10.234
    
    Link: https://lore.kernel.org/r/20250130140142.491490528@linuxfoundation.org
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Link: https://lore.kernel.org/r/20250131112129.273288063@linuxfoundation.org
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>                              =
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: kernelci.org bot <bot@kernelci.org>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
loop: let set_capacity_revalidate_and_notify update the bdev size [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Nov 16 15:56:53 2020 +0100

    loop: let set_capacity_revalidate_and_notify update the bdev size
    
    [ Upstream commit 3b4f85d02a4bd85cbea999a064235a47694bbb7b ]
    
    There is no good reason to call revalidate_disk_size separately.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: 74363ec674cb ("zram: fix uninitialized ZRAM not releasing backing device")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
m68k: Update ->thread.esp0 before calling syscall_trace() in ret_from_signal [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun Jul 25 17:19:45 2021 +0000

    m68k: Update ->thread.esp0 before calling syscall_trace() in ret_from_signal
    
    commit 50e43a57334400668952f8e551c9d87d3ed2dfef upstream.
    
    We get there when sigreturn has performed obscene acts on kernel stack;
    in particular, the location of pt_regs has shifted.  We are about to call
    syscall_trace(), which might stop for tracer.  If that happens, we'd better
    have task_pt_regs() returning correct result...
    
    Fucked-up-by: Al Viro <viro@zeniv.linux.org.uk>
    Fixes: bd6f56a75bb2 ("m68k: Missing syscall_trace() on sigreturn")
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Tested-by: Michael Schmitz <schmitzmic@gmail.com>
    Reviewed-by: Michael Schmitz <schmitzmic@gmail.com>
    Tested-by: Finn Thain <fthain@linux-m68k.org>
    Link: https://lore.kernel.org/r/YP2dMWeV1LkHiOpr@zeniv-ca.linux.org.uk
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Finn Thain <fthain@linux-m68k.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mac802154: check local interfaces before deleting sdata list [+ + +]
Author: Lizhi Xu <lizhi.xu@windriver.com>
Date:   Wed Nov 13 17:51:29 2024 +0800

    mac802154: check local interfaces before deleting sdata list
    
    [ Upstream commit eb09fbeb48709fe66c0d708aed81e910a577a30a ]
    
    syzkaller reported a corrupted list in ieee802154_if_remove. [1]
    
    Remove an IEEE 802.15.4 network interface after unregister an IEEE 802.15.4
    hardware device from the system.
    
    CPU0                                    CPU1
    ====                                    ====
    genl_family_rcv_msg_doit                ieee802154_unregister_hw
    ieee802154_del_iface                    ieee802154_remove_interfaces
    rdev_del_virtual_intf_deprecated        list_del(&sdata->list)
    ieee802154_if_remove
    list_del_rcu
    
    The net device has been unregistered, since the rcu grace period,
    unregistration must be run before ieee802154_if_remove.
    
    To avoid this issue, add a check for local->interfaces before deleting
    sdata list.
    
    [1]
    kernel BUG at lib/list_debug.c:58!
    Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
    CPU: 0 UID: 0 PID: 6277 Comm: syz-executor157 Not tainted 6.12.0-rc6-syzkaller-00005-g557329bcecc2 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    RIP: 0010:__list_del_entry_valid_or_report+0xf4/0x140 lib/list_debug.c:56
    Code: e8 a1 7e 00 07 90 0f 0b 48 c7 c7 e0 37 60 8c 4c 89 fe e8 8f 7e 00 07 90 0f 0b 48 c7 c7 40 38 60 8c 4c 89 fe e8 7d 7e 00 07 90 <0f> 0b 48 c7 c7 a0 38 60 8c 4c 89 fe e8 6b 7e 00 07 90 0f 0b 48 c7
    RSP: 0018:ffffc9000490f3d0 EFLAGS: 00010246
    RAX: 000000000000004e RBX: dead000000000122 RCX: d211eee56bb28d00
    RDX: 0000000000000000 RSI: 0000000080000000 RDI: 0000000000000000
    RBP: ffff88805b278dd8 R08: ffffffff8174a12c R09: 1ffffffff2852f0d
    R10: dffffc0000000000 R11: fffffbfff2852f0e R12: dffffc0000000000
    R13: dffffc0000000000 R14: dead000000000100 R15: ffff88805b278cc0
    FS:  0000555572f94380(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000056262e4a3000 CR3: 0000000078496000 CR4: 00000000003526f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     __list_del_entry_valid include/linux/list.h:124 [inline]
     __list_del_entry include/linux/list.h:215 [inline]
     list_del_rcu include/linux/rculist.h:157 [inline]
     ieee802154_if_remove+0x86/0x1e0 net/mac802154/iface.c:687
     rdev_del_virtual_intf_deprecated net/ieee802154/rdev-ops.h:24 [inline]
     ieee802154_del_iface+0x2c0/0x5c0 net/ieee802154/nl-phy.c:323
     genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
     genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
     genl_rcv_msg+0xb14/0xec0 net/netlink/genetlink.c:1210
     netlink_rcv_skb+0x1e3/0x430 net/netlink/af_netlink.c:2551
     genl_rcv+0x28/0x40 net/netlink/genetlink.c:1219
     netlink_unicast_kernel net/netlink/af_netlink.c:1331 [inline]
     netlink_unicast+0x7f6/0x990 net/netlink/af_netlink.c:1357
     netlink_sendmsg+0x8e4/0xcb0 net/netlink/af_netlink.c:1901
     sock_sendmsg_nosec net/socket.c:729 [inline]
     __sock_sendmsg+0x221/0x270 net/socket.c:744
     ____sys_sendmsg+0x52a/0x7e0 net/socket.c:2607
     ___sys_sendmsg net/socket.c:2661 [inline]
     __sys_sendmsg+0x292/0x380 net/socket.c:2690
     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
    
    Reported-and-tested-by: syzbot+985f827280dc3a6e7e92@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=985f827280dc3a6e7e92
    Signed-off-by: Lizhi Xu <lizhi.xu@windriver.com>
    Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/20241113095129.1457225-1-lizhi.xu@windriver.com
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
md/raid5: fix atomicity violation in raid5_cache_count [+ + +]
Author: Gui-Dong Han <2045gemini@gmail.com>
Date:   Fri Jan 12 15:10:17 2024 +0800

    md/raid5: fix atomicity violation in raid5_cache_count
    
    commit dfd2bf436709b2bccb78c2dda550dde93700efa7 upstream.
    
    In raid5_cache_count():
        if (conf->max_nr_stripes < conf->min_nr_stripes)
            return 0;
        return conf->max_nr_stripes - conf->min_nr_stripes;
    The current check is ineffective, as the values could change immediately
    after being checked.
    
    In raid5_set_cache_size():
        ...
        conf->min_nr_stripes = size;
        ...
        while (size > conf->max_nr_stripes)
            conf->min_nr_stripes = conf->max_nr_stripes;
        ...
    
    Due to intermediate value updates in raid5_set_cache_size(), concurrent
    execution of raid5_cache_count() and raid5_set_cache_size() may lead to
    inconsistent reads of conf->max_nr_stripes and conf->min_nr_stripes.
    The current checks are ineffective as values could change immediately
    after being checked, raising the risk of conf->min_nr_stripes exceeding
    conf->max_nr_stripes and potentially causing an integer overflow.
    
    This possible bug is found by an experimental static analysis tool
    developed by our team. This tool analyzes the locking APIs to extract
    function pairs that can be concurrently executed, and then analyzes the
    instructions in the paired functions to identify possible concurrency bugs
    including data races and atomicity violations. The above possible bug is
    reported when our tool analyzes the source code of Linux 6.2.
    
    To resolve this issue, it is suggested to introduce local variables
    'min_stripes' and 'max_stripes' in raid5_cache_count() to ensure the
    values remain stable throughout the check. Adding locks in
    raid5_cache_count() fails to resolve atomicity violations, as
    raid5_set_cache_size() may hold intermediate values of
    conf->min_nr_stripes while unlocked. With this patch applied, our tool no
    longer reports the bug, with the kernel configuration allyesconfig for
    x86_64. Due to the lack of associated hardware, we cannot test the patch
    in runtime testing, and just verify it according to the code logic.
    
    Fixes: edbe83ab4c27 ("md/raid5: allow the stripe_cache to grow and shrink.")
    Cc: stable@vger.kernel.org
    Signed-off-by: Gui-Dong Han <2045gemini@gmail.com>
    Reviewed-by: Yu Kuai <yukuai3@huawei.com>
    Signed-off-by: Song Liu <song@kernel.org>
    Link: https://lore.kernel.org/r/20240112071017.16313-1-2045gemini@gmail.com
    Signed-off-by: Song Liu <song@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/mlx5: Add priorities for counters in RDMA namespaces [+ + +]
Author: Aharon Landau <aharonl@nvidia.com>
Date:   Fri Oct 8 15:24:28 2021 +0300

    net/mlx5: Add priorities for counters in RDMA namespaces
    
    [ Upstream commit b8dfed636fc6239396c3a2ae5f812505906cf215 ]
    
    Add additional flow steering priorities in the RDMA namespace.
    This allows adding flow counters to count filtered RDMA traffic and then
    continue processing in the regular RDMA steering flow.
    
    Signed-off-by: Aharon Landau <aharonl@nvidia.com>
    Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
    Signed-off-by: Mark Zhang <markzhang@nvidia.com>
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Stable-dep-of: c08d3e62b2e7 ("net/mlx5: Fix RDMA TX steering prio")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/mlx5: Fix RDMA TX steering prio [+ + +]
Author: Patrisious Haddad <phaddad@nvidia.com>
Date:   Wed Jan 15 13:39:04 2025 +0200

    net/mlx5: Fix RDMA TX steering prio
    
    [ Upstream commit c08d3e62b2e73e14da318a1d20b52d0486a28ee0 ]
    
    User added steering rules at RDMA_TX were being added to the first prio,
    which is the counters prio.
    Fix that so that they are correctly added to the BYPASS_PRIO instead.
    
    Fixes: 24670b1a3166 ("net/mlx5: Add support for RDMA TX steering")
    Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
    Reviewed-by: Mark Bloch <mbloch@nvidia.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/mlx5: Refactor mlx5_get_flow_namespace [+ + +]
Author: Maor Gottlieb <maorg@nvidia.com>
Date:   Wed Dec 1 11:36:19 2021 -0800

    net/mlx5: Refactor mlx5_get_flow_namespace
    
    [ Upstream commit 4588fed7beae6d54ef4c67c77fc39364f8fc42af ]
    
    Have all the namespace type check in the same switch case.
    
    Signed-off-by: Maor Gottlieb <maorg@nvidia.com>
    Reviewed-by: Mark Bloch <mbloch@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Stable-dep-of: c08d3e62b2e7 ("net/mlx5: Fix RDMA TX steering prio")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: 802: LLC+SNAP OID:PID lookup on start of skb data [+ + +]
Author: Antonio Pastor <antonio.pastor@gmail.com>
Date:   Thu Jan 2 20:23:00 2025 -0500

    net: 802: LLC+SNAP OID:PID lookup on start of skb data
    
    [ Upstream commit 1e9b0e1c550c42c13c111d1a31e822057232abc4 ]
    
    802.2+LLC+SNAP frames received by napi_complete_done() with GRO and DSA
    have skb->transport_header set two bytes short, or pointing 2 bytes
    before network_header & skb->data. This was an issue as snap_rcv()
    expected offset to point to SNAP header (OID:PID), causing packet to
    be dropped.
    
    A fix at llc_fixup_skb() (a024e377efed) resets transport_header for any
    LLC consumers that may care about it, and stops SNAP packets from being
    dropped, but doesn't fix the problem which is that LLC and SNAP should
    not use transport_header offset.
    
    Ths patch eliminates the use of transport_header offset for SNAP lookup
    of OID:PID so that SNAP does not rely on the offset at all.
    The offset is reset after pull for any SNAP packet consumers that may
    (but shouldn't) use it.
    
    Fixes: fda55eca5a33 ("net: introduce skb_transport_header_was_set()")
    Signed-off-by: Antonio Pastor <antonio.pastor@gmail.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250103012303.746521-1-antonio.pastor@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: add exit_batch_rtnl() method [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Feb 6 14:42:57 2024 +0000

    net: add exit_batch_rtnl() method
    
    [ Upstream commit fd4f101edbd9f99567ab2adb1f2169579ede7c13 ]
    
    Many (struct pernet_operations)->exit_batch() methods have
    to acquire rtnl.
    
    In presence of rtnl mutex pressure, this makes cleanup_net()
    very slow.
    
    This patch adds a new exit_batch_rtnl() method to reduce
    number of rtnl acquisitions from cleanup_net().
    
    exit_batch_rtnl() handlers are called while rtnl is locked,
    and devices to be killed can be queued in a list provided
    as their second argument.
    
    A single unregister_netdevice_many() is called right
    before rtnl is released.
    
    exit_batch_rtnl() handlers are called before ->exit() and
    ->exit_batch() handlers.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Antoine Tenart <atenart@kernel.org>
    Link: https://lore.kernel.org/r/20240206144313.2050392-2-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 46841c7053e6 ("gtp: Use for_each_netdev_rcu() in gtp_genl_dump_pdp().")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ethernet: ti: cpsw_ale: Fix cpsw_ale_get_field() [+ + +]
Author: Sudheer Kumar Doredla <s-doredla@ti.com>
Date:   Wed Jan 8 22:54:33 2025 +0530

    net: ethernet: ti: cpsw_ale: Fix cpsw_ale_get_field()
    
    [ Upstream commit 03d120f27d050336f7e7d21879891542c4741f81 ]
    
    CPSW ALE has 75-bit ALE entries stored across three 32-bit words.
    The cpsw_ale_get_field() and cpsw_ale_set_field() functions support
    ALE field entries spanning up to two words at the most.
    
    The cpsw_ale_get_field() and cpsw_ale_set_field() functions work as
    expected when ALE field spanned across word1 and word2, but fails when
    ALE field spanned across word2 and word3.
    
    For example, while reading the ALE field spanned across word2 and word3
    (i.e. bits 62 to 64), the word3 data shifted to an incorrect position
    due to the index becoming zero while flipping.
    The same issue occurred when setting an ALE entry.
    
    This issue has not been seen in practice but will be an issue in the future
    if the driver supports accessing ALE fields spanning word2 and word3
    
    Fix the methods to handle getting/setting fields spanning up to two words.
    
    Fixes: b685f1a58956 ("net: ethernet: ti: cpsw_ale: Fix cpsw_ale_get_field()/cpsw_ale_set_field()")
    Signed-off-by: Sudheer Kumar Doredla <s-doredla@ti.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Roger Quadros <rogerq@kernel.org>
    Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com>
    Link: https://patch.msgid.link/20250108172433.311694-1-s-doredla@ti.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ethernet: xgbe: re-add aneg to supported features in PHY quirks [+ + +]
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Sun Jan 12 22:59:59 2025 +0100

    net: ethernet: xgbe: re-add aneg to supported features in PHY quirks
    
    commit 6be7aca91009865d8c2b73589270224a6b6e67ab upstream.
    
    In 4.19, before the switch to linkmode bitmaps, PHY_GBIT_FEATURES
    included feature bits for aneg and TP/MII ports.
    
                                     SUPPORTED_TP | \
                                     SUPPORTED_MII)
    
                                     SUPPORTED_10baseT_Full)
    
                                     SUPPORTED_100baseT_Full)
    
                                     SUPPORTED_1000baseT_Full)
    
                                     PHY_100BT_FEATURES | \
                                     PHY_DEFAULT_FEATURES)
    
                                     PHY_1000BT_FEATURES)
    
    Referenced commit expanded PHY_GBIT_FEATURES, silently removing
    PHY_DEFAULT_FEATURES. The removed part can be re-added by using
    the new PHY_GBIT_FEATURES definition.
    Not clear to me is why nobody seems to have noticed this issue.
    
    I stumbled across this when checking what it takes to make
    phy_10_100_features_array et al private to phylib.
    
    Fixes: d0939c26c53a ("net: ethernet: xgbe: expand PHY_GBIT_FEAUTRES")
    Cc: stable@vger.kernel.org
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://patch.msgid.link/46521973-7738-4157-9f5e-0bb6f694acba@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: fix data-races around sk->sk_forward_alloc [+ + +]
Author: Wang Liang <wangliang74@huawei.com>
Date:   Thu Nov 7 10:34:05 2024 +0800

    net: fix data-races around sk->sk_forward_alloc
    
    commit 073d89808c065ac4c672c0a613a71b27a80691cb upstream.
    
    Syzkaller reported this warning:
     ------------[ cut here ]------------
     WARNING: CPU: 0 PID: 16 at net/ipv4/af_inet.c:156 inet_sock_destruct+0x1c5/0x1e0
     Modules linked in:
     CPU: 0 UID: 0 PID: 16 Comm: ksoftirqd/0 Not tainted 6.12.0-rc5 #26
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
     RIP: 0010:inet_sock_destruct+0x1c5/0x1e0
     Code: 24 12 4c 89 e2 5b 48 c7 c7 98 ec bb 82 41 5c e9 d1 18 17 ff 4c 89 e6 5b 48 c7 c7 d0 ec bb 82 41 5c e9 bf 18 17 ff 0f 0b eb 83 <0f> 0b eb 97 0f 0b eb 87 0f 0b e9 68 ff ff ff 66 66 2e 0f 1f 84 00
     RSP: 0018:ffffc9000008bd90 EFLAGS: 00010206
     RAX: 0000000000000300 RBX: ffff88810b172a90 RCX: 0000000000000007
     RDX: 0000000000000002 RSI: 0000000000000300 RDI: ffff88810b172a00
     RBP: ffff88810b172a00 R08: ffff888104273c00 R09: 0000000000100007
     R10: 0000000000020000 R11: 0000000000000006 R12: ffff88810b172a00
     R13: 0000000000000004 R14: 0000000000000000 R15: ffff888237c31f78
     FS:  0000000000000000(0000) GS:ffff888237c00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 00007ffc63fecac8 CR3: 000000000342e000 CR4: 00000000000006f0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     Call Trace:
      <TASK>
      ? __warn+0x88/0x130
      ? inet_sock_destruct+0x1c5/0x1e0
      ? report_bug+0x18e/0x1a0
      ? handle_bug+0x53/0x90
      ? exc_invalid_op+0x18/0x70
      ? asm_exc_invalid_op+0x1a/0x20
      ? inet_sock_destruct+0x1c5/0x1e0
      __sk_destruct+0x2a/0x200
      rcu_do_batch+0x1aa/0x530
      ? rcu_do_batch+0x13b/0x530
      rcu_core+0x159/0x2f0
      handle_softirqs+0xd3/0x2b0
      ? __pfx_smpboot_thread_fn+0x10/0x10
      run_ksoftirqd+0x25/0x30
      smpboot_thread_fn+0xdd/0x1d0
      kthread+0xd3/0x100
      ? __pfx_kthread+0x10/0x10
      ret_from_fork+0x34/0x50
      ? __pfx_kthread+0x10/0x10
      ret_from_fork_asm+0x1a/0x30
      </TASK>
     ---[ end trace 0000000000000000 ]---
    
    Its possible that two threads call tcp_v6_do_rcv()/sk_forward_alloc_add()
    concurrently when sk->sk_state == TCP_LISTEN with sk->sk_lock unlocked,
    which triggers a data-race around sk->sk_forward_alloc:
    tcp_v6_rcv
        tcp_v6_do_rcv
            skb_clone_and_charge_r
                sk_rmem_schedule
                    __sk_mem_schedule
                        sk_forward_alloc_add()
                skb_set_owner_r
                    sk_mem_charge
                        sk_forward_alloc_add()
            __kfree_skb
                skb_release_all
                    skb_release_head_state
                        sock_rfree
                            sk_mem_uncharge
                                sk_forward_alloc_add()
                                sk_mem_reclaim
                                    // set local var reclaimable
                                    __sk_mem_reclaim
                                        sk_forward_alloc_add()
    
    In this syzkaller testcase, two threads call
    tcp_v6_do_rcv() with skb->truesize=768, the sk_forward_alloc changes like
    this:
     (cpu 1)             | (cpu 2)             | sk_forward_alloc
     ...                 | ...                 | 0
     __sk_mem_schedule() |                     | +4096 = 4096
                         | __sk_mem_schedule() | +4096 = 8192
     sk_mem_charge()     |                     | -768  = 7424
                         | sk_mem_charge()     | -768  = 6656
     ...                 |    ...              |
     sk_mem_uncharge()   |                     | +768  = 7424
     reclaimable=7424    |                     |
                         | sk_mem_uncharge()   | +768  = 8192
                         | reclaimable=8192    |
     __sk_mem_reclaim()  |                     | -4096 = 4096
                         | __sk_mem_reclaim()  | -8192 = -4096 != 0
    
    The skb_clone_and_charge_r() should not be called in tcp_v6_do_rcv() when
    sk->sk_state is TCP_LISTEN, it happens later in tcp_v6_syn_recv_sock().
    Fix the same issue in dccp_v6_do_rcv().
    
    Suggested-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Fixes: e994b2f0fb92 ("tcp: do not lock listener to process SYN packets")
    Signed-off-by: Wang Liang <wangliang74@huawei.com>
    Link: https://patch.msgid.link/20241107023405.889239-1-wangliang74@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Alva Lan <alvalan9@foxmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: net_namespace: Optimize the code [+ + +]
Author: Yajun Deng <yajun.deng@linux.dev>
Date:   Tue Aug 17 23:23:00 2021 +0800

    net: net_namespace: Optimize the code
    
    [ Upstream commit 41467d2ff4dfe1837cbb0f45e2088e6e787580c6 ]
    
    There is only one caller for ops_free(), so inline it.
    Separate net_drop_ns() and net_free(), so the net_free()
    can be called directly.
    Add free_exit_list() helper function for free net_exit_list.
    
    ====================
    v2:
     - v1 does not apply, rebase it.
    ====================
    
    Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: 46841c7053e6 ("gtp: Use for_each_netdev_rcu() in gtp_genl_dump_pdp().")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: sched: fix ets qdisc OOB Indexing [+ + +]
Author: Jamal Hadi Salim <jhs@mojatatu.com>
Date:   Sat Jan 11 09:57:39 2025 -0500

    net: sched: fix ets qdisc OOB Indexing
    
    commit d62b04fca4340a0d468d7853bd66e511935a18cb upstream.
    
    Haowei Yan <g1042620637@gmail.com> found that ets_class_from_arg() can
    index an Out-Of-Bound class in ets_class_from_arg() when passed clid of
    0. The overflow may cause local privilege escalation.
    
     [   18.852298] ------------[ cut here ]------------
     [   18.853271] UBSAN: array-index-out-of-bounds in net/sched/sch_ets.c:93:20
     [   18.853743] index 18446744073709551615 is out of range for type 'ets_class [16]'
     [   18.854254] CPU: 0 UID: 0 PID: 1275 Comm: poc Not tainted 6.12.6-dirty #17
     [   18.854821] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
     [   18.856532] Call Trace:
     [   18.857441]  <TASK>
     [   18.858227]  dump_stack_lvl+0xc2/0xf0
     [   18.859607]  dump_stack+0x10/0x20
     [   18.860908]  __ubsan_handle_out_of_bounds+0xa7/0xf0
     [   18.864022]  ets_class_change+0x3d6/0x3f0
     [   18.864322]  tc_ctl_tclass+0x251/0x910
     [   18.864587]  ? lock_acquire+0x5e/0x140
     [   18.865113]  ? __mutex_lock+0x9c/0xe70
     [   18.866009]  ? __mutex_lock+0xa34/0xe70
     [   18.866401]  rtnetlink_rcv_msg+0x170/0x6f0
     [   18.866806]  ? __lock_acquire+0x578/0xc10
     [   18.867184]  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
     [   18.867503]  netlink_rcv_skb+0x59/0x110
     [   18.867776]  rtnetlink_rcv+0x15/0x30
     [   18.868159]  netlink_unicast+0x1c3/0x2b0
     [   18.868440]  netlink_sendmsg+0x239/0x4b0
     [   18.868721]  ____sys_sendmsg+0x3e2/0x410
     [   18.869012]  ___sys_sendmsg+0x88/0xe0
     [   18.869276]  ? rseq_ip_fixup+0x198/0x260
     [   18.869563]  ? rseq_update_cpu_node_id+0x10a/0x190
     [   18.869900]  ? trace_hardirqs_off+0x5a/0xd0
     [   18.870196]  ? syscall_exit_to_user_mode+0xcc/0x220
     [   18.870547]  ? do_syscall_64+0x93/0x150
     [   18.870821]  ? __memcg_slab_free_hook+0x69/0x290
     [   18.871157]  __sys_sendmsg+0x69/0xd0
     [   18.871416]  __x64_sys_sendmsg+0x1d/0x30
     [   18.871699]  x64_sys_call+0x9e2/0x2670
     [   18.871979]  do_syscall_64+0x87/0x150
     [   18.873280]  ? do_syscall_64+0x93/0x150
     [   18.874742]  ? lock_release+0x7b/0x160
     [   18.876157]  ? do_user_addr_fault+0x5ce/0x8f0
     [   18.877833]  ? irqentry_exit_to_user_mode+0xc2/0x210
     [   18.879608]  ? irqentry_exit+0x77/0xb0
     [   18.879808]  ? clear_bhb_loop+0x15/0x70
     [   18.880023]  ? clear_bhb_loop+0x15/0x70
     [   18.880223]  ? clear_bhb_loop+0x15/0x70
     [   18.880426]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
     [   18.880683] RIP: 0033:0x44a957
     [   18.880851] Code: ff ff e8 fc 00 00 00 66 2e 0f 1f 84 00 00 00 00 00 66 90 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 8974 24 10
     [   18.881766] RSP: 002b:00007ffcdd00fad8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
     [   18.882149] RAX: ffffffffffffffda RBX: 00007ffcdd010db8 RCX: 000000000044a957
     [   18.882507] RDX: 0000000000000000 RSI: 00007ffcdd00fb70 RDI: 0000000000000003
     [   18.885037] RBP: 00007ffcdd010bc0 R08: 000000000703c770 R09: 000000000703c7c0
     [   18.887203] R10: 0000000000000080 R11: 0000000000000246 R12: 0000000000000001
     [   18.888026] R13: 00007ffcdd010da8 R14: 00000000004ca7d0 R15: 0000000000000001
     [   18.888395]  </TASK>
     [   18.888610] ---[ end trace ]---
    
    Fixes: dcc68b4d8084 ("net: sch_ets: Add a new Qdisc")
    Reported-by: Haowei Yan <g1042620637@gmail.com>
    Suggested-by: Haowei Yan <g1042620637@gmail.com>
    Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Link: https://patch.msgid.link/20250111145740.74755-1-jhs@mojatatu.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net_sched: cls_flow: validate TCA_FLOW_RSHIFT attribute [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jan 3 10:45:46 2025 +0000

    net_sched: cls_flow: validate TCA_FLOW_RSHIFT attribute
    
    [ Upstream commit a039e54397c6a75b713b9ce7894a62e06956aa92 ]
    
    syzbot found that TCA_FLOW_RSHIFT attribute was not validated.
    Right shitfing a 32bit integer is undefined for large shift values.
    
    UBSAN: shift-out-of-bounds in net/sched/cls_flow.c:329:23
    shift exponent 9445 is too large for 32-bit type 'u32' (aka 'unsigned int')
    CPU: 1 UID: 0 PID: 54 Comm: kworker/u8:3 Not tainted 6.13.0-rc3-syzkaller-00180-g4f619d518db9 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    Workqueue: ipv6_addrconf addrconf_dad_work
    Call Trace:
     <TASK>
      __dump_stack lib/dump_stack.c:94 [inline]
      dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
      ubsan_epilogue lib/ubsan.c:231 [inline]
      __ubsan_handle_shift_out_of_bounds+0x3c8/0x420 lib/ubsan.c:468
      flow_classify+0x24d5/0x25b0 net/sched/cls_flow.c:329
      tc_classify include/net/tc_wrapper.h:197 [inline]
      __tcf_classify net/sched/cls_api.c:1771 [inline]
      tcf_classify+0x420/0x1160 net/sched/cls_api.c:1867
      sfb_classify net/sched/sch_sfb.c:260 [inline]
      sfb_enqueue+0x3ad/0x18b0 net/sched/sch_sfb.c:318
      dev_qdisc_enqueue+0x4b/0x290 net/core/dev.c:3793
      __dev_xmit_skb net/core/dev.c:3889 [inline]
      __dev_queue_xmit+0xf0e/0x3f50 net/core/dev.c:4400
      dev_queue_xmit include/linux/netdevice.h:3168 [inline]
      neigh_hh_output include/net/neighbour.h:523 [inline]
      neigh_output include/net/neighbour.h:537 [inline]
      ip_finish_output2+0xd41/0x1390 net/ipv4/ip_output.c:236
      iptunnel_xmit+0x55d/0x9b0 net/ipv4/ip_tunnel_core.c:82
      udp_tunnel_xmit_skb+0x262/0x3b0 net/ipv4/udp_tunnel_core.c:173
      geneve_xmit_skb drivers/net/geneve.c:916 [inline]
      geneve_xmit+0x21dc/0x2d00 drivers/net/geneve.c:1039
      __netdev_start_xmit include/linux/netdevice.h:5002 [inline]
      netdev_start_xmit include/linux/netdevice.h:5011 [inline]
      xmit_one net/core/dev.c:3590 [inline]
      dev_hard_start_xmit+0x27a/0x7d0 net/core/dev.c:3606
      __dev_queue_xmit+0x1b73/0x3f50 net/core/dev.c:4434
    
    Fixes: e5dfb815181f ("[NET_SCHED]: Add flow classifier")
    Reported-by: syzbot+1dbb57d994e54aaa04d2@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/6777bf49.050a0220.178762.0040.GAE@google.com/T/#u
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250103104546.3714168-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfilter: conntrack: clamp maximum hashtable size to INT_MAX [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Wed Jan 8 22:56:33 2025 +0100

    netfilter: conntrack: clamp maximum hashtable size to INT_MAX
    
    [ Upstream commit b541ba7d1f5a5b7b3e2e22dc9e40e18a7d6dbc13 ]
    
    Use INT_MAX as maximum size for the conntrack hashtable. Otherwise, it
    is possible to hit WARN_ON_ONCE in __kvmalloc_node_noprof() when
    resizing hashtable because __GFP_NOWARN is unset. See:
    
      0708a0afe291 ("mm: Consider __GFP_NOWARN flag for oversized kvmalloc() calls")
    
    Note: hashtable resize is only possible from init_netns.
    
    Fixes: 9cc1c73ad666 ("netfilter: conntrack: avoid integer overflow when resizing")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: imbalance in flowtable binding [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Thu Jan 2 13:01:13 2025 +0100

    netfilter: nf_tables: imbalance in flowtable binding
    
    [ Upstream commit 13210fc63f353fe78584048079343413a3cdf819 ]
    
    All these cases cause imbalance between BIND and UNBIND calls:
    
    - Delete an interface from a flowtable with multiple interfaces
    
    - Add a (device to a) flowtable with --check flag
    
    - Delete a netns containing a flowtable
    
    - In an interactive nft session, create a table with owner flag and
      flowtable inside, then quit.
    
    Fix it by calling FLOW_BLOCK_UNBIND when unregistering hooks, then
    remove late FLOW_BLOCK_UNBIND call when destroying flowtable.
    
    Fixes: ff4bf2f42a40 ("netfilter: nf_tables: add nft_unregister_flowtable_hook()")
    Reported-by: Phil Sutter <phil@nwl.cc>
    Tested-by: Phil Sutter <phil@nwl.cc>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nft_dynset: honor stateful expressions in set definition [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Thu Jan 9 16:45:38 2025 +0100

    netfilter: nft_dynset: honor stateful expressions in set definition
    
    commit fca05d4d61e65fa573a3768f9019a42143c03349 upstream.
    
    If the set definition contains stateful expressions, allocate them for
    the newly added entries from the packet path.
    
    [ This backport includes nft_set_elem_expr_clone() which has been
      taken from 8cfd9b0f8515 ("netfilter: nftables: generalize set
      expressions support") and skip redundant expressions when set
      already provides it per ce5379963b28 ("netfilter: nft_dynset: dump
      expressions when set definition contains no expressions") ]
    
    Fixes: 65038428b2c6 ("netfilter: nf_tables: allow to specify stateful expression in set definition")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nfp: bpf: prevent integer overflow in nfp_bpf_event_output() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Mon Jan 13 09:18:39 2025 +0300

    nfp: bpf: prevent integer overflow in nfp_bpf_event_output()
    
    [ Upstream commit 16ebb6f5b6295c9688749862a39a4889c56227f8 ]
    
    The "sizeof(struct cmsg_bpf_event) + pkt_size + data_size" math could
    potentially have an integer wrapping bug on 32bit systems.  Check for
    this and return an error.
    
    Fixes: 9816dd35ecec ("nfp: bpf: perf event output helpers support")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://patch.msgid.link/6074805b-e78d-4b8a-bf05-e929b5377c28@stanley.mountain
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nfsd: add list_head nf_gc to struct nfsd_file [+ + +]
Author: Youzhong Yang <youzhong@gmail.com>
Date:   Wed Jul 10 10:40:35 2024 -0400

    nfsd: add list_head nf_gc to struct nfsd_file
    
    commit 8e6e2ffa6569a205f1805cbaeca143b556581da6 upstream.
    
    nfsd_file_put() in one thread can race with another thread doing
    garbage collection (running nfsd_file_gc() -> list_lru_walk() ->
    nfsd_file_lru_cb()):
    
      * In nfsd_file_put(), nf->nf_ref is 1, so it tries to do nfsd_file_lru_add().
      * nfsd_file_lru_add() returns true (with NFSD_FILE_REFERENCED bit set)
      * garbage collector kicks in, nfsd_file_lru_cb() clears REFERENCED bit and
        returns LRU_ROTATE.
      * garbage collector kicks in again, nfsd_file_lru_cb() now decrements nf->nf_ref
        to 0, runs nfsd_file_unhash(), removes it from the LRU and adds to the dispose
        list [list_lru_isolate_move(lru, &nf->nf_lru, head)]
      * nfsd_file_put() detects NFSD_FILE_HASHED bit is cleared, so it tries to remove
        the 'nf' from the LRU [if (!nfsd_file_lru_remove(nf))]. The 'nf' has been added
        to the 'dispose' list by nfsd_file_lru_cb(), so nfsd_file_lru_remove(nf) simply
        treats it as part of the LRU and removes it, which leads to its removal from
        the 'dispose' list.
      * At this moment, 'nf' is unhashed with its nf_ref being 0, and not on the LRU.
        nfsd_file_put() continues its execution [if (refcount_dec_and_test(&nf->nf_ref))],
        as nf->nf_ref is already 0, nf->nf_ref is set to REFCOUNT_SATURATED, and the 'nf'
        gets no chance of being freed.
    
    nfsd_file_put() can also race with nfsd_file_cond_queue():
      * In nfsd_file_put(), nf->nf_ref is 1, so it tries to do nfsd_file_lru_add().
      * nfsd_file_lru_add() sets REFERENCED bit and returns true.
      * Some userland application runs 'exportfs -f' or something like that, which triggers
        __nfsd_file_cache_purge() -> nfsd_file_cond_queue().
      * In nfsd_file_cond_queue(), it runs [if (!nfsd_file_unhash(nf))], unhash is done
        successfully.
      * nfsd_file_cond_queue() runs [if (!nfsd_file_get(nf))], now nf->nf_ref goes to 2.
      * nfsd_file_cond_queue() runs [if (nfsd_file_lru_remove(nf))], it succeeds.
      * nfsd_file_cond_queue() runs [if (refcount_sub_and_test(decrement, &nf->nf_ref))]
        (with "decrement" being 2), so the nf->nf_ref goes to 0, the 'nf' is added to the
        dispose list [list_add(&nf->nf_lru, dispose)]
      * nfsd_file_put() detects NFSD_FILE_HASHED bit is cleared, so it tries to remove
        the 'nf' from the LRU [if (!nfsd_file_lru_remove(nf))], although the 'nf' is not
        in the LRU, but it is linked in the 'dispose' list, nfsd_file_lru_remove() simply
        treats it as part of the LRU and removes it. This leads to its removal from
        the 'dispose' list!
      * Now nf->ref is 0, unhashed. nfsd_file_put() continues its execution and set
        nf->nf_ref to REFCOUNT_SATURATED.
    
    As shown in the above analysis, using nf_lru for both the LRU list and dispose list
    can cause the leaks. This patch adds a new list_head nf_gc in struct nfsd_file, and uses
    it for the dispose list. This does not fix the nfsd_file leaking issue completely.
    
    Signed-off-by: Youzhong Yang <youzhong@gmail.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nvme: let set_capacity_revalidate_and_notify update the bdev size [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Nov 16 15:56:54 2020 +0100

    nvme: let set_capacity_revalidate_and_notify update the bdev size
    
    [ Upstream commit 5dd55749b79cdf471ca0966ad91541daebac3e2f ]
    
    There is no good reason to call revalidate_disk_size separately.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: 74363ec674cb ("zram: fix uninitialized ZRAM not releasing backing device")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvmet: propagate npwg topology [+ + +]
Author: Luis Chamberlain <mcgrof@kernel.org>
Date:   Tue Dec 17 18:33:25 2024 -0800

    nvmet: propagate npwg topology
    
    [ Upstream commit b579d6fdc3a9149bb4d2b3133cc0767130ed13e6 ]
    
    Ensure we propagate npwg to the target as well instead
    of assuming its the same logical blocks per physical block.
    
    This ensures devices with large IUs information properly
    propagated on the target.
    
    Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ocfs2: correct return value of ocfs2_local_free_info() [+ + +]
Author: Joseph Qi <joseph.qi@linux.alibaba.com>
Date:   Sun May 28 21:20:32 2023 +0800

    ocfs2: correct return value of ocfs2_local_free_info()
    
    [ Upstream commit d32840ad4a111c6abd651fbf6b5996e6123913da ]
    
    Now in ocfs2_local_free_info(), it returns 0 even if it actually fails.
    Though it doesn't cause any real problem since the only caller
    dquot_disable() ignores the return value, we'd better return correct as it
    is.
    
    Link: https://lkml.kernel.org/r/20230528132033.217664-1-joseph.qi@linux.alibaba.com
    Signed-off-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Joseph Qi <jiangqi903@gmail.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Stable-dep-of: 5f3fd772d152 ("ocfs2: fix slab-use-after-free due to dangling pointer dqi_priv")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ocfs2: fix slab-use-after-free due to dangling pointer dqi_priv [+ + +]
Author: Dennis Lam <dennis.lamerice@gmail.com>
Date:   Tue Dec 17 21:39:25 2024 -0500

    ocfs2: fix slab-use-after-free due to dangling pointer dqi_priv
    
    [ Upstream commit 5f3fd772d152229d94602bca243fbb658068a597 ]
    
    When mounting ocfs2 and then remounting it as read-only, a
    slab-use-after-free occurs after the user uses a syscall to
    quota_getnextquota.  Specifically, sb_dqinfo(sb, type)->dqi_priv is the
    dangling pointer.
    
    During the remounting process, the pointer dqi_priv is freed but is never
    set as null leaving it to be accessed.  Additionally, the read-only option
    for remounting sets the DQUOT_SUSPENDED flag instead of setting the
    DQUOT_USAGE_ENABLED flags.  Moreover, later in the process of getting the
    next quota, the function ocfs2_get_next_id is called and only checks the
    quota usage flags and not the quota suspended flags.
    
    To fix this, I set dqi_priv to null when it is freed after remounting with
    read-only and put a check for DQUOT_SUSPENDED in ocfs2_get_next_id.
    
    [akpm@linux-foundation.org: coding-style cleanups]
    Link: https://lkml.kernel.org/r/20241218023924.22821-2-dennis.lamerice@gmail.com
    Fixes: 8f9e8f5fcc05 ("ocfs2: Fix Q_GETNEXTQUOTA for filesystem without quotas")
    Signed-off-by: Dennis Lam <dennis.lamerice@gmail.com>
    Reported-by: syzbot+d173bf8a5a7faeede34c@syzkaller.appspotmail.com
    Tested-by: syzbot+d173bf8a5a7faeede34c@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/6731d26f.050a0220.1fb99c.014b.GAE@google.com/T/
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Partial revert of xhci: use pm_ptr() instead #ifdef for CONFIG_PM conditionals [+ + +]
Author: Ron Economos <re@w6rz.net>
Date:   Sat Jan 18 04:24:09 2025 -0800

    Partial revert of xhci: use pm_ptr() instead #ifdef for CONFIG_PM conditionals
    
    commit 448fe5a1a4b538b235a43e57863c3a078bd13b01 upstream.
    
    commit 9734fd7a2777 ("xhci: use pm_ptr() instead of #ifdef for CONFIG_PM
    conditionals") did not quite work properly in the 5.15.y branch where it was
    applied to fix a build error when CONFIG_PM was set as it left the following
    build errors still present:
    
            ERROR: modpost: "xhci_suspend" [drivers/usb/host/xhci-pci.ko] undefined!
            ERROR: modpost: "xhci_resume" [drivers/usb/host/xhci-pci.ko] undefined!
    
    Fix this up by properly placing the #ifdef CONFIG_PM in the xhci-pci.c and
    hcd.h files to handle this correctly.
    
    Link: https://lore.kernel.org/r/133dbfa0-4a37-4ae0-bb95-1a35f668ec11@w6rz.net
    Signed-off-by: Ron Economos <re@w6rz.net>
    Link: https://lore.kernel.org/r/d0919169-ee06-4bdd-b2e3-2f776db90971@roeck-us.net
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    [ Trimmed the partial revert down to an even smaller bit to only be what
      is required to fix the build error - gregkh]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
phy: usb: Add "wake on" functionality for newer Synopsis XHCI controllers [+ + +]
Author: Al Cooper <alcooperx@gmail.com>
Date:   Mon Feb 14 19:24:21 2022 -0800

    phy: usb: Add "wake on" functionality for newer Synopsis XHCI controllers
    
    [ Upstream commit ae532b2b7aa5a3dad036aef4e0b177607172d276 ]
    
    Add "wake on" support for the newer Synopsis based XHCI only controller.
    This works on the 72165 and 72164 and newer chips and does not work
    on 7216 based systems. Also switch the USB sysclk to a slower clock
    on suspend to save additional power in S2. The clock switch will only
    save power on the 72165b0 and newer chips and is a nop on older chips.
    
    Signed-off-by: Al Cooper <alcooperx@gmail.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20220215032422.5179-1-f.fainelli@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Stable-dep-of: 0a92ea87bdd6 ("phy: usb: Toggle the PHY power during init")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

phy: usb: Fix clock imbalance for suspend/resume [+ + +]
Author: Justin Chen <justinpopo6@gmail.com>
Date:   Wed Oct 5 14:30:18 2022 -0700

    phy: usb: Fix clock imbalance for suspend/resume
    
    commit 8484199c09347bdd5d81ee8a2bc530850f900797 upstream.
    
    We should be disabling clocks when wake from USB is not needed. Since
    this wasn't done, we had a clock imbalance since clocks were always
    being enabled on resume.
    
    Fixes: ae532b2b7aa5 ("phy: usb: Add "wake on" functionality for newer Synopsis XHCI controllers")
    Fixes: b0c0b66c0b43 ("phy: usb: Add support for wake and USB low power mode for 7211 S2/S5")
    Signed-off-by: Justin Chen <justinpopo6@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/1665005418-15807-7-git-send-email-justinpopo6@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

phy: usb: Use slow clock for wake enabled suspend [+ + +]
Author: Justin Chen <justinpopo6@gmail.com>
Date:   Wed Oct 5 14:30:17 2022 -0700

    phy: usb: Use slow clock for wake enabled suspend
    
    commit 700c44b508020a3ea29d297c677f8d4ab14b7e6a upstream.
    
    The logic was incorrect when switching to slow clock. We want the slow
    clock if wake_enabled is set.
    
    Fixes: ae532b2b7aa5 ("phy: usb: Add "wake on" functionality for newer Synopsis XHCI controllers")
    Signed-off-by: Justin Chen <justinpopo6@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/1665005418-15807-6-git-send-email-justinpopo6@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
poll_wait: add mb() to fix theoretical race between waitqueue_active() and .poll() [+ + +]
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Tue Jan 7 17:27:17 2025 +0100

    poll_wait: add mb() to fix theoretical race between waitqueue_active() and .poll()
    
    [ Upstream commit cacd9ae4bf801ff4125d8961bb9a3ba955e51680 ]
    
    As the comment above waitqueue_active() explains, it can only be used
    if both waker and waiter have mb()'s that pair with each other. However
    __pollwait() is broken in this respect.
    
    This is not pipe-specific, but let's look at pipe_poll() for example:
    
            poll_wait(...); // -> __pollwait() -> add_wait_queue()
    
            LOAD(pipe->head);
            LOAD(pipe->head);
    
    In theory these LOAD()'s can leak into the critical section inside
    add_wait_queue() and can happen before list_add(entry, wq_head), in this
    case pipe_poll() can race with wakeup_pipe_readers/writers which do
    
            smp_mb();
            if (waitqueue_active(wq_head))
                    wake_up_interruptible(wq_head);
    
    There are more __pollwait()-like functions (grep init_poll_funcptr), and
    it seems that at least ep_ptable_queue_proc() has the same problem, so the
    patch adds smp_mb() into poll_wait().
    
    Link: https://lore.kernel.org/all/20250102163320.GA17691@redhat.com/
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Link: https://lore.kernel.org/r/20250107162717.GA18922@redhat.com
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/hns: Fix deadlock on SRQ async events. [+ + +]
Author: Chengchang Tang <tangchengchang@huawei.com>
Date:   Fri Apr 12 17:16:10 2024 +0800

    RDMA/hns: Fix deadlock on SRQ async events.
    
    commit b46494b6f9c19f141114a57729e198698f40af37 upstream.
    
    xa_lock for SRQ table may be required in AEQ. Use xa_store_irq()/
    xa_erase_irq() to avoid deadlock.
    
    Fixes: 81fce6291d99 ("RDMA/hns: Add SRQ asynchronous event support")
    Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
    Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
    Link: https://lore.kernel.org/r/20240412091616.370789-5-huangjunxian6@hisilicon.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "PCI: Use preserve_config in place of pci_flags" [+ + +]
Author: Terry Tritton <terry.tritton@linaro.org>
Date:   Fri Jan 17 15:15:51 2025 +0000

    Revert "PCI: Use preserve_config in place of pci_flags"
    
    This reverts commit 0dde3ae52a0dcc5cdfe2185ec58ec52b43fda22e which is
    commit 7246a4520b4bf1494d7d030166a11b5226f6d508 upstream.
    
    This patch causes a regression in cuttlefish/crossvm boot on arm64.
    
    The patch was part of a series that when applied will not cause a regression
    but this patch was backported to the 5.10 branch by itself.
    
    The other patches do not apply cleanly to the 5.10 branch.
    
    Signed-off-by: Terry Tritton <terry.tritton@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "usb: gadget: u_serial: Disable ep before setting port to null to fix the crash caused by port being null" [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Jan 17 09:17:12 2025 +0100

    Revert "usb: gadget: u_serial: Disable ep before setting port to null to fix the crash caused by port being null"
    
    commit 086fd062bc3883ae1ce4166cff5355db315ad879 upstream.
    
    This reverts commit 13014969cbf07f18d62ceea40bd8ca8ec9d36cec.
    
    It is reported to cause crashes on Tegra systems, so revert it for now.
    
    Link: https://lore.kernel.org/r/1037c1ad-9230-4181-b9c3-167dbaa47644@nvidia.com
    Reported-by: Jon Hunter <jonathanh@nvidia.com>
    Cc: stable <stable@kernel.org>
    Cc: Lianqin Hu <hulianqin@vivo.com>
    Link: https://lore.kernel.org/r/2025011711-yippee-fever-a737@gregkh
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
riscv: Fix sleeping in invalid context in die() [+ + +]
Author: Nam Cao <namcao@linutronix.de>
Date:   Mon Nov 18 10:13:33 2024 +0100

    riscv: Fix sleeping in invalid context in die()
    
    commit 6a97f4118ac07cfdc316433f385dbdc12af5025e upstream.
    
    die() can be called in exception handler, and therefore cannot sleep.
    However, die() takes spinlock_t which can sleep with PREEMPT_RT enabled.
    That causes the following warning:
    
    BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
    in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 285, name: mutex
    preempt_count: 110001, expected: 0
    RCU nest depth: 0, expected: 0
    CPU: 0 UID: 0 PID: 285 Comm: mutex Not tainted 6.12.0-rc7-00022-ge19049cf7d56-dirty #234
    Hardware name: riscv-virtio,qemu (DT)
    Call Trace:
        dump_backtrace+0x1c/0x24
        show_stack+0x2c/0x38
        dump_stack_lvl+0x5a/0x72
        dump_stack+0x14/0x1c
        __might_resched+0x130/0x13a
        rt_spin_lock+0x2a/0x5c
        die+0x24/0x112
        do_trap_insn_illegal+0xa0/0xea
        _new_vmalloc_restore_context_a0+0xcc/0xd8
    Oops - illegal instruction [#1]
    
    Switch to use raw_spinlock_t, which does not sleep even with PREEMPT_RT
    enabled.
    
    Fixes: 76d2a0493a17 ("RISC-V: Init and Halt Code")
    Signed-off-by: Nam Cao <namcao@linutronix.de>
    Cc: stable@vger.kernel.org
    Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Link: https://lore.kernel.org/r/20241118091333.1185288-1-namcao@linutronix.de
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
scripts/sorttable: fix orc_sort_cmp() to maintain symmetry and transitivity [+ + +]
Author: Kuan-Wei Chiu <visitorckw@gmail.com>
Date:   Thu Dec 26 22:03:32 2024 +0800

    scripts/sorttable: fix orc_sort_cmp() to maintain symmetry and transitivity
    
    commit 0210d251162f4033350a94a43f95b1c39ec84a90 upstream.
    
    The orc_sort_cmp() function, used with qsort(), previously violated the
    symmetry and transitivity rules required by the C standard.  Specifically,
    when both entries are ORC_TYPE_UNDEFINED, it could result in both a < b
    and b < a, which breaks the required symmetry and transitivity.  This can
    lead to undefined behavior and incorrect sorting results, potentially
    causing memory corruption in glibc implementations [1].
    
    Symmetry: If x < y, then y > x.
    Transitivity: If x < y and y < z, then x < z.
    
    Fix the comparison logic to return 0 when both entries are
    ORC_TYPE_UNDEFINED, ensuring compliance with qsort() requirements.
    
    Link: https://www.qualys.com/2024/01/30/qsort.txt [1]
    Link: https://lkml.kernel.org/r/20241226140332.2670689-1-visitorckw@gmail.com
    Fixes: 57fa18994285 ("scripts/sorttable: Implement build-time ORC unwind table sorting")
    Fixes: fb799447ae29 ("x86,objtool: Split UNWIND_HINT_EMPTY in two")
    Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com>
    Cc: Ching-Chun (Jim) Huang <jserv@ccns.ncku.edu.tw>
    Cc: <chuang@cs.nycu.edu.tw>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Josh Poimboeuf <jpoimboe@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Shile Zhang <shile.zhang@linux.alibaba.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
scsi: iscsi: Fix redundant response for ISCSI_UEVENT_GET_HOST_STATS request [+ + +]
Author: Xiang Zhang <hawkxiang.cpp@gmail.com>
Date:   Tue Jan 7 10:24:31 2025 +0800

    scsi: iscsi: Fix redundant response for ISCSI_UEVENT_GET_HOST_STATS request
    
    [ Upstream commit 63ca02221cc5aa0731fe2b0cc28158aaa4b84982 ]
    
    The ISCSI_UEVENT_GET_HOST_STATS request is already handled in
    iscsi_get_host_stats(). This fix ensures that redundant responses are
    skipped in iscsi_if_rx().
    
     - On success: send reply and stats from iscsi_get_host_stats()
       within if_recv_msg().
    
     - On error: fall through.
    
    Signed-off-by: Xiang Zhang <hawkxiang.cpp@gmail.com>
    Link: https://lore.kernel.org/r/20250107022432.65390-1-hawkxiang.cpp@gmail.com
    Reviewed-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: sg: Fix slab-use-after-free read in sg_release() [+ + +]
Author: Suraj Sonawane <surajsonawane0215@gmail.com>
Date:   Wed Nov 20 18:29:44 2024 +0530

    scsi: sg: Fix slab-use-after-free read in sg_release()
    
    commit f10593ad9bc36921f623361c9e3dd96bd52d85ee upstream.
    
    Fix a use-after-free bug in sg_release(), detected by syzbot with KASAN:
    
    BUG: KASAN: slab-use-after-free in lock_release+0x151/0xa30
    kernel/locking/lockdep.c:5838
    __mutex_unlock_slowpath+0xe2/0x750 kernel/locking/mutex.c:912
    sg_release+0x1f4/0x2e0 drivers/scsi/sg.c:407
    
    In sg_release(), the function kref_put(&sfp->f_ref, sg_remove_sfp) is
    called before releasing the open_rel_lock mutex. The kref_put() call may
    decrement the reference count of sfp to zero, triggering its cleanup
    through sg_remove_sfp(). This cleanup includes scheduling deferred work
    via sg_remove_sfp_usercontext(), which ultimately frees sfp.
    
    After kref_put(), sg_release() continues to unlock open_rel_lock and may
    reference sfp or sdp. If sfp has already been freed, this results in a
    slab-use-after-free error.
    
    Move the kref_put(&sfp->f_ref, sg_remove_sfp) call after unlocking the
    open_rel_lock mutex. This ensures:
    
     - No references to sfp or sdp occur after the reference count is
       decremented.
    
     - Cleanup functions such as sg_remove_sfp() and
       sg_remove_sfp_usercontext() can safely execute without impacting the
       mutex handling in sg_release().
    
    The fix has been tested and validated by syzbot. This patch closes the
    bug reported at the following syzkaller link and ensures proper
    sequencing of resource cleanup and mutex operations, eliminating the
    risk of use-after-free errors in sg_release().
    
    Reported-by: syzbot+7efb5850a17ba6ce098b@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=7efb5850a17ba6ce098b
    Tested-by: syzbot+7efb5850a17ba6ce098b@syzkaller.appspotmail.com
    Fixes: cc833acbee9d ("sg: O_EXCL and other lock handling")
    Signed-off-by: Suraj Sonawane <surajsonawane0215@gmail.com>
    Link: https://lore.kernel.org/r/20241120125944.88095-1-surajsonawane0215@gmail.com
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: BRUNO VERNAY <bruno.vernay@se.com>
    Signed-off-by: Hugo SIMELIERE <hsimeliere.opensource@witekio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
sctp: sysctl: auth_enable: avoid using current->nsproxy [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Wed Jan 8 16:34:34 2025 +0100

    sctp: sysctl: auth_enable: avoid using current->nsproxy
    
    commit 15649fd5415eda664ef35780c2013adeb5d9c695 upstream.
    
    As mentioned in a previous commit of this series, using the 'net'
    structure via 'current' is not recommended for different reasons:
    
    - Inconsistency: getting info from the reader's/writer's netns vs only
      from the opener's netns.
    
    - current->nsproxy can be NULL in some cases, resulting in an 'Oops'
      (null-ptr-deref), e.g. when the current task is exiting, as spotted by
      syzbot [1] using acct(2).
    
    The 'net' structure can be obtained from the table->data using
    container_of().
    
    Note that table->data could also be used directly, but that would
    increase the size of this fix, while 'sctp.ctl_sock' still needs to be
    retrieved from 'net' structure.
    
    Fixes: b14878ccb7fa ("net: sctp: cache auth_enable per endpoint")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/67769ecb.050a0220.3a8527.003f.GAE@google.com [1]
    Suggested-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20250108-net-sysctl-current-nsproxy-v1-6-5df34b2083e8@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

sctp: sysctl: cookie_hmac_alg: avoid using current->nsproxy [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Wed Jan 8 16:34:32 2025 +0100

    sctp: sysctl: cookie_hmac_alg: avoid using current->nsproxy
    
    commit ea62dd1383913b5999f3d16ae99d411f41b528d4 upstream.
    
    As mentioned in a previous commit of this series, using the 'net'
    structure via 'current' is not recommended for different reasons:
    
    - Inconsistency: getting info from the reader's/writer's netns vs only
      from the opener's netns.
    
    - current->nsproxy can be NULL in some cases, resulting in an 'Oops'
      (null-ptr-deref), e.g. when the current task is exiting, as spotted by
      syzbot [1] using acct(2).
    
    The 'net' structure can be obtained from the table->data using
    container_of().
    
    Note that table->data could also be used directly, as this is the only
    member needed from the 'net' structure, but that would increase the size
    of this fix, to use '*data' everywhere 'net->sctp.sctp_hmac_alg' is
    used.
    
    Fixes: 3c68198e7511 ("sctp: Make hmac algorithm selection for cookie generation dynamic")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/67769ecb.050a0220.3a8527.003f.GAE@google.com [1]
    Suggested-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20250108-net-sysctl-current-nsproxy-v1-4-5df34b2083e8@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

sctp: sysctl: rto_min/max: avoid using current->nsproxy [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Wed Jan 8 16:34:33 2025 +0100

    sctp: sysctl: rto_min/max: avoid using current->nsproxy
    
    [ Upstream commit 9fc17b76fc70763780aa78b38fcf4742384044a5 ]
    
    As mentioned in a previous commit of this series, using the 'net'
    structure via 'current' is not recommended for different reasons:
    
    - Inconsistency: getting info from the reader's/writer's netns vs only
      from the opener's netns.
    
    - current->nsproxy can be NULL in some cases, resulting in an 'Oops'
      (null-ptr-deref), e.g. when the current task is exiting, as spotted by
      syzbot [1] using acct(2).
    
    The 'net' structure can be obtained from the table->data using
    container_of().
    
    Note that table->data could also be used directly, as this is the only
    member needed from the 'net' structure, but that would increase the size
    of this fix, to use '*data' everywhere 'net->sctp.rto_min/max' is used.
    
    Fixes: 4f3fdf3bc59c ("sctp: add check rto_min and rto_max in sysctl")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/67769ecb.050a0220.3a8527.003f.GAE@google.com [1]
    Suggested-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20250108-net-sysctl-current-nsproxy-v1-5-5df34b2083e8@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sd: update the bdev size in sd_revalidate_disk [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Nov 16 15:56:55 2020 +0100

    sd: update the bdev size in sd_revalidate_disk
    
    [ Upstream commit b200e38c493b2a5acff4f86d40a3e45d546c664c ]
    
    This avoids the extra call to revalidate_disk_size in sd_rescan and
    is otherwise a no-op because the size did not change, or we are in
    the probe path.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Acked-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: 74363ec674cb ("zram: fix uninitialized ZRAM not releasing backing device")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
seccomp: Stub for !CONFIG_SECCOMP [+ + +]
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Wed Jan 8 23:44:45 2025 +0100

    seccomp: Stub for !CONFIG_SECCOMP
    
    [ Upstream commit f90877dd7fb5085dd9abd6399daf63dd2969fc90 ]
    
    When using !CONFIG_SECCOMP with CONFIG_GENERIC_ENTRY, the
    randconfig bots found the following snag:
    
       kernel/entry/common.c: In function 'syscall_trace_enter':
    >> kernel/entry/common.c:52:23: error: implicit declaration
       of function '__secure_computing' [-Wimplicit-function-declaration]
          52 |                 ret = __secure_computing(NULL);
             |                       ^~~~~~~~~~~~~~~~~~
    
    Since generic entry calls __secure_computing() unconditionally,
    fix this by moving the stub out of the ifdef clause for
    CONFIG_HAVE_ARCH_SECCOMP_FILTER so it's always available.
    
    Link: https://lore.kernel.org/oe-kbuild-all/202501061240.Fzk9qiFZ-lkp@intel.com/
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20250108-seccomp-stub-2-v2-1-74523d49420f@linaro.org
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
signal/m68k: Use force_sigsegv(SIGSEGV) in fpsp040_die [+ + +]
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Mon Jul 26 14:23:11 2021 -0500

    signal/m68k: Use force_sigsegv(SIGSEGV) in fpsp040_die
    
    commit a3616a3c02722d1edb95acc7fceade242f6553ba upstream.
    
    In the fpsp040 code when copyin or copyout fails call
    force_sigsegv(SIGSEGV) instead of do_exit(SIGSEGV).
    
    This solves a couple of problems.  Because do_exit embeds the ptrace
    stop PTRACE_EVENT_EXIT a complete stack frame needs to be present for
    that to work correctly.  There is always the information needed for a
    ptrace stop where get_signal is called.  So exiting with a signal
    solves the ptrace issue.
    
    Further exiting with a signal ensures that all of the threads in a
    process are killed not just the thread that malfunctioned.  Which
    avoids confusing userspace.
    
    To make force_sigsegv(SIGSEGV) work in fpsp040_die modify the code to
    save all of the registers and jump to ret_from_exception (which
    ultimately calls get_signal) after fpsp040_die returns.
    
    v2: Updated the branches to use gas's pseudo ops that automatically
        calculate the best branch instruction to use for the purpose.
    
    v1: https://lkml.kernel.org/r/87a6m8kgtx.fsf_-_@disp2133
    Link: https://lkml.kernel.org/r/87tukghjfs.fsf_-_@disp2133
    Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Finn Thain <fthain@linux-m68k.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
staging: iio: ad9832: Correct phase range check [+ + +]
Author: Zicheng Qu <quzicheng@huawei.com>
Date:   Thu Nov 7 01:10:15 2024 +0000

    staging: iio: ad9832: Correct phase range check
    
    commit 4636e859ebe0011f41e35fa79bab585b8004e9a3 upstream.
    
    User Perspective:
    When a user sets the phase value, the ad9832_write_phase() is called.
    The phase register has a 12-bit resolution, so the valid range is 0 to
    4095. If the phase offset value of 4096 is input, it effectively exactly
    equals 0 in the lower 12 bits, meaning no offset.
    
    Reasons for the Change:
    1) Original Condition (phase > BIT(AD9832_PHASE_BITS)):
    This condition allows a phase value equal to 2^12, which is 4096.
    However, this value exceeds the valid 12-bit range, as the maximum valid
    phase value should be 4095.
    2) Modified Condition (phase >= BIT(AD9832_PHASE_BITS)):
    Ensures that the phase value is within the valid range, preventing
    invalid datafrom being written.
    
    Impact on Subsequent Logic: st->data = cpu_to_be16(addr | phase):
    If the phase value is 2^12, i.e., 4096 (0001 0000 0000 0000), and addr
    is AD9832_REG_PHASE0 (1100 0000 0000 0000), then addr | phase results in
    1101 0000 0000 0000, occupying DB12. According to the section of WRITING
    TO A PHASE REGISTER in the datasheet, the MSB 12 PHASE0 bits should be
    DB11. The original condition leads to incorrect DB12 usage, which
    contradicts the datasheet and could pose potential issues for future
    updates if DB12 is used in such related cases.
    
    Fixes: ea707584bac1 ("Staging: IIO: DDS: AD9832 / AD9835 driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Zicheng Qu <quzicheng@huawei.com>
    Link: https://patch.msgid.link/20241107011015.2472600-3-quzicheng@huawei.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

staging: iio: ad9834: Correct phase range check [+ + +]
Author: Zicheng Qu <quzicheng@huawei.com>
Date:   Thu Nov 7 01:10:14 2024 +0000

    staging: iio: ad9834: Correct phase range check
    
    commit c0599762f0c7e260b99c6b7bceb8eae69b804c94 upstream.
    
    User Perspective:
    When a user sets the phase value, the ad9834_write_phase() is called.
    The phase register has a 12-bit resolution, so the valid range is 0 to
    4095. If the phase offset value of 4096 is input, it effectively exactly
    equals 0 in the lower 12 bits, meaning no offset.
    
    Reasons for the Change:
    1) Original Condition (phase > BIT(AD9834_PHASE_BITS)):
    This condition allows a phase value equal to 2^12, which is 4096.
    However, this value exceeds the valid 12-bit range, as the maximum valid
    phase value should be 4095.
    2) Modified Condition (phase >= BIT(AD9834_PHASE_BITS)):
    Ensures that the phase value is within the valid range, preventing
    invalid datafrom being written.
    
    Impact on Subsequent Logic: st->data = cpu_to_be16(addr | phase):
    If the phase value is 2^12, i.e., 4096 (0001 0000 0000 0000), and addr
    is AD9834_REG_PHASE0 (1100 0000 0000 0000), then addr | phase results in
    1101 0000 0000 0000, occupying DB12. According to the section of WRITING
    TO A PHASE REGISTER in the datasheet, the MSB 12 PHASE0 bits should be
    DB11. The original condition leads to incorrect DB12 usage, which
    contradicts the datasheet and could pose potential issues for future
    updates if DB12 is used in such related cases.
    
    Fixes: 12b9d5bf76bf ("Staging: IIO: DDS: AD9833 / AD9834 driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Zicheng Qu <quzicheng@huawei.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://patch.msgid.link/20241107011015.2472600-2-quzicheng@huawei.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tcp/dccp: allow a connection when sk_max_ack_backlog is zero [+ + +]
Author: Zhongqiu Duan <dzq.aishenghu0@gmail.com>
Date:   Thu Jan 2 17:14:26 2025 +0000

    tcp/dccp: allow a connection when sk_max_ack_backlog is zero
    
    [ Upstream commit 3479c7549fb1dfa7a1db4efb7347c7b8ef50de4b ]
    
    If the backlog of listen() is set to zero, sk_acceptq_is_full() allows
    one connection to be made, but inet_csk_reqsk_queue_is_full() does not.
    When the net.ipv4.tcp_syncookies is zero, inet_csk_reqsk_queue_is_full()
    will cause an immediate drop before the sk_acceptq_is_full() check in
    tcp_conn_request(), resulting in no connection can be made.
    
    This patch tries to keep consistent with 64a146513f8f ("[NET]: Revert
    incorrect accept queue backlog changes.").
    
    Link: https://lore.kernel.org/netdev/20250102080258.53858-1-kuniyu@amazon.com/
    Fixes: ef547f2ac16b ("tcp: remove max_qlen_log")
    Signed-off-by: Zhongqiu Duan <dzq.aishenghu0@gmail.com>
    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/20250102171426.915276-1-dzq.aishenghu0@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tcp/dccp: complete lockless accesses to sk->sk_max_ack_backlog [+ + +]
Author: Jason Xing <kernelxing@tencent.com>
Date:   Sun Mar 31 17:05:21 2024 +0800

    tcp/dccp: complete lockless accesses to sk->sk_max_ack_backlog
    
    [ Upstream commit 9a79c65f00e2b036e17af3a3a607d7d732b7affb ]
    
    Since commit 099ecf59f05b ("net: annotate lockless accesses to
    sk->sk_max_ack_backlog") decided to handle the sk_max_ack_backlog
    locklessly, there is one more function mostly called in TCP/DCCP
    cases. So this patch completes it:)
    
    Signed-off-by: Jason Xing <kernelxing@tencent.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20240331090521.71965-1-kerneljasonxing@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 3479c7549fb1 ("tcp/dccp: allow a connection when sk_max_ack_backlog is zero")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tls: Fix tls_sw_sendmsg error handling [+ + +]
Author: Benjamin Coddington <bcodding@redhat.com>
Date:   Sat Jan 4 10:29:45 2025 -0500

    tls: Fix tls_sw_sendmsg error handling
    
    [ Upstream commit b341ca51d2679829d26a3f6a4aa9aee9abd94f92 ]
    
    We've noticed that NFS can hang when using RPC over TLS on an unstable
    connection, and investigation shows that the RPC layer is stuck in a tight
    loop attempting to transmit, but forever getting -EBADMSG back from the
    underlying network.  The loop begins when tcp_sendmsg_locked() returns
    -EPIPE to tls_tx_records(), but that error is converted to -EBADMSG when
    calling the socket's error reporting handler.
    
    Instead of converting errors from tcp_sendmsg_locked(), let's pass them
    along in this path.  The RPC layer handles -EPIPE by reconnecting the
    transport, which prevents the endless attempts to transmit on a broken
    connection.
    
    Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
    Fixes: a42055e8d2c3 ("net/tls: Add support for async encryption of records for performance")
    Link: https://patch.msgid.link/9594185559881679d81f071b181a10eb07cd079f.1736004079.git.bcodding@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
usb-storage: Add max sectors quirk for Nokia 208 [+ + +]
Author: Lubomir Rintel <lrintel@redhat.com>
Date:   Wed Jan 1 22:22:06 2025 +0100

    usb-storage: Add max sectors quirk for Nokia 208
    
    commit cdef30e0774802df2f87024d68a9d86c3b99ca2a upstream.
    
    This fixes data corruption when accessing the internal SD card in mass
    storage mode.
    
    I am actually not too sure why. I didn't figure a straightforward way to
    reproduce the issue, but i seem to get garbage when issuing a lot (over 50)
    of large reads (over 120 sectors) are done in a quick succession. That is,
    time seems to matter here -- larger reads are fine if they are done with
    some delay between them.
    
    But I'm not great at understanding this sort of things, so I'll assume
    the issue other, smarter, folks were seeing with similar phones is the
    same problem and I'll just put my quirk next to theirs.
    
    The "Software details" screen on the phone is as follows:
    
      V 04.06
      07-08-13
      RM-849
      (c) Nokia
    
    TL;DR version of the device descriptor:
    
      idVendor           0x0421 Nokia Mobile Phones
      idProduct          0x06c2
      bcdDevice            4.06
      iManufacturer           1 Nokia
      iProduct                2 Nokia 208
    
    The patch assumes older firmwares are broken too (I'm unable to test, but
    no biggie if they aren't I guess), and I have no idea if newer firmware
    exists.
    
    Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
    Cc: stable <stable@kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/20250101212206.2386207-1-lkundrak@v3.sk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
USB: core: Disable LPM only for non-suspended ports [+ + +]
Author: Kai-Heng Feng <kaihengf@nvidia.com>
Date:   Fri Dec 6 15:48:17 2024 +0800

    USB: core: Disable LPM only for non-suspended ports
    
    commit 59bfeaf5454b7e764288d84802577f4a99bf0819 upstream.
    
    There's USB error when tegra board is shutting down:
    [  180.919315] usb 2-3: Failed to set U1 timeout to 0x0,error code -113
    [  180.919995] usb 2-3: Failed to set U1 timeout to 0xa,error code -113
    [  180.920512] usb 2-3: Failed to set U2 timeout to 0x4,error code -113
    [  186.157172] tegra-xusb 3610000.usb: xHCI host controller not responding, assume dead
    [  186.157858] tegra-xusb 3610000.usb: HC died; cleaning up
    [  186.317280] tegra-xusb 3610000.usb: Timeout while waiting for evaluate context command
    
    The issue is caused by disabling LPM on already suspended ports.
    
    For USB2 LPM, the LPM is already disabled during port suspend. For USB3
    LPM, port won't transit to U1/U2 when it's already suspended in U3,
    hence disabling LPM is only needed for ports that are not suspended.
    
    Cc: Wayne Chang <waynec@nvidia.com>
    Cc: stable <stable@kernel.org>
    Fixes: d920a2ed8620 ("usb: Disable USB3 LPM at shutdown")
    Signed-off-by: Kai-Heng Feng <kaihengf@nvidia.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Link: https://lore.kernel.org/r/20241206074817.89189-1-kaihengf@nvidia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
usb: dwc3: gadget: fix writing NYET threshold [+ + +]
Author: André Draszik <andre.draszik@linaro.org>
Date:   Mon Dec 9 11:49:53 2024 +0000

    usb: dwc3: gadget: fix writing NYET threshold
    
    commit 01ea6bf5cb58b20cc1bd159f0cf74a76cf04bb69 upstream.
    
    Before writing a new value to the register, the old value needs to be
    masked out for the new value to be programmed as intended, because at
    least in some cases the reset value of that field is 0xf (max value).
    
    At the moment, the dwc3 core initialises the threshold to the maximum
    value (0xf), with the option to override it via a DT. No upstream DTs
    seem to override it, therefore this commit doesn't change behaviour for
    any upstream platform. Nevertheless, the code should be fixed to have
    the desired outcome.
    
    Do so.
    
    Fixes: 80caf7d21adc ("usb: dwc3: add lpm erratum support")
    Cc: stable@vger.kernel.org # 5.10+ (needs adjustment for 5.4)
    Signed-off-by: André Draszik <andre.draszik@linaro.org>
    Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/20241209-dwc3-nyet-fix-v2-1-02755683345b@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: fix reference leak in usb_new_device() [+ + +]
Author: Ma Ke <make_ruc2021@163.com>
Date:   Wed Dec 18 15:13:46 2024 +0800

    usb: fix reference leak in usb_new_device()
    
    commit 0df11fa8cee5a9cf8753d4e2672bb3667138c652 upstream.
    
    When device_add(&udev->dev) succeeds and a later call fails,
    usb_new_device() does not properly call device_del(). As comment of
    device_add() says, 'if device_add() succeeds, you should call
    device_del() when you want to get rid of it. If device_add() has not
    succeeded, use only put_device() to drop the reference count'.
    
    Found by code review.
    
    Cc: stable <stable@kernel.org>
    Fixes: 9f8b17e643fe ("USB: make usbdevices export their device nodes instead of using a separate class")
    Signed-off-by: Ma Ke <make_ruc2021@163.com>
    Reviewed-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/20241218071346.2973980-1-make_ruc2021@163.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: gadget: f_fs: Remove WARN_ON in functionfs_bind [+ + +]
Author: Akash M <akash.m5@samsung.com>
Date:   Thu Dec 19 18:22:19 2024 +0530

    usb: gadget: f_fs: Remove WARN_ON in functionfs_bind
    
    commit dfc51e48bca475bbee984e90f33fdc537ce09699 upstream.
    
    This commit addresses an issue related to below kernel panic where
    panic_on_warn is enabled. It is caused by the unnecessary use of WARN_ON
    in functionsfs_bind, which easily leads to the following scenarios.
    
    1.adb_write in adbd               2. UDC write via configfs
      =================                  =====================
    
    ->usb_ffs_open_thread()           ->UDC write
     ->open_functionfs()               ->configfs_write_iter()
      ->adb_open()                      ->gadget_dev_desc_UDC_store()
       ->adb_write()                     ->usb_gadget_register_driver_owner
                                          ->driver_register()
    ->StartMonitor()                       ->bus_add_driver()
     ->adb_read()                           ->gadget_bind_driver()
    <times-out without BIND event>           ->configfs_composite_bind()
                                              ->usb_add_function()
    ->open_functionfs()                        ->ffs_func_bind()
     ->adb_open()                               ->functionfs_bind()
                                           <ffs->state !=FFS_ACTIVE>
    
    The adb_open, adb_read, and adb_write operations are invoked from the
    daemon, but trying to bind the function is a process that is invoked by
    UDC write through configfs, which opens up the possibility of a race
    condition between the two paths. In this race scenario, the kernel panic
    occurs due to the WARN_ON from functionfs_bind when panic_on_warn is
    enabled. This commit fixes the kernel panic by removing the unnecessary
    WARN_ON.
    
    Kernel panic - not syncing: kernel: panic_on_warn set ...
    [   14.542395] Call trace:
    [   14.542464]  ffs_func_bind+0x1c8/0x14a8
    [   14.542468]  usb_add_function+0xcc/0x1f0
    [   14.542473]  configfs_composite_bind+0x468/0x588
    [   14.542478]  gadget_bind_driver+0x108/0x27c
    [   14.542483]  really_probe+0x190/0x374
    [   14.542488]  __driver_probe_device+0xa0/0x12c
    [   14.542492]  driver_probe_device+0x3c/0x220
    [   14.542498]  __driver_attach+0x11c/0x1fc
    [   14.542502]  bus_for_each_dev+0x104/0x160
    [   14.542506]  driver_attach+0x24/0x34
    [   14.542510]  bus_add_driver+0x154/0x270
    [   14.542514]  driver_register+0x68/0x104
    [   14.542518]  usb_gadget_register_driver_owner+0x48/0xf4
    [   14.542523]  gadget_dev_desc_UDC_store+0xf8/0x144
    [   14.542526]  configfs_write_iter+0xf0/0x138
    
    Fixes: ddf8abd25994 ("USB: f_fs: the FunctionFS driver")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Akash M <akash.m5@samsung.com>
    Link: https://lore.kernel.org/r/20241219125221.1679-1-akash.m5@samsung.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: gadget: u_serial: Disable ep before setting port to null to fix the crash caused by port being null [+ + +]
Author: Lianqin Hu <hulianqin@vivo.com>
Date:   Tue Dec 17 07:58:44 2024 +0000

    usb: gadget: u_serial: Disable ep before setting port to null to fix the crash caused by port being null
    
    commit 13014969cbf07f18d62ceea40bd8ca8ec9d36cec upstream.
    
    Considering that in some extreme cases, when performing the
    unbinding operation, gserial_disconnect has cleared gser->ioport,
    which triggers gadget reconfiguration, and then calls gs_read_complete,
    resulting in access to a null pointer. Therefore, ep is disabled before
    gserial_disconnect sets port to null to prevent this from happening.
    
    Call trace:
     gs_read_complete+0x58/0x240
     usb_gadget_giveback_request+0x40/0x160
     dwc3_remove_requests+0x170/0x484
     dwc3_ep0_out_start+0xb0/0x1d4
     __dwc3_gadget_start+0x25c/0x720
     kretprobe_trampoline.cfi_jt+0x0/0x8
     kretprobe_trampoline.cfi_jt+0x0/0x8
     udc_bind_to_driver+0x1d8/0x300
     usb_gadget_probe_driver+0xa8/0x1dc
     gadget_dev_desc_UDC_store+0x13c/0x188
     configfs_write_iter+0x160/0x1f4
     vfs_write+0x2d0/0x40c
     ksys_write+0x7c/0xf0
     __arm64_sys_write+0x20/0x30
     invoke_syscall+0x60/0x150
     el0_svc_common+0x8c/0xf8
     do_el0_svc+0x28/0xa0
     el0_svc+0x24/0x84
    
    Fixes: c1dca562be8a ("usb gadget: split out serial core")
    Cc: stable <stable@kernel.org>
    Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Lianqin Hu <hulianqin@vivo.com>
    Link: https://lore.kernel.org/r/TYUPR06MB621733B5AC690DBDF80A0DCCD2042@TYUPR06MB6217.apcprd06.prod.outlook.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
USB: serial: cp210x: add Phoenix Contact UPS Device [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Jan 8 11:24:36 2025 +0100

    USB: serial: cp210x: add Phoenix Contact UPS Device
    
    commit 854eee93bd6e3dca619d47087af4d65b2045828e upstream.
    
    Phoenix Contact sells UPS Quint devices [1] with a custom datacable [2]
    that embeds a Silicon Labs converter:
    
    Bus 001 Device 003: ID 1b93:1013 Silicon Labs Phoenix Contact UPS Device
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            0
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0        64
      idVendor           0x1b93
      idProduct          0x1013
      bcdDevice            1.00
      iManufacturer           1 Silicon Labs
      iProduct                2 Phoenix Contact UPS Device
      iSerial                 3 <redacted>
      bNumConfigurations     1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength       0x0020
        bNumInterfaces          1
        bConfigurationValue     1
        iConfiguration          0
        bmAttributes         0x80
          (Bus Powered)
        MaxPower              100mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              2 Phoenix Contact UPS Device
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
    
    [1] https://www.phoenixcontact.com/en-pc/products/power-supply-unit-quint-ps-1ac-24dc-10-2866763
    [2] https://www.phoenixcontact.com/en-il/products/data-cable-preassembled-ifs-usb-datacable-2320500
    
    Reported-by: Giuseppe Corbelli <giuseppe.corbelli@antaresvision.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

USB: serial: option: add MeiG Smart SRM815 [+ + +]
Author: Chukun Pan <amadeus@jmu.edu.cn>
Date:   Sun Dec 15 18:00:27 2024 +0800

    USB: serial: option: add MeiG Smart SRM815
    
    commit c1947d244f807b1f95605b75a4059e7b37b5dcc3 upstream.
    
    It looks like SRM815 shares ID with SRM825L.
    
    T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2dee ProdID=4d22 Rev= 4.14
    S:  Manufacturer=MEIG
    S:  Product=LTE-A Module
    S:  SerialNumber=123456
    C:* #Ifs= 5 Cfg#= 1 Atr=80 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
    Link: https://lore.kernel.org/lkml/20241215100027.1970930-1-amadeus@jmu.edu.cn/
    Link: https://lore.kernel.org/all/4333b4d0-281f-439d-9944-5570cbc4971d@gmail.com/
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

USB: serial: option: add Neoway N723-EA support [+ + +]
Author: Michal Hrusecky <michal.hrusecky@turris.com>
Date:   Tue Jan 7 17:08:29 2025 +0100

    USB: serial: option: add Neoway N723-EA support
    
    commit f5b435be70cb126866fa92ffc6f89cda9e112c75 upstream.
    
    Update the USB serial option driver to support Neoway N723-EA.
    
    ID 2949:8700 Marvell Mobile Composite Device Bus
    
    T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2949 ProdID=8700 Rev= 1.00
    S:  Manufacturer=Marvell
    S:  Product=Mobile Composite Device Bus
    S:  SerialNumber=200806006809080000
    C:* #Ifs= 5 Cfg#= 1 Atr=c0 MxPwr=500mA
    A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
    E:  Ad=87(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=0c(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=89(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=0b(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=86(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=0e(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=88(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=0a(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Tested successfully connecting to the Internet via rndis interface after
    dialing via AT commands on If#=4 or If#=6.
    
    Not sure of the purpose of the other serial interface.
    
    Signed-off-by: Michal Hrusecky <michal.hrusecky@turris.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

USB: serial: quatech2: fix null-ptr-deref in qt2_process_read_urb() [+ + +]
Author: Qasim Ijaz <qasdev00@gmail.com>
Date:   Mon Jan 13 18:00:34 2025 +0000

    USB: serial: quatech2: fix null-ptr-deref in qt2_process_read_urb()
    
    commit 575a5adf48b06a2980c9eeffedf699ed5534fade upstream.
    
    This patch addresses a null-ptr-deref in qt2_process_read_urb() due to
    an incorrect bounds check in the following:
    
           if (newport > serial->num_ports) {
                   dev_err(&port->dev,
                           "%s - port change to invalid port: %i\n",
                           __func__, newport);
                   break;
           }
    
    The condition doesn't account for the valid range of the serial->port
    buffer, which is from 0 to serial->num_ports - 1. When newport is equal
    to serial->num_ports, the assignment of "port" in the
    following code is out-of-bounds and NULL:
    
           serial_priv->current_port = newport;
           port = serial->port[serial_priv->current_port];
    
    The fix checks if newport is greater than or equal to serial->num_ports
    indicating it is out-of-bounds.
    
    Reported-by: syzbot <syzbot+506479ebf12fe435d01a@syzkaller.appspotmail.com>
    Closes: https://syzkaller.appspot.com/bug?extid=506479ebf12fe435d01a
    Fixes: f7a33e608d9a ("USB: serial: add quatech2 usb to serial driver")
    Cc: <stable@vger.kernel.org>      # 3.5
    Signed-off-by: Qasim Ijaz <qasdev00@gmail.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

USB: usblp: return error when setting unsupported protocol [+ + +]
Author: Jun Yan <jerrysteve1101@gmail.com>
Date:   Thu Dec 12 22:38:52 2024 +0800

    USB: usblp: return error when setting unsupported protocol
    
    commit 7a3d76a0b60b3f6fc3375e4de2174bab43f64545 upstream.
    
    Fix the regression introduced by commit d8c6edfa3f4e ("USB:
    usblp: don't call usb_set_interface if there's a single alt"),
    which causes that unsupported protocols can also be set via
    ioctl when the num_altsetting of the device is 1.
    
    Move the check for protocol support to the earlier stage.
    
    Fixes: d8c6edfa3f4e ("USB: usblp: don't call usb_set_interface if there's a single alt")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
    Link: https://lore.kernel.org/r/20241212143852.671889-1-jerrysteve1101@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
vfio/platform: check the bounds of read/write syscalls [+ + +]
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Wed Jan 22 10:38:30 2025 -0700

    vfio/platform: check the bounds of read/write syscalls
    
    commit ce9ff21ea89d191e477a02ad7eabf4f996b80a69 upstream.
    
    count and offset are passed from user space and not checked, only
    offset is capped to 40 bits, which can be used to read/write out of
    bounds of the device.
    
    Fixes: 6e3f26456009 (“vfio/platform: read and write support for the device fd”)
    Cc: stable@vger.kernel.org
    Reported-by: Mostafa Saleh <smostafa@google.com>
    Reviewed-by: Eric Auger <eric.auger@redhat.com>
    Reviewed-by: Mostafa Saleh <smostafa@google.com>
    Tested-by: Mostafa Saleh <smostafa@google.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
vmalloc: fix accounting with i915 [+ + +]
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Mon Dec 23 20:18:00 2024 +0000

    vmalloc: fix accounting with i915
    
    [ Upstream commit a2e740e216f5bf49ccb83b6d490c72a340558a43 ]
    
    If the caller of vmap() specifies VM_MAP_PUT_PAGES (currently only the
    i915 driver), we will decrement nr_vmalloc_pages and MEMCG_VMALLOC in
    vfree().  These counters are incremented by vmalloc() but not by vmap() so
    this will cause an underflow.  Check the VM_MAP_PUT_PAGES flag before
    decrementing either counter.
    
    Link: https://lkml.kernel.org/r/20241211202538.168311-1-willy@infradead.org
    Fixes: b944afc9d64d ("mm: add a VM_MAP_PUT_PAGES flag for vmap")
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Reviewed-by: Shakeel Butt <shakeel.butt@linux.dev>
    Reviewed-by: Balbir Singh <balbirs@nvidia.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Muchun Song <muchun.song@linux.dev>
    Cc: Roman Gushchin <roman.gushchin@linux.dev>
    Cc: "Uladzislau Rezki (Sony)" <urezki@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
vsock/virtio: cancel close work in the destructor [+ + +]
Author: Stefano Garzarella <sgarzare@redhat.com>
Date:   Fri Jan 10 09:35:09 2025 +0100

    vsock/virtio: cancel close work in the destructor
    
    commit df137da9d6d166e87e40980e36eb8e0bc90483ef upstream.
    
    During virtio_transport_release() we can schedule a delayed work to
    perform the closing of the socket before destruction.
    
    The destructor is called either when the socket is really destroyed
    (reference counter to zero), or it can also be called when we are
    de-assigning the transport.
    
    In the former case, we are sure the delayed work has completed, because
    it holds a reference until it completes, so the destructor will
    definitely be called after the delayed work is finished.
    But in the latter case, the destructor is called by AF_VSOCK core, just
    after the release(), so there may still be delayed work scheduled.
    
    Refactor the code, moving the code to delete the close work already in
    the do_close() to a new function. Invoke it during destruction to make
    sure we don't leave any pending work.
    
    Fixes: c0cfa2d8a788 ("vsock: add multi-transports support")
    Cc: stable@vger.kernel.org
    Reported-by: Hyunwoo Kim <v4bel@theori.io>
    Closes: https://lore.kernel.org/netdev/Z37Sh+utS+iV3+eb@v4bel-B760M-AORUS-ELITE-AX/
    Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
    Reviewed-by: Luigi Leonardi <leonardi@redhat.com>
    Tested-by: Hyunwoo Kim <v4bel@theori.io>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

vsock/virtio: discard packets if the transport changes [+ + +]
Author: Stefano Garzarella <sgarzare@redhat.com>
Date:   Fri Jan 10 09:35:07 2025 +0100

    vsock/virtio: discard packets if the transport changes
    
    commit 2cb7c756f605ec02ffe562fb26828e4bcc5fdfc1 upstream.
    
    If the socket has been de-assigned or assigned to another transport,
    we must discard any packets received because they are not expected
    and would cause issues when we access vsk->transport.
    
    A possible scenario is described by Hyunwoo Kim in the attached link,
    where after a first connect() interrupted by a signal, and a second
    connect() failed, we can find `vsk->transport` at NULL, leading to a
    NULL pointer dereference.
    
    Fixes: c0cfa2d8a788 ("vsock: add multi-transports support")
    Cc: stable@vger.kernel.org
    Reported-by: Hyunwoo Kim <v4bel@theori.io>
    Reported-by: Wongi Lee <qwerty@theori.io>
    Closes: https://lore.kernel.org/netdev/Z2LvdTTQR7dBmPb5@v4bel-B760M-AORUS-ELITE-AX/
    Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
    Reviewed-by: Hyunwoo Kim <v4bel@theori.io>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    [SG: fixed context conflict since this tree is missing commit 71dc9ec9ac7d
     ("virtio/vsock: replace virtio_vsock_pkt with sk_buff")]
    Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
vsock: prevent null-ptr-deref in vsock_*[has_data|has_space] [+ + +]
Author: Stefano Garzarella <sgarzare@redhat.com>
Date:   Fri Jan 10 09:35:11 2025 +0100

    vsock: prevent null-ptr-deref in vsock_*[has_data|has_space]
    
    commit 91751e248256efc111e52e15115840c35d85abaf upstream.
    
    Recent reports have shown how we sometimes call vsock_*_has_data()
    when a vsock socket has been de-assigned from a transport (see attached
    links), but we shouldn't.
    
    Previous commits should have solved the real problems, but we may have
    more in the future, so to avoid null-ptr-deref, we can return 0
    (no space, no data available) but with a warning.
    
    This way the code should continue to run in a nearly consistent state
    and have a warning that allows us to debug future problems.
    
    Fixes: c0cfa2d8a788 ("vsock: add multi-transports support")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/netdev/Z2K%2FI4nlHdfMRTZC@v4bel-B760M-AORUS-ELITE-AX/
    Link: https://lore.kernel.org/netdev/5ca20d4c-1017-49c2-9516-f6f75fd331e9@rbox.co/
    Link: https://lore.kernel.org/netdev/677f84a8.050a0220.25a300.01b3.GAE@google.com/
    Co-developed-by: Hyunwoo Kim <v4bel@theori.io>
    Signed-off-by: Hyunwoo Kim <v4bel@theori.io>
    Co-developed-by: Wongi Lee <qwerty@theori.io>
    Signed-off-by: Wongi Lee <qwerty@theori.io>
    Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
    Reviewed-by: Luigi Leonardi <leonardi@redhat.com>
    Reviewed-by: Hyunwoo Kim <v4bel@theori.io>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    [SG: fixed conflict since this tree is missing vsock_connectible_has_data()
     added by commit 0798e78b102b ("af_vsock: rest of SEQPACKET support")]
    Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

vsock: reset socket state when de-assigning the transport [+ + +]
Author: Stefano Garzarella <sgarzare@redhat.com>
Date:   Fri Jan 10 09:35:10 2025 +0100

    vsock: reset socket state when de-assigning the transport
    
    commit a24009bc9be60242651a21702609381b5092459e upstream.
    
    Transport's release() and destruct() are called when de-assigning the
    vsock transport. These callbacks can touch some socket state like
    sock flags, sk_state, and peer_shutdown.
    
    Since we are reassigning the socket to a new transport during
    vsock_connect(), let's reset these fields to have a clean state with
    the new transport.
    
    Fixes: c0cfa2d8a788 ("vsock: add multi-transports support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
    Reviewed-by: Luigi Leonardi <leonardi@redhat.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
wifi: iwlwifi: add a few rate index validity checks [+ + +]
Author: Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com>
Date:   Wed Jun 14 12:41:37 2023 +0300

    wifi: iwlwifi: add a few rate index validity checks
    
    commit efbe8f81952fe469d38655744627d860879dcde8 upstream.
    
    Validate index before access iwl_rate_mcs to keep rate->index
    inside the valid boundaries. Use MCS_0_INDEX if index is less
    than MCS_0_INDEX and MCS_9_INDEX if index is greater then
    MCS_9_INDEX.
    
    Signed-off-by: Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com>
    Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
    Link: https://lore.kernel.org/r/20230614123447.79f16b3aef32.If1137f894775d6d07b78cbf3a6163ffce6399507@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/asm: Make serialize() always_inline [+ + +]
Author: Juergen Gross <jgross@suse.com>
Date:   Wed Dec 18 11:09:18 2024 +0100

    x86/asm: Make serialize() always_inline
    
    [ Upstream commit ae02ae16b76160f0aeeae2c5fb9b15226d00a4ef ]
    
    In order to allow serialize() to be used from noinstr code, make it
    __always_inline.
    
    Fixes: 0ef8047b737d ("x86/static-call: provide a way to do very early static-call updates")
    Closes: https://lore.kernel.org/oe-kbuild-all/202412181756.aJvzih2K-lkp@intel.com/
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/r/20241218100918.22167-1-jgross@suse.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/xen: fix SLS mitigation in xen_hypercall_iret() [+ + +]
Author: Juergen Gross <jgross@suse.com>
Date:   Fri Jan 17 12:05:51 2025 +0100

    x86/xen: fix SLS mitigation in xen_hypercall_iret()
    
    The backport of upstream patch a2796dff62d6 ("x86/xen: don't do PV iret
    hypercall through hypercall page") missed to adapt the SLS mitigation
    config check from CONFIG_MITIGATION_SLS to CONFIG_SLS.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
xhci: use pm_ptr() instead of #ifdef for CONFIG_PM conditionals [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Mar 28 15:10:43 2023 +0200

    xhci: use pm_ptr() instead of #ifdef for CONFIG_PM conditionals
    
    commit 130eac4170859fb368681e00d390f20f44bbf27b upstream.
    
    A recent patch caused an unused-function warning in builds with
    CONFIG_PM disabled, after the function became marked 'static':
    
    drivers/usb/host/xhci-pci.c:91:13: error: 'xhci_msix_sync_irqs' defined but not used [-Werror=unused-function]
       91 | static void xhci_msix_sync_irqs(struct xhci_hcd *xhci)
          |             ^~~~~~~~~~~~~~~~~~~
    
    This could be solved by adding another #ifdef, but as there is
    a trend towards removing CONFIG_PM checks in favor of helper
    macros, do the same conversion here and use pm_ptr() to get
    either a function pointer or NULL but avoid the warning.
    
    As the hidden functions reference some other symbols, make
    sure those are visible at compile time, at the minimal cost of
    a few extra bytes for 'struct usb_device'.
    
    Fixes: 9abe15d55dcc ("xhci: Move xhci MSI sync function to to xhci-pci")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20230328131114.1296430-1-arnd@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>