Changelog in Linux kernel 5.4.295

 
ACPI: battery: negate current when discharging [+ + +]
Author: Peter Marheine <pmarheine@chromium.org>
Date:   Thu May 8 12:41:45 2025 +1000

    ACPI: battery: negate current when discharging
    
    [ Upstream commit 234f71555019d308c6bc6f98c78c5551cb8cd56a ]
    
    The ACPI specification requires that battery rate is always positive,
    but the kernel ABI for POWER_SUPPLY_PROP_CURRENT_NOW
    (Documentation/ABI/testing/sysfs-class-power) specifies that it should
    be negative when a battery is discharging. When reporting CURRENT_NOW,
    massage the value to match the documented ABI.
    
    This only changes the sign of `current_now` and not `power_now` because
    documentation doesn't describe any particular meaning for `power_now` so
    leaving `power_now` unchanged is less likely to confuse userspace
    unnecessarily, whereas becoming consistent with the documented ABI is
    worth potentially confusing clients that read `current_now`.
    
    Signed-off-by: Peter Marheine <pmarheine@chromium.org>
    Link: https://patch.msgid.link/20250508024146.1436129-1-pmarheine@chromium.org
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPI: OSI: Stop advertising support for "3.0 _SCP Extensions" [+ + +]
Author: Armin Wolf <W_Armin@gmx.de>
Date:   Thu Apr 10 18:54:54 2025 +0200

    ACPI: OSI: Stop advertising support for "3.0 _SCP Extensions"
    
    [ Upstream commit 8cf4fdac9bdead7bca15fc56fdecdf78d11c3ec6 ]
    
    As specified in section 5.7.2 of the ACPI specification the feature
    group string "3.0 _SCP Extensions" implies that the operating system
    evaluates the _SCP control method with additional parameters.
    
    However the ACPI thermal driver evaluates the _SCP control method
    without those additional parameters, conflicting with the above
    feature group string advertised to the firmware thru _OSI.
    
    Stop advertising support for this feature string to avoid confusing
    the ACPI firmware.
    
    Fixes: e5f660ebef68 ("ACPI / osi: Collect _OSI handling into one single file")
    Signed-off-by: Armin Wolf <W_Armin@gmx.de>
    Link: https://patch.msgid.link/20250410165456.4173-2-W_Armin@gmx.de
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ACPICA: Avoid sequence overread in call to strncmp() [+ + +]
Author: Ahmed Salem <x0rw3ll@gmail.com>
Date:   Fri Apr 25 21:30:27 2025 +0200

    ACPICA: Avoid sequence overread in call to strncmp()
    
    [ Upstream commit 64b9dfd0776e9c38d733094859a09f13282ce6f8 ]
    
    ACPICA commit 8b83a8d88dfec59ea147fad35fc6deea8859c58c
    
    ap_get_table_length() checks if tables are valid by
    calling ap_is_valid_header(). The latter then calls
    ACPI_VALIDATE_RSDP_SIG(Table->Signature).
    
    ap_is_valid_header() accepts struct acpi_table_header as an argument, so
    the signature size is always fixed to 4 bytes.
    
    The problem is when the string comparison is between ACPI-defined table
    signature and ACPI_SIG_RSDP. Common ACPI table header specifies the
    Signature field to be 4 bytes long[1], with the exception of the RSDP
    structure whose signature is 8 bytes long "RSD PTR " (including the
    trailing blank character)[2]. Calling strncmp(sig, rsdp_sig, 8) would
    then result in a sequence overread[3] as sig would be smaller (4 bytes)
    than the specified bound (8 bytes).
    
    As a workaround, pass the bound conditionally based on the size of the
    signature being passed.
    
    Link: https://uefi.org/specs/ACPI/6.5_A/05_ACPI_Software_Programming_Model.html#system-description-table-header [1]
    Link: https://uefi.org/specs/ACPI/6.5_A/05_ACPI_Software_Programming_Model.html#root-system-description-pointer-rsdp-structure [2]
    Link: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wstringop-overread [3]
    Link: https://github.com/acpica/acpica/commit/8b83a8d8
    Signed-off-by: Ahmed Salem <x0rw3ll@gmail.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Link: https://patch.msgid.link/2248233.Mh6RI2rZIc@rjwysocki.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPICA: fix acpi operand cache leak in dswstate.c [+ + +]
Author: Seunghun Han <kkamagui@gmail.com>
Date:   Wed Mar 26 21:05:24 2025 +0100

    ACPICA: fix acpi operand cache leak in dswstate.c
    
    [ Upstream commit 156fd20a41e776bbf334bd5e45c4f78dfc90ce1c ]
    
    ACPICA commit 987a3b5cf7175916e2a4b6ea5b8e70f830dfe732
    
    I found an ACPI cache leak in ACPI early termination and boot continuing case.
    
    When early termination occurs due to malicious ACPI table, Linux kernel
    terminates ACPI function and continues to boot process. While kernel terminates
    ACPI function, kmem_cache_destroy() reports Acpi-Operand cache leak.
    
    Boot log of ACPI operand cache leak is as follows:
    >[    0.585957] ACPI: Added _OSI(Module Device)
    >[    0.587218] ACPI: Added _OSI(Processor Device)
    >[    0.588530] ACPI: Added _OSI(3.0 _SCP Extensions)
    >[    0.589790] ACPI: Added _OSI(Processor Aggregator Device)
    >[    0.591534] ACPI Error: Illegal I/O port address/length above 64K: C806E00000004002/0x2 (20170303/hwvalid-155)
    >[    0.594351] ACPI Exception: AE_LIMIT, Unable to initialize fixed events (20170303/evevent-88)
    >[    0.597858] ACPI: Unable to start the ACPI Interpreter
    >[    0.599162] ACPI Error: Could not remove SCI handler (20170303/evmisc-281)
    >[    0.601836] kmem_cache_destroy Acpi-Operand: Slab cache still has objects
    >[    0.603556] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.12.0-rc5 #26
    >[    0.605159] Hardware name: innotek gmb_h virtual_box/virtual_box, BIOS virtual_box 12/01/2006
    >[    0.609177] Call Trace:
    >[    0.610063]  ? dump_stack+0x5c/0x81
    >[    0.611118]  ? kmem_cache_destroy+0x1aa/0x1c0
    >[    0.612632]  ? acpi_sleep_proc_init+0x27/0x27
    >[    0.613906]  ? acpi_os_delete_cache+0xa/0x10
    >[    0.617986]  ? acpi_ut_delete_caches+0x3f/0x7b
    >[    0.619293]  ? acpi_terminate+0xa/0x14
    >[    0.620394]  ? acpi_init+0x2af/0x34f
    >[    0.621616]  ? __class_create+0x4c/0x80
    >[    0.623412]  ? video_setup+0x7f/0x7f
    >[    0.624585]  ? acpi_sleep_proc_init+0x27/0x27
    >[    0.625861]  ? do_one_initcall+0x4e/0x1a0
    >[    0.627513]  ? kernel_init_freeable+0x19e/0x21f
    >[    0.628972]  ? rest_init+0x80/0x80
    >[    0.630043]  ? kernel_init+0xa/0x100
    >[    0.631084]  ? ret_from_fork+0x25/0x30
    >[    0.633343] vgaarb: loaded
    >[    0.635036] EDAC MC: Ver: 3.0.0
    >[    0.638601] PCI: Probing PCI hardware
    >[    0.639833] PCI host bridge to bus 0000:00
    >[    0.641031] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
    > ... Continue to boot and log is omitted ...
    
    I analyzed this memory leak in detail and found acpi_ds_obj_stack_pop_and_
    delete() function miscalculated the top of the stack. acpi_ds_obj_stack_push()
    function uses walk_state->operand_index for start position of the top, but
    acpi_ds_obj_stack_pop_and_delete() function considers index 0 for it.
    Therefore, this causes acpi operand memory leak.
    
    This cache leak causes a security threat because an old kernel (<= 4.9) shows
    memory locations of kernel functions in stack dump. Some malicious users
    could use this information to neutralize kernel ASLR.
    
    I made a patch to fix ACPI operand cache leak.
    
    Link: https://github.com/acpica/acpica/commit/987a3b5c
    Signed-off-by: Seunghun Han <kkamagui@gmail.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Link: https://patch.msgid.link/4999480.31r3eYUQgx@rjwysocki.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPICA: fix acpi parse and parseext cache leaks [+ + +]
Author: Seunghun Han <kkamagui@gmail.com>
Date:   Wed Mar 26 21:06:21 2025 +0100

    ACPICA: fix acpi parse and parseext cache leaks
    
    [ Upstream commit bed18f0bdcd6737a938264a59d67923688696fc4 ]
    
    ACPICA commit 8829e70e1360c81e7a5a901b5d4f48330e021ea5
    
    I'm Seunghun Han, and I work for National Security Research Institute of
    South Korea.
    
    I have been doing a research on ACPI and found an ACPI cache leak in ACPI
    early abort cases.
    
    Boot log of ACPI cache leak is as follows:
    [    0.352414] ACPI: Added _OSI(Module Device)
    [    0.353182] ACPI: Added _OSI(Processor Device)
    [    0.353182] ACPI: Added _OSI(3.0 _SCP Extensions)
    [    0.353182] ACPI: Added _OSI(Processor Aggregator Device)
    [    0.356028] ACPI: Unable to start the ACPI Interpreter
    [    0.356799] ACPI Error: Could not remove SCI handler (20170303/evmisc-281)
    [    0.360215] kmem_cache_destroy Acpi-State: Slab cache still has objects
    [    0.360648] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W
    4.12.0-rc4-next-20170608+ #10
    [    0.361273] Hardware name: innotek gmb_h virtual_box/virtual_box, BIOS
    virtual_box 12/01/2006
    [    0.361873] Call Trace:
    [    0.362243]  ? dump_stack+0x5c/0x81
    [    0.362591]  ? kmem_cache_destroy+0x1aa/0x1c0
    [    0.362944]  ? acpi_sleep_proc_init+0x27/0x27
    [    0.363296]  ? acpi_os_delete_cache+0xa/0x10
    [    0.363646]  ? acpi_ut_delete_caches+0x6d/0x7b
    [    0.364000]  ? acpi_terminate+0xa/0x14
    [    0.364000]  ? acpi_init+0x2af/0x34f
    [    0.364000]  ? __class_create+0x4c/0x80
    [    0.364000]  ? video_setup+0x7f/0x7f
    [    0.364000]  ? acpi_sleep_proc_init+0x27/0x27
    [    0.364000]  ? do_one_initcall+0x4e/0x1a0
    [    0.364000]  ? kernel_init_freeable+0x189/0x20a
    [    0.364000]  ? rest_init+0xc0/0xc0
    [    0.364000]  ? kernel_init+0xa/0x100
    [    0.364000]  ? ret_from_fork+0x25/0x30
    
    I analyzed this memory leak in detail. I found that “Acpi-State” cache and
    “Acpi-Parse” cache were merged because the size of cache objects was same
    slab cache size.
    
    I finally found “Acpi-Parse” cache and “Acpi-parse_ext” cache were leaked
    using SLAB_NEVER_MERGE flag in kmem_cache_create() function.
    
    Real ACPI cache leak point is as follows:
    [    0.360101] ACPI: Added _OSI(Module Device)
    [    0.360101] ACPI: Added _OSI(Processor Device)
    [    0.360101] ACPI: Added _OSI(3.0 _SCP Extensions)
    [    0.361043] ACPI: Added _OSI(Processor Aggregator Device)
    [    0.364016] ACPI: Unable to start the ACPI Interpreter
    [    0.365061] ACPI Error: Could not remove SCI handler (20170303/evmisc-281)
    [    0.368174] kmem_cache_destroy Acpi-Parse: Slab cache still has objects
    [    0.369332] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W
    4.12.0-rc4-next-20170608+ #8
    [    0.371256] Hardware name: innotek gmb_h virtual_box/virtual_box, BIOS
    virtual_box 12/01/2006
    [    0.372000] Call Trace:
    [    0.372000]  ? dump_stack+0x5c/0x81
    [    0.372000]  ? kmem_cache_destroy+0x1aa/0x1c0
    [    0.372000]  ? acpi_sleep_proc_init+0x27/0x27
    [    0.372000]  ? acpi_os_delete_cache+0xa/0x10
    [    0.372000]  ? acpi_ut_delete_caches+0x56/0x7b
    [    0.372000]  ? acpi_terminate+0xa/0x14
    [    0.372000]  ? acpi_init+0x2af/0x34f
    [    0.372000]  ? __class_create+0x4c/0x80
    [    0.372000]  ? video_setup+0x7f/0x7f
    [    0.372000]  ? acpi_sleep_proc_init+0x27/0x27
    [    0.372000]  ? do_one_initcall+0x4e/0x1a0
    [    0.372000]  ? kernel_init_freeable+0x189/0x20a
    [    0.372000]  ? rest_init+0xc0/0xc0
    [    0.372000]  ? kernel_init+0xa/0x100
    [    0.372000]  ? ret_from_fork+0x25/0x30
    [    0.388039] kmem_cache_destroy Acpi-parse_ext: Slab cache still has objects
    [    0.389063] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W
    4.12.0-rc4-next-20170608+ #8
    [    0.390557] Hardware name: innotek gmb_h virtual_box/virtual_box, BIOS
    virtual_box 12/01/2006
    [    0.392000] Call Trace:
    [    0.392000]  ? dump_stack+0x5c/0x81
    [    0.392000]  ? kmem_cache_destroy+0x1aa/0x1c0
    [    0.392000]  ? acpi_sleep_proc_init+0x27/0x27
    [    0.392000]  ? acpi_os_delete_cache+0xa/0x10
    [    0.392000]  ? acpi_ut_delete_caches+0x6d/0x7b
    [    0.392000]  ? acpi_terminate+0xa/0x14
    [    0.392000]  ? acpi_init+0x2af/0x34f
    [    0.392000]  ? __class_create+0x4c/0x80
    [    0.392000]  ? video_setup+0x7f/0x7f
    [    0.392000]  ? acpi_sleep_proc_init+0x27/0x27
    [    0.392000]  ? do_one_initcall+0x4e/0x1a0
    [    0.392000]  ? kernel_init_freeable+0x189/0x20a
    [    0.392000]  ? rest_init+0xc0/0xc0
    [    0.392000]  ? kernel_init+0xa/0x100
    [    0.392000]  ? ret_from_fork+0x25/0x30
    
    When early abort is occurred due to invalid ACPI information, Linux kernel
    terminates ACPI by calling acpi_terminate() function. The function calls
    acpi_ut_delete_caches() function to delete local caches (acpi_gbl_namespace_
    cache, state_cache, operand_cache, ps_node_cache, ps_node_ext_cache).
    
    But the deletion codes in acpi_ut_delete_caches() function only delete
    slab caches using kmem_cache_destroy() function, therefore the cache
    objects should be flushed before acpi_ut_delete_caches() function.
    
    "Acpi-Parse" cache and "Acpi-ParseExt" cache are used in an AML parse
    function, acpi_ps_parse_loop(). The function should complete all ops
    using acpi_ps_complete_final_op() when an error occurs due to invalid
    AML codes.
    However, the current implementation of acpi_ps_complete_final_op() does not
    complete all ops when it meets some errors and this cause cache leak.
    
    This cache leak has a security threat because an old kernel (<= 4.9) shows
    memory locations of kernel functions in stack dump. Some malicious users
    could use this information to neutralize kernel ASLR.
    
    To fix ACPI cache leak for enhancing security, I made a patch to complete all
    ops unconditionally for acpi_ps_complete_final_op() function.
    
    I hope that this patch improves the security of Linux kernel.
    
    Thank you.
    
    Link: https://github.com/acpica/acpica/commit/8829e70e
    Signed-off-by: Seunghun Han <kkamagui@gmail.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Link: https://patch.msgid.link/2363774.ElGaqSPkdT@rjwysocki.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ALSA: hda/intel: Add Thinkpad E15 to PM deny list [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Jun 8 11:14:14 2025 +0200

    ALSA: hda/intel: Add Thinkpad E15 to PM deny list
    
    commit c987a390f1b3b8bdac11031d7004e3410fe259bd upstream.
    
    Lenovo Thinkpad E15 with Conexant CX8070 codec seems causing ugly
    noises after runtime-PM suspend.  Disable the codec runtime PM as a
    workaround.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=220210
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250608091415.21170-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: enable headset mic on Latitude 5420 Rugged [+ + +]
Author: Jonathan Lane <jon@borg.moe>
Date:   Wed Jun 11 12:31:25 2025 -0700

    ALSA: hda/realtek: enable headset mic on Latitude 5420 Rugged
    
    commit efa6bdf1bc75e26cafaa5f1d775e8bb7c5b0c431 upstream.
    
    Like many Dell laptops, the 3.5mm port by default can not detect a
    combined headphones+mic headset or even a pure microphone.  This
    change enables the port's functionality.
    
    Signed-off-by: Jonathan Lane <jon@borg.moe>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250611193124.26141-2-jon@borg.moe
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
aoe: clean device rq_list in aoedev_downdev() [+ + +]
Author: Justin Sanders <jsanders.devel@gmail.com>
Date:   Tue Jun 10 17:05:59 2025 +0000

    aoe: clean device rq_list in aoedev_downdev()
    
    [ Upstream commit 7f90d45e57cb2ef1f0adcaf925ddffdfc5e680ca ]
    
    An aoe device's rq_list contains accepted block requests that are
    waiting to be transmitted to the aoe target. This queue was added as
    part of the conversion to blk_mq. However, the queue was not cleaned out
    when an aoe device is downed which caused blk_mq_freeze_queue() to sleep
    indefinitely waiting for those requests to complete, causing a hang. This
    fix cleans out the queue before calling blk_mq_freeze_queue().
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=212665
    Fixes: 3582dd291788 ("aoe: convert aoeblk to blk-mq")
    Signed-off-by: Justin Sanders <jsanders.devel@gmail.com>
    Link: https://lore.kernel.org/r/20250610170600.869-1-jsanders.devel@gmail.com
    Tested-By: Valentin Kleibel <valentin@vrvis.at>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
arm64/ptrace: Fix stack-out-of-bounds read in regs_get_kernel_stack_nth() [+ + +]
Author: Tengda Wu <wutengda@huaweicloud.com>
Date:   Wed Jun 4 00:55:33 2025 +0000

    arm64/ptrace: Fix stack-out-of-bounds read in regs_get_kernel_stack_nth()
    
    [ Upstream commit 39dfc971e42d886e7df01371cd1bef505076d84c ]
    
    KASAN reports a stack-out-of-bounds read in regs_get_kernel_stack_nth().
    
    Call Trace:
    [   97.283505] BUG: KASAN: stack-out-of-bounds in regs_get_kernel_stack_nth+0xa8/0xc8
    [   97.284677] Read of size 8 at addr ffff800089277c10 by task 1.sh/2550
    [   97.285732]
    [   97.286067] CPU: 7 PID: 2550 Comm: 1.sh Not tainted 6.6.0+ #11
    [   97.287032] Hardware name: linux,dummy-virt (DT)
    [   97.287815] Call trace:
    [   97.288279]  dump_backtrace+0xa0/0x128
    [   97.288946]  show_stack+0x20/0x38
    [   97.289551]  dump_stack_lvl+0x78/0xc8
    [   97.290203]  print_address_description.constprop.0+0x84/0x3c8
    [   97.291159]  print_report+0xb0/0x280
    [   97.291792]  kasan_report+0x84/0xd0
    [   97.292421]  __asan_load8+0x9c/0xc0
    [   97.293042]  regs_get_kernel_stack_nth+0xa8/0xc8
    [   97.293835]  process_fetch_insn+0x770/0xa30
    [   97.294562]  kprobe_trace_func+0x254/0x3b0
    [   97.295271]  kprobe_dispatcher+0x98/0xe0
    [   97.295955]  kprobe_breakpoint_handler+0x1b0/0x210
    [   97.296774]  call_break_hook+0xc4/0x100
    [   97.297451]  brk_handler+0x24/0x78
    [   97.298073]  do_debug_exception+0xac/0x178
    [   97.298785]  el1_dbg+0x70/0x90
    [   97.299344]  el1h_64_sync_handler+0xcc/0xe8
    [   97.300066]  el1h_64_sync+0x78/0x80
    [   97.300699]  kernel_clone+0x0/0x500
    [   97.301331]  __arm64_sys_clone+0x70/0x90
    [   97.302084]  invoke_syscall+0x68/0x198
    [   97.302746]  el0_svc_common.constprop.0+0x11c/0x150
    [   97.303569]  do_el0_svc+0x38/0x50
    [   97.304164]  el0_svc+0x44/0x1d8
    [   97.304749]  el0t_64_sync_handler+0x100/0x130
    [   97.305500]  el0t_64_sync+0x188/0x190
    [   97.306151]
    [   97.306475] The buggy address belongs to stack of task 1.sh/2550
    [   97.307461]  and is located at offset 0 in frame:
    [   97.308257]  __se_sys_clone+0x0/0x138
    [   97.308910]
    [   97.309241] This frame has 1 object:
    [   97.309873]  [48, 184) 'args'
    [   97.309876]
    [   97.310749] The buggy address belongs to the virtual mapping at
    [   97.310749]  [ffff800089270000, ffff800089279000) created by:
    [   97.310749]  dup_task_struct+0xc0/0x2e8
    [   97.313347]
    [   97.313674] The buggy address belongs to the physical page:
    [   97.314604] page: refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x14f69a
    [   97.315885] flags: 0x15ffffe00000000(node=1|zone=2|lastcpupid=0xfffff)
    [   97.316957] raw: 015ffffe00000000 0000000000000000 dead000000000122 0000000000000000
    [   97.318207] raw: 0000000000000000 0000000000000000 00000001ffffffff 0000000000000000
    [   97.319445] page dumped because: kasan: bad access detected
    [   97.320371]
    [   97.320694] Memory state around the buggy address:
    [   97.321511]  ffff800089277b00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   97.322681]  ffff800089277b80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   97.323846] >ffff800089277c00: 00 00 f1 f1 f1 f1 f1 f1 00 00 00 00 00 00 00 00
    [   97.325023]                          ^
    [   97.325683]  ffff800089277c80: 00 00 00 00 00 00 00 00 00 f3 f3 f3 f3 f3 f3 f3
    [   97.326856]  ffff800089277d00: f3 f3 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    
    This issue seems to be related to the behavior of some gcc compilers and
    was also fixed on the s390 architecture before:
    
     commit d93a855c31b7 ("s390/ptrace: Avoid KASAN false positives in regs_get_kernel_stack_nth()")
    
    As described in that commit, regs_get_kernel_stack_nth() has confirmed that
    `addr` is on the stack, so reading the value at `*addr` should be allowed.
    Use READ_ONCE_NOCHECK() helper to silence the KASAN check for this case.
    
    Fixes: 0a8ea52c3eb1 ("arm64: Add HAVE_REGS_AND_STACK_ACCESS_API feature")
    Signed-off-by: Tengda Wu <wutengda@huaweicloud.com>
    Link: https://lore.kernel.org/r/20250604005533.1278992-1-wutengda@huaweicloud.com
    [will: Use '*addr' as the argument to READ_ONCE_NOCHECK()]
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
arm64: dts: rockchip: disable unrouted USB controllers and PHY on RK3399 Puma with Haikou [+ + +]
Author: Quentin Schulz <quentin.schulz@cherry.de>
Date:   Fri Apr 25 17:18:10 2025 +0200

    arm64: dts: rockchip: disable unrouted USB controllers and PHY on RK3399 Puma with Haikou
    
    [ Upstream commit febd8c6ab52c683b447fe22fc740918c86feae43 ]
    
    The u2phy0_host port is the part of the USB PHY0 (namely the
    HOST0_DP/DM lanes) which routes directly to the USB2.0 HOST
    controller[1]. The other lanes of the PHY are routed to the USB3.0 OTG
    controller (dwc3), which we do use.
    
    The HOST0_DP/DM lanes aren't routed on RK3399 Puma so let's simply
    disable the USB2.0 controllers.
    
    USB3 OTG has been known to be unstable on RK3399 Puma Haikou for a
    while, one of the recurring issues being that only USB2 is detected and
    not USB3 in host mode. Reading the justification above and seeing that
    we are keeping u2phy0_host in the Haikou carrierboard DTS probably may
    have bothered you since it should be changed to u2phy0_otg. The issue is
    that if it's switched to that, USB OTG on Haikou is entirely broken. I
    have checked the routing in the Gerber file, the lanes are going to the
    expected ball pins (that is, NOT HOST0_DP/DM).
    u2phy0_host is for sure the wrong part of the PHY to use, but it's the
    only one that works at the moment for that board so keep it until we
    figure out what exactly is broken.
    
    No intended functional change.
    
    [1] https://rockchip.fr/Rockchip%20RK3399%20TRM%20V1.3%20Part2.pdf
        Chapter 2 USB2.0 PHY
    
    Fixes: 2c66fc34e945 ("arm64: dts: rockchip: add RK3399-Q7 (Puma) SoM")
    Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
    Signed-off-by: Lukasz Czechowski <lukasz.czechowski@thaumatec.com>
    Link: https://lore.kernel.org/r/20250425-onboard_usb_dev-v2-5-4a76a474a010@thaumatec.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ARM: 9447/1: arm/memremap: fix arch_memremap_can_ram_remap() [+ + +]
Author: Ross Stutterheim <ross.stutterheim@garmin.com>
Date:   Wed Apr 16 14:50:06 2025 +0100

    ARM: 9447/1: arm/memremap: fix arch_memremap_can_ram_remap()
    
    commit 96e0b355883006554a0bee3697da475971d6bba8 upstream.
    
    arm/memremap: fix arch_memremap_can_ram_remap()
    
    commit 260364d112bc ("arm[64]/memremap: don't abuse pfn_valid() to ensure
    presence of linear map") added the definition of
    arch_memremap_can_ram_remap() for arm[64] specific filtering of what pages
    can be used from the linear mapping. memblock_is_map_memory() was called
    with the pfn of the address given to arch_memremap_can_ram_remap();
    however, memblock_is_map_memory() expects to be given an address for arm,
    not a pfn.
    
    This results in calls to memremap() returning a newly mapped area when
    it should return an address in the existing linear mapping.
    
    Fix this by removing the address to pfn translation and pass the
    address directly.
    
    Fixes: 260364d112bc ("arm[64]/memremap: don't abuse pfn_valid() to ensure presence of linear map")
    Signed-off-by: Ross Stutterheim <ross.stutterheim@garmin.com>
    Cc: Mike Rapoport <rppt@kernel.org>
    Cc: stable@vger.kernel.org
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ARM: dts: am335x-bone-common: Add GPIO PHY reset on revision C3 board [+ + +]
Author: Shengyu Qu <wiagn233@outlook.com>
Date:   Sun Aug 6 16:50:44 2023 +0800

    ARM: dts: am335x-bone-common: Add GPIO PHY reset on revision C3 board
    
    commit 623cef652768860bd5f205fb7b741be278585fba upstream.
    
    This patch adds ethernet PHY reset GPIO config for Beaglebone Black
    series boards with revision C3. This fixes a random phy startup failure
    bug discussed at [1]. The GPIO pin used for reset is not used on older
    revisions, so it is ok to apply to all board revisions. The reset timing
    was discussed and tested at [2].
    
    [1] https://forum.digikey.com/t/ethernet-device-is-not-detecting-on-ubuntu-20-04-lts-on-bbg/19948
    [2] https://forum.beagleboard.org/t/recognizing-a-beaglebone-black-rev-c3-board/31249/
    
    Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
    Signed-off-by: Shengyu Qu <wiagn233@outlook.com>
    Message-ID: <TY3P286MB26113797A3B2EC7E0348BBB2980FA@TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Nobuhiro Iwamatsu (CIP) <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ARM: dts: am335x-bone-common: Increase MDIO reset deassert delay to 50ms [+ + +]
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Thu Oct 31 10:29:51 2024 +0100

    ARM: dts: am335x-bone-common: Increase MDIO reset deassert delay to 50ms
    
    commit 929d8490f8790164f5f63671c1c58d6c50411cb2 upstream.
    
    Commit b9bf5612610aa7e3 ("ARM: dts: am335x-bone-common: Increase MDIO
    reset deassert time") already increased the MDIO reset deassert delay
    from 6.5 to 13 ms, but this may still cause Ethernet PHY probe failures:
    
        SMSC LAN8710/LAN8720 4a101000.mdio:00: probe with driver SMSC LAN8710/LAN8720 failed with error -5
    
    On BeagleBone Black Rev. C3, ETH_RESETn is controlled by an open-drain
    AND gate.  It is pulled high by a 10K resistor, and has a 4.7µF
    capacitor to ground, giving an RC time constant of 47ms.  As it takes
    0.7RC to charge the capacitor above the threshold voltage of a CMOS
    input (VDD/2), the delay should be at least 33ms.  Considering the
    typical tolerance of 20% on capacitors, 40ms would be safer.  Add an
    additional safety margin and settle for 50ms.
    
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Roger Quadros <rogerq@kernel.org>
    Link: https://lore.kernel.org/r/9002a58daa1b2983f39815b748ee9d2f8dcc4829.1730366936.git.geert+renesas@glider.be
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Nobuhiro Iwamatsu (CIP) <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ARM: dts: am335x-bone-common: Increase MDIO reset deassert time [+ + +]
Author: Colin Foster <colin.foster@in-advantage.com>
Date:   Fri May 31 13:38:17 2024 -0500

    ARM: dts: am335x-bone-common: Increase MDIO reset deassert time
    
    commit b9bf5612610aa7e38d58fee16f489814db251c01 upstream.
    
    Prior to commit df16c1c51d81 ("net: phy: mdio_device: Reset device only
    when necessary") MDIO reset deasserts were performed twice during boot.
    Now that the second deassert is no longer performed, device probe
    failures happen due to the change in timing with the following error
    message:
    
    SMSC LAN8710/LAN8720: probe of 4a101000.mdio:00 failed with error -5
    
    Restore the original effective timing, which resolves the probe
    failures.
    
    Signed-off-by: Colin Foster <colin.foster@in-advantage.com>
    Link: https://lore.kernel.org/r/20240531183817.2698445-1-colin.foster@in-advantage.com
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Nobuhiro Iwamatsu (CIP) <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ARM: dts: at91: at91sam9263: fix NAND chip selects [+ + +]
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Wed Apr 2 23:04:46 2025 +0200

    ARM: dts: at91: at91sam9263: fix NAND chip selects
    
    [ Upstream commit c72ede1c24be689733bcd2233a3a56f2478429c8 ]
    
    NAND did not work on my USB-A9263. I discovered that the offending
    commit converted the PIO bank for chip selects wrongly, so all A9263
    boards need to be fixed.
    
    Fixes: 1004a2977bdc ("ARM: dts: at91: Switch to the new NAND bindings")
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Link: https://lore.kernel.org/r/20250402210446.5972-2-wsa+renesas@sang-engineering.com
    Signed-off-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: at91: usb_a9263: fix GPIO for Dataflash chip select [+ + +]
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Fri Apr 4 13:27:43 2025 +0200

    ARM: dts: at91: usb_a9263: fix GPIO for Dataflash chip select
    
    [ Upstream commit 67ba341e57ab158423818ed33bfa1c40eb0e5e7e ]
    
    Dataflash did not work on my board. After checking schematics and using
    the proper GPIO, it works now. Also, make it active low to avoid:
    
    flash@0 enforce active low on GPIO handle
    
    Fixes: 2432d201468d ("ARM: at91: dt: usb-a9263: add dataflash support")
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Link: https://lore.kernel.org/r/20250404112742.67416-2-wsa+renesas@sang-engineering.com
    Signed-off-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: qcom: apq8064 merge hw splinlock into corresponding syscon device [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Date:   Tue Mar 18 15:22:00 2025 +0200

    ARM: dts: qcom: apq8064 merge hw splinlock into corresponding syscon device
    
    [ Upstream commit 325c6a441ae1f8fcb1db9bb945b8bdbd3142141e ]
    
    Follow up the expected way of describing the SFPB hwspinlock and merge
    hwspinlock node into corresponding syscon node, fixing several dt-schema
    warnings.
    
    Fixes: 24a9baf933dc ("ARM: dts: qcom: apq8064: Add hwmutex and SMEM nodes")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20250318-fix-nexus-4-v2-7-bcedd1406790@oss.qualcomm.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: OMAP2+: Fix l4ls clk domain handling in STANDBY [+ + +]
Author: Sukrut Bellary <sbellary@baylibre.com>
Date:   Tue Mar 18 16:00:39 2025 -0700

    ARM: OMAP2+: Fix l4ls clk domain handling in STANDBY
    
    [ Upstream commit 47fe74098f3dadba2f9cc1e507d813a4aa93f5f3 ]
    
    Don't put the l4ls clk domain to sleep in case of standby.
    Since CM3 PM FW[1](ti-v4.1.y) doesn't wake-up/enable the l4ls clk domain
    upon wake-up, CM3 PM FW fails to wake-up the MPU.
    
    [1] https://git.ti.com/cgit/processor-firmware/ti-amx3-cm3-pm-firmware/
    
    Signed-off-by: Sukrut Bellary <sbellary@baylibre.com>
    Tested-by: Judith Mendez <jm@ti.com>
    Link: https://lore.kernel.org/r/20250318230042.3138542-2-sbellary@baylibre.com
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ata: pata_via: Force PIO for ATAPI devices on VT6415/VT6330 [+ + +]
Author: Tasos Sahanidis <tasos@tasossah.com>
Date:   Mon May 19 11:49:45 2025 +0300

    ata: pata_via: Force PIO for ATAPI devices on VT6415/VT6330
    
    commit d29fc02caad7f94b62d56ee1b01c954f9c961ba7 upstream.
    
    The controller has a hardware bug that can hard hang the system when
    doing ATAPI DMAs without any trace of what happened. Depending on the
    device attached, it can also prevent the system from booting.
    
    In this case, the system hangs when reading the ATIP from optical media
    with cdrecord -vvv -atip on an _NEC DVD_RW ND-4571A 1-01 and an
    Optiarc DVD RW AD-7200A 1.06 attached to an ASRock 990FX Extreme 4,
    running at UDMA/33.
    
    The issue can be reproduced by running the same command with a cygwin
    build of cdrecord on WinXP, although it requires more attempts to cause
    it. The hang in that case is also resolved by forcing PIO. It doesn't
    appear that VIA has produced any drivers for that OS, thus no known
    workaround exists.
    
    HDDs attached to the controller do not suffer from any DMA issues.
    
    Cc: stable@vger.kernel.org
    Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/916677
    Signed-off-by: Tasos Sahanidis <tasos@tasossah.com>
    Link: https://lore.kernel.org/r/20250519085508.1398701-1-tasos@tasossah.com
    Signed-off-by: Niklas Cassel <cassel@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
atm: atmtcp: Free invalid length skb in atmtcp_c_send(). [+ + +]
Author: Kuniyuki Iwashima <kuniyu@google.com>
Date:   Mon Jun 16 11:21:14 2025 -0700

    atm: atmtcp: Free invalid length skb in atmtcp_c_send().
    
    [ Upstream commit 2f370ae1fb6317985f3497b1bb80d457508ca2f7 ]
    
    syzbot reported the splat below. [0]
    
    vcc_sendmsg() copies data passed from userspace to skb and passes
    it to vcc->dev->ops->send().
    
    atmtcp_c_send() accesses skb->data as struct atmtcp_hdr after
    checking if skb->len is 0, but it's not enough.
    
    Also, when skb->len == 0, skb and sk (vcc) were leaked because
    dev_kfree_skb() is not called and sk_wmem_alloc adjustment is missing
    to revert atm_account_tx() in vcc_sendmsg(), which is expected
    to be done in atm_pop_raw().
    
    Let's properly free skb with an invalid length in atmtcp_c_send().
    
    [0]:
    BUG: KMSAN: uninit-value in atmtcp_c_send+0x255/0xed0 drivers/atm/atmtcp.c:294
     atmtcp_c_send+0x255/0xed0 drivers/atm/atmtcp.c:294
     vcc_sendmsg+0xd7c/0xff0 net/atm/common.c:644
     sock_sendmsg_nosec net/socket.c:712 [inline]
     __sock_sendmsg+0x330/0x3d0 net/socket.c:727
     ____sys_sendmsg+0x7e0/0xd80 net/socket.c:2566
     ___sys_sendmsg+0x271/0x3b0 net/socket.c:2620
     __sys_sendmsg net/socket.c:2652 [inline]
     __do_sys_sendmsg net/socket.c:2657 [inline]
     __se_sys_sendmsg net/socket.c:2655 [inline]
     __x64_sys_sendmsg+0x211/0x3e0 net/socket.c:2655
     x64_sys_call+0x32fb/0x3db0 arch/x86/include/generated/asm/syscalls_64.h:47
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xd9/0x210 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Uninit was created at:
     slab_post_alloc_hook mm/slub.c:4154 [inline]
     slab_alloc_node mm/slub.c:4197 [inline]
     kmem_cache_alloc_node_noprof+0x818/0xf00 mm/slub.c:4249
     kmalloc_reserve+0x13c/0x4b0 net/core/skbuff.c:579
     __alloc_skb+0x347/0x7d0 net/core/skbuff.c:670
     alloc_skb include/linux/skbuff.h:1336 [inline]
     vcc_sendmsg+0xb40/0xff0 net/atm/common.c:628
     sock_sendmsg_nosec net/socket.c:712 [inline]
     __sock_sendmsg+0x330/0x3d0 net/socket.c:727
     ____sys_sendmsg+0x7e0/0xd80 net/socket.c:2566
     ___sys_sendmsg+0x271/0x3b0 net/socket.c:2620
     __sys_sendmsg net/socket.c:2652 [inline]
     __do_sys_sendmsg net/socket.c:2657 [inline]
     __se_sys_sendmsg net/socket.c:2655 [inline]
     __x64_sys_sendmsg+0x211/0x3e0 net/socket.c:2655
     x64_sys_call+0x32fb/0x3db0 arch/x86/include/generated/asm/syscalls_64.h:47
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xd9/0x210 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    CPU: 1 UID: 0 PID: 5798 Comm: syz-executor192 Not tainted 6.16.0-rc1-syzkaller-00010-g2c4a1f3fe03e #0 PREEMPT(undef)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: syzbot+1d3c235276f62963e93a@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=1d3c235276f62963e93a
    Tested-by: syzbot+1d3c235276f62963e93a@syzkaller.appspotmail.com
    Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
    Link: https://patch.msgid.link/20250616182147.963333-2-kuni1840@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

atm: Revert atm_account_tx() if copy_from_iter_full() fails. [+ + +]
Author: Kuniyuki Iwashima <kuniyu@google.com>
Date:   Mon Jun 16 11:21:15 2025 -0700

    atm: Revert atm_account_tx() if copy_from_iter_full() fails.
    
    commit 7851263998d4269125fd6cb3fdbfc7c6db853859 upstream.
    
    In vcc_sendmsg(), we account skb->truesize to sk->sk_wmem_alloc by
    atm_account_tx().
    
    It is expected to be reverted by atm_pop_raw() later called by
    vcc->dev->ops->send(vcc, skb).
    
    However, vcc_sendmsg() misses the same revert when copy_from_iter_full()
    fails, and then we will leak a socket.
    
    Let's factorise the revert part as atm_return_tx() and call it in
    the failure path.
    
    Note that the corresponding sk_wmem_alloc operation can be found in
    alloc_tx() as of the blamed commit.
    
      $ git blame -L:alloc_tx net/atm/common.c c55fa3cccbc2c~
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Simon Horman <horms@kernel.org>
    Closes: https://lore.kernel.org/netdev/20250614161959.GR414686@horms.kernel.org/
    Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
    Link: https://patch.msgid.link/20250616182147.963333-3-kuni1840@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Bluetooth: L2CAP: Fix not responding with L2CAP_CR_LE_ENCRYPTION [+ + +]
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date:   Wed May 28 14:53:11 2025 -0400

    Bluetooth: L2CAP: Fix not responding with L2CAP_CR_LE_ENCRYPTION
    
    [ Upstream commit 03dba9cea72f977e873e4e60e220fa596959dd8f ]
    
    Depending on the security set the response to L2CAP_LE_CONN_REQ shall be
    just L2CAP_CR_LE_ENCRYPTION if only encryption when BT_SECURITY_MEDIUM
    is selected since that means security mode 2 which doesn't require
    authentication which is something that is covered in the qualification
    test L2CAP/LE/CFC/BV-25-C.
    
    Link: https://github.com/bluez/bluez/issues/1270
    Fixes: 27e2d4c8d28b ("Bluetooth: Add basic LE L2CAP connect request receiving support")
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpf: Fix WARN() in get_bpf_raw_tp_regs [+ + +]
Author: Tao Chen <chen.dylane@linux.dev>
Date:   Tue May 13 12:27:47 2025 +0800

    bpf: Fix WARN() in get_bpf_raw_tp_regs
    
    [ Upstream commit 3880cdbed1c4607e378f58fa924c5d6df900d1d3 ]
    
    syzkaller reported an issue:
    
    WARNING: CPU: 3 PID: 5971 at kernel/trace/bpf_trace.c:1861 get_bpf_raw_tp_regs+0xa4/0x100 kernel/trace/bpf_trace.c:1861
    Modules linked in:
    CPU: 3 UID: 0 PID: 5971 Comm: syz-executor205 Not tainted 6.15.0-rc5-syzkaller-00038-g707df3375124 #0 PREEMPT(full)
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    RIP: 0010:get_bpf_raw_tp_regs+0xa4/0x100 kernel/trace/bpf_trace.c:1861
    RSP: 0018:ffffc90003636fa8 EFLAGS: 00010293
    RAX: 0000000000000000 RBX: 0000000000000003 RCX: ffffffff81c6bc4c
    RDX: ffff888032efc880 RSI: ffffffff81c6bc83 RDI: 0000000000000005
    RBP: ffff88806a730860 R08: 0000000000000005 R09: 0000000000000003
    R10: 0000000000000004 R11: 0000000000000000 R12: 0000000000000004
    R13: 0000000000000001 R14: ffffc90003637008 R15: 0000000000000900
    FS:  0000000000000000(0000) GS:ffff8880d6cdf000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f7baee09130 CR3: 0000000029f5a000 CR4: 0000000000352ef0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     ____bpf_get_stack_raw_tp kernel/trace/bpf_trace.c:1934 [inline]
     bpf_get_stack_raw_tp+0x24/0x160 kernel/trace/bpf_trace.c:1931
     bpf_prog_ec3b2eefa702d8d3+0x43/0x47
     bpf_dispatcher_nop_func include/linux/bpf.h:1316 [inline]
     __bpf_prog_run include/linux/filter.h:718 [inline]
     bpf_prog_run include/linux/filter.h:725 [inline]
     __bpf_trace_run kernel/trace/bpf_trace.c:2363 [inline]
     bpf_trace_run3+0x23f/0x5a0 kernel/trace/bpf_trace.c:2405
     __bpf_trace_mmap_lock_acquire_returned+0xfc/0x140 include/trace/events/mmap_lock.h:47
     __traceiter_mmap_lock_acquire_returned+0x79/0xc0 include/trace/events/mmap_lock.h:47
     __do_trace_mmap_lock_acquire_returned include/trace/events/mmap_lock.h:47 [inline]
     trace_mmap_lock_acquire_returned include/trace/events/mmap_lock.h:47 [inline]
     __mmap_lock_do_trace_acquire_returned+0x138/0x1f0 mm/mmap_lock.c:35
     __mmap_lock_trace_acquire_returned include/linux/mmap_lock.h:36 [inline]
     mmap_read_trylock include/linux/mmap_lock.h:204 [inline]
     stack_map_get_build_id_offset+0x535/0x6f0 kernel/bpf/stackmap.c:157
     __bpf_get_stack+0x307/0xa10 kernel/bpf/stackmap.c:483
     ____bpf_get_stack kernel/bpf/stackmap.c:499 [inline]
     bpf_get_stack+0x32/0x40 kernel/bpf/stackmap.c:496
     ____bpf_get_stack_raw_tp kernel/trace/bpf_trace.c:1941 [inline]
     bpf_get_stack_raw_tp+0x124/0x160 kernel/trace/bpf_trace.c:1931
     bpf_prog_ec3b2eefa702d8d3+0x43/0x47
    
    Tracepoint like trace_mmap_lock_acquire_returned may cause nested call
    as the corner case show above, which will be resolved with more general
    method in the future. As a result, WARN_ON_ONCE will be triggered. As
    Alexei suggested, remove the WARN_ON_ONCE first.
    
    Fixes: 9594dc3c7e71 ("bpf: fix nested bpf tracepoints with per-cpu data")
    Reported-by: syzbot+45b0c89a0fc7ae8dbadc@syzkaller.appspotmail.com
    Suggested-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Tao Chen <chen.dylane@linux.dev>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20250513042747.757042-1-chen.dylane@linux.dev
    
    Closes: https://lore.kernel.org/bpf/8bc2554d-1052-4922-8832-e0078a033e1d@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bus: fsl-mc: do not add a device-link for the UAPI used DPMCP device [+ + +]
Author: Ioana Ciornei <ioana.ciornei@nxp.com>
Date:   Tue Apr 8 13:58:10 2025 +0300

    bus: fsl-mc: do not add a device-link for the UAPI used DPMCP device
    
    commit dd7d8e012b23de158ca0188239c7a1f2a83b4484 upstream.
    
    The fsl-mc bus associated to the root DPRC in a DPAA2 system exports a
    device file for userspace access to the MC firmware. In case the DPRC's
    local MC portal (DPMCP) is currently in use, a new DPMCP device is
    allocated through the fsl_mc_portal_allocate() function.
    
    In this case, the call to fsl_mc_portal_allocate() will fail with -EINVAL
    when trying to add a device link between the root DPRC (consumer) and
    the newly allocated DPMCP device (supplier). This is because the DPMCP
    is a dependent of the DPRC device (the bus).
    
    Fix this by not adding a device link in case the DPMCP is allocated for
    the root DPRC's usage.
    
    Fixes: afb77422819f ("bus: fsl-mc: automatically add a device_link on fsl_mc_[portal,object]_allocate")
    Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20250408105814.2837951-3-ioana.ciornei@nxp.com
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

bus: fsl-mc: fix double-free on mc_dev [+ + +]
Author: Ioana Ciornei <ioana.ciornei@nxp.com>
Date:   Tue Apr 8 13:58:09 2025 +0300

    bus: fsl-mc: fix double-free on mc_dev
    
    [ Upstream commit d694bf8a9acdbd061596f3e7549bc8cb70750a60 ]
    
    The blamed commit tried to simplify how the deallocations are done but,
    in the process, introduced a double-free on the mc_dev variable.
    
    In case the MC device is a DPRC, a new mc_bus is allocated and the
    mc_dev variable is just a reference to one of its fields. In this
    circumstance, on the error path only the mc_bus should be freed.
    
    This commit introduces back the following checkpatch warning which is a
    false-positive.
    
    WARNING: kfree(NULL) is safe and this check is probably not required
    +       if (mc_bus)
    +               kfree(mc_bus);
    
    Fixes: a042fbed0290 ("staging: fsl-mc: simplify couple of deallocations")
    Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
    Link: https://lore.kernel.org/r/20250408105814.2837951-2-ioana.ciornei@nxp.com
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bus: fsl-mc: increase MC_CMD_COMPLETION_TIMEOUT_MS value [+ + +]
Author: Laurentiu Tudor <laurentiu.tudor@nxp.com>
Date:   Tue Apr 8 13:58:14 2025 +0300

    bus: fsl-mc: increase MC_CMD_COMPLETION_TIMEOUT_MS value
    
    [ Upstream commit 23d060136841c58c2f9ee8c08ad945d1879ead4b ]
    
    In case the MC firmware runs in debug mode with extensive prints pushed
    to the console, the current timeout of 500ms is not enough.
    Increase the timeout value so that we don't have any chance of wrongly
    assuming that the firmware is not responding when it's just taking more
    time.
    
    Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
    Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
    Link: https://lore.kernel.org/r/20250408105814.2837951-7-ioana.ciornei@nxp.com
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
calipso: Don't call calipso functions for AF_INET sk. [+ + +]
Author: Kuniyuki Iwashima <kuniyu@google.com>
Date:   Thu May 22 15:18:56 2025 -0700

    calipso: Don't call calipso functions for AF_INET sk.
    
    [ Upstream commit 6e9f2df1c550ead7cecb3e450af1105735020c92 ]
    
    syzkaller reported a null-ptr-deref in txopt_get(). [0]
    
    The offset 0x70 was of struct ipv6_txoptions in struct ipv6_pinfo,
    so struct ipv6_pinfo was NULL there.
    
    However, this never happens for IPv6 sockets as inet_sk(sk)->pinet6
    is always set in inet6_create(), meaning the socket was not IPv6 one.
    
    The root cause is missing validation in netlbl_conn_setattr().
    
    netlbl_conn_setattr() switches branches based on struct
    sockaddr.sa_family, which is passed from userspace.  However,
    netlbl_conn_setattr() does not check if the address family matches
    the socket.
    
    The syzkaller must have called connect() for an IPv6 address on
    an IPv4 socket.
    
    We have a proper validation in tcp_v[46]_connect(), but
    security_socket_connect() is called in the earlier stage.
    
    Let's copy the validation to netlbl_conn_setattr().
    
    [0]:
    Oops: general protection fault, probably for non-canonical address 0xdffffc000000000e: 0000 [#1] PREEMPT SMP KASAN NOPTI
    KASAN: null-ptr-deref in range [0x0000000000000070-0x0000000000000077]
    CPU: 2 UID: 0 PID: 12928 Comm: syz.9.1677 Not tainted 6.12.0 #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
    RIP: 0010:txopt_get include/net/ipv6.h:390 [inline]
    RIP: 0010:
    Code: 02 00 00 49 8b ac 24 f8 02 00 00 e8 84 69 2a fd e8 ff 00 16 fd 48 8d 7d 70 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 53 02 00 00 48 8b 6d 70 48 85 ed 0f 84 ab 01 00
    RSP: 0018:ffff88811b8afc48 EFLAGS: 00010212
    RAX: dffffc0000000000 RBX: 1ffff11023715f8a RCX: ffffffff841ab00c
    RDX: 000000000000000e RSI: ffffc90007d9e000 RDI: 0000000000000070
    RBP: 0000000000000000 R08: ffffed1023715f9d R09: ffffed1023715f9e
    R10: ffffed1023715f9d R11: 0000000000000003 R12: ffff888123075f00
    R13: ffff88810245bd80 R14: ffff888113646780 R15: ffff888100578a80
    FS:  00007f9019bd7640(0000) GS:ffff8882d2d00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f901b927bac CR3: 0000000104788003 CR4: 0000000000770ef0
    PKRU: 80000000
    Call Trace:
     <TASK>
     calipso_sock_setattr+0x56/0x80 net/netlabel/netlabel_calipso.c:557
     netlbl_conn_setattr+0x10c/0x280 net/netlabel/netlabel_kapi.c:1177
     selinux_netlbl_socket_connect_helper+0xd3/0x1b0 security/selinux/netlabel.c:569
     selinux_netlbl_socket_connect_locked security/selinux/netlabel.c:597 [inline]
     selinux_netlbl_socket_connect+0xb6/0x100 security/selinux/netlabel.c:615
     selinux_socket_connect+0x5f/0x80 security/selinux/hooks.c:4931
     security_socket_connect+0x50/0xa0 security/security.c:4598
     __sys_connect_file+0xa4/0x190 net/socket.c:2067
     __sys_connect+0x12c/0x170 net/socket.c:2088
     __do_sys_connect net/socket.c:2098 [inline]
     __se_sys_connect net/socket.c:2095 [inline]
     __x64_sys_connect+0x73/0xb0 net/socket.c:2095
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xaa/0x1b0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f901b61a12d
    Code: 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f9019bd6fa8 EFLAGS: 00000246 ORIG_RAX: 000000000000002a
    RAX: ffffffffffffffda RBX: 00007f901b925fa0 RCX: 00007f901b61a12d
    RDX: 000000000000001c RSI: 0000200000000140 RDI: 0000000000000003
    RBP: 00007f901b701505 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 0000000000000000 R14: 00007f901b5b62a0 R15: 00007f9019bb7000
     </TASK>
    Modules linked in:
    
    Fixes: ceba1832b1b2 ("calipso: Set the calipso socket label to match the secattr.")
    Reported-by: syzkaller <syzkaller@googlegroups.com>
    Reported-by: John Cheung <john.cs.hey@gmail.com>
    Closes: https://lore.kernel.org/netdev/CAP=Rh=M1LzunrcQB1fSGauMrJrhL6GGps5cPAKzHJXj6GQV+-g@mail.gmail.com/
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Acked-by: Paul Moore <paul@paul-moore.com>
    Link: https://patch.msgid.link/20250522221858.91240-1-kuniyu@amazon.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

calipso: Fix null-ptr-deref in calipso_req_{set,del}attr(). [+ + +]
Author: Kuniyuki Iwashima <kuniyu@google.com>
Date:   Tue Jun 17 15:40:42 2025 -0700

    calipso: Fix null-ptr-deref in calipso_req_{set,del}attr().
    
    [ Upstream commit 10876da918fa1aec0227fb4c67647513447f53a9 ]
    
    syzkaller reported a null-ptr-deref in sock_omalloc() while allocating
    a CALIPSO option.  [0]
    
    The NULL is of struct sock, which was fetched by sk_to_full_sk() in
    calipso_req_setattr().
    
    Since commit a1a5344ddbe8 ("tcp: avoid two atomic ops for syncookies"),
    reqsk->rsk_listener could be NULL when SYN Cookie is returned to its
    client, as hinted by the leading SYN Cookie log.
    
    Here are 3 options to fix the bug:
    
      1) Return 0 in calipso_req_setattr()
      2) Return an error in calipso_req_setattr()
      3) Alaways set rsk_listener
    
    1) is no go as it bypasses LSM, but 2) effectively disables SYN Cookie
    for CALIPSO.  3) is also no go as there have been many efforts to reduce
    atomic ops and make TCP robust against DDoS.  See also commit 3b24d854cb35
    ("tcp/dccp: do not touch listener sk_refcnt under synflood").
    
    As of the blamed commit, SYN Cookie already did not need refcounting,
    and no one has stumbled on the bug for 9 years, so no CALIPSO user will
    care about SYN Cookie.
    
    Let's return an error in calipso_req_setattr() and calipso_req_delattr()
    in the SYN Cookie case.
    
    This can be reproduced by [1] on Fedora and now connect() of nc times out.
    
    [0]:
    TCP: request_sock_TCPv6: Possible SYN flooding on port [::]:20002. Sending cookies.
    Oops: general protection fault, probably for non-canonical address 0xdffffc0000000006: 0000 [#1] PREEMPT SMP KASAN NOPTI
    KASAN: null-ptr-deref in range [0x0000000000000030-0x0000000000000037]
    CPU: 3 UID: 0 PID: 12262 Comm: syz.1.2611 Not tainted 6.14.0 #2
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
    RIP: 0010:read_pnet include/net/net_namespace.h:406 [inline]
    RIP: 0010:sock_net include/net/sock.h:655 [inline]
    RIP: 0010:sock_kmalloc+0x35/0x170 net/core/sock.c:2806
    Code: 89 d5 41 54 55 89 f5 53 48 89 fb e8 25 e3 c6 fd e8 f0 91 e3 00 48 8d 7b 30 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 26 01 00 00 48 b8 00 00 00 00 00 fc ff df 4c 8b
    RSP: 0018:ffff88811af89038 EFLAGS: 00010216
    RAX: dffffc0000000000 RBX: 0000000000000000 RCX: ffff888105266400
    RDX: 0000000000000006 RSI: ffff88800c890000 RDI: 0000000000000030
    RBP: 0000000000000050 R08: 0000000000000000 R09: ffff88810526640e
    R10: ffffed1020a4cc81 R11: ffff88810526640f R12: 0000000000000000
    R13: 0000000000000820 R14: ffff888105266400 R15: 0000000000000050
    FS:  00007f0653a07640(0000) GS:ffff88811af80000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f863ba096f4 CR3: 00000000163c0005 CR4: 0000000000770ef0
    PKRU: 80000000
    Call Trace:
     <IRQ>
     ipv6_renew_options+0x279/0x950 net/ipv6/exthdrs.c:1288
     calipso_req_setattr+0x181/0x340 net/ipv6/calipso.c:1204
     calipso_req_setattr+0x56/0x80 net/netlabel/netlabel_calipso.c:597
     netlbl_req_setattr+0x18a/0x440 net/netlabel/netlabel_kapi.c:1249
     selinux_netlbl_inet_conn_request+0x1fb/0x320 security/selinux/netlabel.c:342
     selinux_inet_conn_request+0x1eb/0x2c0 security/selinux/hooks.c:5551
     security_inet_conn_request+0x50/0xa0 security/security.c:4945
     tcp_v6_route_req+0x22c/0x550 net/ipv6/tcp_ipv6.c:825
     tcp_conn_request+0xec8/0x2b70 net/ipv4/tcp_input.c:7275
     tcp_v6_conn_request+0x1e3/0x440 net/ipv6/tcp_ipv6.c:1328
     tcp_rcv_state_process+0xafa/0x52b0 net/ipv4/tcp_input.c:6781
     tcp_v6_do_rcv+0x8a6/0x1a40 net/ipv6/tcp_ipv6.c:1667
     tcp_v6_rcv+0x505e/0x5b50 net/ipv6/tcp_ipv6.c:1904
     ip6_protocol_deliver_rcu+0x17c/0x1da0 net/ipv6/ip6_input.c:436
     ip6_input_finish+0x103/0x180 net/ipv6/ip6_input.c:480
     NF_HOOK include/linux/netfilter.h:314 [inline]
     NF_HOOK include/linux/netfilter.h:308 [inline]
     ip6_input+0x13c/0x6b0 net/ipv6/ip6_input.c:491
     dst_input include/net/dst.h:469 [inline]
     ip6_rcv_finish net/ipv6/ip6_input.c:79 [inline]
     ip6_rcv_finish+0xb6/0x490 net/ipv6/ip6_input.c:69
     NF_HOOK include/linux/netfilter.h:314 [inline]
     NF_HOOK include/linux/netfilter.h:308 [inline]
     ipv6_rcv+0xf9/0x490 net/ipv6/ip6_input.c:309
     __netif_receive_skb_one_core+0x12e/0x1f0 net/core/dev.c:5896
     __netif_receive_skb+0x1d/0x170 net/core/dev.c:6009
     process_backlog+0x41e/0x13b0 net/core/dev.c:6357
     __napi_poll+0xbd/0x710 net/core/dev.c:7191
     napi_poll net/core/dev.c:7260 [inline]
     net_rx_action+0x9de/0xde0 net/core/dev.c:7382
     handle_softirqs+0x19a/0x770 kernel/softirq.c:561
     do_softirq.part.0+0x36/0x70 kernel/softirq.c:462
     </IRQ>
     <TASK>
     do_softirq arch/x86/include/asm/preempt.h:26 [inline]
     __local_bh_enable_ip+0xf1/0x110 kernel/softirq.c:389
     local_bh_enable include/linux/bottom_half.h:33 [inline]
     rcu_read_unlock_bh include/linux/rcupdate.h:919 [inline]
     __dev_queue_xmit+0xc2a/0x3c40 net/core/dev.c:4679
     dev_queue_xmit include/linux/netdevice.h:3313 [inline]
     neigh_hh_output include/net/neighbour.h:523 [inline]
     neigh_output include/net/neighbour.h:537 [inline]
     ip6_finish_output2+0xd69/0x1f80 net/ipv6/ip6_output.c:141
     __ip6_finish_output net/ipv6/ip6_output.c:215 [inline]
     ip6_finish_output+0x5dc/0xd60 net/ipv6/ip6_output.c:226
     NF_HOOK_COND include/linux/netfilter.h:303 [inline]
     ip6_output+0x24b/0x8d0 net/ipv6/ip6_output.c:247
     dst_output include/net/dst.h:459 [inline]
     NF_HOOK include/linux/netfilter.h:314 [inline]
     NF_HOOK include/linux/netfilter.h:308 [inline]
     ip6_xmit+0xbbc/0x20d0 net/ipv6/ip6_output.c:366
     inet6_csk_xmit+0x39a/0x720 net/ipv6/inet6_connection_sock.c:135
     __tcp_transmit_skb+0x1a7b/0x3b40 net/ipv4/tcp_output.c:1471
     tcp_transmit_skb net/ipv4/tcp_output.c:1489 [inline]
     tcp_send_syn_data net/ipv4/tcp_output.c:4059 [inline]
     tcp_connect+0x1c0c/0x4510 net/ipv4/tcp_output.c:4148
     tcp_v6_connect+0x156c/0x2080 net/ipv6/tcp_ipv6.c:333
     __inet_stream_connect+0x3a7/0xed0 net/ipv4/af_inet.c:677
     tcp_sendmsg_fastopen+0x3e2/0x710 net/ipv4/tcp.c:1039
     tcp_sendmsg_locked+0x1e82/0x3570 net/ipv4/tcp.c:1091
     tcp_sendmsg+0x2f/0x50 net/ipv4/tcp.c:1358
     inet6_sendmsg+0xb9/0x150 net/ipv6/af_inet6.c:659
     sock_sendmsg_nosec net/socket.c:718 [inline]
     __sock_sendmsg+0xf4/0x2a0 net/socket.c:733
     __sys_sendto+0x29a/0x390 net/socket.c:2187
     __do_sys_sendto net/socket.c:2194 [inline]
     __se_sys_sendto net/socket.c:2190 [inline]
     __x64_sys_sendto+0xe1/0x1c0 net/socket.c:2190
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xc3/0x1d0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f06553c47ed
    Code: 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f0653a06fc8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 00007f0655605fa0 RCX: 00007f06553c47ed
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 000000000000000b
    RBP: 00007f065545db38 R08: 0000200000000140 R09: 000000000000001c
    R10: f7384d4ea84b01bd R11: 0000000000000246 R12: 0000000000000000
    R13: 00007f0655605fac R14: 00007f0655606038 R15: 00007f06539e7000
     </TASK>
    Modules linked in:
    
    [1]:
    dnf install -y selinux-policy-targeted policycoreutils netlabel_tools procps-ng nmap-ncat
    mount -t selinuxfs none /sys/fs/selinux
    load_policy
    netlabelctl calipso add pass doi:1
    netlabelctl map del default
    netlabelctl map add default address:::1 protocol:calipso,1
    sysctl net.ipv4.tcp_syncookies=2
    nc -l ::1 80 &
    nc ::1 80
    
    Fixes: e1adea927080 ("calipso: Allow request sockets to be relabelled by the lsm.")
    Reported-by: syzkaller <syzkaller@googlegroups.com>
    Reported-by: John Cheung <john.cs.hey@gmail.com>
    Closes: https://lore.kernel.org/netdev/CAP=Rh=MvfhrGADy+-WJiftV2_WzMH4VEhEFmeT28qY+4yxNu4w@mail.gmail.com/
    Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
    Acked-by: Paul Moore <paul@paul-moore.com>
    Link: https://patch.msgid.link/20250617224125.17299-1-kuni1840@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

calipso: unlock rcu before returning -EAFNOSUPPORT [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jun 4 13:38:26 2025 +0000

    calipso: unlock rcu before returning -EAFNOSUPPORT
    
    commit 3cae906e1a6184cdc9e4d260e4dbdf9a118d94ad upstream.
    
    syzbot reported that a recent patch forgot to unlock rcu
    in the error path.
    
    Adopt the convention that netlbl_conn_setattr() is already using.
    
    Fixes: 6e9f2df1c550 ("calipso: Don't call calipso functions for AF_INET sk.")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Kuniyuki Iwashima <kuniyu@amazon.com>
    Acked-by: Paul Moore <paul@paul-moore.com>
    Link: https://patch.msgid.link/20250604133826.1667664-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
clk: rockchip: rk3036: mark ddrphy as critical [+ + +]
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Sat May 3 22:25:31 2025 +0200

    clk: rockchip: rk3036: mark ddrphy as critical
    
    [ Upstream commit 596a977b34a722c00245801a5774aa79cec4e81d ]
    
    The ddrphy is supplied by the dpll, but due to the limited number of PLLs
    on the rk3036, the dpll also is used for other periperhals, like the GPU.
    
    So it happened, when the Lima driver turned off the gpu clock, this in
    turn also disabled the dpll and thus the ram.
    
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20250503202532.992033-4-heiko@sntech.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
configfs: Do not override creating attribute file failure in populate_attrs() [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Wed May 7 19:50:26 2025 +0800

    configfs: Do not override creating attribute file failure in populate_attrs()
    
    commit f830edbae247b89228c3e09294151b21e0dc849c upstream.
    
    populate_attrs() may override failure for creating attribute files
    by success for creating subsequent bin attribute files, and have
    wrong return value.
    
    Fix by creating bin attribute files under successfully creating
    attribute files.
    
    Fixes: 03607ace807b ("configfs: implement binary attributes")
    Cc: stable@vger.kernel.org
    Reviewed-by: Joel Becker <jlbec@evilplan.org>
    Reviewed-by: Breno Leitao <leitao@debian.org>
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Link: https://lore.kernel.org/r/20250507-fix_configfs-v3-2-fe2d96de8dc4@quicinc.com
    Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cpufreq: Force sync policy boost with global boost on sysfs update [+ + +]
Author: Viresh Kumar <viresh.kumar@linaro.org>
Date:   Thu Apr 24 21:50:18 2025 +0530

    cpufreq: Force sync policy boost with global boost on sysfs update
    
    [ Upstream commit 121baab7b88ed865532dadb7ef1aee6e2bea86f5 ]
    
    If the global boost flag is enabled and policy boost flag is disabled, a
    call to `cpufreq_boost_trigger_state(true)` must enable the policy's
    boost state.
    
    The current code misses that because of an optimization. Fix it.
    
    Suggested-by: Lifeng Zheng <zhenglifeng1@huawei.com>
    Reviewed-by: Lifeng Zheng <zhenglifeng1@huawei.com>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Link: https://patch.msgid.link/852ff11c589e6300730d207baac195b2d9d8b95f.1745511526.git.viresh.kumar@linaro.org
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
crypto: marvell/cesa - Avoid empty transfer descriptor [+ + +]
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Sat May 10 18:43:33 2025 +0800

    crypto: marvell/cesa - Avoid empty transfer descriptor
    
    [ Upstream commit 1bafd82d9a40cf09c6c40f1c09cc35b7050b1a9f ]
    
    The user may set req->src even if req->nbytes == 0.  If there
    is no data to hash from req->src, do not generate an empty TDMA
    descriptor.
    
    Fixes: db509a45339f ("crypto: marvell/cesa - add TDMA support")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: marvell/cesa - Handle zero-length skcipher requests [+ + +]
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Sat May 10 18:41:31 2025 +0800

    crypto: marvell/cesa - Handle zero-length skcipher requests
    
    [ Upstream commit 8a4e047c6cc07676f637608a9dd675349b5de0a7 ]
    
    Do not access random memory for zero-length skcipher requests.
    Just return 0.
    
    Fixes: f63601fd616a ("crypto: marvell/cesa - add a new driver for Marvell's CESA")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm-mirror: fix a tiny race condition [+ + +]
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue Jun 3 18:53:17 2025 +0200

    dm-mirror: fix a tiny race condition
    
    commit 829451beaed6165eb11d7a9fb4e28eb17f489980 upstream.
    
    There's a tiny race condition in dm-mirror. The functions queue_bio and
    write_callback grab a spinlock, add a bio to the list, drop the spinlock
    and wake up the mirrord thread that processes bios in the list.
    
    It may be possible that the mirrord thread processes the bio just after
    spin_unlock_irqrestore is called, before wakeup_mirrord. This spurious
    wake-up is normally harmless, however if the device mapper device is
    unloaded just after the bio was processed, it may be possible that
    wakeup_mirrord(ms) uses invalid "ms" pointer.
    
    Fix this bug by moving wakeup_mirrord inside the spinlock.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
do_change_type(): refuse to operate on unmounted/not ours mounts [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Wed Jun 4 12:27:08 2025 -0400

    do_change_type(): refuse to operate on unmounted/not ours mounts
    
    [ Upstream commit 12f147ddd6de7382dad54812e65f3f08d05809fc ]
    
    Ensure that propagation settings can only be changed for mounts located
    in the caller's mount namespace. This change aligns permission checking
    with the rest of mount(2).
    
    Reviewed-by: Christian Brauner <brauner@kernel.org>
    Fixes: 07b20889e305 ("beginning of the shared-subtree proper")
    Reported-by: "Orlando, Noah" <Noah.Orlando@deshaw.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drivers/rapidio/rio_cm.c: prevent possible heap overwrite [+ + +]
Author: Andrew Morton <akpm@linux-foundation.org>
Date:   Sat Jun 7 17:43:18 2025 -0700

    drivers/rapidio/rio_cm.c: prevent possible heap overwrite
    
    commit 50695153d7ddde3b1696dbf0085be0033bf3ddb3 upstream.
    
    In
    
    riocm_cdev_ioctl(RIO_CM_CHAN_SEND)
       -> cm_chan_msg_send()
          -> riocm_ch_send()
    
    cm_chan_msg_send() checks that userspace didn't send too much data but
    riocm_ch_send() failed to check that userspace sent sufficient data.  The
    result is that riocm_ch_send() can write to fields in the rio_ch_chan_hdr
    which were outside the bounds of the space which cm_chan_msg_send()
    allocated.
    
    Address this by teaching riocm_ch_send() to check that the entire
    rio_ch_chan_hdr was copied in from userspace.
    
    Reported-by: maher azz <maherazz04@gmail.com>
    Cc: Matt Porter <mporter@kernel.crashing.org>
    Cc: Alexandre Bounine <alex.bou9@gmail.com>
    Cc: Linus Torvalds <torvalds@linuxfoundation.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amd/display: Add NULL pointer checks in dm_force_atomic_commit() [+ + +]
Author: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
Date:   Fri Apr 18 00:57:19 2025 +0530

    drm/amd/display: Add NULL pointer checks in dm_force_atomic_commit()
    
    [ Upstream commit 3f397cd203f247879c2f1a061e90d4c8d23655de ]
    
    This commit updates the dm_force_atomic_commit function to replace the
    usage of PTR_ERR_OR_ZERO with IS_ERR for checking error states after
    retrieving the Connector (drm_atomic_get_connector_state), CRTC
    (drm_atomic_get_crtc_state), and Plane (drm_atomic_get_plane_state)
    states.
    
    The function utilized PTR_ERR_OR_ZERO for error checking. However, this
    approach is inappropriate in this context because the respective
    functions do not return NULL; they return pointers that encode errors.
    
    This change ensures that error pointers are properly checked using
    IS_ERR before attempting to dereference.
    
    Cc: Harry Wentland <harry.wentland@amd.com>
    Cc: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Cc: Tom Chung <chiahsuan.chung@amd.com>
    Cc: Roman Li <roman.li@amd.com>
    Cc: Alex Hung <alex.hung@amd.com>
    Cc: Aurabindo Pillai <aurabindo.pillai@amd.com>
    Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
    Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Do not add '-mhard-float' to dcn2{1,0}_resource.o for clang [+ + +]
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Wed Jun 4 14:08:09 2025 -0700

    drm/amd/display: Do not add '-mhard-float' to dcn2{1,0}_resource.o for clang
    
    This patch is for linux-5.15.y and earlier only. It is functionally
    equivalent to upstream commit 7db038d9790e ("drm/amd/display: Do not add
    '-mhard-float' to dml_ccflags for clang"), which was created after all
    files that require '-mhard-float' were moved under the dml folder. In
    kernels older than 5.18, which do not contain upstream commits
    
      22f87d998326 ("drm/amd/display: move FPU operations from dcn21 to dml/dcn20 folder")
      cf689e869cf0 ("drm/amd/display: move FPU-related code from dcn20 to dml folder")
    
    newer versions of clang error with
    
      clang: error: unsupported option '-mhard-float' for target 'x86_64-linux-gnu'
      make[6]: *** [scripts/Makefile.build:289: drivers/gpu/drm/amd/amdgpu/../display/dc/dcn20/dcn20_resource.o] Error 1
      clang: error: unsupported option '-mhard-float' for target 'x86_64-linux-gnu'
      make[6]: *** [scripts/Makefile.build:289: drivers/gpu/drm/amd/amdgpu/../display/dc/dcn21/dcn21_resource.o] Error 1
    
    Apply a functionally equivalent change to prevent adding '-mhard-float'
    with clang for these files.
    
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amd/display: Do not add '-mhard-float' to dml_ccflags for clang [+ + +]
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Wed Jan 11 20:05:09 2023 -0700

    drm/amd/display: Do not add '-mhard-float' to dml_ccflags for clang
    
    commit 7db038d9790eda558dd6c1dde4cdd58b64789c47 upstream.
    
    When clang's -Qunused-arguments is dropped from KBUILD_CPPFLAGS, it
    warns:
    
      clang-16: error: argument unused during compilation: '-mhard-float' [-Werror,-Wunused-command-line-argument]
    
    Similar to commit 84edc2eff827 ("selftest/fpu: avoid clang warning"),
    just add this flag to GCC builds. Commit 0f0727d971f6 ("drm/amd/display:
    readd -msse2 to prevent Clang from emitting libcalls to undefined SW FP
    routines") added '-msse2' to prevent clang from emitting software
    floating point routines.
    
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Anders Roxell <anders.roxell@linaro.org>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdgpu/gfx10: fix CSIB handling [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Mar 19 11:58:03 2025 -0400

    drm/amdgpu/gfx10: fix CSIB handling
    
    [ Upstream commit 683308af030cd9b8d3f1de5cbc1ee51788878feb ]
    
    We shouldn't return after the last section.
    We need to update the rest of the CSIB.
    
    Reviewed-by: Rodrigo Siqueira <siqueira@igalia.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu/gfx6: fix CSIB handling [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Mar 19 11:56:02 2025 -0400

    drm/amdgpu/gfx6: fix CSIB handling
    
    [ Upstream commit 8307ebc15c1ea98a8a0b7837af1faa6c01514577 ]
    
    We shouldn't return after the last section.
    We need to update the rest of the CSIB.
    
    Reviewed-by: Rodrigo Siqueira <siqueira@igalia.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu/gfx7: fix CSIB handling [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Mar 19 11:57:19 2025 -0400

    drm/amdgpu/gfx7: fix CSIB handling
    
    [ Upstream commit be7652c23d833d1ab2c67b16e173b1a4e69d1ae6 ]
    
    We shouldn't return after the last section.
    We need to update the rest of the CSIB.
    
    Reviewed-by: Rodrigo Siqueira <siqueira@igalia.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu/gfx8: fix CSIB handling [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Mar 19 11:57:34 2025 -0400

    drm/amdgpu/gfx8: fix CSIB handling
    
    [ Upstream commit c8b8d7a4f1c5cdfbd61d75302fb3e3cdefb1a7ab ]
    
    We shouldn't return after the last section.
    We need to update the rest of the CSIB.
    
    Reviewed-by: Rodrigo Siqueira <siqueira@igalia.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu/gfx9: fix CSIB handling [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Mar 19 11:57:49 2025 -0400

    drm/amdgpu/gfx9: fix CSIB handling
    
    [ Upstream commit a4a4c0ae6742ec7d6bf1548d2c6828de440814a0 ]
    
    We shouldn't return after the last section.
    We need to update the rest of the CSIB.
    
    Reviewed-by: Rodrigo Siqueira <siqueira@igalia.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdkfd: Set SDMA_RLCx_IB_CNTL/SWITCH_INSIDE_IB [+ + +]
Author: Amber Lin <Amber.Lin@amd.com>
Date:   Tue Apr 22 15:54:19 2025 -0400

    drm/amdkfd: Set SDMA_RLCx_IB_CNTL/SWITCH_INSIDE_IB
    
    [ Upstream commit ab9fcc6362e0699fc1150aa1d8503c40fce2c1e1 ]
    
    When submitting MQD to CP, set SDMA_RLCx_IB_CNTL/SWITCH_INSIDE_IB bit so
    it'll allow SDMA preemption if there is a massive command buffer of
    long-running SDMA commands.
    
    Signed-off-by: Amber Lin <Amber.Lin@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/bridge: analogix_dp: Add irq flag IRQF_NO_AUTOEN instead of calling disable_irq() [+ + +]
Author: Damon Ding <damon.ding@rock-chips.com>
Date:   Mon Mar 10 18:41:02 2025 +0800

    drm/bridge: analogix_dp: Add irq flag IRQF_NO_AUTOEN instead of calling disable_irq()
    
    [ Upstream commit efab13e7d13a641a22c7508cde6e1a5285161944 ]
    
    The IRQF_NO_AUTOEN can be used for the drivers that don't want
    interrupts to be enabled automatically via devm_request_threaded_irq().
    Using this flag can provide be more robust compared to the way of
    calling disable_irq() after devm_request_threaded_irq() without the
    IRQF_NO_AUTOEN flag.
    
    Suggested-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Damon Ding <damon.ding@rock-chips.com>
    Link: https://lore.kernel.org/r/20250310104114.2608063-2-damon.ding@rock-chips.com
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/a6xx: Increase HFI response timeout [+ + +]
Author: Akhil P Oommen <akhilpo@oss.qualcomm.com>
Date:   Sat Apr 19 20:21:31 2025 +0530

    drm/msm/a6xx: Increase HFI response timeout
    
    [ Upstream commit 5f02f5e78ec9688e29b6857813185b1181796abe ]
    
    When ACD feature is enabled, it triggers some internal calibrations
    which result in a pretty long delay during the first HFI perf vote.
    So, increase the HFI response timeout to match the downstream driver.
    
    Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
    Tested-by: Maya Matuszczyk <maccraft123mc@gmail.com>
    Tested-by: Anthony Ruhier <aruhier@mailbox.org>
    Patchwork: https://patchwork.freedesktop.org/patch/649344/
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/hdmi: add runtime PM calls to DDC transfer function [+ + +]
Author: Dmitry Baryshkov <lumag@kernel.org>
Date:   Mon May 5 03:14:52 2025 +0300

    drm/msm/hdmi: add runtime PM calls to DDC transfer function
    
    [ Upstream commit 531b4e2c206e5f7dead04d9da84dfa693ac57481 ]
    
    We must be sure that the HDMI controller is powered on, while performing
    the DDC transfer. Add corresponding runtime PM calls to
    msm_hdmi_i2c_xfer().
    
    Reviewed-by: Jessica Zhang <quic_jesszhan@quicinc.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/651727/
    Link: https://lore.kernel.org/r/20250505-fd-hdmi-hpd-v5-8-48541f76318c@oss.qualcomm.com
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/nouveau/bl: increase buffer size to avoid truncate warning [+ + +]
Author: Jacob Keller <jacob.e.keller@intel.com>
Date:   Tue Jun 10 14:54:51 2025 -0700

    drm/nouveau/bl: increase buffer size to avoid truncate warning
    
    [ Upstream commit 61b2b3737499f1fb361a54a16828db24a8345e85 ]
    
    The nouveau_get_backlight_name() function generates a unique name for the
    backlight interface, appending an id from 1 to 99 for all backlight devices
    after the first.
    
    GCC 15 (and likely other compilers) produce the following
    -Wformat-truncation warning:
    
    nouveau_backlight.c: In function ‘nouveau_backlight_init’:
    nouveau_backlight.c:56:69: error: ‘%d’ directive output may be truncated writing between 1 and 10 bytes into a region of size 3 [-Werror=format-truncation=]
       56 |                 snprintf(backlight_name, BL_NAME_SIZE, "nv_backlight%d", nb);
          |                                                                     ^~
    In function ‘nouveau_get_backlight_name’,
        inlined from ‘nouveau_backlight_init’ at nouveau_backlight.c:351:7:
    nouveau_backlight.c:56:56: note: directive argument in the range [1, 2147483647]
       56 |                 snprintf(backlight_name, BL_NAME_SIZE, "nv_backlight%d", nb);
          |                                                        ^~~~~~~~~~~~~~~~
    nouveau_backlight.c:56:17: note: ‘snprintf’ output between 14 and 23 bytes into a destination of size 15
       56 |                 snprintf(backlight_name, BL_NAME_SIZE, "nv_backlight%d", nb);
          |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    The warning started appearing after commit ab244be47a8f ("drm/nouveau:
    Fix a potential theorical leak in nouveau_get_backlight_name()") This fix
    for the ida usage removed the explicit value check for ids larger than 99.
    The compiler is unable to intuit that the ida_alloc_max() limits the
    returned value range between 0 and 99.
    
    Because the compiler can no longer infer that the number ranges from 0 to
    99, it thinks that it could use as many as 11 digits (10 + the potential -
    sign for negative numbers).
    
    The warning has gone unfixed for some time, with at least one kernel test
    robot report. The code breaks W=1 builds, which is especially frustrating
    with the introduction of CONFIG_WERROR.
    
    The string is stored temporarily on the stack and then copied into the
    device name. Its not a big deal to use 11 more bytes of stack rounding out
    to an even 24 bytes. Increase BL_NAME_SIZE to 24 to avoid the truncation
    warning. This fixes the W=1 builds that include this driver.
    
    Compile tested only.
    
    Fixes: ab244be47a8f ("drm/nouveau: Fix a potential theorical leak in nouveau_get_backlight_name()")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202312050324.0kv4PnfZ-lkp@intel.com/
    Suggested-by: Timur Tabi <ttabi@nvidia.com>
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://lore.kernel.org/r/20250610-jk-nouveua-drm-bl-snprintf-fix-v2-1-7fdd4b84b48e@intel.com
    Signed-off-by: Danilo Krummrich <dakr@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/tegra: rgb: Fix the unbound reference count [+ + +]
Author: Biju Das <biju.das.jz@bp.renesas.com>
Date:   Wed Feb 5 11:21:35 2025 +0000

    drm/tegra: rgb: Fix the unbound reference count
    
    [ Upstream commit 3c3642335065c3bde0742b0edc505b6ea8fdc2b3 ]
    
    The of_get_child_by_name() increments the refcount in tegra_dc_rgb_probe,
    but the driver does not decrement the refcount during unbind. Fix the
    unbound reference count using devm_add_action_or_reset() helper.
    
    Fixes: d8f4a9eda006 ("drm: Add NVIDIA Tegra20 support")
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Link: https://lore.kernel.org/r/20250205112137.36055-1-biju.das.jz@bp.renesas.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/vkms: Adjust vkms_state->active_planes allocation type [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Fri Apr 25 23:14:32 2025 -0700

    drm/vkms: Adjust vkms_state->active_planes allocation type
    
    [ Upstream commit 258aebf100540d36aba910f545d4d5ddf4ecaf0b ]
    
    In preparation for making the kmalloc family of allocators type aware,
    we need to make sure that the returned type from the allocation matches
    the type of the variable being assigned. (Before, the allocator would
    always return "void *", which can be implicitly cast to any pointer type.)
    
    The assigned type is "struct vkms_plane_state **", but the returned type
    will be "struct drm_plane **". These are the same size (pointer size), but
    the types don't match. Adjust the allocation type to match the assignment.
    
    Signed-off-by: Kees Cook <kees@kernel.org>
    Reviewed-by: Louis Chauvet <louis.chauvet@bootlin.com>
    Fixes: 8b1865873651 ("drm/vkms: totally reworked crc data tracking")
    Link: https://lore.kernel.org/r/20250426061431.work.304-kees@kernel.org
    Signed-off-by: Louis Chauvet <contact@louischauvet.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/vmwgfx: Add seqno waiter for sync_files [+ + +]
Author: Ian Forbes <ian.forbes@broadcom.com>
Date:   Fri Feb 28 14:06:33 2025 -0600

    drm/vmwgfx: Add seqno waiter for sync_files
    
    [ Upstream commit 0039a3b35b10d9c15d3d26320532ab56cc566750 ]
    
    Because sync_files are passive waiters they do not participate in
    the processing of fences like the traditional vmw_fence_wait IOCTL.
    If userspace exclusively uses sync_files for synchronization then
    nothing in the kernel actually processes fence updates as interrupts
    for fences are masked and ignored if the kernel does not indicate to the
    SVGA device that there are active waiters.
    
    This oversight results in a bug where the entire GUI can freeze waiting
    on a sync_file that will never be signalled as we've masked the interrupts
    to signal its completion. This bug is incredibly racy as any process which
    interacts with the fencing code via the 3D stack can process the stuck
    fences on behalf of the stuck process causing it to run again. Even a
    simple app like eglinfo is enough to resume the stuck process. Usually
    this bug is seen at a login screen like GDM because there are no other
    3D apps running.
    
    By adding a seqno waiter we re-enable interrupt based processing of the
    dma_fences associated with the sync_file which is signalled as part of a
    dma_fence_callback.
    
    This has likely been broken since it was initially added to the kernel in
    2017 but has gone unnoticed until mutter recently started using sync_files
    heavily over the course of 2024 as part of their explicit sync support.
    
    Fixes: c906965dee22 ("drm/vmwgfx: Add export fence to file descriptor support")
    Signed-off-by: Ian Forbes <ian.forbes@broadcom.com>
    Signed-off-by: Zack Rusin <zack.rusin@broadcom.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20250228200633.642417-1-ian.forbes@broadcom.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm: rcar-du: Fix memory leak in rcar_du_vsps_init() [+ + +]
Author: Biju Das <biju.das.jz@bp.renesas.com>
Date:   Thu Nov 16 12:24:24 2023 +0000

    drm: rcar-du: Fix memory leak in rcar_du_vsps_init()
    
    [ Upstream commit 91e3bf09a90bb4340c0c3c51396e7531555efda4 ]
    
    The rcar_du_vsps_init() doesn't free the np allocated by
    of_parse_phandle_with_fixed_args() for the non-error case.
    
    Fix memory leak for the non-error case.
    
    While at it, replace the label 'error'->'done' as it applies to non-error
    case as well and update the error check condition for rcar_du_vsp_init()
    to avoid breakage in future, if it returns positive value.
    
    Fixes: 3e81374e2014 ("drm: rcar-du: Support multiple sources from the same VSP")
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Link: https://lore.kernel.org/r/20231116122424.80136-1-biju.das.jz@bp.renesas.com
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
EDAC/altera: Use correct write width with the INTTEST register [+ + +]
Author: Niravkumar L Rabara <niravkumar.l.rabara@intel.com>
Date:   Tue May 27 07:57:07 2025 -0700

    EDAC/altera: Use correct write width with the INTTEST register
    
    commit e5ef4cd2a47f27c0c9d8ff6c0f63a18937c071a3 upstream.
    
    On the SoCFPGA platform, the INTTEST register supports only 16-bit writes.
    A 32-bit write triggers an SError to the CPU so do 16-bit accesses only.
    
      [ bp: AI-massage the commit message. ]
    
    Fixes: c7b4be8db8bc ("EDAC, altera: Add Arria10 OCRAM ECC support")
    Signed-off-by: Niravkumar L Rabara <niravkumar.l.rabara@intel.com>
    Signed-off-by: Matthew Gerlach <matthew.gerlach@altera.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Acked-by: Dinh Nguyen <dinguyen@kernel.org>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/20250527145707.25458-1-matthew.gerlach@altera.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
EDAC/skx_common: Fix general protection fault [+ + +]
Author: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Date:   Thu Apr 17 23:07:18 2025 +0800

    EDAC/skx_common: Fix general protection fault
    
    [ Upstream commit 20d2d476b3ae18041be423671a8637ed5ffd6958 ]
    
    After loading i10nm_edac (which automatically loads skx_edac_common), if
    unload only i10nm_edac, then reload it and perform error injection testing,
    a general protection fault may occur:
    
      mce: [Hardware Error]: Machine check events logged
      Oops: general protection fault ...
      ...
      Workqueue: events mce_gen_pool_process
      RIP: 0010:string+0x53/0xe0
      ...
      Call Trace:
      <TASK>
      ? die_addr+0x37/0x90
      ? exc_general_protection+0x1e7/0x3f0
      ? asm_exc_general_protection+0x26/0x30
      ? string+0x53/0xe0
      vsnprintf+0x23e/0x4c0
      snprintf+0x4d/0x70
      skx_adxl_decode+0x16a/0x330 [skx_edac_common]
      skx_mce_check_error.part.0+0xf8/0x220 [skx_edac_common]
      skx_mce_check_error+0x17/0x20 [skx_edac_common]
      ...
    
    The issue arose was because the variable 'adxl_component_count' (inside
    skx_edac_common), which counts the ADXL components, was not reset. During
    the reloading of i10nm_edac, the count was incremented by the actual number
    of ADXL components again, resulting in a count that was double the real
    number of ADXL components. This led to an out-of-bounds reference to the
    ADXL component array, causing the general protection fault above.
    
    Fix this issue by resetting the 'adxl_component_count' in adxl_put(),
    which is called during the unloading of {skx,i10nm}_edac.
    
    Fixes: 123b15863550 ("EDAC, i10nm: make skx_common.o a separate module")
    Reported-by: Feng Xu <feng.f.xu@intel.com>
    Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Tested-by: Feng Xu <feng.f.xu@intel.com>
    Link: https://lore.kernel.org/r/20250417150724.1170168-2-qiuxu.zhuo@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
emulex/benet: correct command version selection in be_cmd_get_stats() [+ + +]
Author: Alok Tiwari <alok.a.tiwari@oracle.com>
Date:   Mon May 19 07:17:19 2025 -0700

    emulex/benet: correct command version selection in be_cmd_get_stats()
    
    [ Upstream commit edb888d29748cee674006a52e544925dacc7728e ]
    
    Logic here always sets hdr->version to 2 if it is not a BE3 or Lancer chip,
    even if it is BE2. Use 'else if' to prevent multiple assignments, setting
    version 0 for BE2, version 1 for BE3 and Lancer, and version 2 for others.
    Fixes potential incorrect version setting when BE2_chip and
    BE3_chip/lancer_chip checks could both be true.
    
    Signed-off-by: Alok Tiwari <alok.a.tiwari@oracle.com>
    Link: https://patch.msgid.link/20250519141731.691136-1-alok.a.tiwari@oracle.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
erofs: remove unused trace event erofs_destroy_inode [+ + +]
Author: Gao Xiang <xiang@kernel.org>
Date:   Tue Jun 17 13:40:56 2025 +0800

    erofs: remove unused trace event erofs_destroy_inode
    
    commit 30b58444807c93bffeaba7d776110f2a909d2f9a upstream.
    
    The trace event `erofs_destroy_inode` was added but remains unused. This
    unused event contributes approximately 5KB to the kernel module size.
    
    Reported-by: Steven Rostedt <rostedt@goodmis.org>
    Closes: https://lore.kernel.org/r/20250612224906.15000244@batman.local.home
    Fixes: 13f06f48f7bf ("staging: erofs: support tracepoint")
    Cc: stable@vger.kernel.org
    Reviewed-by: Hongbo Li <lihongbo22@huawei.com>
    Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20250617054056.3232365-1-hsiangkao@linux.alibaba.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ext4: fix calculation of credits for extent tree modification [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Tue Apr 29 19:55:36 2025 +0200

    ext4: fix calculation of credits for extent tree modification
    
    commit 32a93f5bc9b9812fc710f43a4d8a6830f91e4988 upstream.
    
    Luis and David are reporting that after running generic/750 test for 90+
    hours on 2k ext4 filesystem, they are able to trigger a warning in
    jbd2_journal_dirty_metadata() complaining that there are not enough
    credits in the running transaction started in ext4_do_writepages().
    
    Indeed the code in ext4_do_writepages() is racy and the extent tree can
    change between the time we compute credits necessary for extent tree
    computation and the time we actually modify the extent tree. Thus it may
    happen that the number of credits actually needed is higher. Modify
    ext4_ext_index_trans_blocks() to count with the worst case of maximum
    tree depth. This can reduce the possible number of writers that can
    operate in the system in parallel (because the credit estimates now won't
    fit in one transaction) but for reasonably sized journals this shouldn't
    really be an issue. So just go with a safe and simple fix.
    
    Link: https://lore.kernel.org/all/20250415013641.f2ppw6wov4kn4wq2@offworld
    Reported-by: Davidlohr Bueso <dave@stgolabs.net>
    Reported-by: Luis Chamberlain <mcgrof@kernel.org>
    Tested-by: kdevops@lists.linux.dev
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Zhang Yi <yi.zhang@huawei.com>
    Link: https://patch.msgid.link/20250429175535.23125-2-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: inline: fix len overflow in ext4_prepare_inline_data [+ + +]
Author: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
Date:   Tue Apr 15 11:53:04 2025 -0300

    ext4: inline: fix len overflow in ext4_prepare_inline_data
    
    commit 227cb4ca5a6502164f850d22aec3104d7888b270 upstream.
    
    When running the following code on an ext4 filesystem with inline_data
    feature enabled, it will lead to the bug below.
    
            fd = open("file1", O_RDWR | O_CREAT | O_TRUNC, 0666);
            ftruncate(fd, 30);
            pwrite(fd, "a", 1, (1UL << 40) + 5UL);
    
    That happens because write_begin will succeed as when
    ext4_generic_write_inline_data calls ext4_prepare_inline_data, pos + len
    will be truncated, leading to ext4_prepare_inline_data parameter to be 6
    instead of 0x10000000006.
    
    Then, later when write_end is called, we hit:
    
            BUG_ON(pos + len > EXT4_I(inode)->i_inline_size);
    
    at ext4_write_inline_data.
    
    Fix it by using a loff_t type for the len parameter in
    ext4_prepare_inline_data instead of an unsigned int.
    
    [   44.545164] ------------[ cut here ]------------
    [   44.545530] kernel BUG at fs/ext4/inline.c:240!
    [   44.545834] Oops: invalid opcode: 0000 [#1] SMP NOPTI
    [   44.546172] CPU: 3 UID: 0 PID: 343 Comm: test Not tainted 6.15.0-rc2-00003-g9080916f4863 #45 PREEMPT(full)  112853fcebfdb93254270a7959841d2c6aa2c8bb
    [   44.546523] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [   44.546523] RIP: 0010:ext4_write_inline_data+0xfe/0x100
    [   44.546523] Code: 3c 0e 48 83 c7 48 48 89 de 5b 41 5c 41 5d 41 5e 41 5f 5d e9 e4 fa 43 01 5b 41 5c 41 5d 41 5e 41 5f 5d c3 cc cc cc cc cc 0f 0b <0f> 0b 0f 1f 44 00 00 55 41 57 41 56 41 55 41 54 53 48 83 ec 20 49
    [   44.546523] RSP: 0018:ffffb342008b79a8 EFLAGS: 00010216
    [   44.546523] RAX: 0000000000000001 RBX: ffff9329c579c000 RCX: 0000010000000006
    [   44.546523] RDX: 000000000000003c RSI: ffffb342008b79f0 RDI: ffff9329c158e738
    [   44.546523] RBP: 0000000000000001 R08: 0000000000000001 R09: 0000000000000000
    [   44.546523] R10: 00007ffffffff000 R11: ffffffff9bd0d910 R12: 0000006210000000
    [   44.546523] R13: fffffc7e4015e700 R14: 0000010000000005 R15: ffff9329c158e738
    [   44.546523] FS:  00007f4299934740(0000) GS:ffff932a60179000(0000) knlGS:0000000000000000
    [   44.546523] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   44.546523] CR2: 00007f4299a1ec90 CR3: 0000000002886002 CR4: 0000000000770eb0
    [   44.546523] PKRU: 55555554
    [   44.546523] Call Trace:
    [   44.546523]  <TASK>
    [   44.546523]  ext4_write_inline_data_end+0x126/0x2d0
    [   44.546523]  generic_perform_write+0x17e/0x270
    [   44.546523]  ext4_buffered_write_iter+0xc8/0x170
    [   44.546523]  vfs_write+0x2be/0x3e0
    [   44.546523]  __x64_sys_pwrite64+0x6d/0xc0
    [   44.546523]  do_syscall_64+0x6a/0xf0
    [   44.546523]  ? __wake_up+0x89/0xb0
    [   44.546523]  ? xas_find+0x72/0x1c0
    [   44.546523]  ? next_uptodate_folio+0x317/0x330
    [   44.546523]  ? set_pte_range+0x1a6/0x270
    [   44.546523]  ? filemap_map_pages+0x6ee/0x840
    [   44.546523]  ? ext4_setattr+0x2fa/0x750
    [   44.546523]  ? do_pte_missing+0x128/0xf70
    [   44.546523]  ? security_inode_post_setattr+0x3e/0xd0
    [   44.546523]  ? ___pte_offset_map+0x19/0x100
    [   44.546523]  ? handle_mm_fault+0x721/0xa10
    [   44.546523]  ? do_user_addr_fault+0x197/0x730
    [   44.546523]  ? do_syscall_64+0x76/0xf0
    [   44.546523]  ? arch_exit_to_user_mode_prepare+0x1e/0x60
    [   44.546523]  ? irqentry_exit_to_user_mode+0x79/0x90
    [   44.546523]  entry_SYSCALL_64_after_hwframe+0x55/0x5d
    [   44.546523] RIP: 0033:0x7f42999c6687
    [   44.546523] Code: 48 89 fa 4c 89 df e8 58 b3 00 00 8b 93 08 03 00 00 59 5e 48 83 f8 fc 74 1a 5b c3 0f 1f 84 00 00 00 00 00 48 8b 44 24 10 0f 05 <5b> c3 0f 1f 80 00 00 00 00 83 e2 39 83 fa 08 75 de e8 23 ff ff ff
    [   44.546523] RSP: 002b:00007ffeae4a7930 EFLAGS: 00000202 ORIG_RAX: 0000000000000012
    [   44.546523] RAX: ffffffffffffffda RBX: 00007f4299934740 RCX: 00007f42999c6687
    [   44.546523] RDX: 0000000000000001 RSI: 000055ea6149200f RDI: 0000000000000003
    [   44.546523] RBP: 00007ffeae4a79a0 R08: 0000000000000000 R09: 0000000000000000
    [   44.546523] R10: 0000010000000005 R11: 0000000000000202 R12: 0000000000000000
    [   44.546523] R13: 00007ffeae4a7ac8 R14: 00007f4299b86000 R15: 000055ea61493dd8
    [   44.546523]  </TASK>
    [   44.546523] Modules linked in:
    [   44.568501] ---[ end trace 0000000000000000 ]---
    [   44.568889] RIP: 0010:ext4_write_inline_data+0xfe/0x100
    [   44.569328] Code: 3c 0e 48 83 c7 48 48 89 de 5b 41 5c 41 5d 41 5e 41 5f 5d e9 e4 fa 43 01 5b 41 5c 41 5d 41 5e 41 5f 5d c3 cc cc cc cc cc 0f 0b <0f> 0b 0f 1f 44 00 00 55 41 57 41 56 41 55 41 54 53 48 83 ec 20 49
    [   44.570931] RSP: 0018:ffffb342008b79a8 EFLAGS: 00010216
    [   44.571356] RAX: 0000000000000001 RBX: ffff9329c579c000 RCX: 0000010000000006
    [   44.571959] RDX: 000000000000003c RSI: ffffb342008b79f0 RDI: ffff9329c158e738
    [   44.572571] RBP: 0000000000000001 R08: 0000000000000001 R09: 0000000000000000
    [   44.573148] R10: 00007ffffffff000 R11: ffffffff9bd0d910 R12: 0000006210000000
    [   44.573748] R13: fffffc7e4015e700 R14: 0000010000000005 R15: ffff9329c158e738
    [   44.574335] FS:  00007f4299934740(0000) GS:ffff932a60179000(0000) knlGS:0000000000000000
    [   44.575027] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   44.575520] CR2: 00007f4299a1ec90 CR3: 0000000002886002 CR4: 0000000000770eb0
    [   44.576112] PKRU: 55555554
    [   44.576338] Kernel panic - not syncing: Fatal exception
    [   44.576517] Kernel Offset: 0x1a600000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
    
    Reported-by: syzbot+fe2a25dae02a207717a0@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=fe2a25dae02a207717a0
    Fixes: f19d5870cbf7 ("ext4: add normal write support for inline data")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Link: https://patch.msgid.link/20250415-ext4-prepare-inline-overflow-v1-1-f4c13d900967@igalia.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
f2fs: clean up w/ fscrypt_is_bounce_page() [+ + +]
Author: Chao Yu <chao@kernel.org>
Date:   Mon Apr 14 18:52:36 2025 +0800

    f2fs: clean up w/ fscrypt_is_bounce_page()
    
    [ Upstream commit 0c708e35cf26449ca317fcbfc274704660b6d269 ]
    
    Just cleanup, no logic changes.
    
    Signed-off-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

f2fs: fix to correct check conditions in f2fs_cross_rename [+ + +]
Author: Zhiguo Niu <zhiguo.niu@unisoc.com>
Date:   Wed May 14 16:45:49 2025 +0800

    f2fs: fix to correct check conditions in f2fs_cross_rename
    
    [ Upstream commit 9883494c45a13dc88d27dde4f988c04823b42a2f ]
    
    Should be "old_dir" here.
    
    Fixes: 5c57132eaf52 ("f2fs: support project quota")
    Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com>
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

f2fs: fix to do sanity check on sbi->total_valid_block_count [+ + +]
Author: Chao Yu <chao@kernel.org>
Date:   Tue Apr 8 20:22:08 2025 +0800

    f2fs: fix to do sanity check on sbi->total_valid_block_count
    
    [ Upstream commit 05872a167c2cab80ef186ef23cc34a6776a1a30c ]
    
    syzbot reported a f2fs bug as below:
    
    ------------[ cut here ]------------
    kernel BUG at fs/f2fs/f2fs.h:2521!
    RIP: 0010:dec_valid_block_count+0x3b2/0x3c0 fs/f2fs/f2fs.h:2521
    Call Trace:
     f2fs_truncate_data_blocks_range+0xc8c/0x11a0 fs/f2fs/file.c:695
     truncate_dnode+0x417/0x740 fs/f2fs/node.c:973
     truncate_nodes+0x3ec/0xf50 fs/f2fs/node.c:1014
     f2fs_truncate_inode_blocks+0x8e3/0x1370 fs/f2fs/node.c:1197
     f2fs_do_truncate_blocks+0x840/0x12b0 fs/f2fs/file.c:810
     f2fs_truncate_blocks+0x10d/0x300 fs/f2fs/file.c:838
     f2fs_truncate+0x417/0x720 fs/f2fs/file.c:888
     f2fs_setattr+0xc4f/0x12f0 fs/f2fs/file.c:1112
     notify_change+0xbca/0xe90 fs/attr.c:552
     do_truncate+0x222/0x310 fs/open.c:65
     handle_truncate fs/namei.c:3466 [inline]
     do_open fs/namei.c:3849 [inline]
     path_openat+0x2e4f/0x35d0 fs/namei.c:4004
     do_filp_open+0x284/0x4e0 fs/namei.c:4031
     do_sys_openat2+0x12b/0x1d0 fs/open.c:1429
     do_sys_open fs/open.c:1444 [inline]
     __do_sys_creat fs/open.c:1522 [inline]
     __se_sys_creat fs/open.c:1516 [inline]
     __x64_sys_creat+0x124/0x170 fs/open.c:1516
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xf3/0x230 arch/x86/entry/syscall_64.c:94
    
    The reason is: in fuzzed image, sbi->total_valid_block_count is
    inconsistent w/ mapped blocks indexed by inode, so, we should
    not trigger panic for such case, instead, let's print log and
    set fsck flag.
    
    Fixes: 39a53e0ce0df ("f2fs: add superblock and major in-memory structure")
    Reported-by: syzbot+8b376a77b2f364097fbe@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/linux-f2fs-devel/67f3c0b2.050a0220.396535.0547.GAE@google.com
    Signed-off-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

f2fs: prevent kernel warning due to negative i_nlink from corrupted image [+ + +]
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Sat Apr 12 21:09:46 2025 +0000

    f2fs: prevent kernel warning due to negative i_nlink from corrupted image
    
    commit 42cb74a92adaf88061039601ddf7c874f58b554e upstream.
    
    WARNING: CPU: 1 PID: 9426 at fs/inode.c:417 drop_nlink+0xac/0xd0
    home/cc/linux/fs/inode.c:417
    Modules linked in:
    CPU: 1 UID: 0 PID: 9426 Comm: syz-executor568 Not tainted
    6.14.0-12627-g94d471a4f428 #2 PREEMPT(full)
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    1.13.0-1ubuntu1.1 04/01/2014
    RIP: 0010:drop_nlink+0xac/0xd0 home/cc/linux/fs/inode.c:417
    Code: 48 8b 5d 28 be 08 00 00 00 48 8d bb 70 07 00 00 e8 f9 67 e6 ff
    f0 48 ff 83 70 07 00 00 5b 5d e9 9a 12 82 ff e8 95 12 82 ff 90
    <0f> 0b 90 c7 45 48 ff ff ff ff 5b 5d e9 83 12 82 ff e8 fe 5f e6
    ff
    RSP: 0018:ffffc900026b7c28 EFLAGS: 00010293
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff8239710f
    RDX: ffff888041345a00 RSI: ffffffff8239717b RDI: 0000000000000005
    RBP: ffff888054509ad0 R08: 0000000000000005 R09: 0000000000000000
    R10: 0000000000000000 R11: ffffffff9ab36f08 R12: ffff88804bb40000
    R13: ffff8880545091e0 R14: 0000000000008000 R15: ffff8880545091e0
    FS:  000055555d0c5880(0000) GS:ffff8880eb3e3000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f915c55b178 CR3: 0000000050d20000 CR4: 0000000000352ef0
    Call Trace:
     <task>
     f2fs_i_links_write home/cc/linux/fs/f2fs/f2fs.h:3194 [inline]
     f2fs_drop_nlink+0xd1/0x3c0 home/cc/linux/fs/f2fs/dir.c:845
     f2fs_delete_entry+0x542/0x1450 home/cc/linux/fs/f2fs/dir.c:909
     f2fs_unlink+0x45c/0x890 home/cc/linux/fs/f2fs/namei.c:581
     vfs_unlink+0x2fb/0x9b0 home/cc/linux/fs/namei.c:4544
     do_unlinkat+0x4c5/0x6a0 home/cc/linux/fs/namei.c:4608
     __do_sys_unlink home/cc/linux/fs/namei.c:4654 [inline]
     __se_sys_unlink home/cc/linux/fs/namei.c:4652 [inline]
     __x64_sys_unlink+0xc5/0x110 home/cc/linux/fs/namei.c:4652
     do_syscall_x64 home/cc/linux/arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xc7/0x250 home/cc/linux/arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7fb3d092324b
    Code: 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01 48 83 c8 ff c3 66
    2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 57 00 00 00 0f 05
    <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01
    48
    RSP: 002b:00007ffdc232d938 EFLAGS: 00000206 ORIG_RAX: 0000000000000057
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fb3d092324b
    RDX: 00007ffdc232d960 RSI: 00007ffdc232d960 RDI: 00007ffdc232d9f0
    RBP: 00007ffdc232d9f0 R08: 0000000000000001 R09: 00007ffdc232d7c0
    R10: 00000000fffffffd R11: 0000000000000206 R12: 00007ffdc232eaf0
    R13: 000055555d0cebb0 R14: 00007ffdc232d958 R15: 0000000000000001
     </task>
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

f2fs: use d_inode(dentry) cleanup dentry->d_inode [+ + +]
Author: Zhiguo Niu <zhiguo.niu@unisoc.com>
Date:   Wed May 14 16:45:48 2025 +0800

    f2fs: use d_inode(dentry) cleanup dentry->d_inode
    
    [ Upstream commit a6c397a31f58a1d577c2c8d04b624e9baa31951c ]
    
    no logic changes.
    
    Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com>
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fbdev: core: fbcvt: avoid division by 0 in fb_cvt_hperiod() [+ + +]
Author: Sergey Shtylyov <s.shtylyov@omp.ru>
Date:   Wed May 14 23:35:58 2025 +0300

    fbdev: core: fbcvt: avoid division by 0 in fb_cvt_hperiod()
    
    [ Upstream commit 3f6dae09fc8c306eb70fdfef70726e1f154e173a ]
    
    In fb_find_mode_cvt(), iff mode->refresh somehow happens to be 0x80000000,
    cvt.f_refresh will become 0 when multiplying it by 2 due to overflow. It's
    then passed to fb_cvt_hperiod(), where it's used as a divider -- division
    by 0 will result in kernel oops. Add a sanity check for cvt.f_refresh to
    avoid such overflow...
    
    Found by Linux Verification Center (linuxtesting.org) with the Svace static
    analysis tool.
    
    Fixes: 96fe6a2109db ("[PATCH] fbdev: Add VESA Coordinated Video Timings (CVT) support")
    Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

fbdev: Fix fb_set_var to prevent null-ptr-deref in fb_videomode_to_var [+ + +]
Author: Murad Masimov <m.masimov@mt-integration.ru>
Date:   Mon Apr 28 18:34:07 2025 +0300

    fbdev: Fix fb_set_var to prevent null-ptr-deref in fb_videomode_to_var
    
    commit 05f6e183879d9785a3cdf2f08a498bc31b7a20aa upstream.
    
    If fb_add_videomode() in fb_set_var() fails to allocate memory for
    fb_videomode, later it may lead to a null-ptr dereference in
    fb_videomode_to_var(), as the fb_info is registered while not having the
    mode in modelist that is expected to be there, i.e. the one that is
    described in fb_info->var.
    
    ================================================================
    general protection fault, probably for non-canonical address 0xdffffc0000000001: 0000 [#1] PREEMPT SMP KASAN NOPTI
    KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f]
    CPU: 1 PID: 30371 Comm: syz-executor.1 Not tainted 5.10.226-syzkaller #0
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
    RIP: 0010:fb_videomode_to_var+0x24/0x610 drivers/video/fbdev/core/modedb.c:901
    Call Trace:
     display_to_var+0x3a/0x7c0 drivers/video/fbdev/core/fbcon.c:929
     fbcon_resize+0x3e2/0x8f0 drivers/video/fbdev/core/fbcon.c:2071
     resize_screen drivers/tty/vt/vt.c:1176 [inline]
     vc_do_resize+0x53a/0x1170 drivers/tty/vt/vt.c:1263
     fbcon_modechanged+0x3ac/0x6e0 drivers/video/fbdev/core/fbcon.c:2720
     fbcon_update_vcs+0x43/0x60 drivers/video/fbdev/core/fbcon.c:2776
     do_fb_ioctl+0x6d2/0x740 drivers/video/fbdev/core/fbmem.c:1128
     fb_ioctl+0xe7/0x150 drivers/video/fbdev/core/fbmem.c:1203
     vfs_ioctl fs/ioctl.c:48 [inline]
     __do_sys_ioctl fs/ioctl.c:753 [inline]
     __se_sys_ioctl fs/ioctl.c:739 [inline]
     __x64_sys_ioctl+0x19a/0x210 fs/ioctl.c:739
     do_syscall_64+0x33/0x40 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x67/0xd1
    ================================================================
    
    The reason is that fb_info->var is being modified in fb_set_var(), and
    then fb_videomode_to_var() is called. If it fails to add the mode to
    fb_info->modelist, fb_set_var() returns error, but does not restore the
    old value of fb_info->var. Restore fb_info->var on failure the same way
    it is done earlier in the function.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable@vger.kernel.org
    Signed-off-by: Murad Masimov <m.masimov@mt-integration.ru>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
firmware: psci: Fix refcount leak in psci_dt_init [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Tue Mar 18 23:17:12 2025 +0800

    firmware: psci: Fix refcount leak in psci_dt_init
    
    [ Upstream commit 7ff37d29fd5c27617b9767e1b8946d115cf93a1e ]
    
    Fix a reference counter leak in psci_dt_init() where of_node_put(np) was
    missing after of_find_matching_node_and_match() when np is unavailable.
    
    Fixes: d09a0011ec0d ("drivers: psci: Allow PSCI node to be disabled")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Reviewed-by: Gavin Shan <gshan@redhat.com>
    Acked-by: Mark Rutland <mark.rutland@arm.com>
    Link: https://lore.kernel.org/r/20250318151712.28763-1-linmq006@gmail.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fs/filesystems: Fix potential unsigned integer underflow in fs_name() [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Thu Apr 10 19:45:27 2025 +0800

    fs/filesystems: Fix potential unsigned integer underflow in fs_name()
    
    [ Upstream commit 1363c134ade81e425873b410566e957fecebb261 ]
    
    fs_name() has @index as unsigned int, so there is underflow risk for
    operation '@index--'.
    
    Fix by breaking the for loop when '@index == 0' which is also more proper
    than '@index <= 0' for unsigned integer comparison.
    
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Link: https://lore.kernel.org/20250410-fix_fs-v1-1-7c14ccc8ebaa@quicinc.com
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ftrace: Fix UAF when lookup kallsym after ftrace disabled [+ + +]
Author: Ye Bin <yebin10@huawei.com>
Date:   Thu May 29 19:19:54 2025 +0800

    ftrace: Fix UAF when lookup kallsym after ftrace disabled
    
    commit f914b52c379c12288b7623bb814d0508dbe7481d upstream.
    
    The following issue happens with a buggy module:
    
    BUG: unable to handle page fault for address: ffffffffc05d0218
    PGD 1bd66f067 P4D 1bd66f067 PUD 1bd671067 PMD 101808067 PTE 0
    Oops: Oops: 0000 [#1] SMP KASAN PTI
    Tainted: [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    RIP: 0010:sized_strscpy+0x81/0x2f0
    RSP: 0018:ffff88812d76fa08 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: ffffffffc0601010 RCX: dffffc0000000000
    RDX: 0000000000000038 RSI: dffffc0000000000 RDI: ffff88812608da2d
    RBP: 8080808080808080 R08: ffff88812608da2d R09: ffff88812608da68
    R10: ffff88812608d82d R11: ffff88812608d810 R12: 0000000000000038
    R13: ffff88812608da2d R14: ffffffffc05d0218 R15: fefefefefefefeff
    FS:  00007fef552de740(0000) GS:ffff8884251c7000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffffc05d0218 CR3: 00000001146f0000 CR4: 00000000000006f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     ftrace_mod_get_kallsym+0x1ac/0x590
     update_iter_mod+0x239/0x5b0
     s_next+0x5b/0xa0
     seq_read_iter+0x8c9/0x1070
     seq_read+0x249/0x3b0
     proc_reg_read+0x1b0/0x280
     vfs_read+0x17f/0x920
     ksys_read+0xf3/0x1c0
     do_syscall_64+0x5f/0x2e0
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    The above issue may happen as follows:
    (1) Add kprobe tracepoint;
    (2) insmod test.ko;
    (3)  Module triggers ftrace disabled;
    (4) rmmod test.ko;
    (5) cat /proc/kallsyms; --> Will trigger UAF as test.ko already removed;
    ftrace_mod_get_kallsym()
    ...
    strscpy(module_name, mod_map->mod->name, MODULE_NAME_LEN);
    ...
    
    The problem is when a module triggers an issue with ftrace and
    sets ftrace_disable. The ftrace_disable is set when an anomaly is
    discovered and to prevent any more damage, ftrace stops all text
    modification. The issue that happened was that the ftrace_disable stops
    more than just the text modification.
    
    When a module is loaded, its init functions can also be traced. Because
    kallsyms deletes the init functions after a module has loaded, ftrace
    saves them when the module is loaded and function tracing is enabled. This
    allows the output of the function trace to show the init function names
    instead of just their raw memory addresses.
    
    When a module is removed, ftrace_release_mod() is called, and if
    ftrace_disable is set, it just returns without doing anything more. The
    problem here is that it leaves the mod_list still around and if kallsyms
    is called, it will call into this code and access the module memory that
    has already been freed as it will return:
    
      strscpy(module_name, mod_map->mod->name, MODULE_NAME_LEN);
    
    Where the "mod" no longer exists and triggers a UAF bug.
    
    Link: https://lore.kernel.org/all/20250523135452.626d8dcd@gandalf.local.home/
    
    Cc: stable@vger.kernel.org
    Fixes: aba4b5c22cba ("ftrace: Save module init functions kallsyms symbols for tracing")
    Link: https://lore.kernel.org/20250529111955.2349189-2-yebin@huaweicloud.com
    Signed-off-by: Ye Bin <yebin10@huawei.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
gfs2: gfs2_create_inode error handling fix [+ + +]
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Fri Apr 18 16:40:58 2025 +0200

    gfs2: gfs2_create_inode error handling fix
    
    [ Upstream commit af4044fd0b77e915736527dd83011e46e6415f01 ]
    
    When gfs2_create_inode() finds a directory, make sure to return -EISDIR.
    
    Fixes: 571a4b57975a ("GFS2: bugger off early if O_CREAT open finds a directory")
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gfs2: move msleep to sleepable context [+ + +]
Author: Alexander Aring <aahringo@redhat.com>
Date:   Mon Mar 31 19:03:24 2025 -0400

    gfs2: move msleep to sleepable context
    
    commit ac5ee087d31ed93b6e45d2968a66828c6f621d8c upstream.
    
    This patch moves the msleep_interruptible() out of the non-sleepable
    context by moving the ls->ls_recover_spin spinlock around so
    msleep_interruptible() will be called in a sleepable context.
    
    Cc: stable@vger.kernel.org
    Fixes: 4a7727725dc7 ("GFS2: Fix recovery issues for spectators")
    Suggested-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Alexander Aring <aahringo@redhat.com>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
HID: usbhid: Eliminate recurrent out-of-bounds bug in usbhid_parse() [+ + +]
Author: Terry Junge <linuxhid@cosmicgizmosystems.com>
Date:   Wed Mar 12 15:23:31 2025 -0700

    HID: usbhid: Eliminate recurrent out-of-bounds bug in usbhid_parse()
    
    commit fe7f7ac8e0c708446ff017453add769ffc15deed upstream.
    
    Update struct hid_descriptor to better reflect the mandatory and
    optional parts of the HID Descriptor as per USB HID 1.11 specification.
    Note: the kernel currently does not parse any optional HID class
    descriptors, only the mandatory report descriptor.
    
    Update all references to member element desc[0] to rpt_desc.
    
    Add test to verify bLength and bNumDescriptors values are valid.
    
    Replace the for loop with direct access to the mandatory HID class
    descriptor member for the report descriptor. This eliminates the
    possibility of getting an out-of-bounds fault.
    
    Add a warning message if the HID descriptor contains any unsupported
    optional HID class descriptors.
    
    Reported-by: syzbot+c52569baf0c843f35495@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=c52569baf0c843f35495
    Fixes: f043bfc98c19 ("HID: usbhid: fix out-of-bounds bug")
    Cc: stable@vger.kernel.org
    Signed-off-by: Terry Junge <linuxhid@cosmicgizmosystems.com>
    Reviewed-by: Michael Kelley <mhklinux@outlook.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Terry Junge <linuxhid@cosmicgizmosystems.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
hwmon: (occ) fix unaligned accesses [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Jun 10 11:25:49 2025 +0200

    hwmon: (occ) fix unaligned accesses
    
    [ Upstream commit 2c021b45c154958566aad0cae9f74ab26a2d5732 ]
    
    Passing a pointer to an unaligned integer as a function argument is
    undefined behavior:
    
    drivers/hwmon/occ/common.c:492:27: warning: taking address of packed member 'accumulator' of class or structure 'power_sensor_2' may result in an unaligned pointer value [-Waddress-of-packed-member]
      492 |   val = occ_get_powr_avg(&power->accumulator,
          |                           ^~~~~~~~~~~~~~~~~~
    drivers/hwmon/occ/common.c:493:13: warning: taking address of packed member 'update_tag' of class or structure 'power_sensor_2' may result in an unaligned pointer value [-Waddress-of-packed-member]
      493 |            &power->update_tag);
          |             ^~~~~~~~~~~~~~~~~
    
    Move the get_unaligned() calls out of the function and pass these
    through argument registers instead.
    
    Fixes: c10e753d43eb ("hwmon (occ): Add sensor types and versions")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20250610092553.2641094-1-arnd@kernel.org
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i2c: designware: Invoke runtime suspend on quick slave re-registration [+ + +]
Author: Tan En De <ende.tan@starfivetech.com>
Date:   Sat Apr 12 10:33:03 2025 +0800

    i2c: designware: Invoke runtime suspend on quick slave re-registration
    
    [ Upstream commit 2fe2b969d911a09abcd6a47401a3c66c38a310e6 ]
    
    Replaced pm_runtime_put() with pm_runtime_put_sync_suspend() to ensure
    the runtime suspend is invoked immediately when unregistering a slave.
    This prevents a race condition where suspend was skipped when
    unregistering and registering slave in quick succession.
    
    For example, consider the rapid sequence of
    `delete_device -> new_device -> delete_device -> new_device`.
    In this sequence, it is observed that the dw_i2c_plat_runtime_suspend()
    might not be invoked after `delete_device` operation.
    
    This is because after `delete_device` operation, when the
    pm_runtime_put() is about to trigger suspend, the following `new_device`
    operation might race and cancel the suspend.
    
    If that happens, during the `new_device` operation,
    dw_i2c_plat_runtime_resume() is skipped (since there was no suspend), which
    means `i_dev->init()`, i.e. i2c_dw_init_slave(), is skipped.
    Since i2c_dw_init_slave() is skipped, i2c_dw_configure_fifo_slave() is
    skipped too, which leaves `DW_IC_INTR_MASK` unconfigured. If we inspect
    the interrupt mask register using devmem, it will show as zero.
    
    Example shell script to reproduce the issue:
    ```
      #!/bin/sh
    
      SLAVE_LADDR=0x1010
      SLAVE_BUS=13
      NEW_DEVICE=/sys/bus/i2c/devices/i2c-$SLAVE_BUS/new_device
      DELETE_DEVICE=/sys/bus/i2c/devices/i2c-$SLAVE_BUS/delete_device
    
      # Create initial device
      echo slave-24c02 $SLAVE_LADDR > $NEW_DEVICE
      sleep 2
    
      # Rapid sequence of
      # delete_device -> new_device -> delete_device -> new_device
      echo $SLAVE_LADDR > $DELETE_DEVICE
      echo slave-24c02 $SLAVE_LADDR > $NEW_DEVICE
      echo $SLAVE_LADDR > $DELETE_DEVICE
      echo slave-24c02 $SLAVE_LADDR > $NEW_DEVICE
    
      # Using devmem to inspect IC_INTR_MASK will show as zero
    ```
    
    Signed-off-by: Tan En De <ende.tan@starfivetech.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Link: https://lore.kernel.org/r/20250412023303.378600-1-ende.tan@starfivetech.com
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i40e: fix MMIO write access to an invalid page in i40e_clear_hw [+ + +]
Author: Kyungwook Boo <bookyungwook@gmail.com>
Date:   Tue Mar 11 14:16:02 2025 +0900

    i40e: fix MMIO write access to an invalid page in i40e_clear_hw
    
    [ Upstream commit 015bac5daca978448f2671478c553ce1f300c21e ]
    
    When the device sends a specific input, an integer underflow can occur, leading
    to MMIO write access to an invalid page.
    
    Prevent the integer underflow by changing the type of related variables.
    
    Signed-off-by: Kyungwook Boo <bookyungwook@gmail.com>
    Link: https://lore.kernel.org/lkml/ffc91764-1142-4ba2-91b6-8c773f6f7095@gmail.com/T/
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
    Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i40e: retry VFLR handling if there is ongoing VF reset [+ + +]
Author: Robert Malz <robert.malz@canonical.com>
Date:   Tue May 20 10:31:52 2025 +0200

    i40e: retry VFLR handling if there is ongoing VF reset
    
    [ Upstream commit fb4e9239e029954a37a00818b21e837cebf2aa10 ]
    
    When a VFLR interrupt is received during a VF reset initiated from a
    different source, the VFLR may be not fully handled. This can
    leave the VF in an undefined state.
    To address this, set the I40E_VFLR_EVENT_PENDING bit again during VFLR
    handling if the reset is not yet complete. This ensures the driver
    will properly complete the VF reset in such scenarios.
    
    Fixes: 52424f974bc5 ("i40e: Fix VF hang when reset is triggered on another VF")
    Signed-off-by: Robert Malz <robert.malz@canonical.com>
    Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i40e: return false from i40e_reset_vf if reset is in progress [+ + +]
Author: Robert Malz <robert.malz@canonical.com>
Date:   Tue May 20 10:31:51 2025 +0200

    i40e: return false from i40e_reset_vf if reset is in progress
    
    [ Upstream commit a2c90d63b71223d69a813333c1abf4fdacddbbe5 ]
    
    The function i40e_vc_reset_vf attempts, up to 20 times, to handle a
    VF reset request, using the return value of i40e_reset_vf as an indicator
    of whether the reset was successfully triggered. Currently, i40e_reset_vf
    always returns true, which causes new reset requests to be ignored if a
    different VF reset is already in progress.
    
    This patch updates the return value of i40e_reset_vf to reflect when
    another VF reset is in progress, allowing the caller to properly use
    the retry mechanism.
    
    Fixes: 52424f974bc5 ("i40e: Fix VF hang when reset is triggered on another VF")
    Signed-off-by: Robert Malz <robert.malz@canonical.com>
    Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ice: create new Tx scheduler nodes for new queues only [+ + +]
Author: Michal Kubiak <michal.kubiak@intel.com>
Date:   Tue May 13 12:55:28 2025 +0200

    ice: create new Tx scheduler nodes for new queues only
    
    [ Upstream commit 6fa2942578472c9cab13a8fc1dae0d830193e0a1 ]
    
    The current implementation of the Tx scheduler tree attempts
    to create nodes for all Tx queues, ignoring the fact that some
    queues may already exist in the tree. For example, if the VSI
    already has 128 Tx queues and the user requests for 16 new queues,
    the Tx scheduler will compute the tree for 272 queues (128 existing
    queues + 144 new queues), instead of 144 queues (128 existing queues
    and 16 new queues).
    Fix that by modifying the node count calculation algorithm to skip
    the queues that already exist in the tree.
    
    Fixes: 5513b920a4f7 ("ice: Update Tx scheduler tree for VSI multi-Tx queue support")
    Reviewed-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com>
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Signed-off-by: Michal Kubiak <michal.kubiak@intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Tested-by: Jesse Brandeburg <jbrandeburg@cloudflare.com>
    Tested-by: Saritha Sanigani <sarithax.sanigani@intel.com> (A Contingent Worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iio: adc: ad7606_spi: fix reg write value mask [+ + +]
Author: David Lechner <dlechner@baylibre.com>
Date:   Mon Apr 28 20:55:34 2025 -0500

    iio: adc: ad7606_spi: fix reg write value mask
    
    commit 89944d88f8795c6c89b9514cb365998145511cd4 upstream.
    
    Fix incorrect value mask for register write. Register values are 8-bit,
    not 9. If this function was called with a value > 0xFF and an even addr,
    it would cause writing to the next register.
    
    Fixes: f2a22e1e172f ("iio: adc: ad7606: Add support for software mode for ad7616")
    Signed-off-by: David Lechner <dlechner@baylibre.com>
    Reviewed-by: Angelo Dureghello <adureghello@baylibre.com>
    Link: https://patch.msgid.link/20250428-iio-adc-ad7606_spi-fix-write-value-mask-v1-1-a2d5e85a809f@baylibre.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Input: ims-pcu - check record size in ims_pcu_flash_firmware() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Fri May 30 16:13:32 2025 -0700

    Input: ims-pcu - check record size in ims_pcu_flash_firmware()
    
    commit a95ef0199e80f3384eb992889322957d26c00102 upstream.
    
    The "len" variable comes from the firmware and we generally do
    trust firmware, but it's always better to double check.  If the "len"
    is too large it could result in memory corruption when we do
    "memcpy(fragment->data, rec->data, len);"
    
    Fixes: 628329d52474 ("Input: add IMS Passenger Control Unit driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/131fd1ae92c828ee9f4fa2de03d8c210ae1f3524.1748463049.git.dan.carpenter@linaro.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: sparcspkr - avoid unannotated fall-through [+ + +]
Author: WangYuli <wangyuli@uniontech.com>
Date:   Fri Apr 18 18:37:18 2025 -0700

    Input: sparcspkr - avoid unannotated fall-through
    
    commit 8b1d858cbd4e1800e9336404ba7892b5a721230d upstream.
    
    Fix follow warnings with clang-21i (and reformat for clarity):
      drivers/input/misc/sparcspkr.c:78:3: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
         78 |                 case SND_TONE: break;
            |                 ^
      drivers/input/misc/sparcspkr.c:78:3: note: insert 'break;' to avoid fall-through
         78 |                 case SND_TONE: break;
            |                 ^
            |                 break;
      drivers/input/misc/sparcspkr.c:113:3: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
        113 |                 case SND_TONE: break;
            |                 ^
      drivers/input/misc/sparcspkr.c:113:3: note: insert 'break;' to avoid fall-through
        113 |                 case SND_TONE: break;
            |                 ^
            |                 break;
      2 warnings generated.
    
    Signed-off-by: WangYuli <wangyuli@uniontech.com>
    Link: https://lore.kernel.org/r/6730E40353C76908+20250415052439.155051-1-wangyuli@uniontech.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: synaptics-rmi - fix crash with unsupported versions of F34 [+ + +]
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Mon May 5 15:49:59 2025 -0700

    Input: synaptics-rmi - fix crash with unsupported versions of F34
    
    [ Upstream commit ca39500f6af9cfe6823dc5aa8fbaed788d6e35b2 ]
    
    Sysfs interface for updating firmware for RMI devices is available even
    when F34 probe fails. The code checks for presence of F34 "container"
    pointer and then tries to use the function data attached to the
    sub-device. F34 assigns the function data early, before it knows if
    probe will succeed, leaving behind a stale pointer.
    
    Fix this by expanding checks to not only test for presence of F34
    "container" but also check if there is driver data assigned to the
    sub-device, and call dev_set_drvdata() only after we are certain that
    probe is successful.
    
    This is not a complete fix, since F34 will be freed during firmware
    update, so there is still a race when fetching and accessing this
    pointer. This race will be addressed in follow-up changes.
    
    Reported-by: Hanno Böck <hanno@hboeck.de>
    Fixes: 29fd0ec2bdbe ("Input: synaptics-rmi4 - add support for F34 device reflash")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/aBlAl6sGulam-Qcx@google.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Input: synaptics-rmi4 - convert to use sysfs_emit() APIs [+ + +]
Author: zhang songyi <zhang.songyi@zte.com.cn>
Date:   Tue Sep 27 08:56:06 2022 -0700

    Input: synaptics-rmi4 - convert to use sysfs_emit() APIs
    
    [ Upstream commit 9dedc915937c33302df7fcab01c45e7936d6195a ]
    
    Follow the advice of the Documentation/filesystems/sysfs.rst and show()
    should only use sysfs_emit() or sysfs_emit_at() when formatting the value
    to be returned to user space.
    
    Reported-by: Zeal Robot <zealci@zte.com.cn>
    Signed-off-by: zhang songyi <zhang.songyi@zte.com.cn>
    Link: https://lore.kernel.org/r/20220927070936.258300-1-zhang.songyi@zte.com.cn
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Stable-dep-of: ca39500f6af9 ("Input: synaptics-rmi - fix crash with unsupported versions of F34")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipc: fix to protect IPCS lookups using RCU [+ + +]
Author: Jeongjun Park <aha310510@gmail.com>
Date:   Thu Apr 24 23:33:22 2025 +0900

    ipc: fix to protect IPCS lookups using RCU
    
    commit d66adabe91803ef34a8b90613c81267b5ded1472 upstream.
    
    syzbot reported that it discovered a use-after-free vulnerability, [0]
    
    [0]: https://lore.kernel.org/all/67af13f8.050a0220.21dd3.0038.GAE@google.com/
    
    idr_for_each() is protected by rwsem, but this is not enough.  If it is
    not protected by RCU read-critical region, when idr_for_each() calls
    radix_tree_node_free() through call_rcu() to free the radix_tree_node
    structure, the node will be freed immediately, and when reading the next
    node in radix_tree_for_each_slot(), the already freed memory may be read.
    
    Therefore, we need to add code to make sure that idr_for_each() is
    protected within the RCU read-critical region when we call it in
    shm_destroy_orphaned().
    
    Link: https://lkml.kernel.org/r/20250424143322.18830-1-aha310510@gmail.com
    Fixes: b34a6b1da371 ("ipc: introduce shm_rmid_forced sysctl")
    Signed-off-by: Jeongjun Park <aha310510@gmail.com>
    Reported-by: syzbot+a2b84e569d06ca3a949c@syzkaller.appspotmail.com
    Cc: Jeongjun Park <aha310510@gmail.com>
    Cc: Liam Howlett <liam.howlett@oracle.com>
    Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Vasiliy Kulikov <segoon@openwall.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ipv4/route: Use this_cpu_inc() for stats on PREEMPT_RT [+ + +]
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Mon May 12 11:27:24 2025 +0200

    ipv4/route: Use this_cpu_inc() for stats on PREEMPT_RT
    
    [ Upstream commit 1c0829788a6e6e165846b9bedd0b908ef16260b6 ]
    
    The statistics are incremented with raw_cpu_inc() assuming it always
    happens with bottom half disabled. Without per-CPU locking in
    local_bh_disable() on PREEMPT_RT this is no longer true.
    
    Use this_cpu_inc() on PREEMPT_RT for the increment to not worry about
    preemption.
    
    Cc: David Ahern <dsahern@kernel.org>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Link: https://patch.msgid.link/20250512092736.229935-4-bigeasy@linutronix.de
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
jbd2: fix data-race and null-ptr-deref in jbd2_journal_dirty_metadata() [+ + +]
Author: Jeongjun Park <aha310510@gmail.com>
Date:   Wed May 14 22:08:55 2025 +0900

    jbd2: fix data-race and null-ptr-deref in jbd2_journal_dirty_metadata()
    
    commit af98b0157adf6504fade79b3e6cb260c4ff68e37 upstream.
    
    Since handle->h_transaction may be a NULL pointer, so we should change it
    to call is_handle_aborted(handle) first before dereferencing it.
    
    And the following data-race was reported in my fuzzer:
    
    ==================================================================
    BUG: KCSAN: data-race in jbd2_journal_dirty_metadata / jbd2_journal_dirty_metadata
    
    write to 0xffff888011024104 of 4 bytes by task 10881 on cpu 1:
     jbd2_journal_dirty_metadata+0x2a5/0x770 fs/jbd2/transaction.c:1556
     __ext4_handle_dirty_metadata+0xe7/0x4b0 fs/ext4/ext4_jbd2.c:358
     ext4_do_update_inode fs/ext4/inode.c:5220 [inline]
     ext4_mark_iloc_dirty+0x32c/0xd50 fs/ext4/inode.c:5869
     __ext4_mark_inode_dirty+0xe1/0x450 fs/ext4/inode.c:6074
     ext4_dirty_inode+0x98/0xc0 fs/ext4/inode.c:6103
    ....
    
    read to 0xffff888011024104 of 4 bytes by task 10880 on cpu 0:
     jbd2_journal_dirty_metadata+0xf2/0x770 fs/jbd2/transaction.c:1512
     __ext4_handle_dirty_metadata+0xe7/0x4b0 fs/ext4/ext4_jbd2.c:358
     ext4_do_update_inode fs/ext4/inode.c:5220 [inline]
     ext4_mark_iloc_dirty+0x32c/0xd50 fs/ext4/inode.c:5869
     __ext4_mark_inode_dirty+0xe1/0x450 fs/ext4/inode.c:6074
     ext4_dirty_inode+0x98/0xc0 fs/ext4/inode.c:6103
    ....
    
    value changed: 0x00000000 -> 0x00000001
    ==================================================================
    
    This issue is caused by missing data-race annotation for jh->b_modified.
    Therefore, the missing annotation needs to be added.
    
    Reported-by: syzbot+de24c3fe3c4091051710@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=de24c3fe3c4091051710
    Fixes: 6e06ae88edae ("jbd2: speedup jbd2_journal_dirty_metadata()")
    Signed-off-by: Jeongjun Park <aha310510@gmail.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://patch.msgid.link/20250514130855.99010-1-aha310510@gmail.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
jffs2: check jffs2_prealloc_raw_node_refs() result in few other places [+ + +]
Author: Fedor Pchelkin <pchelkin@ispras.ru>
Date:   Tue Mar 25 19:32:13 2025 +0300

    jffs2: check jffs2_prealloc_raw_node_refs() result in few other places
    
    commit 2b6d96503255a3ed676cd70f8368870c6d6a25c6 upstream.
    
    Fuzzing hit another invalid pointer dereference due to the lack of
    checking whether jffs2_prealloc_raw_node_refs() completed successfully.
    Subsequent logic implies that the node refs have been allocated.
    
    Handle that. The code is ready for propagating the error upwards.
    
    KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f]
    CPU: 1 PID: 5835 Comm: syz-executor145 Not tainted 5.10.234-syzkaller #0
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
    RIP: 0010:jffs2_link_node_ref+0xac/0x690 fs/jffs2/nodelist.c:600
    Call Trace:
     jffs2_mark_erased_block fs/jffs2/erase.c:460 [inline]
     jffs2_erase_pending_blocks+0x688/0x1860 fs/jffs2/erase.c:118
     jffs2_garbage_collect_pass+0x638/0x1a00 fs/jffs2/gc.c:253
     jffs2_reserve_space+0x3f4/0xad0 fs/jffs2/nodemgmt.c:167
     jffs2_write_inode_range+0x246/0xb50 fs/jffs2/write.c:362
     jffs2_write_end+0x712/0x1110 fs/jffs2/file.c:302
     generic_perform_write+0x2c2/0x500 mm/filemap.c:3347
     __generic_file_write_iter+0x252/0x610 mm/filemap.c:3465
     generic_file_write_iter+0xdb/0x230 mm/filemap.c:3497
     call_write_iter include/linux/fs.h:2039 [inline]
     do_iter_readv_writev+0x46d/0x750 fs/read_write.c:740
     do_iter_write+0x18c/0x710 fs/read_write.c:866
     vfs_writev+0x1db/0x6a0 fs/read_write.c:939
     do_pwritev fs/read_write.c:1036 [inline]
     __do_sys_pwritev fs/read_write.c:1083 [inline]
     __se_sys_pwritev fs/read_write.c:1078 [inline]
     __x64_sys_pwritev+0x235/0x310 fs/read_write.c:1078
     do_syscall_64+0x30/0x40 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x67/0xd1
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: 2f785402f39b ("[JFFS2] Reduce visibility of raw_node_ref to upper layers of JFFS2 code.")
    Fixes: f560928baa60 ("[JFFS2] Allocate node_ref for wasted space when skipping to page boundary")
    Cc: stable@vger.kernel.org
    Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

jffs2: check that raw node were preallocated before writing summary [+ + +]
Author: Artem Sadovnikov <a.sadovnikov@ispras.ru>
Date:   Fri Mar 7 16:34:09 2025 +0000

    jffs2: check that raw node were preallocated before writing summary
    
    commit ec9e6f22bce433b260ea226de127ec68042849b0 upstream.
    
    Syzkaller detected a kernel bug in jffs2_link_node_ref, caused by fault
    injection in jffs2_prealloc_raw_node_refs. jffs2_sum_write_sumnode doesn't
    check return value of jffs2_prealloc_raw_node_refs and simply lets any
    error propagate into jffs2_sum_write_data, which eventually calls
    jffs2_link_node_ref in order to link the summary to an expectedly allocated
    node.
    
    kernel BUG at fs/jffs2/nodelist.c:592!
    invalid opcode: 0000 [#1] PREEMPT SMP KASAN NOPTI
    CPU: 1 PID: 31277 Comm: syz-executor.7 Not tainted 6.1.128-syzkaller-00139-ge10f83ca10a1 #0
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
    RIP: 0010:jffs2_link_node_ref+0x570/0x690 fs/jffs2/nodelist.c:592
    Call Trace:
     <TASK>
     jffs2_sum_write_data fs/jffs2/summary.c:841 [inline]
     jffs2_sum_write_sumnode+0xd1a/0x1da0 fs/jffs2/summary.c:874
     jffs2_do_reserve_space+0xa18/0xd60 fs/jffs2/nodemgmt.c:388
     jffs2_reserve_space+0x55f/0xaa0 fs/jffs2/nodemgmt.c:197
     jffs2_write_inode_range+0x246/0xb50 fs/jffs2/write.c:362
     jffs2_write_end+0x726/0x15d0 fs/jffs2/file.c:301
     generic_perform_write+0x314/0x5d0 mm/filemap.c:3856
     __generic_file_write_iter+0x2ae/0x4d0 mm/filemap.c:3973
     generic_file_write_iter+0xe3/0x350 mm/filemap.c:4005
     call_write_iter include/linux/fs.h:2265 [inline]
     do_iter_readv_writev+0x20f/0x3c0 fs/read_write.c:735
     do_iter_write+0x186/0x710 fs/read_write.c:861
     vfs_iter_write+0x70/0xa0 fs/read_write.c:902
     iter_file_splice_write+0x73b/0xc90 fs/splice.c:685
     do_splice_from fs/splice.c:763 [inline]
     direct_splice_actor+0x10c/0x170 fs/splice.c:950
     splice_direct_to_actor+0x337/0xa10 fs/splice.c:896
     do_splice_direct+0x1a9/0x280 fs/splice.c:1002
     do_sendfile+0xb13/0x12c0 fs/read_write.c:1255
     __do_sys_sendfile64 fs/read_write.c:1323 [inline]
     __se_sys_sendfile64 fs/read_write.c:1309 [inline]
     __x64_sys_sendfile64+0x1cf/0x210 fs/read_write.c:1309
     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
    
    Fix this issue by checking return value of jffs2_prealloc_raw_node_refs
    before calling jffs2_sum_write_data.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Cc: stable@vger.kernel.org
    Fixes: 2f785402f39b ("[JFFS2] Reduce visibility of raw_node_ref to upper layers of JFFS2 code.")
    Signed-off-by: Artem Sadovnikov <a.sadovnikov@ispras.ru>
    Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
jfs: fix array-index-out-of-bounds read in add_missing_indices [+ + +]
Author: Aditya Dutt <duttaditya18@gmail.com>
Date:   Tue Apr 1 20:59:16 2025 +0530

    jfs: fix array-index-out-of-bounds read in add_missing_indices
    
    [ Upstream commit 5dff41a86377563f7a2b968aae00d25b4ceb37c9 ]
    
    stbl is s8 but it must contain offsets into slot which can go from 0 to
    127.
    
    Added a bound check for that error and return -EIO if the check fails.
    Also make jfs_readdir return with error if add_missing_indices returns
    with an error.
    
    Reported-by: syzbot+b974bd41515f770c608b@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com./bug?extid=b974bd41515f770c608b
    Signed-off-by: Aditya Dutt <duttaditya18@gmail.com>
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

jfs: Fix null-ptr-deref in jfs_ioc_trim [+ + +]
Author: Dylan Wolff <wolffd@comp.nus.edu.sg>
Date:   Wed Mar 12 16:02:00 2025 +0800

    jfs: Fix null-ptr-deref in jfs_ioc_trim
    
    [ Upstream commit a4685408ff6c3e2af366ad9a7274f45ff3f394ee ]
    
    [ Syzkaller Report ]
    
    Oops: general protection fault, probably for non-canonical address
    0xdffffc0000000087: 0000 [#1
    KASAN: null-ptr-deref in range [0x0000000000000438-0x000000000000043f]
    CPU: 2 UID: 0 PID: 10614 Comm: syz-executor.0 Not tainted
    6.13.0-rc6-gfbfd64d25c7a-dirty #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
    Sched_ext: serialise (enabled+all), task: runnable_at=-30ms
    RIP: 0010:jfs_ioc_trim+0x34b/0x8f0
    Code: e7 e8 59 a4 87 fe 4d 8b 24 24 4d 8d bc 24 38 04 00 00 48 8d 93
    90 82 fe ff 4c 89 ff 31 f6
    RSP: 0018:ffffc900055f7cd0 EFLAGS: 00010206
    RAX: 0000000000000087 RBX: 00005866a9e67ff8 RCX: 000000000000000a
    RDX: 0000000000000001 RSI: 0000000000000004 RDI: 0000000000000001
    RBP: dffffc0000000000 R08: ffff88807c180003 R09: 1ffff1100f830000
    R10: dffffc0000000000 R11: ffffed100f830001 R12: 0000000000000000
    R13: 0000000000000000 R14: 0000000000000001 R15: 0000000000000438
    FS:  00007fe520225640(0000) GS:ffff8880b7e80000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00005593c91b2c88 CR3: 000000014927c000 CR4: 00000000000006f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
    <TASK>
    ? __die_body+0x61/0xb0
    ? die_addr+0xb1/0xe0
    ? exc_general_protection+0x333/0x510
    ? asm_exc_general_protection+0x26/0x30
    ? jfs_ioc_trim+0x34b/0x8f0
    jfs_ioctl+0x3c8/0x4f0
    ? __pfx_jfs_ioctl+0x10/0x10
    ? __pfx_jfs_ioctl+0x10/0x10
    __se_sys_ioctl+0x269/0x350
    ? __pfx___se_sys_ioctl+0x10/0x10
    ? do_syscall_64+0xfb/0x210
    do_syscall_64+0xee/0x210
    ? syscall_exit_to_user_mode+0x1e0/0x330
    entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7fe51f4903ad
    Code: c3 e8 a7 2b 00 00 0f 1f 80 00 00 00 00 f3 0f 1e fa 48 89 f8 48
    89 f7 48 89 d6 48 89 ca 4d
    RSP: 002b:00007fe5202250c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 00007fe51f5cbf80 RCX: 00007fe51f4903ad
    RDX: 0000000020000680 RSI: 00000000c0185879 RDI: 0000000000000005
    RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007fe520225640
    R13: 000000000000000e R14: 00007fe51f44fca0 R15: 00007fe52021d000
    </TASK>
    Modules linked in:
    ---[ end trace 0000000000000000 ]---
    RIP: 0010:jfs_ioc_trim+0x34b/0x8f0
    Code: e7 e8 59 a4 87 fe 4d 8b 24 24 4d 8d bc 24 38 04 00 00 48 8d 93
    90 82 fe ff 4c 89 ff 31 f6
    RSP: 0018:ffffc900055f7cd0 EFLAGS: 00010206
    RAX: 0000000000000087 RBX: 00005866a9e67ff8 RCX: 000000000000000a
    RDX: 0000000000000001 RSI: 0000000000000004 RDI: 0000000000000001
    RBP: dffffc0000000000 R08: ffff88807c180003 R09: 1ffff1100f830000
    R10: dffffc0000000000 R11: ffffed100f830001 R12: 0000000000000000
    R13: 0000000000000000 R14: 0000000000000001 R15: 0000000000000438
    FS:  00007fe520225640(0000) GS:ffff8880b7e80000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00005593c91b2c88 CR3: 000000014927c000 CR4: 00000000000006f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Kernel panic - not syncing: Fatal exception
    
    [ Analysis ]
    
    We believe that we have found a concurrency bug in the `fs/jfs` module
    that results in a null pointer dereference. There is a closely related
    issue which has been fixed:
    
    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d6c1b3599b2feb5c7291f5ac3a36e5fa7cedb234
    
    ... but, unfortunately, the accepted patch appears to still be
    susceptible to a null pointer dereference under some interleavings.
    
    To trigger the bug, we think that `JFS_SBI(ipbmap->i_sb)->bmap` is set
    to NULL in `dbFreeBits` and then dereferenced in `jfs_ioc_trim`. This
    bug manifests quite rarely under normal circumstances, but is
    triggereable from a syz-program.
    
    Reported-and-tested-by: Dylan J. Wolff<wolffd@comp.nus.edu.sg>
    Reported-and-tested-by: Jiacheng Xu <stitch@zju.edu.cn>
    Signed-off-by: Dylan J. Wolff<wolffd@comp.nus.edu.sg>
    Signed-off-by: Jiacheng Xu <stitch@zju.edu.cn>
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ktls, sockmap: Fix missing uncharge operation [+ + +]
Author: Jiayuan Chen <jiayuan.chen@linux.dev>
Date:   Fri Apr 25 13:59:57 2025 +0800

    ktls, sockmap: Fix missing uncharge operation
    
    [ Upstream commit 79f0c39ae7d3dc628c01b02f23ca5d01f9875040 ]
    
    When we specify apply_bytes, we divide the msg into multiple segments,
    each with a length of 'send', and every time we send this part of the data
    using tcp_bpf_sendmsg_redir(), we use sk_msg_return_zero() to uncharge the
    memory of the specified 'send' size.
    
    However, if the first segment of data fails to send, for example, the
    peer's buffer is full, we need to release all of the msg. When releasing
    the msg, we haven't uncharged the memory of the subsequent segments.
    
    This modification does not make significant logical changes, but only
    fills in the missing uncharge places.
    
    This issue has existed all along, until it was exposed after we added the
    apply test in test_sockmap:
    commit 3448ad23b34e ("selftests/bpf: Add apply_bytes test to test_txmsg_redir_wait_sndmem in test_sockmap")
    
    Fixes: d3b18ad31f93 ("tls: add bpf support to sk_msg handling")
    Reported-by: Cong Wang <xiyou.wangcong@gmail.com>
    Closes: https://lore.kernel.org/bpf/aAmIi0vlycHtbXeb@pop-os.localdomain/T/#t
    Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev>
    Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Reviewed-by: Cong Wang <xiyou.wangcong@gmail.com>
    Link: https://lore.kernel.org/r/20250425060015.6968-2-jiayuan.chen@linux.dev
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: Linux 5.4.295 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Jun 27 11:02:58 2025 +0100

    Linux 5.4.295
    
    Link: https://lore.kernel.org/r/20250623130611.896514667@linuxfoundation.org
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Alok Tiwari <alok.a.tiwari@oracle.com>
    Link: https://lore.kernel.org/r/20250625085227.279764371@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
m68k: mac: Fix macintosh_config for Mac II [+ + +]
Author: Finn Thain <fthain@linux-m68k.org>
Date:   Thu Apr 24 10:07:26 2025 +1000

    m68k: mac: Fix macintosh_config for Mac II
    
    [ Upstream commit 52ae3f5da7e5adbe3d1319573b55dac470abb83c ]
    
    When booted on my Mac II, the kernel prints this:
    
        Detected Macintosh model: 6
        Apple Macintosh Unknown
    
    The catch-all entry ("Unknown") is mac_data_table[0] which is only needed
    in the unlikely event that the bootinfo model ID can't be matched.
    When model ID is 6, the search should begin and end at mac_data_table[1].
    Fix the off-by-one error that causes this problem.
    
    Cc: Joshua Thompson <funaho@jurai.org>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Finn Thain <fthain@linux-m68k.org>
    Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Link: https://lore.kernel.org/d0f30a551064ca4810b1c48d5a90954be80634a9.1745453246.git.fthain@linux-m68k.org
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
media: gspca: Add error handling for stv06xx_read_sensor() [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
Date:   Tue Apr 22 11:07:39 2025 +0800

    media: gspca: Add error handling for stv06xx_read_sensor()
    
    commit 398a1b33f1479af35ca915c5efc9b00d6204f8fa upstream.
    
    In hdcs_init(), the return value of stv06xx_read_sensor() needs to be
    checked. A proper implementation can be found in vv6410_dump(). Add a
    check in loop condition and propergate error code to fix this issue.
    
    Fixes: 4c98834addfe ("V4L/DVB (10048): gspca - stv06xx: New subdriver.")
    Cc: stable@vger.kernel.org # v2.6+
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: platform: exynos4-is: Add hardware sync wait to fimc_is_hw_change_mode() [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
Date:   Tue Apr 22 10:13:45 2025 +0800

    media: platform: exynos4-is: Add hardware sync wait to fimc_is_hw_change_mode()
    
    [ Upstream commit bd9f6ce7d512fa21249415c16af801a4ed5d97b6 ]
    
    In fimc_is_hw_change_mode(), the function changes camera modes without
    waiting for hardware completion, risking corrupted data or system hangs
    if subsequent operations proceed before the hardware is ready.
    
    Add fimc_is_hw_wait_intmsr0_intmsd0() after mode configuration, ensuring
    hardware state synchronization and stable interrupt handling.
    
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: tc358743: ignore video while HPD is low [+ + +]
Author: Hans Verkuil <hverkuil@xs4all.nl>
Date:   Tue Apr 1 11:54:17 2025 +0200

    media: tc358743: ignore video while HPD is low
    
    [ Upstream commit 6829c5b5d26b1be31880d74ec24cb32d2d75f1ae ]
    
    If the HPD is low (happens if there is no EDID or the
    EDID is being updated), then return -ENOLINK in
    tc358743_get_detected_timings() instead of detecting video.
    
    This avoids userspace thinking that it can start streaming when
    the HPD is low.
    
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Tested-by: Maxime Ripard <mripard@kernel.org>
    Link: https://lore.kernel.org/linux-media/20240628-stoic-bettong-of-fortitude-e25611@houat/
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: uapi: v4l: Fix V4L2_TYPE_IS_OUTPUT condition [+ + +]
Author: Nas Chung <nas.chung@chipsnmedia.com>
Date:   Thu Jul 25 15:10:34 2024 +0900

    media: uapi: v4l: Fix V4L2_TYPE_IS_OUTPUT condition
    
    [ Upstream commit f81f69a0e3da141bdd73a16b8676f4e542533d87 ]
    
    V4L2_TYPE_IS_OUTPUT() returns true for V4L2_BUF_TYPE_VIDEO_OVERLAY
    which definitely belongs to CAPTURE.
    
    Signed-off-by: Nas Chung <nas.chung@chipsnmedia.com>
    Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: v4l2-dev: fix error handling in __video_register_device() [+ + +]
Author: Ma Ke <make24@iscas.ac.cn>
Date:   Wed Mar 19 16:02:48 2025 +0800

    media: v4l2-dev: fix error handling in __video_register_device()
    
    commit 2a934fdb01db6458288fc9386d3d8ceba6dd551a upstream.
    
    Once device_register() failed, we should call put_device() to
    decrement reference count for cleanup. Or it could cause memory leak.
    And move callback function v4l2_device_release() and v4l2_device_get()
    before put_device().
    
    As comment of device_register() says, 'NOTE: _Never_ directly free
    @dev after calling this function, even if it returned an error! Always
    use put_device() to give up the reference initialized in this function
    instead.'
    
    Found by code review.
    
    Cc: stable@vger.kernel.org
    Fixes: dc93a70cc7f9 ("V4L/DVB (9973): v4l2-dev: use the release callback from device instead of cdev")
    Signed-off-by: Ma Ke <make24@iscas.ac.cn>
    Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mfd: exynos-lpass: Avoid calling exynos_lpass_disable() twice in exynos_lpass_remove() [+ + +]
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Mon Apr 21 17:00:34 2025 +0200

    mfd: exynos-lpass: Avoid calling exynos_lpass_disable() twice in exynos_lpass_remove()
    
    [ Upstream commit b70b84556eeca5262d290e8619fe0af5b7664a52 ]
    
    exynos_lpass_disable() is called twice in the remove function. Remove
    one of these calls.
    
    Fixes: 90f447170c6f ("mfd: exynos-lpass: Add runtime PM support")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Link: https://lore.kernel.org/r/74d69e8de10308c9855db6d54155a3de4b11abfd.1745247209.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

mfd: stmpe-spi: Correct the name used in MODULE_DEVICE_TABLE [+ + +]
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Apr 26 18:16:32 2025 +0200

    mfd: stmpe-spi: Correct the name used in MODULE_DEVICE_TABLE
    
    [ Upstream commit 59d60c16ed41475f3b5f7b605e75fbf8e3628720 ]
    
    The name used in the macro does not exist.
    
    drivers/mfd/stmpe-spi.c:132:26: error: use of undeclared identifier 'stmpe_id'
      132 | MODULE_DEVICE_TABLE(spi, stmpe_id);
    
    Fixes: e789995d5c61 ("mfd: Add support for STMPE SPI interface")
    Signed-off-by: Alexey Gladkov <legion@kernel.org>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Link: https://lore.kernel.org/r/79d5a847303e45a46098f2d827d3d8a249a32be3.1745591072.git.legion@kernel.org
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mips: Add -std= flag specified in KBUILD_CFLAGS to vdso CFLAGS [+ + +]
Author: Khem Raj <raj.khem@gmail.com>
Date:   Sat Mar 29 08:39:03 2025 -0700

    mips: Add -std= flag specified in KBUILD_CFLAGS to vdso CFLAGS
    
    commit 0f4ae7c6ecb89bfda026d210dcf8216fb67d2333 upstream.
    
    GCC 15 changed the default C standard dialect from gnu17 to gnu23,
    which should not have impacted the kernel because it explicitly requests
    the gnu11 standard in the main Makefile. However, mips/vdso code uses
    its own CFLAGS without a '-std=' value, which break with this dialect
    change because of the kernel's own definitions of bool, false, and true
    conflicting with the C23 reserved keywords.
    
      include/linux/stddef.h:11:9: error: cannot use keyword 'false' as enumeration constant
         11 |         false   = 0,
            |         ^~~~~
      include/linux/stddef.h:11:9: note: 'false' is a keyword with '-std=c23' onwards
      include/linux/types.h:35:33: error: 'bool' cannot be defined via 'typedef'
         35 | typedef _Bool                   bool;
            |                                 ^~~~
      include/linux/types.h:35:33: note: 'bool' is a keyword with '-std=c23' onwards
    
    Add -std as specified in KBUILD_CFLAGS to the decompressor and purgatory
    CFLAGS to eliminate these errors and make the C standard version of these
    areas match the rest of the kernel.
    
    Signed-off-by: Khem Raj <raj.khem@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
MIPS: Move '-Wa,-msoft-float' check from as-option to cc-option [+ + +]
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Wed Jun 14 11:04:36 2023 -0700

    MIPS: Move '-Wa,-msoft-float' check from as-option to cc-option
    
    This patch is for linux-6.1.y and earlier, it has no direct mainline
    equivalent.
    
    In order to backport commit d5c8d6e0fa61 ("kbuild: Update assembler
    calls to use proper flags and language target") to resolve a separate
    issue regarding PowerPC, the problem noticed and fixed by
    commit 80a20d2f8288 ("MIPS: Always use -Wa,-msoft-float and eliminate
    GAS_HAS_SET_HARDFLOAT") needs to be addressed. Unfortunately, 6.1 and
    earlier do not contain commit e4412739472b ("Documentation: raise
    minimum supported version of binutils to 2.25"), so it cannot be assumed
    that all supported versions of GNU as have support for -msoft-float.
    
    In order to switch from KBUILD_CFLAGS to KBUILD_AFLAGS in as-option
    without consequence, move the '-Wa,-msoft-float' check to cc-option,
    including '$(cflags-y)' directly to avoid the issue mentioned in
    commit 80a20d2f8288 ("MIPS: Always use -Wa,-msoft-float and eliminate
    GAS_HAS_SET_HARDFLOAT").
    
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/huge_memory: fix dereferencing invalid pmd migration entry [+ + +]
Author: Gavin Guo <gavinguo@igalia.com>
Date:   Mon Apr 21 19:35:36 2025 +0800

    mm/huge_memory: fix dereferencing invalid pmd migration entry
    
    commit be6e843fc51a584672dfd9c4a6a24c8cb81d5fb7 upstream.
    
    When migrating a THP, concurrent access to the PMD migration entry during
    a deferred split scan can lead to an invalid address access, as
    illustrated below.  To prevent this invalid access, it is necessary to
    check the PMD migration entry and return early.  In this context, there is
    no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the
    equality of the target folio.  Since the PMD migration entry is locked, it
    cannot be served as the target.
    
    Mailing list discussion and explanation from Hugh Dickins: "An anon_vma
    lookup points to a location which may contain the folio of interest, but
    might instead contain another folio: and weeding out those other folios is
    precisely what the "folio != pmd_folio((*pmd)" check (and the "risk of
    replacing the wrong folio" comment a few lines above it) is for."
    
    BUG: unable to handle page fault for address: ffffea60001db008
    CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60
    Call Trace:
    <TASK>
    try_to_migrate_one+0x28c/0x3730
    rmap_walk_anon+0x4f6/0x770
    unmap_folio+0x196/0x1f0
    split_huge_page_to_list_to_order+0x9f6/0x1560
    deferred_split_scan+0xac5/0x12a0
    shrinker_debugfs_scan_write+0x376/0x470
    full_proxy_write+0x15c/0x220
    vfs_write+0x2fc/0xcb0
    ksys_write+0x146/0x250
    do_syscall_64+0x6a/0x120
    entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    The bug is found by syzkaller on an internal kernel, then confirmed on
    upstream.
    
    Link: https://lkml.kernel.org/r/20250421113536.3682201-1-gavinguo@igalia.com
    Link: https://lore.kernel.org/all/20250414072737.1698513-1-gavinguo@igalia.com/
    Link: https://lore.kernel.org/all/20250418085802.2973519-1-gavinguo@igalia.com/
    Fixes: 84c3fc4e9c56 ("mm: thp: check pmd migration entry in common path")
    Signed-off-by: Gavin Guo <gavinguo@igalia.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Acked-by: Hugh Dickins <hughd@google.com>
    Acked-by: Zi Yan <ziy@nvidia.com>
    Reviewed-by: Gavin Shan <gshan@redhat.com>
    Cc: Florent Revest <revest@google.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Miaohe Lin <linmiaohe@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    [gavin: backport the migration checking logic to __split_huge_pmd]
    Signed-off-by: Gavin Guo <gavinguo@igalia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm: fix ratelimit_pages update error in dirty_ratio_handler() [+ + +]
Author: Jinliang Zheng <alexjlzheng@tencent.com>
Date:   Tue Apr 15 17:02:32 2025 +0800

    mm: fix ratelimit_pages update error in dirty_ratio_handler()
    
    commit f83f362d40ccceb647f7d80eb92206733d76a36b upstream.
    
    In dirty_ratio_handler(), vm_dirty_bytes must be set to zero before
    calling writeback_set_ratelimit(), as global_dirty_limits() always
    prioritizes the value of vm_dirty_bytes.
    
    It's domain_dirty_limits() that's relevant here, not node_dirty_ok:
    
      dirty_ratio_handler
        writeback_set_ratelimit
          global_dirty_limits(&dirty_thresh)           <- ratelimit_pages based on dirty_thresh
            domain_dirty_limits
              if (bytes)                               <- bytes = vm_dirty_bytes <--------+
                thresh = f1(bytes)                     <- prioritizes vm_dirty_bytes      |
              else                                                                        |
                thresh = f2(ratio)                                                        |
          ratelimit_pages = f3(dirty_thresh)                                              |
        vm_dirty_bytes = 0                             <- it's late! ---------------------+
    
    This causes ratelimit_pages to still use the value calculated based on
    vm_dirty_bytes, which is wrong now.
    
    
    The impact visible to userspace is difficult to capture directly because
    there is no procfs/sysfs interface exported to user space.  However, it
    will have a real impact on the balance of dirty pages.
    
    For example:
    
    1. On default, we have vm_dirty_ratio=40, vm_dirty_bytes=0
    
    2. echo 8192 > dirty_bytes, then vm_dirty_bytes=8192,
       vm_dirty_ratio=0, and ratelimit_pages is calculated based on
       vm_dirty_bytes now.
    
    3. echo 20 > dirty_ratio, then since vm_dirty_bytes is not reset to
       zero when writeback_set_ratelimit() -> global_dirty_limits() ->
       domain_dirty_limits() is called, reallimit_pages is still calculated
       based on vm_dirty_bytes instead of vm_dirty_ratio.  This does not
       conform to the actual intent of the user.
    
    Link: https://lkml.kernel.org/r/20250415090232.7544-1-alexjlzheng@tencent.com
    Fixes: 9d823e8f6b1b ("writeback: per task dirty rate limit")
    Signed-off-by: Jinliang Zheng <alexjlzheng@tencent.com>
    Reviewed-by: MengEn Sun <mengensun@tencent.com>
    Cc: Andrea Righi <andrea@betterlinux.com>
    Cc: Fenggaung Wu <fengguang.wu@intel.com>
    Cc: Jinliang Zheng <alexjlzheng@tencent.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mpls: Use rcu_dereference_rtnl() in mpls_route_input_rcu(). [+ + +]
Author: Kuniyuki Iwashima <kuniyu@google.com>
Date:   Mon Jun 16 13:15:12 2025 -0700

    mpls: Use rcu_dereference_rtnl() in mpls_route_input_rcu().
    
    [ Upstream commit 6dbb0d97c5096072c78a6abffe393584e57ae945 ]
    
    As syzbot reported [0], mpls_route_input_rcu() can be called
    from mpls_getroute(), where is under RTNL.
    
    net->mpls.platform_label is only updated under RTNL.
    
    Let's use rcu_dereference_rtnl() in mpls_route_input_rcu() to
    silence the splat.
    
    [0]:
    WARNING: suspicious RCU usage
    6.15.0-rc7-syzkaller-00082-g5cdb2c77c4c3 #0 Not tainted
     ----------------------------
    net/mpls/af_mpls.c:84 suspicious rcu_dereference_check() usage!
    
    other info that might help us debug this:
    
    rcu_scheduler_active = 2, debug_locks = 1
    1 lock held by syz.2.4451/17730:
     #0: ffffffff9012a3e8 (rtnl_mutex){+.+.}-{4:4}, at: rtnl_lock net/core/rtnetlink.c:80 [inline]
     #0: ffffffff9012a3e8 (rtnl_mutex){+.+.}-{4:4}, at: rtnetlink_rcv_msg+0x371/0xe90 net/core/rtnetlink.c:6961
    
    stack backtrace:
    CPU: 1 UID: 0 PID: 17730 Comm: syz.2.4451 Not tainted 6.15.0-rc7-syzkaller-00082-g5cdb2c77c4c3 #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x16c/0x1f0 lib/dump_stack.c:120
     lockdep_rcu_suspicious+0x166/0x260 kernel/locking/lockdep.c:6865
     mpls_route_input_rcu+0x1d4/0x200 net/mpls/af_mpls.c:84
     mpls_getroute+0x621/0x1ea0 net/mpls/af_mpls.c:2381
     rtnetlink_rcv_msg+0x3c9/0xe90 net/core/rtnetlink.c:6964
     netlink_rcv_skb+0x16d/0x440 net/netlink/af_netlink.c:2534
     netlink_unicast_kernel net/netlink/af_netlink.c:1313 [inline]
     netlink_unicast+0x53a/0x7f0 net/netlink/af_netlink.c:1339
     netlink_sendmsg+0x8d1/0xdd0 net/netlink/af_netlink.c:1883
     sock_sendmsg_nosec net/socket.c:712 [inline]
     __sock_sendmsg net/socket.c:727 [inline]
     ____sys_sendmsg+0xa98/0xc70 net/socket.c:2566
     ___sys_sendmsg+0x134/0x1d0 net/socket.c:2620
     __sys_sendmmsg+0x200/0x420 net/socket.c:2709
     __do_sys_sendmmsg net/socket.c:2736 [inline]
     __se_sys_sendmmsg net/socket.c:2733 [inline]
     __x64_sys_sendmmsg+0x9c/0x100 net/socket.c:2733
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xcd/0x230 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f0a2818e969
    Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f0a28f52038 EFLAGS: 00000246 ORIG_RAX: 0000000000000133
    RAX: ffffffffffffffda RBX: 00007f0a283b5fa0 RCX: 00007f0a2818e969
    RDX: 0000000000000003 RSI: 0000200000000080 RDI: 0000000000000003
    RBP: 00007f0a28210ab1 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 0000000000000000 R14: 00007f0a283b5fa0 R15: 00007ffce5e9f268
     </TASK>
    
    Fixes: 0189197f4416 ("mpls: Basic routing support")
    Reported-by: syzbot+8a583bdd1a5cc0b0e068@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/68507981.a70a0220.395abc.01ef.GAE@google.com/
    Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
    Link: https://patch.msgid.link/20250616201532.1036568-1-kuni1840@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mtd: nand: sunxi: Add randomizer configuration before randomizer enable [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
Date:   Mon May 19 23:42:24 2025 +0800

    mtd: nand: sunxi: Add randomizer configuration before randomizer enable
    
    commit 4a5a99bc79cdc4be63933653682b0261a67a0c9f upstream.
    
    In sunxi_nfc_hw_ecc_read_chunk(), the sunxi_nfc_randomizer_enable() is
    called without the config of randomizer. A proper implementation can be
    found in sunxi_nfc_hw_ecc_read_chunks_dma().
    
    Add sunxi_nfc_randomizer_config() before the start of randomization.
    
    Fixes: 4be4e03efc7f ("mtd: nand: sunxi: add randomizer support")
    Cc: stable@vger.kernel.org # v4.6
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mtd: rawnand: sunxi: Add randomizer configuration in sunxi_nfc_hw_ecc_write_chunk [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
Date:   Mon May 26 11:43:44 2025 +0800

    mtd: rawnand: sunxi: Add randomizer configuration in sunxi_nfc_hw_ecc_write_chunk
    
    commit 44ed1f5ff73e9e115b6f5411744d5a22ea1c855b upstream.
    
    The function sunxi_nfc_hw_ecc_write_chunk() calls the
    sunxi_nfc_hw_ecc_write_chunk(), but does not call the configuration
    function sunxi_nfc_randomizer_config(). Consequently, the randomization
    might not conduct correctly, which will affect the lifespan of NAND flash.
    A proper implementation can be found in sunxi_nfc_hw_ecc_write_page_dma().
    
    Add the sunxi_nfc_randomizer_config() to config randomizer.
    
    Fixes: 4be4e03efc7f ("mtd: nand: sunxi: add randomizer support")
    Cc: stable@vger.kernel.org # v4.6
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/mdiobus: Fix potential out-of-bounds read/write access [+ + +]
Author: Jakub Raczynski <j.raczynski@samsung.com>
Date:   Mon Jun 9 17:31:46 2025 +0200

    net/mdiobus: Fix potential out-of-bounds read/write access
    
    [ Upstream commit 0e629694126ca388916f059453a1c36adde219c4 ]
    
    When using publicly available tools like 'mdio-tools' to read/write data
    from/to network interface and its PHY via mdiobus, there is no verification of
    parameters passed to the ioctl and it accepts any mdio address.
    Currently there is support for 32 addresses in kernel via PHY_MAX_ADDR define,
    but it is possible to pass higher value than that via ioctl.
    While read/write operation should generally fail in this case,
    mdiobus provides stats array, where wrong address may allow out-of-bounds
    read/write.
    
    Fix that by adding address verification before read/write operation.
    While this excludes this access from any statistics, it improves security of
    read/write operation.
    
    Fixes: 080bb352fad00 ("net: phy: Maintain MDIO device and bus statistics")
    Signed-off-by: Jakub Raczynski <j.raczynski@samsung.com>
    Reported-by: Wenjing Shan <wenjing.shan@samsung.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/mlx4_en: Prevent potential integer overflow calculating Hz [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Wed May 28 11:11:09 2025 +0300

    net/mlx4_en: Prevent potential integer overflow calculating Hz
    
    [ Upstream commit 54d34165b4f786d7fea8412a18fb4a54c1eab623 ]
    
    The "freq" variable is in terms of MHz and "max_val_cycles" is in terms
    of Hz.  The fact that "max_val_cycles" is a u64 suggests that support
    for high frequency is intended but the "freq_khz * 1000" would overflow
    the u32 type if we went above 4GHz.  Use unsigned long long type for the
    mutliplication to prevent that.
    
    Fixes: 31c128b66e5b ("net/mlx4_en: Choose time-stamping shift value according to HW frequency")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/aDbFHe19juIJKjsb@stanley.mountain
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/mlx5: Fix return value when searching for existing flow group [+ + +]
Author: Patrisious Haddad <phaddad@nvidia.com>
Date:   Tue Jun 10 18:15:08 2025 +0300

    net/mlx5: Fix return value when searching for existing flow group
    
    [ Upstream commit 8ec40e3f1f72bf8f8accf18020d487caa99f46a4 ]
    
    When attempting to add a rule to an existing flow group, if a matching
    flow group exists but is not active, the error code returned should be
    EAGAIN, so that the rule can be added to the matching flow group once
    it is active, rather than ENOENT, which indicates that no matching
    flow group was found.
    
    Fixes: bd71b08ec2ee ("net/mlx5: Support multiple updates of steering rules in parallel")
    Signed-off-by: Gavi Teitz <gavi@nvidia.com>
    Signed-off-by: Roi Dayan <roid@nvidia.com>
    Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Mark Bloch <mbloch@nvidia.com>
    Link: https://patch.msgid.link/20250610151514.1094735-4-mbloch@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/mlx5: Wait for inactive autogroups [+ + +]
Author: Paul Blakey <paulb@mellanox.com>
Date:   Thu May 7 12:01:39 2020 +0300

    net/mlx5: Wait for inactive autogroups
    
    [ Upstream commit 49c0355d301b4e0e01e0f19ddbb023bd7d0ee48c ]
    
    Currently, if one thread tries to add an entry to an autogrouped table
    with no free matching group, while another thread is in the process of
    creating a new matching autogroup, it doesn't wait for the new group
    creation, and creates an unnecessary new autogroup.
    
    Instead of skipping inactive, wait on the write lock of those groups.
    
    Signed-off-by: Paul Blakey <paulb@mellanox.com>
    Reviewed-by: Roi Dayan <roid@mellanox.com>
    Reviewed-by: Mark Bloch <markb@mellanox.com>
    Reviewed-by: Maor Gottlieb <maorg@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Stable-dep-of: 8ec40e3f1f72 ("net/mlx5: Fix return value when searching for existing flow group")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: atm: add lec_mutex [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jun 18 14:08:43 2025 +0000

    net: atm: add lec_mutex
    
    [ Upstream commit d13a3824bfd2b4774b671a75cf766a16637a0e67 ]
    
    syzbot found its way in net/atm/lec.c, and found an error path
    in lecd_attach() could leave a dangling pointer in dev_lec[].
    
    Add a mutex to protect dev_lecp[] uses from lecd_attach(),
    lec_vcc_attach() and lec_mcast_attach().
    
    Following patch will use this mutex for /proc/net/atm/lec.
    
    BUG: KASAN: slab-use-after-free in lecd_attach net/atm/lec.c:751 [inline]
    BUG: KASAN: slab-use-after-free in lane_ioctl+0x2224/0x23e0 net/atm/lec.c:1008
    Read of size 8 at addr ffff88807c7b8e68 by task syz.1.17/6142
    
    CPU: 1 UID: 0 PID: 6142 Comm: syz.1.17 Not tainted 6.16.0-rc1-syzkaller-00239-g08215f5486ec #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
    Call Trace:
     <TASK>
      __dump_stack lib/dump_stack.c:94 [inline]
      dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
      print_address_description mm/kasan/report.c:408 [inline]
      print_report+0xcd/0x680 mm/kasan/report.c:521
      kasan_report+0xe0/0x110 mm/kasan/report.c:634
      lecd_attach net/atm/lec.c:751 [inline]
      lane_ioctl+0x2224/0x23e0 net/atm/lec.c:1008
      do_vcc_ioctl+0x12c/0x930 net/atm/ioctl.c:159
      sock_do_ioctl+0x118/0x280 net/socket.c:1190
      sock_ioctl+0x227/0x6b0 net/socket.c:1311
      vfs_ioctl fs/ioctl.c:51 [inline]
      __do_sys_ioctl fs/ioctl.c:907 [inline]
      __se_sys_ioctl fs/ioctl.c:893 [inline]
      __x64_sys_ioctl+0x18e/0x210 fs/ioctl.c:893
      do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
      do_syscall_64+0xcd/0x4c0 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
     </TASK>
    
    Allocated by task 6132:
      kasan_save_stack+0x33/0x60 mm/kasan/common.c:47
      kasan_save_track+0x14/0x30 mm/kasan/common.c:68
      poison_kmalloc_redzone mm/kasan/common.c:377 [inline]
      __kasan_kmalloc+0xaa/0xb0 mm/kasan/common.c:394
      kasan_kmalloc include/linux/kasan.h:260 [inline]
      __do_kmalloc_node mm/slub.c:4328 [inline]
      __kvmalloc_node_noprof+0x27b/0x620 mm/slub.c:5015
      alloc_netdev_mqs+0xd2/0x1570 net/core/dev.c:11711
      lecd_attach net/atm/lec.c:737 [inline]
      lane_ioctl+0x17db/0x23e0 net/atm/lec.c:1008
      do_vcc_ioctl+0x12c/0x930 net/atm/ioctl.c:159
      sock_do_ioctl+0x118/0x280 net/socket.c:1190
      sock_ioctl+0x227/0x6b0 net/socket.c:1311
      vfs_ioctl fs/ioctl.c:51 [inline]
      __do_sys_ioctl fs/ioctl.c:907 [inline]
      __se_sys_ioctl fs/ioctl.c:893 [inline]
      __x64_sys_ioctl+0x18e/0x210 fs/ioctl.c:893
      do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
      do_syscall_64+0xcd/0x4c0 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Freed by task 6132:
      kasan_save_stack+0x33/0x60 mm/kasan/common.c:47
      kasan_save_track+0x14/0x30 mm/kasan/common.c:68
      kasan_save_free_info+0x3b/0x60 mm/kasan/generic.c:576
      poison_slab_object mm/kasan/common.c:247 [inline]
      __kasan_slab_free+0x51/0x70 mm/kasan/common.c:264
      kasan_slab_free include/linux/kasan.h:233 [inline]
      slab_free_hook mm/slub.c:2381 [inline]
      slab_free mm/slub.c:4643 [inline]
      kfree+0x2b4/0x4d0 mm/slub.c:4842
      free_netdev+0x6c5/0x910 net/core/dev.c:11892
      lecd_attach net/atm/lec.c:744 [inline]
      lane_ioctl+0x1ce8/0x23e0 net/atm/lec.c:1008
      do_vcc_ioctl+0x12c/0x930 net/atm/ioctl.c:159
      sock_do_ioctl+0x118/0x280 net/socket.c:1190
      sock_ioctl+0x227/0x6b0 net/socket.c:1311
      vfs_ioctl fs/ioctl.c:51 [inline]
      __do_sys_ioctl fs/ioctl.c:907 [inline]
      __se_sys_ioctl fs/ioctl.c:893 [inline]
      __x64_sys_ioctl+0x18e/0x210 fs/ioctl.c:893
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: syzbot+8b64dec3affaed7b3af5@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/6852c6f6.050a0220.216029.0018.GAE@google.com/T/#u
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250618140844.1686882-2-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: atm: fix /proc/net/atm/lec handling [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jun 18 14:08:44 2025 +0000

    net: atm: fix /proc/net/atm/lec handling
    
    [ Upstream commit d03b79f459c7935cff830d98373474f440bd03ae ]
    
    /proc/net/atm/lec must ensure safety against dev_lec[] changes.
    
    It appears it had dev_put() calls without prior dev_hold(),
    leading to imbalance and UAF.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Francois Romieu <romieu@fr.zoreil.com> # Minor atm contributor
    Link: https://patch.msgid.link/20250618140844.1686882-3-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ch9200: fix uninitialised access during mii_nway_restart [+ + +]
Author: Qasim Ijaz <qasdev00@gmail.com>
Date:   Mon May 26 19:36:07 2025 +0100

    net: ch9200: fix uninitialised access during mii_nway_restart
    
    commit 9ad0452c0277b816a435433cca601304cfac7c21 upstream.
    
    In mii_nway_restart() the code attempts to call
    mii->mdio_read which is ch9200_mdio_read(). ch9200_mdio_read()
    utilises a local buffer called "buff", which is initialised
    with control_read(). However "buff" is conditionally
    initialised inside control_read():
    
            if (err == size) {
                    memcpy(data, buf, size);
            }
    
    If the condition of "err == size" is not met, then
    "buff" remains uninitialised. Once this happens the
    uninitialised "buff" is accessed and returned during
    ch9200_mdio_read():
    
            return (buff[0] | buff[1] << 8);
    
    The problem stems from the fact that ch9200_mdio_read()
    ignores the return value of control_read(), leading to
    uinit-access of "buff".
    
    To fix this we should check the return value of
    control_read() and return early on error.
    
    Reported-by: syzbot <syzbot+3361c2d6f78a3e0892f9@syzkaller.appspotmail.com>
    Closes: https://syzkaller.appspot.com/bug?extid=3361c2d6f78a3e0892f9
    Tested-by: syzbot <syzbot+3361c2d6f78a3e0892f9@syzkaller.appspotmail.com>
    Fixes: 4a476bd6d1d9 ("usbnet: New driver for QinHeng CH9200 devices")
    Cc: stable@vger.kernel.org
    Signed-off-by: Qasim Ijaz <qasdev00@gmail.com>
    Link: https://patch.msgid.link/20250526183607.66527-1-qasdev00@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: dlink: add synchronization for stats update [+ + +]
Author: Moon Yeounsu <yyyynoom@gmail.com>
Date:   Thu May 15 16:53:31 2025 +0900

    net: dlink: add synchronization for stats update
    
    [ Upstream commit 12889ce926e9a9baf6b83d809ba316af539b89e2 ]
    
    This patch synchronizes code that accesses from both user-space
    and IRQ contexts. The `get_stats()` function can be called from both
    context.
    
    `dev->stats.tx_errors` and `dev->stats.collisions` are also updated
    in the `tx_errors()` function. Therefore, these fields must also be
    protected by synchronized.
    
    There is no code that accessses `dev->stats.tx_errors` between the
    previous and updated lines, so the updating point can be moved.
    
    Signed-off-by: Moon Yeounsu <yyyynoom@gmail.com>
    Link: https://patch.msgid.link/20250515075333.48290-1-yyyynoom@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: lan743x: rename lan743x_reset_phy to lan743x_hw_reset_phy [+ + +]
Author: Thangaraj Samynathan <thangaraj.s@microchip.com>
Date:   Mon May 26 11:00:47 2025 +0530

    net: lan743x: rename lan743x_reset_phy to lan743x_hw_reset_phy
    
    [ Upstream commit 68927eb52d0af04863584930db06075d2610e194 ]
    
    rename the function to lan743x_hw_reset_phy to better describe it
    operation.
    
    Fixes: 23f0703c125be ("lan743x: Add main source files for new lan743x driver")
    Signed-off-by: Thangaraj Samynathan <thangaraj.s@microchip.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://patch.msgid.link/20250526053048.287095-2-thangaraj.s@microchip.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: macb: Check return value of dma_set_mask_and_coherent() [+ + +]
Author: Sergio Perez Gonzalez <sperezglz@gmail.com>
Date:   Sun May 25 21:20:31 2025 -0600

    net: macb: Check return value of dma_set_mask_and_coherent()
    
    [ Upstream commit 3920a758800762917177a6b5ab39707d8e376fe6 ]
    
    Issue flagged by coverity. Add a safety check for the return value
    of dma_set_mask_and_coherent, go to a safe exit if it returns error.
    
    Link: https://scan7.scan.coverity.com/#/project-view/53936/11354?selectedIssue=1643754
    Signed-off-by: Sergio Perez Gonzalez <sperezglz@gmail.com>
    Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
    Link: https://patch.msgid.link/20250526032034.84900-1-sperezglz@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mdio: C22 is now optional, EOPNOTSUPP if not provided [+ + +]
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Mon Jan 9 16:30:44 2023 +0100

    net: mdio: C22 is now optional, EOPNOTSUPP if not provided
    
    [ Upstream commit b063b1924fd9bf0bc157cf644764dc2151d04ccc ]
    
    When performing a C22 operation, check that the bus driver actually
    provides the methods, and return -EOPNOTSUPP if not. C45 only busses
    do exist, and in future their C22 methods will be NULL.
    
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Michael Walle <michael@walle.cc>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 0e629694126c ("net/mdiobus: Fix potential out-of-bounds read/write access")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mlx4: add SOF_TIMESTAMPING_TX_SOFTWARE flag when getting ts info [+ + +]
Author: Jason Xing <kernelxing@tencent.com>
Date:   Sat May 10 17:34:42 2025 +0800

    net: mlx4: add SOF_TIMESTAMPING_TX_SOFTWARE flag when getting ts info
    
    [ Upstream commit b86bcfee30576b752302c55693fff97242b35dfd ]
    
    As mlx4 has implemented skb_tx_timestamp() in mlx4_en_xmit(), the
    SOFTWARE flag is surely needed when users are trying to get timestamp
    information.
    
    Signed-off-by: Jason Xing <kernelxing@tencent.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/20250510093442.79711-1-kerneljasonxing@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ncsi: Fix GCPS 64-bit member variables [+ + +]
Author: Hari Kalavakunta <kalavakunta.hari.prasad@gmail.com>
Date:   Wed Apr 9 18:23:08 2025 -0700

    net: ncsi: Fix GCPS 64-bit member variables
    
    [ Upstream commit e8a1bd8344054ce27bebf59f48e3f6bc10bc419b ]
    
    Correct Get Controller Packet Statistics (GCPS) 64-bit wide member
    variables, as per DSP0222 v1.0.0 and forward specs. The Driver currently
    collects these stats, but they are yet to be exposed to the user.
    Therefore, no user impact.
    
    Statistics fixes:
    Total Bytes Received (byte range 28..35)
    Total Bytes Transmitted (byte range 36..43)
    Total Unicast Packets Received (byte range 44..51)
    Total Multicast Packets Received (byte range 52..59)
    Total Broadcast Packets Received (byte range 60..67)
    Total Unicast Packets Transmitted (byte range 68..75)
    Total Multicast Packets Transmitted (byte range 76..83)
    Total Broadcast Packets Transmitted (byte range 84..91)
    Valid Bytes Received (byte range 204..11)
    
    Signed-off-by: Hari Kalavakunta <kalavakunta.hari.prasad@gmail.com>
    Reviewed-by: Paul Fertser <fercerpav@gmail.com>
    Link: https://patch.msgid.link/20250410012309.1343-1-kalavakunta.hari.prasad@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: usb: aqc111: debug info before sanitation [+ + +]
Author: Oliver Neukum <oneukum@suse.com>
Date:   Wed May 28 13:03:54 2025 +0200

    net: usb: aqc111: debug info before sanitation
    
    commit d3faab9b5a6a0477d69c38bd11c43aa5e936f929 upstream.
    
    If we sanitize error returns, the debug statements need
    to come before that so that we don't lose information.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Fixes: 405b0d610745 ("net: usb: aqc111: fix error handling of usbnet read calls")
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: usb: aqc111: fix error handling of usbnet read calls [+ + +]
Author: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
Date:   Tue May 20 14:32:39 2025 +0300

    net: usb: aqc111: fix error handling of usbnet read calls
    
    [ Upstream commit 405b0d610745fb5e84fc2961d9b960abb9f3d107 ]
    
    Syzkaller, courtesy of syzbot, identified an error (see report [1]) in
    aqc111 driver, caused by incomplete sanitation of usb read calls'
    results. This problem is quite similar to the one fixed in commit
    920a9fa27e78 ("net: asix: add proper error handling of usb read errors").
    
    For instance, usbnet_read_cmd() may read fewer than 'size' bytes,
    even if the caller expected the full amount, and aqc111_read_cmd()
    will not check its result properly. As [1] shows, this may lead
    to MAC address in aqc111_bind() being only partly initialized,
    triggering KMSAN warnings.
    
    Fix the issue by verifying that the number of bytes read is
    as expected and not less.
    
    [1] Partial syzbot report:
    BUG: KMSAN: uninit-value in is_valid_ether_addr include/linux/etherdevice.h:208 [inline]
    BUG: KMSAN: uninit-value in usbnet_probe+0x2e57/0x4390 drivers/net/usb/usbnet.c:1830
     is_valid_ether_addr include/linux/etherdevice.h:208 [inline]
     usbnet_probe+0x2e57/0x4390 drivers/net/usb/usbnet.c:1830
     usb_probe_interface+0xd01/0x1310 drivers/usb/core/driver.c:396
     call_driver_probe drivers/base/dd.c:-1 [inline]
     really_probe+0x4d1/0xd90 drivers/base/dd.c:658
     __driver_probe_device+0x268/0x380 drivers/base/dd.c:800
    ...
    
    Uninit was stored to memory at:
     dev_addr_mod+0xb0/0x550 net/core/dev_addr_lists.c:582
     __dev_addr_set include/linux/netdevice.h:4874 [inline]
     eth_hw_addr_set include/linux/etherdevice.h:325 [inline]
     aqc111_bind+0x35f/0x1150 drivers/net/usb/aqc111.c:717
     usbnet_probe+0xbe6/0x4390 drivers/net/usb/usbnet.c:1772
     usb_probe_interface+0xd01/0x1310 drivers/usb/core/driver.c:396
    ...
    
    Uninit was stored to memory at:
     ether_addr_copy include/linux/etherdevice.h:305 [inline]
     aqc111_read_perm_mac drivers/net/usb/aqc111.c:663 [inline]
     aqc111_bind+0x794/0x1150 drivers/net/usb/aqc111.c:713
     usbnet_probe+0xbe6/0x4390 drivers/net/usb/usbnet.c:1772
     usb_probe_interface+0xd01/0x1310 drivers/usb/core/driver.c:396
     call_driver_probe drivers/base/dd.c:-1 [inline]
    ...
    
    Local variable buf.i created at:
     aqc111_read_perm_mac drivers/net/usb/aqc111.c:656 [inline]
     aqc111_bind+0x221/0x1150 drivers/net/usb/aqc111.c:713
     usbnet_probe+0xbe6/0x4390 drivers/net/usb/usbnet.c:1772
    
    Reported-by: syzbot+3b6b9ff7b80430020c7b@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=3b6b9ff7b80430020c7b
    Tested-by: syzbot+3b6b9ff7b80430020c7b@syzkaller.appspotmail.com
    Fixes: df2d59a2ab6c ("net: usb: aqc111: Add support for getting and setting of MAC address")
    Signed-off-by: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
    Link: https://patch.msgid.link/20250520113240.2369438-1-n.zhandarovich@fintech.ru
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net_sched: prio: fix a race in prio_tune() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jun 11 11:15:11 2025 +0000

    net_sched: prio: fix a race in prio_tune()
    
    [ Upstream commit d35acc1be3480505b5931f17e4ea9b7617fea4d3 ]
    
    Gerrard Tai reported a race condition in PRIO, whenever SFQ perturb timer
    fires at the wrong time.
    
    The race is as follows:
    
    CPU 0                                 CPU 1
    [1]: lock root
    [2]: qdisc_tree_flush_backlog()
    [3]: unlock root
     |
     |                                    [5]: lock root
     |                                    [6]: rehash
     |                                    [7]: qdisc_tree_reduce_backlog()
     |
    [4]: qdisc_put()
    
    This can be abused to underflow a parent's qlen.
    
    Calling qdisc_purge_queue() instead of qdisc_tree_flush_backlog()
    should fix the race, because all packets will be purged from the qdisc
    before releasing the lock.
    
    Fixes: 7b8e0b6e6599 ("net: sched: prio: delay destroying child qdiscs on change")
    Reported-by: Gerrard Tai <gerrard.tai@starlabs.sg>
    Suggested-by: Gerrard Tai <gerrard.tai@starlabs.sg>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250611111515.1983366-2-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net_sched: red: fix a race in __red_change() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jun 11 11:15:12 2025 +0000

    net_sched: red: fix a race in __red_change()
    
    [ Upstream commit 85a3e0ede38450ea3053b8c45d28cf55208409b8 ]
    
    Gerrard Tai reported a race condition in RED, whenever SFQ perturb timer
    fires at the wrong time.
    
    The race is as follows:
    
    CPU 0                                 CPU 1
    [1]: lock root
    [2]: qdisc_tree_flush_backlog()
    [3]: unlock root
     |
     |                                    [5]: lock root
     |                                    [6]: rehash
     |                                    [7]: qdisc_tree_reduce_backlog()
     |
    [4]: qdisc_put()
    
    This can be abused to underflow a parent's qlen.
    
    Calling qdisc_purge_queue() instead of qdisc_tree_flush_backlog()
    should fix the race, because all packets will be purged from the qdisc
    before releasing the lock.
    
    Fixes: 0c8d13ac9607 ("net: sched: red: delay destroying child qdisc on replace")
    Reported-by: Gerrard Tai <gerrard.tai@starlabs.sg>
    Suggested-by: Gerrard Tai <gerrard.tai@starlabs.sg>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250611111515.1983366-3-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net_sched: sch_sfq: fix a potential crash on gso_skb handling [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jun 6 16:51:27 2025 +0000

    net_sched: sch_sfq: fix a potential crash on gso_skb handling
    
    [ Upstream commit 82ffbe7776d0ac084031f114167712269bf3d832 ]
    
    SFQ has an assumption of always being able to queue at least one packet.
    
    However, after the blamed commit, sch->q.len can be inflated by packets
    in sch->gso_skb, and an enqueue() on an empty SFQ qdisc can be followed
    by an immediate drop.
    
    Fix sfq_drop() to properly clear q->tail in this situation.
    
    Tested:
    
    ip netns add lb
    ip link add dev to-lb type veth peer name in-lb netns lb
    ethtool -K to-lb tso off                 # force qdisc to requeue gso_skb
    ip netns exec lb ethtool -K in-lb gro on # enable NAPI
    ip link set dev to-lb up
    ip -netns lb link set dev in-lb up
    ip addr add dev to-lb 192.168.20.1/24
    ip -netns lb addr add dev in-lb 192.168.20.2/24
    tc qdisc replace dev to-lb root sfq limit 100
    
    ip netns exec lb netserver
    
    netperf -H 192.168.20.2 -l 100 &
    netperf -H 192.168.20.2 -l 100 &
    netperf -H 192.168.20.2 -l 100 &
    netperf -H 192.168.20.2 -l 100 &
    
    Fixes: a53851e2c321 ("net: sched: explicit locking in gso_cpu fallback")
    Reported-by: Marcus Wichelmann <marcus.wichelmann@hetzner-cloud.de>
    Closes: https://lore.kernel.org/netdev/9da42688-bfaa-4364-8797-e9271f3bdaef@hetzner-cloud.de/
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Link: https://patch.msgid.link/20250606165127.3629486-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net_sched: tbf: fix a race in tbf_change() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jun 11 11:15:13 2025 +0000

    net_sched: tbf: fix a race in tbf_change()
    
    [ Upstream commit 43eb466041216d25dedaef1c383ad7bd89929cbc ]
    
    Gerrard Tai reported a race condition in TBF, whenever SFQ perturb timer
    fires at the wrong time.
    
    The race is as follows:
    
    CPU 0                                 CPU 1
    [1]: lock root
    [2]: qdisc_tree_flush_backlog()
    [3]: unlock root
     |
     |                                    [5]: lock root
     |                                    [6]: rehash
     |                                    [7]: qdisc_tree_reduce_backlog()
     |
    [4]: qdisc_put()
    
    This can be abused to underflow a parent's qlen.
    
    Calling qdisc_purge_queue() instead of qdisc_tree_flush_backlog()
    should fix the race, because all packets will be purged from the qdisc
    before releasing the lock.
    
    Fixes: b05972f01e7d ("net: sched: tbf: don't call qdisc_put() while holding tree lock")
    Reported-by: Gerrard Tai <gerrard.tai@starlabs.sg>
    Suggested-by: Gerrard Tai <gerrard.tai@starlabs.sg>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Zhengchao Shao <shaozhengchao@huawei.com>
    Link: https://patch.msgid.link/20250611111515.1983366-4-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfilter: bridge: Move specific fragmented packet to slow_path instead of dropping it [+ + +]
Author: Huajian Yang <huajianyang@asrmicro.com>
Date:   Thu Apr 17 17:29:53 2025 +0800

    netfilter: bridge: Move specific fragmented packet to slow_path instead of dropping it
    
    [ Upstream commit aa04c6f45b9224b949aa35d4fa5f8d0ba07b23d4 ]
    
    The config NF_CONNTRACK_BRIDGE will change the bridge forwarding for
    fragmented packets.
    
    The original bridge does not know that it is a fragmented packet and
    forwards it directly, after NF_CONNTRACK_BRIDGE is enabled, function
    nf_br_ip_fragment and br_ip6_fragment will check the headroom.
    
    In original br_forward, insufficient headroom of skb may indeed exist,
    but there's still a way to save the skb in the device driver after
    dev_queue_xmit.So droping the skb will change the original bridge
    forwarding in some cases.
    
    Fixes: 3c171f496ef5 ("netfilter: bridge: add connection tracking system")
    Signed-off-by: Huajian Yang <huajianyang@asrmicro.com>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: nft_fib_ipv6: fix VRF ipv4/ipv6 result discrepancy [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Wed May 21 11:38:47 2025 +0200

    netfilter: nf_tables: nft_fib_ipv6: fix VRF ipv4/ipv6 result discrepancy
    
    [ Upstream commit 8b53f46eb430fe5b42d485873b85331d2de2c469 ]
    
    With a VRF, ipv4 and ipv6 FIB expression behave differently.
    
       fib daddr . iif oif
    
    Will return the input interface name for ipv4, but the real device
    for ipv6.  Example:
    
    If VRF device name is tvrf and real (incoming) device is veth0.
    First round is ok, both ipv4 and ipv6 will yield 'veth0'.
    
    But in the second round (incoming device will be set to "tvrf"), ipv4
    will yield "tvrf" whereas ipv6 returns "veth0" for the second round too.
    
    This makes ipv6 behave like ipv4.
    
    A followup patch will add a test case for this, without this change
    it will fail with:
      get element inet t fibif6iif { tvrf . dead:1::99 . tvrf }
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      FAIL: did not find tvrf . dead:1::99 . tvrf in fibif6iif
    
    Alternatively we could either not do anything at all or change
    ipv4 to also return the lower/real device, however, nft (userspace)
    doc says "iif: if fib lookup provides a route then check its output
    interface is identical to the packets input interface." which is what
    the nft fib ipv4 behaviour is.
    
    Fixes: f6d0cbcf09c5 ("netfilter: nf_tables: add fib expression")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nft_socket: fix sk refcount leaks [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Thu Sep 5 12:54:46 2024 +0200

    netfilter: nft_socket: fix sk refcount leaks
    
    commit 8b26ff7af8c32cb4148b3e147c52f9e4c695209c upstream.
    
    We must put 'sk' reference before returning.
    
    Fixes: 039b1f4f24ec ("netfilter: nft_socket: fix erroneous socket assignment")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
NFC: nci: uart: Set tty->disc_data only in success path [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Wed Jun 18 09:36:50 2025 +0200

    NFC: nci: uart: Set tty->disc_data only in success path
    
    commit fc27ab48904ceb7e4792f0c400f1ef175edf16fe upstream.
    
    Setting tty->disc_data before opening the NCI device means we need to
    clean it up on error paths.  This also opens some short window if device
    starts sending data, even before NCIUARTSETDRIVER IOCTL succeeded
    (broken hardware?).  Close the window by exposing tty->disc_data only on
    the success path, when opening of the NCI device and try_module_get()
    succeeds.
    
    The code differs in error path in one aspect: tty->disc_data won't be
    ever assigned thus NULL-ified.  This however should not be relevant
    difference, because of "tty->disc_data=NULL" in nci_uart_tty_open().
    
    Cc: Linus Torvalds <torvalds@linuxfoundation.org>
    Fixes: 9961127d4bce ("NFC: nci: add generic uart support")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Link: https://patch.msgid.link/20250618073649.25049-2-krzysztof.kozlowski@linaro.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
NFSD: Fix ia_size underflow [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Tue Jun 10 16:53:21 2025 -0700

    NFSD: Fix ia_size underflow
    
    [ Upstream commit e6faac3f58c7c4176b66f63def17a34232a17b0e ]
    
    iattr::ia_size is a loff_t, which is a signed 64-bit type. NFSv3 and
    NFSv4 both define file size as an unsigned 64-bit type. Thus there
    is a range of valid file size values an NFS client can send that is
    already larger than Linux can handle.
    
    Currently decode_fattr4() dumps a full u64 value into ia_size. If
    that value happens to be larger than S64_MAX, then ia_size
    underflows. I'm about to fix up the NFSv3 behavior as well, so let's
    catch the underflow in the common code path: nfsd_setattr().
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    (cherry picked from commit e6faac3f58c7c4176b66f63def17a34232a17b0e)
    [Larry: backport to 5.4.y. Minor conflict resolved due to missing commit 2f221d6f7b88
    attr: handle idmapped mounts]
    Signed-off-by: Larry Bassel <larry.bassel@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

NFSD: Fix NFSv3 SETATTR/CREATE's handling of large file sizes [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Tue Jun 10 16:55:04 2025 -0700

    NFSD: Fix NFSv3 SETATTR/CREATE's handling of large file sizes
    
    [ Upstream commit a648fdeb7c0e17177a2280344d015dba3fbe3314 ]
    
    iattr::ia_size is a loff_t, so these NFSv3 procedures must be
    careful to deal with incoming client size values that are larger
    than s64_max without corrupting the value.
    
    Silently capping the value results in storing a different value
    than the client passed in which is unexpected behavior, so remove
    the min_t() check in decode_sattr3().
    
    Note that RFC 1813 permits only the WRITE procedure to return
    NFS3ERR_FBIG. We believe that NFSv3 reference implementations
    also return NFS3ERR_FBIG when ia_size is too large.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    (cherry picked from commit a648fdeb7c0e17177a2280344d015dba3fbe3314)
    [Larry: backport to 5.4.y. Minor conflict resolved due to missing commit 9cde9360d18d
    NFSD: Update the SETATTR3args decoder to use struct xdr_stream]
    Signed-off-by: Larry Bassel <larry.bassel@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nfsd: nfsd4_spo_must_allow() must check this is a v4 compound request [+ + +]
Author: NeilBrown <neil@brown.name>
Date:   Fri Mar 28 11:05:59 2025 +1100

    nfsd: nfsd4_spo_must_allow() must check this is a v4 compound request
    
    commit 1244f0b2c3cecd3f349a877006e67c9492b41807 upstream.
    
    If the request being processed is not a v4 compound request, then
    examining the cstate can have undefined results.
    
    This patch adds a check that the rpc procedure being executed
    (rq_procinfo) is the NFSPROC4_COMPOUND procedure.
    
    Reported-by: Olga Kornievskaia <okorniev@redhat.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: NeilBrown <neil@brown.name>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nilfs2: add pointer check for nilfs_direct_propagate() [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
Date:   Tue Apr 29 02:37:07 2025 +0900

    nilfs2: add pointer check for nilfs_direct_propagate()
    
    [ Upstream commit f43f02429295486059605997bc43803527d69791 ]
    
    Patch series "nilfs2: improve sanity checks in dirty state propagation".
    
    This fixes one missed check for block mapping anomalies and one improper
    return of an error code during a preparation step for log writing, thereby
    improving checking for filesystem corruption on writeback.
    
    This patch (of 2):
    
    In nilfs_direct_propagate(), the printer get from nilfs_direct_get_ptr()
    need to be checked to ensure it is not an invalid pointer.
    
    If the pointer value obtained by nilfs_direct_get_ptr() is
    NILFS_BMAP_INVALID_PTR, means that the metadata (in this case, i_bmap in
    the nilfs_inode_info struct) that should point to the data block at the
    buffer head of the argument is corrupted and the data block is orphaned,
    meaning that the file system has lost consistency.
    
    Add a value check and return -EINVAL when it is an invalid pointer.
    
    Link: https://lkml.kernel.org/r/20250428173808.6452-1-konishi.ryusuke@gmail.com
    Link: https://lkml.kernel.org/r/20250428173808.6452-2-konishi.ryusuke@gmail.com
    Fixes: 36a580eb489f ("nilfs2: direct block mapping")
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nilfs2: do not propagate ENOENT error from nilfs_btree_propagate() [+ + +]
Author: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Date:   Tue Apr 29 02:37:08 2025 +0900

    nilfs2: do not propagate ENOENT error from nilfs_btree_propagate()
    
    [ Upstream commit 8e39fbb1edbb4ec9d7c1124f403877fc167fcecd ]
    
    In preparation for writing logs, in nilfs_btree_propagate(), which makes
    parent and ancestor node blocks dirty starting from a modified data block
    or b-tree node block, if the starting block does not belong to the b-tree,
    i.e.  is isolated, nilfs_btree_do_lookup() called within the function
    fails with -ENOENT.
    
    In this case, even though -ENOENT is an internal code, it is propagated to
    the log writer via nilfs_bmap_propagate() and may be erroneously returned
    to system calls such as fsync().
    
    Fix this issue by changing the error code to -EINVAL in this case, and
    having the bmap layer detect metadata corruption and convert the error
    code appropriately.
    
    Link: https://lkml.kernel.org/r/20250428173808.6452-3-konishi.ryusuke@gmail.com
    Fixes: 1f5abe7e7dbc ("nilfs2: replace BUG_ON and BUG calls triggerable from ioctl")
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Cc: Wentao Liang <vulab@iscas.ac.cn>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nios2: force update_mmu_cache on spurious tlb-permission--related pagefaults [+ + +]
Author: Simon Schuster <schuster.simon@siemens-energy.com>
Date:   Thu Mar 27 14:54:22 2025 +0100

    nios2: force update_mmu_cache on spurious tlb-permission--related pagefaults
    
    [ Upstream commit 2d8a3179ea035f9341b6a73e5ba4029fc67e983d ]
    
    NIOS2 uses a software-managed TLB for virtual address translation. To
    flush a cache line, the original mapping is replaced by one to physical
    address 0x0 with no permissions (rwx mapped to 0) set. This can lead to
    TLB-permission--related traps when such a nominally flushed entry is
    encountered as a mapping for an otherwise valid virtual address within a
    process (e.g. due to an MMU-PID-namespace rollover that previously
    flushed the complete TLB including entries of existing, running
    processes).
    
    The default ptep_set_access_flags implementation from mm/pgtable-generic.c
    only forces a TLB-update when the page-table entry has changed within the
    page table:
    
            /*
             * [...] We return whether the PTE actually changed, which in turn
             * instructs the caller to do things like update__mmu_cache. [...]
             */
            int ptep_set_access_flags(struct vm_area_struct *vma,
                                      unsigned long address, pte_t *ptep,
                                      pte_t entry, int dirty)
            {
                    int changed = !pte_same(*ptep, entry);
                    if (changed) {
                            set_pte_at(vma->vm_mm, address, ptep, entry);
                            flush_tlb_fix_spurious_fault(vma, address);
                    }
                    return changed;
            }
    
    However, no cross-referencing with the TLB-state occurs, so the
    flushing-induced pseudo entries that are responsible for the pagefault
    in the first place are never pre-empted from TLB on this code path.
    
    This commit fixes this behaviour by always requesting a TLB-update in
    this part of the pagefault handling, fixing spurious page-faults on the
    way. The handling is a straightforward port of the logic from the MIPS
    architecture via an arch-specific ptep_set_access_flags function ported
    from arch/mips/include/asm/pgtable.h.
    
    Signed-off-by: Simon Schuster <schuster.simon@siemens-energy.com>
    Signed-off-by: Andreas Oetken <andreas.oetken@siemens-energy.com>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
parisc: fix building with gcc-15 [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue May 20 11:00:46 2025 +0200

    parisc: fix building with gcc-15
    
    commit 7cbb015e2d3d6f180256cde0c908eab21268e7b9 upstream.
    
    The decompressor is built with the default C dialect, which is now gnu23
    on gcc-15, and this clashes with the kernel's bool type definition:
    
    In file included from include/uapi/linux/posix_types.h:5,
                     from arch/parisc/boot/compressed/misc.c:7:
    include/linux/stddef.h:11:9: error: cannot use keyword 'false' as enumeration constant
       11 |         false   = 0,
    
    Add the -std=gnu11 argument here, as we do for all other architectures.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
PCI: Add ACS quirk for Loongson PCIe [+ + +]
Author: Huacai Chen <chenhuacai@kernel.org>
Date:   Thu Apr 3 12:07:56 2025 +0800

    PCI: Add ACS quirk for Loongson PCIe
    
    commit 1f3303aa92e15fa273779acac2d0023609de30f1 upstream.
    
    Loongson PCIe Root Ports don't advertise an ACS capability, but they do not
    allow peer-to-peer transactions between Root Ports. Add an ACS quirk so
    each Root Port can be in a separate IOMMU group.
    
    Signed-off-by: Xianglai Li <lixianglai@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20250403040756.720409-1-chenhuacai@loongson.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

PCI: Fix lock symmetry in pci_slot_unlock() [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Mon May 5 14:54:12 2025 +0300

    PCI: Fix lock symmetry in pci_slot_unlock()
    
    commit f3efb9569b4a21354ef2caf7ab0608a3e14cc6e4 upstream.
    
    The commit a4e772898f8b ("PCI: Add missing bridge lock to pci_bus_lock()")
    made the lock function to call depend on dev->subordinate but left
    pci_slot_unlock() unmodified creating locking asymmetry compared with
    pci_slot_lock().
    
    Because of the asymmetric lock handling, the same bridge device is unlocked
    twice. First pci_bus_unlock() unlocks bus->self and then pci_slot_unlock()
    will unconditionally unlock the same bridge device.
    
    Move pci_dev_unlock() inside an else branch to match the logic in
    pci_slot_lock().
    
    Fixes: a4e772898f8b ("PCI: Add missing bridge lock to pci_bus_lock()")
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Lukas Wunner <lukas@wunner.de>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20250505115412.37628-1-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
perf record: Fix incorrect --user-regs comments [+ + +]
Author: Dapeng Mi <dapeng1.mi@linux.intel.com>
Date:   Thu Apr 3 06:08:10 2025 +0000

    perf record: Fix incorrect --user-regs comments
    
    [ Upstream commit a4a859eb6704a8aa46aa1cec5396c8d41383a26b ]
    
    The comment of "--user-regs" option is not correct, fix it.
    
    "on interrupt," -> "in user space,"
    
    Fixes: 84c417422798c897 ("perf record: Support direct --user-regs arguments")
    Reviewed-by: Ian Rogers <irogers@google.com>
    Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20250403060810.196028-1-dapeng1.mi@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf scripts python: exported-sql-viewer.py: Fix pattern matching with Python 3 [+ + +]
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon May 12 12:39:32 2025 +0300

    perf scripts python: exported-sql-viewer.py: Fix pattern matching with Python 3
    
    [ Upstream commit 17e548405a81665fd14cee960db7d093d1396400 ]
    
    The script allows the user to enter patterns to find symbols.
    
    The pattern matching characters are converted for use in SQL.
    
    For PostgreSQL the conversion involves using the Python maketrans()
    method which is slightly different in Python 3 compared with Python 2.
    
    Fix to work in Python 3.
    
    Fixes: beda0e725e5f06ac ("perf script python: Add Python3 support to exported-sql-viewer.py")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Tony Jones <tonyj@suse.de>
    Link: https://lore.kernel.org/r/20250512093932.79854-4-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf tests switch-tracking: Fix timestamp comparison [+ + +]
Author: Leo Yan <leo.yan@arm.com>
Date:   Mon Mar 31 18:27:59 2025 +0100

    perf tests switch-tracking: Fix timestamp comparison
    
    [ Upstream commit 628e124404b3db5e10e17228e680a2999018ab33 ]
    
    The test might fail on the Arm64 platform with the error:
    
      # perf test -vvv "Track with sched_switch"
      Missing sched_switch events
      #
    
    The issue is caused by incorrect handling of timestamp comparisons. The
    comparison result, a signed 64-bit value, was being directly cast to an
    int, leading to incorrect sorting for sched events.
    
    The case does not fail everytime, usually I can trigger the failure
    after run 20 ~ 30 times:
    
      # while true; do perf test "Track with sched_switch"; done
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : FAILED!
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : FAILED!
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
    
    I used cross compiler to build Perf tool on my host machine and tested on
    Debian / Juno board.  Generally, I think this issue is not very specific
    to GCC versions.  As both internal CI and my local env can reproduce the
    issue.
    
    My Host Build compiler:
    
      # aarch64-linux-gnu-gcc --version
      aarch64-linux-gnu-gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
    
    Juno Board:
    
      # lsb_release -a
      No LSB modules are available.
      Distributor ID: Debian
      Description:    Debian GNU/Linux 12 (bookworm)
      Release:        12
      Codename:       bookworm
    
    Fix this by explicitly returning 0, 1, or -1 based on whether the result
    is zero, positive, or negative.
    
    Fixes: d44bc558297222d9 ("perf tests: Add a test for tracking with sched_switch")
    Reviewed-by: Ian Rogers <irogers@google.com>
    Signed-off-by: Leo Yan <leo.yan@arm.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: James Clark <james.clark@linaro.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20250331172759.115604-1-leo.yan@arm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf ui browser hists: Set actions->thread before calling do_zoom_thread() [+ + +]
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Wed Apr 9 21:58:19 2025 -0300

    perf ui browser hists: Set actions->thread before calling do_zoom_thread()
    
    [ Upstream commit 1741189d843a1d5ef38538bc52a3760e2e46cb2e ]
    
    In 7cecb7fe8388d5c3 ("perf hists: Move sort__has_comm into struct
    perf_hpp_list") it assumes that act->thread is set prior to calling
    do_zoom_thread().
    
    This doesn't happen when we use ESC or the Left arrow key to Zoom out of
    a specific thread, making this operation not to work and we get stuck
    into the thread zoom.
    
    In 6422184b087ff435 ("perf hists browser: Simplify zooming code using
    pstack_peek()") it says no need to set actions->thread, and at that
    point that was true, but in 7cecb7fe8388d5c3 a actions->thread == NULL
    check was added before the zoom out of thread could kick in.
    
    We can zoom out using the alternative 't' thread zoom toggle hotkey to
    finally set actions->thread before calling do_zoom_thread() and zoom
    out, but lets also fix the ESC/Zoom out of thread case.
    
    Fixes: 7cecb7fe8388d5c3 ("perf hists: Move sort__has_comm into struct perf_hpp_list")
    Reported-by: Ingo Molnar <mingo@kernel.org>
    Tested-by: Ingo Molnar <mingo@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: James Clark <james.clark@linaro.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/Z_TYux5fUg2pW-pF@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf/core: Fix broken throttling when max_samples_per_tick=1 [+ + +]
Author: Qing Wang <wangqing7171@gmail.com>
Date:   Sat Apr 5 22:16:35 2025 +0800

    perf/core: Fix broken throttling when max_samples_per_tick=1
    
    [ Upstream commit f51972e6f8b9a737b2b3eb588069acb538fa72de ]
    
    According to the throttling mechanism, the pmu interrupts number can not
    exceed the max_samples_per_tick in one tick. But this mechanism is
    ineffective when max_samples_per_tick=1, because the throttling check is
    skipped during the first interrupt and only performed when the second
    interrupt arrives.
    
    Perhaps this bug may cause little influence in one tick, but if in a
    larger time scale, the problem can not be underestimated.
    
    When max_samples_per_tick = 1:
    Allowed-interrupts-per-second max-samples-per-second  default-HZ  ARCH
    200                           100                     100         X86
    500                           250                     250         ARM64
    ...
    Obviously, the pmu interrupt number far exceed the user's expect.
    
    Fixes: e050e3f0a71b ("perf: Fix broken interrupt rate throttling")
    Signed-off-by: Qing Wang <wangqing7171@gmail.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20250405141635.243786-3-wangqing7171@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf: Fix sample vs do_exit() [+ + +]
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Thu Jun 5 12:31:45 2025 +0200

    perf: Fix sample vs do_exit()
    
    [ Upstream commit 4f6fc782128355931527cefe3eb45338abd8ab39 ]
    
    Baisheng Gao reported an ARM64 crash, which Mark decoded as being a
    synchronous external abort -- most likely due to trying to access
    MMIO in bad ways.
    
    The crash further shows perf trying to do a user stack sample while in
    exit_mmap()'s tlb_finish_mmu() -- i.e. while tearing down the address
    space it is trying to access.
    
    It turns out that we stop perf after we tear down the userspace mm; a
    receipie for disaster, since perf likes to access userspace for
    various reasons.
    
    Flip this order by moving up where we stop perf in do_exit().
    
    Additionally, harden PERF_SAMPLE_CALLCHAIN and PERF_SAMPLE_STACK_USER
    to abort when the current task does not have an mm (exit_mm() makes
    sure to set current->mm = NULL; before commencing with the actual
    teardown). Such that CPU wide events don't trip on this same problem.
    
    Fixes: c5ebcedb566e ("perf: Add ability to attach user stack dump to sample")
    Reported-by: Baisheng Gao <baisheng.gao@unisoc.com>
    Suggested-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20250605110815.GQ39944@noisy.programming.kicks-ass.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pinctrl: armada-37xx: propagate error from armada_37xx_gpio_get() [+ + +]
Author: Gabor Juhos <j4g8y7@gmail.com>
Date:   Wed May 14 21:18:35 2025 +0200

    pinctrl: armada-37xx: propagate error from armada_37xx_gpio_get()
    
    [ Upstream commit 57273ff8bb16f3842c2597b5bbcd49e7fa12edf7 ]
    
    The regmap_read() function can fail, so propagate its error up to
    the stack instead of silently ignoring that.
    
    Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
    Link: https://lore.kernel.org/20250514-pinctrl-a37xx-fixes-v2-4-07e9ac1ab737@gmail.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pinctrl: armada-37xx: propagate error from armada_37xx_gpio_get_direction() [+ + +]
Author: Gabor Juhos <j4g8y7@gmail.com>
Date:   Wed May 14 21:18:37 2025 +0200

    pinctrl: armada-37xx: propagate error from armada_37xx_gpio_get_direction()
    
    [ Upstream commit 6481c0a83367b0672951ccc876fbae7ee37b594b ]
    
    The regmap_read() function can fail, so propagate its error up to
    the stack instead of silently ignoring that.
    
    Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
    Link: https://lore.kernel.org/20250514-pinctrl-a37xx-fixes-v2-6-07e9ac1ab737@gmail.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pinctrl: armada-37xx: propagate error from armada_37xx_pmx_gpio_set_direction() [+ + +]
Author: Gabor Juhos <j4g8y7@gmail.com>
Date:   Wed May 14 21:18:36 2025 +0200

    pinctrl: armada-37xx: propagate error from armada_37xx_pmx_gpio_set_direction()
    
    [ Upstream commit bfa0ff804ffa8b1246ade8be08de98c9eb19d16f ]
    
    The armada_37xx_gpio_direction_{in,out}put() functions can fail, so
    propagate their error values back to the stack instead of silently
    ignoring those.
    
    Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
    Link: https://lore.kernel.org/20250514-pinctrl-a37xx-fixes-v2-5-07e9ac1ab737@gmail.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pinctrl: armada-37xx: propagate error from armada_37xx_pmx_set_by_name() [+ + +]
Author: Gabor Juhos <j4g8y7@gmail.com>
Date:   Wed May 14 21:18:38 2025 +0200

    pinctrl: armada-37xx: propagate error from armada_37xx_pmx_set_by_name()
    
    [ Upstream commit 4229c28323db141eda69cb99427be75d3edba071 ]
    
    The regmap_update_bits() function can fail, so propagate its error
    up to the stack instead of silently ignoring that.
    
    Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
    Link: https://lore.kernel.org/20250514-pinctrl-a37xx-fixes-v2-7-07e9ac1ab737@gmail.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pinctrl: armada-37xx: set GPIO output value before setting direction [+ + +]
Author: Gabor Juhos <j4g8y7@gmail.com>
Date:   Wed May 14 21:18:33 2025 +0200

    pinctrl: armada-37xx: set GPIO output value before setting direction
    
    commit e6ebd4942981f8ad37189bbb36a3c8495e21ef4c upstream.
    
    Changing the direction before updating the output value in the
    OUTPUT_VAL register may result in a glitch on the output line
    if the previous value in the OUTPUT_VAL register is different
    from the one we want to set.
    
    In order to avoid that, update the output value before changing
    the direction.
    
    Cc: stable@vger.kernel.org
    Fixes: 6702abb3bf23 ("pinctrl: armada-37xx: Fix direction_output() callback behavior")
    Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
    Link: https://lore.kernel.org/20250514-pinctrl-a37xx-fixes-v2-2-07e9ac1ab737@gmail.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

pinctrl: armada-37xx: use correct OUTPUT_VAL register for GPIOs > 31 [+ + +]
Author: Gabor Juhos <j4g8y7@gmail.com>
Date:   Wed May 14 21:18:32 2025 +0200

    pinctrl: armada-37xx: use correct OUTPUT_VAL register for GPIOs > 31
    
    commit 947c93eb29c2a581c0b0b6d5f21af3c2b7ff6d25 upstream.
    
    The controller has two consecutive OUTPUT_VAL registers and both
    holds output value for 32 GPIOs. Due to a missing adjustment, the
    current code always uses the first register while setting the
    output value whereas it should use the second one for GPIOs > 31.
    
    Add the missing armada_37xx_update_reg() call to adjust the register
    according to the 'offset' parameter of the function to fix the issue.
    
    Cc: stable@vger.kernel.org
    Fixes: 6702abb3bf23 ("pinctrl: armada-37xx: Fix direction_output() callback behavior")
    Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
    Link: https://lore.kernel.org/20250514-pinctrl-a37xx-fixes-v2-1-07e9ac1ab737@gmail.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

pinctrl: at91: Fix possible out-of-boundary access [+ + +]
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Thu May 8 23:08:07 2025 +0300

    pinctrl: at91: Fix possible out-of-boundary access
    
    [ Upstream commit 762ef7d1e6eefad9896560bfcb9bcf7f1b6df9c1 ]
    
    at91_gpio_probe() doesn't check that given OF alias is not available or
    something went wrong when trying to get it. This might have consequences
    when accessing gpio_chips array with that value as an index. Note, that
    BUG() can be compiled out and hence won't actually perform the required
    checks.
    
    Fixes: 6732ae5cb47c ("ARM: at91: add pinctrl support")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Closes: https://lore.kernel.org/r/202505052343.UHF1Zo93-lkp@intel.com/
    Link: https://lore.kernel.org/20250508200807.1384558-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/x86: dell_rbu: Stop overwriting data buffer [+ + +]
Author: Stuart Hayes <stuart.w.hayes@gmail.com>
Date:   Mon Jun 9 13:46:58 2025 -0500

    platform/x86: dell_rbu: Stop overwriting data buffer
    
    [ Upstream commit f4b0fa38d5fefe9aed6ed831f3bd3538c168ee19 ]
    
    The dell_rbu driver will use memset() to clear the data held by each
    packet when it is no longer needed (when the driver is unloaded, the
    packet size is changed, etc).
    
    The amount of memory that is cleared (before this patch) is the normal
    packet size. However, the last packet in the list may be smaller.
    
    Fix this to only clear the memory actually used by each packet, to prevent
    it from writing past the end of data buffer.
    
    Because the packet data buffers are allocated with __get_free_pages() (in
    page-sized increments), this bug could only result in a buffer being
    overwritten when a packet size larger than one page is used. The only user
    of the dell_rbu module should be the Dell BIOS update program, which uses
    a packet size of 4096, so no issues should be seen without the patch, it
    just blocks the possiblity.
    
    Fixes: 6c54c28e69f2 ("[PATCH] dell_rbu: new Dell BIOS update driver")
    Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com>
    Link: https://lore.kernel.org/r/20250609184659.7210-5-stuart.w.hayes@gmail.com
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform: Add Surface platform directory [+ + +]
Author: Maximilian Luz <luzmaximilian@gmail.com>
Date:   Fri Oct 9 16:11:24 2020 +0200

    platform: Add Surface platform directory
    
    [ Upstream commit 1e3a2bc89de44ec34153ab1c1056346b51def250 ]
    
    It may make sense to split the Microsoft Surface hardware platform
    drivers out to a separate subdirectory, since some of it may be shared
    between ARM and x86 in the future (regarding devices like the Surface
    Pro X).
    
    Further, newer Surface devices will require additional platform drivers
    for fundamental support (mostly regarding their embedded controller),
    which may also warrant this split from a size perspective.
    
    This commit introduces a new platform/surface subdirectory for the
    Surface device family, with subsequent commits moving existing Surface
    drivers over from platform/x86.
    
    A new MAINTAINERS entry is added for this directory. Patches to files in
    this directory will be taken up by the platform-drivers-x86 team (i.e.
    Hans de Goede and Mark Gross) after they have been reviewed by
    Maximilian Luz.
    
    Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lore.kernel.org/r/20201009141128.683254-2-luzmaximilian@gmail.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Stable-dep-of: f4b0fa38d5fe ("platform/x86: dell_rbu: Stop overwriting data buffer")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PM: runtime: fix denying of auto suspend in pm_suspend_timer_fn() [+ + +]
Author: Charan Teja Kalla <quic_charante@quicinc.com>
Date:   Thu May 15 12:11:25 2025 +0530

    PM: runtime: fix denying of auto suspend in pm_suspend_timer_fn()
    
    [ Upstream commit 40d3b40dce375d6f1c1dbf08d79eed3aed6c691d ]
    
    pm_runtime_put_autosuspend() schedules a hrtimer to expire
    at "dev->power.timer_expires". If the hrtimer's callback,
    pm_suspend_timer_fn(), observes that the current time equals
    "dev->power.timer_expires", it unexpectedly bails out instead of
    proceeding with runtime suspend.
    
    pm_suspend_timer_fn():
    
     if (expires > 0 && expires < ktime_get_mono_fast_ns()) {
            dev->power.timer_expires = 0;
            rpm_suspend(..)
     }
    
    Additionally, as ->timer_expires is not cleared, all the future auto
    suspend requests will not schedule hrtimer to perform auto suspend.
    
    rpm_suspend():
    
     if ((rpmflags & RPM_AUTO) &&...) {
            if (!(dev->power.timer_expires && ...) { <-- this will fail.
                    hrtimer_start_range_ns(&dev->power.suspend_timer,...);
            }
     }
    
    Fix this by as well checking if current time reaches the set expiration.
    
    Co-developed-by: Patrick Daly <quic_pdaly@quicinc.com>
    Signed-off-by: Patrick Daly <quic_pdaly@quicinc.com>
    Signed-off-by: Charan Teja Kalla <quic_charante@quicinc.com>
    Link: https://patch.msgid.link/20250515064125.1211561-1-quic_charante@quicinc.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PM: sleep: Fix power.is_suspended cleanup for direct-complete devices [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Tue Jun 3 18:19:27 2025 +0200

    PM: sleep: Fix power.is_suspended cleanup for direct-complete devices
    
    [ Upstream commit d46c4c839c20a599a0eb8d73708ce401f9c7d06d ]
    
    Commit 03f1444016b7 ("PM: sleep: Fix handling devices with direct_complete
    set on errors") caused power.is_suspended to be set for devices with
    power.direct_complete set, but it forgot to ensure the clearing of that
    flag for them in device_resume(), so power.is_suspended is still set for
    them during the next system suspend-resume cycle.
    
    If that cycle is aborted in dpm_suspend(), the subsequent invocation of
    dpm_resume() will trigger a device_resume() call for every device and
    because power.is_suspended is set for the devices in question, they will
    not be skipped by device_resume() as expected which causes scary error
    messages to be logged (as appropriate).
    
    To address this issue, move the clearing of power.is_suspended in
    device_resume() immediately after the power.is_suspended check so it
    will be always cleared for all devices processed by that function.
    
    Fixes: 03f1444016b7 ("PM: sleep: Fix handling devices with direct_complete set on errors")
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4280
    Reported-and-tested-by: Chris Bainbridge <chris.bainbridge@gmail.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://patch.msgid.link/4990586.GXAFRqVoOG@rjwysocki.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PM: wakeup: Delete space in the end of string shown by pm_show_wakelocks() [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Mon May 5 17:26:51 2025 +0800

    PM: wakeup: Delete space in the end of string shown by pm_show_wakelocks()
    
    [ Upstream commit f0050a3e214aa941b78ad4caf122a735a24d81a6 ]
    
    pm_show_wakelocks() is called to generate a string when showing
    attributes /sys/power/wake_(lock|unlock), but the string ends
    with an unwanted space that was added back by mistake by commit
    c9d967b2ce40 ("PM: wakeup: simplify the output logic of
    pm_show_wakelocks()").
    
    Remove the unwanted space.
    
    Fixes: c9d967b2ce40 ("PM: wakeup: simplify the output logic of pm_show_wakelocks()")
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Link: https://patch.msgid.link/20250505-fix_power-v1-1-0f7f2c2f338c@quicinc.com
    [ rjw: Changelog edits ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pmdomain: core: Fix error checking in genpd_dev_pm_attach_by_id() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Thu May 8 09:29:23 2025 +0300

    pmdomain: core: Fix error checking in genpd_dev_pm_attach_by_id()
    
    [ Upstream commit 0f5757667ec0aaf2456c3b76fcf0c6c3ea3591fe ]
    
    The error checking for of_count_phandle_with_args() does not handle
    negative error codes correctly.  The problem is that "index" is a u32 so
    in the condition "if (index >= num_domains)" negative error codes stored
    in "num_domains" are type promoted to very high positive values and
    "index" is always going to be valid.
    
    Test for negative error codes first and then test if "index" is valid.
    
    Fixes: 3ccf3f0cd197 ("PM / Domains: Enable genpd_dev_pm_attach_by_id|name() for single PM domain")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/aBxPQ8AI8N5v-7rL@stanley.mountain
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
posix-cpu-timers: fix race between handle_posix_cpu_timers() and posix_cpu_timer_del() [+ + +]
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Tue Jun 17 19:15:50 2025 +0200

    posix-cpu-timers: fix race between handle_posix_cpu_timers() and posix_cpu_timer_del()
    
    commit f90fff1e152dedf52b932240ebbd670d83330eca upstream.
    
    If an exiting non-autoreaping task has already passed exit_notify() and
    calls handle_posix_cpu_timers() from IRQ, it can be reaped by its parent
    or debugger right after unlock_task_sighand().
    
    If a concurrent posix_cpu_timer_del() runs at that moment, it won't be
    able to detect timer->it.cpu.firing != 0: cpu_timer_task_rcu() and/or
    lock_task_sighand() will fail.
    
    Add the tsk->exit_state check into run_posix_cpu_timers() to fix this.
    
    This fix is not needed if CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y, because
    exit_task_work() is called before exit_notify(). But the check still
    makes sense, task_work_add(&tsk->posix_cputimers_work.work) will fail
    anyway in this case.
    
    Cc: stable@vger.kernel.org
    Reported-by: Benoît Sevens <bsevens@google.com>
    Fixes: 0bdd2ed4138e ("sched: run_posix_cpu_timers: Don't check ->exit_state, use lock_task_sighand()")
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
power: supply: bq27xxx: Retrieve again when busy [+ + +]
Author: Jerry Lv <Jerry.Lv@axis.com>
Date:   Tue Apr 15 11:40:47 2025 +0800

    power: supply: bq27xxx: Retrieve again when busy
    
    [ Upstream commit f16d9fb6cf03fdbdefa41a8b32ba1e57afb7ae3d ]
    
    Multiple applications may access the battery gauge at the same time, so
    the gauge may be busy and EBUSY will be returned. The driver will set a
    flag to record the EBUSY state, and this flag will be kept until the next
    periodic update. When this flag is set, bq27xxx_battery_get_property()
    will just return ENODEV until the flag is updated.
    
    Even if the gauge was busy during the last accessing attempt, returning
    ENODEV is not ideal, and can cause confusion in the applications layer.
    
    Instead, retry accessing the I2C to update the flag is as expected, for
    the gauge typically recovers from busy state within a few milliseconds.
    If still failed to access the gauge, the real error code would be returned
    instead of ENODEV (as suggested by Pali Rohár).
    
    Reviewed-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Jerry Lv <Jerry.Lv@axis.com>
    Link: https://lore.kernel.org/r/20250415-foo-fix-v2-1-5b45a395e4cc@axis.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/eeh: Fix missing PE bridge reconfiguration during VFIO EEH recovery [+ + +]
Author: Narayana Murty N <nnmlinux@linux.ibm.com>
Date:   Thu May 8 02:29:28 2025 -0400

    powerpc/eeh: Fix missing PE bridge reconfiguration during VFIO EEH recovery
    
    [ Upstream commit 33bc69cf6655cf60829a803a45275f11a74899e5 ]
    
    VFIO EEH recovery for PCI passthrough devices fails on PowerNV and pseries
    platforms due to missing host-side PE bridge reconfiguration. In the
    current implementation, eeh_pe_configure() only performs RTAS or OPAL-based
    bridge reconfiguration for native host devices, but skips it entirely for
    PEs managed through VFIO in guest passthrough scenarios.
    
    This leads to incomplete EEH recovery when a PCI error affects a
    passthrough device assigned to a QEMU/KVM guest. Although VFIO triggers the
    EEH recovery flow through VFIO_EEH_PE_ENABLE ioctl, the platform-specific
    bridge reconfiguration step is silently bypassed. As a result, the PE's
    config space is not fully restored, causing subsequent config space access
    failures or EEH freeze-on-access errors inside the guest.
    
    This patch fixes the issue by ensuring that eeh_pe_configure() always
    invokes the platform's configure_bridge() callback (e.g.,
    pseries_eeh_phb_configure_bridge) even for VFIO-managed PEs. This ensures
    that RTAS or OPAL calls to reconfigure the PE bridge are correctly issued
    on the host side, restoring the PE's configuration space after an EEH
    event.
    
    This fix is essential for reliable EEH recovery in QEMU/KVM guests using
    VFIO PCI passthrough on PowerNV and pseries systems.
    
    Tested with:
    - QEMU/KVM guest using VFIO passthrough (IBM Power9,(lpar)Power11 host)
    - Injected EEH errors with pseries EEH errinjct tool on host, recovery
      verified on qemu guest.
    - Verified successful config space access and CAP_EXP DevCtl restoration
      after recovery
    
    Fixes: 212d16cdca2d ("powerpc/eeh: EEH support for VFIO PCI device")
    Signed-off-by: Narayana Murty N <nnmlinux@linux.ibm.com>
    Reviewed-by: Vaibhav Jain <vaibhav@linux.ibm.com>
    Reviewed-by: Ganesh Goudar <ganeshgr@linux.ibm.com>
    Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
    Link: https://patch.msgid.link/20250508062928.146043-1-nnmlinux@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/hns: Include hnae3.h in hns_roce_hw_v2.h [+ + +]
Author: Junxian Huang <huangjunxian6@hisilicon.com>
Date:   Mon Apr 21 21:27:49 2025 +0800

    RDMA/hns: Include hnae3.h in hns_roce_hw_v2.h
    
    [ Upstream commit 2b11d33de23262cb20d1dcb24b586dbb8f54d463 ]
    
    hns_roce_hw_v2.h has a direct dependency on hnae3.h due to the
    inline function hns_roce_write64(), but it doesn't include this
    header currently. This leads to that files including
    hns_roce_hw_v2.h must also include hnae3.h to avoid compilation
    errors, even if they themselves don't really rely on hnae3.h.
    This doesn't make sense, hns_roce_hw_v2.h should include hnae3.h
    directly.
    
    Fixes: d3743fa94ccd ("RDMA/hns: Fix the chip hanging caused by sending doorbell during reset")
    Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
    Link: https://patch.msgid.link/20250421132750.1363348-6-huangjunxian6@hisilicon.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
regulator: max14577: Add error check for max14577_read_reg() [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
Date:   Mon May 26 10:56:27 2025 +0800

    regulator: max14577: Add error check for max14577_read_reg()
    
    commit 65271f868cb1dca709ff69e45939bbef8d6d0b70 upstream.
    
    The function max14577_reg_get_current_limit() calls the function
    max14577_read_reg(), but does not check its return value. A proper
    implementation can be found in max14577_get_online().
    
    Add a error check for the max14577_read_reg() and return error code
    if the function fails.
    
    Fixes: b0902bbeb768 ("regulator: max14577: Add regulator driver for Maxim 14577")
    Cc: stable@vger.kernel.org # v3.14
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Link: https://patch.msgid.link/20250526025627.407-1-vulab@iscas.ac.cn
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "bus: ti-sysc: Probe for l4_wkup and l4_cfg interconnect devices first" [+ + +]
Author: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Date:   Tue Apr 1 11:06:34 2025 +0200

    Revert "bus: ti-sysc: Probe for l4_wkup and l4_cfg interconnect devices first"
    
    [ Upstream commit 36305857b1ead8f6ca033a913162ebc09bee0b43 ]
    
    This reverts commit 4700a00755fb5a4bb5109128297d6fd2d1272ee6.
    
    It breaks target-module@2b300050 ("ti,sysc-omap2") probe on AM62x in a case
    when minimally-configured system tries to network-boot:
    
    [    6.888776] probe of 2b300050.target-module returned 517 after 258 usecs
    [   17.129637] probe of 2b300050.target-module returned 517 after 708 usecs
    [   17.137397] platform 2b300050.target-module: deferred probe pending: (reason unknown)
    [   26.878471] Waiting up to 100 more seconds for network.
    
    There are minimal configurations possible when the deferred device is not
    being probed any more (because everything else has been successfully
    probed) and deferral lists are not processed any more.
    
    Stable mmc enumeration can be achieved by filling /aliases node properly
    (4700a00755fb commit's rationale).
    
    After revert:
    
    [    9.006816] IP-Config: Complete:
    [    9.010058]      device=lan0, ...
    
    Tested-by: Andreas Kemnade <andreas@kemnade.info> # GTA04, Panda, BT200
    Reviewed-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>
    Link: https://lore.kernel.org/r/20250401090643.2776793-1-alexander.sverdlin@siemens.com
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "x86/bugs: Make spectre user default depend on MITIGATION_SPECTRE_V2" on v6.6 and older [+ + +]
Author: Breno Leitao <leitao@debian.org>
Date:   Fri Jun 20 06:51:23 2025 -0700

    Revert "x86/bugs: Make spectre user default depend on MITIGATION_SPECTRE_V2" on v6.6 and older
    
    This reverts commit a8c22ec36cdd99c1002d7152f859798fef7c4d58 which is
    commit 98fdaeb296f51ef08e727a7cc72e5b5c864c4f4d upstream.
    
    commit 7adb96687ce8 ("x86/bugs: Make spectre user default depend on
    MITIGATION_SPECTRE_V2") depends on commit 72c70f480a70 ("x86/bugs: Add
    a separate config for Spectre V2"), which introduced
    MITIGATION_SPECTRE_V2.
    
    commit 72c70f480a70 ("x86/bugs: Add a separate config for Spectre V2")
    never landed in stable tree, thus, stable tree doesn't have
    MITIGATION_SPECTRE_V2, that said, commit 7adb96687ce8 ("x86/bugs: Make
    spectre user default depend on MITIGATION_SPECTRE_V2") has no value if
    the dependecy was not applied.
    
    Revert commit 7adb96687ce8 ("x86/bugs: Make spectre user default
    depend on MITIGATION_SPECTRE_V2")  in stable kernel which landed in in
    5.4.294, 5.10.238, 5.15.185, 6.1.141 and 6.6.93 stable versions.
    
    Cc: David.Kaplan@amd.com
    Cc: peterz@infradead.org
    Cc: pawan.kumar.gupta@linux.intel.com
    Cc: mingo@kernel.org
    Cc: brad.spengler@opensrcsec.com
    Cc: stable@vger.kernel.org # 6.6 6.1 5.15 5.10 5.4
    Reported-by: Brad Spengler <brad.spengler@opensrcsec.com>
    Reported-by: Salvatore Bonaccorso <carnil@debian.org>
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
rpmsg: qcom_smd: Fix uninitialized return variable in __qcom_smd_send() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Wed Apr 23 20:22:05 2025 +0300

    rpmsg: qcom_smd: Fix uninitialized return variable in __qcom_smd_send()
    
    [ Upstream commit 5de775df3362090a6e90046d1f2d83fe62489aa0 ]
    
    The "ret" variable isn't initialized if we don't enter the loop.  For
    example,  if "channel->state" is not SMD_CHANNEL_OPENED.
    
    Fixes: 33e3820dda88 ("rpmsg: smd: Use spinlock in tx path")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/aAkhvV0nSbrsef1P@stanley.mountain
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rtc: Fix offset calculation for .start_secs < 0 [+ + +]
Author: Alexandre Mergnat <amergnat@baylibre.com>
Date:   Mon Apr 28 12:06:48 2025 +0200

    rtc: Fix offset calculation for .start_secs < 0
    
    [ Upstream commit fe9f5f96cfe8b82d0f24cbfa93718925560f4f8d ]
    
    The comparison
    
            rtc->start_secs > rtc->range_max
    
    has a signed left-hand side and an unsigned right-hand side.
    So the comparison might become true for negative start_secs which is
    interpreted as a (possibly very large) positive value.
    
    As a negative value can never be bigger than an unsigned value
    the correct representation of the (mathematical) comparison
    
            rtc->start_secs > rtc->range_max
    
    in C is:
    
            rtc->start_secs >= 0 && rtc->start_secs > rtc->range_max
    
    Use that to fix the offset calculation currently used in the
    rtc-mt6397 driver.
    
    Fixes: 989515647e783 ("rtc: Add one offset seconds to expand RTC range")
    Signed-off-by: Alexandre Mergnat <amergnat@baylibre.com>
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
    Link: https://lore.kernel.org/r/20250428-enable-rtc-v4-2-2b2f7e3f9349@baylibre.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

rtc: Improve performance of rtc_time64_to_tm(). Add tests. [+ + +]
Author: Cassio Neri <cassio.neri@gmail.com>
Date:   Thu Jun 24 21:13:43 2021 +0100

    rtc: Improve performance of rtc_time64_to_tm(). Add tests.
    
    commit 1d1bb12a8b1805ddeef9793ebeb920179fb0fa38 upstream.
    
    The current implementation of rtc_time64_to_tm() contains unnecessary
    loops, branches and look-up tables. The new one uses an arithmetic-based
    algorithm appeared in [1] and is approximately 4.3 times faster (YMMV).
    
    The drawback is that the new code isn't intuitive and contains many 'magic
    numbers' (not unusual for this type of algorithm). However, [1] justifies
    all those numbers and, given this function's history, the code is unlikely
    to need much maintenance, if any at all.
    
    Add a KUnit test case that checks every day in a 160,000 years interval
    starting on 1970-01-01 against the expected result. Add a new config
    RTC_LIB_KUNIT_TEST symbol to give the option to run this test suite.
    
    [1] Neri, Schneider, "Euclidean Affine Functions and Applications to
    Calendar Algorithms". https://arxiv.org/abs/2102.06959
    
    Signed-off-by: Cassio Neri <cassio.neri@gmail.com>
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Link: https://lore.kernel.org/r/20210624201343.85441-1-cassio.neri@gmail.com
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

rtc: Make rtc_time64_to_tm() support dates before 1970 [+ + +]
Author: Alexandre Mergnat <amergnat@baylibre.com>
Date:   Mon Apr 28 12:06:47 2025 +0200

    rtc: Make rtc_time64_to_tm() support dates before 1970
    
    commit 7df4cfef8b351fec3156160bedfc7d6d29de4cce upstream.
    
    Conversion of dates before 1970 is still relevant today because these
    dates are reused on some hardwares to store dates bigger than the
    maximal date that is representable in the device's native format.
    This prominently and very soon affects the hardware covered by the
    rtc-mt6397 driver that can only natively store dates in the interval
    1900-01-01 up to 2027-12-31. So to store the date 2028-01-01 00:00:00
    to such a device, rtc_time64_to_tm() must do the right thing for
    time=-2208988800.
    
    Signed-off-by: Alexandre Mergnat <amergnat@baylibre.com>
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
    Link: https://lore.kernel.org/r/20250428-enable-rtc-v4-1-2b2f7e3f9349@baylibre.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

rtc: sh: assign correct interrupts with DT [+ + +]
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Thu Feb 27 14:42:56 2025 +0100

    rtc: sh: assign correct interrupts with DT
    
    [ Upstream commit 8f2efdbc303fe7baa83843d3290dd6ea5ba3276c ]
    
    The DT bindings for this driver define the interrupts in the order as
    they are numbered in the interrupt controller. The old platform_data,
    however, listed them in a different order. So, for DT based platforms,
    they are mixed up. Assign them specifically for DT, so we can keep the
    bindings stable. After the fix, 'rtctest' passes again on the Renesas
    Genmai board (RZ-A1 / R7S72100).
    
    Fixes: dab5aec64bf5 ("rtc: sh: add support for rza series")
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Link: https://lore.kernel.org/r/20250227134256.9167-11-wsa+renesas@sang-engineering.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

rtc: test: Fix invalid format specifier. [+ + +]
Author: David Gow <davidgow@google.com>
Date:   Wed Feb 21 17:27:18 2024 +0800

    rtc: test: Fix invalid format specifier.
    
    commit 8a904a3caa88118744062e872ae90f37748a8fd8 upstream.
    
    'days' is a s64 (from div_s64), and so should use a %lld specifier.
    
    This was found by extending KUnit's assertion macros to use gcc's
    __printf attribute.
    
    Fixes: 1d1bb12a8b18 ("rtc: Improve performance of rtc_time64_to_tm(). Add tests.")
    Signed-off-by: David Gow <davidgow@google.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Justin Stitt <justinstitt@google.com>
    Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
s390/pci: Fix __pcilg_mio_inuser() inline assembly [+ + +]
Author: Heiko Carstens <hca@linux.ibm.com>
Date:   Mon May 19 18:07:11 2025 +0200

    s390/pci: Fix __pcilg_mio_inuser() inline assembly
    
    commit c4abe6234246c75cdc43326415d9cff88b7cf06c upstream.
    
    Use "a" constraint for the shift operand of the __pcilg_mio_inuser() inline
    assembly. The used "d" constraint allows the compiler to use any general
    purpose register for the shift operand, including register zero.
    
    If register zero is used this my result in incorrect code generation:
    
     8f6:   a7 0a ff f8             ahi     %r0,-8
     8fa:   eb 32 00 00 00 0c       srlg    %r3,%r2,0  <----
    
    If register zero is selected to contain the shift value, the srlg
    instruction ignores the contents of the register and always shifts zero
    bits. Therefore use the "a" constraint which does not permit to select
    register zero.
    
    Fixes: f058599e22d5 ("s390/pci: Fix s390_mmio_read/write with MIO")
    Cc: stable@vger.kernel.org
    Reported-by: Niklas Schnelle <schnelle@linux.ibm.com>
    Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
scsi: iscsi: Fix incorrect error path labels for flashnode operations [+ + +]
Author: Alok Tiwari <alok.a.tiwari@oracle.com>
Date:   Fri May 30 12:29:35 2025 -0700

    scsi: iscsi: Fix incorrect error path labels for flashnode operations
    
    [ Upstream commit 9b17621366d210ffee83262a8754086ebbde5e55 ]
    
    Correct the error handling goto labels used when host lookup fails in
    various flashnode-related event handlers:
    
     - iscsi_new_flashnode()
     - iscsi_del_flashnode()
     - iscsi_login_flashnode()
     - iscsi_logout_flashnode()
     - iscsi_logout_flashnode_sid()
    
    scsi_host_put() is not required when shost is NULL, so jumping to the
    correct label avoids unnecessary operations. These functions previously
    jumped to the wrong goto label (put_host), which did not match the
    intended cleanup logic.
    
    Use the correct exit labels (exit_new_fnode, exit_del_fnode, etc.) to
    ensure proper error handling.  Also remove the unused put_host label
    under iscsi_new_flashnode() as it is no longer needed.
    
    No functional changes beyond accurate error path correction.
    
    Fixes: c6a4bb2ef596 ("[SCSI] scsi_transport_iscsi: Add flash node mgmt support")
    Signed-off-by: Alok Tiwari <alok.a.tiwari@oracle.com>
    Link: https://lore.kernel.org/r/20250530193012.3312911-1-alok.a.tiwari@oracle.com
    Reviewed-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: lpfc: Use memcpy() for BIOS version [+ + +]
Author: Daniel Wagner <wagi@kernel.org>
Date:   Wed Apr 9 13:34:22 2025 +0200

    scsi: lpfc: Use memcpy() for BIOS version
    
    [ Upstream commit ae82eaf4aeea060bb736c3e20c0568b67c701d7d ]
    
    The strlcat() with FORTIFY support is triggering a panic because it
    thinks the target buffer will overflow although the correct target
    buffer size is passed in.
    
    Anyway, instead of memset() with 0 followed by a strlcat(), just use
    memcpy() and ensure that the resulting buffer is NULL terminated.
    
    BIOSVersion is only used for the lpfc_printf_log() which expects a
    properly terminated string.
    
    Signed-off-by: Daniel Wagner <wagi@kernel.org>
    Link: https://lore.kernel.org/r/20250409-fix-lpfc-bios-str-v1-1-05dac9e51e13@kernel.org
    Reviewed-by: Justin Tee <justin.tee@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: qedf: Use designated initializer for struct qed_fcoe_cb_ops [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Fri May 2 15:41:57 2025 -0700

    scsi: qedf: Use designated initializer for struct qed_fcoe_cb_ops
    
    commit d8720235d5b5cad86c1f07f65117ef2a96f8bec7 upstream.
    
    Recent fixes to the randstruct GCC plugin allowed it to notice
    that this structure is entirely function pointers and is therefore
    subject to randomization, but doing so requires that it always use
    designated initializers. Explicitly specify the "common" member as being
    initialized. Silences:
    
    drivers/scsi/qedf/qedf_main.c:702:9: error: positional initialization of field in 'struct' declared with 'designated_init' attribute [-Werror=designated-init]
      702 |         {
          |         ^
    
    Fixes: 035f7f87b729 ("randstruct: Enable Clang support")
    Link: https://lore.kernel.org/r/20250502224156.work.617-kees@kernel.org
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scsi: s390: zfcp: Ensure synchronous unit_add [+ + +]
Author: Peter Oberparleiter <oberpar@linux.ibm.com>
Date:   Tue Jun 3 20:21:56 2025 +0200

    scsi: s390: zfcp: Ensure synchronous unit_add
    
    commit 9697ca0d53e3db357be26d2414276143c4a2cd49 upstream.
    
    Improve the usability of the unit_add sysfs attribute by ensuring that
    the associated FCP LUN scan processing is completed synchronously.  This
    enables configuration tooling to consistently determine the end of the
    scan process to allow for serialization of follow-on actions.
    
    While the scan process associated with unit_add typically completes
    synchronously, it is deferred to an asynchronous background process if
    unit_add is used before initial remote port scanning has completed.  This
    occurs when unit_add is used immediately after setting the associated FCP
    device online.
    
    To ensure synchronous unit_add processing, wait for remote port scanning
    to complete before initiating the FCP LUN scan.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: M Nikhil <nikh1092@linux.ibm.com>
    Reviewed-by: Nihar Panda <niharp@linux.ibm.com>
    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Signed-off-by: Nihar Panda <niharp@linux.ibm.com>
    Link: https://lore.kernel.org/r/20250603182252.2287285-2-niharp@linux.ibm.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scsi: storvsc: Increase the timeouts to storvsc_timeout [+ + +]
Author: Dexuan Cui <decui@microsoft.com>
Date:   Fri Jun 6 13:57:39 2025 -0700

    scsi: storvsc: Increase the timeouts to storvsc_timeout
    
    commit b2f966568faaad326de97481096d0f3dc0971c43 upstream.
    
    Currently storvsc_timeout is only used in storvsc_sdev_configure(), and
    5s and 10s are used elsewhere. It turns out that rarely the 5s is not
    enough on Azure, so let's use storvsc_timeout everywhere.
    
    In case a timeout happens and storvsc_channel_init() returns an error,
    close the VMBus channel so that any host-to-guest messages in the
    channel's ringbuffer, which might come late, can be safely ignored.
    
    Add a "const" to storvsc_timeout.
    
    Cc: stable@kernel.org
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Link: https://lore.kernel.org/r/1749243459-10419-1-git-send-email-decui@microsoft.com
    Reviewed-by: Long Li <longli@microsoft.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
sctp: Do not wake readers in __sctp_write_space() [+ + +]
Author: Petr Malat <oss@malat.biz>
Date:   Fri May 16 10:17:28 2025 +0200

    sctp: Do not wake readers in __sctp_write_space()
    
    [ Upstream commit af295892a7abbf05a3c2ba7abc4d81bb448623d6 ]
    
    Function __sctp_write_space() doesn't set poll key, which leads to
    ep_poll_callback() waking up all waiters, not only these waiting
    for the socket being writable. Set the key properly using
    wake_up_interruptible_poll(), which is preferred over the sync
    variant, as writers are not woken up before at least half of the
    queue is available. Also, TCP does the same.
    
    Signed-off-by: Petr Malat <oss@malat.biz>
    Acked-by: Xin Long <lucien.xin@gmail.com>
    Link: https://patch.msgid.link/20250516081727.1361451-1-oss@malat.biz
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/seccomp: fix syscall_restart test for arm compat [+ + +]
Author: Neill Kapron <nkapron@google.com>
Date:   Sun Apr 27 09:40:58 2025 +0000

    selftests/seccomp: fix syscall_restart test for arm compat
    
    [ Upstream commit 797002deed03491215a352ace891749b39741b69 ]
    
    The inconsistencies in the systcall ABI between arm and arm-compat can
    can cause a failure in the syscall_restart test due to the logic
    attempting to work around the differences. The 'machine' field for an
    ARM64 device running in compat mode can report 'armv8l' or 'armv8b'
    which matches with the string 'arm' when only examining the first three
    characters of the string.
    
    This change adds additional validation to the workaround logic to make
    sure we only take the arm path when running natively, not in arm-compat.
    
    Fixes: 256d0afb11d6 ("selftests/seccomp: build and pass on arm64")
    Signed-off-by: Neill Kapron <nkapron@google.com>
    Link: https://lore.kernel.org/r/20250427094103.3488304-2-nkapron@google.com
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selinux: fix selinux_xfrm_alloc_user() to set correct ctx_len [+ + +]
Author: Stephen Smalley <stephen.smalley.work@gmail.com>
Date:   Fri Jun 13 15:37:05 2025 -0400

    selinux: fix selinux_xfrm_alloc_user() to set correct ctx_len
    
    commit 86c8db86af43f52f682e53a0f2f0828683be1e52 upstream.
    
    We should count the terminating NUL byte as part of the ctx_len.
    Otherwise, UBSAN logs a warning:
      UBSAN: array-index-out-of-bounds in security/selinux/xfrm.c:99:14
      index 60 is out of range for type 'char [*]'
    
    The allocation itself is correct so there is no actual out of bounds
    indexing, just a warning.
    
    Cc: stable@vger.kernel.org
    Suggested-by: Christian Göttsche <cgzones@googlemail.com>
    Link: https://lore.kernel.org/selinux/CAEjxPJ6tA5+LxsGfOJokzdPeRomBHjKLBVR6zbrg+_w3ZZbM3A@mail.gmail.com/
    Signed-off-by: Stephen Smalley <stephen.smalley.work@gmail.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
serial: Fix potential null-ptr-deref in mlb_usio_probe() [+ + +]
Author: Henry Martin <bsdhenrymartin@gmail.com>
Date:   Thu Apr 3 15:03:39 2025 +0800

    serial: Fix potential null-ptr-deref in mlb_usio_probe()
    
    [ Upstream commit 86bcae88c9209e334b2f8c252f4cc66beb261886 ]
    
    devm_ioremap() can return NULL on error. Currently, mlb_usio_probe()
    does not check for this case, which could result in a NULL pointer
    dereference.
    
    Add NULL check after devm_ioremap() to prevent this issue.
    
    Fixes: ba44dc043004 ("serial: Add Milbeaut serial control")
    Signed-off-by: Henry Martin <bsdhenrymartin@gmail.com>
    Link: https://lore.kernel.org/r/20250403070339.64990-1-bsdhenrymartin@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
soc: aspeed: Add NULL check in aspeed_lpc_enable_snoop() [+ + +]
Author: Henry Martin <bsdhenrymartin@gmail.com>
Date:   Thu May 15 16:00:44 2025 +0930

    soc: aspeed: Add NULL check in aspeed_lpc_enable_snoop()
    
    [ Upstream commit f1706e0e1a74b095cbc60375b9b1e6205f5f4c98 ]
    
    devm_kasprintf() returns NULL when memory allocation fails. Currently,
    aspeed_lpc_enable_snoop() does not check for this case, which results in a
    NULL pointer dereference.
    
    Add NULL check after devm_kasprintf() to prevent this issue.
    
    Fixes: 3772e5da4454 ("drivers/misc: Aspeed LPC snoop output using misc chardev")
    Signed-off-by: Henry Martin <bsdhenrymartin@gmail.com>
    Link: https://patch.msgid.link/20250401074647.21300-1-bsdhenrymartin@gmail.com
    [arj: Fix Fixes: tag to use subject from 3772e5da4454]
    Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

soc: aspeed: lpc: Fix impossible judgment condition [+ + +]
Author: Su Hui <suhui@nfschina.com>
Date:   Thu May 15 16:00:43 2025 +0930

    soc: aspeed: lpc: Fix impossible judgment condition
    
    [ Upstream commit d9f0a97e859bdcef51f9c187b1eb712eb13fd3ff ]
    
    smatch error:
    drivers/soc/aspeed/aspeed-lpc-snoop.c:169
    aspeed_lpc_snoop_config_irq() warn: platform_get_irq() does not return zero
    
    platform_get_irq() return non-zero IRQ number or negative error code,
    change '!lpc_snoop->irq' to 'lpc_snoop->irq < 0' to fix this.
    
    Fixes: 9f4f9ae81d0a ("drivers/misc: add Aspeed LPC snoop driver")
    Signed-off-by: Su Hui <suhui@nfschina.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/20231027020703.1231875-1-suhui@nfschina.com
    Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sock: Correct error checking condition for (assign|release)_proto_idx() [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Thu Apr 10 09:01:27 2025 +0800

    sock: Correct error checking condition for (assign|release)_proto_idx()
    
    [ Upstream commit faeefc173be40512341b102cf1568aa0b6571acd ]
    
    (assign|release)_proto_idx() wrongly check find_first_zero_bit() failure
    by condition '(prot->inuse_idx == PROTO_INUSE_NR - 1)' obviously.
    
    Fix by correcting the condition to '(prot->inuse_idx == PROTO_INUSE_NR)'
    
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Link: https://patch.msgid.link/20250410-fix_net-v2-1-d69e7c5739a4@quicinc.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
spi: sh-msiof: Fix maximum DMA transfer size [+ + +]
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri May 16 15:32:06 2025 +0200

    spi: sh-msiof: Fix maximum DMA transfer size
    
    [ Upstream commit 0941d5166629cb766000530945e54b4e49680c68 ]
    
    The maximum amount of data to transfer in a single DMA request is
    calculated from the FIFO sizes (which is technically not 100% correct,
    but a simplification, as it is limited by the maximum word count values
    in the Transmit and Control Data Registers).  However, in case there is
    both data to transmit and to receive, the transmit limit is overwritten
    by the receive limit.
    
    Fix this by using the minimum applicable FIFO size instead.  Move the
    calculation outside the loop, so it is not repeated for each individual
    DMA transfer.
    
    As currently tx_fifo_size is always equal to rx_fifo_size, this bug had
    no real impact.
    
    Fixes: fe78d0b7691c0274 ("spi: sh-msiof: Fix FIFO size to 64 word from 256 word")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://patch.msgid.link/d9961767a97758b2614f2ee8afe1bd56dc900a60.1747401908.git.geert+renesas@glider.be
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Squashfs: check return result of sb_min_blocksize [+ + +]
Author: Phillip Lougher <phillip@squashfs.org.uk>
Date:   Wed Apr 9 03:47:47 2025 +0100

    Squashfs: check return result of sb_min_blocksize
    
    [ Upstream commit 734aa85390ea693bb7eaf2240623d41b03705c84 ]
    
    Syzkaller reports an "UBSAN: shift-out-of-bounds in squashfs_bio_read" bug.
    
    Syzkaller forks multiple processes which after mounting the Squashfs
    filesystem, issues an ioctl("/dev/loop0", LOOP_SET_BLOCK_SIZE, 0x8000).
    Now if this ioctl occurs at the same time another process is in the
    process of mounting a Squashfs filesystem on /dev/loop0, the failure
    occurs.  When this happens the following code in squashfs_fill_super()
    fails.
    
    ----
    msblk->devblksize = sb_min_blocksize(sb, SQUASHFS_DEVBLK_SIZE);
    msblk->devblksize_log2 = ffz(~msblk->devblksize);
    ----
    
    sb_min_blocksize() returns 0, which means msblk->devblksize is set to 0.
    
    As a result, ffz(~msblk->devblksize) returns 64, and msblk->devblksize_log2
    is set to 64.
    
    This subsequently causes the
    
    UBSAN: shift-out-of-bounds in fs/squashfs/block.c:195:36
    shift exponent 64 is too large for 64-bit type 'u64' (aka
    'unsigned long long')
    
    This commit adds a check for a 0 return by sb_min_blocksize().
    
    Link: https://lkml.kernel.org/r/20250409024747.876480-1-phillip@squashfs.org.uk
    Fixes: 0aa666190509 ("Squashfs: super block operations")
    Reported-by: syzbot+65761fc25a137b9c8c6e@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/67f0dd7a.050a0220.0a13.0230.GAE@google.com/
    Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
staging: iio: ad5933: Correct settling cycles encoding per datasheet [+ + +]
Author: Gabriel Shahrouzi <gshahrouzi@gmail.com>
Date:   Sat Apr 19 21:30:09 2025 -0400

    staging: iio: ad5933: Correct settling cycles encoding per datasheet
    
    commit 60638e2a2d4bc03798f00d5ab65ce9b83cb8b03b upstream.
    
    The AD5933 datasheet (Table 13) lists the maximum cycles to be 0x7FC
    (2044).
    
    Clamp the user input to the maximum effective value of 0x7FC cycles.
    
    Fixes: f94aa354d676 ("iio: impedance-analyzer: New driver for AD5933/4 Impedance Converter, Network Analyzer")
    Cc: stable@vger.kernel.org
    Signed-off-by: Gabriel Shahrouzi <gshahrouzi@gmail.com>
    Reviewed-by: Marcelo Schmitt <marcelo.schmitt1@gmail.com>
    Link: https://patch.msgid.link/20250420013009.847851-1-gshahrouzi@gmail.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
sunrpc: update nextcheck time when adding new cache entries [+ + +]
Author: Long Li <leo.lilong@huawei.com>
Date:   Sat Mar 1 14:48:35 2025 +0800

    sunrpc: update nextcheck time when adding new cache entries
    
    [ Upstream commit 5ca00634c8bbb2979c73465588f486b9632f5ed5 ]
    
    The cache_detail structure uses a "nextcheck" field to control hash table
    scanning intervals. When a table scan begins, nextcheck is set to current
    time plus 1800 seconds. During scanning, if cache_detail is not empty and
    a cache entry's expiry time is earlier than the current nextcheck, the
    nextcheck is updated to that expiry time.
    
    This mechanism ensures that:
    1) Empty cache_details are scanned every 1800 seconds to avoid unnecessary
       scans
    2) Non-empty cache_details are scanned based on the earliest expiry time
       found
    
    However, when adding a new cache entry to an empty cache_detail, the
    nextcheck time was not being updated, remaining at 1800 seconds. This
    could delay cache cleanup for up to 1800 seconds, potentially blocking
    threads(such as nfsd) that are waiting for cache cleanup.
    
    Fix this by updating the nextcheck time whenever a new cache entry is
    added.
    
    Signed-off-by: Long Li <leo.lilong@huawei.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tcp: always seek for minimal rtt in tcp_rcv_rtt_update() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue May 13 19:39:15 2025 +0000

    tcp: always seek for minimal rtt in tcp_rcv_rtt_update()
    
    [ Upstream commit b879dcb1aeeca278eacaac0b1e2425b1c7599f9f ]
    
    tcp_rcv_rtt_update() goal is to maintain an estimation of the RTT
    in tp->rcv_rtt_est.rtt_us, used by tcp_rcv_space_adjust()
    
    When TCP TS are enabled, tcp_rcv_rtt_update() is using
    EWMA to smooth the samples.
    
    Change this to immediately latch the incoming value if it
    is lower than tp->rcv_rtt_est.rtt_us, so that tcp_rcv_space_adjust()
    does not overshoot tp->rcvq_space.space and sk->sk_rcvbuf.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250513193919.1089692-8-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tcp: fix initial tp->rcvq_space.space value for passive TS enabled flows [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue May 13 19:39:14 2025 +0000

    tcp: fix initial tp->rcvq_space.space value for passive TS enabled flows
    
    [ Upstream commit cd171461b90a2d2cf230943df60d580174633718 ]
    
    tcp_rcv_state_process() must tweak tp->advmss for TS enabled flows
    before the call to tcp_init_transfer() / tcp_init_buffer_space().
    
    Otherwise tp->rcvq_space.space is off by 120 bytes
    (TCP_INIT_CWND * TCPOLEN_TSTAMP_ALIGNED).
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Wei Wang <weiwan@google.com>
    Link: https://patch.msgid.link/20250513193919.1089692-7-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tcp: fix tcp_packet_delayed() for tcp_is_non_sack_preventing_reopen() behavior [+ + +]
Author: Neal Cardwell <ncardwell@google.com>
Date:   Fri Jun 13 15:30:56 2025 -0400

    tcp: fix tcp_packet_delayed() for tcp_is_non_sack_preventing_reopen() behavior
    
    [ Upstream commit d0fa59897e049e84432600e86df82aab3dce7aa5 ]
    
    After the following commit from 2024:
    
    commit e37ab7373696 ("tcp: fix to allow timestamp undo if no retransmits were sent")
    
    ...there was buggy behavior where TCP connections without SACK support
    could easily see erroneous undo events at the end of fast recovery or
    RTO recovery episodes. The erroneous undo events could cause those
    connections to suffer repeated loss recovery episodes and high
    retransmit rates.
    
    The problem was an interaction between the non-SACK behavior on these
    connections and the undo logic. The problem is that, for non-SACK
    connections at the end of a loss recovery episode, if snd_una ==
    high_seq, then tcp_is_non_sack_preventing_reopen() holds steady in
    CA_Recovery or CA_Loss, but clears tp->retrans_stamp to 0. Then upon
    the next ACK the "tcp: fix to allow timestamp undo if no retransmits
    were sent" logic saw the tp->retrans_stamp at 0 and erroneously
    concluded that no data was retransmitted, and erroneously performed an
    undo of the cwnd reduction, restoring cwnd immediately to the value it
    had before loss recovery.  This caused an immediate burst of traffic
    and build-up of queues and likely another immediate loss recovery
    episode.
    
    This commit fixes tcp_packet_delayed() to ignore zero retrans_stamp
    values for non-SACK connections when snd_una is at or above high_seq,
    because tcp_is_non_sack_preventing_reopen() clears retrans_stamp in
    this case, so it's not a valid signal that we can undo.
    
    Note that the commit named in the Fixes footer restored long-present
    behavior from roughly 2005-2019, so apparently this bug was present
    for a while during that era, and this was simply not caught.
    
    Fixes: e37ab7373696 ("tcp: fix to allow timestamp undo if no retransmits were sent")
    Reported-by: Eric Wheeler <netdev@lists.ewheeler.net>
    Closes: https://lore.kernel.org/netdev/64ea9333-e7f9-0df-b0f2-8d566143acab@ewheeler.net/
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Co-developed-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tee: Prevent size calculation wraparound on 32-bit kernels [+ + +]
Author: Jann Horn <jannh@google.com>
Date:   Mon Apr 28 15:06:43 2025 +0200

    tee: Prevent size calculation wraparound on 32-bit kernels
    
    [ Upstream commit 39bb67edcc582b3b386a9ec983da67fa8a10ec03 ]
    
    The current code around TEE_IOCTL_PARAM_SIZE() is a bit wrong on
    32-bit kernels: Multiplying a user-provided 32-bit value with the
    size of a structure can wrap around on such platforms.
    
    Fix it by using saturating arithmetic for the size calculation.
    
    This has no security consequences because, in all users of
    TEE_IOCTL_PARAM_SIZE(), the subsequent kcalloc() implicitly checks
    for wrapping.
    
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Tested-by: Rouven Czerwinski <rouven.czerwinski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
thunderbolt: Do not double dequeue a configuration request [+ + +]
Author: Sergey Senozhatsky <senozhatsky@chromium.org>
Date:   Fri Mar 28 00:03:50 2025 +0900

    thunderbolt: Do not double dequeue a configuration request
    
    commit 0f73628e9da1ee39daf5f188190cdbaee5e0c98c upstream.
    
    Some of our devices crash in tb_cfg_request_dequeue():
    
     general protection fault, probably for non-canonical address 0xdead000000000122
    
     CPU: 6 PID: 91007 Comm: kworker/6:2 Tainted: G U W 6.6.65
     RIP: 0010:tb_cfg_request_dequeue+0x2d/0xa0
     Call Trace:
     <TASK>
     ? tb_cfg_request_dequeue+0x2d/0xa0
     tb_cfg_request_work+0x33/0x80
     worker_thread+0x386/0x8f0
     kthread+0xed/0x110
     ret_from_fork+0x38/0x50
     ret_from_fork_asm+0x1b/0x30
    
    The circumstances are unclear, however, the theory is that
    tb_cfg_request_work() can be scheduled twice for a request:
    first time via frame.callback from ring_work() and second
    time from tb_cfg_request().  Both times kworkers will execute
    tb_cfg_request_dequeue(), which results in double list_del()
    from the ctl->request_queue (the list poison deference hints
    at it: 0xdead000000000122).
    
    Do not dequeue requests that don't have TB_CFG_REQUEST_ACTIVE
    bit set.
    
    Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tipc: fix null-ptr-deref when acquiring remote ip of ethernet bearer [+ + +]
Author: Haixia Qu <hxqu@hillstonenet.com>
Date:   Tue Jun 17 05:56:24 2025 +0000

    tipc: fix null-ptr-deref when acquiring remote ip of ethernet bearer
    
    [ Upstream commit f82727adcf2992822e12198792af450a76ebd5ef ]
    
    The reproduction steps:
    1. create a tun interface
    2. enable l2 bearer
    3. TIPC_NL_UDP_GET_REMOTEIP with media name set to tun
    
    tipc: Started in network mode
    tipc: Node identity 8af312d38a21, cluster identity 4711
    tipc: Enabled bearer <eth:syz_tun>, priority 1
    Oops: general protection fault
    KASAN: null-ptr-deref in range
    CPU: 1 UID: 1000 PID: 559 Comm: poc Not tainted 6.16.0-rc1+ #117 PREEMPT
    Hardware name: QEMU Ubuntu 24.04 PC
    RIP: 0010:tipc_udp_nl_dump_remoteip+0x4a4/0x8f0
    
    the ub was in fact a struct dev.
    
    when bid != 0 && skip_cnt != 0, bearer_list[bid] may be NULL or
    other media when other thread changes it.
    
    fix this by checking media_id.
    
    Fixes: 832629ca5c313 ("tipc: add UDP remoteip dump to netlink API")
    Signed-off-by: Haixia Qu <hxqu@hillstonenet.com>
    Reviewed-by: Tung Nguyen <tung.quang.nguyen@est.tech>
    Link: https://patch.msgid.link/20250617055624.2680-1-hxqu@hillstonenet.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tracing: Fix compilation warning on arm32 [+ + +]
Author: Pan Taixi <pantaixi@huaweicloud.com>
Date:   Mon May 26 09:37:31 2025 +0800

    tracing: Fix compilation warning on arm32
    
    commit 2fbdb6d8e03b70668c0876e635506540ae92ab05 upstream.
    
    On arm32, size_t is defined to be unsigned int, while PAGE_SIZE is
    unsigned long. This hence triggers a compilation warning as min()
    asserts the type of two operands to be equal. Casting PAGE_SIZE to size_t
    solves this issue and works on other target architectures as well.
    
    Compilation warning details:
    
    kernel/trace/trace.c: In function 'tracing_splice_read_pipe':
    ./include/linux/minmax.h:20:28: warning: comparison of distinct pointer types lacks a cast
      (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
                                ^
    ./include/linux/minmax.h:26:4: note: in expansion of macro '__typecheck'
       (__typecheck(x, y) && __no_side_effects(x, y))
        ^~~~~~~~~~~
    
    ...
    
    kernel/trace/trace.c:6771:8: note: in expansion of macro 'min'
            min((size_t)trace_seq_used(&iter->seq),
            ^~~
    
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/20250526013731.1198030-1-pantaixi@huaweicloud.com
    Fixes: f5178c41bb43 ("tracing: Fix oob write in trace_seq_to_buffer()")
    Reviewed-by: Jeongjun Park <aha310510@gmail.com>
    Signed-off-by: Pan Taixi <pantaixi@huaweicloud.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
uio_hv_generic: Use correct size for interrupt and monitor pages [+ + +]
Author: Long Li <longli@microsoft.com>
Date:   Mon May 5 17:56:34 2025 -0700

    uio_hv_generic: Use correct size for interrupt and monitor pages
    
    commit c951ab8fd3589cf6991ed4111d2130816f2e3ac2 upstream.
    
    Interrupt and monitor pages should be in Hyper-V page size (4k bytes).
    This can be different from the system page size.
    
    This size is read and used by the user-mode program to determine the
    mapped data region. An example of such user-mode program is the VMBus
    driver in DPDK.
    
    Cc: stable@vger.kernel.org
    Fixes: 95096f2fbd10 ("uio-hv-generic: new userspace i/o driver for VMBus")
    Signed-off-by: Long Li <longli@microsoft.com>
    Reviewed-by: Michael Kelley <mhklinux@outlook.com>
    Link: https://lore.kernel.org/r/1746492997-4599-3-git-send-email-longli@linuxonhyperv.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Message-ID: <1746492997-4599-3-git-send-email-longli@linuxonhyperv.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
usb: Flush altsetting 0 endpoints before reinitializating them after reset. [+ + +]
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Wed May 14 16:25:20 2025 +0300

    usb: Flush altsetting 0 endpoints before reinitializating them after reset.
    
    commit 89bb3dc13ac29a563f4e4c555e422882f64742bd upstream.
    
    usb core avoids sending a Set-Interface altsetting 0 request after device
    reset, and instead relies on calling usb_disable_interface() and
    usb_enable_interface() to flush and reset host-side of those endpoints.
    
    xHCI hosts allocate and set up endpoint ring buffers and host_ep->hcpriv
    during usb_hcd_alloc_bandwidth() callback, which in this case is called
    before flushing the endpoint in usb_disable_interface().
    
    Call usb_disable_interface() before usb_hcd_alloc_bandwidth() to ensure
    URBs are flushed before new ring buffers for the endpoints are allocated.
    
    Otherwise host driver will attempt to find and remove old stale URBs
    from a freshly allocated new ringbuffer.
    
    Cc: stable <stable@kernel.org>
    Fixes: 4fe0387afa89 ("USB: don't send Set-Interface after reset")
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20250514132520.225345-1-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: quirks: Add NO_LPM quirk for SanDisk Extreme 55AE [+ + +]
Author: Jiayi Li <lijiayi@kylinos.cn>
Date:   Thu May 8 13:59:47 2025 +0800

    usb: quirks: Add NO_LPM quirk for SanDisk Extreme 55AE
    
    commit 19f795591947596b5b9efa86fd4b9058e45786e9 upstream.
    
    This device exhibits I/O errors during file transfers due to unstable
    link power management (LPM) behavior. The kernel logs show repeated
    warm resets and eventual disconnection when LPM is enabled:
    
    [ 3467.810740] hub 2-0:1.0: state 7 ports 6 chg 0000 evt 0020
    [ 3467.810740] usb usb2-port5: do warm reset
    [ 3467.866444] usb usb2-port5: not warm reset yet, waiting 50ms
    [ 3467.907407] sd 0:0:0:0: [sda] tag#12 sense submit err -19
    [ 3467.994423] usb usb2-port5: status 02c0, change 0001, 10.0 Gb/s
    [ 3467.994453] usb 2-5: USB disconnect, device number 4
    
    The error -19 (ENODEV) occurs when the device disappears during write
    operations. Adding USB_QUIRK_NO_LPM disables link power management
    for this specific device, resolving the stability issues.
    
    Signed-off-by: Jiayi Li <lijiayi@kylinos.cn>
    Cc: stable <stable@kernel.org>
    Link: https://lore.kernel.org/r/20250508055947.764538-1-lijiayi@kylinos.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: renesas_usbhs: Reorder clock handling and power management in probe [+ + +]
Author: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Date:   Mon Apr 7 11:50:02 2025 +0100

    usb: renesas_usbhs: Reorder clock handling and power management in probe
    
    [ Upstream commit ffb34a60ce86656ba12d46e91f1ccc71dd221251 ]
    
    Reorder the initialization sequence in `usbhs_probe()` to enable runtime
    PM before accessing registers, preventing potential crashes due to
    uninitialized clocks.
    
    Currently, in the probe path, registers are accessed before enabling the
    clocks, leading to a synchronous external abort on the RZ/V2H SoC.
    The problematic call flow is as follows:
    
        usbhs_probe()
            usbhs_sys_clock_ctrl()
                usbhs_bset()
                    usbhs_write()
                        iowrite16()  <-- Register access before enabling clocks
    
    Since `iowrite16()` is performed without ensuring the required clocks are
    enabled, this can lead to access errors. To fix this, enable PM runtime
    early in the probe function and ensure clocks are acquired before register
    access, preventing crashes like the following on RZ/V2H:
    
    [13.272640] Internal error: synchronous external abort: 0000000096000010 [#1] PREEMPT SMP
    [13.280814] Modules linked in: cec renesas_usbhs(+) drm_kms_helper fuse drm backlight ipv6
    [13.289088] CPU: 1 UID: 0 PID: 195 Comm: (udev-worker) Not tainted 6.14.0-rc7+ #98
    [13.296640] Hardware name: Renesas RZ/V2H EVK Board based on r9a09g057h44 (DT)
    [13.303834] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [13.310770] pc : usbhs_bset+0x14/0x4c [renesas_usbhs]
    [13.315831] lr : usbhs_probe+0x2e4/0x5ac [renesas_usbhs]
    [13.321138] sp : ffff8000827e3850
    [13.324438] x29: ffff8000827e3860 x28: 0000000000000000 x27: ffff8000827e3ca0
    [13.331554] x26: ffff8000827e3ba0 x25: ffff800081729668 x24: 0000000000000025
    [13.338670] x23: ffff0000c0f08000 x22: 0000000000000000 x21: ffff0000c0f08010
    [13.345783] x20: 0000000000000000 x19: ffff0000c3b52080 x18: 00000000ffffffff
    [13.352895] x17: 0000000000000000 x16: 0000000000000000 x15: ffff8000827e36ce
    [13.360009] x14: 00000000000003d7 x13: 00000000000003d7 x12: 0000000000000000
    [13.367122] x11: 0000000000000000 x10: 0000000000000aa0 x9 : ffff8000827e3750
    [13.374235] x8 : ffff0000c1850b00 x7 : 0000000003826060 x6 : 000000000000001c
    [13.381347] x5 : 000000030d5fcc00 x4 : ffff8000825c0000 x3 : 0000000000000000
    [13.388459] x2 : 0000000000000400 x1 : 0000000000000000 x0 : ffff0000c3b52080
    [13.395574] Call trace:
    [13.398013]  usbhs_bset+0x14/0x4c [renesas_usbhs] (P)
    [13.403076]  platform_probe+0x68/0xdc
    [13.406738]  really_probe+0xbc/0x2c0
    [13.410306]  __driver_probe_device+0x78/0x120
    [13.414653]  driver_probe_device+0x3c/0x154
    [13.418825]  __driver_attach+0x90/0x1a0
    [13.422647]  bus_for_each_dev+0x7c/0xe0
    [13.426470]  driver_attach+0x24/0x30
    [13.430032]  bus_add_driver+0xe4/0x208
    [13.433766]  driver_register+0x68/0x130
    [13.437587]  __platform_driver_register+0x24/0x30
    [13.442273]  renesas_usbhs_driver_init+0x20/0x1000 [renesas_usbhs]
    [13.448450]  do_one_initcall+0x60/0x1d4
    [13.452276]  do_init_module+0x54/0x1f8
    [13.456014]  load_module+0x1754/0x1c98
    [13.459750]  init_module_from_file+0x88/0xcc
    [13.464004]  __arm64_sys_finit_module+0x1c4/0x328
    [13.468689]  invoke_syscall+0x48/0x104
    [13.472426]  el0_svc_common.constprop.0+0xc0/0xe0
    [13.477113]  do_el0_svc+0x1c/0x28
    [13.480415]  el0_svc+0x30/0xcc
    [13.483460]  el0t_64_sync_handler+0x10c/0x138
    [13.487800]  el0t_64_sync+0x198/0x19c
    [13.491453] Code: 2a0103e1 12003c42 12003c63 8b010084 (79400084)
    [13.497522] ---[ end trace 0000000000000000 ]---
    
    Fixes: f1407d5c66240 ("usb: renesas_usbhs: Add Renesas USBHS common code")
    Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Link: https://lore.kernel.org/r/20250407105002.107181-4-prabhakar.mahadev-lad.rj@bp.renesas.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: storage: Ignore UAS driver for SanDisk 3.2 Gen2 storage device [+ + +]
Author: Hongyu Xie <xiehongyu1@kylinos.cn>
Date:   Mon May 19 10:33:28 2025 +0800

    usb: storage: Ignore UAS driver for SanDisk 3.2 Gen2 storage device
    
    commit a541acceedf4f639f928f41fbb676b75946dc295 upstream.
    
    SanDisk 3.2 Gen2 storage device(0781:55e8) doesn't work well with UAS.
    Log says,
    [    6.507865][ 3] [  T159] usb 2-1.4: new SuperSpeed Gen 1 USB device number 4 using xhci_hcd
    [    6.540314][ 3] [  T159] usb 2-1.4: New USB device found, idVendor=0781, idProduct=55e8, bcdDevice= 0.01
    [    6.576304][ 3] [  T159] usb 2-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [    6.584727][ 3] [  T159] usb 2-1.4: Product: SanDisk 3.2 Gen2
    [    6.590459][ 3] [  T159] usb 2-1.4: Manufacturer: SanDisk
    [    6.595845][ 3] [  T159] usb 2-1.4: SerialNumber: 03021707022525140940
    [    7.230852][ 0] [  T265] usbcore: registered new interface driver usb-storage
    [    7.251247][ 0] [  T265] scsi host3: uas
    [    7.255280][ 0] [  T265] usbcore: registered new interface driver uas
    [    7.270498][ 1] [  T192] scsi 3:0:0:0: Direct-Access     SanDisk  Extreme Pro DDE1 0110 PQ: 0 ANSI: 6
    [    7.299588][ 3] [  T192] scsi 3:0:0:1: Enclosure         SanDisk  SES Device       0110 PQ: 0 ANSI: 6
    [    7.321681][ 3] [  T192] sd 3:0:0:0: Attached scsi generic sg1 type 0
    [    7.328185][ 3] [  T192] scsi 3:0:0:1: Attached scsi generic sg2 type 13
    [    7.328804][ 0] [  T191] sd 3:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/466 GiB)
    [    7.343486][ 0] [  T191] sd 3:0:0:0: [sda] 4096-byte physical blocks
    [    7.364611][ 0] [  T191] sd 3:0:0:0: [sda] Write Protect is off
    [    7.370524][ 0] [  T191] sd 3:0:0:0: [sda] Mode Sense: 3d 00 10 00
    [    7.390655][ 0] [  T191] sd 3:0:0:0: [sda] Write cache: enabled, read cache: enabled, supports DPO and FUA
    [    7.401363][ 0] [  T191] sd 3:0:0:0: [sda] Optimal transfer size 1048576 bytes
    [    7.436010][ 0] [  T191]  sda: sda1
    [    7.450850][ 0] [  T191] sd 3:0:0:0: [sda] Attached SCSI disk
    [    7.470218][ 4] [  T262] scsi 3:0:0:1: Failed to get diagnostic page 0x1
    [    7.474869][ 0] [    C0] sd 3:0:0:0: [sda] tag#0 data cmplt err -75 uas-tag 2 inflight: CMD
    [    7.476911][ 4] [  T262] scsi 3:0:0:1: Failed to bind enclosure -19
    [    7.485330][ 0] [    C0] sd 3:0:0:0: [sda] tag#0 CDB: Read(10) 28 00 00 00 00 28 00 00 10 00
    [    7.491593][ 4] [  T262] ses 3:0:0:1: Attached Enclosure device
    [   38.066980][ 4] [  T192] sd 3:0:0:0: [sda] tag#4 uas_eh_abort_handler 0 uas-tag 5 inflight: CMD IN
    [   38.076012][ 4] [  T192] sd 3:0:0:0: [sda] tag#4 CDB: Read(10) 28 00 00 00 01 08 00 00 f8 00
    [   38.086485][ 4] [  T192] sd 3:0:0:0: [sda] tag#3 uas_eh_abort_handler 0 uas-tag 1 inflight: CMD IN
    [   38.095515][ 4] [  T192] sd 3:0:0:0: [sda] tag#3 CDB: Read(10) 28 00 00 00 00 10 00 00 08 00
    [   38.104122][ 4] [  T192] sd 3:0:0:0: [sda] tag#2 uas_eh_abort_handler 0 uas-tag 4 inflight: CMD IN
    [   38.113152][ 4] [  T192] sd 3:0:0:0: [sda] tag#2 CDB: Read(10) 28 00 00 00 00 88 00 00 78 00
    [   38.121761][ 4] [  T192] sd 3:0:0:0: [sda] tag#1 uas_eh_abort_handler 0 uas-tag 3 inflight: CMD IN
    [   38.130791][ 4] [  T192] sd 3:0:0:0: [sda] tag#1 CDB: Read(10) 28 00 00 00 00 48 00 00 30 00
    [   38.139401][ 4] [  T192] sd 3:0:0:0: [sda] tag#0 uas_eh_abort_handler 0 uas-tag 2 inflight: CMD
    [   38.148170][ 4] [  T192] sd 3:0:0:0: [sda] tag#0 CDB: Read(10) 28 00 00 00 00 28 00 00 10 00
    [   38.178980][ 2] [  T304] scsi host3: uas_eh_device_reset_handler start
    [   38.901540][ 2] [  T304] usb 2-1.4: reset SuperSpeed Gen 1 USB device number 4 using xhci_hcd
    [   38.936791][ 2] [  T304] scsi host3: uas_eh_device_reset_handler success
    
    Device decriptor is below,
    Bus 002 Device 006: ID 0781:55e8 SanDisk Corp. SanDisk 3.2 Gen2
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               3.20
      bDeviceClass            0
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0         9
      idVendor           0x0781 SanDisk Corp.
      idProduct          0x55e8
      bcdDevice            0.01
      iManufacturer           1 SanDisk
      iProduct                2 SanDisk 3.2 Gen2
      iSerial                 3 03021707022525140940
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength       0x0079
        bNumInterfaces          1
        bConfigurationValue     1
        iConfiguration          0
        bmAttributes         0x80
          (Bus Powered)
        MaxPower              896mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass         8 Mass Storage
          bInterfaceSubClass      6 SCSI
          bInterfaceProtocol     80 Bulk-Only
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst              15
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst              15
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       1
          bNumEndpoints           4
          bInterfaceClass         8 Mass Storage
          bInterfaceSubClass      6 SCSI
          bInterfaceProtocol     98
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
            Command pipe (0x01)
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x84  EP 4 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst              15
            MaxStreams             32
            Status pipe (0x02)
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst              15
            MaxStreams             32
            Data-in pipe (0x03)
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x03  EP 3 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst              15
            MaxStreams             32
            Data-out pipe (0x04)
    Binary Object Store Descriptor:
      bLength                 5
      bDescriptorType        15
      wTotalLength       0x002a
      bNumDeviceCaps          3
      USB 2.0 Extension Device Capability:
        bLength                 7
        bDescriptorType        16
        bDevCapabilityType      2
        bmAttributes   0x0000f41e
          BESL Link Power Management (LPM) Supported
        BESL value     1024 us
        Deep BESL value    61440 us
      SuperSpeed USB Device Capability:
        bLength                10
        bDescriptorType        16
        bDevCapabilityType      3
        bmAttributes         0x00
        wSpeedsSupported   0x000e
          Device can operate at Full Speed (12Mbps)
          Device can operate at High Speed (480Mbps)
          Device can operate at SuperSpeed (5Gbps)
        bFunctionalitySupport   1
          Lowest fully-functional device speed is Full Speed (12Mbps)
        bU1DevExitLat          10 micro seconds
        bU2DevExitLat        2047 micro seconds
      SuperSpeedPlus USB Device Capability:
        bLength                20
        bDescriptorType        16
        bDevCapabilityType     10
        bmAttributes         0x00000001
          Sublink Speed Attribute count 1
          Sublink Speed ID count 0
        wFunctionalitySupport   0x1100
        bmSublinkSpeedAttr[0]   0x000a4030
          Speed Attribute ID: 0 10Gb/s Symmetric RX SuperSpeedPlus
        bmSublinkSpeedAttr[1]   0x000a40b0
          Speed Attribute ID: 0 10Gb/s Symmetric TX SuperSpeedPlus
    Device Status:     0x0000
      (Bus Powered)
    
    So ignore UAS driver for this device.
    
    Signed-off-by: Hongyu Xie <xiehongyu1@kylinos.cn>
    Cc: stable <stable@kernel.org>
    Link: https://lore.kernel.org/r/20250519023328.1498856-1-xiehongyu1@kylinos.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: usbtmc: Fix timeout value in get_stb [+ + +]
Author: Dave Penkler <dpenkler@gmail.com>
Date:   Wed May 21 14:16:56 2025 +0200

    usb: usbtmc: Fix timeout value in get_stb
    
    commit 342e4955a1f1ce28c70a589999b76365082dbf10 upstream.
    
    wait_event_interruptible_timeout requires a timeout argument
    in units of jiffies. It was being called in usbtmc_get_stb
    with the usb timeout value which is in units of milliseconds.
    
    Pass the timeout argument converted to jiffies.
    
    Fixes: 048c6d88a021 ("usb: usbtmc: Add ioctls to set/get usb timeout")
    Cc: stable@vger.kernel.org
    Signed-off-by: Dave Penkler <dpenkler@gmail.com>
    Link: https://lore.kernel.org/r/20250521121656.18174-4-dpenkler@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
vgacon: Add check for vc_origin address range in vgacon_scroll() [+ + +]
Author: GONG Ruiqi <gongruiqi1@huawei.com>
Date:   Sun Apr 27 10:53:03 2025 +0800

    vgacon: Add check for vc_origin address range in vgacon_scroll()
    
    commit 864f9963ec6b4b76d104d595ba28110b87158003 upstream.
    
    Our in-house Syzkaller reported the following BUG (twice), which we
    believed was the same issue with [1]:
    
    ==================================================================
    BUG: KASAN: slab-out-of-bounds in vcs_scr_readw+0xc2/0xd0 drivers/tty/vt/vt.c:4740
    Read of size 2 at addr ffff88800f5bef60 by task syz.7.2620/12393
    ...
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0x72/0xa0 lib/dump_stack.c:106
     print_address_description.constprop.0+0x6b/0x3d0 mm/kasan/report.c:364
     print_report+0xba/0x280 mm/kasan/report.c:475
     kasan_report+0xa9/0xe0 mm/kasan/report.c:588
     vcs_scr_readw+0xc2/0xd0 drivers/tty/vt/vt.c:4740
     vcs_write_buf_noattr drivers/tty/vt/vc_screen.c:493 [inline]
     vcs_write+0x586/0x840 drivers/tty/vt/vc_screen.c:690
     vfs_write+0x219/0x960 fs/read_write.c:584
     ksys_write+0x12e/0x260 fs/read_write.c:639
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x59/0x110 arch/x86/entry/common.c:81
     entry_SYSCALL_64_after_hwframe+0x78/0xe2
     ...
     </TASK>
    
    Allocated by task 5614:
     kasan_save_stack+0x20/0x40 mm/kasan/common.c:45
     kasan_set_track+0x25/0x30 mm/kasan/common.c:52
     ____kasan_kmalloc mm/kasan/common.c:374 [inline]
     __kasan_kmalloc+0x8f/0xa0 mm/kasan/common.c:383
     kasan_kmalloc include/linux/kasan.h:201 [inline]
     __do_kmalloc_node mm/slab_common.c:1007 [inline]
     __kmalloc+0x62/0x140 mm/slab_common.c:1020
     kmalloc include/linux/slab.h:604 [inline]
     kzalloc include/linux/slab.h:721 [inline]
     vc_do_resize+0x235/0xf40 drivers/tty/vt/vt.c:1193
     vgacon_adjust_height+0x2d4/0x350 drivers/video/console/vgacon.c:1007
     vgacon_font_set+0x1f7/0x240 drivers/video/console/vgacon.c:1031
     con_font_set drivers/tty/vt/vt.c:4628 [inline]
     con_font_op+0x4da/0xa20 drivers/tty/vt/vt.c:4675
     vt_k_ioctl+0xa10/0xb30 drivers/tty/vt/vt_ioctl.c:474
     vt_ioctl+0x14c/0x1870 drivers/tty/vt/vt_ioctl.c:752
     tty_ioctl+0x655/0x1510 drivers/tty/tty_io.c:2779
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:871 [inline]
     __se_sys_ioctl+0x12d/0x190 fs/ioctl.c:857
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x59/0x110 arch/x86/entry/common.c:81
     entry_SYSCALL_64_after_hwframe+0x78/0xe2
    
    Last potentially related work creation:
     kasan_save_stack+0x20/0x40 mm/kasan/common.c:45
     __kasan_record_aux_stack+0x94/0xa0 mm/kasan/generic.c:492
     __call_rcu_common.constprop.0+0xc3/0xa10 kernel/rcu/tree.c:2713
     netlink_release+0x620/0xc20 net/netlink/af_netlink.c:802
     __sock_release+0xb5/0x270 net/socket.c:663
     sock_close+0x1e/0x30 net/socket.c:1425
     __fput+0x408/0xab0 fs/file_table.c:384
     __fput_sync+0x4c/0x60 fs/file_table.c:465
     __do_sys_close fs/open.c:1580 [inline]
     __se_sys_close+0x68/0xd0 fs/open.c:1565
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x59/0x110 arch/x86/entry/common.c:81
     entry_SYSCALL_64_after_hwframe+0x78/0xe2
    
    Second to last potentially related work creation:
     kasan_save_stack+0x20/0x40 mm/kasan/common.c:45
     __kasan_record_aux_stack+0x94/0xa0 mm/kasan/generic.c:492
     __call_rcu_common.constprop.0+0xc3/0xa10 kernel/rcu/tree.c:2713
     netlink_release+0x620/0xc20 net/netlink/af_netlink.c:802
     __sock_release+0xb5/0x270 net/socket.c:663
     sock_close+0x1e/0x30 net/socket.c:1425
     __fput+0x408/0xab0 fs/file_table.c:384
     task_work_run+0x154/0x240 kernel/task_work.c:239
     exit_task_work include/linux/task_work.h:45 [inline]
     do_exit+0x8e5/0x1320 kernel/exit.c:874
     do_group_exit+0xcd/0x280 kernel/exit.c:1023
     get_signal+0x1675/0x1850 kernel/signal.c:2905
     arch_do_signal_or_restart+0x80/0x3b0 arch/x86/kernel/signal.c:310
     exit_to_user_mode_loop kernel/entry/common.c:111 [inline]
     exit_to_user_mode_prepare include/linux/entry-common.h:328 [inline]
     __syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline]
     syscall_exit_to_user_mode+0x1b3/0x1e0 kernel/entry/common.c:218
     do_syscall_64+0x66/0x110 arch/x86/entry/common.c:87
     entry_SYSCALL_64_after_hwframe+0x78/0xe2
    
    The buggy address belongs to the object at ffff88800f5be000
     which belongs to the cache kmalloc-2k of size 2048
    The buggy address is located 2656 bytes to the right of
     allocated 1280-byte region [ffff88800f5be000, ffff88800f5be500)
    
    ...
    
    Memory state around the buggy address:
     ffff88800f5bee00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff88800f5bee80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    >ffff88800f5bef00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                                                           ^
     ffff88800f5bef80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff88800f5bf000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    ==================================================================
    
    By analyzing the vmcore, we found that vc->vc_origin was somehow placed
    one line prior to vc->vc_screenbuf when vc was in KD_TEXT mode, and
    further writings to /dev/vcs caused out-of-bounds reads (and writes
    right after) in vcs_write_buf_noattr().
    
    Our further experiments show that in most cases, vc->vc_origin equals to
    vga_vram_base when the console is in KD_TEXT mode, and it's around
    vc->vc_screenbuf for the KD_GRAPHICS mode. But via triggerring a
    TIOCL_SETVESABLANK ioctl beforehand, we can make vc->vc_origin be around
    vc->vc_screenbuf while the console is in KD_TEXT mode, and then by
    writing the special 'ESC M' control sequence to the tty certain times
    (depends on the value of `vc->state.y - vc->vc_top`), we can eventually
    move vc->vc_origin prior to vc->vc_screenbuf. Here's the PoC, tested on
    QEMU:
    
    ```
    int main() {
            const int RI_NUM = 10; // should be greater than `vc->state.y - vc->vc_top`
            int tty_fd, vcs_fd;
            const char *tty_path = "/dev/tty0";
            const char *vcs_path = "/dev/vcs";
            const char escape_seq[] = "\x1bM";  // ESC + M
            const char trigger_seq[] = "Let's trigger an OOB write.";
            struct vt_sizes vt_size = { 70, 2 };
            int blank = TIOCL_BLANKSCREEN;
    
            tty_fd = open(tty_path, O_RDWR);
    
            char vesa_mode[] = { TIOCL_SETVESABLANK, 1 };
            ioctl(tty_fd, TIOCLINUX, vesa_mode);
    
            ioctl(tty_fd, TIOCLINUX, &blank);
            ioctl(tty_fd, VT_RESIZE, &vt_size);
    
            for (int i = 0; i < RI_NUM; ++i)
                    write(tty_fd, escape_seq, sizeof(escape_seq) - 1);
    
            vcs_fd = open(vcs_path, O_RDWR);
            write(vcs_fd, trigger_seq, sizeof(trigger_seq));
    
            close(vcs_fd);
            close(tty_fd);
            return 0;
    }
    ```
    
    To solve this problem, add an address range validation check in
    vgacon_scroll(), ensuring vc->vc_origin never precedes vc_screenbuf.
    
    Reported-by: syzbot+9c09fda97a1a65ea859b@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=9c09fda97a1a65ea859b [1]
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable@vger.kernel.org
    Co-developed-by: Yi Yang <yiyang13@huawei.com>
    Signed-off-by: Yi Yang <yiyang13@huawei.com>
    Signed-off-by: GONG Ruiqi <gongruiqi1@huawei.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
vt: remove VT_RESIZE and VT_RESIZEX from vt_compat_ioctl() [+ + +]
Author: Nicolas Pitre <npitre@baylibre.com>
Date:   Thu May 15 11:30:52 2025 -0400

    vt: remove VT_RESIZE and VT_RESIZEX from vt_compat_ioctl()
    
    [ Upstream commit c4c7ead7b86c1e7f11c64915b7e5bb6d2e242691 ]
    
    They are listed amon those cmd values that "treat 'arg' as an integer"
    which is wrong. They should instead fall into the default case. Probably
    nobody ever relied on that code since 2009 but still.
    
    Fixes: e92166517e3c ("tty: handle VT specific compat ioctls in vt driver")
    Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
    Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/pr214s15-36r8-6732-2pop-159nq85o48r7@syhkavp.arg
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
vxlan: Do not treat dst cache initialization errors as fatal [+ + +]
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Tue Apr 15 15:11:41 2025 +0300

    vxlan: Do not treat dst cache initialization errors as fatal
    
    [ Upstream commit 20c76dadc783759fd3819d289c72be590660cc8b ]
    
    FDB entries are allocated in an atomic context as they can be added from
    the data path when learning is enabled.
    
    After converting the FDB hash table to rhashtable, the insertion rate
    will be much higher (*) which will entail a much higher rate of per-CPU
    allocations via dst_cache_init().
    
    When adding a large number of entries (e.g., 256k) in a batch, a small
    percentage (< 0.02%) of these per-CPU allocations will fail [1]. This
    does not happen with the current code since the insertion rate is low
    enough to give the per-CPU allocator a chance to asynchronously create
    new chunks of per-CPU memory.
    
    Given that:
    
    a. Only a small percentage of these per-CPU allocations fail.
    
    b. The scenario where this happens might not be the most realistic one.
    
    c. The driver can work correctly without dst caches. The dst_cache_*()
    APIs first check that the dst cache was properly initialized.
    
    d. The dst caches are not always used (e.g., 'tos inherit').
    
    It seems reasonable to not treat these allocation failures as fatal.
    
    Therefore, do not bail when dst_cache_init() fails and suppress warnings
    by specifying '__GFP_NOWARN'.
    
    [1] percpu: allocation failed, size=40 align=8 atomic=1, atomic alloc failed, no space left
    
    (*) 97% reduction in average latency of vxlan_fdb_update() when adding
    256k entries in a batch.
    
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Link: https://patch.msgid.link/20250415121143.345227-14-idosch@nvidia.com
    Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
watchdog: da9052_wdt: respect TWDMIN [+ + +]
Author: Marcus Folkesson <marcus.folkesson@gmail.com>
Date:   Wed Mar 26 09:29:51 2025 +0100

    watchdog: da9052_wdt: respect TWDMIN
    
    [ Upstream commit 325f510fcd9cda5a44bcb662b74ba4e3dabaca10 ]
    
    We have to wait at least the minimium time for the watchdog window
    (TWDMIN) before writings to the wdt register after the
    watchdog is activated.
    Otherwise the chip will assert TWD_ERROR and power down to reset mode.
    
    Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20250326-da9052-fixes-v3-4-a38a560fef0e@gmail.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
wifi: ath9k_htc: Abort software beacon handling if disabled [+ + +]
Author: Toke Høiland-Jørgensen <toke@toke.dk>
Date:   Wed Apr 2 13:22:16 2025 +0200

    wifi: ath9k_htc: Abort software beacon handling if disabled
    
    [ Upstream commit ac4e317a95a1092b5da5b9918b7118759342641c ]
    
    A malicious USB device can send a WMI_SWBA_EVENTID event from an
    ath9k_htc-managed device before beaconing has been enabled. This causes
    a device-by-zero error in the driver, leading to either a crash or an
    out of bounds read.
    
    Prevent this by aborting the handling in ath9k_htc_swba() if beacons are
    not enabled.
    
    Reported-by: Robert Morris <rtm@csail.mit.edu>
    Closes: https://lore.kernel.org/r/88967.1743099372@localhost
    Fixes: 832f6a18fc2a ("ath9k_htc: Add beacon slots")
    Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
    Link: https://patch.msgid.link/20250402112217.58533-1-toke@toke.dk
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: carl9170: do not ping device which has failed to load firmware [+ + +]
Author: Dmitry Antipov <dmantipov@yandex.ru>
Date:   Mon Jun 16 21:12:05 2025 +0300

    wifi: carl9170: do not ping device which has failed to load firmware
    
    [ Upstream commit 15d25307692312cec4b57052da73387f91a2e870 ]
    
    Syzkaller reports [1, 2] crashes caused by an attempts to ping
    the device which has failed to load firmware. Since such a device
    doesn't pass 'ieee80211_register_hw()', an internal workqueue
    managed by 'ieee80211_queue_work()' is not yet created and an
    attempt to queue work on it causes null-ptr-deref.
    
    [1] https://syzkaller.appspot.com/bug?extid=9a4aec827829942045ff
    [2] https://syzkaller.appspot.com/bug?extid=0d8afba53e8fb2633217
    
    Fixes: e4a668c59080 ("carl9170: fix spurious restart due to high latency")
    Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
    Acked-by: Christian Lamparter <chunkeey@gmail.com>
    Link: https://patch.msgid.link/20250616181205.38883-1-dmantipov@yandex.ru
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: do not offer a mesh path if forwarding is disabled [+ + +]
Author: Benjamin Berg <benjamin@sipsolutions.net>
Date:   Wed Apr 30 21:10:42 2025 +0200

    wifi: mac80211: do not offer a mesh path if forwarding is disabled
    
    [ Upstream commit cf1b684a06170d253b47d6a5287821de976435bd ]
    
    When processing a PREQ the code would always check whether we have a
    mesh path locally and reply accordingly. However, when forwarding is
    disabled then we should not reply with this information as we will not
    forward data packets down that path.
    
    Move the check for dot11MeshForwarding up in the function and skip the
    mesh path lookup in that case. In the else block, set forward to false
    so that the rest of the function becomes a no-op and the
    dot11MeshForwarding check does not need to be duplicated.
    
    This explains an effect observed in the Freifunk community where mesh
    forwarding is disabled. In that case a mesh with three STAs and only bad
    links in between them, individual STAs would occionally have indirect
    mpath entries. This should not have happened.
    
    Signed-off-by: Benjamin Berg <benjamin@sipsolutions.net>
    Reviewed-by: Rouven Czerwinski <rouven@czerwinskis.de>
    Link: https://patch.msgid.link/20250430191042.3287004-1-benjamin@sipsolutions.net
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: p54: prevent buffer-overflow in p54_rx_eeprom_readback() [+ + +]
Author: Christian Lamparter <chunkeey@gmail.com>
Date:   Fri May 16 20:41:06 2025 +0200

    wifi: p54: prevent buffer-overflow in p54_rx_eeprom_readback()
    
    commit da1b9a55ff116cb040528ef664c70a4eec03ae99 upstream.
    
    Robert Morris reported:
    
    |If a malicious USB device pretends to be an Intersil p54 wifi
    |interface and generates an eeprom_readback message with a large
    |eeprom->v1.len, p54_rx_eeprom_readback() will copy data from the
    |message beyond the end of priv->eeprom.
    |
    |static void p54_rx_eeprom_readback(struct p54_common *priv,
    |                                   struct sk_buff *skb)
    |{
    |        struct p54_hdr *hdr = (struct p54_hdr *) skb->data;
    |        struct p54_eeprom_lm86 *eeprom = (struct p54_eeprom_lm86 *) hdr->data;
    |
    |        if (priv->fw_var >= 0x509) {
    |                memcpy(priv->eeprom, eeprom->v2.data,
    |                       le16_to_cpu(eeprom->v2.len));
    |        } else {
    |                memcpy(priv->eeprom, eeprom->v1.data,
    |                       le16_to_cpu(eeprom->v1.len));
    |        }
    | [...]
    
    The eeprom->v{1,2}.len is set by the driver in p54_download_eeprom().
    The device is supposed to provide the same length back to the driver.
    But yes, it's possible (like shown in the report) to alter the value
    to something that causes a crash/panic due to overrun.
    
    This patch addresses the issue by adding the size to the common device
    context, so p54_rx_eeprom_readback no longer relies on possibly tampered
    values... That said, it also checks if the "firmware" altered the value
    and no longer copies them.
    
    The one, small saving grace is: Before the driver tries to read the eeprom,
    it needs to upload >a< firmware. the vendor firmware has a proprietary
    license and as a reason, it is not present on most distributions by
    default.
    
    Cc: <stable@kernel.org>
    Reported-by: Robert Morris <rtm@mit.edu>
    Closes: https://lore.kernel.org/linux-wireless/28782.1747258414@localhost/
    Fixes: 7cb770729ba8 ("p54: move eeprom code into common library")
    Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
    Link: https://patch.msgid.link/20250516184107.47794-1-chunkeey@gmail.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: rtlwifi: disable ASPM for RTL8723BE with subsystem ID 11ad:1723 [+ + +]
Author: Mingcong Bai <jeffbai@aosc.io>
Date:   Tue Apr 22 14:17:54 2025 +0800

    wifi: rtlwifi: disable ASPM for RTL8723BE with subsystem ID 11ad:1723
    
    commit 77a6407c6ab240527166fb19ee96e95f5be4d3cd upstream.
    
    RTL8723BE found on some ASUSTek laptops, such as F441U and X555UQ with
    subsystem ID 11ad:1723 are known to output large amounts of PCIe AER
    errors during and after boot up, causing heavy lags and at times lock-ups:
    
      pcieport 0000:00:1c.5: AER: Correctable error message received from 0000:00:1c.5
      pcieport 0000:00:1c.5: PCIe Bus Error: severity=Correctable, type=Physical Layer, (Receiver ID)
      pcieport 0000:00:1c.5:   device [8086:9d15] error status/mask=00000001/00002000
      pcieport 0000:00:1c.5:    [ 0] RxErr
    
    Disable ASPM on this combo as a quirk.
    
    This patch is a revision of a previous patch (linked below) which
    attempted to disable ASPM for RTL8723BE on all Intel Skylake and Kaby Lake
    PCIe bridges. I take a more conservative approach as all known reports
    point to ASUSTek laptops of these two generations with this particular
    wireless card.
    
    Please note, however, before the rtl8723be finishes probing, the AER
    errors remained. After the module finishes probing, all AER errors would
    indeed be eliminated, along with heavy lags, poor network throughput,
    and/or occasional lock-ups.
    
    Cc: <stable@vger.kernel.org>
    Fixes: a619d1abe20c ("rtlwifi: rtl8723be: Add new driver")
    Reported-by: Liangliang Zou <rawdiamondmc@outlook.com>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=218127
    Link: https://lore.kernel.org/lkml/05390e0b-27fd-4190-971e-e70a498c8221@lwfinger.net/T/
    Tested-by: Liangliang Zou <rawdiamondmc@outlook.com>
    Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20250422061755.356535-1-jeffbai@aosc.io
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: rtw88: do not ignore hardware read error during DPK [+ + +]
Author: Dmitry Antipov <dmantipov@yandex.ru>
Date:   Tue Apr 15 12:07:20 2025 +0300

    wifi: rtw88: do not ignore hardware read error during DPK
    
    [ Upstream commit 20d3c19bd8f9b498173c198eadf54580c8caa336 ]
    
    In 'rtw8822c_dpk_cal_coef1()', do not ignore error returned
    by 'check_hw_ready()' but issue a warning to denote possible
    DPK issue. Compile tested only.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 5227c2ee453d ("rtw88: 8822c: add SW DPK support")
    Suggested-by: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20250415090720.194048-1-dmantipov@yandex.ru
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/boot/compressed: prefer cc-option for CFLAGS additions [+ + +]
Author: Nick Desaulniers <nick.desaulniers+lkml@gmail.com>
Date:   Wed Jan 11 20:04:58 2023 -0700

    x86/boot/compressed: prefer cc-option for CFLAGS additions
    
    commit 994f5f7816ff963f49269cfc97f63cb2e4edb84f upstream.
    
    as-option tests new options using KBUILD_CFLAGS, which causes problems
    when using as-option to update KBUILD_AFLAGS because many compiler
    options are not valid assembler options.
    
    This will be fixed in a follow up patch. Before doing so, move the
    assembler test for -Wa,-mrelax-relocations=no from using as-option to
    cc-option.
    
    Link: https://lore.kernel.org/llvm/CAK7LNATcHt7GcXZ=jMszyH=+M_LC9Qr6yeAGRCBbE6xriLxtUQ@mail.gmail.com/
    Suggested-by: Masahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Tested-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Anders Roxell <anders.roxell@linaro.org>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/cpu: Sanitize CPUID(0x80000000) output [+ + +]
Author: Ahmed S. Darwish <darwi@linutronix.de>
Date:   Tue May 6 07:04:13 2025 +0200

    x86/cpu: Sanitize CPUID(0x80000000) output
    
    [ Upstream commit cc663ba3fe383a628a812f893cc98aafff39ab04 ]
    
    CPUID(0x80000000).EAX returns the max extended CPUID leaf available.  On
    x86-32 machines without an extended CPUID range, a CPUID(0x80000000)
    query will just repeat the output of the last valid standard CPUID leaf
    on the CPU; i.e., a garbage values.  Current tip:x86/cpu code protects against
    this by doing:
    
            eax = cpuid_eax(0x80000000);
            c->extended_cpuid_level = eax;
    
            if ((eax & 0xffff0000) == 0x80000000) {
                    // CPU has an extended CPUID range. Check for 0x80000001
                    if (eax >= 0x80000001) {
                            cpuid(0x80000001, ...);
                    }
            }
    
    This is correct so far.  Afterwards though, the same possibly broken EAX
    value is used to check the availability of other extended CPUID leaves:
    
            if (c->extended_cpuid_level >= 0x80000007)
                    ...
            if (c->extended_cpuid_level >= 0x80000008)
                    ...
            if (c->extended_cpuid_level >= 0x8000000a)
                    ...
            if (c->extended_cpuid_level >= 0x8000001f)
                    ...
    
    which is invalid.  Fix this by immediately setting the CPU's max extended
    CPUID leaf to zero if CPUID(0x80000000).EAX doesn't indicate a valid
    CPUID extended range.
    
    While at it, add a comment, similar to kernel/head_32.S, clarifying the
    CPUID(0x80000000) sanity check.
    
    References: 8a50e5135af0 ("x86-32: Use symbolic constants, safer CPUID when enabling EFER.NX")
    Fixes: 3da99c977637 ("x86: make (early)_identify_cpu more the same between 32bit and 64 bit")
    Signed-off-by: Ahmed S. Darwish <darwi@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Andrew Cooper <andrew.cooper3@citrix.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: John Ogness <john.ogness@linutronix.de>
    Cc: x86-cpuid@lists.linux.dev
    Link: https://lore.kernel.org/r/20250506050437.10264-3-darwi@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/mtrr: Check if fixed-range MTRRs exist in mtrr_save_fixed_ranges() [+ + +]
Author: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
Date:   Fri May 9 17:06:33 2025 +0000

    x86/mtrr: Check if fixed-range MTRRs exist in mtrr_save_fixed_ranges()
    
    [ Upstream commit 824c6384e8d9275d4ec7204f3f79a4ac6bc10379 ]
    
    When suspending, save_processor_state() calls mtrr_save_fixed_ranges()
    to save fixed-range MTRRs.
    
    On platforms without fixed-range MTRRs like the ACRN hypervisor which
    has removed fixed-range MTRR emulation, accessing these MSRs will
    trigger an unchecked MSR access error. Make sure fixed-range MTRRs are
    supported before access to prevent such error.
    
    Since mtrr_state.have_fixed is only set when MTRRs are present and
    enabled, checking the CPU feature flag in mtrr_save_fixed_ranges() is
    unnecessary.
    
    Fixes: 3ebad5905609 ("[PATCH] x86: Save and restore the fixed-range MTRRs of the BSP when suspending")
    Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/20250509170633.3411169-2-jiaqing.zhao@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xen/arm: call uaccess_ttbr0_enable for dm_op hypercall [+ + +]
Author: Stefano Stabellini <stefano.stabellini@amd.com>
Date:   Mon May 12 14:54:52 2025 -0700

    xen/arm: call uaccess_ttbr0_enable for dm_op hypercall
    
    commit 7f9bbc1140ff8796230bc2634055763e271fd692 upstream.
    
    dm_op hypercalls might come from userspace and pass memory addresses as
    parameters. The memory addresses typically correspond to buffers
    allocated in userspace to hold extra hypercall parameters.
    
    On ARM, when CONFIG_ARM64_SW_TTBR0_PAN is enabled, they might not be
    accessible by Xen, as a result ioreq hypercalls might fail. See the
    existing comment in arch/arm64/xen/hypercall.S regarding privcmd_call
    for reference.
    
    For privcmd_call, Linux calls uaccess_ttbr0_enable before issuing the
    hypercall thanks to commit 9cf09d68b89a. We need to do the same for
    dm_op. This resolves the problem.
    
    Cc: stable@kernel.org
    Fixes: 9cf09d68b89a ("arm64: xen: Enable user access before a privcmd hvc call")
    Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Message-ID: <alpine.DEB.2.22.394.2505121446370.8380@ubuntu-linux-20-04-desktop>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
xprtrdma: fix pointer derefs in error cases of rpcrdma_ep_create [+ + +]
Author: Dan Aloni <dan.aloni@vastdata.com>
Date:   Tue Jan 25 22:06:46 2022 +0200

    xprtrdma: fix pointer derefs in error cases of rpcrdma_ep_create
    
    commit a9c10b5b3b67b3750a10c8b089b2e05f5e176e33 upstream.
    
    If there are failures then we must not leave the non-NULL pointers with
    the error value, otherwise `rpcrdma_ep_destroy` gets confused and tries
    free them, resulting in an Oops.
    
    Signed-off-by: Dan Aloni <dan.aloni@vastdata.com>
    Acked-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    [ Larry: backport to 5.4.y. Minor conflict resolved due to missing commit 93aa8e0a9de80
      xprtrdma: Merge struct rpcrdma_ia into struct rpcrdma_ep ]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Larry Bassel <larry.bassel@oracle.com>