Changelog in Linux kernel 6.1.156

 
ACPI: NFIT: Fix incorrect ndr_desc being reportedin dev_err message [+ + +]
Author: Colin Ian King <[email protected]>
Date:   Tue Sep 2 12:45:18 2025 +0100

    ACPI: NFIT: Fix incorrect ndr_desc being reportedin dev_err message
    
    [ Upstream commit d1a599a8136b16522b5afebd122395524496d549 ]
    
    There appears to be a cut-n-paste error with the incorrect field
    ndr_desc->numa_node being reported for the target node. Fix this by
    using ndr_desc->target_node instead.
    
    Fixes: f060db99374e ("ACPI: NFIT: Use fallback node id when numa info in NFIT table is incorrect")
    Signed-off-by: Colin Ian King <[email protected]>
    Reviewed-by: Ira Weiny <[email protected]>
    Signed-off-by: Ira Weiny <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ACPI: processor: idle: Fix memory leak when register cpuidle device failed [+ + +]
Author: Huisong Li <[email protected]>
Date:   Mon Jul 28 15:06:11 2025 +0800

    ACPI: processor: idle: Fix memory leak when register cpuidle device failed
    
    [ Upstream commit 11b3de1c03fa9f3b5d17e6d48050bc98b3704420 ]
    
    The cpuidle device's memory is leaked when cpuidle device registration
    fails in acpi_processor_power_init().  Free it as appropriate.
    
    Fixes: 3d339dcbb56d ("cpuidle / ACPI : move cpuidle_device field out of the acpi_processor_power structure")
    Signed-off-by: Huisong Li <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Changed the order of the new statements, added empty line after if () ]
    [ rjw: Changelog edits ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ALSA: lx_core: use int type to store negative error codes [+ + +]
Author: Qianfeng Rong <[email protected]>
Date:   Thu Aug 28 16:13:10 2025 +0800

    ALSA: lx_core: use int type to store negative error codes
    
    [ Upstream commit 4ef353d546cda466fc39b7daca558d7bcec21c09 ]
    
    Change the 'ret' variable from u16 to int to store negative error codes or
    zero returned by lx_message_send_atomic().
    
    Storing the negative error codes in unsigned type, doesn't cause an issue
    at runtime but it's ugly as pants. Additionally, assigning negative error
    codes to unsigned type may trigger a GCC warning when the -Wsign-conversion
    flag is enabled.
    
    No effect on runtime.
    
    Fixes: 02bec4904508 ("ALSA: lx6464es - driver for the digigram lx6464es interface")
    Signed-off-by: Qianfeng Rong <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64: dts: mediatek: mt8516-pumpkin: Fix machine compatible [+ + +]
Author: AngeloGioacchino Del Regno <[email protected]>
Date:   Thu Jul 24 10:39:14 2025 +0200

    arm64: dts: mediatek: mt8516-pumpkin: Fix machine compatible
    
    [ Upstream commit ffe6a5d1dd4d4d8af0779526cf4e40522647b25f ]
    
    This devicetree contained only the SoC compatible but lacked the
    machine specific one: add a "mediatek,mt8516-pumpkin" compatible
    to the list to fix dtbs_check warnings.
    
    Fixes: 9983822c8cf9 ("arm64: dts: mediatek: add pumpkin board dts")
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Reviewed-by: Fei Shao <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Matthias Brugger <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: renesas: rzg2lc-smarc: Disable CAN-FD channel0 [+ + +]
Author: Biju Das <[email protected]>
Date:   Fri Aug 1 13:19:53 2025 +0100

    arm64: dts: renesas: rzg2lc-smarc: Disable CAN-FD channel0
    
    [ Upstream commit ae014fbc99c7f986ee785233e7a5336834e39af4 ]
    
    On RZ/G2LC SMARC EVK, CAN-FD channel0 is not populated, and currently we
    are deleting a wrong and nonexistent node.  Fixing the wrong node would
    invoke a dtb warning message, as channel0 is a required property.
    Disable CAN-FD channel0 instead of deleting the node.
    
    Fixes: 46da632734a5 ("arm64: dts: renesas: rzg2lc-smarc: Enable CANFD channel 1")
    Signed-off-by: Biju Das <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ARM: at91: pm: fix MCKx restore routine [+ + +]
Author: Nicolas Ferre <[email protected]>
Date:   Wed Aug 27 16:54:26 2025 +0200

    ARM: at91: pm: fix MCKx restore routine
    
    [ Upstream commit 296302d3d81360e09fa956e9be9edc8223b69a12 ]
    
    The at91_mckx_ps_restore() assembly function is responsible for setting
    back MCKx system bus clocks after exiting low power modes.
    
    Fix a typo and use tmp3 variable instead of tmp2 to correctly set MCKx
    to previously saved state.
    Tmp2 was used without the needed changes in CSS and DIV. Moreover the
    required bit 7, telling that MCR register's content is to be changed
    (CMD/write), was not set.
    
    Fix function comment to match tmp variables actually used.
    
    Signed-off-by: Nicolas Ferre <[email protected]>
    Fixes: 28eb1d40fe57 ("ARM: at91: pm: add support for MCK1..4 save/restore for ulp modes")
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Alexandre Belloni <[email protected]>
    [claudiu.beznea: s/sate/state in commit description]
    Signed-off-by: Claudiu Beznea <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ASoC: Intel: bytcht_es8316: Fix invalid quirk input mapping [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Tue Sep 2 19:18:19 2025 +0200

    ASoC: Intel: bytcht_es8316: Fix invalid quirk input mapping
    
    [ Upstream commit b20eb0e8de383116f1e1470d74da2a3c83c4e345 ]
    
    When an invalid value is passed via quirk option, currently
    bytcht_es8316 driver just ignores and leaves as is, which may lead to
    unepxected results like OOB access.
    
    This patch adds the sanity check and corrects the input mapping to the
    certain default value if an invalid value is passed.
    
    Fixes: 249d2fc9e55c ("ASoC: Intel: bytcht_es8316: Set card long_name based on quirks")
    Signed-off-by: Takashi Iwai <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: Intel: bytcr_rt5640: Fix invalid quirk input mapping [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Tue Sep 2 19:18:20 2025 +0200

    ASoC: Intel: bytcr_rt5640: Fix invalid quirk input mapping
    
    [ Upstream commit fba404e4b4af4f4f747bb0e41e9fff7d03c7bcc0 ]
    
    When an invalid value is passed via quirk option, currently
    bytcr_rt5640 driver only shows an error message but leaves as is.
    This may lead to unepxected results like OOB access.
    
    This patch corrects the input mapping to the certain default value if
    an invalid value is passed.
    
    Fixes: 063422ca2a9d ("ASoC: Intel: bytcr_rt5640: Set card long_name based on quirks")
    Signed-off-by: Takashi Iwai <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: Intel: bytcr_rt5651: Fix invalid quirk input mapping [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Tue Sep 2 19:18:21 2025 +0200

    ASoC: Intel: bytcr_rt5651: Fix invalid quirk input mapping
    
    [ Upstream commit 4336efb59ef364e691ef829a73d9dbd4d5ed7c7b ]
    
    When an invalid value is passed via quirk option, currently
    bytcr_rt5640 driver just ignores and leaves as is, which may lead to
    unepxected results like OOB access.
    
    This patch adds the sanity check and corrects the input mapping to the
    certain default value if an invalid value is passed.
    
    Fixes: 64484ccee7af ("ASoC: Intel: bytcr_rt5651: Set card long_name based on quirks")
    Signed-off-by: Takashi Iwai <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: qcom: audioreach: fix potential null pointer dereference [+ + +]
Author: Srinivas Kandagatla <[email protected]>
Date:   Mon Aug 25 11:12:45 2025 +0100

    ASoC: qcom: audioreach: fix potential null pointer dereference
    
    commit 8318e04ab2526b155773313b66a1542476ce1106 upstream.
    
    It is possible that the topology parsing function
    audioreach_widget_load_module_common() could return NULL or an error
    pointer. Add missing NULL check so that we do not dereference it.
    
    Reported-by: Dan Carpenter <[email protected]>
    Cc: [email protected]
    Fixes: 36ad9bf1d93d ("ASoC: qdsp6: audioreach: add topology support")
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ASoC: rt5682s: Adjust SAR ADC button mode to fix noise issue [+ + +]
Author: Jack Yu <[email protected]>
Date:   Wed Sep 17 08:11:43 2025 +0000

    ASoC: rt5682s: Adjust SAR ADC button mode to fix noise issue
    
    [ Upstream commit 1dd28fd86c3fa4e395031dd6f2ba920242107010 ]
    
    Adjust register settings for SAR adc button detection mode
    to fix noise issue in headset.
    
    Signed-off-by: Jack Yu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
blk-mq: check kobject state_in_sysfs before deleting in blk_mq_unregister_hctx [+ + +]
Author: Li Nan <[email protected]>
Date:   Tue Aug 26 16:48:54 2025 +0800

    blk-mq: check kobject state_in_sysfs before deleting in blk_mq_unregister_hctx
    
    [ Upstream commit 4c7ef92f6d4d08a27d676e4c348f4e2922cab3ed ]
    
    In __blk_mq_update_nr_hw_queues() the return value of
    blk_mq_sysfs_register_hctxs() is not checked. If sysfs creation for hctx
    fails, later changing the number of hw_queues or removing disk will
    trigger the following warning:
    
      kernfs: can not remove 'nr_tags', no directory
      WARNING: CPU: 2 PID: 637 at fs/kernfs/dir.c:1707 kernfs_remove_by_name_ns+0x13f/0x160
      Call Trace:
       remove_files.isra.1+0x38/0xb0
       sysfs_remove_group+0x4d/0x100
       sysfs_remove_groups+0x31/0x60
       __kobject_del+0x23/0xf0
       kobject_del+0x17/0x40
       blk_mq_unregister_hctx+0x5d/0x80
       blk_mq_sysfs_unregister_hctxs+0x94/0xd0
       blk_mq_update_nr_hw_queues+0x124/0x760
       nullb_update_nr_hw_queues+0x71/0xf0 [null_blk]
       nullb_device_submit_queues_store+0x92/0x120 [null_blk]
    
    kobjct_del() was called unconditionally even if sysfs creation failed.
    Fix it by checkig the kobject creation statusbefore deleting it.
    
    Fixes: 477e19dedc9d ("blk-mq: adjust debugfs and sysfs register when updating nr_hw_queues")
    Signed-off-by: Li Nan <[email protected]>
    Reviewed-by: Yu Kuai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
block: use int to store blk_stack_limits() return value [+ + +]
Author: Qianfeng Rong <[email protected]>
Date:   Tue Sep 2 21:09:30 2025 +0800

    block: use int to store blk_stack_limits() return value
    
    [ Upstream commit b0b4518c992eb5f316c6e40ff186cbb7a5009518 ]
    
    Change the 'ret' variable in blk_stack_limits() from unsigned int to int,
    as it needs to store negative value -1.
    
    Storing the negative error codes in unsigned type, or performing equality
    comparisons (e.g., ret == -1), doesn't cause an issue at runtime [1] but
    can be confusing.  Additionally, assigning negative error codes to unsigned
    type may trigger a GCC warning when the -Wsign-conversion flag is enabled.
    
    No effect on runtime.
    
    Link: https://lore.kernel.org/all/x3wogjf6vgpkisdhg3abzrx7v7zktmdnfmqeih5kosszmagqfs@oh3qxrgzkikf/ #1
    Signed-off-by: Qianfeng Rong <[email protected]>
    Reviewed-by: John Garry <[email protected]>
    Fixes: fe0b393f2c0a ("block: Correct handling of bottom device misaligment")
    Reviewed-by: Bart Van Assche <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Bluetooth: hci_sync: Fix using random address for BIG/PA advertisements [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Fri Sep 19 12:30:05 2025 -0400

    Bluetooth: hci_sync: Fix using random address for BIG/PA advertisements
    
    [ Upstream commit 03ddb4ac251463ec5b7b069395d9ab89163dd56c ]
    
    When creating an advertisement for BIG the address shall not be
    non-resolvable since in case of acting as BASS/Broadcast Assistant the
    address must be the same as the connection in order to use the PAST
    method and even when PAST/BASS are not in the picture a Periodic
    Advertisement can still be synchronized thus the same argument as to
    connectable advertisements still stand.
    
    Fixes: eca0ae4aea66 ("Bluetooth: Add initial implementation of BIS connections")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Reviewed-by: Paul Menzel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: ISO: don't leak skb in ISO_CONT RX [+ + +]
Author: Pauli Virtanen <[email protected]>
Date:   Mon Sep 22 21:11:22 2025 +0300

    Bluetooth: ISO: don't leak skb in ISO_CONT RX
    
    [ Upstream commit 5bf863f4c5da055c1eb08887ae4f26d99dbc4aac ]
    
    For ISO_CONT RX, the data from skb is copied to conn->rx_skb, but the
    skb is leaked.
    
    Free skb after copying its data.
    
    Fixes: ccf74f2390d6 ("Bluetooth: Add BTPROTO_ISO socket type")
    Signed-off-by: Pauli Virtanen <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: ISO: Fix possible UAF on iso_conn_free [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Mon Sep 22 16:27:51 2025 -0400

    Bluetooth: ISO: Fix possible UAF on iso_conn_free
    
    [ Upstream commit 9950f095d6c875dbe0c9ebfcf972ec88fdf26fc8 ]
    
    This attempt to fix similar issue to sco_conn_free where if the
    conn->sk is not set to NULL may lead to UAF on iso_conn_free.
    
    Fixes: ccf74f2390d6 ("Bluetooth: Add BTPROTO_ISO socket type")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: MGMT: Fix not exposing debug UUID on MGMT_OP_READ_EXP_FEATURES_INFO [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Wed Aug 20 08:50:12 2025 -0400

    Bluetooth: MGMT: Fix not exposing debug UUID on MGMT_OP_READ_EXP_FEATURES_INFO
    
    [ Upstream commit 79e562a52adea4afa0601a15964498fae66c823c ]
    
    The debug UUID was only getting set if MGMT_OP_READ_EXP_FEATURES_INFO
    was not called with a specific index which breaks the likes of
    bluetoothd since it only invokes MGMT_OP_READ_EXP_FEATURES_INFO when an
    adapter is plugged, so instead of depending hdev not to be set just
    enable the UUID on any index like it was done with iso_sock_uuid.
    
    Fixes: e625e50ceee1 ("Bluetooth: Introduce debug feature when dynamic debug is disabled")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf/selftests: Fix test_tcpnotify_user [+ + +]
Author: Matt Bobrowski <[email protected]>
Date:   Fri Aug 15 12:12:14 2025 +0000

    bpf/selftests: Fix test_tcpnotify_user
    
    [ Upstream commit c80d79720647ed77ebc0198abd5a0807efdaff0b ]
    
    Based on a bisect, it appears that commit 7ee988770326 ("timers:
    Implement the hierarchical pull model") has somehow inadvertently
    broken BPF selftest test_tcpnotify_user. The error that is being
    generated by this test is as follows:
    
            FAILED: Wrong stats Expected 10 calls, got 8
    
    It looks like the change allows timer functions to be run on CPUs
    different from the one they are armed on. The test had pinned itself
    to CPU 0, and in the past the retransmit attempts also occurred on CPU
    0. The test had set the max_entries attribute for
    BPF_MAP_TYPE_PERF_EVENT_ARRAY to 2 and was calling
    bpf_perf_event_output() with BPF_F_CURRENT_CPU, so the entry was
    likely to be in range. With the change to allow timers to run on other
    CPUs, the current CPU tasked with performing the retransmit might be
    bumped and in turn fall out of range, as the event will be filtered
    out via __bpf_perf_event_output() using:
    
        if (unlikely(index >= array->map.max_entries))
                return -E2BIG;
    
    A possible change would be to explicitly set the max_entries attribute
    for perf_event_map in test_tcpnotify_kern.c to a value that's at least
    as large as the number of CPUs. As it turns out however, if the field
    is left unset, then the libbpf will determine the number of CPUs available
    on the underlying system and update the max_entries attribute accordingly
    in map_set_def_max_entries().
    
    A further problem with the test is that it has a thread that continues
    running up until the program exits. The main thread cleans up some
    LIBBPF data structures, while the other thread continues to use them,
    which inevitably will trigger a SIGSEGV. This can be dealt with by
    telling the thread to run for as long as necessary and doing a
    pthread_join on it before exiting the program.
    
    Finally, I don't think binding the process to CPU 0 is meaningful for
    this test any more, so get rid of that.
    
    Fixes: 435f90a338ae ("selftests/bpf: add a test case for sock_ops perf-event notification")
    Signed-off-by: Matt Bobrowski <[email protected]>
    Signed-off-by: Martin KaFai Lau <[email protected]>
    Acked-by: Stanislav Fomichev <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf: Enforce expected_attach_type for tailcall compatibility [+ + +]
Author: Daniel Borkmann <[email protected]>
Date:   Fri Sep 26 19:12:00 2025 +0200

    bpf: Enforce expected_attach_type for tailcall compatibility
    
    [ Upstream commit 4540aed51b12bc13364149bf95f6ecef013197c0 ]
    
    Yinhao et al. recently reported:
    
      Our fuzzer tool discovered an uninitialized pointer issue in the
      bpf_prog_test_run_xdp() function within the Linux kernel's BPF subsystem.
      This leads to a NULL pointer dereference when a BPF program attempts to
      deference the txq member of struct xdp_buff object.
    
    The test initializes two programs of BPF_PROG_TYPE_XDP: progA acts as the
    entry point for bpf_prog_test_run_xdp() and its expected_attach_type can
    neither be of be BPF_XDP_DEVMAP nor BPF_XDP_CPUMAP. progA calls into a slot
    of a tailcall map it owns. progB's expected_attach_type must be BPF_XDP_DEVMAP
    to pass xdp_is_valid_access() validation. The program returns struct xdp_md's
    egress_ifindex, and the latter is only allowed to be accessed under mentioned
    expected_attach_type. progB is then inserted into the tailcall which progA
    calls.
    
    The underlying issue goes beyond XDP though. Another example are programs
    of type BPF_PROG_TYPE_CGROUP_SOCK_ADDR. sock_addr_is_valid_access() as well
    as sock_addr_func_proto() have different logic depending on the programs'
    expected_attach_type. Similarly, a program attached to BPF_CGROUP_INET4_GETPEERNAME
    should not be allowed doing a tailcall into a program which calls bpf_bind()
    out of BPF which is only enabled for BPF_CGROUP_INET4_CONNECT.
    
    In short, specifying expected_attach_type allows to open up additional
    functionality or restrictions beyond what the basic bpf_prog_type enables.
    The use of tailcalls must not violate these constraints. Fix it by enforcing
    expected_attach_type in __bpf_prog_map_compatible().
    
    Note that we only enforce this for tailcall maps, but not for BPF devmaps or
    cpumaps: There, the programs are invoked through dev_map_bpf_prog_run*() and
    cpu_map_bpf_prog_run*() which set up a new environment / context and therefore
    these situations are not prone to this issue.
    
    Fixes: 5e43f899b03a ("bpf: Check attach type at prog load time")
    Reported-by: Yinhao Hu <[email protected]>
    Reported-by: Kaiyan Mei <[email protected]>
    Reviewed-by: Dongliang Mu <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Explicitly check accesses to bpf_sock_addr [+ + +]
Author: Paul Chaignon <[email protected]>
Date:   Wed Sep 17 10:08:00 2025 +0200

    bpf: Explicitly check accesses to bpf_sock_addr
    
    [ Upstream commit 6fabca2fc94d33cdf7ec102058983b086293395f ]
    
    Syzkaller found a kernel warning on the following sock_addr program:
    
        0: r0 = 0
        1: r2 = *(u32 *)(r1 +60)
        2: exit
    
    which triggers:
    
        verifier bug: error during ctx access conversion (0)
    
    This is happening because offset 60 in bpf_sock_addr corresponds to an
    implicit padding of 4 bytes, right after msg_src_ip4. Access to this
    padding isn't rejected in sock_addr_is_valid_access and it thus later
    fails to convert the access.
    
    This patch fixes it by explicitly checking the various fields of
    bpf_sock_addr in sock_addr_is_valid_access.
    
    I checked the other ctx structures and is_valid_access functions and
    didn't find any other similar cases. Other cases of (properly handled)
    padding are covered in new tests in a subsequent patch.
    
    Fixes: 1cedee13d25a ("bpf: Hooks for sys_sendmsg")
    Reported-by: [email protected]
    Signed-off-by: Paul Chaignon <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Acked-by: Eduard Zingerman <[email protected]>
    Acked-by: Daniel Borkmann <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=136ca59d411f92e821b7
    Link: https://lore.kernel.org/bpf/b58609d9490649e76e584b0361da0abd3c2c1779.1758094761.git.paul.chaignon@gmail.com
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Remove migrate_disable in kprobe_multi_link_prog_run [+ + +]
Author: Tao Chen <[email protected]>
Date:   Thu Aug 14 20:14:29 2025 +0800

    bpf: Remove migrate_disable in kprobe_multi_link_prog_run
    
    [ Upstream commit abdaf49be5424db74e19d167c10d7dad79a0efc2 ]
    
    Graph tracer framework ensures we won't migrate, kprobe_multi_link_prog_run
    called all the way from graph tracer, which disables preemption in
    function_graph_enter_regs, as Jiri and Yonghong suggested, there is no
    need to use migrate_disable. As a result, some overhead may will be reduced.
    And add cant_sleep check for __this_cpu_inc_return.
    
    Fixes: 0dcac2725406 ("bpf: Add multi kprobe link")
    Signed-off-by: Tao Chen <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
btrfs: ref-verify: handle damaged extent root tree [+ + +]
Author: David Sterba <[email protected]>
Date:   Mon Sep 15 08:37:47 2025 +0200

    btrfs: ref-verify: handle damaged extent root tree
    
    [ Upstream commit ed4e6b5d644c4dd2bc2872ffec036b7da0ec2e27 ]
    
    Syzbot hits a problem with enabled ref-verify, ignorebadroots and a
    fuzzed/damaged extent tree. There's no fallback option like in other
    places that can deal with it so disable the whole ref-verify as it is
    just a debugging feature.
    
    Reported-by: [email protected]
    Link: https://lore.kernel.org/all/[email protected]/
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bus: fsl-mc: Check return value of platform_get_resource() [+ + +]
Author: Salah Triki <[email protected]>
Date:   Mon Aug 25 10:34:35 2025 +0100

    bus: fsl-mc: Check return value of platform_get_resource()
    
    commit 25f526507b8ccc6ac3a43bc094d09b1f9b0b90ae upstream.
    
    platform_get_resource() returns NULL in case of failure, so check its
    return value and propagate the error in order to prevent NULL pointer
    dereference.
    
    Fixes: 6305166c8771 ("bus: fsl-mc: Add ACPI support for fsl-mc")
    Cc: [email protected]
    Signed-off-by: Salah Triki <[email protected]>
    Acked-by: Ioana Ciornei <[email protected]>
    Link: https://lore.kernel.org/r/aKwuK6TRr5XNYQ8u@pc
    Signed-off-by: Christophe Leroy <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
can: hi311x: fix null pointer dereference when resuming from sleep before interface was enabled [+ + +]
Author: Chen Yufeng <[email protected]>
Date:   Thu Sep 11 23:08:20 2025 +0800

    can: hi311x: fix null pointer dereference when resuming from sleep before interface was enabled
    
    [ Upstream commit 6b696808472197b77b888f50bc789a3bae077743 ]
    
    This issue is similar to the vulnerability in the `mcp251x` driver,
    which was fixed in commit 03c427147b2d ("can: mcp251x: fix resume from
    sleep before interface was brought up").
    
    In the `hi311x` driver, when the device resumes from sleep, the driver
    schedules `priv->restart_work`. However, if the network interface was
    not previously enabled, the `priv->wq` (workqueue) is not allocated and
    initialized, leading to a null pointer dereference.
    
    To fix this, we move the allocation and initialization of the workqueue
    from the `hi3110_open` function to the `hi3110_can_probe` function.
    This ensures that the workqueue is properly initialized before it is
    used during device resume. And added logic to destroy the workqueue
    in the error handling paths of `hi3110_can_probe` and in the
    `hi3110_can_remove` function to prevent resource leaks.
    
    Signed-off-by: Chen Yufeng <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

can: rcar_canfd: Fix controller mode setting [+ + +]
Author: Duy Nguyen <[email protected]>
Date:   Thu Sep 18 07:03:45 2025 +0000

    can: rcar_canfd: Fix controller mode setting
    
    [ Upstream commit 5cff263606a10102a0ea19ff579eaa18fd5577ad ]
    
    Driver configures register to choose controller mode before
    setting all channels to reset mode leading to failure.
    The patch corrects operation of mode setting.
    
    Signed-off-by: Duy Nguyen <[email protected]>
    Signed-off-by: Tranh Ha <[email protected]>
    Link: https://patch.msgid.link/TYWPR01MB87434739F83E27EDCD23DF44B416A@TYWPR01MB8743.jpnprd01.prod.outlook.com
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
coresight-etm4x: Conditionally access register TRCEXTINSELR [+ + +]
Author: Yuanfang Zhang <[email protected]>
Date:   Tue Aug 12 01:24:45 2025 -0700

    coresight-etm4x: Conditionally access register TRCEXTINSELR
    
    [ Upstream commit dcdc42f5dcf9b9197c51246c62966e2d54a033d8 ]
    
    The TRCEXTINSELR is only implemented if TRCIDR5.NUMEXTINSEL > 0.
    To avoid invalid accesses, introduce a check on numextinsel
    (derived from TRCIDR5[11:9]) before reading or writing to this register.
    
    Fixes: f5bd523690d2 ("coresight: etm4x: Convert all register accesses")
    Signed-off-by: Yuanfang Zhang <[email protected]>
    Reviewed-by: James Clark <[email protected]>
    Reviewed-by: Mike Leach <[email protected]>
    Signed-off-by: Suzuki K Poulose <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
coresight: trbe: Prevent overflow in PERF_IDX2OFF() [+ + +]
Author: Leo Yan <[email protected]>
Date:   Wed Sep 17 18:41:38 2025 +0100

    coresight: trbe: Prevent overflow in PERF_IDX2OFF()
    
    [ Upstream commit 105f56877f2d5f82d71e20b45eb7be7c24c3d908 ]
    
    Cast nr_pages to unsigned long to avoid overflow when handling large
    AUX buffer sizes (>= 2 GiB).
    
    Fixes: 3fbf7f011f24 ("coresight: sink: Add TRBE driver")
    Signed-off-by: Leo Yan <[email protected]>
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

coresight: trbe: Return NULL pointer for allocation failures [+ + +]
Author: Leo Yan <[email protected]>
Date:   Thu Sep 4 15:13:52 2025 +0100

    coresight: trbe: Return NULL pointer for allocation failures
    
    [ Upstream commit 8a55c161f7f9c1aa1c70611b39830d51c83ef36d ]
    
    When the TRBE driver fails to allocate a buffer, it currently returns
    the error code "-ENOMEM". However, the caller etm_setup_aux() only
    checks for a NULL pointer, so it misses the error. As a result, the
    driver continues and eventually causes a kernel panic.
    
    Fix this by returning a NULL pointer from arm_trbe_alloc_buffer() on
    allocation failures. This allows that the callers can properly handle
    the failure.
    
    Fixes: 3fbf7f011f24 ("coresight: sink: Add TRBE driver")
    Reported-by: Tamas Zsoldos <[email protected]>
    Signed-off-by: Leo Yan <[email protected]>
    Reviewed-by: James Clark <[email protected]>
    Signed-off-by: Suzuki K Poulose <[email protected]>
    Link: https://lore.kernel.org/r/20250904-cs_etm_auxsetup_fix_error_handling-v2-1-a502d0bafb95@arm.com
    Signed-off-by: Sasha Levin <[email protected]>

 
cpufreq: scmi: Account for malformed DT in scmi_dev_used_by_cpus() [+ + +]
Author: Florian Fainelli <[email protected]>
Date:   Mon Aug 18 08:50:48 2025 -0700

    cpufreq: scmi: Account for malformed DT in scmi_dev_used_by_cpus()
    
    [ Upstream commit cd5d4621ba846dad9b2e6b0c2d1518d083fcfa13 ]
    
    Broadcom STB platforms were early adopters (2017) of the SCMI framework and as
    a result, not all deployed systems have a Device Tree entry where SCMI
    protocol 0x13 (PERFORMANCE) is declared as a clock provider, nor are the
    CPU Device Tree node(s) referencing protocol 0x13 as their clock
    provider. This was clarified in commit e11c480b6df1 ("dt-bindings:
    firmware: arm,scmi: Extend bindings for protocol@13") in 2023.
    
    For those platforms, we allow the checks done by scmi_dev_used_by_cpus()
    to continue, and in the event of not having done an early return, we key
    off the documented compatible string and give them a pass to continue to
    use scmi-cpufreq.
    
    Fixes: 6c9bb8692272 ("cpufreq: scmi: Skip SCMI devices that aren't used by the CPUs")
    Signed-off-by: Florian Fainelli <[email protected]>
    Reviewed-by: Sudeep Holla <[email protected]>
    Signed-off-by: Viresh Kumar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
cpuidle: qcom-spm: fix device and OF node leaks at probe [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Mon Sep 8 17:22:12 2025 +0200

    cpuidle: qcom-spm: fix device and OF node leaks at probe
    
    [ Upstream commit cdc06f912670c8c199d5fa9e78b64b7ed8e871d0 ]
    
    Make sure to drop the reference to the saw device taken by
    of_find_device_by_node() after retrieving its driver data during
    probe().
    
    Also drop the reference to the CPU node sooner to avoid leaking it in
    case there is no saw node or device.
    
    Fixes: 60f3692b5f0b ("cpuidle: qcom_spm: Detach state machine from main SPM handling")
    Signed-off-by: Johan Hovold <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
crypto: hisilicon - re-enable address prefetch after device resuming [+ + +]
Author: Chenghai Huang <[email protected]>
Date:   Thu Aug 21 09:38:05 2025 +0800

    crypto: hisilicon - re-enable address prefetch after device resuming
    
    [ Upstream commit 0dcd21443d9308ed88909d35aa0490c3fc680a47 ]
    
    When the device resumes from a suspended state, it will revert to its
    initial state and requires re-enabling. Currently, the address prefetch
    function is not re-enabled after device resuming. Move the address prefetch
    enable to the initialization process. In this way, the address prefetch
    can be enabled when the device resumes by calling the initialization
    process.
    
    Fixes: 607c191b371d ("crypto: hisilicon - support runtime PM for accelerator device")
    Signed-off-by: Chenghai Huang <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: hisilicon/qm - set NULL to qm->debug.qm_diff_regs [+ + +]
Author: Chenghai Huang <[email protected]>
Date:   Sat Sep 13 18:57:54 2025 +0800

    crypto: hisilicon/qm - set NULL to qm->debug.qm_diff_regs
    
    [ Upstream commit f0cafb02de883b3b413d34eb079c9680782a9cc1 ]
    
    When the initialization of qm->debug.acc_diff_reg fails,
    the probe process does not exit. However, after qm->debug.qm_diff_regs is
    freed, it is not set to NULL. This can lead to a double free when the
    remove process attempts to free it again. Therefore, qm->debug.qm_diff_regs
    should be set to NULL after it is freed.
    
    Fixes: 8be091338971 ("crypto: hisilicon/debugfs - Fix debugfs uninit process issue")
    Signed-off-by: Chenghai Huang <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: hisilicon/zip - remove unnecessary validation for high-performance mode configurations [+ + +]
Author: Chenghai Huang <[email protected]>
Date:   Thu Aug 21 09:38:04 2025 +0800

    crypto: hisilicon/zip - remove unnecessary validation for high-performance mode configurations
    
    [ Upstream commit d4e081510471e79171c4e0a11f6cb608e49bc082 ]
    
    When configuring the high-performance mode register, there is no
    need to verify whether the register has been successfully
    enabled, as there is no possibility of a write failure for this
    register.
    
    Fixes: a9864bae1806 ("crypto: hisilicon/zip - add zip comp high perf mode configuration")
    Signed-off-by: Chenghai Huang <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: rng - Ensure set_ent is always present [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Thu Oct 2 17:45:39 2025 +0800

    crypto: rng - Ensure set_ent is always present
    
    commit c0d36727bf39bb16ef0a67ed608e279535ebf0da upstream.
    
    Ensure that set_ent is always set since only drbg provides it.
    
    Fixes: 77ebdabe8de7 ("crypto: af_alg - add extra parameters for DRBG interface")
    Reported-by: Yiqi Sun <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

crypto: sha256 - fix crash at kexec [+ + +]
Author: Breno Leitao <[email protected]>
Date:   Thu Oct 2 04:26:20 2025 -0700

    crypto: sha256 - fix crash at kexec
    
    Loading a large (~2.1G) files with kexec crashes the host with when
    running:
    
      # kexec --load kernel --initrd initrd_with_2G_or_more
    
      UBSAN: signed-integer-overflow in ./include/crypto/sha256_base.h:64:19
      34152083 * 64 cannot be represented in type 'int'
      ...
      BUG: unable to handle page fault for address: ff9fffff83b624c0
      sha256_update (lib/crypto/sha256.c:137)
      crypto_sha256_update (crypto/sha256_generic.c:40)
      kexec_calculate_store_digests (kernel/kexec_file.c:769)
      __se_sys_kexec_file_load (kernel/kexec_file.c:397 kernel/kexec_file.c:332)
      ...
    
    (Line numbers based on commit da274362a7bd9 ("Linux 6.12.49")
    
    This started happening after commit f4da7afe07523f
    ("kexec_file: increase maximum file size to 4G") that landed in v6.0,
    which increased the file size for kexec.
    
    This is not happening upstream (v6.16+), given that `block` type was
    upgraded from "int" to "size_t" in commit 74a43a2cf5e8 ("crypto:
    lib/sha256 - Move partial block handling out")
    
    Upgrade the block type similar to the commit above, avoiding hitting the
    overflow.
    
    This patch is only suitable for the stable tree, and before 6.16, which
    got commit 74a43a2cf5e8 ("crypto: lib/sha256 - Move partial block
    handling out"). This is not required before f4da7afe07523f ("kexec_file:
    increase maximum file size to 4G"). In other words, this fix is required
    between versions v6.0 and v6.16.
    
    Signed-off-by: Breno Leitao <[email protected]>
    Fixes: f4da7afe07523f ("kexec_file: increase maximum file size to 4G") # Before v6.16
    Reported-by: Michael van der Westhuizen <[email protected]>
    Reported-by: Tobias Fleig <[email protected]>
    Reviewed-by: Eric Biggers <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
 
dm-integrity: limit MAX_TAG_SIZE to 255 [+ + +]
Author: Mikulas Patocka <[email protected]>
Date:   Mon Sep 8 15:52:02 2025 +0200

    dm-integrity: limit MAX_TAG_SIZE to 255
    
    [ Upstream commit 77b8e6fbf9848d651f5cb7508f18ad0971f3ffdb ]
    
    MAX_TAG_SIZE was 0x1a8 and it may be truncated in the "bi->metadata_size
    = ic->tag_size" assignment. We need to limit it to 255.
    
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dm: fix NULL pointer dereference in __dm_suspend() [+ + +]
Author: Zheng Qixing <[email protected]>
Date:   Tue Aug 26 15:42:04 2025 +0800

    dm: fix NULL pointer dereference in __dm_suspend()
    
    commit 8d33a030c566e1f105cd5bf27f37940b6367f3be upstream.
    
    There is a race condition between dm device suspend and table load that
    can lead to null pointer dereference. The issue occurs when suspend is
    invoked before table load completes:
    
    BUG: kernel NULL pointer dereference, address: 0000000000000054
    Oops: 0000 [#1] PREEMPT SMP PTI
    CPU: 6 PID: 6798 Comm: dmsetup Not tainted 6.6.0-g7e52f5f0ca9b #62
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.1-2.fc37 04/01/2014
    RIP: 0010:blk_mq_wait_quiesce_done+0x0/0x50
    Call Trace:
      <TASK>
      blk_mq_quiesce_queue+0x2c/0x50
      dm_stop_queue+0xd/0x20
      __dm_suspend+0x130/0x330
      dm_suspend+0x11a/0x180
      dev_suspend+0x27e/0x560
      ctl_ioctl+0x4cf/0x850
      dm_ctl_ioctl+0xd/0x20
      vfs_ioctl+0x1d/0x50
      __se_sys_ioctl+0x9b/0xc0
      __x64_sys_ioctl+0x19/0x30
      x64_sys_call+0x2c4a/0x4620
      do_syscall_64+0x9e/0x1b0
    
    The issue can be triggered as below:
    
    T1                                              T2
    dm_suspend                                      table_load
    __dm_suspend                                    dm_setup_md_queue
                                                    dm_mq_init_request_queue
                                                    blk_mq_init_allocated_queue
                                                    => q->mq_ops = set->ops; (1)
    dm_stop_queue / dm_wait_for_completion
    => q->tag_set NULL pointer!     (2)
                                                    => q->tag_set = set; (3)
    
    Fix this by checking if a valid table (map) exists before performing
    request-based suspend and waiting for target I/O. When map is NULL,
    skip these table-dependent suspend steps.
    
    Even when map is NULL, no I/O can reach any target because there is
    no table loaded; I/O submitted in this state will fail early in the
    DM layer. Skipping the table-dependent suspend logic in this case
    is safe and avoids NULL pointer dereferences.
    
    Fixes: c4576aed8d85 ("dm: fix request-based dm's use of dm_wait_for_completion")
    Cc: [email protected]
    Signed-off-by: Zheng Qixing <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dm: fix queue start/stop imbalance under suspend/load/resume races [+ + +]
Author: Zheng Qixing <[email protected]>
Date:   Tue Aug 26 15:42:03 2025 +0800

    dm: fix queue start/stop imbalance under suspend/load/resume races
    
    commit 7f597c2cdb9d3263a6fce07c4fc0a9eaa8e8fc43 upstream.
    
    When suspend and load run concurrently, before q->mq_ops is set in
    blk_mq_init_allocated_queue(), __dm_suspend() skip dm_stop_queue(). As a
    result, the queue's quiesce depth is not incremented.
    
    Later, once table load has finished and __dm_resume() runs, which triggers
    q->quiesce_depth ==0 warning in blk_mq_unquiesce_queue():
    Call Trace:
     <TASK>
     dm_start_queue+0x16/0x20 [dm_mod]
     __dm_resume+0xac/0xb0 [dm_mod]
     dm_resume+0x12d/0x150 [dm_mod]
     do_resume+0x2c2/0x420 [dm_mod]
     dev_suspend+0x30/0x130 [dm_mod]
     ctl_ioctl+0x402/0x570 [dm_mod]
     dm_ctl_ioctl+0x23/0x30 [dm_mod]
    
    Fix this by explicitly tracking whether the request queue was
    stopped in __dm_suspend() via a new DMF_QUEUE_STOPPED flag.
    Only call dm_start_queue() in __dm_resume() if the queue was
    actually stopped.
    
    Fixes: e70feb8b3e68 ("blk-mq: support concurrent queue quiesce/unquiesce")
    Cc: [email protected]
    Signed-off-by: Zheng Qixing <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Documentation: trace: historgram-design: Separate sched_waking histogram section heading and the following diagram [+ + +]
Author: Bagas Sanjaya <[email protected]>
Date:   Tue Sep 16 12:42:01 2025 +0700

    Documentation: trace: historgram-design: Separate sched_waking histogram section heading and the following diagram
    
    [ Upstream commit 8c716e87ea33519920811338100d6d8a7fb32456 ]
    
    Section heading for sched_waking histogram is shown as normal paragraph
    instead due to codeblock marker for the following diagram being in the
    same line as the section underline. Separate them.
    
    Fixes: daceabf1b494 ("tracing/doc: Fix ascii-art in histogram-design.rst")
    Reviewed-by: Tom Zanussi <[email protected]>
    Reviewed-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Bagas Sanjaya <[email protected]>
    Acked-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Jonathan Corbet <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
driver core/PM: Set power.no_callbacks along with power.no_pm [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Thu Aug 28 12:59:24 2025 +0200

    driver core/PM: Set power.no_callbacks along with power.no_pm
    
    commit c2ce2453413d429e302659abc5ace634e873f6f5 upstream.
    
    Devices with power.no_pm set are not expected to need any power
    management at all, so modify device_set_pm_not_required() to set
    power.no_callbacks for them too in case runtime PM will be enabled
    for any of them (which in principle may be done for convenience if
    such a device participates in a dependency chain).
    
    Since device_set_pm_not_required() must be called before device_add()
    or it would not have any effect, it can update power.no_callbacks
    without locking, unlike pm_runtime_no_callbacks() that can be called
    after registering the target device.
    
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Cc: stable <[email protected]>
    Reviewed-by: Sudeep Holla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drivers/base/node: fix double free in register_one_node() [+ + +]
Author: Donet Tom <[email protected]>
Date:   Thu Sep 18 11:11:44 2025 +0530

    drivers/base/node: fix double free in register_one_node()
    
    [ Upstream commit 0efdedfa537eb534c251a5b4794caaf72cc55869 ]
    
    When device_register() fails in register_node(), it calls
    put_device(&node->dev).  This triggers node_device_release(), which calls
    kfree(to_node(dev)), thereby freeing the entire node structure.
    
    As a result, when register_node() returns an error, the node memory has
    already been freed.  Calling kfree(node) again in register_one_node()
    leads to a double free.
    
    This patch removes the redundant kfree(node) from register_one_node() to
    prevent the double free.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 786eb990cfb7 ("drivers/base/node: handle error properly in register_one_node()")
    Signed-off-by: Donet Tom <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Acked-by: Oscar Salvador <[email protected]>
    Cc: Alison Schofield <[email protected]>
    Cc: Chris Mason <[email protected]>
    Cc: Danilo Krummrich <[email protected]>
    Cc: Dave Jiang <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: Hiroyouki Kamezawa <[email protected]>
    Cc: Joanthan Cameron <[email protected]>
    Cc: "Ritesh Harjani (IBM)" <[email protected]>
    Cc: Yury Norov (NVIDIA) <[email protected]>
    Cc: Zi Yan <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drivers/base/node: handle error properly in register_one_node() [+ + +]
Author: Donet Tom <[email protected]>
Date:   Fri Aug 22 14:18:45 2025 +0530

    drivers/base/node: handle error properly in register_one_node()
    
    [ Upstream commit 786eb990cfb78aab94eb74fb32a030e14723a620 ]
    
    If register_node() returns an error, it is not handled correctly.
    The function will proceed further and try to register CPUs under the
    node, which is not correct.
    
    So, in this patch, if register_node() returns an error, we return
    immediately from the function.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 76b67ed9dce6 ("[PATCH] node hotplug: register cpu: remove node struct")
    Signed-off-by: Donet Tom <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Cc: Alison Schofield <[email protected]>
    Cc: Danilo Krummrich <[email protected]>
    Cc: Dave Jiang <[email protected]>
    Cc: Donet Tom <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: Hiroyouki Kamezawa <[email protected]>
    Cc: Joanthan Cameron <[email protected]>
    Cc: Oscar Salvador <[email protected]>
    Cc: "Ritesh Harjani (IBM)" <[email protected]>
    Cc: Yury Norov (NVIDIA) <[email protected]>
    Cc: Zi Yan <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/display: Remove redundant semicolons [+ + +]
Author: Liao Yuanhong <[email protected]>
Date:   Tue Aug 12 15:50:14 2025 +0800

    drm/amd/display: Remove redundant semicolons
    
    [ Upstream commit 90b810dd859c0df9db2290da1ac5842e5f031267 ]
    
    Remove unnecessary semicolons.
    
    Fixes: dda4fb85e433 ("drm/amd/display: DML changes for DCN32/321")
    Signed-off-by: Liao Yuanhong <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/pm: Adjust si_upload_smc_data register programming (v3) [+ + +]
Author: Timur Kristóf <[email protected]>
Date:   Thu Aug 28 17:11:07 2025 +0200

    drm/amd/pm: Adjust si_upload_smc_data register programming (v3)
    
    [ Upstream commit ce025130127437dc884c84c254170e27b2ce9309 ]
    
    Based on some comments in dm_pp_display_configuration
    above the crtc_index and line_time fields, these values
    are programmed to the SMC to work around an SMC hang
    when it switches MCLK.
    
    According to Alex, the Windows driver programs them to:
    mclk_change_block_cp_min = 200 / line_time
    mclk_change_block_cp_max = 100 / line_time
    Let's use the same for the sake of consistency.
    
    Previously we used the watermark values, but it seemed buggy
    as the code was mixing up low/high and A/B watermarks, and
    was not saving a low watermark value on DCE 6, so
    mclk_change_block_cp_max would be always zero previously.
    
    Split this change off from the previous si_upload_smc_data
    to make it easier to bisect, in case it causes any issues.
    
    Fixes: 841686df9f7d ("drm/amdgpu: add SI DPM support (v4)")
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Timur Kristóf <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/pm: Disable MCLK switching with non-DC at 120 Hz+ (v2) [+ + +]
Author: Timur Kristóf <[email protected]>
Date:   Thu Aug 28 17:11:09 2025 +0200

    drm/amd/pm: Disable MCLK switching with non-DC at 120 Hz+ (v2)
    
    [ Upstream commit ed3803533c7bf7df88bc3fc9f70bd317e1228ea8 ]
    
    According to pp_pm_compute_clocks the non-DC display code
    has "issues with mclk switching with refresh rates over 120 hz".
    The workaround is to disable MCLK switching in this case.
    
    Do the same for legacy DPM.
    
    Fixes: 6ddbd37f1074 ("drm/amd/pm: optimize the amdgpu_pm_compute_clocks() implementations")
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Timur Kristóf <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/pm: Disable SCLK switching on Oland with high pixel clocks (v3) [+ + +]
Author: Timur Kristóf <[email protected]>
Date:   Thu Aug 28 17:11:10 2025 +0200

    drm/amd/pm: Disable SCLK switching on Oland with high pixel clocks (v3)
    
    [ Upstream commit 7009e3af0474aca5f64262b3c72fb6e23b232f9b ]
    
    Port of commit 227545b9a08c ("drm/radeon/dpm: Disable sclk
    switching on Oland when two 4K 60Hz monitors are connected")
    
    This is an ad-hoc DPM fix, necessary because we don't have
    proper bandwidth calculation for DCE 6.
    
    We define "high pixelclock" for SI as higher than necessary
    for 4K 30Hz. For example, 4K 60Hz and 1080p 144Hz fall into
    this category.
    
    When two high pixel clock displays are connected to Oland,
    additionally disable shader clock switching, which results in
    a higher voltage, thereby addressing some visible flickering.
    
    v2:
    Add more comments.
    v3:
    Split into two commits for easier review.
    
    Fixes: 841686df9f7d ("drm/amdgpu: add SI DPM support (v4)")
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Timur Kristóf <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/pm: Disable ULV even if unsupported (v3) [+ + +]
Author: Timur Kristóf <[email protected]>
Date:   Thu Aug 28 17:11:04 2025 +0200

    drm/amd/pm: Disable ULV even if unsupported (v3)
    
    [ Upstream commit 3a0c3a4035f995e1f993dfaf4d63dc19e9b4bc1c ]
    
    Always send PPSMC_MSG_DisableULV to the SMC, even if ULV mode
    is unsupported, to make sure it is properly turned off.
    
    v3:
    Simplify si_disable_ulv further.
    Always check the return value of amdgpu_si_send_msg_to_smc.
    
    Fixes: 841686df9f7d ("drm/amdgpu: add SI DPM support (v4)")
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Timur Kristóf <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/pm: Fix si_upload_smc_data (v3) [+ + +]
Author: Timur Kristóf <[email protected]>
Date:   Thu Aug 28 17:11:06 2025 +0200

    drm/amd/pm: Fix si_upload_smc_data (v3)
    
    [ Upstream commit a43b2cec04b02743338aa78f837ee0bdf066a6d5 ]
    
    The si_upload_smc_data function uses si_write_smc_soft_register
    to set some register values in the SMC, and expects the result
    to be PPSMC_Result_OK which is 1.
    
    The PPSMC_Result_OK / PPSMC_Result_Failed values are used for
    checking the result of a command sent to the SMC.
    However, the si_write_smc_soft_register actually doesn't send
    any commands to the SMC and returns zero on success,
    so this check was incorrect.
    
    Fix that by not checking the return value, just like other
    calls to si_write_smc_soft_register.
    
    v3:
    Additionally, when no display is plugged in, there is no need
    to restrict MCLK switching, so program the registers to zero.
    
    Fixes: 841686df9f7d ("drm/amdgpu: add SI DPM support (v4)")
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Timur Kristóf <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/pm: Treat zero vblank time as too short in si_dpm (v3) [+ + +]
Author: Timur Kristóf <[email protected]>
Date:   Thu Aug 28 17:11:08 2025 +0200

    drm/amd/pm: Treat zero vblank time as too short in si_dpm (v3)
    
    [ Upstream commit 9003a0746864f39a0ef72bd45f8e1ad85d930d67 ]
    
    Some parts of the code base expect that MCLK switching is turned
    off when the vblank time is set to zero.
    
    According to pp_pm_compute_clocks the non-DC code has issues
    with MCLK switching with refresh rates over 120 Hz.
    
    v3:
    Add code comment to explain this better.
    Add an if statement instead of changing the switch_limit.
    
    Fixes: 841686df9f7d ("drm/amdgpu: add SI DPM support (v4)")
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Timur Kristóf <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdgpu: Power up UVD 3 for FW validation (v2) [+ + +]
Author: Timur Kristóf <[email protected]>
Date:   Thu Aug 28 17:11:03 2025 +0200

    drm/amdgpu: Power up UVD 3 for FW validation (v2)
    
    [ Upstream commit c661219cd7be75bb5599b525f16a455a058eb516 ]
    
    Unlike later versions, UVD 3 has firmware validation.
    For this to work, the UVD should be powered up correctly.
    
    When DPM is enabled and the display clock is off,
    the SMU may choose a power state which doesn't power
    the UVD, which can result in failure to initialize UVD.
    
    v2:
    Add code comments to explain about the UVD power state
    and how UVD clock is turned on/off.
    
    Fixes: b38f3e80ecec ("drm amdgpu: SI UVD v3_1 (v2)")
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Timur Kristóf <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdkfd: Fix error code sign for EINVAL in svm_ioctl() [+ + +]
Author: Qianfeng Rong <[email protected]>
Date:   Thu Sep 4 20:36:46 2025 +0800

    drm/amdkfd: Fix error code sign for EINVAL in svm_ioctl()
    
    [ Upstream commit cbda64f3f58027f68211dda8ea94d52d7e493995 ]
    
    Use negative error code -EINVAL instead of positive EINVAL in the default
    case of svm_ioctl() to conform to Linux kernel error code conventions.
    
    Fixes: 42de677f7999 ("drm/amdkfd: register svm range")
    Signed-off-by: Qianfeng Rong <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/msm/dpu: fix incorrect type for ret [+ + +]
Author: Qianfeng Rong <[email protected]>
Date:   Tue Aug 26 17:20:45 2025 +0800

    drm/msm/dpu: fix incorrect type for ret
    
    [ Upstream commit 88ec0e01a880e3326794e149efae39e3aa4dbbec ]
    
    Change 'ret' from unsigned long to int, as storing negative error codes
    in an unsigned long makes it never equal to -ETIMEDOUT, causing logical
    errors.
    
    Fixes: d7d0e73f7de3 ("drm/msm/dpu: introduce the dpu_encoder_phys_* for writeback")
    Signed-off-by: Qianfeng Rong <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/671100/
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/panel: novatek-nt35560: Fix invalid return value [+ + +]
Author: Brigham Campbell <[email protected]>
Date:   Wed Jul 30 21:23:41 2025 -0600

    drm/panel: novatek-nt35560: Fix invalid return value
    
    [ Upstream commit 125459e19ec654924e472f3ff5aeea40358dbebf ]
    
    Fix bug in nt35560_set_brightness() which causes the function to
    erroneously report an error. mipi_dsi_dcs_write() returns either a
    negative value when an error occurred or a positive number of bytes
    written when no error occurred. The buggy code reports an error under
    either condition.
    
    Fixes: 8152c2bfd780 ("drm/panel: Add driver for Sony ACX424AKP panel")
    Reviewed-by: Douglas Anderson <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Signed-off-by: Brigham Campbell <[email protected]>
    Signed-off-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/radeon/r600_cs: clean up of dead code in r600_cs [+ + +]
Author: Brahmajit Das <[email protected]>
Date:   Mon Aug 11 14:51:25 2025 +0530

    drm/radeon/r600_cs: clean up of dead code in r600_cs
    
    [ Upstream commit 260dcf5b06d519bcf27a5dfdb5c626821a55c170 ]
    
    GCC 16 enables -Werror=unused-but-set-variable= which results in build
    error with the following message.
    
    drivers/gpu/drm/radeon/r600_cs.c: In function ‘r600_texture_size’:
    drivers/gpu/drm/radeon/r600_cs.c:1411:29: error: variable ‘level’ set but not used [-Werror=unused-but-set-variable=]
     1411 |         unsigned offset, i, level;
          |                             ^~~~~
    cc1: all warnings being treated as errors
    make[6]: *** [scripts/Makefile.build:287: drivers/gpu/drm/radeon/r600_cs.o] Error 1
    
    level although is set, but in never used in the function
    r600_texture_size. Thus resulting in dead code and this error getting
    triggered.
    
    Fixes: 60b212f8ddcd ("drm/radeon: overhaul texture checking. (v3)")
    Acked-by: Christian König <[email protected]>
    Signed-off-by: Brahmajit Das <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ext4: fix checks for orphan inodes [+ + +]
Author: Jan Kara <[email protected]>
Date:   Thu Sep 25 14:30:39 2025 +0200

    ext4: fix checks for orphan inodes
    
    commit acf943e9768ec9d9be80982ca0ebc4bfd6b7631e upstream.
    
    When orphan file feature is enabled, inode can be tracked as orphan
    either in the standard orphan list or in the orphan file. The first can
    be tested by checking ei->i_orphan list head, the second is recorded by
    EXT4_STATE_ORPHAN_FILE inode state flag. There are several places where
    we want to check whether inode is tracked as orphan and only some of
    them properly check for both possibilities. Luckily the consequences are
    mostly minor, the worst that can happen is that we track an inode as
    orphan although we don't need to and e2fsck then complains (resulting in
    occasional ext4/307 xfstest failures). Fix the problem by introducing a
    helper for checking whether an inode is tracked as orphan and use it in
    appropriate places.
    
    Fixes: 4a79a98c7b19 ("ext4: Improve scalability of ext4 orphan file handling")
    Cc: [email protected]
    Signed-off-by: Jan Kara <[email protected]>
    Reviewed-by: Zhang Yi <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
f2fs: fix zero-sized extent for precache extents [+ + +]
Author: wangzijie <[email protected]>
Date:   Wed Sep 17 10:36:21 2025 +0800

    f2fs: fix zero-sized extent for precache extents
    
    [ Upstream commit 8175c864391753b210f3dcfae1aeed686a226ebb ]
    
    Script to reproduce:
    f2fs_io write 1 0 1881 rand dsync testfile
    f2fs_io fallocate 0 7708672 4096 testfile
    f2fs_io write 1 1881 1 rand buffered testfile
    fsync testfile
    umount
    mount
    f2fs_io precache_extents testfile
    
    When the data layout is something like this:
    dnode1:                     dnode2:
    [0]      A                  [0]    NEW_ADDR
    [1]      A+1                [1]    0x0
    ...
    [1016]   A+1016
    [1017]   B (B!=A+1017)      [1017] 0x0
    
    During precache_extents, we map the last block(valid blkaddr) in dnode1:
    map->m_flags |= F2FS_MAP_MAPPED;
    map->m_pblk = blkaddr(valid blkaddr);
    map->m_len = 1;
    then we goto next_dnode, meet the first block in dnode2(hole), goto sync_out:
    map->m_flags & F2FS_MAP_MAPPED == true, and we make zero-sized extent:
    
    map->m_len = 1
    ofs = start_pgofs - map->m_lblk = 1882 - 1881 = 1
    ei.fofs = start_pgofs = 1882
    ei.len = map->m_len - ofs = 1 - 1 = 0
    
    Rebased on patch[1], this patch can cover these cases to avoid zero-sized extent:
    A,B,C is valid blkaddr
    case1:
    dnode1:                     dnode2:
    [0]      A                  [0]    NEW_ADDR
    [1]      A+1                [1]    0x0
    ...                         ....
    [1016]   A+1016
    [1017]   B (B!=A+1017)      [1017] 0x0
    
    case2:
    dnode1:                     dnode2:
    [0]      A                  [0]    C (C!=B+1)
    [1]      A+1                [1]    C+1
    ...                         ....
    [1016]   A+1016
    [1017]   B (B!=A+1017)      [1017] 0x0
    
    case3:
    dnode1:                     dnode2:
    [0]      A                  [0]    C (C!=B+2)
    [1]      A+1                [1]    C+1
    ...                         ....
    [1015]   A+1015
    [1016]   B (B!=A+1016)
    [1017]   B+1                [1017] 0x0
    
    [1] https://lore.kernel.org/linux-f2fs-devel/[email protected]/
    
    Fixes: c4020b2da4c9 ("f2fs: support F2FS_IOC_PRECACHE_EXTENTS")
    Signed-off-by: wangzijie <[email protected]>
    Reviewed-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
filelock: add FL_RECLAIM to show_fl_flags() macro [+ + +]
Author: Jeff Layton <[email protected]>
Date:   Wed Sep 3 11:23:33 2025 -0400

    filelock: add FL_RECLAIM to show_fl_flags() macro
    
    [ Upstream commit c593b9d6c446510684da400833f9d632651942f0 ]
    
    Show the FL_RECLAIM flag symbolically in tracepoints.
    
    Fixes: bb0a55bb7148 ("nfs: don't allow reexport reclaims")
    Signed-off-by: Jeff Layton <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
firmware: firmware: meson-sm: fix compile-test default [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Fri Jul 25 09:54:29 2025 +0200

    firmware: firmware: meson-sm: fix compile-test default
    
    [ Upstream commit 0454346d1c5f7fccb3ef6e3103985de8ab3469f3 ]
    
    Enabling compile testing should not enable every individual driver (we
    have "allyesconfig" for that).
    
    Fixes: 4a434abc40d2 ("firmware: meson-sm: enable build as module")
    Signed-off-by: Johan Hovold <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Reviewed-by: Martin Blumenstingl <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Neil Armstrong <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs: ntfs3: Fix integer overflow in run_unpack() [+ + +]
Author: Vitaly Grigoryev <[email protected]>
Date:   Mon Aug 25 13:08:55 2025 +0300

    fs: ntfs3: Fix integer overflow in run_unpack()
    
    [ Upstream commit 736fc7bf5f68f6b74a0925b7e072c571838657d2 ]
    
    The MFT record relative to the file being opened contains its runlist,
    an array containing information about the file's location on the physical
    disk. Analysis of all Call Stack paths showed that the values of the
    runlist array, from which LCNs are calculated, are not validated before
    run_unpack function.
    
    The run_unpack function decodes the compressed runlist data format
    from MFT attributes (for example, $DATA), converting them into a runs_tree
    structure, which describes the mapping of virtual clusters (VCN) to
    logical clusters (LCN). The NTFS3 subsystem also has a shortcut for
    deleting files from MFT records - in this case, the RUN_DEALLOCATE
    command is sent to the run_unpack input, and the function logic
    provides that all data transferred to the runlist about file or
    directory is deleted without creating a runs_tree structure.
    
    Substituting the runlist in the $DATA attribute of the MFT record for an
    arbitrary file can lead either to access to arbitrary data on the disk
    bypassing access checks to them (since the inode access check
    occurs above) or to destruction of arbitrary data on the disk.
    
    Add overflow check for addition operation.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 4342306f0f0d ("fs/ntfs3: Add file operations and implementation")
    Signed-off-by: Vitaly Grigoryev <[email protected]>
    Signed-off-by: Konstantin Komarov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fs: udf: fix OOB read in lengthAllocDescs handling [+ + +]
Author: Larshin Sergey <[email protected]>
Date:   Mon Sep 22 16:13:58 2025 +0300

    fs: udf: fix OOB read in lengthAllocDescs handling
    
    commit 3bd5e45c2ce30e239d596becd5db720f7eb83c99 upstream.
    
    When parsing Allocation Extent Descriptor, lengthAllocDescs comes from
    on-disk data and must be validated against the block size. Crafted or
    corrupted images may set lengthAllocDescs so that the total descriptor
    length (sizeof(allocExtDesc) + lengthAllocDescs) exceeds the buffer,
    leading udf_update_tag() to call crc_itu_t() on out-of-bounds memory and
    trigger a KASAN use-after-free read.
    
    BUG: KASAN: use-after-free in crc_itu_t+0x1d5/0x2b0 lib/crc-itu-t.c:60
    Read of size 1 at addr ffff888041e7d000 by task syz-executor317/5309
    
    CPU: 0 UID: 0 PID: 5309 Comm: syz-executor317 Not tainted 6.12.0-rc4-syzkaller-00261-g850925a8133c #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
     print_address_description mm/kasan/report.c:377 [inline]
     print_report+0x169/0x550 mm/kasan/report.c:488
     kasan_report+0x143/0x180 mm/kasan/report.c:601
     crc_itu_t+0x1d5/0x2b0 lib/crc-itu-t.c:60
     udf_update_tag+0x70/0x6a0 fs/udf/misc.c:261
     udf_write_aext+0x4d8/0x7b0 fs/udf/inode.c:2179
     extent_trunc+0x2f7/0x4a0 fs/udf/truncate.c:46
     udf_truncate_tail_extent+0x527/0x7e0 fs/udf/truncate.c:106
     udf_release_file+0xc1/0x120 fs/udf/file.c:185
     __fput+0x23f/0x880 fs/file_table.c:431
     task_work_run+0x24f/0x310 kernel/task_work.c:239
     exit_task_work include/linux/task_work.h:43 [inline]
     do_exit+0xa2f/0x28e0 kernel/exit.c:939
     do_group_exit+0x207/0x2c0 kernel/exit.c:1088
     __do_sys_exit_group kernel/exit.c:1099 [inline]
     __se_sys_exit_group kernel/exit.c:1097 [inline]
     __x64_sys_exit_group+0x3f/0x40 kernel/exit.c:1097
     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
     </TASK>
    
    Validate the computed total length against epos->bh->b_size.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=8743fca924afed42f93e
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: [email protected]
    Signed-off-by: Larshin Sergey <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jan Kara <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
gcc-plugins: Remove TODO_verify_il for GCC >= 16 [+ + +]
Author: Kees Cook <[email protected]>
Date:   Sat Sep 20 16:45:23 2025 -0700

    gcc-plugins: Remove TODO_verify_il for GCC >= 16
    
    commit a40282dd3c484e6c882e93f4680e0a3ef3814453 upstream.
    
    GCC now runs TODO_verify_il automatically[1], so it is no longer exposed to
    plugins. Only use the flag on GCC < 16.
    
    Link: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=9739ae9384dd7cd3bb1c7683d6b80b7a9116eaf8 [1]
    Suggested-by: Christopher Fore <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
hid: fix I2C read buffer overflow in raw_event() for mcp2221 [+ + +]
Author: Arnaud Lecomte <[email protected]>
Date:   Sat Jul 26 23:09:31 2025 +0100

    hid: fix I2C read buffer overflow in raw_event() for mcp2221
    
    commit b56cc41a3ae7323aa3c6165f93c32e020538b6d2 upstream.
    
    As reported by syzbot, mcp2221_raw_event lacked
    validation of incoming I2C read data sizes, risking buffer
    overflows in mcp->rxbuf during multi-part transfers.
    As highlighted in the DS20005565B spec, p44, we have:
    "The number of read-back data bytes to follow in this packet:
    from 0 to a maximum of 60 bytes of read-back bytes."
    This patch enforces we don't exceed this limit.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=52c1a7d3e5b361ccd346
    Tested-by: [email protected]
    Signed-off-by: Arnaud Lecomte <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Benjamin Tissoires <[email protected]>
    Signed-off-by: Romain Sioen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
hwmon: (mlxreg-fan) Separate methods of fan setting coming from different subsystems [+ + +]
Author: Vadim Pasternak <[email protected]>
Date:   Mon Jan 13 10:48:58 2025 +0200

    hwmon: (mlxreg-fan) Separate methods of fan setting coming from different subsystems
    
    [ Upstream commit c02e4644f8ac9c501077ef5ac53ae7fc51472d49 ]
    
    Distinct between fan speed setting request coming for hwmon and
    thermal subsystems.
    
    There are fields 'last_hwmon_state' and 'last_thermal_state' in the
    structure 'mlxreg_fan_pwm', which respectively store the cooling state
    set by the 'hwmon' and 'thermal' subsystem.
    The purpose is to make arbitration of fan speed setting. For example, if
    fan speed required to be not lower than some limit, such setting is to
    be performed through 'hwmon' subsystem, thus 'thermal' subsystem will
    not set fan below this limit.
    
    Currently, the 'last_thermal_state' is also be updated by 'hwmon' causing
    cooling state to never be set to a lower value.
    
    Eliminate update of 'last_thermal_state', when request is coming from
    'hwmon' subsystem.
    
    Fixes: da74944d3a46 ("hwmon: (mlxreg-fan) Use pwm attribute for setting fan speed low limit")
    Signed-off-by: Vadim Pasternak <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
hwrng: ks-sa - fix division by zero in ks_sa_rng_init [+ + +]
Author: Nishanth Menon <[email protected]>
Date:   Fri Sep 19 08:20:02 2025 -0500

    hwrng: ks-sa - fix division by zero in ks_sa_rng_init
    
    [ Upstream commit 612b1dfeb414dfa780a6316014ceddf9a74ff5c0 ]
    
    Fix division by zero in ks_sa_rng_init caused by missing clock
    pointer initialization. The clk_get_rate() call is performed on
    an uninitialized clk pointer, resulting in division by zero when
    calculating delay values.
    
    Add clock initialization code before using the clock.
    
    Fixes: 6d01d8511dce ("hwrng: ks-sa - Add minimum sleep time before ready-polling")
    Signed-off-by: Nishanth Menon <[email protected]>
    
     drivers/char/hw_random/ks-sa-rng.c | 7 +++++++
     1 file changed, 7 insertions(+)
    Reviewed-by: Alexander Sverdlin <[email protected]>
    
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hwrng: nomadik - add ARM_AMBA dependency [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Tue Jul 29 17:28:00 2025 +0200

    hwrng: nomadik - add ARM_AMBA dependency
    
    [ Upstream commit efaa2d815a0e4d1c06750e587100f6f7f4ee5497 ]
    
    Compile-testing this driver is only possible when the AMBA bus driver is
    available in the kernel:
    
    x86_64-linux-ld: drivers/char/hw_random/nomadik-rng.o: in function `nmk_rng_remove':
    nomadik-rng.c:(.text+0x67): undefined reference to `amba_release_regions'
    x86_64-linux-ld: drivers/char/hw_random/nomadik-rng.o: in function `nmk_rng_probe':
    nomadik-rng.c:(.text+0xee): undefined reference to `amba_request_regions'
    x86_64-linux-ld: nomadik-rng.c:(.text+0x18d): undefined reference to `amba_release_regions'
    
    The was previously implied by the 'depends on ARCH_NOMADIK', but needs to be
    specified for the COMPILE_TEST case.
    
    Fixes: d5e93b3374e4 ("hwrng: Kconfig - Add helper dependency on COMPILE_TEST")
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
i2c: designware: Add disabling clocks when probe fails [+ + +]
Author: Kunihiko Hayashi <[email protected]>
Date:   Thu Jul 24 13:22:11 2025 +0900

    i2c: designware: Add disabling clocks when probe fails
    
    [ Upstream commit c149841b069ccc6e480b00e11f35a57b5d88c7bb ]
    
    After an error occurs during probing state, dw_i2c_plat_pm_cleanup() is
    called. However, this function doesn't disable clocks and the clock-enable
    count keeps increasing. Should disable these clocks explicitly.
    
    Fixes: 7272194ed391f ("i2c-designware: add minimal support for runtime PM")
    Co-developed-by: Kohei Ito <[email protected]>
    Signed-off-by: Kohei Ito <[email protected]>
    Signed-off-by: Kunihiko Hayashi <[email protected]>
    Acked-by: Jarkko Nikula <[email protected]>
    Signed-off-by: Wolfram Sang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

i2c: mediatek: fix potential incorrect use of I2C_MASTER_WRRD [+ + +]
Author: Leilk.Liu <[email protected]>
Date:   Sat Sep 6 16:24:06 2025 +0800

    i2c: mediatek: fix potential incorrect use of I2C_MASTER_WRRD
    
    [ Upstream commit b492183652808e0f389272bf63dc836241b287ff ]
    
    The old IC does not support the I2C_MASTER_WRRD (write-then-read)
    function, but the current code’s handling of i2c->auto_restart may
    potentially lead to entering the I2C_MASTER_WRRD software flow,
    resulting in unexpected bugs.
    
    Instead of repurposing the auto_restart flag, add a separate flag
    to signal I2C_MASTER_WRRD operations.
    
    Also fix handling of msgs. If the operation (i2c->op) is
    I2C_MASTER_WRRD, then the msgs pointer is incremented by 2.
    For all other operations, msgs is simply incremented by 1.
    
    Fixes: b2ed11e224a2 ("I2C: mediatek: Add driver for MediaTek MT8173 I2C controller")
    Signed-off-by: Leilk.Liu <[email protected]>
    Suggested-by: Chen-Yu Tsai <[email protected]>
    Reviewed-by: Chen-Yu Tsai <[email protected]>
    Signed-off-by: Wolfram Sang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
i3c: master: svc: Recycle unused IBI slot [+ + +]
Author: Stanley Chu <[email protected]>
Date:   Fri Aug 29 09:23:09 2025 +0800

    i3c: master: svc: Recycle unused IBI slot
    
    [ Upstream commit 3448a934ba6f803911ac084d05a2ffce507ea6c6 ]
    
    In svc_i3c_master_handle_ibi(), an IBI slot is fetched from the pool
    to store the IBI payload. However, when an error condition is encountered,
    the function returns without recycling the IBI slot, resulting in an IBI
    slot leak.
    
    Fixes: c85e209b799f ("i3c: master: svc: fix ibi may not return mandatory data byte")
    Signed-off-by: Stanley Chu <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

i3c: master: svc: Use manual response for IBI events [+ + +]
Author: Stanley Chu <[email protected]>
Date:   Fri Aug 29 09:23:08 2025 +0800

    i3c: master: svc: Use manual response for IBI events
    
    [ Upstream commit a7869b0a2540fd122eccec00ae7d4243166b0a60 ]
    
    Driver wants to nack the IBI request when the target is not in the
    known address list. In below code, svc_i3c_master_nack_ibi() will
    cause undefined behavior when using AUTOIBI with auto response rule,
    because hw always auto ack the IBI request.
    
        switch (ibitype) {
        case SVC_I3C_MSTATUS_IBITYPE_IBI:
                dev = svc_i3c_master_dev_from_addr(master, ibiaddr);
                if (!dev || !is_events_enabled(master, SVC_I3C_EVENT_IBI))
                        svc_i3c_master_nack_ibi(master);
                ...
                break;
    
    AutoIBI has another issue that the controller doesn't quit AutoIBI state
    after IBIWON polling timeout when there is a SDA glitch(high->low->high).
    1. SDA high->low: raising an interrupt to execute IBI ISR
    2. SDA low->high
    3. Driver writes an AutoIBI request
    4. AutoIBI process does not start because SDA is not low
    5. IBIWON polling times out
    6. Controller reamins in AutoIBI state and doesn't accept EmitStop request
    
    Emitting broadcast address with IBIRESP_MANUAL avoids both issues.
    
    Fixes: dd3c52846d59 ("i3c: master: svc: Add Silvaco I3C master driver")
    Signed-off-by: Stanley Chu <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
IB/sa: Fix sa_local_svc_timeout_ms read race [+ + +]
Author: Vlad Dumitrescu <[email protected]>
Date:   Tue Sep 16 19:31:12 2025 +0300

    IB/sa: Fix sa_local_svc_timeout_ms read race
    
    [ Upstream commit 1428cd764cd708d53a072a2f208d87014bfe05bc ]
    
    When computing the delta, the sa_local_svc_timeout_ms is read without
    ib_nl_request_lock held. Though unlikely in practice, this can cause
    a race condition if multiple local service threads are managing the
    timeout.
    
    Fixes: 2ca546b92a02 ("IB/sa: Route SA pathrecord query through netlink")
    Signed-off-by: Vlad Dumitrescu <[email protected]>
    Reviewed-by: Mark Zhang <[email protected]>
    Signed-off-by: Edward Srouji <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iio: consumers: Fix offset handling in iio_convert_raw_to_processed() [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Sun Aug 31 12:48:21 2025 +0200

    iio: consumers: Fix offset handling in iio_convert_raw_to_processed()
    
    [ Upstream commit 33f5c69c4daff39c010b3ea6da8ebab285f4277b ]
    
    Fix iio_convert_raw_to_processed() offset handling for channels without
    a scale attribute.
    
    The offset has been applied to the raw64 value not to the original raw
    value. Use the raw64 value so that the offset is taken into account.
    
    Fixes: 14b457fdde38 ("iio: inkern: apply consumer scale when no channel scale is available")
    Cc: Liam Beguin <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
init: INITRAMFS_PRESERVE_MTIME should depend on BLK_DEV_INITRD [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Mon Sep 15 09:11:05 2025 +0200

    init: INITRAMFS_PRESERVE_MTIME should depend on BLK_DEV_INITRD
    
    [ Upstream commit 74792608606a525a0e0df7e8d48acd8000561389 ]
    
    INITRAMFS_PRESERVE_MTIME is only used in init/initramfs.c and
    init/initramfs_test.c.  Hence add a dependency on BLK_DEV_INITRD, to
    prevent asking the user about this feature when configuring a kernel
    without initramfs support.
    
    Fixes: 1274aea127b2e8c9 ("initramfs: add INITRAMFS_PRESERVE_MTIME Kconfig option")
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Reviewed-by: Martin Wilck <[email protected]>
    Reviewed-by: David Disseldorp <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Input: atmel_mxt_ts - allow reset GPIO to sleep [+ + +]
Author: Marek Vasut <[email protected]>
Date:   Sun Oct 5 04:33:10 2025 +0200

    Input: atmel_mxt_ts - allow reset GPIO to sleep
    
    commit c7866ee0a9ddd9789faadf58cdac6abd7aabf045 upstream.
    
    The reset GPIO is not toggled in any critical section where it couldn't
    sleep, allow the reset GPIO to sleep. This allows the driver to operate
    reset GPIOs connected to I2C GPIO expanders.
    
    Signed-off-by: Marek Vasut <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: [email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Input: uinput - zero-initialize uinput_ff_upload_compat to avoid info leak [+ + +]
Author: Zhen Ni <[email protected]>
Date:   Sun Sep 28 14:37:37 2025 +0800

    Input: uinput - zero-initialize uinput_ff_upload_compat to avoid info leak
    
    commit d3366a04770eea807f2826cbdb96934dd8c9bf79 upstream.
    
    Struct ff_effect_compat is embedded twice inside
    uinput_ff_upload_compat, contains internal padding. In particular, there
    is a hole after struct ff_replay to satisfy alignment requirements for
    the following union member. Without clearing the structure,
    copy_to_user() may leak stack data to userspace.
    
    Initialize ff_up_compat to zero before filling valid fields.
    
    Fixes: 2d56f3a32c0e ("Input: refactor evdev 32bit compat to be shareable with uinput")
    Cc: [email protected]
    Signed-off-by: Zhen Ni <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ipvs: Defer ip_vs_ftp unregister during netns cleanup [+ + +]
Author: Slavin Liu <[email protected]>
Date:   Fri Sep 12 01:57:59 2025 +0800

    ipvs: Defer ip_vs_ftp unregister during netns cleanup
    
    [ Upstream commit 134121bfd99a06d44ef5ba15a9beb075297c0821 ]
    
    On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp
    before connections with valid cp->app pointers are flushed, leading to a
    use-after-free.
    
    Fix this by introducing a global `exiting_module` flag, set to true in
    ip_vs_ftp_exit() before unregistering the pernet subsystem. In
    __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns
    cleanup (when exiting_module is false) and defer it to
    __ip_vs_cleanup_batch(), which unregisters all apps after all connections
    are flushed. If called during module exit, unregister ip_vs_ftp
    immediately.
    
    Fixes: 61b1ab4583e2 ("IPVS: netns, add basic init per netns.")
    Suggested-by: Julian Anastasov <[email protected]>
    Signed-off-by: Slavin Liu <[email protected]>
    Signed-off-by: Julian Anastasov <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ksmbd: fix error code overwriting in smb2_get_info_filesystem() [+ + +]
Author: Matvey Kovalev <[email protected]>
Date:   Thu Sep 25 15:12:34 2025 +0300

    ksmbd: fix error code overwriting in smb2_get_info_filesystem()
    
    commit 88daf2f448aad05a2e6df738d66fe8b0cf85cee0 upstream.
    
    If client doesn't negotiate with SMB3.1.1 POSIX Extensions,
    then proper error code won't be returned due to overwriting.
    
    Return error immediately.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: e2f34481b24db ("cifsd: add server-side procedures for SMB3")
    Cc: [email protected]
    Signed-off-by: Matvey Kovalev <[email protected]>
    Acked-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
KVM: arm64: Fix softirq masking in FPSIMD register saving sequence [+ + +]
Author: Will Deacon <[email protected]>
Date:   Fri Oct 3 19:40:18 2025 +0100

    KVM: arm64: Fix softirq masking in FPSIMD register saving sequence
    
    Stable commit 8f4dc4e54eed ("KVM: arm64: Fix kernel BUG() due to bad
    backport of FPSIMD/SVE/SME fix") fixed a kernel BUG() caused by a bad
    backport of upstream commit fbc7e61195e2 ("KVM: arm64: Unconditionally
    save+flush host FPSIMD/SVE/SME state") by ensuring that softirqs are
    disabled/enabled across the fpsimd register save operation.
    
    Unfortunately, although this fixes the original issue, it can now lead
    to deadlock when re-enabling softirqs causes pending softirqs to be
    handled with locks already held:
    
     | BUG: spinlock recursion on CPU#7, CPU 3/KVM/57616
     |  lock: 0xffff3045ef850240, .magic: dead4ead, .owner: CPU 3/KVM/57616, .owner_cpu: 7
     | CPU: 7 PID: 57616 Comm: CPU 3/KVM Tainted: G           O       6.1.152 #1
     | Hardware name: SoftIron SoftIron Platform Mainboard/SoftIron Platform Mainboard, BIOS 1.31 May 11 2023
     | Call trace:
     |  dump_backtrace+0xe4/0x110
     |  show_stack+0x20/0x30
     |  dump_stack_lvl+0x6c/0x88
     |  dump_stack+0x18/0x34
     |  spin_dump+0x98/0xac
     |  do_raw_spin_lock+0x70/0x128
     |  _raw_spin_lock+0x18/0x28
     |  raw_spin_rq_lock_nested+0x18/0x28
     |  update_blocked_averages+0x70/0x550
     |  run_rebalance_domains+0x50/0x70
     |  handle_softirqs+0x198/0x328
     |  __do_softirq+0x1c/0x28
     |  ____do_softirq+0x18/0x28
     |  call_on_irq_stack+0x30/0x48
     |  do_softirq_own_stack+0x24/0x30
     |  do_softirq+0x74/0x90
     |  __local_bh_enable_ip+0x64/0x80
     |  fpsimd_save_and_flush_cpu_state+0x5c/0x68
     |  kvm_arch_vcpu_put_fp+0x4c/0x88
     |  kvm_arch_vcpu_put+0x28/0x88
     |  kvm_sched_out+0x38/0x58
     |  __schedule+0x55c/0x6c8
     |  schedule+0x60/0xa8
    
    Take a tiny step towards the upstream fix in 9b19700e623f ("arm64:
    fpsimd: Drop unneeded 'busy' flag") by additionally disabling hardirqs
    while saving the fpsimd registers.
    
    Cc: Ard Biesheuvel <[email protected]>
    Cc: Lee Jones <[email protected]>
    Cc: Sasha Levin <[email protected]>
    Cc: <[email protected]> # 6.1.y
    Fixes: 8f4dc4e54eed ("KVM: arm64: Fix kernel BUG() due to bad backport of FPSIMD/SVE/SME fix")
    Reported-by: Kenneth Van Alstyne <[email protected]>
    Link: https://lore.kernel.org/r/010001999bae0958-4d80d25d-8dda-4006-a6b9-798f3e774f6c-000000@email.amazonses.com
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
libbpf: Fix reuse of DEVMAP [+ + +]
Author: Yureka Lilian <[email protected]>
Date:   Thu Aug 14 20:01:12 2025 +0200

    libbpf: Fix reuse of DEVMAP
    
    [ Upstream commit 6c6b4146deb12d20f42490d5013f2043df942161 ]
    
    Previously, re-using pinned DEVMAP maps would always fail, because
    get_map_info on a DEVMAP always returns flags with BPF_F_RDONLY_PROG set,
    but BPF_F_RDONLY_PROG being set on a map during creation is invalid.
    
    Thus, ignore the BPF_F_RDONLY_PROG flag in the flags returned from
    get_map_info when checking for compatibility with an existing DEVMAP.
    
    The same problem is handled in a third-party ebpf library:
    - https://github.com/cilium/ebpf/issues/925
    - https://github.com/cilium/ebpf/pull/930
    
    Fixes: 0cdbb4b09a06 ("devmap: Allow map lookups from eBPF")
    Signed-off-by: Yureka Lilian <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 6.1.156 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Wed Oct 15 11:56:41 2025 +0200

    Linux 6.1.156
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Brett A C Sheffield <[email protected]>
    Tested-by: Salvatore Bonaccorso <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Tested-by: Pavel Machek (CIP) <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Tested-by: Miguel Ojeda <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
media: b2c2: Fix use-after-free causing by irq_check_work in flexcop_pci_remove [+ + +]
Author: Duoming Zhou <[email protected]>
Date:   Wed Sep 17 17:59:26 2025 +0800

    media: b2c2: Fix use-after-free causing by irq_check_work in flexcop_pci_remove
    
    commit 01e03fb7db419d39e18d6090d4873c1bff103914 upstream.
    
    The original code uses cancel_delayed_work() in flexcop_pci_remove(), which
    does not guarantee that the delayed work item irq_check_work has fully
    completed if it was already running. This leads to use-after-free scenarios
    where flexcop_pci_remove() may free the flexcop_device while irq_check_work
    is still active and attempts to dereference the device.
    
    A typical race condition is illustrated below:
    
    CPU 0 (remove)                         | CPU 1 (delayed work callback)
    flexcop_pci_remove()                   | flexcop_pci_irq_check_work()
      cancel_delayed_work()                |
      flexcop_device_kfree(fc_pci->fc_dev) |
                                           |   fc = fc_pci->fc_dev; // UAF
    
    This is confirmed by a KASAN report:
    
    ==================================================================
    BUG: KASAN: slab-use-after-free in __run_timer_base.part.0+0x7d7/0x8c0
    Write of size 8 at addr ffff8880093aa8c8 by task bash/135
    ...
    Call Trace:
     <IRQ>
     dump_stack_lvl+0x55/0x70
     print_report+0xcf/0x610
     ? __run_timer_base.part.0+0x7d7/0x8c0
     kasan_report+0xb8/0xf0
     ? __run_timer_base.part.0+0x7d7/0x8c0
     __run_timer_base.part.0+0x7d7/0x8c0
     ? __pfx___run_timer_base.part.0+0x10/0x10
     ? __pfx_read_tsc+0x10/0x10
     ? ktime_get+0x60/0x140
     ? lapic_next_event+0x11/0x20
     ? clockevents_program_event+0x1d4/0x2a0
     run_timer_softirq+0xd1/0x190
     handle_softirqs+0x16a/0x550
     irq_exit_rcu+0xaf/0xe0
     sysvec_apic_timer_interrupt+0x70/0x80
     </IRQ>
    ...
    
    Allocated by task 1:
     kasan_save_stack+0x24/0x50
     kasan_save_track+0x14/0x30
     __kasan_kmalloc+0x7f/0x90
     __kmalloc_noprof+0x1be/0x460
     flexcop_device_kmalloc+0x54/0xe0
     flexcop_pci_probe+0x1f/0x9d0
     local_pci_probe+0xdc/0x190
     pci_device_probe+0x2fe/0x470
     really_probe+0x1ca/0x5c0
     __driver_probe_device+0x248/0x310
     driver_probe_device+0x44/0x120
     __driver_attach+0xd2/0x310
     bus_for_each_dev+0xed/0x170
     bus_add_driver+0x208/0x500
     driver_register+0x132/0x460
     do_one_initcall+0x89/0x300
     kernel_init_freeable+0x40d/0x720
     kernel_init+0x1a/0x150
     ret_from_fork+0x10c/0x1a0
     ret_from_fork_asm+0x1a/0x30
    
    Freed by task 135:
     kasan_save_stack+0x24/0x50
     kasan_save_track+0x14/0x30
     kasan_save_free_info+0x3a/0x60
     __kasan_slab_free+0x3f/0x50
     kfree+0x137/0x370
     flexcop_device_kfree+0x32/0x50
     pci_device_remove+0xa6/0x1d0
     device_release_driver_internal+0xf8/0x210
     pci_stop_bus_device+0x105/0x150
     pci_stop_and_remove_bus_device_locked+0x15/0x30
     remove_store+0xcc/0xe0
     kernfs_fop_write_iter+0x2c3/0x440
     vfs_write+0x871/0xd70
     ksys_write+0xee/0x1c0
     do_syscall_64+0xac/0x280
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    ...
    
    Replace cancel_delayed_work() with cancel_delayed_work_sync() to ensure
    that the delayed work item is properly canceled and any executing delayed
    work has finished before the device memory is deallocated.
    
    This bug was initially identified through static analysis. To reproduce
    and test it, I simulated the B2C2 FlexCop PCI device in QEMU and introduced
    artificial delays within the flexcop_pci_irq_check_work() function to
    increase the likelihood of triggering the bug.
    
    Fixes: 382c5546d618 ("V4L/DVB (10694): [PATCH] software IRQ watchdog for Flexcop B2C2 DVB PCI cards")
    Cc: [email protected]
    Signed-off-by: Duoming Zhou <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: i2c: tc358743: Fix use-after-free bugs caused by orphan timer in probe [+ + +]
Author: Duoming Zhou <[email protected]>
Date:   Fri Oct 3 14:47:26 2025 -0400

    media: i2c: tc358743: Fix use-after-free bugs caused by orphan timer in probe
    
    [ Upstream commit 79d10f4f21a92e459b2276a77be62c59c1502c9d ]
    
    The state->timer is a cyclic timer that schedules work_i2c_poll and
    delayed_work_enable_hotplug, while rearming itself. Using timer_delete()
    fails to guarantee the timer isn't still running when destroyed, similarly
    cancel_delayed_work() cannot ensure delayed_work_enable_hotplug has
    terminated if already executing. During probe failure after timer
    initialization, these may continue running as orphans and reference the
    already-freed tc358743_state object through tc358743_irq_poll_timer.
    
    The following is the trace captured by KASAN.
    
    BUG: KASAN: slab-use-after-free in __run_timer_base.part.0+0x7d7/0x8c0
    Write of size 8 at addr ffff88800ded83c8 by task swapper/1/0
    ...
    Call Trace:
     <IRQ>
     dump_stack_lvl+0x55/0x70
     print_report+0xcf/0x610
     ? __pfx_sched_balance_find_src_group+0x10/0x10
     ? __run_timer_base.part.0+0x7d7/0x8c0
     kasan_report+0xb8/0xf0
     ? __run_timer_base.part.0+0x7d7/0x8c0
     __run_timer_base.part.0+0x7d7/0x8c0
     ? rcu_sched_clock_irq+0xb06/0x27d0
     ? __pfx___run_timer_base.part.0+0x10/0x10
     ? try_to_wake_up+0xb15/0x1960
     ? tmigr_update_events+0x280/0x740
     ? _raw_spin_lock_irq+0x80/0xe0
     ? __pfx__raw_spin_lock_irq+0x10/0x10
     tmigr_handle_remote_up+0x603/0x7e0
     ? __pfx_tmigr_handle_remote_up+0x10/0x10
     ? sched_balance_trigger+0x98/0x9f0
     ? sched_tick+0x221/0x5a0
     ? _raw_spin_lock_irq+0x80/0xe0
     ? __pfx__raw_spin_lock_irq+0x10/0x10
     ? tick_nohz_handler+0x339/0x440
     ? __pfx_tmigr_handle_remote_up+0x10/0x10
     __walk_groups.isra.0+0x42/0x150
     tmigr_handle_remote+0x1f4/0x2e0
     ? __pfx_tmigr_handle_remote+0x10/0x10
     ? ktime_get+0x60/0x140
     ? lapic_next_event+0x11/0x20
     ? clockevents_program_event+0x1d4/0x2a0
     ? hrtimer_interrupt+0x322/0x780
     handle_softirqs+0x16a/0x550
     irq_exit_rcu+0xaf/0xe0
     sysvec_apic_timer_interrupt+0x70/0x80
     </IRQ>
    ...
    
    Allocated by task 141:
     kasan_save_stack+0x24/0x50
     kasan_save_track+0x14/0x30
     __kasan_kmalloc+0x7f/0x90
     __kmalloc_node_track_caller_noprof+0x198/0x430
     devm_kmalloc+0x7b/0x1e0
     tc358743_probe+0xb7/0x610  i2c_device_probe+0x51d/0x880
     really_probe+0x1ca/0x5c0
     __driver_probe_device+0x248/0x310
     driver_probe_device+0x44/0x120
     __device_attach_driver+0x174/0x220
     bus_for_each_drv+0x100/0x190
     __device_attach+0x206/0x370
     bus_probe_device+0x123/0x170
     device_add+0xd25/0x1470
     i2c_new_client_device+0x7a0/0xcd0
     do_one_initcall+0x89/0x300
     do_init_module+0x29d/0x7f0
     load_module+0x4f48/0x69e0
     init_module_from_file+0xe4/0x150
     idempotent_init_module+0x320/0x670
     __x64_sys_finit_module+0xbd/0x120
     do_syscall_64+0xac/0x280
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Freed by task 141:
     kasan_save_stack+0x24/0x50
     kasan_save_track+0x14/0x30
     kasan_save_free_info+0x3a/0x60
     __kasan_slab_free+0x3f/0x50
     kfree+0x137/0x370
     release_nodes+0xa4/0x100
     devres_release_group+0x1b2/0x380
     i2c_device_probe+0x694/0x880
     really_probe+0x1ca/0x5c0
     __driver_probe_device+0x248/0x310
     driver_probe_device+0x44/0x120
     __device_attach_driver+0x174/0x220
     bus_for_each_drv+0x100/0x190
     __device_attach+0x206/0x370
     bus_probe_device+0x123/0x170
     device_add+0xd25/0x1470
     i2c_new_client_device+0x7a0/0xcd0
     do_one_initcall+0x89/0x300
     do_init_module+0x29d/0x7f0
     load_module+0x4f48/0x69e0
     init_module_from_file+0xe4/0x150
     idempotent_init_module+0x320/0x670
     __x64_sys_finit_module+0xbd/0x120
     do_syscall_64+0xac/0x280
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    ...
    
    Replace timer_delete() with timer_delete_sync() and cancel_delayed_work()
    with cancel_delayed_work_sync() to ensure proper termination of timer and
    work items before resource cleanup.
    
    This bug was initially identified through static analysis. For reproduction
    and testing, I created a functional emulation of the tc358743 device via a
    kernel module and introduced faults through the debugfs interface.
    
    Fixes: 869f38ae07f7 ("media: i2c: tc358743: Fix crash in the probe error path when using polling")
    Fixes: d32d98642de6 ("[media] Driver for Toshiba TC358743 HDMI to CSI-2 bridge")
    Cc: [email protected]
    Signed-off-by: Duoming Zhou <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    [ replaced del_timer() instead of timer_delete() ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: rc: fix races with imon_disconnect() [+ + +]
Author: Larshin Sergey <[email protected]>
Date:   Tue Jul 29 13:13:32 2025 +0300

    media: rc: fix races with imon_disconnect()
    
    commit fa0f61cc1d828178aa921475a9b786e7fbb65ccb upstream.
    
    Syzbot reports a KASAN issue as below:
    BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline]
    BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627
    Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465
    
    CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
    Call Trace:
     <TASK>
    __dump_stack lib/dump_stack.c:88 [inline]
    dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
    print_address_description mm/kasan/report.c:317 [inline]
    print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433
    kasan_report+0xb1/0x1e0 mm/kasan/report.c:495
    __create_pipe include/linux/usb.h:1945 [inline]
    send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627
    vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991
    vfs_write+0x2d7/0xdd0 fs/read_write.c:576
    ksys_write+0x127/0x250 fs/read_write.c:631
    do_syscall_x64 arch/x86/entry/common.c:50 [inline]
    do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
    entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    The iMON driver improperly releases the usb_device reference in
    imon_disconnect without coordinating with active users of the
    device.
    
    Specifically, the fields usbdev_intf0 and usbdev_intf1 are not
    protected by the users counter (ictx->users). During probe,
    imon_init_intf0 or imon_init_intf1 increments the usb_device
    reference count depending on the interface. However, during
    disconnect, usb_put_dev is called unconditionally, regardless of
    actual usage.
    
    As a result, if vfd_write or other operations are still in
    progress after disconnect, this can lead to a use-after-free of
    the usb_device pointer.
    
    Thread 1 vfd_write                      Thread 2 imon_disconnect
                                            ...
                                            if
                                              usb_put_dev(ictx->usbdev_intf0)
                                            else
                                              usb_put_dev(ictx->usbdev_intf1)
    ...
    while
      send_packet
        if
          pipe = usb_sndintpipe(
            ictx->usbdev_intf0) UAF
        else
          pipe = usb_sndctrlpipe(
            ictx->usbdev_intf0, 0) UAF
    
    Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by
    checking ictx->disconnected in all writer paths. Add early return
    with -ENODEV in send_packet(), vfd_write(), lcd_write() and
    display_open() if the device is no longer present.
    
    Set and read ictx->disconnected under ictx->lock to ensure memory
    synchronization. Acquire the lock in imon_disconnect() before setting
    the flag to synchronize with any ongoing operations.
    
    Ensure writers exit early and safely after disconnect before the USB
    core proceeds with cleanup.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=f1a69784f6efe748c3bf
    Fixes: 21677cfc562a ("V4L/DVB: ir-core: add imon driver")
    Cc: [email protected]
    
    Signed-off-by: Larshin Sergey <[email protected]>
    Signed-off-by: Sean Young <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: rj54n1cb0c: Fix memleak in rj54n1_probe() [+ + +]
Author: Zhang Shurong <[email protected]>
Date:   Tue Jun 24 16:27:24 2025 +0800

    media: rj54n1cb0c: Fix memleak in rj54n1_probe()
    
    [ Upstream commit fda55673ecdabf25f5ecc61b5ab17239257ac252 ]
    
    rj54n1_probe() won't clean all the allocated resources in fail
    path, which may causes the memleaks. Add v4l2_ctrl_handler_free() to
    prevent memleak.
    
    Fixes: f187352dcd45 ("media: i2c: Copy rj54n1cb0c soc_camera sensor driver")
    Signed-off-by: Zhang Shurong <[email protected]>
    Reviewed-by: Jacopo Mondi <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: st-delta: avoid excessive stack usage [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Tue Jun 10 11:31:56 2025 +0200

    media: st-delta: avoid excessive stack usage
    
    [ Upstream commit 5954ad7d1af92cb6244c5f31216e43af55febbb7 ]
    
    Building with a reduced stack warning limit shows that delta_mjpeg_decode()
    copies a giant structure to the stack each time but only uses three of
    its members:
    
    drivers/media/platform/st/sti/delta/delta-mjpeg-dec.c: In function 'delta_mjpeg_decode':
    drivers/media/platform/st/sti/delta/delta-mjpeg-dec.c:427:1: error: the frame size of 1296 bytes is larger than 1280 bytes [-Werror=frame-larger-than=]
    
    Open-code the passing of the structure members that are actually used here.
    
    Fixes: 433ff5b4a29b ("[media] st-delta: add mjpeg support")
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: tuner: xc5000: Fix use-after-free in xc5000_release [+ + +]
Author: Duoming Zhou <[email protected]>
Date:   Fri Oct 3 16:43:26 2025 -0400

    media: tuner: xc5000: Fix use-after-free in xc5000_release
    
    [ Upstream commit 40b7a19f321e65789612ebaca966472055dab48c ]
    
    The original code uses cancel_delayed_work() in xc5000_release(), which
    does not guarantee that the delayed work item timer_sleep has fully
    completed if it was already running. This leads to use-after-free scenarios
    where xc5000_release() may free the xc5000_priv while timer_sleep is still
    active and attempts to dereference the xc5000_priv.
    
    A typical race condition is illustrated below:
    
    CPU 0 (release thread)                 | CPU 1 (delayed work callback)
    xc5000_release()                       | xc5000_do_timer_sleep()
      cancel_delayed_work()                |
      hybrid_tuner_release_state(priv)     |
        kfree(priv)                        |
                                           |   priv = container_of() // UAF
    
    Replace cancel_delayed_work() with cancel_delayed_work_sync() to ensure
    that the timer_sleep is properly canceled before the xc5000_priv memory
    is deallocated.
    
    A deadlock concern was considered: xc5000_release() is called in a process
    context and is not holding any locks that the timer_sleep work item might
    also need. Therefore, the use of the _sync() variant is safe here.
    
    This bug was initially identified through static analysis.
    
    Fixes: f7a27ff1fb77 ("[media] xc5000: delay tuner sleep to 5 seconds")
    Cc: [email protected]
    Signed-off-by: Duoming Zhou <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    [hverkuil: fix typo in Subject: tunner -> tuner]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: tunner: xc5000: Refactor firmware load [+ + +]
Author: Ricardo Ribalda <[email protected]>
Date:   Fri Oct 3 16:43:25 2025 -0400

    media: tunner: xc5000: Refactor firmware load
    
    [ Upstream commit 8e1f5da59dd4a1966f859639860b803a7e8b8bfb ]
    
    Make sure the firmware is released when we leave
    xc_load_fw_and_init_tuner()
    
    This change makes smatch happy:
    drivers/media/tuners/xc5000.c:1213 xc_load_fw_and_init_tuner() warn: 'fw' from request_firmware() not released on lines: 1213.
    
    Cc: Shuah Khan <[email protected]>
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Stable-dep-of: 40b7a19f321e ("media: tuner: xc5000: Fix use-after-free in xc5000_release")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mfd: vexpress-sysreg: Check the return value of devm_gpiochip_add_data() [+ + +]
Author: Bartosz Golaszewski <[email protected]>
Date:   Mon Aug 11 15:36:16 2025 +0200

    mfd: vexpress-sysreg: Check the return value of devm_gpiochip_add_data()
    
    commit 1efbee6852f1ff698a9981bd731308dd027189fb upstream.
    
    Commit 974cc7b93441 ("mfd: vexpress: Define the device as MFD cells")
    removed the return value check from the call to gpiochip_add_data() (or
    rather gpiochip_add() back then and later converted to devres) with no
    explanation. This function however can still fail, so check the return
    value and bail-out if it does.
    
    Cc: [email protected]
    Fixes: 974cc7b93441 ("mfd: vexpress: Define the device as MFD cells")
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
minmax.h: add whitespace around operators and after commas [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 3 12:15:14 2025 +0000

    minmax.h: add whitespace around operators and after commas
    
    [ Upstream commit 71ee9b16251ea4bf7c1fe222517c82bdb3220acc ]
    
    Patch series "minmax.h: Cleanups and minor optimisations".
    
    Some tidyups and minor changes to minmax.h.
    
    This patch (of 7):
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Carpenter <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Pedro Falcato <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax.h: move all the clamp() definitions after the min/max() ones [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 3 12:15:18 2025 +0000

    minmax.h: move all the clamp() definitions after the min/max() ones
    
    [ Upstream commit c3939872ee4a6b8bdcd0e813c66823b31e6e26f7 ]
    
    At some point the definitions for clamp() got added in the middle of the
    ones for min() and max().  Re-order the definitions so they are more
    sensibly grouped.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Carpenter <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Pedro Falcato <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax.h: reduce the #define expansion of min(), max() and clamp() [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 3 12:15:16 2025 +0000

    minmax.h: reduce the #define expansion of min(), max() and clamp()
    
    [ Upstream commit b280bb27a9f7c91ddab730e1ad91a9c18a051f41 ]
    
    Since the test for signed values being non-negative only relies on
    __builtion_constant_p() (not is_constexpr()) it can use the 'ux' variable
    instead of the caller supplied expression.  This means that the #define
    parameters are only expanded twice.  Once in the code and once quoted in
    the error message.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Carpenter <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Pedro Falcato <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax.h: remove some #defines that are only expanded once [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 3 12:15:20 2025 +0000

    minmax.h: remove some #defines that are only expanded once
    
    [ Upstream commit 2b97aaf74ed534fb838d09867d09a3ca5d795208 ]
    
    The bodies of __signed_type_use() and __unsigned_type_use() are much the
    same size as their names - so put the bodies in the only line that expands
    them.
    
    Similarly __signed_type() is defined separately for 64bit and then used
    exactly once just below.
    
    Change the test for __signed_type from CONFIG_64BIT to one based on gcc
    defined macros so that the code is valid if it gets used outside of a
    kernel build.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Carpenter <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Pedro Falcato <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax.h: simplify the variants of clamp() [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 3 12:15:19 2025 +0000

    minmax.h: simplify the variants of clamp()
    
    [ Upstream commit 495bba17cdf95e9703af1b8ef773c55ef0dfe703 ]
    
    Always pass a 'type' through to __clamp_once(), pass '__auto_type' from
    clamp() itself.
    
    The expansion of __types_ok3() is reasonable so it isn't worth the added
    complexity of avoiding it when a fixed type is used for all three values.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Carpenter <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Pedro Falcato <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax.h: update some comments [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 3 12:15:15 2025 +0000

    minmax.h: update some comments
    
    [ Upstream commit 10666e99204818ef45c702469488353b5bb09ec7 ]
    
    - Change three to several.
    - Remove the comment about retaining constant expressions, no longer true.
    - Realign to nearer 80 columns and break on major punctiation.
    - Add a leading comment to the block before __signed_type() and __is_nonneg()
      Otherwise the block explaining the cast is a bit 'floating'.
      Reword the rest of that comment to improve readability.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Carpenter <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Pedro Falcato <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax.h: use BUILD_BUG_ON_MSG() for the lo < hi test in clamp() [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 3 12:15:17 2025 +0000

    minmax.h: use BUILD_BUG_ON_MSG() for the lo < hi test in clamp()
    
    [ Upstream commit a5743f32baec4728711bbc01d6ac2b33d4c67040 ]
    
    Use BUILD_BUG_ON_MSG(statically_true(ulo > uhi), ...) for the sanity check
    of the bounds in clamp().  Gives better error coverage and one less
    expansion of the arguments.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Carpenter <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Pedro Falcato <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
minmax: don't use max() in situations that want a C constant expression [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Fri Oct 3 12:15:10 2025 +0000

    minmax: don't use max() in situations that want a C constant expression
    
    [ Upstream commit cb04e8b1d2f24c4c2c92f7b7529031fc35a16fed ]
    
    We only had a couple of array[] declarations, and changing them to just
    use 'MAX()' instead of 'max()' fixes the issue.
    
    This will allow us to simplify our min/max macros enormously, since they
    can now unconditionally use temporary variables to avoid using the
    argument values multiple times.
    
    Cc: David Laight <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: fix up min3() and max3() too [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Fri Oct 3 12:15:13 2025 +0000

    minmax: fix up min3() and max3() too
    
    [ Upstream commit 21b136cc63d2a9ddd60d4699552b69c214b32964 ]
    
    David Laight pointed out that we should deal with the min3() and max3()
    mess too, which still does excessive expansion.
    
    And our current macros are actually rather broken.
    
    In particular, the macros did this:
    
      #define min3(x, y, z) min((typeof(x))min(x, y), z)
      #define max3(x, y, z) max((typeof(x))max(x, y), z)
    
    and that not only is a nested expansion of possibly very complex
    arguments with all that involves, the typing with that "typeof()" cast
    is completely wrong.
    
    For example, imagine what happens in max3() if 'x' happens to be a
    'unsigned char', but 'y' and 'z' are 'unsigned long'.  The types are
    compatible, and there's no warning - but the result is just random
    garbage.
    
    No, I don't think we've ever hit that issue in practice, but since we
    now have sane infrastructure for doing this right, let's just use it.
    It fixes any excessive expansion, and also avoids these kinds of broken
    type issues.
    
    Requested-by: David Laight <[email protected]>
    Acked-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: improve macro expansion and type checking [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Fri Oct 3 12:15:12 2025 +0000

    minmax: improve macro expansion and type checking
    
    [ Upstream commit 22f5468731491e53356ba7c028f0fdea20b18e2c ]
    
    This clarifies the rules for min()/max()/clamp() type checking and makes
    them a much more efficient macro expansion.
    
    In particular, we now look at the type and range of the inputs to see
    whether they work together, generating a mask of acceptable comparisons,
    and then just verifying that the inputs have a shared case:
    
     - an expression with a signed type can be used for
        (1) signed comparisons
        (2) unsigned comparisons if it is statically known to have a
            non-negative value
    
     - an expression with an unsigned type can be used for
        (3) unsigned comparison
        (4) signed comparisons if the type is smaller than 'int' and thus
            the C integer promotion rules will make it signed anyway
    
    Here rule (1) and (3) are obvious, and rule (2) is important in order to
    allow obvious trivial constants to be used together with unsigned
    values.
    
    Rule (4) is not necessarily a good idea, but matches what we used to do,
    and we have extant cases of this situation in the kernel.  Notably with
    bcachefs having an expression like
    
            min(bch2_bucket_sectors_dirty(a), ca->mi.bucket_size)
    
    where bch2_bucket_sectors_dirty() returns an 's64', and
    'ca->mi.bucket_size' is of type 'u16'.
    
    Technically that bcachefs comparison is clearly sensible on a C type
    level, because the 'u16' will go through the normal C integer promotion,
    and become 'int', and then we're comparing two signed values and
    everything looks sane.
    
    However, it's not entirely clear that a 'min(s64,u16)' operation makes a
    lot of conceptual sense, and it's possible that we will remove rule (4).
    After all, the _reason_ we have these complicated type checks is exactly
    that the C type promotion rules are not very intuitive.
    
    But at least for now the rule is in place for backwards compatibility.
    
    Also note that rule (2) existed before, but is hugely relaxed by this
    commit.  It used to be true only for the simplest compile-time
    non-negative integer constants.  The new macro model will allow cases
    where the compiler can trivially see that an expression is non-negative
    even if it isn't necessarily a constant.
    
    For example, the amdgpu driver does
    
            min_t(size_t, sizeof(fru_info->serial), pia[addr] & 0x3F));
    
    because our old 'min()' macro would see that 'pia[addr] & 0x3F' is of
    type 'int' and clearly not a C constant expression, so doing a 'min()'
    with a 'size_t' is a signedness violation.
    
    Our new 'min()' macro still sees that 'pia[addr] & 0x3F' is of type
    'int', but is smart enough to also see that it is clearly non-negative,
    and thus would allow that case without any complaints.
    
    Cc: Arnd Bergmann <[email protected]>
    Cc: David Laight <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: simplify min()/max()/clamp() implementation [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Fri Oct 3 12:15:11 2025 +0000

    minmax: simplify min()/max()/clamp() implementation
    
    [ Upstream commit dc1c8034e31b14a2e5e212104ec508aec44ce1b9 ]
    
    Now that we no longer have any C constant expression contexts (ie array
    size declarations or static initializers) that use min() or max(), we
    can simpify the implementation by not having to worry about the result
    staying as a C constant expression.
    
    So now we can unconditionally just use temporary variables of the right
    type, and get rid of the excessive expansion that used to come from the
    use of
    
       __builtin_choose_expr(__is_constexpr(...), ..
    
    to pick the specialized code for constant expressions.
    
    Another expansion simplification is to pass the temporary variables (in
    addition to the original expression) to our __types_ok() macro.  That
    may superficially look like it complicates the macro, but when we only
    want the type of the expression, expanding the temporary variable names
    is much simpler and smaller than expanding the potentially complicated
    original expression.
    
    As a result, on my machine, doing a
    
      $ time make drivers/staging/media/atomisp/pci/isp/kernels/ynr/ynr_1.0/ia_css_ynr.host.i
    
    goes from
    
            real    0m16.621s
            user    0m15.360s
            sys     0m1.221s
    
    to
    
            real    0m2.532s
            user    0m2.091s
            sys     0m0.452s
    
    because the token expansion goes down dramatically.
    
    In particular, the longest line expansion (which was line 71 of that
    'ia_css_ynr.host.c' file) shrinks from 23,338kB (yes, 23MB for one
    single line) to "just" 1,444kB (now "only" 1.4MB).
    
    And yes, that line is still the line from hell, because it's doing
    multiple levels of "min()/max()" expansion thanks to some of them being
    hidden inside the uDIGIT_FITTING() macro.
    
    Lorenzo has a nice cleanup patch that makes that driver use inline
    functions instead of macros for sDIGIT_FITTING() and uDIGIT_FITTING(),
    which will fix that line once and for all, but the 16-fold reduction in
    this case does show why we need to simplify these helpers.
    
    Cc: David Laight <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
misc: fastrpc: Fix fastrpc_map_lookup operation [+ + +]
Author: Ling Xu <[email protected]>
Date:   Fri Sep 12 14:12:34 2025 +0100

    misc: fastrpc: Fix fastrpc_map_lookup operation
    
    commit 9031626ade38b092b72638dfe0c6ffce8d8acd43 upstream.
    
    Fastrpc driver creates maps for user allocated fd buffers. Before
    creating a new map, the map list is checked for any already existing
    maps using map fd. Checking with just map fd is not sufficient as the
    user can pass offsetted buffer with less size when the map is created
    and then a larger size the next time which could result in memory
    issues. Check for dma_buf object also when looking up for the map.
    
    Fixes: c68cfb718c8f ("misc: fastrpc: Add support for context Invoke method")
    Cc: [email protected]
    Co-developed-by: Ekansh Gupta <[email protected]>
    Signed-off-by: Ekansh Gupta <[email protected]>
    Signed-off-by: Ling Xu <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

misc: fastrpc: fix possible map leak in fastrpc_put_args [+ + +]
Author: Ling Xu <[email protected]>
Date:   Fri Sep 12 14:12:35 2025 +0100

    misc: fastrpc: fix possible map leak in fastrpc_put_args
    
    commit da1ba64176e0138f2bfa96f9e43e8c3640d01e1e upstream.
    
    copy_to_user() failure would cause an early return without cleaning up
    the fdlist, which has been updated by the DSP. This could lead to map
    leak. Fix this by redirecting to a cleanup path on failure, ensuring
    that all mapped buffers are properly released before returning.
    
    Fixes: c68cfb718c8f ("misc: fastrpc: Add support for context Invoke method")
    Cc: [email protected]
    Co-developed-by: Ekansh Gupta <[email protected]>
    Signed-off-by: Ekansh Gupta <[email protected]>
    Signed-off-by: Ling Xu <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

misc: fastrpc: Skip reference for DMA handles [+ + +]
Author: Ling Xu <[email protected]>
Date:   Fri Sep 12 14:12:36 2025 +0100

    misc: fastrpc: Skip reference for DMA handles
    
    commit 10df039834f84a297c72ec962c0f9b7c8c5ca31a upstream.
    
    If multiple dma handles are passed with same fd over a remote call
    the kernel driver takes a reference and expects that put for the
    map will be called as many times to free the map. But DSP only
    updates the fd one time in the fd list when the DSP refcount
    goes to zero and hence kernel make put call only once for the
    fd. This can cause SMMU fault issue as the same fd can be used
    in future for some other call.
    
    Fixes: 35a82b87135d ("misc: fastrpc: Add dma handle implementation")
    Cc: [email protected]
    Co-developed-by: Ekansh Gupta <[email protected]>
    Signed-off-by: Ekansh Gupta <[email protected]>
    Signed-off-by: Ling Xu <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

misc: genwqe: Fix incorrect cmd field being reported in error [+ + +]
Author: Colin Ian King <[email protected]>
Date:   Tue Sep 2 12:37:12 2025 +0100

    misc: genwqe: Fix incorrect cmd field being reported in error
    
    [ Upstream commit 6b26053819dccc664120e07c56f107fb6f72f3fa ]
    
    There is a dev_err message that is reporting the value of
    cmd->asiv_length when it should be reporting cmd->asv_length
    instead. Fix this.
    
    Fixes: eaf4722d4645 ("GenWQE Character device and DDCB queue")
    Signed-off-by: Colin Ian King <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mm: hugetlb: avoid soft lockup when mprotect to large memory area [+ + +]
Author: Yang Shi <[email protected]>
Date:   Mon Sep 29 13:24:02 2025 -0700

    mm: hugetlb: avoid soft lockup when mprotect to large memory area
    
    commit f52ce0ea90c83a28904c7cc203a70e6434adfecb upstream.
    
    When calling mprotect() to a large hugetlb memory area in our customer's
    workload (~300GB hugetlb memory), soft lockup was observed:
    
    watchdog: BUG: soft lockup - CPU#98 stuck for 23s! [t2_new_sysv:126916]
    
    CPU: 98 PID: 126916 Comm: t2_new_sysv Kdump: loaded Not tainted 6.17-rc7
    Hardware name: GIGACOMPUTING R2A3-T40-AAV1/Jefferson CIO, BIOS 5.4.4.1 07/15/2025
    pstate: 20400009 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : mte_clear_page_tags+0x14/0x24
    lr : mte_sync_tags+0x1c0/0x240
    sp : ffff80003150bb80
    x29: ffff80003150bb80 x28: ffff00739e9705a8 x27: 0000ffd2d6a00000
    x26: 0000ff8e4bc00000 x25: 00e80046cde00f45 x24: 0000000000022458
    x23: 0000000000000000 x22: 0000000000000004 x21: 000000011b380000
    x20: ffff000000000000 x19: 000000011b379f40 x18: 0000000000000000
    x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
    x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
    x11: 0000000000000000 x10: 0000000000000000 x9 : ffffc875e0aa5e2c
    x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000000000
    x5 : fffffc01ce7a5c00 x4 : 00000000046cde00 x3 : fffffc0000000000
    x2 : 0000000000000004 x1 : 0000000000000040 x0 : ffff0046cde7c000
    
    Call trace:
      mte_clear_page_tags+0x14/0x24
      set_huge_pte_at+0x25c/0x280
      hugetlb_change_protection+0x220/0x430
      change_protection+0x5c/0x8c
      mprotect_fixup+0x10c/0x294
      do_mprotect_pkey.constprop.0+0x2e0/0x3d4
      __arm64_sys_mprotect+0x24/0x44
      invoke_syscall+0x50/0x160
      el0_svc_common+0x48/0x144
      do_el0_svc+0x30/0xe0
      el0_svc+0x30/0xf0
      el0t_64_sync_handler+0xc4/0x148
      el0t_64_sync+0x1a4/0x1a8
    
    Soft lockup is not triggered with THP or base page because there is
    cond_resched() called for each PMD size.
    
    Although the soft lockup was triggered by MTE, it should be not MTE
    specific.  The other processing which takes long time in the loop may
    trigger soft lockup too.
    
    So add cond_resched() for hugetlb to avoid soft lockup.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 8f860591ffb2 ("[PATCH] Enable mprotect on huge pages")
    Signed-off-by: Yang Shi <[email protected]>
    Tested-by: Carl Worth <[email protected]>
    Reviewed-by: Christoph Lameter (Ampere) <[email protected]>
    Reviewed-by: Catalin Marinas <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Acked-by: Oscar Salvador <[email protected]>
    Reviewed-by: Anshuman Khandual <[email protected]>
    Reviewed-by: Dev Jain <[email protected]>
    Cc: Muchun Song <[email protected]>
    Cc: Will Deacon <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mtd: rawnand: atmel: Fix error handling path in atmel_nand_controller_add_nands [+ + +]
Author: Erick Karanja <[email protected]>
Date:   Mon Sep 22 14:07:27 2025 +0300

    mtd: rawnand: atmel: Fix error handling path in atmel_nand_controller_add_nands
    
    [ Upstream commit 8ed4728eb9f10b57c3eb02e0f6933a89ffcb8a91 ]
    
    In case of a jump to the  err label due to atmel_nand_create() or
    atmel_nand_controller_add_nand() failure, the reference to nand_np
    need to be released
    
    Use for_each_child_of_node_scoped() to fix the issue.
    
    Fixes: f88fc122cc34 ("mtd: nand: Cleanup/rework the atmel_nand driver")
    
    Signed-off-by: Erick Karanja <[email protected]>
    Signed-off-by: Miquel Raynal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nbd: restrict sockets to TCP and UDP [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Tue Sep 9 13:22:43 2025 +0000

    nbd: restrict sockets to TCP and UDP
    
    [ Upstream commit 9f7c02e031570e8291a63162c6c046dc15ff85b0 ]
    
    Recently, syzbot started to abuse NBD with all kinds of sockets.
    
    Commit cf1b2326b734 ("nbd: verify socket is supported during setup")
    made sure the socket supported a shutdown() method.
    
    Explicitely accept TCP and UNIX stream sockets.
    
    Fixes: cf1b2326b734 ("nbd: verify socket is supported during setup")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/CANn89iJ+76eE3A_8S_zTpSyW5hvPRn6V57458hCZGY5hbH_bFA@mail.gmail.com/T/#m081036e8747cd7e2626c1da5d78c8b9d1e55b154
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Mike Christie <[email protected]>
    Cc: Richard W.M. Jones <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Yu Kuai <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/9p: fix double req put in p9_fd_cancelled [+ + +]
Author: Nalivayko Sergey <[email protected]>
Date:   Tue Jul 15 18:48:15 2025 +0300

    net/9p: fix double req put in p9_fd_cancelled
    
    commit 674b56aa57f9379854cb6798c3bbcef7e7b51ab7 upstream.
    
    Syzkaller reports a KASAN issue as below:
    
    general protection fault, probably for non-canonical address 0xfbd59c0000000021: 0000 [#1] PREEMPT SMP KASAN NOPTI
    KASAN: maybe wild-memory-access in range [0xdead000000000108-0xdead00000000010f]
    CPU: 0 PID: 5083 Comm: syz-executor.2 Not tainted 6.1.134-syzkaller-00037-g855bd1d7d838 #0
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
    RIP: 0010:__list_del include/linux/list.h:114 [inline]
    RIP: 0010:__list_del_entry include/linux/list.h:137 [inline]
    RIP: 0010:list_del include/linux/list.h:148 [inline]
    RIP: 0010:p9_fd_cancelled+0xe9/0x200 net/9p/trans_fd.c:734
    
    Call Trace:
     <TASK>
     p9_client_flush+0x351/0x440 net/9p/client.c:614
     p9_client_rpc+0xb6b/0xc70 net/9p/client.c:734
     p9_client_version net/9p/client.c:920 [inline]
     p9_client_create+0xb51/0x1240 net/9p/client.c:1027
     v9fs_session_init+0x1f0/0x18f0 fs/9p/v9fs.c:408
     v9fs_mount+0xba/0xcb0 fs/9p/vfs_super.c:126
     legacy_get_tree+0x108/0x220 fs/fs_context.c:632
     vfs_get_tree+0x8e/0x300 fs/super.c:1573
     do_new_mount fs/namespace.c:3056 [inline]
     path_mount+0x6a6/0x1e90 fs/namespace.c:3386
     do_mount fs/namespace.c:3399 [inline]
     __do_sys_mount fs/namespace.c:3607 [inline]
     __se_sys_mount fs/namespace.c:3584 [inline]
     __x64_sys_mount+0x283/0x300 fs/namespace.c:3584
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x35/0x80 arch/x86/entry/common.c:81
     entry_SYSCALL_64_after_hwframe+0x6e/0xd8
    
    This happens because of a race condition between:
    
    - The 9p client sending an invalid flush request and later cleaning it up;
    - The 9p client in p9_read_work() canceled all pending requests.
    
          Thread 1                              Thread 2
        ...
        p9_client_create()
        ...
        p9_fd_create()
        ...
        p9_conn_create()
        ...
        // start Thread 2
        INIT_WORK(&m->rq, p9_read_work);
                                            p9_read_work()
        ...
        p9_client_rpc()
        ...
                                            ...
                                            p9_conn_cancel()
                                            ...
                                            spin_lock(&m->req_lock);
        ...
        p9_fd_cancelled()
        ...
                                            ...
                                            spin_unlock(&m->req_lock);
                                            // status rewrite
                                            p9_client_cb(m->client, req, REQ_STATUS_ERROR)
                                            // first remove
                                            list_del(&req->req_list);
                                            ...
    
        spin_lock(&m->req_lock)
        ...
        // second remove
        list_del(&req->req_list);
        spin_unlock(&m->req_lock)
      ...
    
    Commit 74d6a5d56629 ("9p/trans_fd: Fix concurrency del of req_list in
    p9_fd_cancelled/p9_read_work") fixes a concurrency issue in the 9p filesystem
    client where the req_list could be deleted simultaneously by both
    p9_read_work and p9_fd_cancelled functions, but for the case where req->status
    equals REQ_STATUS_RCVD.
    
    Update the check for req->status in p9_fd_cancelled to skip processing not
    just received requests, but anything that is not SENT, as whatever
    changed the state from SENT also removed the request from its list.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: afd8d6541155 ("9P: Add cancelled() to the transport functions.")
    Cc: [email protected]
    Signed-off-by: Nalivayko Sergey <[email protected]>
    Message-ID: <[email protected]>
    [updated the check from status == RECV || status == ERROR to status != SENT]
    Signed-off-by: Dominique Martinet <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net/mlx5: fw reset, add reset timeout work [+ + +]
Author: Moshe Shemesh <[email protected]>
Date:   Mon Sep 29 00:02:09 2025 +0300

    net/mlx5: fw reset, add reset timeout work
    
    [ Upstream commit 5cfbe7ebfa42fd3c517a701dab5bd73524da9088 ]
    
    Add sync reset timeout to stop poll_sync_reset in case there was no
    reset done or abort event within timeout. Otherwise poll sync reset will
    just continue and in case of fw fatal error no health reporting will be
    done.
    
    Fixes: 38b9f903f22b ("net/mlx5: Handle sync reset request event")
    Signed-off-by: Moshe Shemesh <[email protected]>
    Reviewed-by: Shay Drori <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: pagealloc: Fix reclaim race during command interface teardown [+ + +]
Author: Shay Drory <[email protected]>
Date:   Mon Sep 29 00:02:08 2025 +0300

    net/mlx5: pagealloc: Fix reclaim race during command interface teardown
    
    [ Upstream commit 79a0e32b32ac4e4f9e4bb22be97f371c8c116c88 ]
    
    The reclaim_pages_cmd() function sends a command to the firmware to
    reclaim pages if the command interface is active.
    
    A race condition can occur if the command interface goes down (e.g., due
    to a PCI error) while the mlx5_cmd_do() call is in flight. In this
    case, mlx5_cmd_do() will return an error. The original code would
    propagate this error immediately, bypassing the software-based page
    reclamation logic that is supposed to run when the command interface is
    down.
    
    Fix this by checking whether mlx5_cmd_do() returns -ENXIO, which mark
    that command interface is down. If this is the case, fall through to
    the software reclamation path. If the command failed for any another
    reason, or finished successfully, return as before.
    
    Fixes: b898ce7bccf1 ("net/mlx5: cmdif, Avoid skipping reclaim pages if FW is not accessible")
    Signed-off-by: Shay Drory <[email protected]>
    Reviewed-by: Moshe Shemesh <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Stop polling for command response if interface goes down [+ + +]
Author: Moshe Shemesh <[email protected]>
Date:   Mon Sep 29 00:02:07 2025 +0300

    net/mlx5: Stop polling for command response if interface goes down
    
    [ Upstream commit b1f0349bd6d320c382df2e7f6fc2ac95c85f2b18 ]
    
    Stop polling on firmware response to command in polling mode if the
    command interface got down. This situation can occur, for example, if a
    firmware fatal error is detected during polling.
    
    This change halts the polling process when the command interface goes
    down, preventing unnecessary waits.
    
    Fixes: b898ce7bccf1 ("net/mlx5: cmdif, Avoid skipping reclaim pages if FW is not accessible")
    Signed-off-by: Moshe Shemesh <[email protected]>
    Reviewed-by: Shay Drori <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net: dlink: handle copy_thresh allocation failure [+ + +]
Author: Yeounsu Moon <[email protected]>
Date:   Mon Sep 29 04:01:24 2025 +0900

    net: dlink: handle copy_thresh allocation failure
    
    [ Upstream commit 8169a6011c5fecc6cb1c3654c541c567d3318de8 ]
    
    The driver did not handle failure of `netdev_alloc_skb_ip_align()`.
    If the allocation failed, dereferencing `skb->protocol` could lead to
    a NULL pointer dereference.
    
    This patch tries to allocate `skb`. If the allocation fails, it falls
    back to the normal path.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Suggested-by: Jakub Kicinski <[email protected]>
    Tested-on: D-Link DGE-550T Rev-A3
    Signed-off-by: Yeounsu Moon <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ena: return 0 in ena_get_rxfh_key_size() when RSS hash key is not configurable [+ + +]
Author: Kohei Enju <[email protected]>
Date:   Mon Sep 29 14:02:22 2025 +0900

    net: ena: return 0 in ena_get_rxfh_key_size() when RSS hash key is not configurable
    
    [ Upstream commit f017156aea60db8720e47591ed1e041993381ad2 ]
    
    In EC2 instances where the RSS hash key is not configurable, ethtool
    shows bogus RSS hash key since ena_get_rxfh_key_size() unconditionally
    returns ENA_HASH_KEY_SIZE.
    
    Commit 6a4f7dc82d1e ("net: ena: rss: do not allocate key when not
    supported") added proper handling for devices that don't support RSS
    hash key configuration, but ena_get_rxfh_key_size() has been unchanged.
    
    When the RSS hash key is not configurable, return 0 instead of
    ENA_HASH_KEY_SIZE to clarify getting the value is not supported.
    
    Tested on m5 instance families.
    
    Without patch:
     # ethtool -x ens5 | grep -A 1 "RSS hash key"
     RSS hash key:
     00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    
    With patch:
     # ethtool -x ens5 | grep -A 1 "RSS hash key"
     RSS hash key:
     Operation not supported
    
    Fixes: 6a4f7dc82d1e ("net: ena: rss: do not allocate key when not supported")
    Signed-off-by: Kohei Enju <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: nfc: nci: Add parameter validation for packet data [+ + +]
Author: Deepak Sharma <[email protected]>
Date:   Thu Sep 25 18:58:46 2025 +0530

    net: nfc: nci: Add parameter validation for packet data
    
    commit 9c328f54741bd5465ca1dc717c84c04242fac2e1 upstream.
    
    Syzbot reported an uninitialized value bug in nci_init_req, which was
    introduced by commit 5aca7966d2a7 ("Merge tag
    'perf-tools-fixes-for-v6.17-2025-09-16' of
    git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools").
    
    This bug arises due to very limited and poor input validation
    that was done at nic_valid_size(). This validation only
    validates the skb->len (directly reflects size provided at the
    userspace interface) with the length provided in the buffer
    itself (interpreted as NCI_HEADER). This leads to the processing
    of memory content at the address assuming the correct layout
    per what opcode requires there. This leads to the accesses to
    buffer of `skb_buff->data` which is not assigned anything yet.
    
    Following the same silent drop of packets of invalid sizes at
    `nic_valid_size()`, add validation of the data in the respective
    handlers and return error values in case of failure. Release
    the skb if error values are returned from handlers in
    `nci_nft_packet` and effectively do a silent drop
    
    Possible TODO: because we silently drop the packets, the
    call to `nci_request` will be waiting for completion of request
    and will face timeouts. These timeouts can get excessively logged
    in the dmesg. A proper handling of them may require to export
    `nci_request_cancel` (or propagate error handling from the
    nft packets handlers).
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=740e04c2a93467a0f8c8
    Fixes: 6a2968aaf50c ("NFC: basic NCI protocol implementation")
    Tested-by: [email protected]
    Cc: [email protected]
    Signed-off-by: Deepak Sharma <[email protected]>
    Reviewed-by: Vadim Fedorenko <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: usb: asix: hold PM usage ref to avoid PM/MDIO + RTNL deadlock [+ + +]
Author: Oleksij Rempel <[email protected]>
Date:   Sun Oct 5 10:12:03 2025 +0200

    net: usb: asix: hold PM usage ref to avoid PM/MDIO + RTNL deadlock
    
    commit 3d3c4cd5c62f24bb3cb4511b7a95df707635e00a upstream.
    
    Prevent USB runtime PM (autosuspend) for AX88772* in bind.
    
    usbnet enables runtime PM (autosuspend) by default, so disabling it via
    the usb_driver flag is ineffective. On AX88772B, autosuspend shows no
    measurable power saving with current driver (no link partner, admin
    up/down). The ~0.453 W -> ~0.248 W drop on v6.1 comes from phylib powering
    the PHY off on admin-down, not from USB autosuspend.
    
    The real hazard is that with runtime PM enabled, ndo_open() (under RTNL)
    may synchronously trigger autoresume (usb_autopm_get_interface()) into
    asix_resume() while the USB PM lock is held. Resume paths then invoke
    phylink/phylib and MDIO, which also expect RTNL, leading to possible
    deadlocks or PM lock vs MDIO wake issues.
    
    To avoid this, keep the device runtime-PM active by taking a usage
    reference in ax88772_bind() and dropping it in unbind(). A non-zero PM
    usage count blocks runtime suspend regardless of userspace policy
    (.../power/control - pm_runtime_allow/forbid), making this approach
    robust against sysfs overrides.
    
    Holding a runtime-PM usage ref does not affect system-wide suspend;
    system sleep/resume callbacks continue to run as before.
    
    Fixes: 4a2c7217cd5a ("net: usb: asix: ax88772: manage PHY PM from MAC")
    Reported-by: Hubert Wiśniewski <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]
    Tested-by: Hubert Wiśniewski <[email protected]>
    Reported-by: Marek Szyprowski <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]
    Cc: [email protected]
    Signed-off-by: Oleksij Rempel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: usb: Remove disruptive netif_wake_queue in rtl8150_set_multicast [+ + +]
Author: I Viswanath <[email protected]>
Date:   Wed Sep 24 19:13:50 2025 +0530

    net: usb: Remove disruptive netif_wake_queue in rtl8150_set_multicast
    
    [ Upstream commit 958baf5eaee394e5fd976979b0791a875f14a179 ]
    
    syzbot reported WARNING in rtl8150_start_xmit/usb_submit_urb.
    This is the sequence of events that leads to the warning:
    
    rtl8150_start_xmit() {
            netif_stop_queue();
            usb_submit_urb(dev->tx_urb);
    }
    
    rtl8150_set_multicast() {
            netif_stop_queue();
            netif_wake_queue();             <-- wakes up TX queue before URB is done
    }
    
    rtl8150_start_xmit() {
            netif_stop_queue();
            usb_submit_urb(dev->tx_urb);    <-- double submission
    }
    
    rtl8150_set_multicast being the ndo_set_rx_mode callback should not be
    calling netif_stop_queue and notif_start_queue as these handle
    TX queue synchronization.
    
    The net core function dev_set_rx_mode handles the synchronization
    for rtl8150_set_multicast making it safe to remove these locks.
    
    Reported-and-tested-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=78cae3f37c62ad092caa
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Tested-by: Michal Pecio <[email protected]>
    Signed-off-by: I Viswanath <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netfilter: ipset: Remove unused htable_bits in macro ahash_region [+ + +]
Author: Zhen Ni <[email protected]>
Date:   Fri Aug 29 16:36:21 2025 +0800

    netfilter: ipset: Remove unused htable_bits in macro ahash_region
    
    [ Upstream commit ba941796d7cd1e81f51eed145dad1b47240ff420 ]
    
    Since the ahash_region() macro was redefined to calculate the region
    index solely from HTABLE_REGION_BITS, the htable_bits parameter became
    unused.
    
    Remove the unused htable_bits argument and its call sites, simplifying
    the code without changing semantics.
    
    Fixes: 8478a729c046 ("netfilter: ipset: fix region locking in hash types")
    Signed-off-by: Zhen Ni <[email protected]>
    Reviewed-by: Phil Sutter <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nfp: fix RSS hash key size when RSS is not supported [+ + +]
Author: Kohei Enju <[email protected]>
Date:   Mon Sep 29 14:42:15 2025 +0900

    nfp: fix RSS hash key size when RSS is not supported
    
    [ Upstream commit 8425161ac1204d2185e0a10f5ae652bae75d2451 ]
    
    The nfp_net_get_rxfh_key_size() function returns -EOPNOTSUPP when
    devices don't support RSS, and callers treat the negative value as a
    large positive value since the return type is u32.
    
    Return 0 when devices don't support RSS, aligning with the ethtool
    interface .get_rxfh_key_size() that requires returning 0 in such cases.
    
    Fixes: 9ff304bfaf58 ("nfp: add support for reporting CRC32 hash function")
    Signed-off-by: Kohei Enju <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
NFSv4.1: fix backchannel max_resp_sz verification check [+ + +]
Author: Anthony Iliopoulos <[email protected]>
Date:   Wed Aug 13 11:00:46 2025 +0200

    NFSv4.1: fix backchannel max_resp_sz verification check
    
    [ Upstream commit 191512355e520dfc45c8bc3b56d4de59c3ade33e ]
    
    When the client max_resp_sz is larger than what the server encodes in
    its reply, the nfs4_verify_back_channel_attrs() check fails and this
    causes nfs4_proc_create_session() to fail, in cases where the client
    page size is larger than that of the server and the server does not want
    to negotiate upwards.
    
    While this is not a problem with the linux nfs server that will reflect
    the proposed value in its reply irrespective of the local page size,
    other nfs server implementations may insist on their own max_resp_sz
    value, which could be smaller.
    
    Fix this by accepting smaller max_resp_sz values from the server, as
    this does not violate the protocol. The server is allowed to decrease
    but not increase proposed the size, and as such values smaller than the
    client-proposed ones are valid.
    
    Fixes: 43c2e885be25 ("nfs4: fix channel attribute sanity-checks")
    Signed-off-by: Anthony Iliopoulos <[email protected]>
    Reviewed-by: Benjamin Coddington <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
null_blk: Fix the description of the cache_size module argument [+ + +]
Author: Genjian Zhang <[email protected]>
Date:   Fri Aug 15 17:07:32 2025 +0800

    null_blk: Fix the description of the cache_size module argument
    
    [ Upstream commit 7942b226e6b84df13b46b76c01d3b6e07a1b349e ]
    
    When executing modinfo null_blk, there is an error in the description
    of module parameter mbps, and the output information of cache_size is
    incomplete.The output of modinfo before and after applying this patch
    is as follows:
    
    Before:
    [...]
    parm:           cache_size:ulong
    [...]
    parm:           mbps:Cache size in MiB for memory-backed device.
                    Default: 0 (none) (uint)
    [...]
    
    After:
    [...]
    parm:           cache_size:Cache size in MiB for memory-backed device.
                    Default: 0 (none) (ulong)
    [...]
    parm:           mbps:Limit maximum bandwidth (in MiB/s).
                    Default: 0 (no limit) (uint)
    [...]
    
    Fixes: 058efe000b31 ("null_blk: add module parameters for 4 options")
    Signed-off-by: Genjian Zhang <[email protected]>
    Reviewed-by: Damien Le Moal <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvdimm: ndtest: Return -ENOMEM if devm_kcalloc() fails in ndtest_probe() [+ + +]
Author: Guangshuo Li <[email protected]>
Date:   Thu Sep 25 14:44:48 2025 +0800

    nvdimm: ndtest: Return -ENOMEM if devm_kcalloc() fails in ndtest_probe()
    
    commit a9e6aa994917ee602798bbb03180a194b37865bb upstream.
    
    devm_kcalloc() may fail. ndtest_probe() allocates three DMA address
    arrays (dcr_dma, label_dma, dimm_dma) and later unconditionally uses
    them in ndtest_nvdimm_init(), which can lead to a NULL pointer
    dereference under low-memory conditions.
    
    Check all three allocations and return -ENOMEM if any allocation fails,
    jumping to the common error path. Do not emit an extra error message
    since the allocator already warns on allocation failure.
    
    Fixes: 9399ab61ad82 ("ndtest: Add dimms to the two buses")
    Cc: [email protected]
    Signed-off-by: Guangshuo Li <[email protected]>
    Reviewed-by: Alison Schofield <[email protected]>
    Reviewed-by: Ira Weiny <[email protected]>
    Reviewed-by: Dave Jiang <[email protected]>
    Signed-off-by: Ira Weiny <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nvmet-fc: move lsop put work to nvmet_fc_ls_req_op [+ + +]
Author: Daniel Wagner <[email protected]>
Date:   Tue Sep 2 12:22:00 2025 +0200

    nvmet-fc: move lsop put work to nvmet_fc_ls_req_op
    
    [ Upstream commit db5a5406fb7e5337a074385c7a3e53c77f2c1bd3 ]
    
    It’s possible for more than one async command to be in flight from
    __nvmet_fc_send_ls_req. For each command, a tgtport reference is taken.
    
    In the current code, only one put work item is queued at a time, which
    results in a leaked reference.
    
    To fix this, move the work item to the nvmet_fc_ls_req_op struct, which
    already tracks all resources related to the command.
    
    Fixes: 710c69dbaccd ("nvmet-fc: avoid deadlock on delete association path")
    Reviewed-by: Hannes Reinecke <[email protected]>
    Signed-off-by: Daniel Wagner <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ocfs2: fix double free in user_cluster_connect() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Tue Sep 23 14:26:07 2025 +0300

    ocfs2: fix double free in user_cluster_connect()
    
    [ Upstream commit 8f45f089337d924db24397f55697cda0e6960516 ]
    
    user_cluster_disconnect() frees "conn->cc_private" which is "lc" but then
    the error handling frees "lc" a second time.  Set "lc" to NULL on this
    path to avoid a double free.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: c994c2ebdbbc ("ocfs2: use the new DLM operation callbacks while requesting new lockspace")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Joseph Qi <[email protected]>
    Reviewed-by: Goldwyn Rodrigues <[email protected]>
    Cc: Mark Fasheh <[email protected]>
    Cc: Joel Becker <[email protected]>
    Cc: Junxiao Bi <[email protected]>
    Cc: Changwei Ge <[email protected]>
    Cc: Jun Piao <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
PCI: tegra194: Fix duplicate PLL disable in pex_ep_event_pex_rst_assert() [+ + +]
Author: Nagarjuna Kristam <[email protected]>
Date:   Thu Sep 11 11:30:22 2025 +0200

    PCI: tegra194: Fix duplicate PLL disable in pex_ep_event_pex_rst_assert()
    
    [ Upstream commit 4f152338e384a3a47dd61909e1457539fa93f5a4 ]
    
    During PERST# assertion tegra_pcie_bpmp_set_pll_state() is currently
    called twice.
    
    pex_ep_event_pex_rst_assert() should do the opposite of
    pex_ep_event_pex_rst_deassert(), so it is obvious that the duplicate
    tegra_pcie_bpmp_set_pll_state() is a mistake, and that the duplicate
    tegra_pcie_bpmp_set_pll_state() call should instead be a call to
    tegra_pcie_bpmp_set_ctrl_state().
    
    With this, the uninitialization sequence also matches that of
    tegra_pcie_unconfig_controller().
    
    Fixes: a54e19073718 ("PCI: tegra194: Add Tegra234 PCIe support")
    Signed-off-by: Nagarjuna Kristam <[email protected]>
    [cassel: improve commit log]
    Signed-off-by: Niklas Cassel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [mani: added Fixes tag]
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: tegra: Fix devm_kcalloc() argument order for port->phys allocation [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Tue Aug 19 08:04:08 2025 -0700

    PCI: tegra: Fix devm_kcalloc() argument order for port->phys allocation
    
    [ Upstream commit e1a8805e5d263453ad76a4f50ab3b1c18ea07560 ]
    
    Fix incorrect argument order in devm_kcalloc() when allocating port->phys.
    The original call used sizeof(phy) as the number of elements and
    port->lanes as the element size, which is reversed.  While this happens to
    produce the correct total allocation size with current pointer size and
    lane counts, the argument order is wrong.
    
    Fixes: 6fe7c187e026 ("PCI: tegra: Support per-lane PHYs")
    Signed-off-by: Alok Tiwari <[email protected]>
    [mani: added Fixes tag]
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
perf subcmd: avoid crash in exclude_cmds when excludes is empty [+ + +]
Author: hupu <[email protected]>
Date:   Wed Sep 10 16:16:55 2025 +0800

    perf subcmd: avoid crash in exclude_cmds when excludes is empty
    
    [ Upstream commit a5edf3550f4260504b7e0ab3d40d13ffe924b773 ]
    
    When cross-compiling the perf tool for ARM64, `perf help` may crash
    with the following assertion failure:
    
      help.c:122: exclude_cmds: Assertion `cmds->names[ci] == NULL' failed.
    
    This happens when the perf binary is not named exactly "perf" or when
    multiple "perf-*" binaries exist in the same directory. In such cases,
    the `excludes` command list can be empty, which leads to the final
    assertion in exclude_cmds() being triggered.
    
    Add a simple guard at the beginning of exclude_cmds() to return early
    if excludes->cnt is zero, preventing the crash.
    
    Signed-off-by: hupu <[email protected]>
    Reported-by: Guilherme Amadio <[email protected]>
    Reviewed-by: Namhyung Kim <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Namhyung Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
perf: arm_spe: Prevent overflow in PERF_IDX2OFF() [+ + +]
Author: Leo Yan <[email protected]>
Date:   Wed Sep 17 18:41:39 2025 +0100

    perf: arm_spe: Prevent overflow in PERF_IDX2OFF()
    
    [ Upstream commit a29fea30dd93da16652930162b177941abd8c75e ]
    
    Cast nr_pages to unsigned long to avoid overflow when handling large
    AUX buffer sizes (>= 2 GiB).
    
    Fixes: d5d9696b0380 ("drivers/perf: Add support for ARMv8.2 Statistical Profiling Extension")
    Signed-off-by: Leo Yan <[email protected]>
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pinctrl: check the return value of pinmux_ops::get_function_name() [+ + +]
Author: Bartosz Golaszewski <[email protected]>
Date:   Tue Sep 2 13:59:10 2025 +0200

    pinctrl: check the return value of pinmux_ops::get_function_name()
    
    commit 4002ee98c022d671ecc1e4a84029e9ae7d8a5603 upstream.
    
    While the API contract in docs doesn't specify it explicitly, the
    generic implementation of the get_function_name() callback from struct
    pinmux_ops - pinmux_generic_get_function_name() - can fail and return
    NULL. This is already checked in pinmux_check_ops() so add a similar
    check in pinmux_func_name_to_selector() instead of passing the returned
    pointer right down to strcmp() where the NULL can get dereferenced. This
    is normal operation when adding new pinfunctions.
    
    Cc: [email protected]
    Tested-by: Neil Armstrong <[email protected]>
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

pinctrl: meson-gxl: add missing i2c_d pinmux [+ + +]
Author: Da Xue <[email protected]>
Date:   Thu Aug 21 19:33:34 2025 -0400

    pinctrl: meson-gxl: add missing i2c_d pinmux
    
    [ Upstream commit d8c2a9edd181f0cc4a66eec954b3d8f6a1d954a7 ]
    
    Amlogic GXL has 4 I2C attached to gpio-periphs. I2C_D is on GPIOX_10/11.
    
    Add the relevant func 3 pinmux per the datasheet for S805X/S905X/S905D.
    
    Fixes: 0f15f500ff2c ("pinctrl: meson: Add GXL pinctrl definitions")
    Signed-off-by: Da Xue <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: renesas: Use int type to store negative error codes [+ + +]
Author: Qianfeng Rong <[email protected]>
Date:   Sun Aug 31 16:49:58 2025 +0800

    pinctrl: renesas: Use int type to store negative error codes
    
    [ Upstream commit 9f062fc5b0ff44550088912ab89f9da40226a826 ]
    
    Change the 'ret' variable in sh_pfc_pinconf_group_set() from unsigned
    int to int, as it needs to store either negative error codes or zero
    returned by sh_pfc_pinconf_set().
    
    No effect on runtime.
    
    Signed-off-by: Qianfeng Rong <[email protected]>
    Fixes: d0593c363f04ccc4 ("pinctrl: sh-pfc: Propagate errors on group config")
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
PM / devfreq: mtk-cci: Fix potential error pointer dereference in probe() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Thu Aug 7 18:58:23 2025 +0300

    PM / devfreq: mtk-cci: Fix potential error pointer dereference in probe()
    
    [ Upstream commit fc33bf0e097c6834646b98a7b3da0ae5b617f0f9 ]
    
    The drv->sram_reg pointer could be set to ERR_PTR(-EPROBE_DEFER) which
    would lead to a error pointer dereference.  Use IS_ERR_OR_NULL() to check
    that the pointer is valid.
    
    Fixes: e09bd5757b52 ("PM / devfreq: mtk-cci: Handle sram regulator probe deferral")
    Signed-off-by: Dan Carpenter <[email protected]>
    Signed-off-by: Chanwoo Choi <[email protected]>
    Link: https://patchwork.kernel.org/project/linux-pm/patch/[email protected]/
    Signed-off-by: Sasha Levin <[email protected]>

 
PM: sleep: core: Clear power.must_resume in noirq suspend error path [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Tue Sep 2 15:55:45 2025 +0200

    PM: sleep: core: Clear power.must_resume in noirq suspend error path
    
    [ Upstream commit be82483d1b60baf6747884bd74cb7de484deaf76 ]
    
    If system suspend is aborted in the "noirq" phase (for instance, due to
    an error returned by one of the device callbacks), power.is_noirq_suspended
    will not be set for some devices and device_resume_noirq() will return
    early for them.  Consequently, noirq resume callbacks will not run for
    them at all because the noirq suspend callbacks have not run for them
    yet.
    
    If any of them has power.must_resume set and late suspend has been
    skipped for it (due to power.smart_suspend), early resume should be
    skipped for it either, or its state may become inconsistent (for
    instance, if the early resume assumes that it will always follow
    noirq resume).
    
    Make that happen by clearing power.must_resume in device_resume_noirq()
    for devices with power.is_noirq_suspended clear that have been left in
    suspend by device_suspend_late(), which will subsequently cause
    device_resume_early() to leave the device in suspend and avoid
    changing its state.
    
    Fixes: 0d4b54c6fee8 ("PM / core: Add LEAVE_SUSPENDED driver flag")
    Link: https://lore.kernel.org/linux-pm/[email protected]/
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Reviewed-by: Ulf Hansson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
power: supply: cw2015: Fix a alignment coding style issue [+ + +]
Author: Andy Yan <[email protected]>
Date:   Mon Aug 18 20:32:59 2025 +0800

    power: supply: cw2015: Fix a alignment coding style issue
    
    [ Upstream commit def5612170a8c6c4c6a3ea5bd6c3cfc8de6ba4b1 ]
    
    Fix the checkpatch warning:
    CHECK: Alignment should match open parenthesis
    
    Fixes: 0cb172a4918e ("power: supply: cw2015: Use device managed API to simplify the code")
    Signed-off-by: Andy Yan <[email protected]>
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pps: fix warning in pps_register_cdev when register device fail [+ + +]
Author: Wang Liang <[email protected]>
Date:   Sat Aug 30 15:50:23 2025 +0800

    pps: fix warning in pps_register_cdev when register device fail
    
    [ Upstream commit b0531cdba5029f897da5156815e3bdafe1e9b88d ]
    
    Similar to previous commit 2a934fdb01db ("media: v4l2-dev: fix error
    handling in __video_register_device()"), the release hook should be set
    before device_register(). Otherwise, when device_register() return error
    and put_device() try to callback the release function, the below warning
    may happen.
    
      ------------[ cut here ]------------
      WARNING: CPU: 1 PID: 4760 at drivers/base/core.c:2567 device_release+0x1bd/0x240 drivers/base/core.c:2567
      Modules linked in:
      CPU: 1 UID: 0 PID: 4760 Comm: syz.4.914 Not tainted 6.17.0-rc3+ #1 NONE
      RIP: 0010:device_release+0x1bd/0x240 drivers/base/core.c:2567
      Call Trace:
       <TASK>
       kobject_cleanup+0x136/0x410 lib/kobject.c:689
       kobject_release lib/kobject.c:720 [inline]
       kref_put include/linux/kref.h:65 [inline]
       kobject_put+0xe9/0x130 lib/kobject.c:737
       put_device+0x24/0x30 drivers/base/core.c:3797
       pps_register_cdev+0x2da/0x370 drivers/pps/pps.c:402
       pps_register_source+0x2f6/0x480 drivers/pps/kapi.c:108
       pps_tty_open+0x190/0x310 drivers/pps/clients/pps-ldisc.c:57
       tty_ldisc_open+0xa7/0x120 drivers/tty/tty_ldisc.c:432
       tty_set_ldisc+0x333/0x780 drivers/tty/tty_ldisc.c:563
       tiocsetd drivers/tty/tty_io.c:2429 [inline]
       tty_ioctl+0x5d1/0x1700 drivers/tty/tty_io.c:2728
       vfs_ioctl fs/ioctl.c:51 [inline]
       __do_sys_ioctl fs/ioctl.c:598 [inline]
       __se_sys_ioctl fs/ioctl.c:584 [inline]
       __x64_sys_ioctl+0x194/0x210 fs/ioctl.c:584
       do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
       do_syscall_64+0x5f/0x2a0 arch/x86/entry/syscall_64.c:94
       entry_SYSCALL_64_after_hwframe+0x76/0x7e
       </TASK>
    
    Before commit c79a39dc8d06 ("pps: Fix a use-after-free"),
    pps_register_cdev() call device_create() to create pps->dev, which will
    init dev->release to device_create_release(). Now the comment is outdated,
    just remove it.
    
    Thanks for the reminder from Calvin Owens, 'kfree_pps' should be removed
    in pps_register_source() to avoid a double free in the failure case.
    
    Link: https://lore.kernel.org/all/[email protected]/
    Fixes: c79a39dc8d06 ("pps: Fix a use-after-free")
    Signed-off-by: Wang Liang <[email protected]>
    Reviewed-By: Calvin Owens <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pwm: tiehrpwm: Fix corner case in clock divisor calculation [+ + +]
Author: Uwe Kleine-König <[email protected]>
Date:   Mon Aug 11 18:01:02 2025 +0200

    pwm: tiehrpwm: Fix corner case in clock divisor calculation
    
    [ Upstream commit 00f83f0e07e44e2f1fb94b223e77ab7b18ee2d7d ]
    
    The function set_prescale_div() is responsible for calculating the clock
    divisor settings such that the input clock rate is divided down such that
    the required period length is at most 0x10000 clock ticks. If period_cycles
    is an integer multiple of 0x10000, the divisor period_cycles / 0x10000 is
    good enough. So round up in the calculation of the required divisor and
    compare it using >= instead of >.
    
    Fixes: 19891b20e7c2 ("pwm: pwm-tiehrpwm: PWM driver support for EHRPWM")
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Link: https://lore.kernel.org/r/85488616d7bfcd9c32717651d0be7e330e761b9c.1754927682.git.u.kleine-koenig@baylibre.com
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/cm: Rate limit destroy CM ID timeout error message [+ + +]
Author: Håkon Bugge <[email protected]>
Date:   Fri Sep 12 12:05:20 2025 +0200

    RDMA/cm: Rate limit destroy CM ID timeout error message
    
    [ Upstream commit 2bbe1255fcf19c5eb300efb6cb5ad98d66fdae2e ]
    
    When the destroy CM ID timeout kicks in, you typically get a storm of
    them which creates a log flooding. Hence, change pr_err() to
    pr_err_ratelimited() in cm_destroy_id_wait_timeout().
    
    Fixes: 96d9cbe2f2ff ("RDMA/cm: add timeout to cm_destroy_id wait")
    Signed-off-by: Håkon Bugge <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Zhu Yanjun <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/core: Resolve MAC of next-hop device without ARP support [+ + +]
Author: Parav Pandit <[email protected]>
Date:   Tue Sep 16 14:11:01 2025 +0300

    RDMA/core: Resolve MAC of next-hop device without ARP support
    
    [ Upstream commit 200651b9b8aadfbbec852f0e5d042d9abe75e2ab ]
    
    Currently, if the next-hop netdevice does not support ARP resolution,
    the destination MAC address is silently set to zero without reporting
    an error. This leads to incorrect behavior and may result in packet
    transmission failures.
    
    Fix this by deferring MAC resolution to the IP stack via neighbour
    lookup, allowing proper resolution or error reporting as appropriate.
    
    Fixes: 7025fcd36bd6 ("IB: address translation to map IP toIB addresses (GIDs)")
    Signed-off-by: Parav Pandit <[email protected]>
    Reviewed-by: Vlad Dumitrescu <[email protected]>
    Signed-off-by: Edward Srouji <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/siw: Always report immediate post SQ errors [+ + +]
Author: Bernard Metzler <[email protected]>
Date:   Tue Sep 23 16:45:36 2025 +0200

    RDMA/siw: Always report immediate post SQ errors
    
    [ Upstream commit fdd0fe94d68649322e391c5c27dd9f436b4e955e ]
    
    In siw_post_send(), any immediate error encountered during processing of
    the work request list must be reported to the caller, even if previous
    work requests in that list were just accepted and added to the send queue.
    
    Not reporting those errors confuses the caller, which would wait
    indefinitely for the failing and potentially subsequently aborted work
    requests completion.
    
    This fixes a case where immediate errors were overwritten by subsequent
    code in siw_post_send().
    
    Fixes: 303ae1cdfdf7 ("rdma/siw: application interface")
    Link: https://patch.msgid.link/r/[email protected]
    Suggested-by: Stefan Metzmacher <[email protected]>
    Signed-off-by: Bernard Metzler <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
regmap: Remove superfluous check for !config in __regmap_init() [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Wed Aug 13 15:07:18 2025 +0200

    regmap: Remove superfluous check for !config in __regmap_init()
    
    [ Upstream commit 5c36b86d2bf68fbcad16169983ef7ee8c537db59 ]
    
    The first thing __regmap_init() do is check if config is non-NULL,
    so there is no need to check for this again later.
    
    Fixes: d77e745613680c54 ("regmap: Add bulk read/write callbacks into regmap_config")
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Link: https://patch.msgid.link/a154d9db0f290dda96b48bd817eb743773e846e1.1755090330.git.geert+renesas@glider.be
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
regulator: scmi: Use int type to store negative error codes [+ + +]
Author: Qianfeng Rong <[email protected]>
Date:   Fri Aug 29 18:14:11 2025 +0800

    regulator: scmi: Use int type to store negative error codes
    
    [ Upstream commit 9d35d068fb138160709e04e3ee97fe29a6f8615b ]
    
    Change the 'ret' variable from u32 to int to store negative error codes or
    zero returned by of_property_read_u32().
    
    Storing the negative error codes in unsigned type, doesn't cause an issue
    at runtime but it's ugly as pants. Additionally, assigning negative error
    codes to unsigned type may trigger a GCC warning when the -Wsign-conversion
    flag is enabled.
    
    No effect on runtime.
    
    Signed-off-by: Qianfeng Rong <[email protected]>
    Reviewed-by: Sudeep Holla <[email protected]>
    Fixes: 0fbeae70ee7c ("regulator: add SCMI driver")
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
remoteproc: qcom: q6v5: Avoid disabling handover IRQ twice [+ + +]
Author: Stephan Gerhold <[email protected]>
Date:   Wed Aug 20 18:02:33 2025 +0200

    remoteproc: qcom: q6v5: Avoid disabling handover IRQ twice
    
    [ Upstream commit 110be46f5afe27b66caa2d12473a84cd397b1925 ]
    
    enable_irq() and disable_irq() are reference counted, so we must make sure
    that each enable_irq() is always paired with a single disable_irq(). If we
    call disable_irq() twice followed by just a single enable_irq(), the IRQ
    will remain disabled forever.
    
    For the error handling path in qcom_q6v5_wait_for_start(), disable_irq()
    will end up being called twice, because disable_irq() also happens in
    qcom_q6v5_unprepare() when rolling back the call to qcom_q6v5_prepare().
    
    Fix this by dropping disable_irq() in qcom_q6v5_wait_for_start(). Since
    qcom_q6v5_prepare() is the function that calls enable_irq(), it makes more
    sense to have the rollback handled always by qcom_q6v5_unprepare().
    
    Fixes: 3b415c8fb263 ("remoteproc: q6v5: Extract common resource handling")
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Stephan Gerhold <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "net/mlx5e: Update and set Xon/Xoff upon MTU set" [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Mon Sep 29 11:15:29 2025 -0700

    Revert "net/mlx5e: Update and set Xon/Xoff upon MTU set"
    
    [ Upstream commit 6f5dacf88a32b3fd8b52c8ea781bf188c42aaa95 ]
    
    This reverts commit ceddedc969f0532b7c62ca971ee50d519d2bc0cb.
    
    Commit in question breaks the mapping of PGs to pools for some SKUs.
    Specifically multi-host NICs seem to be shipped with a custom buffer
    configuration which maps the lossy PG to pool 4. But the bad commit
    overrides this with pool 0 which does not have sufficient buffer space
    reserved. Resulting in ~40% packet loss. The commit also breaks BMC /
    OOB connection completely (100% packet loss).
    
    Revert, similarly to commit 3fbfe251cc9f ("Revert "net/mlx5e: Update and
    set Xon/Xoff upon port speed set""). The breakage is exactly the same,
    the only difference is that quoted commit would break the NIC immediately
    on boot, and the currently reverted commit only when MTU is changed.
    
    Note: "good" kernels do not restore the configuration, so downgrade isn't
    enough to recover machines. A NIC power cycle seems to be necessary to
    return to a healthy state (or overriding the relevant registers using
    a custom patch).
    
    Fixes: ceddedc969f0 ("net/mlx5e: Update and set Xon/Xoff upon MTU set")
    Signed-off-by: Jakub Kicinski <[email protected]>
    Reviewed-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "usb: xhci: Avoid Stop Endpoint retry loop if the endpoint seems Running" [+ + +]
Author: Michal Pecio <[email protected]>
Date:   Thu Sep 18 00:07:20 2025 +0300

    Revert "usb: xhci: Avoid Stop Endpoint retry loop if the endpoint seems Running"
    
    [ Upstream commit 08fa726e66039dfa80226dfa112931f60ad4c898 ]
    
    This reverts commit 28a76fcc4c85dd39633fb96edb643c91820133e3.
    
    No actual HW bugs are known where Endpoint Context shows Running state
    but Stop Endpoint fails repeatedly with Context State Error and leaves
    the endpoint state unchanged. Stop Endpoint retries on Running EPs have
    been performed since early 2021 with no such issues reported so far.
    
    Trying to handle this hypothetical case brings a more realistic danger:
    if Stop Endpoint fails on an endpoint which hasn't yet started after a
    doorbell ring and enough latency occurs before this completion event is
    handled, the driver may time out and begin removing cancelled TDs from
    a running endpoint, even though one more retry would stop it reliably.
    
    Such high latency is rare but not impossible, and removing TDs from a
    running endpoint can cause more damage than not giving back a cancelled
    URB (which wasn't happening anyway). So err on the side of caution and
    revert to the old policy of always retrying if the EP appears running.
    
    [Remove stable tag as we are dealing with theoretical cases -Mathias]
    
    Fixes: 28a76fcc4c85d ("usb: xhci: Avoid Stop Endpoint retry loop if the endpoint seems Running")
    Signed-off-by: Michal Pecio <[email protected]>
    Signed-off-by: Mathias Nyman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
scsi: mpt3sas: Fix crash in transport port remove by using ioc_info() [+ + +]
Author: Ranjan Kumar <[email protected]>
Date:   Mon Sep 22 15:21:10 2025 +0530

    scsi: mpt3sas: Fix crash in transport port remove by using ioc_info()
    
    [ Upstream commit 1703fe4f8ae50d1fb6449854e1fcaed1053e3a14 ]
    
    During mpt3sas_transport_port_remove(), messages were logged with
    dev_printk() against &mpt3sas_port->port->dev. At this point the SAS
    transport device may already be partially unregistered or freed, leading
    to a crash when accessing its struct device.
    
    Using ioc_info(), which logs via the PCI device (ioc->pdev->dev),
    guaranteed to remain valid until driver removal.
    
    [83428.295776] Oops: general protection fault, probably for non-canonical address 0x6f702f323a33312d: 0000 [#1] SMP NOPTI
    [83428.295785] CPU: 145 UID: 0 PID: 113296 Comm: rmmod Kdump: loaded Tainted: G           OE       6.16.0-rc1+ #1 PREEMPT(voluntary)
    [83428.295792] Tainted: [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
    [83428.295795] Hardware name: Dell Inc. Precision 7875 Tower/, BIOS 89.1.67 02/23/2024
    [83428.295799] RIP: 0010:__dev_printk+0x1f/0x70
    [83428.295805] Code: 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 49 89 d1 48 85 f6 74 52 4c 8b 46 50 4d 85 c0 74 1f 48 8b 46 68 48 85 c0 74 22 <48> 8b 08 0f b6 7f 01 48 c7 c2 db e8 42 ad 83 ef 30 e9 7b f8 ff ff
    [83428.295813] RSP: 0018:ff85aeafc3137bb0 EFLAGS: 00010206
    [83428.295817] RAX: 6f702f323a33312d RBX: ff4290ee81292860 RCX: 5000cca25103be32
    [83428.295820] RDX: ff85aeafc3137bb8 RSI: ff4290eeb1966c00 RDI: ffffffffc1560845
    [83428.295823] RBP: ff85aeafc3137c18 R08: 74726f702f303a33 R09: ff85aeafc3137bb8
    [83428.295826] R10: ff85aeafc3137b18 R11: ff4290f5bd60fe68 R12: ff4290ee81290000
    [83428.295830] R13: ff4290ee6e345de0 R14: ff4290ee81290000 R15: ff4290ee6e345e30
    [83428.295833] FS:  00007fd9472a6740(0000) GS:ff4290f5ce96b000(0000) knlGS:0000000000000000
    [83428.295837] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [83428.295840] CR2: 00007f242b4db238 CR3: 00000002372b8006 CR4: 0000000000771ef0
    [83428.295844] PKRU: 55555554
    [83428.295846] Call Trace:
    [83428.295848]  <TASK>
    [83428.295850]  _dev_printk+0x5c/0x80
    [83428.295857]  ? srso_alias_return_thunk+0x5/0xfbef5
    [83428.295863]  mpt3sas_transport_port_remove+0x1c7/0x420 [mpt3sas]
    [83428.295882]  _scsih_remove_device+0x21b/0x280 [mpt3sas]
    [83428.295894]  ? _scsih_expander_node_remove+0x108/0x140 [mpt3sas]
    [83428.295906]  ? srso_alias_return_thunk+0x5/0xfbef5
    [83428.295910]  mpt3sas_device_remove_by_sas_address.part.0+0x8f/0x110 [mpt3sas]
    [83428.295921]  _scsih_expander_node_remove+0x129/0x140 [mpt3sas]
    [83428.295933]  _scsih_expander_node_remove+0x6a/0x140 [mpt3sas]
    [83428.295944]  scsih_remove+0x3f0/0x4a0 [mpt3sas]
    [83428.295957]  pci_device_remove+0x3b/0xb0
    [83428.295962]  device_release_driver_internal+0x193/0x200
    [83428.295968]  driver_detach+0x44/0x90
    [83428.295971]  bus_remove_driver+0x69/0xf0
    [83428.295975]  pci_unregister_driver+0x2a/0xb0
    [83428.295979]  _mpt3sas_exit+0x1f/0x300 [mpt3sas]
    [83428.295991]  __do_sys_delete_module.constprop.0+0x174/0x310
    [83428.295997]  ? srso_alias_return_thunk+0x5/0xfbef5
    [83428.296000]  ? __x64_sys_getdents64+0x9a/0x110
    [83428.296005]  ? srso_alias_return_thunk+0x5/0xfbef5
    [83428.296009]  ? syscall_trace_enter+0xf6/0x1b0
    [83428.296014]  do_syscall_64+0x7b/0x2c0
    [83428.296019]  ? srso_alias_return_thunk+0x5/0xfbef5
    [83428.296023]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    Fixes: f92363d12359 ("[SCSI] mpt3sas: add new driver supporting 12GB SAS")
    Signed-off-by: Ranjan Kumar <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: myrs: Fix dma_alloc_coherent() error check [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Fri Jul 25 10:31:06 2025 +0200

    scsi: myrs: Fix dma_alloc_coherent() error check
    
    [ Upstream commit edb35b1ffc686fd9b5a91902f034eb9f4d2c9f6b ]
    
    Check for NULL return value with dma_alloc_coherent(), because DMA
    address is not always set by dma_alloc_coherent() on failure.
    
    Fixes: 77266186397c ("scsi: myrs: Add Mylex RAID controller (SCSI interface)")
    Signed-off-by: Thomas Fourier <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: pm80xx: Fix array-index-out-of-of-bounds on rmmod [+ + +]
Author: Niklas Cassel <[email protected]>
Date:   Thu Aug 14 19:32:17 2025 +0200

    scsi: pm80xx: Fix array-index-out-of-of-bounds on rmmod
    
    [ Upstream commit 251be2f6037fb7ab399f68cd7428ff274133d693 ]
    
    Since commit f7b705c238d1 ("scsi: pm80xx: Set phy_attached to zero when
    device is gone") UBSAN reports:
    
      UBSAN: array-index-out-of-bounds in drivers/scsi/pm8001/pm8001_sas.c:786:17
      index 28 is out of range for type 'pm8001_phy [16]'
    
    on rmmod when using an expander.
    
    For a direct attached device, attached_phy contains the local phy id.
    For a device behind an expander, attached_phy contains the remote phy
    id, not the local phy id.
    
    I.e. while pm8001_ha will have pm8001_ha->chip->n_phy local phys, for a
    device behind an expander, attached_phy can be much larger than
    pm8001_ha->chip->n_phy (depending on the amount of phys of the
    expander).
    
    E.g. on my system pm8001_ha has 8 phys with phy ids 0-7.  One of the
    ports has an expander connected.  The expander has 31 phys with phy ids
    0-30.
    
    The pm8001_ha->phy array only contains the phys of the HBA.  It does not
    contain the phys of the expander.  Thus, it is wrong to use attached_phy
    to index the pm8001_ha->phy array for a device behind an expander.
    
    Thus, we can only clear phy_attached for devices that are directly
    attached.
    
    Fixes: f7b705c238d1 ("scsi: pm80xx: Set phy_attached to zero when device is gone")
    Reviewed-by: Igor Pylypiv <[email protected]>
    Signed-off-by: Niklas Cassel <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Damien Le Moal <[email protected]>
    Tested-by: Damien Le Moal <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: qla2xxx: edif: Fix incorrect sign of error code [+ + +]
Author: Qianfeng Rong <[email protected]>
Date:   Fri Sep 5 15:54:43 2025 +0800

    scsi: qla2xxx: edif: Fix incorrect sign of error code
    
    [ Upstream commit 066b8f3fa85c1be7fb7dbae202231e131d38f7bc ]
    
    Change the error code EAGAIN to -EAGAIN in qla24xx_sadb_update() and
    qla_edif_process_els() to align with qla2x00_start_sp() returning
    negative error codes or QLA_SUCCESS, preventing logical errors.
    
    Fixes: 0b3f3143d473 ("scsi: qla2xxx: edif: Add retry for ELS passthrough")
    Signed-off-by: Qianfeng Rong <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: qla2xxx: Fix incorrect sign of error code in START_SP_W_RETRIES() [+ + +]
Author: Qianfeng Rong <[email protected]>
Date:   Fri Sep 5 15:54:44 2025 +0800

    scsi: qla2xxx: Fix incorrect sign of error code in START_SP_W_RETRIES()
    
    [ Upstream commit 1f037e3acda79639a78f096355f2c308a3d45492 ]
    
    Change the error code EAGAIN to -EAGAIN in START_SP_W_RETRIES() to align
    with qla2x00_start_sp() returning negative error codes or QLA_SUCCESS,
    preventing logical errors.  Additionally, the '_rval' variable should
    store negative error codes to conform to Linux kernel error code
    conventions.
    
    Fixes: 9803fb5d2759 ("scsi: qla2xxx: Fix task management cmd failure")
    Signed-off-by: Qianfeng Rong <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: target: target_core_configfs: Add length check to avoid buffer overflow [+ + +]
Author: Wang Haoran <[email protected]>
Date:   Sat Sep 20 15:44:41 2025 +0800

    scsi: target: target_core_configfs: Add length check to avoid buffer overflow
    
    commit 27e06650a5eafe832a90fd2604f0c5e920857fae upstream.
    
    A buffer overflow arises from the usage of snprintf to write into the
    buffer "buf" in target_lu_gp_members_show function located in
    /drivers/target/target_core_configfs.c. This buffer is allocated with
    size LU_GROUP_NAME_BUF (256 bytes).
    
    snprintf(...) formats multiple strings into buf with the HBA name
    (hba->hba_group.cg_item), a slash character, a devicename (dev->
    dev_group.cg_item) and a newline character, the total formatted string
    length may exceed the buffer size of 256 bytes.
    
    Since snprintf() returns the total number of bytes that would have been
    written (the length of %s/%sn ), this value may exceed the buffer length
    (256 bytes) passed to memcpy(), this will ultimately cause function
    memcpy reporting a buffer overflow error.
    
    An additional check of the return value of snprintf() can avoid this
    buffer overflow.
    
    Reported-by: Wang Haoran <[email protected]>
    Reported-by: ziiiro <[email protected]>
    Signed-off-by: Wang Haoran <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
seccomp: Fix a race with WAIT_KILLABLE_RECV if the tracer replies too fast [+ + +]
Author: Johannes Nixdorf <[email protected]>
Date:   Fri Jul 25 18:31:18 2025 +0200

    seccomp: Fix a race with WAIT_KILLABLE_RECV if the tracer replies too fast
    
    [ Upstream commit cce436aafc2abad691fdd37de63ec8a4490b42ce ]
    
    Normally the tracee starts in SECCOMP_NOTIFY_INIT, sends an
    event to the tracer, and starts to wait interruptibly. With
    SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV, if the tracer receives the
    message (SECCOMP_NOTIFY_SENT is reached) while the tracee was waiting
    and is subsequently interrupted, the tracee begins to wait again
    uninterruptibly (but killable).
    
    This fails if SECCOMP_NOTIFY_REPLIED is reached before the tracee
    is interrupted, as the check only considered SECCOMP_NOTIFY_SENT as a
    condition to begin waiting again. In this case the tracee is interrupted
    even though the tracer already acted on its behalf. This breaks the
    assumption SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV wanted to ensure,
    namely that the tracer can be sure the syscall is not interrupted or
    restarted on the tracee after it is received on the tracer. Fix this
    by also considering SECCOMP_NOTIFY_REPLIED when evaluating whether to
    switch to uninterruptible waiting.
    
    With the condition changed the loop in seccomp_do_user_notification()
    would exit immediately after deciding that noninterruptible waiting
    is required if the operation already reached SECCOMP_NOTIFY_REPLIED,
    skipping the code that processes pending addfd commands first. Prevent
    this by executing the remaining loop body one last time in this case.
    
    Fixes: c2aa2dfef243 ("seccomp: Add wait_killable semantic to seccomp user notifier")
    Reported-by: Ali Polatel <[email protected]>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=220291
    Signed-off-by: Johannes Nixdorf <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests: arm64: Check fread return value in exec_target [+ + +]
Author: Bala-Vignesh-Reddy <[email protected]>
Date:   Fri Aug 8 13:38:30 2025 +0530

    selftests: arm64: Check fread return value in exec_target
    
    [ Upstream commit a679e5683d3eef22ca12514ff8784b2b914ebedc ]
    
    Fix -Wunused-result warning generated when compiled with gcc 13.3.0,
    by checking fread's return value and handling errors, preventing
    potential failures when reading from stdin.
    
    Fixes compiler warning:
    warning: ignoring return value of 'fread' declared with attribute
    'warn_unused_result' [-Wunused-result]
    
    Fixes: 806a15b2545e ("kselftests/arm64: add PAuth test for whether exec() changes keys")
    
    Signed-off-by: Bala-Vignesh-Reddy <[email protected]>
    Reviewed-by: Mark Brown <[email protected]>
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

selftests: mptcp: connect: fix build regression caused by backport [+ + +]
Author: Kenta Akagi <[email protected]>
Date:   Thu Oct 2 23:17:59 2025 +0900

    selftests: mptcp: connect: fix build regression caused by backport
    
    Since v6.1.154, mptcp selftests have failed to build with the following
    errors:
    
    mptcp_connect.c: In function ‘main_loop_s’:
    mptcp_connect.c:1040:59: error: ‘winfo’ undeclared (first use in this function)
     1040 |                 err = copyfd_io(fd, remotesock, 1, true, &winfo);
          |                                                           ^~~~~
    mptcp_connect.c:1040:59: note: each undeclared identifier is reported only once for each function it appears in
    mptcp_connect.c:1040:23: error: too many arguments to function ‘copyfd_io’; expected 4, have 5
     1040 |                 err = copyfd_io(fd, remotesock, 1, true, &winfo);
          |                       ^~~~~~~~~                          ~~~~~~
    mptcp_connect.c:845:12: note: declared here
      845 | static int copyfd_io(int infd, int peerfd, int outfd, bool close_peerfd)
          |            ^~~~~~~~~
    
    This is caused by commit ff160500c499 ("selftests: mptcp: connect: catch
    IO errors on listen side"), a backport of upstream 14e22b43df25,
    which attempts to use the undeclared variable 'winfo' and passes too many
    arguments to copyfd_io(). Both the winfo variable and the updated
    copyfd_io() function were introduced in upstream
    commit ca7ae8916043 ("selftests: mptcp: mptfo Initiator/Listener"),
    which is not present in v6.1.y.
    
    The goal of the backport is to stop on errors from copyfd_io.
    Therefore, the backport does not depend on the changes in upstream
    commit ca7ae8916043 ("selftests: mptcp: mptfo Initiator/Listener").
    
    This commit simply removes ', &winfo' to fix a build failure.
    
    Fixes: ff160500c499 ("selftests: mptcp: connect: catch IO errors on listen side")
    Signed-off-by: Kenta Akagi <[email protected]>
    Reviewed-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

selftests: watchdog: skip ping loop if WDIOF_KEEPALIVEPING not supported [+ + +]
Author: Akhilesh Patil <[email protected]>
Date:   Sun Sep 14 20:58:41 2025 +0530

    selftests: watchdog: skip ping loop if WDIOF_KEEPALIVEPING not supported
    
    [ Upstream commit e8cfc524eaf3c0ed88106177edb6961e202e6716 ]
    
    Check if watchdog device supports WDIOF_KEEPALIVEPING option before
    entering keep_alive() ping test loop. Fix watchdog-test silently looping
    if ioctl based ping is not supported by the device. Exit from test in
    such case instead of getting stuck in loop executing failing keep_alive()
    
    watchdog_info:
     identity:              m41t93 rtc Watchdog
     firmware_version:      0
    Support/Status: Set timeout (in seconds)
    Support/Status: Watchdog triggers a management or other external alarm not a reboot
    
    Watchdog card disabled.
    Watchdog timeout set to 5 seconds.
    Watchdog ping rate set to 2 seconds.
    Watchdog card enabled.
    WDIOC_KEEPALIVE not supported by this device
    
    without this change
    Watchdog card disabled.
    Watchdog timeout set to 5 seconds.
    Watchdog ping rate set to 2 seconds.
    Watchdog card enabled.
    Watchdog Ticking Away!
    (Where test stuck here forver silently)
    
    Updated change log at commit time:
    Shuah Khan <[email protected]>
    
    Link: https://lore.kernel.org/r/[email protected]
    Fixes: d89d08ffd2c5 ("selftests: watchdog: Fix ioctl SET* error paths to take oneshot exit path")
    Signed-off-by: Akhilesh Patil <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
serial: max310x: Add error checking in probe() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Thu Aug 7 18:54:37 2025 +0300

    serial: max310x: Add error checking in probe()
    
    [ Upstream commit 672a37ba8af1f2ebcedeb94aea2cdd047f805f30 ]
    
    Check if devm_i2c_new_dummy_device() fails.
    
    Fixes: 2e1f2d9a9bdb ("serial: max310x: implement I2C support")
    Signed-off-by: Dan Carpenter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

serial: stm32: allow selecting console when the driver is module [+ + +]
Author: Raphael Gallais-Pou <[email protected]>
Date:   Fri Aug 22 16:19:23 2025 +0200

    serial: stm32: allow selecting console when the driver is module
    
    commit cc4d900d0d6d8dd5c41832a93ff3cfa629a78f9a upstream.
    
    Console can be enabled on the UART compile as module.
    Change dependency to allow console mode when the driver is built as module.
    
    Fixes: 48a6092fb41fa ("serial: stm32-usart: Add STM32 USART Driver")
    Cc: [email protected]
    Signed-off-by: Raphael Gallais-Pou <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
smb: server: fix IRD/ORD negotiation with the client [+ + +]
Author: Stefan Metzmacher <[email protected]>
Date:   Wed Aug 20 15:34:58 2025 +0200

    smb: server: fix IRD/ORD negotiation with the client
    
    [ Upstream commit fad988a2158d743da7971884b93482a73735b25e ]
    
    Already do real negotiation in smb_direct_handle_connect_request()
    where we see the requested initiator_depth and responder_resources
    from the client.
    
    We should detect legacy iwarp clients using MPA v1
    with the custom IRD/ORD negotiation.
    
    We need to send the custom IRD/ORD in big endian,
    but we need to try to let clients with broken requests
    using little endian (older cifs.ko) to work.
    
    Note the reason why this uses u8 for
    initiator_depth and responder_resources is
    that the rdma layer also uses it.
    
    Acked-by: Namjae Jeon <[email protected]>
    Cc: Steve French <[email protected]>
    Cc: Tom Talpey <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Fixes: 0626e6641f6b ("cifsd: add server handler for central processing and tranport layers")
    Signed-off-by: Stefan Metzmacher <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
smp: Fix up and expand the smp_call_function_many() kerneldoc [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Tue Sep 9 13:44:14 2025 +0200

    smp: Fix up and expand the smp_call_function_many() kerneldoc
    
    [ Upstream commit ccf09357ffef2ab472369ab9cdf470c9bc9b821a ]
    
    The smp_call_function_many() kerneldoc comment got out of sync with the
    function definition (bool parameter "wait" is incorrectly described as a
    bitmask in it), so fix it up by copying the "wait" description from the
    smp_call_function() kerneldoc and add information regarding the handling
    of the local CPU to it.
    
    Fixes: 49b3bd213a9f ("smp: Fix all kernel-doc warnings")
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
soc: qcom: rpmh-rsc: Unconditionally clear _TRIGGER bit for TCS [+ + +]
Author: Sneh Mankad <[email protected]>
Date:   Mon Aug 25 11:53:50 2025 +0530

    soc: qcom: rpmh-rsc: Unconditionally clear _TRIGGER bit for TCS
    
    [ Upstream commit f87412d18edb5b8393eb8cb1c2d4a54f90185a21 ]
    
    Unconditionally clear the TCS_AMC_MODE_TRIGGER bit when a
    transaction completes. Previously this bit was only cleared when
    a wake TCS was borrowed as an AMC TCS but not for dedicated
    AMC TCS. Leaving this bit set for AMC TCS and entering deeper low
    power modes can generate a false completion IRQ.
    
    Prevent this scenario by always clearing the TCS_AMC_MODE_TRIGGER
    bit upon receiving a completion IRQ.
    
    Fixes: 15b3bf61b8d4 ("soc: qcom: rpmh-rsc: Clear active mode configuration for wake TCS")
    Signed-off-by: Sneh Mankad <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
sparc: fix accurate exception reporting in copy_to_user for Niagara 4 [+ + +]
Author: Michael Karcher <[email protected]>
Date:   Fri Sep 5 00:03:33 2025 +0200

    sparc: fix accurate exception reporting in copy_to_user for Niagara 4
    
    [ Upstream commit 5a746c1a2c7980de6c888b6373299f751ad7790b ]
    
    The referenced commit introduced exception handlers on user-space memory
    references in copy_from_user and copy_to_user. These handlers return from
    the respective function and calculate the remaining bytes left to copy
    using the current register contents. This commit fixes a bad calculation.
    This will fix the return value of copy_to_user in a specific faulting case.
    The behaviour of memcpy stays unchanged.
    
    Fixes: 957077048009 ("sparc64: Convert NG4copy_{from,to}_user to accurate exception reporting.")
    Tested-by: John Paul Adrian Glaubitz <[email protected]> # on Oracle SPARC T4-1
    Signed-off-by: Michael Karcher <[email protected]>
    Reviewed-by: Andreas Larsson <[email protected]>
    Link: https://lore.kernel.org/r/20250905-memcpy_series-v4-4-1ca72dda195b@mkarcher.dialup.fu-berlin.de
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

sparc: fix accurate exception reporting in copy_{from,to}_user for M7 [+ + +]
Author: Michael Karcher <[email protected]>
Date:   Fri Sep 5 00:03:34 2025 +0200

    sparc: fix accurate exception reporting in copy_{from,to}_user for M7
    
    [ Upstream commit 936fb512752af349fc30ccbe0afe14a2ae6d7159 ]
    
    The referenced commit introduced exception handlers on user-space memory
    references in copy_from_user and copy_to_user. These handlers return from
    the respective function and calculate the remaining bytes left to copy
    using the current register contents. This commit fixes a couple of bad
    calculations. This will fix the return value of copy_from_user and
    copy_to_user in the faulting case. The behaviour of memcpy stays unchanged.
    
    Fixes: 34060b8fffa7 ("arch/sparc: Add accurate exception reporting in M7memcpy")
    Tested-by: John Paul Adrian Glaubitz <[email protected]> # on Oracle SPARC S7
    Tested-by: Tony Rodriguez <[email protected]> # S7, see https://lore.kernel.org/r/98564e2e68df2dda0e00c67a75c7f7dfedb33c7e.camel@physik.fu-berlin.de
    Signed-off-by: Michael Karcher <[email protected]>
    Reviewed-by: Andreas Larsson <[email protected]>
    Link: https://lore.kernel.org/r/20250905-memcpy_series-v4-5-1ca72dda195b@mkarcher.dialup.fu-berlin.de
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

sparc: fix accurate exception reporting in copy_{from_to}_user for Niagara [+ + +]
Author: Michael Karcher <[email protected]>
Date:   Fri Sep 5 00:03:32 2025 +0200

    sparc: fix accurate exception reporting in copy_{from_to}_user for Niagara
    
    [ Upstream commit 0b67c8fc10b13a9090340c5f8a37d308f4e1571c ]
    
    The referenced commit introduced exception handlers on user-space memory
    references in copy_from_user and copy_to_user. These handlers return from
    the respective function and calculate the remaining bytes left to copy
    using the current register contents. This commit fixes a couple of bad
    calculations and a broken epilogue in the exception handlers. This will
    prevent crashes and ensure correct return values of copy_from_user and
    copy_to_user in the faulting case. The behaviour of memcpy stays unchanged.
    
    Fixes: 7ae3aaf53f16 ("sparc64: Convert NGcopy_{from,to}_user to accurate exception reporting.")
    Tested-by: John Paul Adrian Glaubitz <[email protected]> # on SPARC T4 with modified kernel to use Niagara 1 code
    Tested-by: Magnus Lindholm <[email protected]> # on Sun Fire T2000
    Signed-off-by: Michael Karcher <[email protected]>
    Tested-by: Ethan Hawke <[email protected]> # on Sun Fire T2000
    Tested-by: Ken Link <[email protected]> # on Sun Fire T1000
    Reviewed-by: Andreas Larsson <[email protected]>
    Link: https://lore.kernel.org/r/20250905-memcpy_series-v4-3-1ca72dda195b@mkarcher.dialup.fu-berlin.de
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

sparc: fix accurate exception reporting in copy_{from_to}_user for UltraSPARC [+ + +]
Author: Michael Karcher <[email protected]>
Date:   Fri Sep 5 00:03:30 2025 +0200

    sparc: fix accurate exception reporting in copy_{from_to}_user for UltraSPARC
    
    [ Upstream commit 4fba1713001195e59cfc001ff1f2837dab877efb ]
    
    The referenced commit introduced exception handlers on user-space memory
    references in copy_from_user and copy_to_user. These handlers return from
    the respective function and calculate the remaining bytes left to copy
    using the current register contents. This commit fixes a couple of bad
    calculations. This will fix the return value of copy_from_user and
    copy_to_user in the faulting case. The behaviour of memcpy stays unchanged.
    
    Fixes: cb736fdbb208 ("sparc64: Convert U1copy_{from,to}_user to accurate exception reporting.")
    Tested-by: John Paul Adrian Glaubitz <[email protected]> # on QEMU 10.0.3
    Tested-by: René Rebe <[email protected]> # on Ultra 5 UltraSparc IIi
    Tested-by: Jonathan 'theJPster' Pallant <[email protected]> # on Sun Netra T1
    Signed-off-by: Michael Karcher <[email protected]>
    Reviewed-by: Andreas Larsson <[email protected]>
    Link: https://lore.kernel.org/r/20250905-memcpy_series-v4-1-1ca72dda195b@mkarcher.dialup.fu-berlin.de
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

sparc: fix accurate exception reporting in copy_{from_to}_user for UltraSPARC III [+ + +]
Author: Michael Karcher <[email protected]>
Date:   Fri Sep 5 00:03:31 2025 +0200

    sparc: fix accurate exception reporting in copy_{from_to}_user for UltraSPARC III
    
    [ Upstream commit 47b49c06eb62504075f0f2e2227aee2e2c2a58b3 ]
    
    Anthony Yznaga tracked down that a BUG_ON in ext4 code with large folios
    enabled resulted from copy_from_user() returning impossibly large values
    greater than the size to be copied. This lead to __copy_from_iter()
    returning impossible values instead of the actual number of bytes it was
    able to copy.
    
    The BUG_ON has been reported in
    https://lore.kernel.org/r/b14f55642207e63e907965e209f6323a0df6dcee.camel@physik.fu-berlin.de
    
    The referenced commit introduced exception handlers on user-space memory
    references in copy_from_user and copy_to_user. These handlers return from
    the respective function and calculate the remaining bytes left to copy
    using the current register contents. The exception handlers expect that
    %o2 has already been masked during the bulk copy loop, but the masking was
    performed after that loop. This will fix the return value of copy_from_user
    and copy_to_user in the faulting case. The behaviour of memcpy stays
    unchanged.
    
    Fixes: ee841d0aff64 ("sparc64: Convert U3copy_{from,to}_user to accurate exception reporting.")
    Tested-by: John Paul Adrian Glaubitz <[email protected]> # on Sun Netra 240
    Reviewed-by: Anthony Yznaga <[email protected]>
    Tested-by: René Rebe <[email protected]> # on UltraSparc III+ and UltraSparc IIIi
    Signed-off-by: Michael Karcher <[email protected]>
    Reviewed-by: Andreas Larsson <[email protected]>
    Link: https://lore.kernel.org/r/20250905-memcpy_series-v4-2-1ca72dda195b@mkarcher.dialup.fu-berlin.de
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Squashfs: fix uninit-value in squashfs_get_parent [+ + +]
Author: Phillip Lougher <[email protected]>
Date:   Fri Sep 19 00:33:08 2025 +0100

    Squashfs: fix uninit-value in squashfs_get_parent
    
    commit 74058c0a9fc8b2b4d5f4a0ef7ee2cfa66a9e49cf upstream.
    
    Syzkaller reports a "KMSAN: uninit-value in squashfs_get_parent" bug.
    
    This is caused by open_by_handle_at() being called with a file handle
    containing an invalid parent inode number.  In particular the inode number
    is that of a symbolic link, rather than a directory.
    
    Squashfs_get_parent() gets called with that symbolic link inode, and
    accesses the parent member field.
    
            unsigned int parent_ino = squashfs_i(inode)->parent;
    
    Because non-directory inodes in Squashfs do not have a parent value, this
    is uninitialised, and this causes an uninitialised value access.
    
    The fix is to initialise parent with the invalid inode 0, which will cause
    an EINVAL error to be returned.
    
    Regular inodes used to share the parent field with the block_list_start
    field.  This is removed in this commit to enable the parent field to
    contain the invalid inode number 0.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 122601408d20 ("Squashfs: export operations")
    Signed-off-by: Phillip Lougher <[email protected]>
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
staging: axis-fifo: fix maximum TX packet length check [+ + +]
Author: Ovidiu Panait <[email protected]>
Date:   Sun Aug 17 20:13:50 2025 +0300

    staging: axis-fifo: fix maximum TX packet length check
    
    commit 52ff2b840bc723f3be1f096f8017c78e0515858c upstream.
    
    Since commit 2ca34b508774 ("staging: axis-fifo: Correct handling of
    tx_fifo_depth for size validation"), write() operations with packets
    larger than 'tx_fifo_depth - 4' words are no longer rejected with -EINVAL.
    
    Fortunately, the packets are not actually getting transmitted to hardware,
    otherwise they would be raising a 'Transmit Packet Overrun Error'
    interrupt, which requires a reset of the TX circuit to recover from.
    
    Instead, the request times out inside wait_event_interruptible_timeout()
    and always returns -EAGAIN, since the wake up condition can never be true
    for these packets. But still, they unnecessarily block other tasks from
    writing to the FIFO and the EAGAIN return code signals userspace to retry
    the write() call, even though it will always fail and time out.
    
    According to the AXI4-Stream FIFO reference manual (PG080), the maximum
    valid packet length is 'tx_fifo_depth - 4' words, so attempting to send
    larger packets is invalid and should not be happening in the first place:
    
    > The maximum packet that can be transmitted is limited by the size of
    > the FIFO, which is (C_TX_FIFO_DEPTH–4)*(data interface width/8) bytes.
    
    Therefore, bring back the old behavior and outright reject packets larger
    than 'tx_fifo_depth - 4' with -EINVAL. Add a comment to explain why the
    check is necessary. The dev_err() message was removed to avoid cluttering
    the dmesg log if an invalid packet is received from userspace.
    
    Fixes: 2ca34b508774 ("staging: axis-fifo: Correct handling of tx_fifo_depth for size validation")
    Cc: [email protected]
    Signed-off-by: Ovidiu Panait <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

staging: axis-fifo: fix TX handling on copy_from_user() failure [+ + +]
Author: Ovidiu Panait <[email protected]>
Date:   Fri Sep 12 13:13:21 2025 +0300

    staging: axis-fifo: fix TX handling on copy_from_user() failure
    
    commit 6d07bee10e4bdd043ec7152cbbb9deb27033c9e2 upstream.
    
    If copy_from_user() fails, write() currently returns -EFAULT, but any
    partially written data leaves the TX FIFO in an inconsistent state.
    Subsequent write() calls then fail with "transmit length mismatch"
    errors.
    
    Once partial data is written to the hardware FIFO, it cannot be removed
    without a TX reset. Commit c6e8d85fafa7 ("staging: axis-fifo: Remove
    hardware resets for user errors") removed a full FIFO reset for this case,
    which fixed a potential RX data loss, but introduced this TX issue.
    
    Fix this by introducing a bounce buffer: copy the full packet from
    userspace first, and write to the hardware FIFO only if the copy
    was successful.
    
    Fixes: c6e8d85fafa7 ("staging: axis-fifo: Remove hardware resets for user errors")
    Cc: [email protected]
    Signed-off-by: Ovidiu Panait <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

staging: axis-fifo: flush RX FIFO on read errors [+ + +]
Author: Ovidiu Panait <[email protected]>
Date:   Fri Sep 12 13:13:22 2025 +0300

    staging: axis-fifo: flush RX FIFO on read errors
    
    commit 82a051e2553b9e297cba82a975d9c538b882c79e upstream.
    
    Flush stale data from the RX FIFO in case of errors, to avoid reading
    old data when new packets arrive.
    
    Commit c6e8d85fafa7 ("staging: axis-fifo: Remove hardware resets for
    user errors") removed full FIFO resets from the read error paths, which
    fixed potential TX data losses, but introduced this RX issue.
    
    Fixes: c6e8d85fafa7 ("staging: axis-fifo: Remove hardware resets for user errors")
    Cc: [email protected]
    Signed-off-by: Ovidiu Panait <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
tcp: fix __tcp_close() to only send RST when required [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Sep 3 08:47:18 2025 +0000

    tcp: fix __tcp_close() to only send RST when required
    
    [ Upstream commit 5f9238530970f2993b23dd67fdaffc552a2d2e98 ]
    
    If the receive queue contains payload that was already
    received, __tcp_close() can send an unexpected RST.
    
    Refine the code to take tp->copied_seq into account,
    as we already do in tcp recvmsg().
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Neal Cardwell <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Jason Xing <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
thermal/drivers/qcom/lmh: Add missing IRQ includes [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Mon Jul 28 15:18:24 2025 +0300

    thermal/drivers/qcom/lmh: Add missing IRQ includes
    
    [ Upstream commit b50b2c53f98fcdb6957e184eb488c16502db9575 ]
    
    As reported by LKP, the Qualcomm LMH driver needs to include several
    IRQ-related headers, which decrlare necessary IRQ functionality.
    Currently driver builds on ARM64 platforms, where the headers are pulled
    in implicitly by other headers, but fails to build on other platforms.
    
    Fixes: 53bca371cdf7 ("thermal/drivers/qcom: Add support for LMh driver")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Daniel Lezcano <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
thermal/drivers/qcom: Make LMH select QCOM_SCM [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Mon Jul 28 15:18:23 2025 +0300

    thermal/drivers/qcom: Make LMH select QCOM_SCM
    
    [ Upstream commit 57eda47bd14b0c2876f2db42e757c57b7a671965 ]
    
    The QCOM_SCM symbol is not user-visible, so it makes little sense to
    depend on it. Make LMH driver select QCOM_SCM as all other drivers do
    and, as the dependecy is now correctly handled, enable || COMPILE_TEST
    in order to include the driver into broader set of build tests.
    
    Fixes: 9e5a4fb84230 ("thermal/drivers/qcom/lmh: make QCOM_LMH depends on QCOM_SCM")
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Daniel Lezcano <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
tools/nolibc: make time_t robust if __kernel_old_time_t is missing in host headers [+ + +]
Author: Zhouyi Zhou <[email protected]>
Date:   Fri Sep 19 01:46:43 2025 +0000

    tools/nolibc: make time_t robust if __kernel_old_time_t is missing in host headers
    
    [ Upstream commit 0ff52df6b32a6b04a7c9dfe3d7a387aff215b482 ]
    
    Commit d5094bcb5bfd ("tools/nolibc: define time_t in terms of
    __kernel_old_time_t") made nolibc use the kernel's time type so that
    `time_t` matches `timespec::tv_sec` on all ABIs (notably x32).
    
    But since __kernel_old_time_t is fairly new, notably from 2020 in commit
    94c467ddb273 ("y2038: add __kernel_old_timespec and __kernel_old_time_t"),
    nolibc builds that rely on host headers may fail.
    
    Switch to __kernel_time_t, which is the same as __kernel_old_time_t and
    has existed for longer.
    
    Tested in PPC VM of Open Source Lab of Oregon State University
    (./tools/testing/selftests/rcutorture/bin/mkinitrd.sh)
    
    Fixes: d5094bcb5bfd ("tools/nolibc: define time_t in terms of __kernel_old_time_t")
    Signed-off-by: Zhouyi Zhou <[email protected]>
    [Thomas: Reformat commit and its message a bit]
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
uio_hv_generic: Let userspace take care of interrupt mask [+ + +]
Author: Naman Jain <[email protected]>
Date:   Thu Aug 28 10:12:00 2025 +0530

    uio_hv_generic: Let userspace take care of interrupt mask
    
    commit b15b7d2a1b09ef5428a8db260251897405a19496 upstream.
    
    Remove the logic to set interrupt mask by default in uio_hv_generic
    driver as the interrupt mask value is supposed to be controlled
    completely by the user space. If the mask bit gets changed
    by the driver, concurrently with user mode operating on the ring,
    the mask bit may be set when it is supposed to be clear, and the
    user-mode driver will miss an interrupt which will cause a hang.
    
    For eg- when the driver sets inbound ring buffer interrupt mask to 1,
    the host does not interrupt the guest on the UIO VMBus channel.
    However, setting the mask does not prevent the host from putting a
    message in the inbound ring buffer. So let’s assume that happens,
    the host puts a message into the ring buffer but does not interrupt.
    
    Subsequently, the user space code in the guest sets the inbound ring
    buffer interrupt mask to 0, saying “Hey, I’m ready for interrupts”.
    User space code then calls pread() to wait for an interrupt.
    Then one of two things happens:
    
    * The host never sends another message. So the pread() waits forever.
    * The host does send another message. But because there’s already a
      message in the ring buffer, it doesn’t generate an interrupt.
      This is the correct behavior, because the host should only send an
      interrupt when the inbound ring buffer transitions from empty to
      not-empty. Adding an additional message to a ring buffer that is not
      empty is not supposed to generate an interrupt on the guest.
      Since the guest is waiting in pread() and not removing messages from
      the ring buffer, the pread() waits forever.
    
    This could be easily reproduced in hv_fcopy_uio_daemon if we delay
    setting interrupt mask to 0.
    
    Similarly if hv_uio_channel_cb() sets the interrupt_mask to 1,
    there’s a race condition. Once user space empties the inbound ring
    buffer, but before user space sets interrupt_mask to 0, the host could
    put another message in the ring buffer but it wouldn’t interrupt.
    Then the next pread() would hang.
    
    Fix these by removing all instances where interrupt_mask is changed,
    while keeping the one in set_event() unchanged to enable userspace
    control the interrupt mask by writing 0/1 to /dev/uioX.
    
    Fixes: 95096f2fbd10 ("uio-hv-generic: new userspace i/o driver for VMBus")
    Suggested-by: John Starks <[email protected]>
    Signed-off-by: Naman Jain <[email protected]>
    Cc: [email protected]
    Reviewed-by: Michael Kelley <[email protected]>
    Reviewed-by: Long Li <[email protected]>
    Reviewed-by: Tianyu Lan <[email protected]>
    Tested-by: Tianyu Lan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
usb: cdns3: cdnsp-pci: remove redundant pci_disable_device() call [+ + +]
Author: Miaoqian Lin <[email protected]>
Date:   Wed Sep 3 22:16:13 2025 +0800

    usb: cdns3: cdnsp-pci: remove redundant pci_disable_device() call
    
    commit e9c206324eeb213957a567a9d066bdeb355c7491 upstream.
    
    The cdnsp-pci driver uses pcim_enable_device() to enable a PCI device,
    which means the device will be automatically disabled on driver detach
    through the managed device framework. The manual pci_disable_device()
    call in the error path is therefore redundant.
    
    Found via static anlaysis and this is similar to commit 99ca0b57e49f
    ("thermal: intel: int340x: processor: Fix warning during module unload").
    
    Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver")
    Cc: [email protected]
    Signed-off-by: Miaoqian Lin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: gadget: configfs: Correctly set use_os_string at bind [+ + +]
Author: William Wu <[email protected]>
Date:   Fri Aug 22 11:36:09 2025 +0800

    usb: gadget: configfs: Correctly set use_os_string at bind
    
    [ Upstream commit e271cc0d25015f4be6c88bd7731444644eb352c2 ]
    
    Once the use_os_string flag is set to true for some functions
    (e.g. adb/mtp) which need to response the OS string, and then
    if we re-bind the ConfigFS gadget to use the other functions
    (e.g. hid) which should not to response the OS string, however,
    because the use_os_string flag is still true, so the usb gadget
    response the OS string descriptor incorrectly, this can cause
    the USB device to be unrecognizable on the Windows system.
    
    An example of this as follows:
    
    echo 1 > os_desc/use
    ln -s functions/ffs.adb configs/b.1/function0
    start adbd
    echo "<udc device>" > UDC   #succeed
    
    stop adbd
    rm configs/b.1/function0
    echo 0 > os_desc/use
    ln -s functions/hid.gs0 configs/b.1/function0
    echo "<udc device>" > UDC  #fail to connect on Windows
    
    This patch sets the use_os_string flag to false at bind if
    the functions not support OS Descriptors.
    
    Signed-off-by: William Wu <[email protected]>
    Fixes: 87213d388e92 ("usb: gadget: configfs: OS String support")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: host: max3421-hcd: Fix error pointer dereference in probe cleanup [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Thu Aug 7 18:55:00 2025 +0300

    usb: host: max3421-hcd: Fix error pointer dereference in probe cleanup
    
    [ Upstream commit 186e8f2bdba551f3ae23396caccd452d985c23e3 ]
    
    The kthread_run() function returns error pointers so the
    max3421_hcd->spi_thread pointer can be either error pointers or NULL.
    Check for both before dereferencing it.
    
    Fixes: 05dfa5c9bc37 ("usb: host: max3421-hcd: fix "spi_rd8" uses dynamic stack allocation warning")
    Signed-off-by: Dan Carpenter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: phy: twl6030: Fix incorrect type for ret [+ + +]
Author: Xichao Zhao <[email protected]>
Date:   Fri Aug 22 17:22:24 2025 +0800

    usb: phy: twl6030: Fix incorrect type for ret
    
    [ Upstream commit b570b346ddd727c4b41743a6a2f49e7217c5317f ]
    
    In the twl6030_usb_probe(), the variable ret is declared as
    a u32 type. However, since ret may receive -ENODEV when accepting
    the return value of omap_usb2_set_comparator().Therefore, its type
    should be changed to int.
    
    Fixes: 0e98de67bacba ("usb: otg: make twl6030_usb as a comparator driver to omap_usb2")
    Signed-off-by: Xichao Zhao <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
USB: serial: option: add SIMCom 8230C compositions [+ + +]
Author: Xiaowei Li <[email protected]>
Date:   Wed Sep 24 11:16:50 2025 +0800

    USB: serial: option: add SIMCom 8230C compositions
    
    commit 0e0ba0ecec3d6e819e0c2348331ff99afe2eb5d5 upstream.
    
    Add support for SIMCom 8230C which is based on Qualcomm SDX35 chip.
    
    USB Device Listings:
    
    0x9071: tty (DM) + tty (NMEA) + tty (AT) + rmnet (QMI mode) + adb
    T:  Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#= 10 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1e0e ProdID=9071 Rev= 5.15
    S:  Manufacturer=SIMCOM
    S:  Product=SDXBAAGHA-IDP _SN:D744C4C5
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    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=ff Prot=40 Driver=option
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=83(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=ff Prot=50 Driver=qmi_wwan
    E:  Ad=86(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=85(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=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x9078: tty (DM) + tty (NMEA) + tty (AT) + ECM + adb
    T:  Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#=  9 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=1e0e ProdID=9078 Rev= 5.15
    S:  Manufacturer=SIMCOM
    S:  Product=SDXBAAGHA-IDP _SN:D744C4C5
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    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=ff Prot=40 Driver=option
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=83(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= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
    E:  Ad=86(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
    I:  If#= 4 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    I:* If#= 4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 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=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x907b: RNDIS + tty (DM) + tty (NMEA) + tty (AT) + adb
    T:  Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#=  8 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1e0e ProdID=907b Rev= 5.15
    S:  Manufacturer=SIMCOM
    S:  Product=SDXBAAGHA-IDP _SN:D744C4C5
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    A:  FirstIf#= 0 IfCount= 2 Cls=ef(misc ) Sub=04 Prot=01
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=rndis_host
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 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=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Xiaowei Li <[email protected]>
    Cc: [email protected]
    Signed-off-by: Johan Hovold <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
usb: typec: tipd: Clear interrupts first [+ + +]
Author: Sven Peter <[email protected]>
Date:   Sun Sep 14 12:56:06 2025 +0000

    usb: typec: tipd: Clear interrupts first
    
    commit be5ae730ffa6fd774a00a4705c1e11e078b08ca1 upstream.
    
    Right now the interrupt handler first reads all updated status registers
    and only then clears the interrupts. It's possible that a duplicate
    interrupt for a changed register or plug state comes in after the
    interrupts have been processed but before they have been cleared:
    
    * plug is inserted, TPS_REG_INT_PLUG_EVENT is set
    * TPS_REG_INT_EVENT1 is read
    * tps6598x_handle_plug_event() has run and registered the plug
    * plug is removed again, TPS_REG_INT_PLUG_EVENT is set (again)
    * TPS_REG_INT_CLEAR1 is written, TPS_REG_INT_PLUG_EVENT is cleared
    
    We then have no plug connected and no pending interrupt but the tipd
    core still thinks there is a plug. It's possible to trigger this with
    e.g. a slightly broken Type-C to USB A converter.
    
    Fix this by first clearing the interrupts and only then reading the
    updated registers.
    
    Fixes: 45188f27b3d0 ("usb: typec: tipd: Add support for Apple CD321X")
    Fixes: 0a4c005bd171 ("usb: typec: driver for TI TPS6598x USB Power Delivery controllers")
    Cc: [email protected]
    Reviewed-by: Heikki Krogerus <[email protected]>
    Reviewed-by: Neal Gompa <[email protected]>
    Signed-off-by: Sven Peter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: vhci-hcd: Prevent suspending virtually attached devices [+ + +]
Author: Cristian Ciocaltea <[email protected]>
Date:   Tue Sep 2 15:15:46 2025 +0300

    usb: vhci-hcd: Prevent suspending virtually attached devices
    
    [ Upstream commit e40b984b6c4ce3f80814f39f86f87b2a48f2e662 ]
    
    The VHCI platform driver aims to forbid entering system suspend when at
    least one of the virtual USB ports are bound to an active USB/IP
    connection.
    
    However, in some cases, the detection logic doesn't work reliably, i.e.
    when all devices attached to the virtual root hub have been already
    suspended, leading to a broken suspend state, with unrecoverable resume.
    
    Ensure the virtually attached devices do not enter suspend by setting
    the syscore PM flag.  Note this is currently limited to the client side
    only, since the server side doesn't implement system suspend prevention.
    
    Fixes: 04679b3489e0 ("Staging: USB/IP: add client driver")
    Signed-off-by: Cristian Ciocaltea <[email protected]>
    Acked-by: Shuah Khan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vhost: vringh: Fix copy_to_iter return value check [+ + +]
Author: Michael S. Tsirkin <[email protected]>
Date:   Thu Sep 25 02:04:08 2025 -0400

    vhost: vringh: Fix copy_to_iter return value check
    
    [ Upstream commit 439263376c2c4e126cac0d07e4987568de4eaba5 ]
    
    The return value of copy_to_iter can't be negative, check whether the
    copied length is equal to the requested length instead of checking for
    negative values.
    
    Cc: zhang jiao <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Michael S. Tsirkin <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Fixes: 309bba39c945 ("vringh: iterate on iotlb_translate to handle large translations")
    Link: https://patch.msgid.link/cd637504a6e3967954a9e80fc1b75e8c0978087b.1758723310.git.mst@redhat.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

vhost: vringh: Modify the return value check [+ + +]
Author: zhang jiao <[email protected]>
Date:   Wed Sep 10 17:17:38 2025 +0800

    vhost: vringh: Modify the return value check
    
    [ Upstream commit 82a8d0fda55b35361ee7f35b54fa2b66d7847d2b ]
    
    The return value of copy_from_iter and copy_to_iter can't be negative,
    check whether the copied lengths are equal.
    
    Fixes: 309bba39c945 ("vringh: iterate on iotlb_translate to handle large translations")
    Cc: "Stefano Garzarella" <[email protected]>
    Signed-off-by: zhang jiao <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Michael S. Tsirkin <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
watchdog: mpc8xxx_wdt: Reload the watchdog timer when enabling the watchdog [+ + +]
Author: Christophe Leroy <[email protected]>
Date:   Tue Aug 12 14:51:26 2025 +0200

    watchdog: mpc8xxx_wdt: Reload the watchdog timer when enabling the watchdog
    
    [ Upstream commit 7dfd80f70ef00d871df5af7c391133f7ba61ad9b ]
    
    When the watchdog gets enabled with this driver, it leaves enough time
    for the core watchdog subsystem to start pinging it. But when the
    watchdog is already started by hardware or by the boot loader, little
    time remains before it fires and it happens that the core watchdog
    subsystem doesn't have time to start pinging it.
    
    Until commit 19ce9490aa84 ("watchdog: mpc8xxx: use the core worker
    function") pinging was managed by the driver itself and the watchdog
    was immediately pinged by setting the timer expiry to 0.
    
    So restore similar behaviour by pinging it when enabling it so that
    if it was already enabled the watchdog timer counter is reloaded.
    
    Fixes: 19ce9490aa84 ("watchdog: mpc8xxx: use the core worker function")
    Signed-off-by: Christophe Leroy <[email protected]>
    Reviewed-by: Guenter Roeck <[email protected]>
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Wim Van Sebroeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
wifi: ath10k: avoid unnecessary wait for service ready message [+ + +]
Author: Baochen Qiang <[email protected]>
Date:   Mon Aug 11 17:26:45 2025 +0800

    wifi: ath10k: avoid unnecessary wait for service ready message
    
    [ Upstream commit 51a73f1b2e56b0324b4a3bb8cebc4221b5be4c7a ]
    
    Commit e57b7d62a1b2 ("wifi: ath10k: poll service ready message before
    failing") works around the failure in waiting for the service ready
    message by active polling. Note the polling is triggered after initial
    wait timeout, which means that the wait-till-timeout can not be avoided
    even the message is ready.
    
    A possible fix is to do polling once before wait as well, however this
    can not handle the race that the message arrives right after polling.
    So the solution is to do periodic polling until timeout.
    
    Tested-on: QCA6174 hw3.2 PCI WLAN.RM.4.4.1-00309-QCARMSWPZ-1
    
    Fixes: e57b7d62a1b2 ("wifi: ath10k: poll service ready message before failing")
    Reported-by: Paul Menzel <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Baochen Qiang <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Link: https://patch.msgid.link/20250811-ath10k-avoid-unnecessary-wait-v1-1-db2deb87c39b@oss.qualcomm.com
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: fix Rx packet handling when pubsta information is not available [+ + +]
Author: Aditya Kumar Singh <[email protected]>
Date:   Wed Sep 17 12:42:03 2025 +0530

    wifi: mac80211: fix Rx packet handling when pubsta information is not available
    
    [ Upstream commit 32d340ae675800672e1219444a17940a8efe5cca ]
    
    In ieee80211_rx_handle_packet(), if the caller does not provide pubsta
    information, an attempt is made to find the station using the address 2
    (source address) field in the header. Since pubsta is missing, link
    information such as link_valid and link_id is also unavailable. Now if such
    a situation comes, and if a matching ML station entry is found based on
    the source address, currently the packet is dropped due to missing link ID
    in the status field which is not correct.
    
    Hence, to fix this issue, if link_valid is not set and the station is an
    ML station, make an attempt to find a link station entry using the source
    address. If a valid link station is found, derive the link ID and proceed
    with packet processing. Otherwise, drop the packet as per the existing
    flow.
    
    Fixes: ea9d807b5642 ("wifi: mac80211: add link information in ieee80211_rx_status")
    Suggested-by: Vasanthakumar Thiagarajan <[email protected]>
    Signed-off-by: Aditya Kumar Singh <[email protected]>
    Link: https://patch.msgid.link/20250917-fix_data_packet_rx_with_mlo_and_no_pubsta-v1-1-8cf971a958ac@oss.qualcomm.com
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: fix potential memory leak in mt76_wmac_probe() [+ + +]
Author: Abdun Nihaal <[email protected]>
Date:   Wed Jul 9 20:25:30 2025 +0530

    wifi: mt76: fix potential memory leak in mt76_wmac_probe()
    
    [ Upstream commit 42754b7de2b1a2cf116c5e3f1e8e78392f4ed700 ]
    
    In mt76_wmac_probe(), when the mt76_alloc_device() call succeeds, memory
    is allocated for both struct ieee80211_hw and a workqueue. However, on
    the error path, the workqueue is not freed. Fix that by calling
    mt76_free_device() on the error path.
    
    Fixes: c8846e101502 ("mt76: add driver for MT7603E and MT7628/7688")
    Signed-off-by: Abdun Nihaal <[email protected]>
    Reviewed-by: Jiri Slaby <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mwifiex: send world regulatory domain to driver [+ + +]
Author: Stefan Kerkmann <[email protected]>
Date:   Mon Aug 4 16:16:59 2025 +0200

    wifi: mwifiex: send world regulatory domain to driver
    
    [ Upstream commit 56819d00bc2ebaa6308913c28680da5d896852b8 ]
    
    The world regulatory domain is a restrictive subset of channel
    configurations which allows legal operation of the adapter all over the
    world. Changing to this domain should not be prevented.
    
    Fixes: dd4a9ac05c8e1 ("mwifiex: send regulatory domain info to firmware only if alpha2 changed") changed
    Signed-off-by: Stefan Kerkmann <[email protected]>
    Reviewed-by: Jeff Chen <[email protected]>
    Link: https://patch.msgid.link/20250804-fix-mwifiex-regulatory-domain-v1-1-e4715c770c4d@pengutronix.de
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtlwifi: rtl8192cu: Don't claim USB ID 07b8:8188 [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Mon Aug 11 18:32:55 2025 +0300

    wifi: rtlwifi: rtl8192cu: Don't claim USB ID 07b8:8188
    
    commit e798f2ac6040f46a04795d7de977341fa9aeabae upstream.
    
    This ID appears to be RTL8188SU, not RTL8188CU. This is the wrong driver
    for RTL8188SU. The r8712u driver from staging used to handle this ID.
    
    Closes: https://lore.kernel.org/linux-wireless/[email protected]/
    Cc: [email protected]
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: rtw89: avoid circular locking dependency in ser_state_run() [+ + +]
Author: Fedor Pchelkin <[email protected]>
Date:   Sat Sep 20 00:08:50 2025 +0300

    wifi: rtw89: avoid circular locking dependency in ser_state_run()
    
    [ Upstream commit 570f94511766f9236d3462dfb8a3c719c2b54c23 ]
    
    Lockdep gives a splat [1] when ser_hdl_work item is executed.  It is
    scheduled at mac80211 workqueue via ieee80211_queue_work() and takes a
    wiphy lock inside.  However, this workqueue can be flushed when e.g.
    closing the interface and wiphy lock is already taken in that case.
    
    Choosing wiphy_work_queue() for SER is likely not suitable.  Back on to
    the global workqueue.
    
    [1]:
    
     WARNING: possible circular locking dependency detected
     6.17.0-rc2 #17 Not tainted
     ------------------------------------------------------
     kworker/u32:1/61 is trying to acquire lock:
     ffff88811bc00768 (&rdev->wiphy.mtx){+.+.}-{4:4}, at: ser_state_run+0x5e/0x180 [rtw89_core]
    
     but task is already holding lock:
     ffffc9000048fd30 ((work_completion)(&ser->ser_hdl_work)){+.+.}-{0:0}, at: process_one_work+0x7b5/0x1450
    
     which lock already depends on the new lock.
    
     the existing dependency chain (in reverse order) is:
    
     -> #2 ((work_completion)(&ser->ser_hdl_work)){+.+.}-{0:0}:
            process_one_work+0x7c6/0x1450
            worker_thread+0x49e/0xd00
            kthread+0x313/0x640
            ret_from_fork+0x221/0x300
            ret_from_fork_asm+0x1a/0x30
    
     -> #1 ((wq_completion)phy0){+.+.}-{0:0}:
            touch_wq_lockdep_map+0x8e/0x180
            __flush_workqueue+0x129/0x10d0
            ieee80211_stop_device+0xa8/0x110
            ieee80211_do_stop+0x14ce/0x2880
            ieee80211_stop+0x13a/0x2c0
            __dev_close_many+0x18f/0x510
            __dev_change_flags+0x25f/0x670
            netif_change_flags+0x7b/0x160
            do_setlink.isra.0+0x1640/0x35d0
            rtnl_newlink+0xd8c/0x1d30
            rtnetlink_rcv_msg+0x700/0xb80
            netlink_rcv_skb+0x11d/0x350
            netlink_unicast+0x49a/0x7a0
            netlink_sendmsg+0x759/0xc20
            ____sys_sendmsg+0x812/0xa00
            ___sys_sendmsg+0xf7/0x180
            __sys_sendmsg+0x11f/0x1b0
            do_syscall_64+0xbb/0x360
            entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
     -> #0 (&rdev->wiphy.mtx){+.+.}-{4:4}:
            __lock_acquire+0x124c/0x1d20
            lock_acquire+0x154/0x2e0
            __mutex_lock+0x17b/0x12f0
            ser_state_run+0x5e/0x180 [rtw89_core]
            rtw89_ser_hdl_work+0x119/0x220 [rtw89_core]
            process_one_work+0x82d/0x1450
            worker_thread+0x49e/0xd00
            kthread+0x313/0x640
            ret_from_fork+0x221/0x300
            ret_from_fork_asm+0x1a/0x30
    
     other info that might help us debug this:
    
     Chain exists of:
       &rdev->wiphy.mtx --> (wq_completion)phy0 --> (work_completion)(&ser->ser_hdl_work)
    
      Possible unsafe locking scenario:
    
            CPU0                    CPU1
            ----                    ----
       lock((work_completion)(&ser->ser_hdl_work));
                                    lock((wq_completion)phy0);
                                    lock((work_completion)(&ser->ser_hdl_work));
       lock(&rdev->wiphy.mtx);
    
      *** DEADLOCK ***
    
     2 locks held by kworker/u32:1/61:
      #0: ffff888103835148 ((wq_completion)phy0){+.+.}-{0:0}, at: process_one_work+0xefa/0x1450
      #1: ffffc9000048fd30 ((work_completion)(&ser->ser_hdl_work)){+.+.}-{0:0}, at: process_one_work+0x7b5/0x1450
    
     stack backtrace:
     CPU: 0 UID: 0 PID: 61 Comm: kworker/u32:1 Not tainted 6.17.0-rc2 #17 PREEMPT(voluntary)
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS edk2-20250523-14.fc42 05/23/2025
     Workqueue: phy0 rtw89_ser_hdl_work [rtw89_core]
     Call Trace:
      <TASK>
      dump_stack_lvl+0x5d/0x80
      print_circular_bug.cold+0x178/0x1be
      check_noncircular+0x14c/0x170
      __lock_acquire+0x124c/0x1d20
      lock_acquire+0x154/0x2e0
      __mutex_lock+0x17b/0x12f0
      ser_state_run+0x5e/0x180 [rtw89_core]
      rtw89_ser_hdl_work+0x119/0x220 [rtw89_core]
      process_one_work+0x82d/0x1450
      worker_thread+0x49e/0xd00
      kthread+0x313/0x640
      ret_from_fork+0x221/0x300
      ret_from_fork_asm+0x1a/0x30
      </TASK>
    
    Found by Linux Verification Center (linuxtesting.org).
    
    Fixes: ebfc9199df05 ("wifi: rtw89: add wiphy_lock() to work that isn't held wiphy_lock() yet")
    Signed-off-by: Fedor Pchelkin <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/vdso: Fix output operand size of RDPID [+ + +]
Author: Uros Bizjak <[email protected]>
Date:   Mon Jun 16 11:52:57 2025 +0200

    x86/vdso: Fix output operand size of RDPID
    
    [ Upstream commit ac9c408ed19d535289ca59200dd6a44a6a2d6036 ]
    
    RDPID instruction outputs to a word-sized register (64-bit on x86_64 and
    32-bit on x86_32). Use an unsigned long variable to store the correct size.
    
    LSL outputs to 32-bit register, use %k operand prefix to always print the
    32-bit name of the register.
    
    Use RDPID insn mnemonic while at it as the minimum binutils version of
    2.30 supports it.
    
      [ bp: Merge two patches touching the same function into a single one. ]
    
    Fixes: ffebbaedc861 ("x86/vdso: Introduce helper functions for CPU and node number")
    Signed-off-by: Uros Bizjak <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>