Changelog in Linux kernel 6.12.35

 
accel/ivpu: Fix warning in ivpu_gem_bo_free() [+ + +]
Author: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Date:   Wed May 28 19:12:20 2025 +0200

    accel/ivpu: Fix warning in ivpu_gem_bo_free()
    
    commit 91274fd4ed9ba110b02c53d71d2778b7d13b49ac upstream.
    
    Don't WARN if imported buffers are in use in ivpu_gem_bo_free() as they
    can be indeed used in the original context/driver.
    
    Fixes: 647371a6609d ("accel/ivpu: Add GEM buffer object management")
    Cc: stable@vger.kernel.org # v6.3
    Reviewed-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
    Reviewed-by: Lizhi Hou <lizhi.hou@amd.com>
    Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
    Link: https://lore.kernel.org/r/20250528171220.513225-1-jacek.lawrynowicz@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

accel/ivpu: Improve buffer object logging [+ + +]
Author: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Date:   Tue May 6 11:13:03 2025 +0200

    accel/ivpu: Improve buffer object logging
    
    commit a01e93ee44f7ed76f872d0ede82f8d31bf0a048a upstream.
    
    - Fix missing alloc log when drm_gem_handle_create() fails in
      drm_vma_node_allow() and open callback is not called
    - Add ivpu_bo->ctx_id that enables to log the actual context
      id instead of using 0 as default
    - Add couple WARNs and errors so we can catch more memory
      corruption issues
    
    Fixes: 37dee2a2f433 ("accel/ivpu: Improve buffer object debug logs")
    Cc: stable@vger.kernel.org # v6.8+
    Reviewed-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
    Reviewed-by: Lizhi Hou <lizhi.hou@amd.com>
    Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
    Link: https://lore.kernel.org/r/20250506091303.262034-1-jacek.lawrynowicz@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

accel/ivpu: Use dma_resv_lock() instead of a custom mutex [+ + +]
Author: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Date:   Wed May 28 17:43:25 2025 +0200

    accel/ivpu: Use dma_resv_lock() instead of a custom mutex
    
    commit 98d3f772ca7d6822bdfc8c960f5f909574db97c9 upstream.
    
    This fixes a potential race conditions in:
     - ivpu_bo_unbind_locked() where we modified the shmem->sgt without
       holding the dma_resv_lock().
     - ivpu_bo_print_info() where we read the shmem->pages without
       holding the dma_resv_lock().
    
    Using dma_resv_lock() also protects against future syncronisation
    issues that may arise when accessing drm_gem_shmem_object or
    drm_gem_object members.
    
    Fixes: 42328003ecb6 ("accel/ivpu: Refactor BO creation functions")
    Cc: stable@vger.kernel.org # v6.9+
    Reviewed-by: Lizhi Hou <lizhi.hou@amd.com>
    Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
    Link: https://lore.kernel.org/r/20250528154325.500684-1-jacek.lawrynowicz@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

accel/ivpu: Use firmware names from upstream repo [+ + +]
Author: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Date:   Tue May 6 11:20:30 2025 +0200

    accel/ivpu: Use firmware names from upstream repo
    
    commit 1c2c0e29f24360b3130c005a3c261cb8c7b363c6 upstream.
    
    Use FW names from linux-firmware repo instead of deprecated ones.
    The vpu_37xx.bin style names were never released and were only used for
    internal testing, so it is safe to remove them.
    
    Fixes: c140244f0cfb ("accel/ivpu: Add initial Panther Lake support")
    Cc: stable@vger.kernel.org # v6.13+
    Reviewed-by: Lizhi Hou <lizhi.hou@amd.com>
    Reviewed-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
    Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
    Link: https://lore.kernel.org/r/20250506092030.280276-1-jacek.lawrynowicz@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ACPI: Add missing prototype for non CONFIG_SUSPEND/CONFIG_X86 case [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Mon Apr 7 13:36:55 2025 -0500

    ACPI: Add missing prototype for non CONFIG_SUSPEND/CONFIG_X86 case
    
    [ Upstream commit e1bdbbc98279164d910d2de82a745f090a8b249f ]
    
    acpi_register_lps0_dev() and acpi_unregister_lps0_dev() may be used
    in drivers that don't require CONFIG_SUSPEND or compile on !X86.
    
    Add prototypes for those cases.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202502191627.fRgoBwcZ-lkp@intel.com/
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://patch.msgid.link/20250407183656.1503446-1-superm1@kernel.org
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

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: bus: Bail out if acpi_kobj registration fails [+ + +]
Author: Armin Wolf <W_Armin@gmx.de>
Date:   Sun May 18 20:51:11 2025 +0200

    ACPI: bus: Bail out if acpi_kobj registration fails
    
    [ Upstream commit 94a370fc8def6038dbc02199db9584b0b3690f1a ]
    
    The ACPI sysfs code will fail to initialize if acpi_kobj is NULL,
    together with some ACPI drivers.
    
    Follow the other firmware subsystems and bail out if the kobject
    cannot be registered.
    
    Signed-off-by: Armin Wolf <W_Armin@gmx.de>
    Link: https://patch.msgid.link/20250518185111.3560-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: Apply pack(1) to union aml_resource [+ + +]
Author: Tamir Duberstein <tamird@gmail.com>
Date:   Fri Apr 25 21:21:05 2025 +0200

    ACPICA: Apply pack(1) to union aml_resource
    
    [ Upstream commit eedf3e3c2f2af55dca42b0ea81dffb808211d269 ]
    
    ACPICA commit 1c28da2242783579d59767617121035dafba18c3
    
    This was originally done in NetBSD:
    https://github.com/NetBSD/src/commit/b69d1ac3f7702f67edfe412e4392f77d09804910
    and is the correct alternative to the smattering of `memcpy`s I
    previously contributed to this repository.
    
    This also sidesteps the newly strict checks added in UBSAN:
    https://github.com/llvm/llvm-project/commit/792674400f6f04a074a3827349ed0e2ac10067f6
    
    Before this change we see the following UBSAN stack trace in Fuchsia:
    
      #0    0x000021afcfdeca5e in acpi_rs_get_address_common(struct acpi_resource*, union aml_resource*) ../../third_party/acpica/source/components/resources/rsaddr.c:329 <platform-bus-x86.so>+0x6aca5e
      #1.2  0x000021982bc4af3c in ubsan_get_stack_trace() compiler-rt/lib/ubsan/ubsan_diag.cpp:41 <libclang_rt.asan.so>+0x41f3c
      #1.1  0x000021982bc4af3c in maybe_print_stack_trace() compiler-rt/lib/ubsan/ubsan_diag.cpp:51 <libclang_rt.asan.so>+0x41f3c
      #1    0x000021982bc4af3c in ~scoped_report() compiler-rt/lib/ubsan/ubsan_diag.cpp:395 <libclang_rt.asan.so>+0x41f3c
      #2    0x000021982bc4bb6f in handletype_mismatch_impl() compiler-rt/lib/ubsan/ubsan_handlers.cpp:137 <libclang_rt.asan.so>+0x42b6f
      #3    0x000021982bc4b723 in __ubsan_handle_type_mismatch_v1 compiler-rt/lib/ubsan/ubsan_handlers.cpp:142 <libclang_rt.asan.so>+0x42723
      #4    0x000021afcfdeca5e in acpi_rs_get_address_common(struct acpi_resource*, union aml_resource*) ../../third_party/acpica/source/components/resources/rsaddr.c:329 <platform-bus-x86.so>+0x6aca5e
      #5    0x000021afcfdf2089 in acpi_rs_convert_aml_to_resource(struct acpi_resource*, union aml_resource*, struct acpi_rsconvert_info*) ../../third_party/acpica/source/components/resources/rsmisc.c:355 <platform-bus-x86.so>+0x6b2089
      #6    0x000021afcfded169 in acpi_rs_convert_aml_to_resources(u8*, u32, u32, u8, void**) ../../third_party/acpica/source/components/resources/rslist.c:137 <platform-bus-x86.so>+0x6ad169
      #7    0x000021afcfe2d24a in acpi_ut_walk_aml_resources(struct acpi_walk_state*, u8*, acpi_size, acpi_walk_aml_callback, void**) ../../third_party/acpica/source/components/utilities/utresrc.c:237 <platform-bus-x86.so>+0x6ed24a
      #8    0x000021afcfde66b7 in acpi_rs_create_resource_list(union acpi_operand_object*, struct acpi_buffer*) ../../third_party/acpica/source/components/resources/rscreate.c:199 <platform-bus-x86.so>+0x6a66b7
      #9    0x000021afcfdf6979 in acpi_rs_get_method_data(acpi_handle, const char*, struct acpi_buffer*) ../../third_party/acpica/source/components/resources/rsutils.c:770 <platform-bus-x86.so>+0x6b6979
      #10   0x000021afcfdf708f in acpi_walk_resources(acpi_handle, char*, acpi_walk_resource_callback, void*) ../../third_party/acpica/source/components/resources/rsxface.c:731 <platform-bus-x86.so>+0x6b708f
      #11   0x000021afcfa95dcf in acpi::acpi_impl::walk_resources(acpi::acpi_impl*, acpi_handle, const char*, acpi::Acpi::resources_callable) ../../src/devices/board/lib/acpi/acpi-impl.cc:41 <platform-bus-x86.so>+0x355dcf
      #12   0x000021afcfaa8278 in acpi::device_builder::gather_resources(acpi::device_builder*, acpi::Acpi*, fidl::any_arena&, acpi::Manager*, acpi::device_builder::gather_resources_callback) ../../src/devices/board/lib/acpi/device-builder.cc:84 <platform-bus-x86.so>+0x368278
      #13   0x000021afcfbddb87 in acpi::Manager::configure_discovered_devices(acpi::Manager*) ../../src/devices/board/lib/acpi/manager.cc:75 <platform-bus-x86.so>+0x49db87
      #14   0x000021afcf99091d in publish_acpi_devices(acpi::Manager*, zx_device_t*, zx_device_t*) ../../src/devices/board/drivers/x86/acpi-nswalk.cc:95 <platform-bus-x86.so>+0x25091d
      #15   0x000021afcf9c1d4e in x86::X86::do_init(x86::X86*) ../../src/devices/board/drivers/x86/x86.cc:60 <platform-bus-x86.so>+0x281d4e
      #16   0x000021afcf9e33ad in λ(x86::X86::ddk_init::(anon class)*) ../../src/devices/board/drivers/x86/x86.cc:77 <platform-bus-x86.so>+0x2a33ad
      #17   0x000021afcf9e313e in fit::internal::target<(lambda at../../src/devices/board/drivers/x86/x86.cc:76:19), false, false, std::__2::allocator<std::byte>, void>::invoke(void*) ../../sdk/lib/fit/include/lib/fit/internal/function.h:183 <platform-bus-x86.so>+0x2a313e
      #18   0x000021afcfbab4c7 in fit::internal::function_base<16UL, false, void(), std::__2::allocator<std::byte>>::invoke(const fit::internal::function_base<16UL, false, void (), std::__2::allocator<std::byte> >*) ../../sdk/lib/fit/include/lib/fit/internal/function.h:522 <platform-bus-x86.so>+0x46b4c7
      #19   0x000021afcfbab342 in fit::function_impl<16UL, false, void(), std::__2::allocator<std::byte>>::operator()(const fit::function_impl<16UL, false, void (), std::__2::allocator<std::byte> >*) ../../sdk/lib/fit/include/lib/fit/function.h:315 <platform-bus-x86.so>+0x46b342
      #20   0x000021afcfcd98c3 in async::internal::retained_task::Handler(async_dispatcher_t*, async_task_t*, zx_status_t) ../../sdk/lib/async/task.cc:24 <platform-bus-x86.so>+0x5998c3
      #21   0x00002290f9924616 in λ(const driver_runtime::Dispatcher::post_task::(anon class)*, std::__2::unique_ptr<driver_runtime::callback_request, std::__2::default_delete<driver_runtime::callback_request> >, zx_status_t) ../../src/devices/bin/driver_runtime/dispatcher.cc:789 <libdriver_runtime.so>+0x10a616
      #22   0x00002290f9924323 in fit::internal::target<(lambda at../../src/devices/bin/driver_runtime/dispatcher.cc:788:7), true, false, std::__2::allocator<std::byte>, void, std::__2::unique_ptr<driver_runtime::callback_request, std::__2::default_delete<driver_runtime::callback_request>>, int>::invoke(void*, std::__2::unique_ptr<driver_runtime::callback_request, std::__2::default_delete<driver_runtime::callback_request> >, int) ../../sdk/lib/fit/include/lib/fit/internal/function.h:128 <libdriver_runtime.so>+0x10a323
      #23   0x00002290f9904b76 in fit::internal::function_base<24UL, true, void(std::__2::unique_ptr<driver_runtime::callback_request, std::__2::default_delete<driver_runtime::callback_request>>, int), std::__2::allocator<std::byte>>::invoke(const fit::internal::function_base<24UL, true, void (std::__2::unique_ptr<driver_runtime::callback_request, std::__2::default_delete<driver_runtime::callback_request> >, int), std::__2::allocator<std::byte> >*, std::__2::unique_ptr<driver_runtime::callback_request, std::__2::default_delete<driver_runtime::callback_request> >, int) ../../sdk/lib/fit/include/lib/fit/internal/function.h:522 <libdriver_runtime.so>+0xeab76
      #24   0x00002290f9904831 in fit::callback_impl<24UL, true, void(std::__2::unique_ptr<driver_runtime::callback_request, std::__2::default_delete<driver_runtime::callback_request>>, int), std::__2::allocator<std::byte>>::operator()(fit::callback_impl<24UL, true, void (std::__2::unique_ptr<driver_runtime::callback_request, std::__2::default_delete<driver_runtime::callback_request> >, int), std::__2::allocator<std::byte> >*, std::__2::unique_ptr<driver_runtime::callback_request, std::__2::default_delete<driver_runtime::callback_request> >, int) ../../sdk/lib/fit/include/lib/fit/function.h:471 <libdriver_runtime.so>+0xea831
      #25   0x00002290f98d5adc in driver_runtime::callback_request::Call(driver_runtime::callback_request*, std::__2::unique_ptr<driver_runtime::callback_request, std::__2::default_delete<driver_runtime::callback_request> >, zx_status_t) ../../src/devices/bin/driver_runtime/callback_request.h:74 <libdriver_runtime.so>+0xbbadc
      #26   0x00002290f98e1e58 in driver_runtime::Dispatcher::dispatch_callback(driver_runtime::Dispatcher*, std::__2::unique_ptr<driver_runtime::callback_request, std::__2::default_delete<driver_runtime::callback_request> >) ../../src/devices/bin/driver_runtime/dispatcher.cc:1248 <libdriver_runtime.so>+0xc7e58
      #27   0x00002290f98e4159 in driver_runtime::Dispatcher::dispatch_callbacks(driver_runtime::Dispatcher*, std::__2::unique_ptr<driver_runtime::Dispatcher::event_waiter, std::__2::default_delete<driver_runtime::Dispatcher::event_waiter> >, fbl::ref_ptr<driver_runtime::Dispatcher>) ../../src/devices/bin/driver_runtime/dispatcher.cc:1308 <libdriver_runtime.so>+0xca159
      #28   0x00002290f9918414 in λ(const driver_runtime::Dispatcher::create_with_adder::(anon class)*, std::__2::unique_ptr<driver_runtime::Dispatcher::event_waiter, std::__2::default_delete<driver_runtime::Dispatcher::event_waiter> >, fbl::ref_ptr<driver_runtime::Dispatcher>) ../../src/devices/bin/driver_runtime/dispatcher.cc:353 <libdriver_runtime.so>+0xfe414
      #29   0x00002290f991812d in fit::internal::target<(lambda at../../src/devices/bin/driver_runtime/dispatcher.cc:351:7), true, false, std::__2::allocator<std::byte>, void, std::__2::unique_ptr<driver_runtime::Dispatcher::event_waiter, std::__2::default_delete<driver_runtime::Dispatcher::event_waiter>>, fbl::ref_ptr<driver_runtime::Dispatcher>>::invoke(void*, std::__2::unique_ptr<driver_runtime::Dispatcher::event_waiter, std::__2::default_delete<driver_runtime::Dispatcher::event_waiter> >, fbl::ref_ptr<driver_runtime::Dispatcher>) ../../sdk/lib/fit/include/lib/fit/internal/function.h:128 <libdriver_runtime.so>+0xfe12d
      #30   0x00002290f9906fc7 in fit::internal::function_base<8UL, true, void(std::__2::unique_ptr<driver_runtime::Dispatcher::event_waiter, std::__2::default_delete<driver_runtime::Dispatcher::event_waiter>>, fbl::ref_ptr<driver_runtime::Dispatcher>), std::__2::allocator<std::byte>>::invoke(const fit::internal::function_base<8UL, true, void (std::__2::unique_ptr<driver_runtime::Dispatcher::event_waiter, std::__2::default_delete<driver_runtime::Dispatcher::event_waiter> >, fbl::ref_ptr<driver_runtime::Dispatcher>), std::__2::allocator<std::byte> >*, std::__2::unique_ptr<driver_runtime::Dispatcher::event_waiter, std::__2::default_delete<driver_runtime::Dispatcher::event_waiter> >, fbl::ref_ptr<driver_runtime::Dispatcher>) ../../sdk/lib/fit/include/lib/fit/internal/function.h:522 <libdriver_runtime.so>+0xecfc7
      #31   0x00002290f9906c66 in fit::function_impl<8UL, true, void(std::__2::unique_ptr<driver_runtime::Dispatcher::event_waiter, std::__2::default_delete<driver_runtime::Dispatcher::event_waiter>>, fbl::ref_ptr<driver_runtime::Dispatcher>), std::__2::allocator<std::byte>>::operator()(const fit::function_impl<8UL, true, void (std::__2::unique_ptr<driver_runtime::Dispatcher::event_waiter, std::__2::default_delete<driver_runtime::Dispatcher::event_waiter> >, fbl::ref_ptr<driver_runtime::Dispatcher>), std::__2::allocator<std::byte> >*, std::__2::unique_ptr<driver_runtime::Dispatcher::event_waiter, std::__2::default_delete<driver_runtime::Dispatcher::event_waiter> >, fbl::ref_ptr<driver_runtime::Dispatcher>) ../../sdk/lib/fit/include/lib/fit/function.h:315 <libdriver_runtime.so>+0xecc66
      #32   0x00002290f98e73d9 in driver_runtime::Dispatcher::event_waiter::invoke_callback(driver_runtime::Dispatcher::event_waiter*, std::__2::unique_ptr<driver_runtime::Dispatcher::event_waiter, std::__2::default_delete<driver_runtime::Dispatcher::event_waiter> >, fbl::ref_ptr<driver_runtime::Dispatcher>) ../../src/devices/bin/driver_runtime/dispatcher.h:543 <libdriver_runtime.so>+0xcd3d9
      #33   0x00002290f98e700d in driver_runtime::Dispatcher::event_waiter::handle_event(std::__2::unique_ptr<driver_runtime::Dispatcher::event_waiter, std::__2::default_delete<driver_runtime::Dispatcher::event_waiter> >, async_dispatcher_t*, async::wait_base*, zx_status_t, zx_packet_signal_t const*) ../../src/devices/bin/driver_runtime/dispatcher.cc:1442 <libdriver_runtime.so>+0xcd00d
      #34   0x00002290f9918983 in async_loop_owned_event_handler<driver_runtime::Dispatcher::event_waiter>::handle_event(async_loop_owned_event_handler<driver_runtime::Dispatcher::event_waiter>*, async_dispatcher_t*, async::wait_base*, zx_status_t, zx_packet_signal_t const*) ../../src/devices/bin/driver_runtime/async_loop_owned_event_handler.h:59 <libdriver_runtime.so>+0xfe983
      #35   0x00002290f9918b9e in async::wait_method<async_loop_owned_event_handler<driver_runtime::Dispatcher::event_waiter>, &async_loop_owned_event_handler<driver_runtime::Dispatcher::event_waiter>::handle_event>::call_handler(async_dispatcher_t*, async_wait_t*, zx_status_t, zx_packet_signal_t const*) ../../sdk/lib/async/include/lib/async/cpp/wait.h:201 <libdriver_runtime.so>+0xfeb9e
      #36   0x00002290f99bf509 in async_loop_dispatch_wait(async_loop_t*, async_wait_t*, zx_status_t, zx_packet_signal_t const*) ../../sdk/lib/async-loop/loop.c:394 <libdriver_runtime.so>+0x1a5509
      #37   0x00002290f99b9958 in async_loop_run_once(async_loop_t*, zx_time_t) ../../sdk/lib/async-loop/loop.c:343 <libdriver_runtime.so>+0x19f958
      #38   0x00002290f99b9247 in async_loop_run(async_loop_t*, zx_time_t, _Bool) ../../sdk/lib/async-loop/loop.c:301 <libdriver_runtime.so>+0x19f247
      #39   0x00002290f99ba962 in async_loop_run_thread(void*) ../../sdk/lib/async-loop/loop.c:860 <libdriver_runtime.so>+0x1a0962
      #40   0x000041afd176ef30 in start_c11(void*) ../../zircon/third_party/ulib/musl/pthread/pthread_create.c:63 <libc.so>+0x84f30
      #41   0x000041afd18a448d in thread_trampoline(uintptr_t, uintptr_t) ../../zircon/system/ulib/runtime/thread.cc:100 <libc.so>+0x1ba48d
    
    Link: https://github.com/acpica/acpica/commit/1c28da22
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Link: https://patch.msgid.link/4664267.LvFx2qVVIh@rjwysocki.net
    Signed-off-by: Tamir Duberstein <tamird@gmail.com>
    [ rjw: Pick up the tag from Tamir ]
    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>

ACPICA: utilities: Fix overflow check in vsnprintf() [+ + +]
Author: gldrk <me@rarity.fan>
Date:   Fri Apr 25 21:21:52 2025 +0200

    ACPICA: utilities: Fix overflow check in vsnprintf()
    
    [ Upstream commit 12b660251007e00a3e4d47ec62dbe3a7ace7023e ]
    
    ACPICA commit d9d59b7918514ae55063b93f3ec041b1a569bf49
    
    The old version breaks sprintf on 64-bit systems for buffers
    outside [0..UINT32_MAX].
    
    Link: https://github.com/acpica/acpica/commit/d9d59b79
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Link: https://patch.msgid.link/4994935.GXAFRqVoOG@rjwysocki.net
    Signed-off-by: gldrk <me@rarity.fan>
    [ rjw: Added the tag from gldrk ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    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 - Add mute LED support for HP Victus 16-s1xxx and HP Victus 15-fa1xxx [+ + +]
Author: Edip Hazuri <edip@medip.dev>
Date:   Mon Jun 9 10:59:44 2025 +0300

    ALSA: hda/realtek - Add mute LED support for HP Victus 16-s1xxx and HP Victus 15-fa1xxx
    
    commit a0914bf56e26d2cf457690602883f9cd2ec2c646 upstream.
    
    The mute led on those laptops is using ALC245 but requires a quirk to work
    This patch enables the existing quirk for the devices.
    
    Tested on my Victus 16-s1011nt Laptop and my friend's Victus
    15-fa1xxx. The LED behaviour works as intended.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Edip Hazuri <edip@medip.dev>
    Link: https://patch.msgid.link/20250609075943.13934-2-edip@medip.dev
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Add quirk for Asus GU605C [+ + +]
Author: Richard Fitzgerald <rf@opensource.cirrus.com>
Date:   Mon Jun 9 11:21:25 2025 +0100

    ALSA: hda/realtek: Add quirk for Asus GU605C
    
    commit 7b23887a0c70d15459f02c51651a111e9e5cab86 upstream.
    
    The GU605C has similar audio hardware to the GU605M so apply the
    same quirk.
    
    Note that in the linked bugzilla there are two separate problems
    with the GU605C. This patch fixes one of the problems, so I haven't
    added a Closes: tag.
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Reported-by: Nick Karaolidis <nick@karaolidis.com>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=220152
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250609102125.63196-1-rf@opensource.cirrus.com
    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>

ALSA: hda/realtek: Fix built-in mic on ASUS VivoBook X513EA [+ + +]
Author: Chris Chiu <chris.chiu@canonical.com>
Date:   Tue Jun 10 11:56:07 2025 +0800

    ALSA: hda/realtek: Fix built-in mic on ASUS VivoBook X513EA
    
    commit c6451a7325874c119def1d4094f6815c0c8fdc23 upstream.
    
    The built-in mic of ASUS VivoBook X513EA is broken recently by the
    fix of the pin sort. The fixup ALC256_FIXUP_ASUS_MIC_NO_PRESENCE
    is working for addressing the regression, too.
    
    Fixes: 3b4309546b48 ("ALSA: hda: Fix headset detection failure due to unstable sort")
    Signed-off-by: Chris Chiu <chris.chiu@canonical.com>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250610035607.690771-1-chris.chiu@canonical.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda: cs35l41: Fix swapped l/r audio channels for Acer Helios laptops [+ + +]
Author: Stefan Binding <sbinding@opensource.cirrus.com>
Date:   Thu May 15 17:28:33 2025 +0100

    ALSA: hda: cs35l41: Fix swapped l/r audio channels for Acer Helios laptops
    
    [ Upstream commit e43a93c41982e82c1b703dd7fa9c1d965260fbb3 ]
    
    Fixes audio channel assignment from ACPI using configuration table.
    
    Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
    Link: https://patch.msgid.link/20250515162848.405055-3-sbinding@opensource.cirrus.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: usb-audio: Rename ALSA kcontrol PCM and PCM1 for the KTMicro sound card [+ + +]
Author: wangdicheng <wangdicheng@kylinos.cn>
Date:   Fri Jun 13 14:36:36 2025 +0800

    ALSA: usb-audio: Rename ALSA kcontrol PCM and PCM1 for the KTMicro sound card
    
    commit 93adf20ff4d6e865e0b974110d3cf2f07c057177 upstream.
    
    PCM1 not in Pulseaudio's control list; standardize control to
    "Speaker" and "Headphone".
    
    Signed-off-by: wangdicheng <wangdicheng@kylinos.cn>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250613063636.239683-1-wangdich9700@163.com
    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/mm: Close theoretical race where stale TLB entry remains valid [+ + +]
Author: Ryan Roberts <ryan.roberts@arm.com>
Date:   Fri May 30 16:23:47 2025 +0100

    arm64/mm: Close theoretical race where stale TLB entry remains valid
    
    commit 4b634918384c0f84c33aeb4dd9fd4c38e7be5ccb upstream.
    
    Commit 3ea277194daa ("mm, mprotect: flush TLB if potentially racing with
    a parallel reclaim leaving stale TLB entries") describes a race that,
    prior to the commit, could occur between reclaim and operations such as
    mprotect() when using reclaim's tlbbatch mechanism. See that commit for
    details but the summary is:
    
    """
    Nadav Amit identified a theoritical race between page reclaim and
    mprotect due to TLB flushes being batched outside of the PTL being held.
    
    He described the race as follows:
    
            CPU0                            CPU1
            ----                            ----
                                            user accesses memory using RW PTE
                                            [PTE now cached in TLB]
            try_to_unmap_one()
            ==> ptep_get_and_clear()
            ==> set_tlb_ubc_flush_pending()
                                            mprotect(addr, PROT_READ)
                                            ==> change_pte_range()
                                            ==> [ PTE non-present - no flush ]
    
                                            user writes using cached RW PTE
            ...
    
            try_to_unmap_flush()
    """
    
    The solution was to insert flush_tlb_batched_pending() in mprotect() and
    friends to explcitly drain any pending reclaim TLB flushes. In the
    modern version of this solution, arch_flush_tlb_batched_pending() is
    called to do that synchronisation.
    
    arm64's tlbbatch implementation simply issues TLBIs at queue-time
    (arch_tlbbatch_add_pending()), eliding the trailing dsb(ish). The
    trailing dsb(ish) is finally issued in arch_tlbbatch_flush() at the end
    of the batch to wait for all the issued TLBIs to complete.
    
    Now, the Arm ARM states:
    
    """
    The completion of the TLB maintenance instruction is guaranteed only by
    the execution of a DSB by the observer that performed the TLB
    maintenance instruction. The execution of a DSB by a different observer
    does not have this effect, even if the DSB is known to be executed after
    the TLB maintenance instruction is observed by that different observer.
    """
    
    arch_tlbbatch_add_pending() and arch_tlbbatch_flush() conform to this
    requirement because they are called from the same task (either kswapd or
    caller of madvise(MADV_PAGEOUT)), so either they are on the same CPU or
    if the task was migrated, __switch_to() contains an extra dsb(ish).
    
    HOWEVER, arm64's arch_flush_tlb_batched_pending() is also implemented as
    a dsb(ish). But this may be running on a CPU remote from the one that
    issued the outstanding TLBIs. So there is no architectural gurantee of
    synchonization. Therefore we are still vulnerable to the theoretical
    race described in Commit 3ea277194daa ("mm, mprotect: flush TLB if
    potentially racing with a parallel reclaim leaving stale TLB entries").
    
    Fix this by flushing the entire mm in arch_flush_tlb_batched_pending().
    This aligns with what the other arches that implement the tlbbatch
    feature do.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 43b3dfdd0455 ("arm64: support batched/deferred tlb shootdown during page reclamation/migration")
    Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
    Link: https://lore.kernel.org/r/20250530152445.2430295-1-ryan.roberts@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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: Restrict pagetable teardown to avoid false warning [+ + +]
Author: Dev Jain <dev.jain@arm.com>
Date:   Tue May 27 13:56:33 2025 +0530

    arm64: Restrict pagetable teardown to avoid false warning
    
    commit 650768c512faba8070bf4cfbb28c95eb5cd203f3 upstream.
    
    Commit 9c006972c3fe ("arm64: mmu: drop pXd_present() checks from
    pXd_free_pYd_table()") removes the pxd_present() checks because the
    caller checks pxd_present(). But, in case of vmap_try_huge_pud(), the
    caller only checks pud_present(); pud_free_pmd_page() recurses on each
    pmd through pmd_free_pte_page(), wherein the pmd may be none. Thus it is
    possible to hit a warning in the latter, since pmd_none => !pmd_table().
    Thus, add a pmd_present() check in pud_free_pmd_page().
    
    This problem was found by code inspection.
    
    Fixes: 9c006972c3fe ("arm64: mmu: drop pXd_present() checks from pXd_free_pYd_table()")
    Cc: stable@vger.kernel.org
    Reported-by: Ryan Roberts <ryan.roberts@arm.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Dev Jain <dev.jain@arm.com>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Reviewed-by: Ryan Roberts <ryan.roberts@arm.com>
    Link: https://lore.kernel.org/r/20250527082633.61073-1-dev.jain@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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: 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>

ARM: omap: pmic-cpcap: do not mess around without CPCAP or OMAP4 [+ + +]
Author: Andreas Kemnade <andreas@kemnade.info>
Date:   Mon Mar 31 16:44:39 2025 +0200

    ARM: omap: pmic-cpcap: do not mess around without CPCAP or OMAP4
    
    commit 7397daf1029d5bfd3415ec8622f5179603d5702d upstream.
    
    The late init call just writes to omap4 registers as soon as
    CONFIG_MFD_CPCAP is enabled without checking whether the
    cpcap driver is actually there or the SoC is indeed an
    OMAP4.
    Rather do these things only with the right device combination.
    
    Fixes booting the BT200 with said configuration enabled and non-factory
    X-Loader and probably also some surprising behavior on other devices.
    
    Fixes: c145649bf262 ("ARM: OMAP2+: Configure voltage controller for cpcap to low-speed")
    CC: stable@vger.kernel.org
    Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
    Reivewed-by: Tony Lindgren <tony@atomide.com>
    Link: https://lore.kernel.org/r/20250331144439.769697-1-andreas@kemnade.info
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ASoC: amd: sof_amd_sdw: Fix unlikely uninitialized variable use in create_sdw_dailinks() [+ + +]
Author: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Date:   Tue May 6 17:37:23 2025 +0530

    ASoC: amd: sof_amd_sdw: Fix unlikely uninitialized variable use in create_sdw_dailinks()
    
    commit 6b83ba4bc3ecb915476d688c9f00f3be57b49a0c upstream.
    
    Initialize current_be_id to 0 in SOF based AMD generic SoundWire machine
    driver to handle the unlikely case when there are no devices connected to
    a DAI.
    In this case create_sdw_dailink() would return without touching the passed
    pointer to current_be_id.
    
    Found by gcc -fanalyzer
    
    Cc: stable@vger.kernel.org
    Fixes: 6d8348ddc56ed ("ASoC: amd: acp: refactor SoundWire machine driver code")
    Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
    Link: https://patch.msgid.link/20250506120823.3621604-2-Vijendar.Mukunda@amd.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: amd: yc: Add quirk for Lenovo Yoga Pro 7 14ASP9 [+ + +]
Author: Talhah Peerbhai <talhah.peerbhai@gmail.com>
Date:   Fri May 16 01:27:41 2025 +0300

    ASoC: amd: yc: Add quirk for Lenovo Yoga Pro 7 14ASP9
    
    [ Upstream commit a28206060dc5848a1a2a15b7f6ac6223d869084d ]
    
    Similar to many other Lenovo models with AMD chips, the Lenovo
    Yoga Pro 7 14ASP9 (product name 83HN) requires a specific quirk
    to ensure internal mic detection. This patch adds a quirk fixing this.
    
    Signed-off-by: Talhah Peerbhai <talhah.peerbhai@gmail.com>
    Link: https://patch.msgid.link/20250515222741.144616-1-talhah.peerbhai@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: codecs: wcd9375: Fix double free of regulator supplies [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Mon May 26 11:47:03 2025 +0200

    ASoC: codecs: wcd9375: Fix double free of regulator supplies
    
    commit 63fe298652d4eda07d738bfcbbc59d1343a675ef upstream.
    
    Driver gets regulator supplies in probe path with
    devm_regulator_bulk_get(), so should not call regulator_bulk_free() in
    error and remove paths to avoid double free.
    
    Fixes: 216d04139a6d ("ASoC: codecs: wcd937x: Remove separate handling for vdd-buck supply")
    Cc: stable@vger.kernel.org
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Link: https://patch.msgid.link/20250526-b4-b4-asoc-wcd9395-vdd-px-fixes-v1-3-0b8a2993b7d3@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: codecs: wcd937x: Drop unused buck_supply [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Mon May 26 11:47:02 2025 +0200

    ASoC: codecs: wcd937x: Drop unused buck_supply
    
    commit dc59189d32fc3dbddcf418fd4b418fb61f24ade6 upstream.
    
    Last user of wcd937x_priv->buck_supply was removed in
    commit 216d04139a6d ("ASoC: codecs: wcd937x: Remove separate handling
    for vdd-buck supply").
    
    Fixes: 216d04139a6d ("ASoC: codecs: wcd937x: Remove separate handling for vdd-buck supply")
    Cc: stable@vger.kernel.org
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Link: https://patch.msgid.link/20250526-b4-b4-asoc-wcd9395-vdd-px-fixes-v1-2-0b8a2993b7d3@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: intel/sdw_utils: Assign initial value in asoc_sdw_rt_amp_spk_rtd_init() [+ + +]
Author: I Hsin Cheng <richard120310@gmail.com>
Date:   Tue May 6 02:54:23 2025 +0800

    ASoC: intel/sdw_utils: Assign initial value in asoc_sdw_rt_amp_spk_rtd_init()
    
    [ Upstream commit 5fb3878216aece471af030b33a9fbef3babd8617 ]
    
    Initialize "ret" with "-EINVAL" to handle cases where "strstr()" for
    "codec_dai->component->name_prefix" doesn't find "-1" nor "-2". In that
    case "name_prefix" is invalid because for current implementation it's
    expected to have either "-1" or "-2" in it. (Maybe "-3", "-4" and so on
    in the future.)
    
    Link: https://scan5.scan.coverity.com/#/project-view/36179/10063?selectedIssue=1627120
    Signed-off-by: I Hsin Cheng <richard120310@gmail.com>
    Link: https://patch.msgid.link/20250505185423.680608-1-richard120310@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: meson: meson-card-utils: use of_property_present() for DT parsing [+ + +]
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Sat Apr 19 23:34:48 2025 +0200

    ASoC: meson: meson-card-utils: use of_property_present() for DT parsing
    
    commit 171eb6f71e9e3ba6a7410a1d93f3ac213f39dae2 upstream.
    
    Commit c141ecc3cecd ("of: Warn when of_property_read_bool() is used on
    non-boolean properties") added a warning when trying to parse a property
    with a value (boolean properties are defined as: absent = false, present
    without any value = true). This causes a warning from meson-card-utils.
    
    meson-card-utils needs to know about the existence of the
    "audio-routing" and/or "audio-widgets" properties in order to properly
    parse them. Switch to of_property_present() in order to silence the
    following warning messages during boot:
      OF: /sound: Read of boolean property 'audio-routing' with a value.
      OF: /sound: Read of boolean property 'audio-widgets' with a value.
    
    Fixes: 7864a79f37b5 ("ASoC: meson: add axg sound card support")
    Tested-by: Christian Hewitt <christianshewitt@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Link: https://patch.msgid.link/20250419213448.59647-1-martin.blumenstingl@googlemail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: qcom: sdm845: Add error handling in sdm845_slim_snd_hw_params() [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
Date:   Mon May 19 15:57:39 2025 +0800

    ASoC: qcom: sdm845: Add error handling in sdm845_slim_snd_hw_params()
    
    commit 688abe2860fd9c644705b9e11cb9649eb891b879 upstream.
    
    The function sdm845_slim_snd_hw_params() calls the functuion
    snd_soc_dai_set_channel_map() but does not check its return
    value. A proper implementation can be found in msm_snd_hw_params().
    
    Add error handling for snd_soc_dai_set_channel_map(). If the
    function fails and it is not a unsupported error, return the
    error code immediately.
    
    Fixes: 5caf64c633a3 ("ASoC: qcom: sdm845: add support to DB845c and Lenovo Yoga")
    Cc: stable@vger.kernel.org # v5.6
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250519075739.1458-1-vulab@iscas.ac.cn
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: tas2770: Power cycle amp on ISENSE/VSENSE change [+ + +]
Author: Hector Martin <marcan@marcan.st>
Date:   Sun Apr 6 09:15:05 2025 +1000

    ASoC: tas2770: Power cycle amp on ISENSE/VSENSE change
    
    [ Upstream commit f529c91be8a34ac12e7599bf87c65b6f4a2c9f5c ]
    
    The ISENSE/VSENSE blocks are only powered up when the amplifier
    transitions from shutdown to active. This means that if those controls
    are flipped on while the amplifier is already playing back audio, they
    will have no effect.
    
    Fix this by forcing a power cycle around transitions in those controls.
    
    Reviewed-by: Neal Gompa <neal@gompa.dev>
    Signed-off-by: Hector Martin <marcan@marcan.st>
    Signed-off-by: James Calligeros <jcalligeros99@gmail.com>
    Link: https://patch.msgid.link/20250406-apple-codec-changes-v5-1-50a00ec850a3@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: tegra210_ahub: Add check to of_device_get_match_data() [+ + +]
Author: Yuanjun Gong <ruc_gongyuanjun@163.com>
Date:   Tue May 13 20:37:44 2025 +0800

    ASoC: tegra210_ahub: Add check to of_device_get_match_data()
    
    [ Upstream commit 04cb269c204398763a620d426cbee43064854000 ]
    
    In tegra_ahub_probe(), check the result of function
    of_device_get_match_data(), return an error code in case it fails.
    
    Signed-off-by: Yuanjun Gong <ruc_gongyuanjun@163.com>
    Link: https://patch.msgid.link/20250513123744.3041724-1-ruc_gongyuanjun@163.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ata: ahci: Disallow LPM for Asus B550-F motherboard [+ + +]
Author: Mikko Korhonen <mjkorhon@gmail.com>
Date:   Tue Jun 17 09:18:41 2025 +0300

    ata: ahci: Disallow LPM for Asus B550-F motherboard
    
    commit a7b3b77fd111d49f8e25624e4ea1046322a57baf upstream.
    
    Asus ROG STRIX B550-F GAMING (WI-FI) motherboard has problems on some
    SATA ports with at least one hard drive model (WDC WD20EFAX-68FB5N0)
    when LPM is enabled. Disabling LPM solves the issue.
    
    Cc: stable@vger.kernel.org
    Fixes: 7627a0edef54 ("ata: ahci: Drop low power policy board type")
    Signed-off-by: Mikko Korhonen <mjkorhon@gmail.com>
    Link: https://lore.kernel.org/r/20250617062055.784827-1-mjkorhon@gmail.com
    [cassel: more detailed comment, make single line comments consistent]
    Signed-off-by: Niklas Cassel <cassel@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ata: ahci: Disallow LPM for ASUSPRO-D840SA motherboard [+ + +]
Author: Niklas Cassel <cassel@kernel.org>
Date:   Thu Jun 12 16:17:51 2025 +0200

    ata: ahci: Disallow LPM for ASUSPRO-D840SA motherboard
    
    commit b5acc3628898baa63658bc4125f9525f9b3dd4f3 upstream.
    
    A user has bisected a regression which causes graphical corruptions on his
    screen to commit 7627a0edef54 ("ata: ahci: Drop low power policy board
    type").
    
    Simply reverting commit 7627a0edef54 ("ata: ahci: Drop low power policy
    board type") makes the graphical corruptions on his screen to go away.
    (Note: there are no visible messages in dmesg that indicates a problem
    with AHCI.)
    
    The user also reports that the problem occurs regardless if there is an
    HDD or an SSD connected via AHCI, so the problem is not device related.
    
    The devices also work fine on other motherboards, so it seems specific to
    the ASUSPRO-D840SA motherboard.
    
    While enabling low power modes for AHCI is not supposed to affect
    completely unrelated hardware, like a graphics card, it does however
    allow the system to enter deeper PC-states, which could expose ACPI issues
    that were previously not visible (because the system never entered these
    lower power states before).
    
    There are previous examples where enabling LPM exposed serious BIOS/ACPI
    bugs, see e.g. commit 240630e61870 ("ahci: Disable LPM on Lenovo 50 series
    laptops with a too old BIOS").
    
    Since there hasn't been any BIOS update in years for the ASUSPRO-D840SA
    motherboard, disable LPM for this board, in order to avoid entering lower
    PC-states, which triggers graphical corruptions.
    
    Cc: stable@vger.kernel.org
    Reported-by: Andy Yang <andyybtc79@gmail.com>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=220111
    Fixes: 7627a0edef54 ("ata: ahci: Drop low power policy board type")
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Hans de Goede <hansg@kernel.org>
    Link: https://lore.kernel.org/r/20250612141750.2108342-2-cassel@kernel.org
    Signed-off-by: Niklas Cassel <cassel@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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>

 
block: Clear BIO_EMULATES_ZONE_APPEND flag on BIO completion [+ + +]
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Wed Jun 11 09:59:15 2025 +0900

    block: Clear BIO_EMULATES_ZONE_APPEND flag on BIO completion
    
    commit f705d33c2f0353039d03e5d6f18f70467d86080e upstream.
    
    When blk_zone_write_plug_bio_endio() is called for a regular write BIO
    used to emulate a zone append operation, that is, a BIO flagged with
    BIO_EMULATES_ZONE_APPEND, the BIO operation code is restored to the
    original REQ_OP_ZONE_APPEND but the BIO_EMULATES_ZONE_APPEND flag is not
    cleared. Clear it to fully return the BIO to its orginal definition.
    
    Fixes: 9b1ce7f0c6f8 ("block: Implement zone append emulation")
    Cc: stable@vger.kernel.org
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20250611005915.89843-1-dlemoal@kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

block: use plug request list tail for one-shot backmerge attempt [+ + +]
Author: Jens Axboe <axboe@kernel.dk>
Date:   Wed Jun 11 08:48:46 2025 -0600

    block: use plug request list tail for one-shot backmerge attempt
    
    commit 961296e89dc3800e6a3abc3f5d5bb4192cf31e98 upstream.
    
    Previously, the block layer stored the requests in the plug list in
    LIFO order. For this reason, blk_attempt_plug_merge() would check
    just the head entry for a back merge attempt, and abort after that
    unless requests for multiple queues existed in the plug list. If more
    than one request is present in the plug list, this makes the one-shot
    back merging less useful than before, as it'll always fail to find a
    quick merge candidate.
    
    Use the tail entry for the one-shot merge attempt, which is the last
    added request in the list. If that fails, abort immediately unless
    there are multiple queues available. If multiple queues are available,
    then scan the list. Ideally the latter scan would be a backwards scan
    of the list, but as it currently stands, the plug list is singly linked
    and hence this isn't easily feasible.
    
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/linux-block/20250611121626.7252-1-abuehaze@amazon.com/
    Reported-by: Hazem Mohamed Abuelfotoh <abuehaze@amazon.com>
    Fixes: e70c301faece ("block: don't reorder requests in blk_add_rq_to_plug")
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Bluetooth: btusb: Add new VID/PID 13d3/3584 for MT7922 [+ + +]
Author: Liwei Sun <sunliweis@126.com>
Date:   Tue May 13 14:13:54 2025 +0800

    Bluetooth: btusb: Add new VID/PID 13d3/3584 for MT7922
    
    [ Upstream commit 71d9d3522aec301e4a1c4eae4b5e0656fc4a7262 ]
    
    A new variant of MT7922 wireless device has been identified.
    The device introduces itself as MEDIATEK MT7922,
    so treat it as MediaTek device.
    With this patch, btusb driver works as expected:
    [    3.151162] Bluetooth: Core ver 2.22
    [    3.151185] Bluetooth: HCI device and connection manager initialized
    [    3.151189] Bluetooth: HCI socket layer initialized
    [    3.151191] Bluetooth: L2CAP socket layer initialized
    [    3.151194] Bluetooth: SCO socket layer initialized
    [    3.295718] Bluetooth: hci0: HW/SW Version: 0x008a008a, Build Time: 20241106163512
    [    4.676634] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
    [    4.676637] Bluetooth: BNEP filters: protocol multicast
    [    4.676640] Bluetooth: BNEP socket layer initialized
    [    5.560453] Bluetooth: hci0: Device setup in 2320660 usecs
    [    5.560457] Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.
    [    5.619197] Bluetooth: hci0: AOSP extensions version v1.00
    [    5.619204] Bluetooth: hci0: AOSP quality report is supported
    [    5.619301] Bluetooth: MGMT ver 1.23
    [    6.741247] Bluetooth: RFCOMM TTY layer initialized
    [    6.741258] Bluetooth: RFCOMM socket layer initialized
    [    6.741261] Bluetooth: RFCOMM ver 1.11
    
    lspci output:
    04:00.0 Network controller: MEDIATEK Corp. MT7922 802.11ax PCI Express Wireless Network Adapter
    
    USB information:
    T:  Bus=01 Lev=01 Prnt=01 Port=04 Cnt=02 Dev#=  3 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=13d3 ProdID=3584 Rev= 1.00
    S:  Manufacturer=MediaTek Inc.
    S:  Product=Wireless_Device
    S:  SerialNumber=000000000
    C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA
    A:  FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=125us
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    I:  If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  63 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  63 Ivl=1ms
    I:  If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=125us
    E:  Ad=0a(O) Atr=03(Int.) MxPS=  64 Ivl=125us
    I:* If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=8a(I) Atr=03(Int.) MxPS= 512 Ivl=125us
    
    Signed-off-by: Liwei Sun <sunliweis@126.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: btusb: Add new VID/PID 13d3/3630 for MT7925 [+ + +]
Author: Jiande Lu <jiande.lu@mediatek.com>
Date:   Tue Apr 29 18:16:05 2025 +0800

    Bluetooth: btusb: Add new VID/PID 13d3/3630 for MT7925
    
    [ Upstream commit 5bd5c716f7ec3e25d8d3b8a7566e192a26f9c7ce ]
    
    Add VID 13d3 & PID 3630 for MediaTek MT7925 USB Bluetooth chip.
    
    The information in /sys/kernel/debug/usb/devices about the Bluetooth
    device is listed as the below.
    
    T:  Bus=07 Lev=01 Prnt=01 Port=10 Cnt=02 Dev#=  2 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=13d3 ProdID=3630 Rev= 1.00
    S:  Manufacturer=MediaTek Inc.
    S:  Product=Wireless_Device
    S:  SerialNumber=000000000
    C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA
    A:  FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=125us
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    I:  If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  63 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  63 Ivl=1ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
    E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=125us
    E:  Ad=0a(O) Atr=03(Int.) MxPS=  64 Ivl=125us
    I:  If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
    E:  Ad=8a(I) Atr=03(Int.) MxPS= 512 Ivl=125us
    E:  Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us
    
    Signed-off-by: Jiande Lu <jiande.lu@mediatek.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bnxt_en: Add a helper function to configure MRU and RSS [+ + +]
Author: Pavan Chebbi <pavan.chebbi@broadcom.com>
Date:   Fri Jun 13 16:18:40 2025 -0700

    bnxt_en: Add a helper function to configure MRU and RSS
    
    [ Upstream commit e11baaea94e2923739a98abeee85eb0667c04fd3 ]
    
    Add a new helper function that will configure MRU and RSS table
    of a VNIC. This will be useful when we configure both on a VNIC
    when resetting an RX ring.  This function will be used again in
    the next bug fix patch where we have to reconfigure VNICs for RSS
    contexts.
    
    Suggested-by: Michael Chan <michael.chan@broadcom.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: David Wei <dw@davidwei.uk>
    Signed-off-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Link: https://patch.msgid.link/20250613231841.377988-3-michael.chan@broadcom.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 5dacc94c6fe6 ("bnxt_en: Update MRU and RSS table of RSS contexts on queue reset")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bnxt_en: Fix double invocation of bnxt_ulp_stop()/bnxt_ulp_start() [+ + +]
Author: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date:   Fri Jun 13 16:18:39 2025 -0700

    bnxt_en: Fix double invocation of bnxt_ulp_stop()/bnxt_ulp_start()
    
    [ Upstream commit 1e9ac33fa271be0d2480fd732f9642d81542500b ]
    
    Before the commit under the Fixes tag below, bnxt_ulp_stop() and
    bnxt_ulp_start() were always invoked in pairs.  After that commit,
    the new bnxt_ulp_restart() can be invoked after bnxt_ulp_stop()
    has been called.  This may result in the RoCE driver's aux driver
    .suspend() method being invoked twice.  The 2nd bnxt_re_suspend()
    call will crash when it dereferences a NULL pointer:
    
    (NULL ib_device): Handle device suspend call
    BUG: kernel NULL pointer dereference, address: 0000000000000b78
    PGD 0 P4D 0
    Oops: Oops: 0000 [#1] SMP PTI
    CPU: 20 UID: 0 PID: 181 Comm: kworker/u96:5 Tainted: G S                  6.15.0-rc1 #4 PREEMPT(voluntary)
    Tainted: [S]=CPU_OUT_OF_SPEC
    Hardware name: Dell Inc. PowerEdge R730/072T6D, BIOS 2.4.3 01/17/2017
    Workqueue: bnxt_pf_wq bnxt_sp_task [bnxt_en]
    RIP: 0010:bnxt_re_suspend+0x45/0x1f0 [bnxt_re]
    Code: 8b 05 a7 3c 5b f5 48 89 44 24 18 31 c0 49 8b 5c 24 08 4d 8b 2c 24 e8 ea 06 0a f4 48 c7 c6 04 60 52 c0 48 89 df e8 1b ce f9 ff <48> 8b 83 78 0b 00 00 48 8b 80 38 03 00 00 a8 40 0f 85 b5 00 00 00
    RSP: 0018:ffffa2e84084fd88 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000001
    RDX: 0000000000000000 RSI: ffffffffb4b6b934 RDI: 00000000ffffffff
    RBP: ffffa1760954c9c0 R08: 0000000000000000 R09: c0000000ffffdfff
    R10: 0000000000000001 R11: ffffa2e84084fb50 R12: ffffa176031ef070
    R13: ffffa17609775000 R14: ffffa17603adc180 R15: 0000000000000000
    FS:  0000000000000000(0000) GS:ffffa17daa397000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000b78 CR3: 00000004aaa30003 CR4: 00000000003706f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
    <TASK>
    bnxt_ulp_stop+0x69/0x90 [bnxt_en]
    bnxt_sp_task+0x678/0x920 [bnxt_en]
    ? __schedule+0x514/0xf50
    process_scheduled_works+0x9d/0x400
    worker_thread+0x11c/0x260
    ? __pfx_worker_thread+0x10/0x10
    kthread+0xfe/0x1e0
    ? __pfx_kthread+0x10/0x10
    ret_from_fork+0x2b/0x40
    ? __pfx_kthread+0x10/0x10
    ret_from_fork_asm+0x1a/0x30
    
    Check the BNXT_EN_FLAG_ULP_STOPPED flag and do not proceed if the flag
    is already set.  This will preserve the original symmetrical
    bnxt_ulp_stop() and bnxt_ulp_start().
    
    Also, inside bnxt_ulp_start(), clear the BNXT_EN_FLAG_ULP_STOPPED
    flag after taking the mutex to avoid any race condition.  And for
    symmetry, only proceed in bnxt_ulp_start() if the
    BNXT_EN_FLAG_ULP_STOPPED is set.
    
    Fixes: 3c163f35bd50 ("bnxt_en: Optimize recovery path ULP locking in the driver")
    Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
    Co-developed-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250613231841.377988-2-michael.chan@broadcom.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bnxt_en: Remove unused field "ref_count" in struct bnxt_ulp [+ + +]
Author: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date:   Thu Apr 17 10:24:47 2025 -0700

    bnxt_en: Remove unused field "ref_count" in struct bnxt_ulp
    
    [ Upstream commit 5bccacb4cc32cb835fe2fe100a210332c494e81d ]
    
    The "ref_count" field in struct bnxt_ulp is unused after
    commit a43c26fa2e6c ("RDMA/bnxt_re: Remove the sriov config callback").
    So we can just remove it now.
    
    Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
    Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Link: https://patch.msgid.link/20250417172448.1206107-4-michael.chan@broadcom.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bnxt_en: Update MRU and RSS table of RSS contexts on queue reset [+ + +]
Author: Pavan Chebbi <pavan.chebbi@broadcom.com>
Date:   Fri Jun 13 16:18:41 2025 -0700

    bnxt_en: Update MRU and RSS table of RSS contexts on queue reset
    
    [ Upstream commit 5dacc94c6fe61cde6f700e95cf35af9944b022c4 ]
    
    The commit under the Fixes tag below which updates the VNICs' RSS
    and MRU during .ndo_queue_start(), needs to be extended to cover any
    non-default RSS contexts which have their own VNICs.  Without this
    step, packets that are destined to a non-default RSS context may be
    dropped after .ndo_queue_start().
    
    We further optimize this scheme by updating the VNIC only if the
    RX ring being restarted is in the RSS table of the VNIC.  Updating
    the VNIC (in particular setting the MRU to 0) will momentarily stop
    all traffic to all rings in the RSS table.  Any VNIC that has the
    RX ring excluded from the RSS table can skip this step and avoid the
    traffic disruption.
    
    Note that this scheme is just an improvement.  A VNIC with multiple
    rings in the RSS table will still see traffic disruptions to all rings
    in the RSS table when one of the rings is being restarted.  We are
    working on a FW scheme that will improve upon this further.
    
    Fixes: 5ac066b7b062 ("bnxt_en: Fix queue start to update vnic RSS table")
    Reported-by: David Wei <dw@davidwei.uk>
    Signed-off-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Link: https://patch.msgid.link/20250613231841.377988-4-michael.chan@broadcom.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpf, sockmap: Fix data lost during EAGAIN retries [+ + +]
Author: Jiayuan Chen <jiayuan.chen@linux.dev>
Date:   Mon Apr 7 22:21:20 2025 +0800

    bpf, sockmap: Fix data lost during EAGAIN retries
    
    [ Upstream commit 7683167196bd727ad5f3c3fc6a9ca70f54520a81 ]
    
    We call skb_bpf_redirect_clear() to clean _sk_redir before handling skb in
    backlog, but when sk_psock_handle_skb() return EAGAIN due to sk_rcvbuf
    limit, the redirect info in _sk_redir is not recovered.
    
    Fix skb redir loss during EAGAIN retries by restoring _sk_redir
    information using skb_bpf_set_redir().
    
    Before this patch:
    '''
    ./bench sockmap -c 2 -p 1 -a --rx-verdict-ingress
    Setting up benchmark 'sockmap'...
    create socket fd c1:13 p1:14 c2:15 p2:16
    Benchmark 'sockmap' started.
    Send Speed 1343.172 MB/s, BPF Speed 1343.238 MB/s, Rcv Speed   65.271 MB/s
    Send Speed 1352.022 MB/s, BPF Speed 1352.088 MB/s, Rcv Speed   0 MB/s
    Send Speed 1354.105 MB/s, BPF Speed 1354.105 MB/s, Rcv Speed   0 MB/s
    Send Speed 1355.018 MB/s, BPF Speed 1354.887 MB/s, Rcv Speed   0 MB/s
    '''
    Due to the high send rate, the RX processing path may frequently hit the
    sk_rcvbuf limit. Once triggered, incorrect _sk_redir will cause the flow
    to mistakenly enter the "!ingress" path, leading to send failures.
    (The Rcv speed depends on tcp_rmem).
    
    After this patch:
    '''
    ./bench sockmap -c 2 -p 1 -a --rx-verdict-ingress
    Setting up benchmark 'sockmap'...
    create socket fd c1:13 p1:14 c2:15 p2:16
    Benchmark 'sockmap' started.
    Send Speed 1347.236 MB/s, BPF Speed 1347.367 MB/s, Rcv Speed   65.402 MB/s
    Send Speed 1353.320 MB/s, BPF Speed 1353.320 MB/s, Rcv Speed   65.536 MB/s
    Send Speed 1353.186 MB/s, BPF Speed 1353.121 MB/s, Rcv Speed   65.536 MB/s
    '''
    
    Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev>
    Link: https://lore.kernel.org/r/20250407142234.47591-2-jiayuan.chen@linux.dev
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpf: Check rcu_read_lock_trace_held() in bpf_map_lookup_percpu_elem() [+ + +]
Author: Hou Tao <houtao1@huawei.com>
Date:   Mon May 26 14:25:34 2025 +0800

    bpf: Check rcu_read_lock_trace_held() in bpf_map_lookup_percpu_elem()
    
    [ Upstream commit d4965578267e2e81f67c86e2608481e77e9c8569 ]
    
    bpf_map_lookup_percpu_elem() helper is also available for sleepable bpf
    program. When BPF JIT is disabled or under 32-bit host,
    bpf_map_lookup_percpu_elem() will not be inlined. Using it in a
    sleepable bpf program will trigger the warning in
    bpf_map_lookup_percpu_elem(), because the bpf program only holds
    rcu_read_lock_trace lock. Therefore, add the missed check.
    
    Reported-by: syzbot+dce5aae19ae4d6399986@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/bpf/000000000000176a130617420310@google.com/
    Signed-off-by: Hou Tao <houtao1@huawei.com>
    Link: https://lore.kernel.org/r/20250526062534.1105938-1-houtao@huaweicloud.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bpf: Fix L4 csum update on IPv6 in CHECKSUM_COMPLETE [+ + +]
Author: Paul Chaignon <paul.chaignon@gmail.com>
Date:   Thu May 29 12:28:35 2025 +0200

    bpf: Fix L4 csum update on IPv6 in CHECKSUM_COMPLETE
    
    commit ead7f9b8de65632ef8060b84b0c55049a33cfea1 upstream.
    
    In Cilium, we use bpf_csum_diff + bpf_l4_csum_replace to, among other
    things, update the L4 checksum after reverse SNATing IPv6 packets. That
    use case is however not currently supported and leads to invalid
    skb->csum values in some cases. This patch adds support for IPv6 address
    changes in bpf_l4_csum_update via a new flag.
    
    When calling bpf_l4_csum_replace in Cilium, it ends up calling
    inet_proto_csum_replace_by_diff:
    
        1:  void inet_proto_csum_replace_by_diff(__sum16 *sum, struct sk_buff *skb,
        2:                                       __wsum diff, bool pseudohdr)
        3:  {
        4:      if (skb->ip_summed != CHECKSUM_PARTIAL) {
        5:          csum_replace_by_diff(sum, diff);
        6:          if (skb->ip_summed == CHECKSUM_COMPLETE && pseudohdr)
        7:              skb->csum = ~csum_sub(diff, skb->csum);
        8:      } else if (pseudohdr) {
        9:          *sum = ~csum_fold(csum_add(diff, csum_unfold(*sum)));
        10:     }
        11: }
    
    The bug happens when we're in the CHECKSUM_COMPLETE state. We've just
    updated one of the IPv6 addresses. The helper now updates the L4 header
    checksum on line 5. Next, it updates skb->csum on line 7. It shouldn't.
    
    For an IPv6 packet, the updates of the IPv6 address and of the L4
    checksum will cancel each other. The checksums are set such that
    computing a checksum over the packet including its checksum will result
    in a sum of 0. So the same is true here when we update the L4 checksum
    on line 5. We'll update it as to cancel the previous IPv6 address
    update. Hence skb->csum should remain untouched in this case.
    
    The same bug doesn't affect IPv4 packets because, in that case, three
    fields are updated: the IPv4 address, the IP checksum, and the L4
    checksum. The change to the IPv4 address and one of the checksums still
    cancel each other in skb->csum, but we're left with one checksum update
    and should therefore update skb->csum accordingly. That's exactly what
    inet_proto_csum_replace_by_diff does.
    
    This special case for IPv6 L4 checksums is also described atop
    inet_proto_csum_replace16, the function we should be using in this case.
    
    This patch introduces a new bpf_l4_csum_replace flag, BPF_F_IPV6,
    to indicate that we're updating the L4 checksum of an IPv6 packet. When
    the flag is set, inet_proto_csum_replace_by_diff will skip the
    skb->csum update.
    
    Fixes: 7d672345ed295 ("bpf: add generic bpf_csum_diff helper")
    Signed-off-by: Paul Chaignon <paul.chaignon@gmail.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://patch.msgid.link/96a6bc3a443e6f0b21ff7b7834000e17fb549e05.1748509484.git.paul.chaignon@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Paul Chaignon <paul.chaignon@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

bpf: Pass the same orig_call value to trampoline functions [+ + +]
Author: Ilya Leoshkevich <iii@linux.ibm.com>
Date:   Mon May 12 22:57:30 2025 +0200

    bpf: Pass the same orig_call value to trampoline functions
    
    [ Upstream commit 94bde253d3ae5d8a01cb958663b12daef1d06574 ]
    
    There is currently some confusion in the s390x JIT regarding whether
    orig_call can be NULL and what that means. Originally the NULL value
    was used to distinguish the struct_ops case, but this was superseded by
    BPF_TRAMP_F_INDIRECT (see commit 0c970ed2f87c ("s390/bpf: Fix indirect
    trampoline generation").
    
    The remaining reason to have this check is that NULL can actually be
    passed to the arch_bpf_trampoline_size() call - but not to the
    respective arch_prepare_bpf_trampoline()! call - by
    bpf_struct_ops_prepare_trampoline().
    
    Remove this asymmetry by passing stub_func to both functions, so that
    JITs may rely on orig_call never being NULL.
    
    Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Acked-by: Martin KaFai Lau <martin.lau@kernel.org>
    Link: https://lore.kernel.org/r/20250512221911.61314-2-iii@linux.ibm.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bpf: Use proper type to calculate bpf_raw_tp_null_args.mask index [+ + +]
Author: Shung-Hsi Yu <shung-hsi.yu@suse.com>
Date:   Fri Apr 18 15:49:43 2025 +0800

    bpf: Use proper type to calculate bpf_raw_tp_null_args.mask index
    
    [ Upstream commit 53ebef53a657d7957d35dc2b953db64f1bb28065 ]
    
    The calculation of the index used to access the mask field in 'struct
    bpf_raw_tp_null_args' is done with 'int' type, which could overflow when
    the tracepoint being attached has more than 8 arguments.
    
    While none of the tracepoints mentioned in raw_tp_null_args[] currently
    have more than 8 arguments, there do exist tracepoints that had more
    than 8 arguments (e.g. iocost_iocg_forgive_debt), so use the correct
    type for calculation and avoid Smatch static checker warning.
    
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
    Link: https://lore.kernel.org/bpf/20250418074946.35569-1-shung-hsi.yu@suse.com
    
    Closes: https://lore.kernel.org/r/843a3b94-d53d-42db-93d4-be10a4090146@stanley.mountain/
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpftool: Fix cgroup command to only show cgroup bpf programs [+ + +]
Author: Martin KaFai Lau <martin.lau@kernel.org>
Date:   Wed May 7 13:32:32 2025 -0700

    bpftool: Fix cgroup command to only show cgroup bpf programs
    
    commit b69d4413aa1961930fbf9ffad8376d577378daf9 upstream.
    
    The netkit program is not a cgroup bpf program and should not be shown
    in the output of the "bpftool cgroup show" command.
    
    However, if the netkit device happens to have ifindex 3,
    the "bpftool cgroup show" command will output the netkit
    bpf program as well:
    
    > ip -d link show dev nk1
    3: nk1@if2: ...
        link/ether ...
        netkit mode ...
    
    > bpftool net show
    tc:
    nk1(3) netkit/peer tw_ns_nk2phy prog_id 469447
    
    > bpftool cgroup show /sys/fs/cgroup/...
    ID       AttachType      AttachFlags     Name
    ...      ...                             ...
    469447   netkit_peer                     tw_ns_nk2phy
    
    The reason is that the target_fd (which is the cgroup_fd here) and
    the target_ifindex are in a union in the uapi/linux/bpf.h. The bpftool
    iterates all values in "enum bpf_attach_type" which includes
    non cgroup attach types like netkit. The cgroup_fd is usually 3 here,
    so the bug is triggered when the netkit ifindex just happens
    to be 3 as well.
    
    The bpftool's cgroup.c already has a list of cgroup-only attach type
    defined in "cgroup_attach_types[]". This patch fixes it by iterating
    over "cgroup_attach_types[]" instead of "__MAX_BPF_ATTACH_TYPE".
    
    Cc: Quentin Monnet <qmo@kernel.org>
    Reported-by: Takshak Chahande <ctakshak@meta.com>
    Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Reviewed-by: Quentin Monnet <qmo@kernel.org>
    Link: https://lore.kernel.org/r/20250507203232.1420762-1-martin.lau@linux.dev
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
bus: firewall: Fix missing static inline annotations for stubs [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Wed May 7 11:21:22 2025 +0200

    bus: firewall: Fix missing static inline annotations for stubs
    
    commit 66db876162155c1cec87359cd78c62aaafde9257 upstream.
    
    Stubs in the header file for !CONFIG_STM32_FIREWALL case should be both
    static and inline, because they do not come with earlier declaration and
    should be inlined in every unit including the header.
    
    Cc: Patrice Chotard <patrice.chotard@foss.st.com>
    Cc: stable@vger.kernel.org
    Fixes: 5c9668cfc6d7 ("firewall: introduce stm32_firewall framework")
    Link: https://lore.kernel.org/r/20250507092121.95121-2-krzysztof.kozlowski@linaro.org
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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 GET/SET_TAILDROP command ids [+ + +]
Author: Wan Junjie <junjie.wan@inceptio.ai>
Date:   Tue Apr 8 13:58:11 2025 +0300

    bus: fsl-mc: fix GET/SET_TAILDROP command ids
    
    commit c78230ad34f82c6c0e0e986865073aeeef1f5d30 upstream.
    
    Command ids for taildrop get/set can not pass the check when they are
    using from the restool user space utility. Correct them according to the
    user manual.
    
    Fixes: d67cc29e6d1f ("bus: fsl-mc: list more commands as accepted through the ioctl")
    Signed-off-by: Wan Junjie <junjie.wan@inceptio.ai>
    Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
    Link: https://lore.kernel.org/r/20250408105814.2837951-4-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: 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>

bus: mhi: ep: Update read pointer only after buffer is written [+ + +]
Author: Sumit Kumar <quic_sumk@quicinc.com>
Date:   Wed Apr 9 16:17:43 2025 +0530

    bus: mhi: ep: Update read pointer only after buffer is written
    
    commit 6f18d174b73d0ceeaa341f46c0986436b3aefc9a upstream.
    
    Inside mhi_ep_ring_add_element, the read pointer (rd_offset) is updated
    before the buffer is written, potentially causing race conditions where
    the host sees an updated read pointer before the buffer is actually
    written. Updating rd_offset prematurely can lead to the host accessing
    an uninitialized or incomplete element, resulting in data corruption.
    
    Invoke the buffer write before updating rd_offset to ensure the element
    is fully written before signaling its availability.
    
    Fixes: bbdcba57a1a2 ("bus: mhi: ep: Add support for ring management")
    cc: stable@vger.kernel.org
    Co-developed-by: Youssef Samir <quic_yabdulra@quicinc.com>
    Signed-off-by: Youssef Samir <quic_yabdulra@quicinc.com>
    Signed-off-by: Sumit Kumar <quic_sumk@quicinc.com>
    Reviewed-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
    Reviewed-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Link: https://patch.msgid.link/20250409-rp_fix-v1-1-8cf1fa22ed28@quicinc.com
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

bus: mhi: host: Fix conflict between power_up and SYSERR [+ + +]
Author: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
Date:   Fri Mar 28 10:35:26 2025 -0600

    bus: mhi: host: Fix conflict between power_up and SYSERR
    
    commit 4d92e7c5ccadc79764674ffc2c88d329aabbb7e0 upstream.
    
    When mhi_async_power_up() enables IRQs, it is possible that we could
    receive a SYSERR notification from the device if the firmware has crashed
    for some reason. Then the SYSERR notification queues a work item that
    cannot execute until the pm_mutex is released by mhi_async_power_up().
    
    So the SYSERR work item will be pending. If mhi_async_power_up() detects
    the SYSERR, it will handle it. If the device is in PBL, then the PBL state
    transition event will be queued, resulting in a work item after the
    pending SYSERR work item. Once mhi_async_power_up() releases the pm_mutex,
    the SYSERR work item can run. It will blindly attempt to reset the MHI
    state machine, which is the recovery action for SYSERR. PBL/SBL are not
    interrupt driven and will ignore the MHI Reset unless SYSERR is actively
    advertised. This will cause the SYSERR work item to timeout waiting for
    reset to be cleared, and will leave the host state in SYSERR processing.
    The PBL transition work item will then run, and immediately fail because
    SYSERR processing is not a valid state for PBL transition.
    
    This leaves the device uninitialized.
    
    This issue has a fairly unique signature in the kernel log:
    
            mhi mhi3: Requested to power ON
            Qualcomm Cloud AI 100 0000:36:00.0: Fatal error received from
            device.  Attempting to recover
            mhi mhi3: Power on setup success
            mhi mhi3: Device failed to exit MHI Reset state
            mhi mhi3: Device MHI is not in valid state
    
    We cannot remove the SYSERR handling from mhi_async_power_up() because the
    device may be in the SYSERR state, but we missed the notification as the
    irq was fired before irqs were enabled. We also can't queue the SYSERR work
    item from mhi_async_power_up() if SYSERR is detected because that may
    result in a duplicate work item, and cause the same issue since the
    duplicate item will blindly issue MHI reset even if SYSERR is no longer
    active.
    
    Instead, add a check in the SYSERR work item to make sure that MHI reset is
    only issued if the device is in SYSERR state for PBL or SBL EEs.
    
    Fixes: a6e2e3522f29 ("bus: mhi: core: Add support for PM state transitions")
    Signed-off-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
    Signed-off-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Reviewed-by: Troy Hanson <quic_thanson@quicinc.com>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20250328163526.3365497-1-jeff.hugo@oss.qualcomm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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>

 
can: kvaser_pciefd: refine error prone echo_skb_max handling logic [+ + +]
Author: Fedor Pchelkin <pchelkin@ispras.ru>
Date:   Wed May 28 22:27:12 2025 +0300

    can: kvaser_pciefd: refine error prone echo_skb_max handling logic
    
    commit 54ec8b08216f3be2cc98b33633d3c8ea79749895 upstream.
    
    echo_skb_max should define the supported upper limit of echo_skb[]
    allocated inside the netdevice's priv. The corresponding size value
    provided by this driver to alloc_candev() is KVASER_PCIEFD_CAN_TX_MAX_COUNT
    which is 17.
    
    But later echo_skb_max is rounded up to the nearest power of two (for the
    max case, that would be 32) and the tx/ack indices calculated further
    during tx/rx may exceed the upper array boundary. Kasan reported this for
    the ack case inside kvaser_pciefd_handle_ack_packet(), though the xmit
    function has actually caught the same thing earlier.
    
     BUG: KASAN: slab-out-of-bounds in kvaser_pciefd_handle_ack_packet+0x2d7/0x92a drivers/net/can/kvaser_pciefd.c:1528
     Read of size 8 at addr ffff888105e4f078 by task swapper/4/0
    
     CPU: 4 UID: 0 PID: 0 Comm: swapper/4 Not tainted 6.15.0 #12 PREEMPT(voluntary)
     Call Trace:
      <IRQ>
     dump_stack_lvl lib/dump_stack.c:122
     print_report mm/kasan/report.c:521
     kasan_report mm/kasan/report.c:634
     kvaser_pciefd_handle_ack_packet drivers/net/can/kvaser_pciefd.c:1528
     kvaser_pciefd_read_packet drivers/net/can/kvaser_pciefd.c:1605
     kvaser_pciefd_read_buffer drivers/net/can/kvaser_pciefd.c:1656
     kvaser_pciefd_receive_irq drivers/net/can/kvaser_pciefd.c:1684
     kvaser_pciefd_irq_handler drivers/net/can/kvaser_pciefd.c:1733
     __handle_irq_event_percpu kernel/irq/handle.c:158
     handle_irq_event kernel/irq/handle.c:210
     handle_edge_irq kernel/irq/chip.c:833
     __common_interrupt arch/x86/kernel/irq.c:296
     common_interrupt arch/x86/kernel/irq.c:286
      </IRQ>
    
    Tx max count definitely matters for kvaser_pciefd_tx_avail(), but for seq
    numbers' generation that's not the case - we're free to calculate them as
    would be more convenient, not taking tx max count into account. The only
    downside is that the size of echo_skb[] should correspond to the max seq
    number (not tx max count), so in some situations a bit more memory would
    be consumed than could be.
    
    Thus make the size of the underlying echo_skb[] sufficient for the rounded
    max tx value.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: 8256e0ca6010 ("can: kvaser_pciefd: Fix echo_skb race")
    Cc: stable@vger.kernel.org
    Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Link: https://patch.msgid.link/20250528192713.63894-1-pchelkin@ispras.ru
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

can: tcan4x5x: fix power regulator retrieval during probe [+ + +]
Author: Brett Werling <brett.werling@garmin.com>
Date:   Thu Jun 12 14:18:25 2025 -0500

    can: tcan4x5x: fix power regulator retrieval during probe
    
    commit db22720545207f734aaa9d9f71637bfc8b0155e0 upstream.
    
    Fixes the power regulator retrieval in tcan4x5x_can_probe() by ensuring
    the regulator pointer is not set to NULL in the successful return from
    devm_regulator_get_optional().
    
    Fixes: 3814ca3a10be ("can: tcan4x5x: tcan4x5x_can_probe(): turn on the power before parsing the config")
    Signed-off-by: Brett Werling <brett.werling@garmin.com>
    Link: https://patch.msgid.link/20250612191825.3646364-1-brett.werling@garmin.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ceph: avoid kernel BUG for encrypted inode with unaligned file size [+ + +]
Author: Viacheslav Dubeyko <Slava.Dubeyko@ibm.com>
Date:   Thu Jan 16 16:30:08 2025 -0800

    ceph: avoid kernel BUG for encrypted inode with unaligned file size
    
    commit 060909278cc0a91373a20726bd3d8ce085f480a9 upstream.
    
    The generic/397 test hits a BUG_ON for the case of encrypted inode with
    unaligned file size (for example, 33K or 1K):
    
    [ 877.737811] run fstests generic/397 at 2025-01-03 12:34:40
    [ 877.875761] libceph: mon0 (2)127.0.0.1:40674 session established
    [ 877.876130] libceph: client4614 fsid 19b90bca-f1ae-47a6-93dd-0b03ee637949
    [ 877.991965] libceph: mon0 (2)127.0.0.1:40674 session established
    [ 877.992334] libceph: client4617 fsid 19b90bca-f1ae-47a6-93dd-0b03ee637949
    [ 878.017234] libceph: mon0 (2)127.0.0.1:40674 session established
    [ 878.017594] libceph: client4620 fsid 19b90bca-f1ae-47a6-93dd-0b03ee637949
    [ 878.031394] xfs_io (pid 18988) is setting deprecated v1 encryption policy; recommend upgrading to v2.
    [ 878.054528] libceph: mon0 (2)127.0.0.1:40674 session established
    [ 878.054892] libceph: client4623 fsid 19b90bca-f1ae-47a6-93dd-0b03ee637949
    [ 878.070287] libceph: mon0 (2)127.0.0.1:40674 session established
    [ 878.070704] libceph: client4626 fsid 19b90bca-f1ae-47a6-93dd-0b03ee637949
    [ 878.264586] libceph: mon0 (2)127.0.0.1:40674 session established
    [ 878.265258] libceph: client4629 fsid 19b90bca-f1ae-47a6-93dd-0b03ee637949
    [ 878.374578] -----------[ cut here ]------------
    [ 878.374586] kernel BUG at net/ceph/messenger.c:1070!
    [ 878.375150] Oops: invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
    [ 878.378145] CPU: 2 UID: 0 PID: 4759 Comm: kworker/2:9 Not tainted 6.13.0-rc5+ #1
    [ 878.378969] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
    [ 878.380167] Workqueue: ceph-msgr ceph_con_workfn
    [ 878.381639] RIP: 0010:ceph_msg_data_cursor_init+0x42/0x50
    [ 878.382152] Code: 89 17 48 8b 46 70 55 48 89 47 08 c7 47 18 00 00 00 00 48 89 e5 e8 de cc ff ff 5d 31 c0 31 d2 31 f6 31 ff c3 cc cc cc cc 0f 0b <0f> 0b 0f 0b 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90
    [ 878.383928] RSP: 0018:ffffb4ffc7cbbd28 EFLAGS: 00010287
    [ 878.384447] RAX: ffffffff82bb9ac0 RBX: ffff981390c2f1f8 RCX: 0000000000000000
    [ 878.385129] RDX: 0000000000009000 RSI: ffff981288232b58 RDI: ffff981390c2f378
    [ 878.385839] RBP: ffffb4ffc7cbbe18 R08: 0000000000000000 R09: 0000000000000000
    [ 878.386539] R10: 0000000000000000 R11: 0000000000000000 R12: ffff981390c2f030
    [ 878.387203] R13: ffff981288232b58 R14: 0000000000000029 R15: 0000000000000001
    [ 878.387877] FS: 0000000000000000(0000) GS:ffff9814b7900000(0000) knlGS:0000000000000000
    [ 878.388663] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 878.389212] CR2: 00005e106a0554e0 CR3: 0000000112bf0001 CR4: 0000000000772ef0
    [ 878.389921] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 878.390620] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 878.391307] PKRU: 55555554
    [ 878.391567] Call Trace:
    [ 878.391807] <TASK>
    [ 878.392021] ? show_regs+0x71/0x90
    [ 878.392391] ? die+0x38/0xa0
    [ 878.392667] ? do_trap+0xdb/0x100
    [ 878.392981] ? do_error_trap+0x75/0xb0
    [ 878.393372] ? ceph_msg_data_cursor_init+0x42/0x50
    [ 878.393842] ? exc_invalid_op+0x53/0x80
    [ 878.394232] ? ceph_msg_data_cursor_init+0x42/0x50
    [ 878.394694] ? asm_exc_invalid_op+0x1b/0x20
    [ 878.395099] ? ceph_msg_data_cursor_init+0x42/0x50
    [ 878.395583] ? ceph_con_v2_try_read+0xd16/0x2220
    [ 878.396027] ? _raw_spin_unlock+0xe/0x40
    [ 878.396428] ? raw_spin_rq_unlock+0x10/0x40
    [ 878.396842] ? finish_task_switch.isra.0+0x97/0x310
    [ 878.397338] ? __schedule+0x44b/0x16b0
    [ 878.397738] ceph_con_workfn+0x326/0x750
    [ 878.398121] process_one_work+0x188/0x3d0
    [ 878.398522] ? __pfx_worker_thread+0x10/0x10
    [ 878.398929] worker_thread+0x2b5/0x3c0
    [ 878.399310] ? __pfx_worker_thread+0x10/0x10
    [ 878.399727] kthread+0xe1/0x120
    [ 878.400031] ? __pfx_kthread+0x10/0x10
    [ 878.400431] ret_from_fork+0x43/0x70
    [ 878.400771] ? __pfx_kthread+0x10/0x10
    [ 878.401127] ret_from_fork_asm+0x1a/0x30
    [ 878.401543] </TASK>
    [ 878.401760] Modules linked in: hctr2 nhpoly1305_avx2 nhpoly1305_sse2 nhpoly1305 chacha_generic chacha_x86_64 libchacha adiantum libpoly1305 essiv authenc mptcp_diag xsk_diag tcp_diag udp_diag raw_diag inet_diag unix_diag af_packet_diag netlink_diag intel_rapl_msr intel_rapl_common intel_uncore_frequency_common skx_edac_common nfit kvm_intel kvm crct10dif_pclmul crc32_pclmul polyval_clmulni polyval_generic ghash_clmulni_intel sha256_ssse3 sha1_ssse3 aesni_intel joydev crypto_simd cryptd rapl input_leds psmouse sch_fq_codel serio_raw bochs i2c_piix4 floppy qemu_fw_cfg i2c_smbus mac_hid pata_acpi msr parport_pc ppdev lp parport efi_pstore ip_tables x_tables
    [ 878.407319] ---[ end trace 0000000000000000 ]---
    [ 878.407775] RIP: 0010:ceph_msg_data_cursor_init+0x42/0x50
    [ 878.408317] Code: 89 17 48 8b 46 70 55 48 89 47 08 c7 47 18 00 00 00 00 48 89 e5 e8 de cc ff ff 5d 31 c0 31 d2 31 f6 31 ff c3 cc cc cc cc 0f 0b <0f> 0b 0f 0b 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90
    [ 878.410087] RSP: 0018:ffffb4ffc7cbbd28 EFLAGS: 00010287
    [ 878.410609] RAX: ffffffff82bb9ac0 RBX: ffff981390c2f1f8 RCX: 0000000000000000
    [ 878.411318] RDX: 0000000000009000 RSI: ffff981288232b58 RDI: ffff981390c2f378
    [ 878.412014] RBP: ffffb4ffc7cbbe18 R08: 0000000000000000 R09: 0000000000000000
    [ 878.412735] R10: 0000000000000000 R11: 0000000000000000 R12: ffff981390c2f030
    [ 878.413438] R13: ffff981288232b58 R14: 0000000000000029 R15: 0000000000000001
    [ 878.414121] FS: 0000000000000000(0000) GS:ffff9814b7900000(0000) knlGS:0000000000000000
    [ 878.414935] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 878.415516] CR2: 00005e106a0554e0 CR3: 0000000112bf0001 CR4: 0000000000772ef0
    [ 878.416211] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 878.416907] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 878.417630] PKRU: 55555554
    
    (gdb) l *ceph_msg_data_cursor_init+0x42
    0xffffffff823b45a2 is in ceph_msg_data_cursor_init (net/ceph/messenger.c:1070).
    1065
    1066 void ceph_msg_data_cursor_init(struct ceph_msg_data_cursor *cursor,
    1067                                struct ceph_msg *msg, size_t length)
    1068 {
    1069        BUG_ON(!length);
    1070        BUG_ON(length > msg->data_length);
    1071        BUG_ON(!msg->num_data_items);
    1072
    1073        cursor->total_resid = length;
    1074        cursor->data = msg->data;
    
    The issue takes place because of this:
    
    [ 202.628853] libceph: net/ceph/messenger_v2.c:2034 prepare_sparse_read_data(): msg->data_length 33792, msg->sparse_read_total 36864
    
    1070        BUG_ON(length > msg->data_length);
    
    The generic/397 test (xfstests) executes such steps:
    (1) create encrypted files and directories;
    (2) access the created files and folders with encryption key;
    (3) access the created files and folders without encryption key.
    
    The issue takes place in this portion of code:
    
        if (IS_ENCRYPTED(inode)) {
                struct page **pages;
                size_t page_off;
    
                err = iov_iter_get_pages_alloc2(&subreq->io_iter, &pages, len,
                                                &page_off);
                if (err < 0) {
                        doutc(cl, "%llx.%llx failed to allocate pages, %d\n",
                              ceph_vinop(inode), err);
                        goto out;
                }
    
                /* should always give us a page-aligned read */
                WARN_ON_ONCE(page_off);
                len = err;
                err = 0;
    
                osd_req_op_extent_osd_data_pages(req, 0, pages, len, 0, false,
                                                 false);
    
    The reason of the issue is that subreq->io_iter.count keeps unaligned
    value of length:
    
    [  347.751182] lib/iov_iter.c:1185 __iov_iter_get_pages_alloc(): maxsize 36864, maxpages 4294967295, start 18446659367320516064
    [  347.752808] lib/iov_iter.c:1196 __iov_iter_get_pages_alloc(): maxsize 33792, maxpages 4294967295, start 18446659367320516064
    [  347.754394] lib/iov_iter.c:1015 iter_folioq_get_pages(): maxsize 33792, maxpages 4294967295, extracted 0, _start_offset 18446659367320516064
    
    This patch simply assigns the aligned value to subreq->io_iter.count
    before calling iov_iter_get_pages_alloc2().
    
    [ idryomov: tag the comment with FIXME to make it clear that it's only
                a workaround for netfslib not coexisting with fscrypt nicely
                (this is also noted in another pre-existing comment) ]
    
    Cc: David Howells <dhowells@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: ee4cdf7ba857 ("netfs: Speed up buffered reading")
    Signed-off-by: Viacheslav Dubeyko <Slava.Dubeyko@ibm.com>
    Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ceph: set superblock s_magic for IMA fsmagic matching [+ + +]
Author: Dennis Marttinen <twelho@welho.tech>
Date:   Thu May 29 17:45:12 2025 +0000

    ceph: set superblock s_magic for IMA fsmagic matching
    
    commit 72386d5245b249f5a0a8fabb881df7ad947b8ea4 upstream.
    
    The CephFS kernel driver forgets to set the filesystem magic signature in
    its superblock. As a result, IMA policy rules based on fsmagic matching do
    not apply as intended. This causes a major performance regression in Talos
    Linux [1] when mounting CephFS volumes, such as when deploying Rook Ceph
    [2]. Talos Linux ships a hardened kernel with the following IMA policy
    (irrelevant lines omitted):
    
    [...]
    dont_measure fsmagic=0xc36400 # CEPH_SUPER_MAGIC
    [...]
    measure func=FILE_CHECK mask=^MAY_READ euid=0
    measure func=FILE_CHECK mask=^MAY_READ uid=0
    [...]
    
    Currently, IMA compares 0xc36400 == 0x0 for CephFS files, resulting in all
    files opened with O_RDONLY or O_RDWR getting measured with SHA512 on every
    open(2):
    
    10 69990c87e8af323d47e2d6ae4... ima-ng sha512:<hash> /data/cephfs/test-file
    
    Since O_WRONLY is rare, this results in an order of magnitude lower
    performance than expected for practically all file operations. Properly
    setting CEPH_SUPER_MAGIC in the CephFS superblock resolves the regression.
    
    Tests performed on a 3x replicated Ceph v19.3.0 cluster across three
    i5-7200U nodes each equipped with one Micron 7400 MAX M.2 disk (BlueStore)
    and Gigabit ethernet, on Talos Linux v1.10.2:
    
    FS-Mark 3.3
    Test: 500 Files, Empty
    Files/s > Higher Is Better
    6.12.27-talos . 16.6  |====
    +twelho patch . 208.4 |====================================================
    
    FS-Mark 3.3
    Test: 500 Files, 1KB Size
    Files/s > Higher Is Better
    6.12.27-talos . 15.6  |=======
    +twelho patch . 118.6 |====================================================
    
    FS-Mark 3.3
    Test: 500 Files, 32 Sub Dirs, 1MB Size
    Files/s > Higher Is Better
    6.12.27-talos . 12.7 |===============
    +twelho patch . 44.7 |=====================================================
    
    IO500 [3] 2fcd6d6 results (benchmarks within variance omitted):
    
    | IO500 benchmark   | 6.12.27-talos  | +twelho patch  | Speedup   |
    |-------------------|----------------|----------------|-----------|
    | mdtest-easy-write | 0.018524 kIOPS | 1.135027 kIOPS | 6027.33 % |
    | mdtest-hard-write | 0.018498 kIOPS | 0.973312 kIOPS | 5161.71 % |
    | ior-easy-read     | 0.064727 GiB/s | 0.155324 GiB/s | 139.97 %  |
    | mdtest-hard-read  | 0.018246 kIOPS | 0.780800 kIOPS | 4179.29 % |
    
    This applies outside of synthetic benchmarks as well, for example, the time
    to rsync a 55 MiB directory with ~12k of mostly small files drops from an
    unusable 10m5s to a reasonable 26s (23x the throughput).
    
    [1]: https://www.talos.dev/
    [2]: https://www.talos.dev/v1.10/kubernetes-guides/configuration/ceph-with-rook/
    [3]: https://github.com/IO500/io500
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Dennis Marttinen <twelho@welho.tech>
    Reviewed-by: Viacheslav Dubeyko <Slava.Dubeyko@ibm.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cgroup,freezer: fix incomplete freezing when attaching tasks [+ + +]
Author: Chen Ridong <chenridong@huawei.com>
Date:   Wed Jun 18 07:32:17 2025 +0000

    cgroup,freezer: fix incomplete freezing when attaching tasks
    
    commit 37fb58a7273726e59f9429c89ade5116083a213d upstream.
    
    An issue was found:
    
            # cd /sys/fs/cgroup/freezer/
            # mkdir test
            # echo FROZEN > test/freezer.state
            # cat test/freezer.state
            FROZEN
            # sleep 1000 &
            [1] 863
            # echo 863 > test/cgroup.procs
            # cat test/freezer.state
            FREEZING
    
    When tasks are migrated to a frozen cgroup, the freezer fails to
    immediately freeze the tasks, causing the cgroup to remain in the
    "FREEZING".
    
    The freeze_task() function is called before clearing the CGROUP_FROZEN
    flag. This causes the freezing() check to incorrectly return false,
    preventing __freeze_task() from being invoked for the migrated task.
    
    To fix this issue, clear the CGROUP_FROZEN state before calling
    freeze_task().
    
    Fixes: f5d39b020809 ("freezer,sched: Rewrite core freezer logic")
    Cc: stable@vger.kernel.org # v6.1+
    Reported-by: Zhong Jiawei <zhongjiawei1@huawei.com>
    Signed-off-by: Chen Ridong <chenridong@huawei.com>
    Acked-by: Michal Koutný <mkoutny@suse.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cifs: deal with the channel loading lag while picking channels [+ + +]
Author: Shyam Prasad N <sprasad@microsoft.com>
Date:   Mon Jun 2 22:37:12 2025 +0530

    cifs: deal with the channel loading lag while picking channels
    
    commit 66d590b828b1fd9fa337047ae58fe1c4c6f43609 upstream.
    
    Our current approach to select a channel for sending requests is this:
    1. iterate all channels to find the min and max queue depth
    2. if min and max are not the same, pick the channel with min depth
    3. if min and max are same, round robin, as all channels are equally loaded
    
    The problem with this approach is that there's a lag between selecting
    a channel and sending the request (that increases the queue depth on the channel).
    While these numbers will eventually catch up, there could be a skew in the
    channel usage, depending on the application's I/O parallelism and the server's
    speed of handling requests.
    
    With sufficient parallelism, this lag can artificially increase the queue depth,
    thereby impacting the performance negatively.
    
    This change will change the step 1 above to start the iteration from the last
    selected channel. This is to reduce the skew in channel usage even in the presence
    of this lag.
    
    Fixes: ea90708d3cf3 ("cifs: use the least loaded channel for sending requests")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

cifs: dns resolution is needed only for primary channel [+ + +]
Author: Shyam Prasad N <sprasad@microsoft.com>
Date:   Mon Jun 2 22:37:16 2025 +0530

    cifs: dns resolution is needed only for primary channel
    
    commit b4f60a053a2534c3e510ba0c1f8727566adf8317 upstream.
    
    When calling cifs_reconnect, before the connection to the
    server is reestablished, the code today does a DNS resolution and
    updates server->dstaddr.
    
    However, this is not necessary for secondary channels. Secondary
    channels use the interface list returned by the server to decide
    which address to connect to. And that happens after tcon is reconnected
    and server interfaces are requested.
    
    Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

cifs: do not disable interface polling on failure [+ + +]
Author: Shyam Prasad N <sprasad@microsoft.com>
Date:   Mon Jun 2 22:37:17 2025 +0530

    cifs: do not disable interface polling on failure
    
    commit 42ca547b13a20e7cbb04fbdf8d5f089ac4bb35b7 upstream.
    
    When a server has multichannel enabled, we keep polling the server
    for interfaces periodically. However, when this query fails, we
    disable the polling. This can be problematic as it takes away the
    chance for the server to start advertizing again.
    
    This change reschedules the delayed work, even if the current call
    failed. That way, multichannel sessions can recover.
    
    Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

cifs: Remove duplicate fattr->cf_dtype assignment from wsl_to_fattr() function [+ + +]
Author: Pali Rohár <pali@kernel.org>
Date:   Sun Jun 8 16:10:33 2025 +0200

    cifs: Remove duplicate fattr->cf_dtype assignment from wsl_to_fattr() function
    
    [ Upstream commit 840738eae94864993a735ab677b9795bb8f3b961 ]
    
    Commit 8bd25b61c5a5 ("smb: client: set correct d_type for reparse DFS/DFSR
    and mount point") deduplicated assignment of fattr->cf_dtype member from
    all places to end of the function cifs_reparse_point_to_fattr(). The only
    one missing place which was not deduplicated is wsl_to_fattr(). Fix it.
    
    Fixes: 8bd25b61c5a5 ("smb: client: set correct d_type for reparse DFS/DFSR and mount point")
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cifs: reset connections for all channels when reconnect requested [+ + +]
Author: Shyam Prasad N <sprasad@microsoft.com>
Date:   Mon Jun 2 22:37:13 2025 +0530

    cifs: reset connections for all channels when reconnect requested
    
    commit 1f396b9bfe39aaf55ea74a7005806164b236653d upstream.
    
    cifs_reconnect can be called with a flag to mark the session as needing
    reconnect too. When this is done, we expect the connections of all
    channels to be reconnected too, which is not happening today.
    
    Without doing this, we have seen bad things happen when primary and
    secondary channels are connected to different servers (in case of cloud
    services like Azure Files SMB).
    
    This change would force all connections to reconnect as well, not just
    the sessions and tcons.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

cifs: serialize other channels when query server interfaces is pending [+ + +]
Author: Shyam Prasad N <sprasad@microsoft.com>
Date:   Mon Jun 2 22:37:15 2025 +0530

    cifs: serialize other channels when query server interfaces is pending
    
    commit b5e3e6e28cf3853566ba5d816f79aba5be579158 upstream.
    
    Today, during smb2_reconnect, session_mutex is released as soon as
    the tcon is reconnected and is in a good state. However, in case
    multichannel is enabled, there is also a query of server interfaces that
    follows. We've seen that this query can race with reconnects of other
    channels, causing them to step on each other with reconnects.
    
    This change extends the hold of session_mutex till after the query of
    server interfaces is complete. In order to avoid recursive smb2_reconnect
    checks during query ioctl, this change also introduces a session flag
    for sessions where such a query is in progress.
    
    Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

cifs: update dstaddr whenever channel iface is updated [+ + +]
Author: Shyam Prasad N <sprasad@microsoft.com>
Date:   Mon Jun 2 22:37:14 2025 +0530

    cifs: update dstaddr whenever channel iface is updated
    
    commit c1846893991f3b4ec8a0cc12219ada153f0814d6 upstream.
    
    When the server interface info changes (more common in clustered
    servers like Azure Files), the per-channel iface gets updated.
    However, this did not update the corresponding dstaddr. As a result
    these channels will still connect (or try connecting) to older addresses.
    
    Fixes: b54034a73baf ("cifs: during reconnect, update interface if necessary")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
clk: meson-g12a: add missing fclk_div2 to spicc [+ + +]
Author: Da Xue <da@libre.computer>
Date:   Mon May 12 10:26:16 2025 -0400

    clk: meson-g12a: add missing fclk_div2 to spicc
    
    commit daf004f87c3520c414992893e2eadd5db5f86a5a upstream.
    
    SPICC is missing fclk_div2, which means fclk_div5 and fclk_div7 indexes
    are wrong on this clock. This causes the spicc module to output sclk at
    2.5x the expected rate when clock index 3 is picked.
    
    Adding the missing fclk_div2 resolves this.
    
    [jbrunet: amended commit description]
    Fixes: a18c8e0b7697 ("clk: meson: g12a: add support for the SPICC SCLK Source clocks")
    Cc: stable@vger.kernel.org # 6.1
    Signed-off-by: Da Xue <da@libre.computer>
    Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Link: https://lore.kernel.org/r/20250512142617.2175291-1-da@libre.computer
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

clk: qcom: gcc-x1e80100: Set FORCE MEM CORE for UFS clocks [+ + +]
Author: Taniya Das <quic_tdas@quicinc.com>
Date:   Mon Apr 14 14:30:41 2025 +0530

    clk: qcom: gcc-x1e80100: Set FORCE MEM CORE for UFS clocks
    
    [ Upstream commit 201bf08ba9e26eeb0a96ba3fd5c026f531b31aed ]
    
    Update the force mem core bit for UFS ICE clock and UFS PHY AXI clock to
    force the core on signal to remain active during halt state of the clk.
    If force mem core bit of the clock is not set, the memories of the
    subsystem will not retain the logic across power states. This is
    required for the MCQ feature of UFS.
    
    Signed-off-by: Taniya Das <quic_tdas@quicinc.com>
    Reviewed-by: Imran Shaik <quic_imrashai@quicinc.com>
    Link: https://lore.kernel.org/r/20250414-gcc_ufs_mem_core-v1-2-67b5529b9b5d@quicinc.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.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>

 
clocksource: Fix the CPUs' choice in the watchdog per CPU verification [+ + +]
Author: Guilherme G. Piccoli <gpiccoli@igalia.com>
Date:   Sun Mar 23 14:36:24 2025 -0300

    clocksource: Fix the CPUs' choice in the watchdog per CPU verification
    
    [ Upstream commit 08d7becc1a6b8c936e25d827becabfe3bff72a36 ]
    
    Right now, if the clocksource watchdog detects a clocksource skew, it might
    perform a per CPU check, for example in the TSC case on x86.  In other
    words: supposing TSC is detected as unstable by the clocksource watchdog
    running at CPU1, as part of marking TSC unstable the kernel will also run a
    check of TSC readings on some CPUs to be sure it is synced between them
    all.
    
    But that check happens only on some CPUs, not all of them; this choice is
    based on the parameter "verify_n_cpus" and in some random cpumask
    calculation. So, the watchdog runs such per CPU checks on up to
    "verify_n_cpus" random CPUs among all online CPUs, with the risk of
    repeating CPUs (that aren't double checked) in the cpumask random
    calculation.
    
    But if "verify_n_cpus" > num_online_cpus(), it should skip the random
    calculation and just go ahead and check the clocksource sync between
    all online CPUs, without the risk of skipping some CPUs due to
    duplicity in the random cpumask calculation.
    
    Tests in a 4 CPU laptop with TSC skew detected led to some cases of the per
    CPU verification skipping some CPU even with verify_n_cpus=8, due to the
    duplicity on random cpumask generation. Skipping the randomization when the
    number of online CPUs is smaller than verify_n_cpus, solves that.
    
    Suggested-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
    Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Paul E. McKenney <paulmck@kernel.org>
    Link: https://lore.kernel.org/all/20250323173857.372390-1-gpiccoli@igalia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
configfs-tsm-report: Fix NULL dereference of tsm_ops [+ + +]
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Wed Apr 30 13:33:31 2025 -0700

    configfs-tsm-report: Fix NULL dereference of tsm_ops
    
    commit fba4ceaa242d2bdf4c04b77bda41d32d02d3925d upstream.
    
    Unlike sysfs, the lifetime of configfs objects is controlled by
    userspace. There is no mechanism for the kernel to find and delete all
    created config-items. Instead, the configfs-tsm-report mechanism has an
    expectation that tsm_unregister() can happen at any time and cause
    established config-item access to start failing.
    
    That expectation is not fully satisfied. While tsm_report_read(),
    tsm_report_{is,is_bin}_visible(), and tsm_report_make_item() safely fail
    if tsm_ops have been unregistered, tsm_report_privlevel_store()
    tsm_report_provider_show() fail to check for ops registration. Add the
    missing checks for tsm_ops having been removed.
    
    Now, in supporting the ability for tsm_unregister() to always succeed,
    it leaves the problem of what to do with lingering config-items. The
    expectation is that the admin that arranges for the ->remove() (unbind)
    of the ${tsm_arch}-guest driver is also responsible for deletion of all
    open config-items. Until that deletion happens, ->probe() (reload /
    bind) of the ${tsm_arch}-guest driver fails.
    
    This allows for emergency shutdown / revocation of attestation
    interfaces, and requires coordinated restart.
    
    Fixes: 70e6f7e2b985 ("configfs-tsm: Introduce a shared ABI for attestation reports")
    Cc: stable@vger.kernel.org
    Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
    Cc: Steven Price <steven.price@arm.com>
    Cc: Sami Mujawar <sami.mujawar@arm.com>
    Cc: Borislav Petkov (AMD) <bp@alien8.de>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
    Reported-by: Cedric Xing <cedric.xing@intel.com>
    Reviewed-by: Kai Huang <kai.huang@intel.com>
    Link: https://patch.msgid.link/20250430203331.1177062-1-dan.j.williams@intel.com
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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/amd-pstate: Add missing NULL ptr check in amd_pstate_update [+ + +]
Author: Dhananjay Ugwekar <dhananjay.ugwekar@amd.com>
Date:   Wed Feb 5 11:25:21 2025 +0000

    cpufreq/amd-pstate: Add missing NULL ptr check in amd_pstate_update
    
    commit 426db24d4db2e4f0d6720aeb7795eafcb9e82640 upstream.
    
    Check if policy is NULL before dereferencing it in amd_pstate_update.
    
    Fixes: e8f555daacd3 ("cpufreq/amd-pstate: fix setting policy current frequency value")
    Signed-off-by: Dhananjay Ugwekar <dhananjay.ugwekar@amd.com>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Reviewed-by: Gautham R. Shenoy <gautham.shenoy@amd.com>
    Link: https://lore.kernel.org/r/20250205112523.201101-11-dhananjay.ugwekar@amd.com
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    [Minor context change fixed.]
    Signed-off-by: Wenshan Lan <jetlan9@163.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cpufreq: scmi: Skip SCMI devices that aren't used by the CPUs [+ + +]
Author: Mike Tipton <quic_mdtipton@quicinc.com>
Date:   Wed May 14 20:53:12 2025 -0700

    cpufreq: scmi: Skip SCMI devices that aren't used by the CPUs
    
    [ Upstream commit 6c9bb86922728c7a4cceb99f131e00dd87514f20 ]
    
    Currently, all SCMI devices with performance domains attempt to register
    a cpufreq driver, even if their performance domains aren't used to
    control the CPUs. The cpufreq framework only supports registering a
    single driver, so only the first device will succeed. And if that device
    isn't used for the CPUs, then cpufreq will scale the wrong domains.
    
    To avoid this, return early from scmi_cpufreq_probe() if the probing
    SCMI device isn't referenced by the CPU device phandles.
    
    This keeps the existing assumption that all CPUs are controlled by a
    single SCMI device.
    
    Signed-off-by: Mike Tipton <quic_mdtipton@quicinc.com>
    Reviewed-by: Peng Fan <peng.fan@nxp.com>
    Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
    Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
    Tested-by: Cristian Marussi <cristian.marussi@arm.com>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
crypto: marvell/cesa - Do not chain submitted requests [+ + +]
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Thu May 8 13:22:16 2025 +0800

    crypto: marvell/cesa - Do not chain submitted requests
    
    commit 0413bcf0fc460a68a2a7a8354aee833293d7d693 upstream.
    
    This driver tries to chain requests together before submitting them
    to hardware in order to reduce completion interrupts.
    
    However, it even extends chains that have already been submitted
    to hardware.  This is dangerous because there is no way of knowing
    whether the hardware has already read the DMA memory in question
    or not.
    
    Fix this by splitting the chain list into two.  One for submitted
    requests and one for requests that have not yet been submitted.
    Only extend the latter.
    
    Reported-by: Klaus Kudielka <klaus.kudielka@gmail.com>
    Fixes: 85030c5168f1 ("crypto: marvell - Add support for chaining crypto requests in TDMA mode")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

crypto: qat - add shutdown handler to qat_420xx [+ + +]
Author: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Date:   Wed Mar 26 15:59:47 2025 +0000

    crypto: qat - add shutdown handler to qat_420xx
    
    commit 097143f23a1164bfd1b6f70279d229be44da2e30 upstream.
    
    During a warm reset via kexec, the system bypasses the driver removal
    sequence, meaning that the remove() callback is not invoked.
    If a QAT device is not shutdown properly, the device driver will fail to
    load in a newly rebooted kernel.
    
    This might result in output like the following after the kexec reboot:
    
        420xx 0000:01:00.0: Failed to power up the device
        420xx 0000:01:00.0: Failed to initialize device
        420xx 0000:01:00.0: Resetting device qat_dev0
        420xx 0000:01:00.0: probe with driver 420xx failed with error -14
    
    Implement the shutdown() handler that hooks into the reboot notifier
    list. This brings down the QAT device and ensures it is shut down
    properly.
    
    Cc: <stable@vger.kernel.org>
    Fixes: fcf60f4bcf54 ("crypto: qat - add support for 420xx devices")
    Reviewed-by: Ahsan Atta <ahsan.atta@intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

crypto: qat - add shutdown handler to qat_4xxx [+ + +]
Author: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Date:   Wed Mar 26 15:59:46 2025 +0000

    crypto: qat - add shutdown handler to qat_4xxx
    
    commit 845bc952024dbf482c7434daeac66f764642d52d upstream.
    
    During a warm reset via kexec, the system bypasses the driver removal
    sequence, meaning that the remove() callback is not invoked.
    If a QAT device is not shutdown properly, the device driver will fail to
    load in a newly rebooted kernel.
    
    This might result in output like the following after the kexec reboot:
    
        4xxx 0000:01:00.0: Failed to power up the device
        4xxx 0000:01:00.0: Failed to initialize device
        4xxx 0000:01:00.0: Resetting device qat_dev0
        4xxx 0000:01:00.0: probe with driver 4xxx failed with error -14
    
    Implement the shutdown() handler that hooks into the reboot notifier
    list. This brings down the QAT device and ensures it is shut down
    properly.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 8c8268166e83 ("crypto: qat - add qat_4xxx driver")
    Link: https://lore.kernel.org/all/Z-DGQrhRj9niR9iZ@gondor.apana.org.au/
    Reported-by: Randy Wright <rwright@hpe.com>
    Closes: https://issues.redhat.com/browse/RHEL-84366
    Reviewed-by: Ahsan Atta <ahsan.atta@intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

crypto: qat - add shutdown handler to qat_c3xxx [+ + +]
Author: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Date:   Wed Mar 26 15:59:53 2025 +0000

    crypto: qat - add shutdown handler to qat_c3xxx
    
    commit 71e0cc1eab584d6f95526a5e8c69ec666ca33e1b upstream.
    
    During a warm reset via kexec, the system bypasses the driver removal
    sequence, meaning that the remove() callback is not invoked.
    If a QAT device is not shutdown properly, the device driver will fail to
    load in a newly rebooted kernel.
    
    This might result in output like the following after the kexec reboot:
    
        QAT: AE0 is inactive!!
        QAT: failed to get device out of reset
        c3xxx 0000:3f:00.0: qat_hal_clr_reset error
        c3xxx 0000:3f:00.0: Failed to init the AEs
        c3xxx 0000:3f:00.0: Failed to initialise Acceleration Engine
        c3xxx 0000:3f:00.0: Resetting device qat_dev0
        c3xxx 0000:3f:00.0: probe with driver c3xxx failed with error -14
    
    Implement the shutdown() handler that hooks into the reboot notifier
    list. This brings down the QAT device and ensures it is shut down
    properly.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 890c55f4dc0e ("crypto: qat - add support for c3xxx accel type")
    Reviewed-by: Ahsan Atta <ahsan.atta@intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

crypto: qat - add shutdown handler to qat_c62x [+ + +]
Author: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Date:   Wed Mar 26 15:59:51 2025 +0000

    crypto: qat - add shutdown handler to qat_c62x
    
    commit a9a6e9279b2998e2610c70b0dfc80a234f97c76c upstream.
    
    During a warm reset via kexec, the system bypasses the driver removal
    sequence, meaning that the remove() callback is not invoked.
    If a QAT device is not shutdown properly, the device driver will fail to
    load in a newly rebooted kernel.
    
    This might result in output like the following after the kexec reboot:
    
        QAT: AE0 is inactive!!
        QAT: failed to get device out of reset
        c6xx 0000:3f:00.0: qat_hal_clr_reset error
        c6xx 0000:3f:00.0: Failed to init the AEs
        c6xx 0000:3f:00.0: Failed to initialise Acceleration Engine
        c6xx 0000:3f:00.0: Resetting device qat_dev0
        c6xx 0000:3f:00.0: probe with driver c6xx failed with error -14
    
    Implement the shutdown() handler that hooks into the reboot notifier
    list. This brings down the QAT device and ensures it is shut down
    properly.
    
    Cc: <stable@vger.kernel.org>
    Fixes: a6dabee6c8ba ("crypto: qat - add support for c62x accel type")
    Reviewed-by: Ahsan Atta <ahsan.atta@intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

crypto: qat - add shutdown handler to qat_dh895xcc [+ + +]
Author: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Date:   Wed Mar 26 15:59:49 2025 +0000

    crypto: qat - add shutdown handler to qat_dh895xcc
    
    commit 2c4e8b228733bfbcaf49408fdf94d220f6eb78fc upstream.
    
    During a warm reset via kexec, the system bypasses the driver removal
    sequence, meaning that the remove() callback is not invoked.
    If a QAT device is not shutdown properly, the device driver will fail to
    load in a newly rebooted kernel.
    
    This might result in output like the following after the kexec reboot:
    
        QAT: AE0 is inactive!!
        QAT: failed to get device out of reset
        dh895xcc 0000:3f:00.0: qat_hal_clr_reset error
        dh895xcc 0000:3f:00.0: Failed to init the AEs
        dh895xcc 0000:3f:00.0: Failed to initialise Acceleration Engine
        dh895xcc 0000:3f:00.0: Resetting device qat_dev0
        dh895xcc 0000:3f:00.0: probe with driver dh895xcc failed with error -14
    
    Implement the shutdown() handler that hooks into the reboot notifier
    list. This brings down the QAT device and ensures it is shut down
    properly.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 7afa232e76ce ("crypto: qat - Intel(R) QAT DH895xcc accelerator")
    Reviewed-by: Ahsan Atta <ahsan.atta@intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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>

 
dm-verity: fix a memory leak if some arguments are specified multiple times [+ + +]
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue Jun 3 18:55:50 2025 +0200

    dm-verity: fix a memory leak if some arguments are specified multiple times
    
    commit 66be40a14e496689e1f0add50118408e22c96169 upstream.
    
    If some of the arguments "check_at_most_once", "ignore_zero_blocks",
    "use_fec_from_device", "root_hash_sig_key_desc" were specified more than
    once on the target line, a memory leak would happen.
    
    This commit fixes the memory leak. It also fixes error handling in
    verity_verify_sig_parse_opt_args.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dm: lock limits when reading them [+ + +]
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue Apr 22 21:17:36 2025 +0200

    dm: lock limits when reading them
    
    commit abb4cf2f4c1c1b637cad04d726f2e13fd3051e03 upstream.
    
    Lock queue limits when reading them, so that we don't read halfway
    modified values.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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>

 
Drivers: hv: Allocate interrupt and monitor pages aligned to system page boundary [+ + +]
Author: Long Li <longli@microsoft.com>
Date:   Mon May 5 17:56:33 2025 -0700

    Drivers: hv: Allocate interrupt and monitor pages aligned to system page boundary
    
    commit 09eea7ad0b8e973dcf5ed49902838e5d68177f8e upstream.
    
    There are use cases that interrupt and monitor pages are mapped to
    user-mode through UIO, so they need to be system page aligned. Some
    Hyper-V allocation APIs introduced earlier broke those requirements.
    
    Fix this by using page allocation functions directly for interrupt
    and monitor pages.
    
    Cc: stable@vger.kernel.org
    Fixes: ca48739e59df ("Drivers: hv: vmbus: Move Hyper-V page allocator to arch neutral code")
    Signed-off-by: Long Li <longli@microsoft.com>
    Reviewed-by: Michael Kelley <mhklinux@outlook.com>
    Link: https://lore.kernel.org/r/1746492997-4599-2-git-send-email-longli@linuxonhyperv.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Message-ID: <1746492997-4599-2-git-send-email-longli@linuxonhyperv.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdgpu: read back register after written for VCN v4.0.5 [+ + +]
Author: David (Ming Qiang) Wu <David.Wu3@amd.com>
Date:   Mon May 12 15:14:43 2025 -0400

    drm/amdgpu: read back register after written for VCN v4.0.5
    
    commit ee7360fc27d6045510f8fe459b5649b2af27811a upstream.
    
    On VCN v4.0.5 there is a race condition where the WPTR is not
    updated after starting from idle when doorbell is used. Adding
    register read-back after written at function end is to ensure
    all register writes are done before they can be used.
    
    Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12528
    Signed-off-by: David (Ming Qiang) Wu <David.Wu3@amd.com>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Tested-by: Mario Limonciello <mario.limonciello@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Ruijing Dong <ruijing.dong@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 07c9db090b86e5211188e1b351303fbc673378cf)
    Cc: stable@vger.kernel.org
    (cherry picked from commit ee7360fc27d6045510f8fe459b5649b2af27811a)
    Hand modified for contextual changes where there is a for loop
    in 6.12 that was dropped later on.
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/i915/pmu: Fix build error with GCOV and AutoFDO enabled [+ + +]
Author: Tzung-Bi Shih <tzungbi@kernel.org>
Date:   Thu Jun 12 08:30:23 2025 +0000

    drm/i915/pmu: Fix build error with GCOV and AutoFDO enabled
    
    [ Upstream commit a7137b1825b535eb7258b25beeb0d5425e0037d2 ]
    
    i915_pmu.c may fail to build with GCOV and AutoFDO enabled.
    
    ../drivers/gpu/drm/i915/i915_pmu.c:116:3: error: call to '__compiletime_assert_487' declared with 'error' attribute: BUILD_BUG_ON failed: bit > BITS_PER_TYPE(typeof_member(struct i915_pmu, enable)) - 1
      116 |                 BUILD_BUG_ON(bit >
          |                 ^
    
    Here is a way to reproduce the issue:
    $ git checkout v6.15
    $ mkdir build
    $ ./scripts/kconfig/merge_config.sh -O build -n -m <(cat <<EOF
    CONFIG_DRM=y
    CONFIG_PCI=y
    CONFIG_DRM_I915=y
    
    CONFIG_PERF_EVENTS=y
    
    CONFIG_DEBUG_FS=y
    CONFIG_GCOV_KERNEL=y
    CONFIG_GCOV_PROFILE_ALL=y
    
    CONFIG_AUTOFDO_CLANG=y
    EOF
    )
    $ PATH=${PATH}:${HOME}/llvm-20.1.5-x86_64/bin make LLVM=1 O=build \
           olddefconfig
    $ PATH=${PATH}:${HOME}/llvm-20.1.5-x86_64/bin make LLVM=1 O=build \
           CLANG_AUTOFDO_PROFILE=...PATH_TO_SOME_AFDO_PROFILE... \
           drivers/gpu/drm/i915/i915_pmu.o
    
    Although not super sure what happened, by reviewing the code, it should
    depend on `__builtin_constant_p(bit)` directly instead of assuming
    `__builtin_constant_p(config)` makes `bit` a builtin constant.
    
    Also fix a nit, to reuse the `bit` local variable.
    
    Fixes: a644fde77ff7 ("drm/i915/pmu: Change bitmask of enabled events to u32")
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
    Signed-off-by: Tvrtko Ursulin <tursulin@ursulin.net>
    Link: https://lore.kernel.org/r/20250612083023.562585-1-tzungbi@kernel.org
    (cherry picked from commit 686d773186bf72b739bab7e12eb8665d914676ee)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/a7xx: Call CP_RESET_CONTEXT_STATE [+ + +]
Author: Connor Abbott <cwabbott0@gmail.com>
Date:   Tue May 20 18:28:06 2025 -0400

    drm/msm/a7xx: Call CP_RESET_CONTEXT_STATE
    
    [ Upstream commit 2b520c6104f34e3a548525173c38ebca4402cac3 ]
    
    Calling this packet is necessary when we switch contexts because there
    are various pieces of state used by userspace to synchronize between BR
    and BV that are persistent across submits and we need to make sure that
    they are in a "safe" state when switching contexts. Otherwise a
    userspace submission in one context could cause another context to
    function incorrectly and hang, effectively a denial of service (although
    without leaking data). This was missed during initial a7xx bringup.
    
    Fixes: af66706accdf ("drm/msm/a6xx: Add skeleton A7xx support")
    Signed-off-by: Connor Abbott <cwabbott0@gmail.com>
    Patchwork: https://patchwork.freedesktop.org/patch/654924/
    Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/disp: Correct porch timing for SDM845 [+ + +]
Author: James A. MacInnes <james.a.macinnes@gmail.com>
Date:   Wed Feb 12 15:03:47 2025 -0800

    drm/msm/disp: Correct porch timing for SDM845
    
    [ Upstream commit 146e87f3e11de0dfa091ff87e34b4bc6eec761a4 ]
    
    Type-C DisplayPort inoperable due to incorrect porch settings.
    - Re-used wide_bus_en as flag to prevent porch shifting
    
    Fixes: c943b4948b58 ("drm/msm/dp: add displayPort driver support")
    Signed-off-by: James A. MacInnes <james.a.macinnes@gmail.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Patchwork: https://patchwork.freedesktop.org/patch/636945/
    Link: https://lore.kernel.org/r/20250212-sdm845_dp-v2-2-4954e51458f4@gmail.com
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/dsi/dsi_phy_10nm: Fix missing initial VCO rate [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Tue May 20 13:13:26 2025 +0200

    drm/msm/dsi/dsi_phy_10nm: Fix missing initial VCO rate
    
    [ Upstream commit 8a48e35becb214743214f5504e726c3ec131cd6d ]
    
    Driver unconditionally saves current state on first init in
    dsi_pll_10nm_init(), but does not save the VCO rate, only some of the
    divider registers.  The state is then restored during probe/enable via
    msm_dsi_phy_enable() -> msm_dsi_phy_pll_restore_state() ->
    dsi_10nm_pll_restore_state().
    
    Restoring calls dsi_pll_10nm_vco_set_rate() with
    pll_10nm->vco_current_rate=0, which basically overwrites existing rate of
    VCO and messes with clock hierarchy, by setting frequency to 0 to clock
    tree.  This makes anyway little sense - VCO rate was not saved, so
    should not be restored.
    
    If PLL was not configured configure it to minimum rate to avoid glitches
    and configuring entire in clock hierarchy to 0 Hz.
    
    Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/sz4kbwy5nwsebgf64ia7uq4ee7wbsa5uy3xmlqwcstsbntzcov@ew3dcyjdzmi2/
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Fixes: a4ccc37693a2 ("drm/msm/dsi_pll_10nm: restore VCO rate during
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Patchwork: https://patchwork.freedesktop.org/patch/654796/
    Link: https://lore.kernel.org/r/20250520111325.92352-2-krzysztof.kozlowski@linaro.org
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm: Fix CP_RESET_CONTEXT_STATE bitfield names [+ + +]
Author: Connor Abbott <cwabbott0@gmail.com>
Date:   Tue May 20 18:28:05 2025 -0400

    drm/msm: Fix CP_RESET_CONTEXT_STATE bitfield names
    
    [ Upstream commit b1c9e797ad37d188675505b66a3a4bbeea5d9560 ]
    
    Based on kgsl.
    
    Fixes: af66706accdf ("drm/msm/a6xx: Add skeleton A7xx support")
    Signed-off-by: Connor Abbott <cwabbott0@gmail.com>
    Patchwork: https://patchwork.freedesktop.org/patch/654922/
    Signed-off-by: Rob Clark <robin.clark@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/ssd130x: fix ssd132x_clear_screen() columns [+ + +]
Author: John Keeping <jkeeping@inmusicbrands.com>
Date:   Wed Jun 11 12:13:06 2025 +0100

    drm/ssd130x: fix ssd132x_clear_screen() columns
    
    [ Upstream commit e479da4054875c4cc53a7fb956ebff03d2dac939 ]
    
    The number of columns relates to the width, not the height.  Use the
    correct variable.
    
    Signed-off-by: John Keeping <jkeeping@inmusicbrands.com>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Fixes: fdd591e00a9c ("drm/ssd130x: Add support for the SSD132x OLED controller family")
    Link: https://lore.kernel.org/r/20250611111307.1814876-1-jkeeping@inmusicbrands.com
    Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/v3d: Avoid NULL pointer dereference in `v3d_job_update_stats()` [+ + +]
Author: Maíra Canal <mcanal@igalia.com>
Date:   Mon Jun 2 12:14:02 2025 -0300

    drm/v3d: Avoid NULL pointer dereference in `v3d_job_update_stats()`
    
    commit e1bc3a13bd775791cca0bb144d977b00f3598042 upstream.
    
    The following kernel Oops was recently reported by Mesa CI:
    
    [  800.139824] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000588
    [  800.148619] Mem abort info:
    [  800.151402]   ESR = 0x0000000096000005
    [  800.155141]   EC = 0x25: DABT (current EL), IL = 32 bits
    [  800.160444]   SET = 0, FnV = 0
    [  800.163488]   EA = 0, S1PTW = 0
    [  800.166619]   FSC = 0x05: level 1 translation fault
    [  800.171487] Data abort info:
    [  800.174357]   ISV = 0, ISS = 0x00000005, ISS2 = 0x00000000
    [  800.179832]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
    [  800.184873]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
    [  800.190176] user pgtable: 4k pages, 39-bit VAs, pgdp=00000001014c2000
    [  800.196607] [0000000000000588] pgd=0000000000000000, p4d=0000000000000000, pud=0000000000000000
    [  800.205305] Internal error: Oops: 0000000096000005 [#1] PREEMPT SMP
    [  800.211564] Modules linked in: vc4 snd_soc_hdmi_codec drm_display_helper v3d cec gpu_sched drm_dma_helper drm_shmem_helper drm_kms_helper drm drm_panel_orientation_quirks snd_soc_core snd_compress snd_pcm_dmaengine snd_pcm i2c_brcmstb snd_timer snd backlight
    [  800.234448] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.12.25+rpt-rpi-v8 #1  Debian 1:6.12.25-1+rpt1
    [  800.244182] Hardware name: Raspberry Pi 4 Model B Rev 1.4 (DT)
    [  800.250005] pstate: 600000c5 (nZCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [  800.256959] pc : v3d_job_update_stats+0x60/0x130 [v3d]
    [  800.262112] lr : v3d_job_update_stats+0x48/0x130 [v3d]
    [  800.267251] sp : ffffffc080003e60
    [  800.270555] x29: ffffffc080003e60 x28: ffffffd842784980 x27: 0224012000000000
    [  800.277687] x26: ffffffd84277f630 x25: ffffff81012fd800 x24: 0000000000000020
    [  800.284818] x23: ffffff8040238b08 x22: 0000000000000570 x21: 0000000000000158
    [  800.291948] x20: 0000000000000000 x19: ffffff8040238000 x18: 0000000000000000
    [  800.299078] x17: ffffffa8c1bd2000 x16: ffffffc080000000 x15: 0000000000000000
    [  800.306208] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
    [  800.313338] x11: 0000000000000040 x10: 0000000000001a40 x9 : ffffffd83b39757c
    [  800.320468] x8 : ffffffd842786420 x7 : 7fffffffffffffff x6 : 0000000000ef32b0
    [  800.327598] x5 : 00ffffffffffffff x4 : 0000000000000015 x3 : ffffffd842784980
    [  800.334728] x2 : 0000000000000004 x1 : 0000000000010002 x0 : 000000ba4c0ca382
    [  800.341859] Call trace:
    [  800.344294]  v3d_job_update_stats+0x60/0x130 [v3d]
    [  800.349086]  v3d_irq+0x124/0x2e0 [v3d]
    [  800.352835]  __handle_irq_event_percpu+0x58/0x218
    [  800.357539]  handle_irq_event+0x54/0xb8
    [  800.361369]  handle_fasteoi_irq+0xac/0x240
    [  800.365458]  handle_irq_desc+0x48/0x68
    [  800.369200]  generic_handle_domain_irq+0x24/0x38
    [  800.373810]  gic_handle_irq+0x48/0xd8
    [  800.377464]  call_on_irq_stack+0x24/0x58
    [  800.381379]  do_interrupt_handler+0x88/0x98
    [  800.385554]  el1_interrupt+0x34/0x68
    [  800.389123]  el1h_64_irq_handler+0x18/0x28
    [  800.393211]  el1h_64_irq+0x64/0x68
    [  800.396603]  default_idle_call+0x3c/0x168
    [  800.400606]  do_idle+0x1fc/0x230
    [  800.403827]  cpu_startup_entry+0x40/0x50
    [  800.407742]  rest_init+0xe4/0xf0
    [  800.410962]  start_kernel+0x5e8/0x790
    [  800.414616]  __primary_switched+0x80/0x90
    [  800.418622] Code: 8b170277 8b160296 11000421 b9000861 (b9401ac1)
    [  800.424707] ---[ end trace 0000000000000000 ]---
    [  800.457313] ---[ end Kernel panic - not syncing: Oops: Fatal exception in interrupt ]---
    
    This issue happens when the file descriptor is closed before the jobs
    submitted by it are completed. When the job completes, we update the
    global GPU stats and the per-fd GPU stats, which are exposed through
    fdinfo. If the file descriptor was closed, then the struct `v3d_file_priv`
    and its stats were already freed and we can't update the per-fd stats.
    
    Therefore, if the file descriptor was already closed, don't update the
    per-fd GPU stats, only update the global ones.
    
    Cc: stable@vger.kernel.org # v6.12+
    Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
    Link: https://lore.kernel.org/r/20250602151451.10161-1-mcanal@igalia.com
    Signed-off-by: Maíra Canal <mcanal@igalia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/xe/bmg: Update Wa_16023588340 [+ + +]
Author: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Date:   Thu Jun 12 00:09:01 2025 -0700

    drm/xe/bmg: Update Wa_16023588340
    
    [ Upstream commit 16c1241b08751a67cd7a0221ea9f82b0b02806f4 ]
    
    This allows for additional L2 caching modes.
    
    Fixes: 01570b446939 ("drm/xe/bmg: implement Wa_16023588340")
    Cc: Matthew Auld <matthew.auld@intel.com>
    Reviewed-by: Matthew Auld <matthew.auld@intel.com>
    Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
    Link: https://lore.kernel.org/r/20250612-wa-14022085890-v4-2-94ba5dcc1e30@intel.com
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    (cherry picked from commit 6ab42fa03d4c88a0ddf5e56e62794853b198e7bf)
    Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/xe/gt: Update handling of xe_force_wake_get return [+ + +]
Author: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Date:   Mon Oct 14 13:25:44 2024 +0530

    drm/xe/gt: Update handling of xe_force_wake_get return
    
    [ Upstream commit 30d105577a3319094f8ae5ff1ceea670f1931487 ]
    
    xe_force_wake_get() now returns the reference count-incremented domain
    mask. If it fails for individual domains, the return value will always
    be 0. However, for XE_FORCEWAKE_ALL, it may return a non-zero value even
    in the event of failure. Use helper xe_force_wake_ref_has_domain to verify
    all domains are initialized or not. Update the return handling of
    xe_force_wake_get() to reflect this behavior, and ensure that the return
    value is passed as input to xe_force_wake_put().
    
    v3
    - return xe_wakeref_t instead of int in xe_force_wake_get()
    - xe_force_wake_put() error doesn't need to be checked. It internally
    WARNS on domain ack failure.
    
    v4
    - Rebase fix
    
    v5
    - return unsigned int for xe_force_wake_get()
    - remove redundant XE_WARN_ON()
    
    v6
    - use helper for checking all initialized domains are awake or not.
    
    v7
    - Fix commit message
    
    v9
    - Remove redundant WARN_ON (Badal)
    
    Cc: Badal Nilawar <badal.nilawar@intel.com>
    Cc: Matthew Brost <matthew.brost@intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: Lucas De Marchi <lucas.demarchi@intel.com>
    Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
    Reviewed-by: Nirmoy Das <nirmoy.das@intel.com>
    Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241014075601.2324382-10-himal.prasad.ghimiray@intel.com
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Stable-dep-of: 16c1241b0875 ("drm/xe/bmg: Update Wa_16023588340")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/xe: Wire up device shutdown handler [+ + +]
Author: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Date:   Thu Sep 5 17:00:51 2024 +0200

    drm/xe: Wire up device shutdown handler
    
    [ Upstream commit 501d799a47e2b83b4e41d5306c2266ea5c100a08 ]
    
    The system is turning off, and we should probably put the device
    in a safe power state. We don't need to evict VRAM or suspend running
    jobs to a safe state, as the device is rebooted anyway.
    
    This does not imply the system is necessarily reset, as we can
    kexec into a new kernel. Without shutting down, things like
    USB Type-C may mysteriously start failing.
    
    References: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3500
    Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    [mlankhorst: Add !xe_driver_flr_disabled assert]
    Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240905150052.174895-4-maarten.lankhorst@linux.intel.com
    Stable-dep-of: 16c1241b0875 ("drm/xe/bmg: Update Wa_16023588340")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dt-bindings: i2c: nvidia,tegra20-i2c: Specify the required properties [+ + +]
Author: Akhil R <akhilrajeev@nvidia.com>
Date:   Tue Jun 3 21:00:20 2025 +0530

    dt-bindings: i2c: nvidia,tegra20-i2c: Specify the required properties
    
    commit 903cc7096db22f889d48e2cee8840709ce04fdac upstream.
    
    Specify the properties which are essential and which are not for the
    Tegra I2C driver to function correctly. This was not added correctly when
    the TXT binding was converted to yaml. All the existing DT nodes have
    these properties already and hence this does not break the ABI.
    
    dmas and dma-names which were specified as a must in the TXT binding
    is now made optional since the driver can work in PIO mode if dmas are
    missing.
    
    Fixes: f10a9b722f80 ("dt-bindings: i2c: tegra: Convert to json-schema”)
    Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
    Cc: <stable@vger.kernel.org> # v5.17+
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Andi Shyti <andi@smida.it>
    Link: https://lore.kernel.org/r/20250603153022.39434-1-akhilrajeev@nvidia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dummycon: Trigger redraw when switching consoles with deferred takeover [+ + +]
Author: Thomas Zimmermann <tzimmermann@suse.de>
Date:   Tue May 20 09:14:00 2025 +0200

    dummycon: Trigger redraw when switching consoles with deferred takeover
    
    commit 03bcbbb3995ba5df43af9aba45334e35f2dfe27b upstream.
    
    Signal vt subsystem to redraw console when switching to dummycon
    with deferred takeover enabled. Makes the console switch to fbcon
    and displays the available output.
    
    With deferred takeover enabled, dummycon acts as the placeholder
    until the first output to the console happens. At that point, fbcon
    takes over. If the output happens while dummycon is not active, it
    cannot inform fbcon. This is the case if the vt subsystem runs in
    graphics mode.
    
    A typical graphical boot starts plymouth, a display manager and a
    compositor; all while leaving out dummycon. Switching to a text-mode
    console leaves the console with dummycon even if a getty terminal
    has been started.
    
    Returning true from dummycon's con_switch helper signals the vt
    subsystem to redraw the screen. If there's output available dummycon's
    con_putc{s} helpers trigger deferred takeover of fbcon, which sets a
    display mode and displays the output. If no output is available,
    dummycon remains active.
    
    v2:
    - make the comment slightly more verbose (Javier)
    
    Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
    Reported-by: Andrei Borzenkov <arvidjaar@gmail.com>
    Closes: https://bugzilla.suse.com/show_bug.cgi?id=1242191
    Tested-by: Andrei Borzenkov <arvidjaar@gmail.com>
    Acked-by: Javier Martinez Canillas <javierm@redhat.com>
    Fixes: 83d83bebf401 ("console/fbcon: Add support for deferred console takeover")
    Cc: Hans de Goede <hdegoede@redhat.com>
    Cc: linux-fbdev@vger.kernel.org
    Cc: dri-devel@lists.freedesktop.org
    Cc: <stable@vger.kernel.org> # v4.19+
    Link: https://lore.kernel.org/r/20250520071418.8462-1-tzimmermann@suse.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
e1000e: set fixed clock frequency indication for Nahum 11 and Nahum 13 [+ + +]
Author: Vitaly Lifshits <vitaly.lifshits@intel.com>
Date:   Sun May 25 11:38:43 2025 +0300

    e1000e: set fixed clock frequency indication for Nahum 11 and Nahum 13
    
    [ Upstream commit 688a0d61b2d7427189c4eb036ce485d8fc957cbb ]
    
    On some systems with Nahum 11 and Nahum 13 the value of the XTAL clock in
    the software STRAP is incorrect. This causes the PTP timer to run at the
    wrong rate and can lead to synchronization issues.
    
    The STRAP value is configured by the system firmware, and a firmware
    update is not always possible. Since the XTAL clock on these systems
    always runs at 38.4MHz, the driver may ignore the STRAP and just set
    the correct value.
    
    Fixes: cc23f4f0b6b9 ("e1000e: Add support for Meteor Lake")
    Signed-off-by: Vitaly Lifshits <vitaly.lifshits@intel.com>
    Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com>
    Reviewed-by: Gil Fine <gil.fine@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.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/amd64: Correct number of UMCs for family 19h models 70h-7fh [+ + +]
Author: Avadhut Naik <avadhut.naik@amd.com>
Date:   Fri Jun 13 00:51:35 2025 +0000

    EDAC/amd64: Correct number of UMCs for family 19h models 70h-7fh
    
    commit b2e673ae53ef4b943f68585207a5f21cfc9a0714 upstream.
    
    AMD's Family 19h-based Models 70h-7fh support 4 unified memory controllers
    (UMC) per processor die.
    
    The amd64_edac driver, however, assumes only 2 UMCs are supported since
    max_mcs variable for the models has not been explicitly set to 4. The same
    results in incomplete or incorrect memory information being logged to dmesg by
    the module during initialization in some instances.
    
    Fixes: 6c79e42169fe ("EDAC/amd64: Add support for ECC on family 19h model 60h-7Fh")
    Closes: https://lore.kernel.org/all/27dc093f-ce27-4c71-9e81-786150a040b6@reox.at/
    Reported-by: reox <mailinglist@reox.at>
    Signed-off-by: Avadhut Naik <avadhut.naik@amd.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/20250613005233.2330627-1-avadhut.naik@amd.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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>

 
eth: bnxt: fix out-of-range access of vnic_info array [+ + +]
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Sun Mar 16 02:58:37 2025 +0000

    eth: bnxt: fix out-of-range access of vnic_info array
    
    [ Upstream commit 919f9f497dbcee75d487400e8f9815b74a6a37df ]
    
    The bnxt_queue_{start | stop}() access vnic_info as much as allocated,
    which indicates bp->nr_vnics.
    So, it should not reach bp->vnic_info[bp->nr_vnics].
    
    Fixes: 661958552eda ("eth: bnxt: do not use BNXT_VNIC_NTUPLE unconditionally in queue restart logic")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Reviewed-by: Michael Chan <michael.chan@broadcom.com>
    Link: https://patch.msgid.link/20250316025837.939527-1-ap420073@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Stable-dep-of: 5dacc94c6fe6 ("bnxt_en: Update MRU and RSS table of RSS contexts on queue reset")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

eth: fbnic: avoid double free when failing to DMA-map FW msg [+ + +]
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Jun 16 12:55:10 2025 -0700

    eth: fbnic: avoid double free when failing to DMA-map FW msg
    
    [ Upstream commit 5bd1bafd4474ee26f504b41aba11f3e2a1175b88 ]
    
    The semantics are that caller of fbnic_mbx_map_msg() retains
    the ownership of the message on error. All existing callers
    dutifully free the page.
    
    Fixes: da3cde08209e ("eth: fbnic: Add FW communication mechanism")
    Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://patch.msgid.link/20250616195510.225819-1-kuba@kernel.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ext4: ensure i_size is smaller than maxbytes [+ + +]
Author: Zhang Yi <yi.zhang@huawei.com>
Date:   Tue May 6 09:20:09 2025 +0800

    ext4: ensure i_size is smaller than maxbytes
    
    commit 1a77a028a392fab66dd637cdfac3f888450d00af upstream.
    
    The inode i_size cannot be larger than maxbytes, check it while loading
    inode from the disk.
    
    Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Baokun Li <libaokun1@huawei.com>
    Link: https://patch.msgid.link/20250506012009.3896990-4-yi.zhang@huaweicloud.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: factor out ext4_get_maxbytes() [+ + +]
Author: Zhang Yi <yi.zhang@huawei.com>
Date:   Tue May 6 09:20:08 2025 +0800

    ext4: factor out ext4_get_maxbytes()
    
    commit dbe27f06fa38b9bfc598f8864ae1c5d5831d9992 upstream.
    
    There are several locations that get the correct maxbytes value based on
    the inode's block type. It would be beneficial to extract a common
    helper function to make the code more clear.
    
    Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Baokun Li <libaokun1@huawei.com>
    Link: https://patch.msgid.link/20250506012009.3896990-3-yi.zhang@huaweicloud.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    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>

ext4: only dirty folios when data journaling regular files [+ + +]
Author: Brian Foster <bfoster@redhat.com>
Date:   Fri May 16 13:38:00 2025 -0400

    ext4: only dirty folios when data journaling regular files
    
    commit e26268ff1dcae5662c1b96c35f18cfa6ab73d9de upstream.
    
    fstest generic/388 occasionally reproduces a crash that looks as
    follows:
    
    BUG: kernel NULL pointer dereference, address: 0000000000000000
    ...
    Call Trace:
     <TASK>
     ext4_block_zero_page_range+0x30c/0x380 [ext4]
     ext4_truncate+0x436/0x440 [ext4]
     ext4_process_orphan+0x5d/0x110 [ext4]
     ext4_orphan_cleanup+0x124/0x4f0 [ext4]
     ext4_fill_super+0x262d/0x3110 [ext4]
     get_tree_bdev_flags+0x132/0x1d0
     vfs_get_tree+0x26/0xd0
     vfs_cmd_create+0x59/0xe0
     __do_sys_fsconfig+0x4ed/0x6b0
     do_syscall_64+0x82/0x170
     ...
    
    This occurs when processing a symlink inode from the orphan list. The
    partial block zeroing code in the truncate path calls
    ext4_dirty_journalled_data() -> folio_mark_dirty(). The latter calls
    mapping->a_ops->dirty_folio(), but symlink inodes are not assigned an
    a_ops vector in ext4, hence the crash.
    
    To avoid this problem, update the ext4_dirty_journalled_data() helper to
    only mark the folio dirty on regular files (for which a_ops is
    assigned). This also matches the journaling logic in the ext4_symlink()
    creation path, where ext4_handle_dirty_metadata() is called directly.
    
    Fixes: d84c9ebdac1e ("ext4: Mark pages with journalled data dirty")
    Signed-off-by: Brian Foster <bfoster@redhat.com>
    Link: https://patch.msgid.link/20250516173800.175577-1-bfoster@redhat.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
f2fs: fix to bail out in get_new_segment() [+ + +]
Author: Chao Yu <chao@kernel.org>
Date:   Tue Apr 22 19:56:38 2025 +0800

    f2fs: fix to bail out in get_new_segment()
    
    [ Upstream commit bb5eb8a5b222fa5092f60d5555867a05ebc3bdf2 ]
    
    ------------[ cut here ]------------
    WARNING: CPU: 3 PID: 579 at fs/f2fs/segment.c:2832 new_curseg+0x5e8/0x6dc
    pc : new_curseg+0x5e8/0x6dc
    Call trace:
     new_curseg+0x5e8/0x6dc
     f2fs_allocate_data_block+0xa54/0xe28
     do_write_page+0x6c/0x194
     f2fs_do_write_node_page+0x38/0x78
     __write_node_page+0x248/0x6d4
     f2fs_sync_node_pages+0x524/0x72c
     f2fs_write_checkpoint+0x4bc/0x9b0
     __checkpoint_and_complete_reqs+0x80/0x244
     issue_checkpoint_thread+0x8c/0xec
     kthread+0x114/0x1bc
     ret_from_fork+0x10/0x20
    
    get_new_segment() detects inconsistent status in between free_segmap
    and free_secmap, let's record such error into super block, and bail
    out get_new_segment() instead of continue using the segment.
    
    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 do sanity check on ino and xnid [+ + +]
Author: Chao Yu <chao@kernel.org>
Date:   Mon Mar 24 13:33:39 2025 +0800

    f2fs: fix to do sanity check on ino and xnid
    
    commit 061cf3a84bde038708eb0f1d065b31b7c2456533 upstream.
    
    syzbot reported a f2fs bug as below:
    
    INFO: task syz-executor140:5308 blocked for more than 143 seconds.
          Not tainted 6.14.0-rc7-syzkaller-00069-g81e4f8d68c66 #0
    "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    task:syz-executor140 state:D stack:24016 pid:5308  tgid:5308  ppid:5306   task_flags:0x400140 flags:0x00000006
    Call Trace:
     <TASK>
     context_switch kernel/sched/core.c:5378 [inline]
     __schedule+0x190e/0x4c90 kernel/sched/core.c:6765
     __schedule_loop kernel/sched/core.c:6842 [inline]
     schedule+0x14b/0x320 kernel/sched/core.c:6857
     io_schedule+0x8d/0x110 kernel/sched/core.c:7690
     folio_wait_bit_common+0x839/0xee0 mm/filemap.c:1317
     __folio_lock mm/filemap.c:1664 [inline]
     folio_lock include/linux/pagemap.h:1163 [inline]
     __filemap_get_folio+0x147/0xb40 mm/filemap.c:1917
     pagecache_get_page+0x2c/0x130 mm/folio-compat.c:87
     find_get_page_flags include/linux/pagemap.h:842 [inline]
     f2fs_grab_cache_page+0x2b/0x320 fs/f2fs/f2fs.h:2776
     __get_node_page+0x131/0x11b0 fs/f2fs/node.c:1463
     read_xattr_block+0xfb/0x190 fs/f2fs/xattr.c:306
     lookup_all_xattrs fs/f2fs/xattr.c:355 [inline]
     f2fs_getxattr+0x676/0xf70 fs/f2fs/xattr.c:533
     __f2fs_get_acl+0x52/0x870 fs/f2fs/acl.c:179
     f2fs_acl_create fs/f2fs/acl.c:375 [inline]
     f2fs_init_acl+0xd7/0x9b0 fs/f2fs/acl.c:418
     f2fs_init_inode_metadata+0xa0f/0x1050 fs/f2fs/dir.c:539
     f2fs_add_inline_entry+0x448/0x860 fs/f2fs/inline.c:666
     f2fs_add_dentry+0xba/0x1e0 fs/f2fs/dir.c:765
     f2fs_do_add_link+0x28c/0x3a0 fs/f2fs/dir.c:808
     f2fs_add_link fs/f2fs/f2fs.h:3616 [inline]
     f2fs_mknod+0x2e8/0x5b0 fs/f2fs/namei.c:766
     vfs_mknod+0x36d/0x3b0 fs/namei.c:4191
     unix_bind_bsd net/unix/af_unix.c:1286 [inline]
     unix_bind+0x563/0xe30 net/unix/af_unix.c:1379
     __sys_bind_socket net/socket.c:1817 [inline]
     __sys_bind+0x1e4/0x290 net/socket.c:1848
     __do_sys_bind net/socket.c:1853 [inline]
     __se_sys_bind net/socket.c:1851 [inline]
     __x64_sys_bind+0x7a/0x90 net/socket.c:1851
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Let's dump and check metadata of corrupted inode, it shows its xattr_nid
    is the same to its i_ino.
    
    dump.f2fs -i 3 chaseyu.img.raw
    i_xattr_nid                             [0x       3 : 3]
    
    So that, during mknod in the corrupted directory, it tries to get and
    lock inode page twice, result in deadlock.
    
    - f2fs_mknod
     - f2fs_add_inline_entry
      - f2fs_get_inode_page --- lock dir's inode page
       - f2fs_init_acl
        - f2fs_acl_create(dir,..)
         - __f2fs_get_acl
          - f2fs_getxattr
           - lookup_all_xattrs
            - __get_node_page --- try to lock dir's inode page
    
    In order to fix this, let's add sanity check on ino and xnid.
    
    Cc: stable@vger.kernel.org
    Reported-by: syzbot+cc448dcdc7ae0b4e4ffa@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/linux-f2fs-devel/67e06150.050a0220.21942d.0005.GAE@google.com
    Signed-off-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

f2fs: fix to do sanity check on sit_bitmap_size [+ + +]
Author: Chao Yu <chao@kernel.org>
Date:   Mon Apr 14 18:55:20 2025 +0800

    f2fs: fix to do sanity check on sit_bitmap_size
    
    commit 5db0d252c64e91ba1929c70112352e85dc5751e7 upstream.
    
    w/ below testcase, resize will generate a corrupted image which
    contains inconsistent metadata, so when mounting such image, it
    will trigger kernel panic:
    
    touch img
    truncate -s $((512*1024*1024*1024)) img
    mkfs.f2fs -f img $((256*1024*1024))
    resize.f2fs -s -i img -t $((1024*1024*1024))
    mount img /mnt/f2fs
    
    ------------[ cut here ]------------
    kernel BUG at fs/f2fs/segment.h:863!
    Oops: invalid opcode: 0000 [#1] SMP PTI
    CPU: 11 UID: 0 PID: 3922 Comm: mount Not tainted 6.15.0-rc1+ #191 PREEMPT(voluntary)
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    RIP: 0010:f2fs_ra_meta_pages+0x47c/0x490
    
    Call Trace:
     f2fs_build_segment_manager+0x11c3/0x2600
     f2fs_fill_super+0xe97/0x2840
     mount_bdev+0xf4/0x140
     legacy_get_tree+0x2b/0x50
     vfs_get_tree+0x29/0xd0
     path_mount+0x487/0xaf0
     __x64_sys_mount+0x116/0x150
     do_syscall_64+0x82/0x190
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    RIP: 0033:0x7fdbfde1bcfe
    
    The reaseon is:
    
    sit_i->bitmap_size is 192, so size of sit bitmap is 192*8=1536, at maximum
    there are 1536 sit blocks, however MAIN_SEGS is 261893, so that sit_blk_cnt
    is 4762, build_sit_entries() -> current_sit_addr() tries to access
    out-of-boundary in sit_bitmap at offset from [1536, 4762), once sit_bitmap
    and sit_bitmap_mirror is not the same, it will trigger f2fs_bug_on().
    
    Let's add sanity check in f2fs_sanity_check_ckpt() to avoid panic.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

f2fs: fix to set atomic write status more clear [+ + +]
Author: Chao Yu <chao@kernel.org>
Date:   Thu Mar 27 13:56:06 2025 +0800

    f2fs: fix to set atomic write status more clear
    
    [ Upstream commit db03c20c0850dc8d2bcabfa54b9438f7d666c863 ]
    
    1. After we start atomic write in a database file, before committing
    all data, we'd better not set inode w/ vfs dirty status to avoid
    redundant updates, instead, we only set inode w/ atomic dirty status.
    
    2. After we commit all data, before committing metadata, we need to
    clear atomic dirty status, and set vfs dirty status to allow vfs flush
    dirty inode.
    
    Cc: Daeho Jeong <daehojeong@google.com>
    Reported-by: Zhiguo Niu <zhiguo.niu@unisoc.com>
    Signed-off-by: Chao Yu <chao@kernel.org>
    Reviewed-by: Daeho Jeong <daehojeong@google.com>
    Reviewed-by: Zhiguo Niu <zhiguo.niu@unisoc.com>
    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 vmalloc instead of kvmalloc in .init_{,de}compress_ctx [+ + +]
Author: Chao Yu <chao@kernel.org>
Date:   Tue May 13 13:57:20 2025 +0800

    f2fs: use vmalloc instead of kvmalloc in .init_{,de}compress_ctx
    
    [ Upstream commit 70dd07c888451503c3e93b6821e10d1ea1ec9930 ]
    
    .init_{,de}compress_ctx uses kvmalloc() to alloc memory, it will try
    to allocate physically continuous page first, it may cause more memory
    allocation pressure, let's use vmalloc instead to mitigate it.
    
    [Test]
    cd /data/local/tmp
    touch file
    f2fs_io setflags compression file
    f2fs_io getflags file
    for i in $(seq 1 10); do sync; echo 3 > /proc/sys/vm/drop_caches;\
    time f2fs_io write 512 0 4096 zero osync file; truncate -s 0 file;\
    done
    
    [Result]
    Before          After           Delta
    21.243          21.694          -2.12%
    
    For compression, we recommend to use ioctl to compress file data in
    background for workaround.
    
    For decompression, only zstd will be affected.
    
    Signed-off-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fbcon: Make sure modelist not set on unregistered console [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Fri May 9 13:06:47 2025 -0700

    fbcon: Make sure modelist not set on unregistered console
    
    [ Upstream commit cedc1b63394a866bf8663a3e40f4546f1d28c8d8 ]
    
    It looks like attempting to write to the "store_modes" sysfs node will
    run afoul of unregistered consoles:
    
    UBSAN: array-index-out-of-bounds in drivers/video/fbdev/core/fbcon.c:122:28
    index -1 is out of range for type 'fb_info *[32]'
    ...
     fbcon_info_from_console+0x192/0x1a0 drivers/video/fbdev/core/fbcon.c:122
     fbcon_new_modelist+0xbf/0x2d0 drivers/video/fbdev/core/fbcon.c:3048
     fb_new_modelist+0x328/0x440 drivers/video/fbdev/core/fbmem.c:673
     store_modes+0x1c9/0x3e0 drivers/video/fbdev/core/fbsysfs.c:113
     dev_attr_store+0x55/0x80 drivers/base/core.c:2439
    
    static struct fb_info *fbcon_registered_fb[FB_MAX];
    ...
    static signed char con2fb_map[MAX_NR_CONSOLES];
    ...
    static struct fb_info *fbcon_info_from_console(int console)
    ...
            return fbcon_registered_fb[con2fb_map[console]];
    
    If con2fb_map contains a -1 things go wrong here. Instead, return NULL,
    as callers of fbcon_info_from_console() are trying to compare against
    existing "info" pointers, so error handling should kick in correctly.
    
    Reported-by: syzbot+a7d4444e7b6e743572f7@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/679d0a8f.050a0220.163cdc.000c.GAE@google.com/
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

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

    fbdev: Fix do_register_framebuffer to prevent null-ptr-deref in fb_videomode_to_var
    
    commit 17186f1f90d34fa701e4f14e6818305151637b9e upstream.
    
    If fb_add_videomode() in do_register_framebuffer() fails to allocate
    memory for fb_videomode, it will later 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
    ================================================================
    
    Even though fbcon_init() checks beforehand if fb_match_mode() in
    var_to_display() fails, it can not prevent the panic because fbcon_init()
    does not return error code. Considering this and the comment in the code
    about fb_match_mode() returning NULL - "This should not happen" - it is
    better to prevent registering the fb_info if its mode was not set
    successfully. Also move fb_add_videomode() closer to the beginning of
    do_register_framebuffer() to avoid having to do the cleanup on fail.
    
    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>

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: arm_scmi: Ensure that the message-id supports fastchannel [+ + +]
Author: Sibi Sankar <quic_sibis@quicinc.com>
Date:   Tue Apr 29 15:11:06 2025 +0100

    firmware: arm_scmi: Ensure that the message-id supports fastchannel
    
    commit 94a263f981a3fa3d93f65c31e0fed0756736be43 upstream.
    
    Currently the perf and powercap protocol relies on the protocol domain
    attributes, which just ensures that one fastchannel per domain, before
    instantiating fastchannels for all possible message-ids. Fix this by
    ensuring that each message-id supports fastchannel before initialization.
    
    Logs:
      |  scmi: Failed to get FC for protocol 13 [MSG_ID:6 / RES_ID:0] - ret:-95. Using regular messaging
      |  scmi: Failed to get FC for protocol 13 [MSG_ID:6 / RES_ID:1] - ret:-95. Using regular messaging
      |  scmi: Failed to get FC for protocol 13 [MSG_ID:6 / RES_ID:2] - ret:-95. Using regular messaging
    
    CC: stable@vger.kernel.org
    Reported-by: Johan Hovold <johan+linaro@kernel.org>
    Closes: https://lore.kernel.org/lkml/ZoQjAWse2YxwyRJv@hovoldconsulting.com/
    Fixes: 6f9ea4dabd2d ("firmware: arm_scmi: Generalize the fast channel support")
    Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
    Tested-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-by: Sibi Sankar <quic_sibis@quicinc.com>
    [Cristian: Modified the condition checked to establish support or not]
    Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
    Message-Id: <20250429141108.406045-2-cristian.marussi@arm.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fs/nfs/read: fix double-unlock bug in nfs_return_empty_folio() [+ + +]
Author: Max Kellermann <max.kellermann@ionos.com>
Date:   Wed Apr 23 15:22:50 2025 +0200

    fs/nfs/read: fix double-unlock bug in nfs_return_empty_folio()
    
    commit 4c10fa44bc5f700e2ea21de2fbae520ba21f19d9 upstream.
    
    Sometimes, when a file was read while it was being truncated by
    another NFS client, the kernel could deadlock because folio_unlock()
    was called twice, and the second call would XOR back the `PG_locked`
    flag.
    
    Most of the time (depending on the timing of the truncation), nobody
    notices the problem because folio_unlock() gets called three times,
    which flips `PG_locked` back off:
    
     1. vfs_read, nfs_read_folio, ... nfs_read_add_folio,
        nfs_return_empty_folio
     2. vfs_read, nfs_read_folio, ... netfs_read_collection,
        netfs_unlock_abandoned_read_pages
     3. vfs_read, ... nfs_do_read_folio, nfs_read_add_folio,
        nfs_return_empty_folio
    
    The problem is that nfs_read_add_folio() is not supposed to unlock the
    folio if fscache is enabled, and a nfs_netfs_folio_unlock() check is
    missing in nfs_return_empty_folio().
    
    Rarely this leads to a warning in netfs_read_collection():
    
     ------------[ cut here ]------------
     R=0000031c: folio 10 is not locked
     WARNING: CPU: 0 PID: 29 at fs/netfs/read_collect.c:133 netfs_read_collection+0x7c0/0xf00
     [...]
     Workqueue: events_unbound netfs_read_collection_worker
     RIP: 0010:netfs_read_collection+0x7c0/0xf00
     [...]
     Call Trace:
      <TASK>
      netfs_read_collection_worker+0x67/0x80
      process_one_work+0x12e/0x2c0
      worker_thread+0x295/0x3a0
    
    Most of the time, however, processes just get stuck forever in
    folio_wait_bit_common(), waiting for `PG_locked` to disappear, which
    never happens because nobody is really holding the folio lock.
    
    Fixes: 000dbe0bec05 ("NFS: Convert buffered read paths to use netfs when fscache is enabled")
    Cc: stable@vger.kernel.org
    Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
    Reviewed-by: Dave Wysochanski <dwysocha@redhat.com>
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fs/xattr.c: fix simple_xattr_list() [+ + +]
Author: Stephen Smalley <stephen.smalley.work@gmail.com>
Date:   Thu Jun 5 12:51:16 2025 -0400

    fs/xattr.c: fix simple_xattr_list()
    
    [ Upstream commit 800d0b9b6a8b1b354637b4194cc167ad1ce2bdd3 ]
    
    commit 8b0ba61df5a1 ("fs/xattr.c: fix simple_xattr_list to always
    include security.* xattrs") failed to reset err after the call to
    security_inode_listsecurity(), which returns the length of the
    returned xattr name. This results in simple_xattr_list() incorrectly
    returning this length even if a POSIX acl is also set on the inode.
    
    Reported-by: Collin Funk <collin.funk1@gmail.com>
    Closes: https://lore.kernel.org/selinux/8734ceal7q.fsf@gmail.com/
    Reported-by: Paul Eggert <eggert@cs.ucla.edu>
    Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2369561
    Fixes: 8b0ba61df5a1 ("fs/xattr.c: fix simple_xattr_list to always include security.* xattrs")
    
    Signed-off-by: Stephen Smalley <stephen.smalley.work@gmail.com>
    Link: https://lore.kernel.org/20250605165116.2063-1-stephen.smalley.work@gmail.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: 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>

 
gpio: mlxbf3: only get IRQ for device instance 0 [+ + +]
Author: David Thompson <davthompson@nvidia.com>
Date:   Fri Jun 13 16:34:43 2025 +0000

    gpio: mlxbf3: only get IRQ for device instance 0
    
    [ Upstream commit 10af0273a35ab4513ca1546644b8c853044da134 ]
    
    The gpio-mlxbf3 driver interfaces with two GPIO controllers,
    device instance 0 and 1. There is a single IRQ resource shared
    between the two controllers, and it is found in the ACPI table for
    device instance 0.  The driver should not attempt to get an IRQ
    resource when probing device instance 1, otherwise the following
    error is logged:
      mlxbf3_gpio MLNXBF33:01: error -ENXIO: IRQ index 0 not found
    
    Signed-off-by: David Thompson <davthompson@nvidia.com>
    Reviewed-by: Shravan Kumar Ramani <shravankr@nvidia.com>
    Fixes: cd33f216d241 ("gpio: mlxbf3: Add gpio driver support")
    Link: https://lore.kernel.org/r/20250613163443.1065217-1-davthompson@nvidia.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gpio: pca953x: fix wrong error probe return value [+ + +]
Author: Sascha Hauer <s.hauer@pengutronix.de>
Date:   Mon Jun 16 15:45:03 2025 +0200

    gpio: pca953x: fix wrong error probe return value
    
    [ Upstream commit 0a1db19f66c0960eb00e1f2ccd40708b6747f5b1 ]
    
    The second argument to dev_err_probe() is the error value. Pass the
    return value of devm_request_threaded_irq() there instead of the irq
    number.
    
    Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
    Fixes: c47f7ff0fe61 ("gpio: pca953x: Utilise dev_err_probe() where it makes sense")
    Link: https://lore.kernel.org/r/20250616134503.1201138-1-s.hauer@pengutronix.de
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gpiolib: of: Add polarity quirk for s5m8767 [+ + +]
Author: Peng Fan <peng.fan@nxp.com>
Date:   Thu Mar 27 08:49:44 2025 +0800

    gpiolib: of: Add polarity quirk for s5m8767
    
    [ Upstream commit 4e310626eb4df52a31a142c1360fead0fcbd3793 ]
    
    This is prepare patch for switching s5m8767 regulator driver to
    use GPIO descriptor. DTS for exynos5250 spring incorrectly specifies
    "active low" polarity for the DVS and DS line. But per datasheet,
    they are actually active high. So add polarity quirk for it.
    
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20250327004945.563765-1-peng.fan@oss.nxp.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hid-asus: check ROG Ally MCU version and warn [+ + +]
Author: Luke D. Jones <luke@ljones.dev>
Date:   Sun Mar 23 15:34:20 2025 +1300

    hid-asus: check ROG Ally MCU version and warn
    
    [ Upstream commit 00e005c952f74f50a3f86af96f56877be4685e14 ]
    
    ASUS have fixed suspend issues arising from a flag not being cleared in
    the MCU FW in both the ROG Ally 1 and the ROG Ally X.
    
    Implement a check and a warning to encourage users to update the FW to
    a minimum supported version.
    
    Signed-off-by: Luke D. Jones <luke@ljones.dev>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://lore.kernel.org/r/20250323023421.78012-2-luke@ljones.dev
    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>

 
hwmon: (ftsteutates) Fix TOCTOU race in fts_read() [+ + +]
Author: Gui-Dong Han <hanguidong02@gmail.com>
Date:   Fri Jun 6 07:16:40 2025 +0000

    hwmon: (ftsteutates) Fix TOCTOU race in fts_read()
    
    commit 14c9ede9ca4cd078ad76a6ab9617b81074eb58bf upstream.
    
    In the fts_read() function, when handling hwmon_pwm_auto_channels_temp,
    the code accesses the shared variable data->fan_source[channel] twice
    without holding any locks. It is first checked against
    FTS_FAN_SOURCE_INVALID, and if the check passes, it is read again
    when used as an argument to the BIT() macro.
    
    This creates a Time-of-Check to Time-of-Use (TOCTOU) race condition.
    Another thread executing fts_update_device() can modify the value of
    data->fan_source[channel] between the check and its use. If the value
    is changed to FTS_FAN_SOURCE_INVALID (0xff) during this window, the
    BIT() macro will be called with a large shift value (BIT(255)).
    A bit shift by a value greater than or equal to the type width is
    undefined behavior and can lead to a crash or incorrect values being
    returned to userspace.
    
    Fix this by reading data->fan_source[channel] into a local variable
    once, eliminating the race condition. Additionally, add a bounds check
    to ensure the value is less than BITS_PER_LONG before passing it to
    the BIT() macro, making the code more robust against undefined behavior.
    
    This possible bug was found by an experimental static analysis tool
    developed by our team.
    
    Fixes: 1c5759d8ce05 ("hwmon: (ftsteutates) Replace fanX_source with pwmX_auto_channels_temp")
    Cc: stable@vger.kernel.org
    Signed-off-by: Gui-Dong Han <hanguidong02@gmail.com>
    Link: https://lore.kernel.org/r/20250606071640.501262-1-hanguidong02@gmail.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

hwmon: (ltc4282) avoid repeated register write [+ + +]
Author: Nuno Sá <nuno.sa@analog.com>
Date:   Wed Jun 11 17:26:12 2025 +0100

    hwmon: (ltc4282) avoid repeated register write
    
    [ Upstream commit c25892b7a1744355e16281cd24a9b59ec15ec974 ]
    
    The fault enabled bits were being mistankenly enabled twice in case the FW
    property is present. Remove one of the writes.
    
    Fixes: cbc29538dbf7 ("hwmon: Add driver for LTC4282")
    Signed-off-by: Nuno Sá <nuno.sa@analog.com>
    Link: https://lore.kernel.org/r/20250611-fix-ltc4282-repetead-write-v1-1-fe46edd08cf1@analog.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.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>

hwmon: (occ) Rework attribute registration for stack usage [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Jun 10 11:23:06 2025 +0200

    hwmon: (occ) Rework attribute registration for stack usage
    
    [ Upstream commit 744c2fe950e936c4d62430de899d6253424200ed ]
    
    clang produces an output with excessive stack usage when building the
    occ_setup_sensor_attrs() function, apparently the result of having
    a lot of struct literals and building with the -fno-strict-overflow
    option that leads clang to skip some optimization in case the 'attr'
    pointer overruns:
    
    drivers/hwmon/occ/common.c:775:12: error: stack frame size (1392) exceeds limit (1280) in 'occ_setup_sensor_attrs' [-Werror,-Wframe-larger-than]
    
    Replace the custom macros for initializing the attributes with a
    simpler function call that does not run into this corner case.
    
    Link: https://godbolt.org/z/Wf1Yx76a5
    Fixes: 54076cb3b5ff ("hwmon (occ): Add sensor attributes and register hwmon device")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20250610092315.2640039-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>

i2c: npcm: Add clock toggle recovery [+ + +]
Author: Tali Perry <tali.perry1@gmail.com>
Date:   Fri Mar 28 19:32:50 2025 +0000

    i2c: npcm: Add clock toggle recovery
    
    [ Upstream commit 38010591a0fc3203f1cee45b01ab358b72dd9ab2 ]
    
    During init of the bus, the module checks that the bus is idle.
    If one of the lines are stuck try to recover them first before failing.
    Sometimes SDA and SCL are low if improper reset occurs (e.g., reboot).
    
    Signed-off-by: Tali Perry <tali.perry1@gmail.com>
    Signed-off-by: Mohammed Elbadry <mohammed.0.elbadry@gmail.com>
    Reviewed-by: Mukesh Kumar Savaliya <quic_msavaliy@quicinc.com>
    Link: https://lore.kernel.org/r/20250328193252.1570811-1-mohammed.0.elbadry@gmail.com
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i2c: tegra: check msg length in SMBUS block read [+ + +]
Author: Akhil R <akhilrajeev@nvidia.com>
Date:   Thu Apr 24 11:03:20 2025 +0530

    i2c: tegra: check msg length in SMBUS block read
    
    [ Upstream commit a6e04f05ce0b070ab39d5775580e65c7d943da0b ]
    
    For SMBUS block read, do not continue to read if the message length
    passed from the device is '0' or greater than the maximum allowed bytes.
    
    Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
    Acked-by: Thierry Reding <treding@nvidia.com>
    Link: https://lore.kernel.org/r/20250424053320.19211-1-akhilrajeev@nvidia.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>

 
ice: fix check for existing switch rule [+ + +]
Author: Mateusz Pacuszka <mateuszx.pacuszka@intel.com>
Date:   Fri Feb 14 09:50:35 2025 +0100

    ice: fix check for existing switch rule
    
    [ Upstream commit a808691df39b52cd9db861b118e88e18b63e2299 ]
    
    In case the rule already exists and another VSI wants to subscribe to it
    new VSI list is being created and both VSIs are moved to it.
    Currently, the check for already existing VSI with the same rule is done
    based on fdw_id.hw_vsi_id, which applies only to LOOKUP_RX flag.
    Change it to vsi_handle. This is software VSI ID, but it can be applied
    here, because vsi_map itself is also based on it.
    
    Additionally change return status in case the VSI already exists in the
    VSI map to "Already exists". Such case should be handled by the caller.
    
    Signed-off-by: Mateusz Pacuszka <mateuszx.pacuszka@intel.com>
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    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: fix eswitch code memory leak in reset scenario [+ + +]
Author: Grzegorz Nitka <grzegorz.nitka@intel.com>
Date:   Fri May 16 15:09:07 2025 +0200

    ice: fix eswitch code memory leak in reset scenario
    
    [ Upstream commit 48c8b214974dc55283bd5f12e3a483b27c403bbc ]
    
    Add simple eswitch mode checker in attaching VF procedure and allocate
    required port representor memory structures only in switchdev mode.
    The reset flows triggers VF (if present) detach/attach procedure.
    It might involve VF port representor(s) re-creation if the device is
    configured is switchdev mode (not legacy one).
    The memory was blindly allocated in current implementation,
    regardless of the mode and not freed if in legacy mode.
    
    Kmemeleak trace:
    unreferenced object (percpu) 0x7e3bce5b888458 (size 40):
      comm "bash", pid 1784, jiffies 4295743894
      hex dump (first 32 bytes on cpu 45):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace (crc 0):
        pcpu_alloc_noprof+0x4c4/0x7c0
        ice_repr_create+0x66/0x130 [ice]
        ice_repr_create_vf+0x22/0x70 [ice]
        ice_eswitch_attach_vf+0x1b/0xa0 [ice]
        ice_reset_all_vfs+0x1dd/0x2f0 [ice]
        ice_pci_err_resume+0x3b/0xb0 [ice]
        pci_reset_function+0x8f/0x120
        reset_store+0x56/0xa0
        kernfs_fop_write_iter+0x120/0x1b0
        vfs_write+0x31c/0x430
        ksys_write+0x61/0xd0
        do_syscall_64+0x5b/0x180
        entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    Testing hints (ethX is PF netdev):
    - create at least one VF
        echo 1 > /sys/class/net/ethX/device/sriov_numvfs
    - trigger the reset
        echo 1 > /sys/class/net/ethX/device/reset
    
    Fixes: 415db8399d06 ("ice: make representor code generic")
    Signed-off-by: Grzegorz Nitka <grzegorz.nitka@intel.com>
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    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>

 
iio: accel: fxls8962af: Fix temperature calculation [+ + +]
Author: Sean Nyekjaer <sean@geanix.com>
Date:   Mon May 5 21:20:07 2025 +0200

    iio: accel: fxls8962af: Fix temperature calculation
    
    commit 16038474e3a0263572f36326ef85057aaf341814 upstream.
    
    According to spec temperature should be returned in milli degrees Celsius.
    Add in_temp_scale to calculate from Celsius to milli Celsius.
    
    Fixes: a3e0b51884ee ("iio: accel: add support for FXLS8962AF/FXLS8964AF accelerometers")
    Cc: stable@vger.kernel.org
    Reviewed-by: Marcelo Schmitt <marcelo.schmitt1@gmail.com>
    Signed-off-by: Sean Nyekjaer <sean@geanix.com>
    Link: https://patch.msgid.link/20250505-fxls-v4-1-a38652e21738@geanix.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: accel: fxls8962af: Fix temperature scan element sign [+ + +]
Author: Sean Nyekjaer <sean@geanix.com>
Date:   Mon May 5 21:20:08 2025 +0200

    iio: accel: fxls8962af: Fix temperature scan element sign
    
    commit 9c78317b42e7c32523c91099859bc4721e9f75dd upstream.
    
    Mark the temperature element signed, data read from the TEMP_OUT register
    is in two's complement format.
    This will avoid the temperature being mishandled and miss displayed.
    
    Fixes: a3e0b51884ee ("iio: accel: add support for FXLS8962AF/FXLS8964AF accelerometers")
    Suggested-by: Marcelo Schmitt <marcelo.schmitt1@gmail.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Marcelo Schmitt <marcelo.schmitt1@gmail.com>
    Signed-off-by: Sean Nyekjaer <sean@geanix.com>
    Link: https://patch.msgid.link/20250505-fxls-v4-2-a38652e21738@geanix.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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>

iio: adc: ad7944: mask high bits on direct read [+ + +]
Author: David Lechner <dlechner@baylibre.com>
Date:   Mon May 5 13:28:40 2025 -0500

    iio: adc: ad7944: mask high bits on direct read
    
    commit 7cdfbc0113d087348b8e65dd79276d0f57b89a10 upstream.
    
    Apply a mask to the raw value received over the SPI bus for unsigned
    direct reads. As we found recently, SPI controllers may not set unused
    bits to 0 when reading with bits_per_word != {8,16,32}. The ad7944 uses
    bits_per_word of 14 and 18, so we need to mask the value to be sure we
    returning the correct value to userspace during a direct read.
    
    Fixes: d1efcf8871db ("iio: adc: ad7944: add driver for AD7944/AD7985/AD7986")
    Signed-off-by: David Lechner <dlechner@baylibre.com>
    Reviewed-by: Nuno Sá <nuno.sa@analog.com>
    Link: https://patch.msgid.link/20250505-iio-adc-ad7944-max-high-bits-on-direct-read-v1-1-b173facceefe@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>

iio: adc: ti-ads1298: Kconfig: add kfifo dependency to fix module build [+ + +]
Author: Arthur-Prince <r2.arthur.prince@gmail.com>
Date:   Wed Apr 30 16:07:37 2025 -0300

    iio: adc: ti-ads1298: Kconfig: add kfifo dependency to fix module build
    
    commit 3c5dfea39a245b2dad869db24e2830aa299b1cf2 upstream.
    
    Add dependency to Kconfig’s ti-ads1298 because compiling it as a module
    failed with an undefined kfifo symbol.
    
    Fixes: 00ef7708fa60 ("iio: adc: ti-ads1298: Add driver")
    Signed-off-by: Arthur-Prince <r2.arthur.prince@gmail.com>
    Co-developed-by: Mariana Valério <mariana.valerio2@hotmail.com>
    Signed-off-by: Mariana Valério <mariana.valerio2@hotmail.com>
    Link: https://patch.msgid.link/20250430191131.120831-1-r2.arthur.prince@gmail.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: imu: inv_icm42600: Fix temperature calculation [+ + +]
Author: Sean Nyekjaer <sean@geanix.com>
Date:   Fri May 2 11:37:26 2025 +0200

    iio: imu: inv_icm42600: Fix temperature calculation
    
    commit e2f820014239df9360064079ae93f838ff3b7f8c upstream.
    
    >From the documentation:
    "offset to be added to <type>[Y]_raw prior toscaling by <type>[Y]_scale"
    Offset should be applied before multiplying scale, so divide offset by
    scale to make this correct.
    
    Fixes: bc3eb0207fb5 ("iio: imu: inv_icm42600: add temperature sensor support")
    Signed-off-by: Sean Nyekjaer <sean@geanix.com>
    Acked-by: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
    Link: https://patch.msgid.link/20250502-imu-v1-1-129b8391a4e3@geanix.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: gpio-keys - fix possible concurrent access in gpio_keys_irq_timer() [+ + +]
Author: Gatien Chevallier <gatien.chevallier@foss.st.com>
Date:   Fri May 30 16:09:23 2025 -0700

    Input: gpio-keys - fix possible concurrent access in gpio_keys_irq_timer()
    
    commit 8f38219fa139623c29db2cb0f17d0a197a86e344 upstream.
    
    gpio_keys_irq_isr() and gpio_keys_irq_timer() access the same resources.
    There could be a concurrent access if a GPIO interrupt occurs in parallel
    of a HR timer interrupt.
    
    Guard back those resources with a spinlock.
    
    Fixes: 019002f20cb5 ("Input: gpio-keys - use hrtimer for release timer")
    Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com>
    Link: https://lore.kernel.org/r/20250528-gpio_keys_preempt_rt-v2-2-3fc55a9c3619@foss.st.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: 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>

 
io_uring/kbuf: account ring io_buffer_list memory [+ + +]
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue May 13 18:26:46 2025 +0100

    io_uring/kbuf: account ring io_buffer_list memory
    
    commit 475a8d30371604a6363da8e304a608a5959afc40 upstream.
    
    Follow the non-ringed pbuf struct io_buffer_list allocations and account
    it against the memcg. There is low chance of that being an actual
    problem as ring provided buffer should either pin user memory or
    allocate it, which is already accounted.
    
    Cc: stable@vger.kernel.org # 6.1
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/3985218b50d341273cafff7234e1a7e6d0db9808.1747150490.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

io_uring/kbuf: don't truncate end buffer for multiple buffer peeks [+ + +]
Author: Jens Axboe <axboe@kernel.dk>
Date:   Fri Jun 13 11:01:49 2025 -0600

    io_uring/kbuf: don't truncate end buffer for multiple buffer peeks
    
    commit 26ec15e4b0c1d7b25214d9c0be1d50492e2f006c upstream.
    
    If peeking a bunch of buffers, normally io_ring_buffers_peek() will
    truncate the end buffer. This isn't optimal as presumably more data will
    be arriving later, and hence it's better to stop with the last full
    buffer rather than truncate the end buffer.
    
    Cc: stable@vger.kernel.org
    Fixes: 35c8711c8fc4 ("io_uring/kbuf: add helpers for getting/peeking multiple buffers")
    Reported-by: Christian Mazakas <christian.mazakas@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
io_uring/sqpoll: don't put task_struct on tctx setup failure [+ + +]
Author: Jens Axboe <axboe@kernel.dk>
Date:   Tue Jun 17 06:43:18 2025 -0600

    io_uring/sqpoll: don't put task_struct on tctx setup failure
    
    [ Upstream commit f2320f1dd6f6f82cb2c7aff23a12bab537bdea89 ]
    
    A recent commit moved the error handling of sqpoll thread and tctx
    failures into the thread itself, as part of fixing an issue. However, it
    missed that tctx allocation may also fail, and that
    io_sq_offload_create() does its own error handling for the task_struct
    in that case.
    
    Remove the manual task putting in io_sq_offload_create(), as
    io_sq_thread() will notice that the tctx did not get setup and hence it
    should put itself and exit.
    
    Reported-by: syzbot+763e12bbf004fb1062e4@syzkaller.appspotmail.com
    Fixes: ac0b8b327a56 ("io_uring: fix use-after-free of sq->thread in __io_uring_show_fdinfo()")
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
io_uring: account drain memory to cgroup [+ + +]
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Fri May 9 12:12:47 2025 +0100

    io_uring: account drain memory to cgroup
    
    commit f979c20547e72568e3c793bc92c7522bc3166246 upstream.
    
    Account drain allocations against memcg. It's not a big problem as each
    such allocation is paired with a request, which is accounted, but it's
    nicer to follow the limits more closely.
    
    Cc: stable@vger.kernel.org # 6.1
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/f8dfdbd755c41fd9c75d12b858af07dfba5bbb68.1746788718.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

io_uring: fix task leak issue in io_wq_create() [+ + +]
Author: Penglei Jiang <superman.xpt@gmail.com>
Date:   Sun Jun 15 09:39:06 2025 -0700

    io_uring: fix task leak issue in io_wq_create()
    
    commit 89465d923bda180299e69ee2800aab84ad0ba689 upstream.
    
    Add missing put_task_struct() in the error path
    
    Cc: stable@vger.kernel.org
    Fixes: 0f8baa3c9802 ("io-wq: fully initialize wqe before calling cpuhp_state_add_instance_nocalls()")
    Signed-off-by: Penglei Jiang <superman.xpt@gmail.com>
    Link: https://lore.kernel.org/r/20250615163906.2367-1-superman.xpt@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
iommu/amd: Allow matching ACPI HID devices without matching UIDs [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Mon May 12 12:30:32 2025 -0500

    iommu/amd: Allow matching ACPI HID devices without matching UIDs
    
    [ Upstream commit 51c33f333bbf7bdb6aa2a327e3a3e4bbb2591511 ]
    
    A BIOS upgrade has changed the IVRS DTE UID for a device that no
    longer matches the UID in the SSDT. In this case there is only
    one ACPI device on the system with that _HID but the _UID mismatch.
    
    IVRS:
    ```
                  Subtable Type : F0 [Device Entry: ACPI HID Named Device]
                      Device ID : 0060
    Data Setting (decoded below) : 40
                     INITPass : 0
                     EIntPass : 0
                     NMIPass : 0
                     Reserved : 0
                     System MGMT : 0
                     LINT0 Pass : 1
                     LINT1 Pass : 0
                       ACPI HID : "MSFT0201"
                       ACPI CID : 0000000000000000
                     UID Format : 02
                     UID Length : 09
                            UID : "\_SB.MHSP"
    ```
    
    SSDT:
    ```
    Device (MHSP)
    {
        Name (_ADR, Zero)  // _ADR: Address
        Name (_HID, "MSFT0201")  // _HID: Hardware ID
        Name (_UID, One)  // _UID: Unique ID
    ```
    
    To handle this case; while enumerating ACPI devices in
    get_acpihid_device_id() count the number of matching ACPI devices with
    a matching _HID. If there is exactly one _HID match then accept it even
    if the UID doesn't match. Other operating systems allow this, but the
    current IVRS spec leaves some ambiguity whether to allow or disallow it.
    This should be clarified in future revisions of the spec. Output
    'Firmware Bug' for this case to encourage it to be solved in the BIOS.
    
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Reviewed-by: Vasant Hegde <vasant.hegde@amd.com>
    Link: https://lore.kernel.org/r/20250512173129.1274275-1-superm1@kernel.org
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

iommu/amd: Ensure GA log notifier callbacks finish running before module unload [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Fri Mar 14 20:10:48 2025 -0700

    iommu/amd: Ensure GA log notifier callbacks finish running before module unload
    
    [ Upstream commit 94c721ea03c7078163f41dbaa101ac721ddac329 ]
    
    Synchronize RCU when unregistering KVM's GA log notifier to ensure all
    in-flight interrupt handlers complete before KVM-the module is unloaded.
    
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Link: https://lore.kernel.org/r/20250315031048.2374109-1-seanjc@google.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iommu/vt-d: Restore context entry setup order for aliased devices [+ + +]
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Tue May 20 15:58:49 2025 +0800

    iommu/vt-d: Restore context entry setup order for aliased devices
    
    commit 320302baed05c6456164652541f23d2a96522c06 upstream.
    
    Commit 2031c469f816 ("iommu/vt-d: Add support for static identity domain")
    changed the context entry setup during domain attachment from a
    set-and-check policy to a clear-and-reset approach. This inadvertently
    introduced a regression affecting PCI aliased devices behind PCIe-to-PCI
    bridges.
    
    Specifically, keyboard and touchpad stopped working on several Apple
    Macbooks with below messages:
    
     kernel: platform pxa2xx-spi.3: Adding to iommu group 20
     kernel: input: Apple SPI Keyboard as
     /devices/pci0000:00/0000:00:1e.3/pxa2xx-spi.3/spi_master/spi2/spi-APP000D:00/input/input0
     kernel: DMAR: DRHD: handling fault status reg 3
     kernel: DMAR: [DMA Read NO_PASID] Request device [00:1e.3] fault addr
     0xffffa000 [fault reason 0x06] PTE Read access is not set
     kernel: DMAR: DRHD: handling fault status reg 3
     kernel: DMAR: [DMA Read NO_PASID] Request device [00:1e.3] fault addr
     0xffffa000 [fault reason 0x06] PTE Read access is not set
     kernel: applespi spi-APP000D:00: Error writing to device: 01 0e 00 00
     kernel: DMAR: DRHD: handling fault status reg 3
     kernel: DMAR: [DMA Read NO_PASID] Request device [00:1e.3] fault addr
     0xffffa000 [fault reason 0x06] PTE Read access is not set
     kernel: DMAR: DRHD: handling fault status reg 3
     kernel: applespi spi-APP000D:00: Error writing to device: 01 0e 00 00
    
    Fix this by restoring the previous context setup order.
    
    Fixes: 2031c469f816 ("iommu/vt-d: Add support for static identity domain")
    Closes: https://lore.kernel.org/all/4dada48a-c5dd-4c30-9c85-5b03b0aa01f0@bfh.ch/
    Cc: stable@vger.kernel.org
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    Reviewed-by: Yi Liu <yi.l.liu@intel.com>
    Link: https://lore.kernel.org/r/20250514060523.2862195-1-baolu.lu@linux.intel.com
    Link: https://lore.kernel.org/r/20250520075849.755012-2-baolu.lu@linux.intel.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ionic: Prevent driver/fw getting out of sync on devcmd(s) [+ + +]
Author: Brett Creeley <brett.creeley@amd.com>
Date:   Mon Jun 9 14:28:27 2025 -0700

    ionic: Prevent driver/fw getting out of sync on devcmd(s)
    
    [ Upstream commit 5466491c9e3309ed5c7adbb8fad6e93fcc9a8fe9 ]
    
    Some stress/negative firmware testing around devcmd(s) returning
    EAGAIN found that the done bit could get out of sync in the
    firmware when it wasn't cleared in a retry case.
    
    While here, change the type of the local done variable to a bool
    to match the return type from ionic_dev_cmd_done().
    
    Fixes: ec8ee714736e ("ionic: stretch heartbeat detection")
    Signed-off-by: Brett Creeley <brett.creeley@amd.com>
    Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250609212827.53842-1-shannon.nelson@amd.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    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>

 
ipv6: remove leftover ip6 cookie initializer [+ + +]
Author: Willem de Bruijn <willemb@google.com>
Date:   Thu Mar 6 22:34:08 2025 -0500

    ipv6: remove leftover ip6 cookie initializer
    
    commit 54580ccdd8a9c6821fd6f72171d435480867e4c3 upstream.
    
    As of the blamed commit ipc6.dontfrag is always initialized at the
    start of udpv6_sendmsg, by ipcm6_init_sk, to either 0 or 1.
    
    Later checks against -1 are no longer needed and the branches are now
    dead code.
    
    The blamed commit had removed those branches. But I had overlooked
    this one case.
    
    UDP has both a lockless fast path and a slower path for corked
    requests. This branch remained in the fast path.
    
    Fixes: 096208592b09 ("ipv6: replace ipcm6_init calls with ipcm6_init_sk")
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250307033620.411611-2-willemdebruijn.kernel@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ipv6: replace ipcm6_init calls with ipcm6_init_sk [+ + +]
Author: Willem de Bruijn <willemb@google.com>
Date:   Fri Feb 14 17:27:03 2025 -0500

    ipv6: replace ipcm6_init calls with ipcm6_init_sk
    
    commit 096208592b09c2f5fc0c1a174694efa41c04209d upstream.
    
    This initializes tclass and dontfrag before cmsg parsing, removing the
    need for explicit checks against -1 in each caller.
    
    Leave hlimit set to -1, because its full initialization
    (in ip6_sk_dst_hoplimit) requires more state (dst, flowi6, ..).
    
    This also prepares for calling sockcm_init in a follow-on patch.
    
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://patch.msgid.link/20250214222720.3205500-7-willemdebruijn.kernel@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
isofs: fix Y2038 and Y2156 issues in Rock Ridge TF entry [+ + +]
Author: Jonas 'Sortie' Termansen <sortie@maxsi.org>
Date:   Fri Apr 11 16:50:21 2025 +0200

    isofs: fix Y2038 and Y2156 issues in Rock Ridge TF entry
    
    [ Upstream commit 5ea45f54c8d6ca2a95b7bd450ee9eb253310bfd3 ]
    
    This change implements the Rock Ridge TF entry LONG_FORM bit, which uses
    the ISO 9660 17-byte date format (up to year 9999, with 10ms precision)
    instead of the 7-byte date format (up to year 2155, with 1s precision).
    
    Previously the LONG_FORM bit was ignored; and isofs would entirely
    misinterpret the date as the wrong format, resulting in garbage
    timestamps on the filesystem.
    
    The Y2038 issue in iso_date() is fixed by returning a struct timespec64
    instead of an int.
    
    parse_rock_ridge_inode_internal() is fixed so it does proper bounds
    checks of the TF entry timestamps.
    
    Signed-off-by: Jonas 'Sortie' Termansen <sortie@maxsi.org>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://patch.msgid.link/20250411145022.2292255-1-sortie@maxsi.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ixgbe: Fix unreachable retry logic in combined and byte I2C write functions [+ + +]
Author: Rand Deeb <rand.sec96@gmail.com>
Date:   Thu Mar 6 13:12:00 2025 +0300

    ixgbe: Fix unreachable retry logic in combined and byte I2C write functions
    
    [ Upstream commit cdcb3804eeda24d588348bbab6766cf14fddbeaa ]
    
    The current implementation of `ixgbe_write_i2c_combined_generic_int` and
    `ixgbe_write_i2c_byte_generic_int` sets `max_retry` to `1`, which makes
    the condition `retry < max_retry` always evaluate to `false`. This renders
    the retry mechanism ineffective, as the debug message and retry logic are
    never executed.
    
    This patch increases `max_retry` to `3` in both functions, aligning them
    with the retry logic in `ixgbe_read_i2c_combined_generic_int`. This
    ensures that the retry mechanism functions as intended, improving
    robustness in case of I2C write failures.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Rand Deeb <rand.sec96@gmail.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>

 
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>

 
kbuild: rust: add rustc-min-version support function [+ + +]
Author: Miguel Ojeda <ojeda@kernel.org>
Date:   Mon Feb 10 17:42:45 2025 +0100

    kbuild: rust: add rustc-min-version support function
    
    commit ac954145e1ee3f72033161cbe4ac0b16b5354ae7 upstream.
    
    Introduce `rustc-min-version` support function that mimics
    `{gcc,clang}-min-version` ones, following commit 88b61e3bff93
    ("Makefile.compiler: replace cc-ifversion with compiler-specific macros").
    
    In addition, use it in the first use case we have in the kernel (which
    was done independently to minimize the changes needed for the fix).
    
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Reviewed-by: Fiona Behrens <me@Kloenk.dev>
    Reviewed-by: Nicolas Schier <n.schier@avm.de>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ksmbd: add free_transport ops in ksmbd connection [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Tue Jun 10 18:52:56 2025 +0900

    ksmbd: add free_transport ops in ksmbd connection
    
    [ Upstream commit a89f5fae998bdc4d0505306f93844c9ae059d50c ]
    
    free_transport function for tcp connection can be called from smbdirect.
    It will cause kernel oops. This patch add free_transport ops in ksmbd
    connection, and add each free_transports for tcp and smbdirect.
    
    Fixes: 21a4e47578d4 ("ksmbd: fix use-after-free in __smb2_lease_break_noti()")
    Reviewed-by: Stefan Metzmacher <metze@samba.org>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ksmbd: fix null pointer dereference in destroy_previous_session [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Fri Jun 13 10:12:43 2025 +0900

    ksmbd: fix null pointer dereference in destroy_previous_session
    
    commit 7ac5b66acafcc9292fb935d7e03790f2b8b2dc0e upstream.
    
    If client set ->PreviousSessionId on kerberos session setup stage,
    NULL pointer dereference error will happen. Since sess->user is not
    set yet, It can pass the user argument as NULL to destroy_previous_session.
    sess->user will be set in ksmbd_krb5_authenticate(). So this patch move
    calling destroy_previous_session() after ksmbd_krb5_authenticate().
    
    Cc: stable@vger.kernel.org
    Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-27391
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Kunit to check the longest symbol length [+ + +]
Author: Sergio González Collado <sergio.collado@gmail.com>
Date:   Sun Mar 2 23:15:18 2025 +0100

    Kunit to check the longest symbol length
    
    commit c104c16073b7fdb3e4eae18f66f4009f6b073d6f upstream.
    
    The longest length of a symbol (KSYM_NAME_LEN) was increased to 512
    in the reference [1]. This patch adds kunit test suite to check the longest
    symbol length. These tests verify that the longest symbol length defined
    is supported.
    
    This test can also help other efforts for longer symbol length,
    like [2].
    
    The test suite defines one symbol with the longest possible length.
    
    The first test verify that functions with names of the created
    symbol, can be called or not.
    
    The second test, verify that the symbols are created (or
    not) in the kernel symbol table.
    
    [1] https://lore.kernel.org/lkml/20220802015052.10452-6-ojeda@kernel.org/
    [2] https://lore.kernel.org/lkml/20240605032120.3179157-1-song@kernel.org/
    
    Link: https://lore.kernel.org/r/20250302221518.76874-1-sergio.collado@gmail.com
    Tested-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
    Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
    Reviewed-by: Rae Moar <rmoar@google.com>
    Signed-off-by: Sergio González Collado <sergio.collado@gmail.com>
    Link: https://github.com/Rust-for-Linux/linux/issues/504
    Reviewed-by: Rae Moar <rmoar@google.com>
    Acked-by: David Gow <davidgow@google.com>
    Signed-off-by: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
KVM: s390: rename PROT_NONE to PROT_TYPE_DUMMY [+ + +]
Author: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Date:   Mon May 19 15:56:57 2025 +0100

    KVM: s390: rename PROT_NONE to PROT_TYPE_DUMMY
    
    commit 15ac613f124e51a6623975efad9657b1f3ee47e7 upstream.
    
    The enum type prot_type declared in arch/s390/kvm/gaccess.c declares an
    unfortunate identifier within it - PROT_NONE.
    
    This clashes with the protection bit define from the uapi for mmap()
    declared in include/uapi/asm-generic/mman-common.h, which is indeed what
    those casually reading this code would assume this to refer to.
    
    This means that any changes which subsequently alter headers in any way
    which results in the uapi header being imported here will cause build
    errors.
    
    Resolve the issue by renaming PROT_NONE to PROT_TYPE_DUMMY.
    
    Link: https://lkml.kernel.org/r/20250519145657.178365-1-lorenzo.stoakes@oracle.com
    Fixes: b3cefd6bf16e ("KVM: s390: Pass initialized arg even if unused")
    Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Suggested-by: Ignacio Moreno Gonzalez <Ignacio.MorenoGonzalez@kuka.com>
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202505140943.IgHDa9s7-lkp@intel.com/
    Acked-by: Christian Borntraeger <borntraeger@linux.ibm.com>
    Acked-by: Ignacio Moreno Gonzalez <Ignacio.MorenoGonzalez@kuka.com>
    Acked-by: Yang Shi <yang@os.amperecomputing.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Acked-by: Liam R. Howlett <Liam.Howlett@oracle.com>
    Reviewed-by: Oscar Salvador <osalvador@suse.de>
    Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
    Cc: <stable@vger.kernel.org>
    Cc: Alexander Gordeev <agordeev@linux.ibm.com>
    Cc: Heiko Carstens <hca@linux.ibm.com>
    Cc: James Houghton <jthoughton@google.com>
    Cc: Janosch Frank <frankja@linux.ibm.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Sven Schnelle <svens@linux.ibm.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

KVM: SVM: Clear current_vmcb during vCPU free for all *possible* CPUs [+ + +]
Author: Yosry Ahmed <yosry.ahmed@linux.dev>
Date:   Tue Apr 29 08:32:15 2025 -0700

    KVM: SVM: Clear current_vmcb during vCPU free for all *possible* CPUs
    
    commit 1bee4838eb3a2c689f23c7170ea66ae87ea7d93a upstream.
    
    When freeing a vCPU and thus its VMCB, clear current_vmcb for all possible
    CPUs, not just online CPUs, as it's theoretically possible a CPU could go
    offline and come back online in conjunction with KVM reusing the page for
    a new VMCB.
    
    Link: https://lore.kernel.org/all/20250320013759.3965869-1-yosry.ahmed@linux.dev
    Fixes: fd65d3142f73 ("kvm: svm: Ensure an IBPB on all affected CPUs when freeing a vmcb")
    Cc: stable@vger.kernel.org
    Cc: Jim Mattson <jmattson@google.com>
    Signed-off-by: Yosry Ahmed <yosry.ahmed@linux.dev>
    [sean: split to separate patch, write changelog]
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

KVM: VMX: Flush shadow VMCS on emergency reboot [+ + +]
Author: Chao Gao <chao.gao@intel.com>
Date:   Mon Mar 24 22:08:48 2025 +0800

    KVM: VMX: Flush shadow VMCS on emergency reboot
    
    commit a0ee1d5faff135e28810f29e0f06328c66f89852 upstream.
    
    Ensure the shadow VMCS cache is evicted during an emergency reboot to
    prevent potential memory corruption if the cache is evicted after reboot.
    
    This issue was identified through code inspection, as __loaded_vmcs_clear()
    flushes both the normal VMCS and the shadow VMCS.
    
    Avoid checking the "launched" state during an emergency reboot, unlike the
    behavior in __loaded_vmcs_clear(). This is important because reboot NMIs
    can interfere with operations like copy_shadow_to_vmcs12(), where shadow
    VMCSes are loaded directly using VMPTRLD. In such cases, if NMIs occur
    right after the VMCS load, the shadow VMCSes will be active but the
    "launched" state may not be set.
    
    Fixes: 16f5b9034b69 ("KVM: nVMX: Copy processor-specific shadow-vmcs to VMCS12")
    Cc: stable@vger.kernel.org
    Signed-off-by: Chao Gao <chao.gao@intel.com>
    Reviewed-by: Kai Huang <kai.huang@intel.com>
    Link: https://lore.kernel.org/r/20250324140849.2099723-1-chao.gao@intel.com
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
libbpf/btf: Fix string handling to support multi-split BTF [+ + +]
Author: Alan Maguire <alan.maguire@oracle.com>
Date:   Mon May 19 17:59:34 2025 +0100

    libbpf/btf: Fix string handling to support multi-split BTF
    
    [ Upstream commit 4e29128a9acec2a622734844bedee013e2901bdf ]
    
    libbpf handling of split BTF has been written largely with the
    assumption that multiple splits are possible, i.e. split BTF on top of
    split BTF on top of base BTF.  One area where this does not quite work
    is string handling in split BTF; the start string offset should be the
    base BTF string section length + the base BTF string offset.  This
    worked in the past because for a single split BTF with base the start
    string offset was always 0.
    
    Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20250519165935.261614-2-alan.maguire@oracle.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
libbpf: Add identical pointer detection to btf_dedup_is_equiv() [+ + +]
Author: Alan Maguire <alan.maguire@oracle.com>
Date:   Tue Apr 29 17:10:42 2025 +0100

    libbpf: Add identical pointer detection to btf_dedup_is_equiv()
    
    [ Upstream commit 8e64c387c942229c551d0f23de4d9993d3a2acb6 ]
    
    Recently as a side-effect of
    
    commit ac053946f5c4 ("compiler.h: introduce TYPEOF_UNQUAL() macro")
    
    issues were observed in deduplication between modules and kernel BTF
    such that a large number of kernel types were not deduplicated so
    were found in module BTF (task_struct, bpf_prog etc).  The root cause
    appeared to be a failure to dedup struct types, specifically those
    with members that were pointers with __percpu annotations.
    
    The issue in dedup is at the point that we are deduplicating structures,
    we have not yet deduplicated reference types like pointers.  If multiple
    copies of a pointer point at the same (deduplicated) integer as in this
    case, we do not see them as identical.  Special handling already exists
    to deal with structures and arrays, so add pointer handling here too.
    
    Reported-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20250429161042.2069678-1-alan.maguire@oracle.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

libbpf: Check bpf_map_skeleton link for NULL [+ + +]
Author: Mykyta Yatsenko <yatsenko@meta.com>
Date:   Wed May 14 12:32:20 2025 +0100

    libbpf: Check bpf_map_skeleton link for NULL
    
    [ Upstream commit d0445d7dd3fd9b15af7564c38d7aa3cbc29778ee ]
    
    Avoid dereferencing bpf_map_skeleton's link field if it's NULL.
    If BPF map skeleton is created with the size, that indicates containing
    link field, but the field was not actually initialized with valid
    bpf_link pointer, libbpf crashes. This may happen when using libbpf-rs
    skeleton.
    Skeleton loading may still progress, but user needs to attach struct_ops
    map separately.
    
    Signed-off-by: Mykyta Yatsenko <yatsenko@meta.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20250514113220.219095-1-mykyta.yatsenko5@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

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

    Linux 6.12.35
    
    Link: https://lore.kernel.org/r/20250623130642.015559452@linuxfoundation.org
    Tested-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Link: https://lore.kernel.org/r/20250624121426.466976226@linuxfoundation.org
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Brett Mastbergen <bmastbergen@ciq.com>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
LoongArch: Avoid using $r0/$r1 as "mask" for csrxchg [+ + +]
Author: Huacai Chen <chenhuacai@kernel.org>
Date:   Fri May 30 21:45:48 2025 +0800

    LoongArch: Avoid using $r0/$r1 as "mask" for csrxchg
    
    commit 52c22661c79a7b6af7fad9f77200738fc6c51878 upstream.
    
    When building kernel with LLVM there are occasionally such errors:
    
    In file included from ./include/linux/spinlock.h:59:
    In file included from ./include/linux/irqflags.h:17:
    arch/loongarch/include/asm/irqflags.h:38:3: error: must not be $r0 or $r1
       38 |                 "csrxchg %[val], %[mask], %[reg]\n\t"
          |                 ^
    <inline asm>:1:16: note: instantiated into assembly here
        1 |         csrxchg $a1, $ra, 0
          |                       ^
    
    To prevent the compiler from allocating $r0 or $r1 for the "mask" of the
    csrxchg instruction, the 'q' constraint must be used but Clang < 21 does
    not support it. So force to use $t0 in the inline asm, in order to avoid
    using $r0/$r1 while keeping the backward compatibility.
    
    Cc: stable@vger.kernel.org
    Link: https://github.com/llvm/llvm-project/pull/141037
    Reviewed-by: Yanteng Si <si.yanteng@linux.dev>
    Suggested-by: WANG Rui <wangrui@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

LoongArch: Fix panic caused by NULL-PMD in huge_pte_offset() [+ + +]
Author: Tianyang Zhang <zhangtianyang@loongson.cn>
Date:   Fri May 30 21:45:57 2025 +0800

    LoongArch: Fix panic caused by NULL-PMD in huge_pte_offset()
    
    commit ee084fa96123ede8b0563a1b5a9b23adc43cd50d upstream.
    
    ERROR INFO:
    
    CPU 25 Unable to handle kernel paging request at virtual address 0x0
             ...
     Call Trace:
     [<900000000023c30c>] huge_pte_offset+0x3c/0x58
     [<900000000057fd4c>] hugetlb_follow_page_mask+0x74/0x438
     [<900000000051fee8>] __get_user_pages+0xe0/0x4c8
     [<9000000000522414>] faultin_page_range+0x84/0x380
     [<9000000000564e8c>] madvise_vma_behavior+0x534/0xa48
     [<900000000056689c>] do_madvise+0x1bc/0x3e8
     [<9000000000566df4>] sys_madvise+0x24/0x38
     [<90000000015b9e88>] do_syscall+0x78/0x98
     [<9000000000221f18>] handle_syscall+0xb8/0x158
    
    In some cases, pmd may be NULL and rely on NULL as the return value for
    processing, so it is necessary to determine this situation here.
    
    Cc: stable@vger.kernel.org
    Fixes: bd51834d1cf6 ("LoongArch: Return NULL from huge_pte_offset() for invalid PMD")
    Signed-off-by: Tianyang Zhang <zhangtianyang@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

LoongArch: vDSO: Correctly use asm parameters in syscall wrappers [+ + +]
Author: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Date:   Thu Jun 5 20:34:18 2025 +0800

    LoongArch: vDSO: Correctly use asm parameters in syscall wrappers
    
    commit e242bbbb6d7ac7556aa1e358294dc7e3c82cc902 upstream.
    
    The syscall wrappers use the "a0" register for two different register
    variables, both the first argument and the return value. Here the "ret"
    variable is used as both input and output while the argument register is
    only used as input. Clang treats the conflicting input parameters as an
    undefined behaviour and optimizes away the argument assignment.
    
    The code seems to work by chance for the most part today but that may
    change in the future. Specifically clock_gettime_fallback() fails with
    clockids from 16 to 23, as implemented by the upcoming auxiliary clocks.
    
    Switch the "ret" register variable to a pure output, similar to the
    other architectures' vDSO code. This works in both clang and GCC.
    
    Link: https://lore.kernel.org/lkml/20250602102825-42aa84f0-23f1-4d10-89fc-e8bbaffd291a@linutronix.de/
    Link: https://lore.kernel.org/lkml/20250519082042.742926976@linutronix.de/
    Fixes: c6b99bed6b8f ("LoongArch: Add VDSO and VSYSCALL support")
    Fixes: 18efd0b10e0f ("LoongArch: vDSO: Wire up getrandom() vDSO implementation")
    Cc: stable@vger.kernel.org
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Reviewed-by: Yanteng Si <si.yanteng@linux.dev>
    Reviewed-by: WANG Xuerui <git@xen0n.name>
    Reviewed-by: Xi Ruoyao <xry111@xry111.site>
    Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Make : 'cc-option' work correctly for the -Wno-xyzzy pattern [+ + +]
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue May 27 14:35:51 2025 -0700

    Make 'cc-option' work correctly for the -Wno-xyzzy pattern
    
    [ Upstream commit 550ccb178de2f379f5e1a1833dd6f4bdafef4b68 ]
    
    This is the follow-up to commit a79be02bba5c ("Fix mis-uses of
    'cc-option' for warning disablement") where I mentioned that the best
    fix would be to just make 'cc-option' a bit smarter, and work for all
    compiler options, including the '-Wno-xyzzy' pattern that it used to
    accept unknown options for.
    
    It turns out that fixing cc-option is pretty straightforward: just
    rewrite any '-Wno-xyzzy' option pattern to use '-Wxyzzy' instead for
    testing.
    
    That makes the whole artificial distinction between 'cc-option' and
    'cc-disable-warning' go away, and we can happily forget about the odd
    build rule that you have to treat compiler options that disable warnings
    specially.
    
    The 'cc-disable-warning' helper remains as a backwards compatibility
    syntax for now, but is implemented in terms of the new and improved
    cc-option.
    
    Acked-by: Masahiro Yamada <masahiroy@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Stephen Rothwell <sfr@canb.auug.org.au>
    Cc: Thomas Weißschuh <linux@weissschuh.net>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
media: ccs-pll: Check for too high VT PLL multiplier in dual PLL case [+ + +]
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Thu Feb 20 10:54:44 2025 +0200

    media: ccs-pll: Check for too high VT PLL multiplier in dual PLL case
    
    commit 6868b955acd6e5d7405a2b730c2ffb692ad50d2c upstream.
    
    The check for VT PLL upper limit in dual PLL case was missing. Add it now.
    
    Fixes: 6c7469e46b60 ("media: ccs-pll: Add trivial dual PLL support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: ccs-pll: Correct the upper limit of maximum op_pre_pll_clk_div [+ + +]
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Wed Feb 19 15:06:11 2025 +0200

    media: ccs-pll: Correct the upper limit of maximum op_pre_pll_clk_div
    
    commit f639494db450770fa30d6845d9c84b9cb009758f upstream.
    
    The PLL calculator does a search of the PLL configuration space for all
    valid OP pre-PLL clock dividers. The maximum did not take into account the
    CCS PLL flag CCS_PLL_FLAG_EXT_IP_PLL_DIVIDER in which case also odd PLL
    dividers (other than 1) are valid. Do that now.
    
    Fixes: 4e1e8d240dff ("media: ccs-pll: Add support for extended input PLL clock divider")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: ccs-pll: Start OP pre-PLL multiplier search from correct value [+ + +]
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Tue Feb 18 23:43:58 2025 +0200

    media: ccs-pll: Start OP pre-PLL multiplier search from correct value
    
    commit 660e613d05e449766784c549faf5927ffaf281f1 upstream.
    
    The ccs_pll_calculate() function does a search over possible PLL
    configurations to find the "best" one. If the sensor does not support odd
    pre-PLL divisors and the minimum value (with constraints) isn't 1, other
    odd values could be errorneously searched (and selected) for the pre-PLL
    divisor. Fix this.
    
    Fixes: 415ddd993978 ("media: ccs-pll: Split limits and PLL configuration into front and back parts")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: ccs-pll: Start VT pre-PLL multiplier search from correct value [+ + +]
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Tue Feb 18 23:47:13 2025 +0200

    media: ccs-pll: Start VT pre-PLL multiplier search from correct value
    
    commit 06d2d478b09e6764fb6161d1621fc10d9f0f2860 upstream.
    
    The ccs_pll_calculate_vt_tree() function does a search over possible VT
    PLL configurations to find the "best" one. If the sensor does not support
    odd pre-PLL divisors and the minimum value (with constraints) isn't 1,
    other odd values could be errorneously searched (and selected) for the
    pre-PLL divisor. Fix this.
    
    Fixes: 415ddd993978 ("media: ccs-pll: Split limits and PLL configuration into front and back parts")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: cxusb: no longer judge rbuf when the write fails [+ + +]
Author: Edward Adam Davis <eadavis@qq.com>
Date:   Sat Apr 5 19:56:41 2025 +0800

    media: cxusb: no longer judge rbuf when the write fails
    
    commit 73fb3b92da84637e3817580fa205d48065924e15 upstream.
    
    syzbot reported a uninit-value in cxusb_i2c_xfer. [1]
    
    Only when the write operation of usb_bulk_msg() in dvb_usb_generic_rw()
    succeeds and rlen is greater than 0, the read operation of usb_bulk_msg()
    will be executed to read rlen bytes of data from the dvb device into the
    rbuf.
    
    In this case, although rlen is 1, the write operation failed which resulted
    in the dvb read operation not being executed, and ultimately variable i was
    not initialized.
    
    [1]
    BUG: KMSAN: uninit-value in cxusb_gpio_tuner drivers/media/usb/dvb-usb/cxusb.c:124 [inline]
    BUG: KMSAN: uninit-value in cxusb_i2c_xfer+0x153a/0x1a60 drivers/media/usb/dvb-usb/cxusb.c:196
     cxusb_gpio_tuner drivers/media/usb/dvb-usb/cxusb.c:124 [inline]
     cxusb_i2c_xfer+0x153a/0x1a60 drivers/media/usb/dvb-usb/cxusb.c:196
     __i2c_transfer+0xe25/0x3150 drivers/i2c/i2c-core-base.c:-1
     i2c_transfer+0x317/0x4a0 drivers/i2c/i2c-core-base.c:2315
     i2c_transfer_buffer_flags+0x125/0x1e0 drivers/i2c/i2c-core-base.c:2343
     i2c_master_send include/linux/i2c.h:109 [inline]
     i2cdev_write+0x210/0x280 drivers/i2c/i2c-dev.c:183
     do_loop_readv_writev fs/read_write.c:848 [inline]
     vfs_writev+0x963/0x14e0 fs/read_write.c:1057
     do_writev+0x247/0x5c0 fs/read_write.c:1101
     __do_sys_writev fs/read_write.c:1169 [inline]
     __se_sys_writev fs/read_write.c:1166 [inline]
     __x64_sys_writev+0x98/0xe0 fs/read_write.c:1166
     x64_sys_call+0x2229/0x3c80 arch/x86/include/generated/asm/syscalls_64.h:21
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xcd/0x1e0 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Reported-by: syzbot+526bd95c0ec629993bf3@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=526bd95c0ec629993bf3
    Tested-by: syzbot+526bd95c0ec629993bf3@syzkaller.appspotmail.com
    Fixes: 22c6d93a7310 ("[PATCH] dvb: usb: support Medion hybrid USB2.0 DVB-T/analogue box")
    Cc: stable@vger.kernel.org
    Signed-off-by: Edward Adam Davis <eadavis@qq.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: davinci: vpif: Fix memory leak in probe error path [+ + +]
Author: Dmitry Nikiforov <Dm1tryNk@yandex.ru>
Date:   Wed Apr 16 23:51:19 2025 +0300

    media: davinci: vpif: Fix memory leak in probe error path
    
    commit 024bf40edf1155e7a587f0ec46294049777d9b02 upstream.
    
    If an error occurs during the initialization of `pdev_display`,
    the allocated platform device `pdev_capture` is not released properly,
    leading to a memory leak.
    
    Adjust error path handling to fix the leak.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 43acb728bbc4 ("media: davinci: vpif: fix use-after-free on driver unbind")
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Nikiforov <Dm1tryNk@yandex.ru>
    Reviewed-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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: i2c: ds90ub913: Fix returned fmt from .set_fmt() [+ + +]
Author: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Date:   Mon Mar 3 21:32:05 2025 +0530

    media: i2c: ds90ub913: Fix returned fmt from .set_fmt()
    
    commit ef205273132bdc9bcfa1540eef8105475a453300 upstream.
    
    When setting the sink pad's stream format, set_fmt accidentally changes
    the returned format's code to 'outcode', while the purpose is to only
    use the 'outcode' for the propagated source stream format.
    
    Fixes: c158d0d4ff15 ("media: i2c: add DS90UB913 driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
    Signed-off-by: Jai Luthra <jai.luthra@ideasonboard.com>
    Signed-off-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>

media: i2c: imx335: Fix frame size enumeration [+ + +]
Author: Kieran Bingham <kieran.bingham@ideasonboard.com>
Date:   Wed Apr 30 08:36:49 2025 +0100

    media: i2c: imx335: Fix frame size enumeration
    
    commit b240df2913d396638033b86af0f0ff76aa1aafc8 upstream.
    
    In commit cfa49ff0558a ("media: i2c: imx335: Support 2592x1940 10-bit
    mode") the IMX335 driver was extended to support multiple output
    bitdepth modes.
    
    This incorrectly extended the frame size enumeration to check against
    the supported mbus_codes array instead of the supported mode/frame
    array. This has the unwanted side effect of reporting the currently
    supported frame size 2592x1944 three times.
    
    Fix the check accordingly to report a frame size for each supported
    size, which is presently only a single entry.
    
    Fixes: cfa49ff0558a ("media: i2c: imx335: Support 2592x1940 10-bit mode")
    Cc: stable@vger.kernel.org
    Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
    Signed-off-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>

media: imagination: fix a potential memory leak in e5010_probe() [+ + +]
Author: Haoxiang Li <haoxiang_li2024@163.com>
Date:   Wed Feb 26 20:49:22 2025 +0800

    media: imagination: fix a potential memory leak in e5010_probe()
    
    commit 609ba05b9484856b08869f827a6edee51d51b5f3 upstream.
    
    Add video_device_release() to release the memory allocated by
    video_device_alloc() if something goes wrong.
    
    Fixes: a1e294045885 ("media: imagination: Add E5010 JPEG Encoder driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
    Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
    Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: imx-jpeg: Cleanup after an allocation error [+ + +]
Author: Ming Qian <ming.qian@oss.nxp.com>
Date:   Mon Apr 21 16:12:54 2025 +0800

    media: imx-jpeg: Cleanup after an allocation error
    
    commit 7500bb9cf164edbb2c8117d57620227b1a4a8369 upstream.
    
    When allocation failures are not cleaned up by the driver, further
    allocation errors will be false-positives, which will cause buffers to
    remain uninitialized and cause NULL pointer dereferences.
    Ensure proper cleanup of failed allocations to prevent these issues.
    
    Fixes: 2db16c6ed72c ("media: imx-jpeg: Add V4L2 driver for i.MX8 JPEG Encoder/Decoder")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ming Qian <ming.qian@oss.nxp.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: imx-jpeg: Drop the first error frames [+ + +]
Author: Ming Qian <ming.qian@oss.nxp.com>
Date:   Mon Apr 21 15:06:12 2025 +0800

    media: imx-jpeg: Drop the first error frames
    
    commit d52b9b7e2f10d22a49468128540533e8d76910cd upstream.
    
    When an output buffer contains error frame header,
    v4l2_jpeg_parse_header() will return error, then driver will mark this
    buffer and a capture buffer done with error flag in device_run().
    
    But if the error occurs in the first frames, before setup the capture
    queue, there is no chance to schedule device_run(), and there may be no
    capture to mark error.
    
    So we need to drop this buffer with error flag, and make the decoding
    can continue.
    
    Fixes: 2db16c6ed72c ("media: imx-jpeg: Add V4L2 driver for i.MX8 JPEG Encoder/Decoder")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ming Qian <ming.qian@oss.nxp.com>
    Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
    Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: imx-jpeg: Move mxc_jpeg_free_slot_data() ahead [+ + +]
Author: Ming Qian <ming.qian@oss.nxp.com>
Date:   Mon Apr 21 16:12:52 2025 +0800

    media: imx-jpeg: Move mxc_jpeg_free_slot_data() ahead
    
    commit 46e9c092f850bd7b4d06de92d3d21877f49a3fcb upstream.
    
    Move function mxc_jpeg_free_slot_data() above mxc_jpeg_alloc_slot_data()
    allowing to call that function during allocation failures.
    No functional changes are made.
    
    Fixes: 2db16c6ed72c ("media: imx-jpeg: Add V4L2 driver for i.MX8 JPEG Encoder/Decoder")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ming Qian <ming.qian@oss.nxp.com>
    Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: imx-jpeg: Reset slot data pointers when freed [+ + +]
Author: Ming Qian <ming.qian@oss.nxp.com>
Date:   Mon Apr 21 16:12:53 2025 +0800

    media: imx-jpeg: Reset slot data pointers when freed
    
    commit faa8051b128f4b34277ea8a026d02d83826f8122 upstream.
    
    Ensure that the slot data pointers are reset to NULL and handles are
    set to 0 after freeing the coherent memory. This makes he function
    mxc_jpeg_alloc_slot_data() and mxc_jpeg_free_slot_data() safe to be
    called multiple times.
    
    Fixes: 2db16c6ed72c ("media: imx-jpeg: Add V4L2 driver for i.MX8 JPEG Encoder/Decoder")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ming Qian <ming.qian@oss.nxp.com>
    Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: imx335: Use correct register width for HNUM [+ + +]
Author: Umang Jain <umang.jain@ideasonboard.com>
Date:   Tue Apr 22 13:20:52 2025 +0100

    media: imx335: Use correct register width for HNUM
    
    commit b122c9cfcb39c8ef520d50eddfbe15f3e6551a50 upstream.
    
    CCI_REG_HNUM should be using CCI_REG16_LE() instead of CCI_REG8()
    as HNUM spans from 0x302e[0:7] to 0x302f[0:3].
    
    Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
    Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
    Fixes: 8f0926dba799 ("media: imx335: Use V4L2 CCI for accessing sensor registers")
    Cc: stable@vger.kernel.org
    Signed-off-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>

media: intel/ipu6: Fix dma mask for non-secure mode [+ + +]
Author: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Date:   Thu Apr 10 11:47:06 2025 +0200

    media: intel/ipu6: Fix dma mask for non-secure mode
    
    commit 0209916ebe2475079ce6d8dc4114afbc0ccad1c2 upstream.
    
    We use dma_get_mask() of auxdev device for calculate iova pfn limit.
    This is always 32 bit mask as we do not initialize the mask (and we can
    not do so, since dev->dev_mask is NULL anyways for auxdev).
    
    Since we need 31 bit mask for non-secure mode use mmu_info->aperture_end
    which is properly initialized to correct mask for both modes.
    
    Fixes: daabc5c64703 ("media: ipu6: not override the dma_ops of device in driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
    Signed-off-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>

media: ipu6: Remove workaround for Meteor Lake ES2 [+ + +]
Author: Hao Yao <hao.yao@intel.com>
Date:   Tue Mar 11 16:41:55 2025 +0800

    media: ipu6: Remove workaround for Meteor Lake ES2
    
    commit d471fb06b21ae54bf76464731ae1dcb26ef1ca68 upstream.
    
    There was a hardware bug which need IPU6 driver to disable the ATS. This
    workaround is not needed anymore as the bug was fixed in hardware level.
    
    Additionally, Arrow Lake has the same IPU6 PCI ID and x86 stepping but
    does not have the bug. Removing the Meteor Lake workaround is also
    required for the driver to function on Arrow Lake.
    
    Signed-off-by: Hao Yao <hao.yao@intel.com>
    Reviewed-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
    Fixes: 25fedc021985 ("media: intel/ipu6: add Intel IPU6 PCI device driver")
    Cc: stable@vger.kernel.org
    [Sakari Ailus: Added tags and explanation of what is fixed.]
    Signed-off-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>

media: mediatek: vcodec: Correct vsi_core framebuffer size [+ + +]
Author: Fei Shao <fshao@chromium.org>
Date:   Fri Mar 14 15:56:17 2025 +0800

    media: mediatek: vcodec: Correct vsi_core framebuffer size
    
    commit f19035b86382f635a0d13d177b601babaf263a12 upstream.
    
    The framebuffer size for decoder instances was being incorrectly set -
    inst->vsi_core->fb.y.size was assigned twice consecutively.
    
    Assign the second picinfo framebuffer size to the C framebuffer instead,
    which appears to be the intended target based on the surrounding code.
    
    Fixes: 2674486aac7d ("media: mediatek: vcodec: support stateless hevc decoder")
    Cc: stable@vger.kernel.org
    Signed-off-by: Fei Shao <fshao@chromium.org>
    Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
    Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: nxp: imx8-isi: better handle the m2m usage_count [+ + +]
Author: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
Date:   Wed Oct 23 11:56:43 2024 +0300

    media: nxp: imx8-isi: better handle the m2m usage_count
    
    commit 910efa649076be9c2e1326059830327cf4228cf6 upstream.
    
    Currently, if streamon/streamoff calls are imbalanced we can either end up
    with a negative ISI m2m usage_count (if streamoff() is called more times
    than streamon()) in which case we'll not be able to restart the ISI pipe
    next time, or the usage_count never gets to 0 and the pipe is never
    switched off.
    
    To avoid that, add a 'streaming' flag to mxc_isi_m2m_ctx_queue_data and use it
    in the streamon/streamoff to avoid incrementing/decrementing the usage_count
    uselessly, if called multiple times from the same context.
    
    Fixes: cf21f328fcafac ("media: nxp: Add i.MX8 ISI driver")
    Cc: stable@vger.kernel.org
    Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Link: https://lore.kernel.org/r/20241023085643.978729-1-laurentiu.palcu@oss.nxp.com
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: omap3isp: use sgtable-based scatterlist wrappers [+ + +]
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Wed May 7 18:09:13 2025 +0200

    media: omap3isp: use sgtable-based scatterlist wrappers
    
    commit 3de572fe2189a4a0bd80295e1f478401e739498e upstream.
    
    Use common wrappers operating directly on the struct sg_table objects to
    fix incorrect use of scatterlists sync calls. dma_sync_sg_for_*()
    functions have to be called with the number of elements originally passed
    to dma_map_sg_*() function, not the one returned in sgtable's nents.
    
    Fixes: d33186d0be18 ("[media] omap3isp: ccdc: Use the DMA API for LSC")
    Fixes: 0e24e90f2ca7 ("[media] omap3isp: stat: Use the DMA API")
    CC: stable@vger.kernel.org
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: ov2740: Move pm-runtime cleanup on probe-errors to proper place [+ + +]
Author: Hans de Goede <hansg@kernel.org>
Date:   Mon Mar 24 14:01:09 2025 +0100

    media: ov2740: Move pm-runtime cleanup on probe-errors to proper place
    
    commit 81cf4f46a03a07b0b86f9d677c34ba782df7d65e upstream.
    
    When v4l2_subdev_init_finalize() fails no changes have been made to
    the runtime-pm device state yet, so the probe_error_media_entity_cleanup
    rollback path should not touch the runtime-pm device state.
    
    Instead this should be done from the probe_error_v4l2_subdev_cleanup
    rollback path. Note the pm_runtime_xxx() calls are put above
    the v4l2_subdev_cleanup() call to have the reverse call order of probe().
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Bingbu Cao <bingbu.cao@intel.com>
    Fixes: 289c25923ecd ("media: ov2740: Use sub-device active state")
    Cc: stable@vger.kernel.org
    Signed-off-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>

media: ov5675: suppress probe deferral errors [+ + +]
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Fri Apr 25 14:52:37 2025 +0200

    media: ov5675: suppress probe deferral errors
    
    commit 8268da3c474a43a79a6540fb06c5d3b730a0d5a5 upstream.
    
    Probe deferral should not be logged as an error:
    
            ov5675 24-0010: failed to get HW configuration: -517
    
    Drop the (mostly) redundant dev_err() from sensor probe() to suppress
    it.
    
    Note that errors during clock and regulator lookup are already correctly
    logged using dev_err_probe().
    
    Fixes: 49d9ad719e89 ("media: ov5675: add device-tree support and support runtime PM")
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-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>

media: ov8856: suppress probe deferral errors [+ + +]
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Fri Apr 25 14:52:38 2025 +0200

    media: ov8856: suppress probe deferral errors
    
    commit e3d86847fba58cf71f66e81b6a2515e07039ae17 upstream.
    
    Probe deferral should not be logged as an error:
    
            ov8856 24-0010: failed to get HW configuration: -517
    
    Use dev_err_probe() for the clock lookup and drop the (mostly) redundant
    dev_err() from sensor probe() to suppress it.
    
    Note that errors during regulator lookup is already correctly logged
    using dev_err_probe().
    
    Fixes: 0c2c7a1e0d69 ("media: ov8856: Add devicetree support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-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>

media: uvcvideo: Fix deferred probing error [+ + +]
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Thu Mar 13 12:20:39 2025 +0000

    media: uvcvideo: Fix deferred probing error
    
    commit 387e8939307192d5a852a2afeeb83427fa477151 upstream.
    
    uvc_gpio_parse() can return -EPROBE_DEFER when the GPIOs it depends on
    have not yet been probed. This return code should be propagated to the
    caller of uvc_probe() to ensure that probing is retried when the required
    GPIOs become available.
    
    Currently, this error code is incorrectly converted to -ENODEV,
    causing some internal cameras to be ignored.
    
    This commit fixes this issue by propagating the -EPROBE_DEFER error.
    
    Cc: stable@vger.kernel.org
    Fixes: 2886477ff987 ("media: uvcvideo: Implement UVC_EXT_GPIO_UNIT")
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Message-ID: <20250313-uvc-eprobedefer-v3-1-a1d312708eef@chromium.org>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: uvcvideo: Return the number of processed controls [+ + +]
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Mon Feb 24 10:34:53 2025 +0000

    media: uvcvideo: Return the number of processed controls
    
    commit ba4fafb02ad6a4eb2e00f861893b5db42ba54369 upstream.
    
    If we let know our callers that we have not done anything, they will be
    able to optimize their decisions.
    
    Cc: stable@kernel.org
    Fixes: b4012002f3a3 ("[media] uvcvideo: Add support for control events")
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Message-ID: <20250224-uvc-data-backup-v2-1-de993ed9823b@chromium.org>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: uvcvideo: Send control events for partial succeeds [+ + +]
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Mon Feb 24 10:34:54 2025 +0000

    media: uvcvideo: Send control events for partial succeeds
    
    commit 5c791467aea6277430da5f089b9b6c2a9d8a4af7 upstream.
    
    Today, when we are applying a change to entities A, B. If A succeeds and B
    fails the events for A are not sent.
    
    This change changes the code so the events for A are send right after
    they happen.
    
    Cc: stable@kernel.org
    Fixes: b4012002f3a3 ("[media] uvcvideo: Add support for control events")
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Message-ID: <20250224-uvc-data-backup-v2-2-de993ed9823b@chromium.org>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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>

media: venus: Fix probe error handling [+ + +]
Author: Loic Poulain <loic.poulain@oss.qualcomm.com>
Date:   Thu Mar 27 13:53:04 2025 +0100

    media: venus: Fix probe error handling
    
    commit 523cea3a19f0b3b020a4745344c136a636e6ffd7 upstream.
    
    Video device registering has been moved earlier in the probe function,
    but the new order has not been propagated to error handling. This means
    we can end with unreleased resources on error (e.g dangling video device
    on missing firmware probe aborting).
    
    Fixes: 08b1cf474b7f7 ("media: venus: core, venc, vdec: Fix probe dependency error")
    Cc: stable@vger.kernel.org
    Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
    Reviewed-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
    Reviewed-by: Bryan O'Donoghue <bod@kernel.org>
    Signed-off-by: Bryan O'Donoghue <bod@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: videobuf2: use sgtable-based scatterlist wrappers [+ + +]
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Wed May 7 18:09:11 2025 +0200

    media: videobuf2: use sgtable-based scatterlist wrappers
    
    commit a704a3c503ae1cfd9de8a2e2d16a0c9430e98162 upstream.
    
    Use common wrappers operating directly on the struct sg_table objects to
    fix incorrect use of scatterlists sync calls. dma_sync_sg_for_*()
    functions have to be called with the number of elements originally passed
    to dma_map_sg_*() function, not the one returned in sgt->nents.
    
    Fixes: d4db5eb57cab ("media: videobuf2: add begin/end cpu_access callbacks to dma-sg")
    CC: stable@vger.kernel.org
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
    Acked-by: Tomasz Figa <tfiga@chromium.org>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: vidtv: Terminating the subsequent process of initialization failure [+ + +]
Author: Edward Adam Davis <eadavis@qq.com>
Date:   Tue Mar 11 15:20:14 2025 +0800

    media: vidtv: Terminating the subsequent process of initialization failure
    
    commit 1d5f88f053480326873115092bc116b7d14916ba upstream.
    
    syzbot reported a slab-use-after-free Read in vidtv_mux_init. [1]
    
    After PSI initialization fails, the si member is accessed again, resulting
    in this uaf.
    
    After si initialization fails, the subsequent process needs to be exited.
    
    [1]
    BUG: KASAN: slab-use-after-free in vidtv_mux_pid_ctx_init drivers/media/test-drivers/vidtv/vidtv_mux.c:78 [inline]
    BUG: KASAN: slab-use-after-free in vidtv_mux_init+0xac2/0xbe0 drivers/media/test-drivers/vidtv/vidtv_mux.c:524
    Read of size 8 at addr ffff88802fa42acc by task syz.2.37/6059
    
    CPU: 0 UID: 0 PID: 6059 Comm: syz.2.37 Not tainted 6.14.0-rc5-syzkaller #0
    Hardware name: Google Compute Engine, BIOS Google 02/12/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+0xc3/0x670 mm/kasan/report.c:521
    kasan_report+0xd9/0x110 mm/kasan/report.c:634
    vidtv_mux_pid_ctx_init drivers/media/test-drivers/vidtv/vidtv_mux.c:78
    vidtv_mux_init+0xac2/0xbe0 drivers/media/test-drivers/vidtv/vidtv_mux.c:524
    vidtv_start_streaming drivers/media/test-drivers/vidtv/vidtv_bridge.c:194
    vidtv_start_feed drivers/media/test-drivers/vidtv/vidtv_bridge.c:239
    dmx_section_feed_start_filtering drivers/media/dvb-core/dvb_demux.c:973
    dvb_dmxdev_feed_start drivers/media/dvb-core/dmxdev.c:508 [inline]
    dvb_dmxdev_feed_restart.isra.0 drivers/media/dvb-core/dmxdev.c:537
    dvb_dmxdev_filter_stop+0x2b4/0x3a0 drivers/media/dvb-core/dmxdev.c:564
    dvb_dmxdev_filter_free drivers/media/dvb-core/dmxdev.c:840 [inline]
    dvb_demux_release+0x92/0x550 drivers/media/dvb-core/dmxdev.c:1246
    __fput+0x3ff/0xb70 fs/file_table.c:464
    task_work_run+0x14e/0x250 kernel/task_work.c:227
    exit_task_work include/linux/task_work.h:40 [inline]
    do_exit+0xad8/0x2d70 kernel/exit.c:938
    do_group_exit+0xd3/0x2a0 kernel/exit.c:1087
    __do_sys_exit_group kernel/exit.c:1098 [inline]
    __se_sys_exit_group kernel/exit.c:1096 [inline]
    __x64_sys_exit_group+0x3e/0x50 kernel/exit.c:1096
    x64_sys_call+0x151f/0x1720 arch/x86/include/generated/asm/syscalls_64.h:232
    do_syscall_x64 arch/x86/entry/common.c:52 [inline]
    do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
    entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f871d58d169
    Code: Unable to access opcode bytes at 0x7f871d58d13f.
    RSP: 002b:00007fff4b19a788 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f871d58d169
    RDX: 0000000000000064 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: 00007fff4b19a7ec R08: 0000000b4b19a87f R09: 00000000000927c0
    R10: 0000000000000001 R11: 0000000000000246 R12: 0000000000000003
    R13: 00000000000927c0 R14: 000000000001d553 R15: 00007fff4b19a840
     </TASK>
    
    Allocated by task 6059:
     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
     kmalloc_noprof include/linux/slab.h:901 [inline]
     kzalloc_noprof include/linux/slab.h:1037 [inline]
     vidtv_psi_pat_table_init drivers/media/test-drivers/vidtv/vidtv_psi.c:970
     vidtv_channel_si_init drivers/media/test-drivers/vidtv/vidtv_channel.c:423
     vidtv_mux_init drivers/media/test-drivers/vidtv/vidtv_mux.c:519
     vidtv_start_streaming drivers/media/test-drivers/vidtv/vidtv_bridge.c:194
     vidtv_start_feed drivers/media/test-drivers/vidtv/vidtv_bridge.c:239
     dmx_section_feed_start_filtering drivers/media/dvb-core/dvb_demux.c:973
     dvb_dmxdev_feed_start drivers/media/dvb-core/dmxdev.c:508 [inline]
     dvb_dmxdev_feed_restart.isra.0 drivers/media/dvb-core/dmxdev.c:537
     dvb_dmxdev_filter_stop+0x2b4/0x3a0 drivers/media/dvb-core/dmxdev.c:564
     dvb_dmxdev_filter_free drivers/media/dvb-core/dmxdev.c:840 [inline]
     dvb_demux_release+0x92/0x550 drivers/media/dvb-core/dmxdev.c:1246
     __fput+0x3ff/0xb70 fs/file_table.c:464
     task_work_run+0x14e/0x250 kernel/task_work.c:227
     exit_task_work include/linux/task_work.h:40 [inline]
     do_exit+0xad8/0x2d70 kernel/exit.c:938
     do_group_exit+0xd3/0x2a0 kernel/exit.c:1087
     __do_sys_exit_group kernel/exit.c:1098 [inline]
     __se_sys_exit_group kernel/exit.c:1096 [inline]
     __x64_sys_exit_group+0x3e/0x50 kernel/exit.c:1096
     x64_sys_call arch/x86/include/generated/asm/syscalls_64.h:232
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Freed by task 6059:
     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:2353 [inline]
     slab_free mm/slub.c:4609 [inline]
     kfree+0x2c4/0x4d0 mm/slub.c:4757
     vidtv_channel_si_init drivers/media/test-drivers/vidtv/vidtv_channel.c:499
     vidtv_mux_init drivers/media/test-drivers/vidtv/vidtv_mux.c:519
     vidtv_start_streaming drivers/media/test-drivers/vidtv/vidtv_bridge.c:194
     vidtv_start_feed drivers/media/test-drivers/vidtv/vidtv_bridge.c:239
     dmx_section_feed_start_filtering drivers/media/dvb-core/dvb_demux.c:973
     dvb_dmxdev_feed_start drivers/media/dvb-core/dmxdev.c:508 [inline]
     dvb_dmxdev_feed_restart.isra.0 drivers/media/dvb-core/dmxdev.c:537
     dvb_dmxdev_filter_stop+0x2b4/0x3a0 drivers/media/dvb-core/dmxdev.c:564
     dvb_dmxdev_filter_free drivers/media/dvb-core/dmxdev.c:840 [inline]
     dvb_demux_release+0x92/0x550 drivers/media/dvb-core/dmxdev.c:1246
     __fput+0x3ff/0xb70 fs/file_table.c:464
     task_work_run+0x14e/0x250 kernel/task_work.c:227
     exit_task_work include/linux/task_work.h:40 [inline]
     do_exit+0xad8/0x2d70 kernel/exit.c:938
     do_group_exit+0xd3/0x2a0 kernel/exit.c:1087
     __do_sys_exit_group kernel/exit.c:1098 [inline]
     __se_sys_exit_group kernel/exit.c:1096 [inline]
     __x64_sys_exit_group+0x3e/0x50 kernel/exit.c:1096
     x64_sys_call arch/x86/include/generated/asm/syscalls_64.h:232
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Fixes: 3be8037960bc ("media: vidtv: add error checks")
    Cc: stable@vger.kernel.org
    Reported-by: syzbot+0d33ab192bd50b6c91e6@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=0d33ab192bd50b6c91e6
    Signed-off-by: Edward Adam Davis <eadavis@qq.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: vivid: Change the siize of the composing [+ + +]
Author: Denis Arefev <arefev@swemel.ru>
Date:   Tue Apr 15 11:27:21 2025 +0300

    media: vivid: Change the siize of the composing
    
    commit f83ac8d30c43fd902af7c84c480f216157b60ef0 upstream.
    
    syzkaller found a bug:
    
    BUG: KASAN: vmalloc-out-of-bounds in tpg_fill_plane_pattern drivers/media/common/v4l2-tpg/v4l2-tpg-core.c:2608 [inline]
    BUG: KASAN: vmalloc-out-of-bounds in tpg_fill_plane_buffer+0x1a9c/0x5af0 drivers/media/common/v4l2-tpg/v4l2-tpg-core.c:2705
    Write of size 1440 at addr ffffc9000d0ffda0 by task vivid-000-vid-c/5304
    
    CPU: 0 UID: 0 PID: 5304 Comm: vivid-000-vid-c Not tainted 6.14.0-rc2-syzkaller-00039-g09fbf3d50205 #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
     print_address_description mm/kasan/report.c:378 [inline]
     print_report+0x169/0x550 mm/kasan/report.c:489
     kasan_report+0x143/0x180 mm/kasan/report.c:602
     kasan_check_range+0x282/0x290 mm/kasan/generic.c:189
     __asan_memcpy+0x40/0x70 mm/kasan/shadow.c:106
     tpg_fill_plane_pattern drivers/media/common/v4l2-tpg/v4l2-tpg-core.c:2608 [inline]
     tpg_fill_plane_buffer+0x1a9c/0x5af0 drivers/media/common/v4l2-tpg/v4l2-tpg-core.c:2705
     vivid_fillbuff drivers/media/test-drivers/vivid/vivid-kthread-cap.c:470 [inline]
     vivid_thread_vid_cap_tick+0xf8e/0x60d0 drivers/media/test-drivers/vivid/vivid-kthread-cap.c:629
     vivid_thread_vid_cap+0x8aa/0xf30 drivers/media/test-drivers/vivid/vivid-kthread-cap.c:767
     kthread+0x7a9/0x920 kernel/kthread.c:464
     ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:148
     ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
     </TASK>
    
    The composition size cannot be larger than the size of fmt_cap_rect.
    So execute v4l2_rect_map_inside() even if has_compose_cap == 0.
    
    Fixes: 94a7ad928346 ("media: vivid: fix compose size exceed boundary")
    Cc: stable@vger.kernel.org
    Reported-by: syzbot+365005005522b70a36f2@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?id=8ed8e8cc30cbe0d86c9a25bd1d6a5775129b8ea3
    Signed-off-by: Denis Arefev <arefev@swemel.ru>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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>

 
mlxbf_gige: return EPROBE_DEFER if PHY IRQ is not available [+ + +]
Author: David Thompson <davthompson@nvidia.com>
Date:   Wed Jun 18 13:59:02 2025 +0000

    mlxbf_gige: return EPROBE_DEFER if PHY IRQ is not available
    
    [ Upstream commit e7ea5f5b1858ddb96b152584d5fe06e6fc623e89 ]
    
    The message "Error getting PHY irq. Use polling instead"
    is emitted when the mlxbf_gige driver is loaded by the
    kernel before the associated gpio-mlxbf driver, and thus
    the call to get the PHY IRQ fails since it is not yet
    available. The driver probe() must return -EPROBE_DEFER
    if acpi_dev_gpio_irq_get_by() returns the same.
    
    Fixes: 6c2a6ddca763 ("net: mellanox: mlxbf_gige: Replace non-standard interrupt handling")
    Signed-off-by: David Thompson <davthompson@nvidia.com>
    Reviewed-by: Asmaa Mnebhi <asmaa@nvidia.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250618135902.346-1-davthompson@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mm/hugetlb: fix huge_pmd_unshare() vs GUP-fast race [+ + +]
Author: Jann Horn <jannh@google.com>
Date:   Tue May 27 23:23:54 2025 +0200

    mm/hugetlb: fix huge_pmd_unshare() vs GUP-fast race
    
    commit 1013af4f585fccc4d3e5c5824d174de2257f7d6d upstream.
    
    huge_pmd_unshare() drops a reference on a page table that may have
    previously been shared across processes, potentially turning it into a
    normal page table used in another process in which unrelated VMAs can
    afterwards be installed.
    
    If this happens in the middle of a concurrent gup_fast(), gup_fast() could
    end up walking the page tables of another process.  While I don't see any
    way in which that immediately leads to kernel memory corruption, it is
    really weird and unexpected.
    
    Fix it with an explicit broadcast IPI through tlb_remove_table_sync_one(),
    just like we do in khugepaged when removing page tables for a THP
    collapse.
    
    Link: https://lkml.kernel.org/r/20250528-hugetlb-fixes-splitrace-v2-2-1329349bad1a@google.com
    Link: https://lkml.kernel.org/r/20250527-hugetlb-fixes-splitrace-v1-2-f4136f5ec58a@google.com
    Fixes: 39dde65c9940 ("[PATCH] shared page table for hugetlb page")
    Signed-off-by: Jann Horn <jannh@google.com>
    Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Cc: Liam Howlett <liam.howlett@oracle.com>
    Cc: Muchun Song <muchun.song@linux.dev>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mm/hugetlb: unshare page tables during VMA split, not before [+ + +]
Author: Jann Horn <jannh@google.com>
Date:   Tue May 27 23:23:53 2025 +0200

    mm/hugetlb: unshare page tables during VMA split, not before
    
    commit 081056dc00a27bccb55ccc3c6f230a3d5fd3f7e0 upstream.
    
    Currently, __split_vma() triggers hugetlb page table unsharing through
    vm_ops->may_split().  This happens before the VMA lock and rmap locks are
    taken - which is too early, it allows racing VMA-locked page faults in our
    process and racing rmap walks from other processes to cause page tables to
    be shared again before we actually perform the split.
    
    Fix it by explicitly calling into the hugetlb unshare logic from
    __split_vma() in the same place where THP splitting also happens.  At that
    point, both the VMA and the rmap(s) are write-locked.
    
    An annoying detail is that we can now call into the helper
    hugetlb_unshare_pmds() from two different locking contexts:
    
    1. from hugetlb_split(), holding:
        - mmap lock (exclusively)
        - VMA lock
        - file rmap lock (exclusively)
    2. hugetlb_unshare_all_pmds(), which I think is designed to be able to
       call us with only the mmap lock held (in shared mode), but currently
       only runs while holding mmap lock (exclusively) and VMA lock
    
    Backporting note:
    This commit fixes a racy protection that was introduced in commit
    b30c14cd6102 ("hugetlb: unshare some PMDs when splitting VMAs"); that
    commit claimed to fix an issue introduced in 5.13, but it should actually
    also go all the way back.
    
    [jannh@google.com: v2]
      Link: https://lkml.kernel.org/r/20250528-hugetlb-fixes-splitrace-v2-1-1329349bad1a@google.com
    Link: https://lkml.kernel.org/r/20250528-hugetlb-fixes-splitrace-v2-0-1329349bad1a@google.com
    Link: https://lkml.kernel.org/r/20250527-hugetlb-fixes-splitrace-v1-1-f4136f5ec58a@google.com
    Fixes: 39dde65c9940 ("[PATCH] shared page table for hugetlb page")
    Signed-off-by: Jann Horn <jannh@google.com>
    Cc: Liam Howlett <liam.howlett@oracle.com>
    Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Reviewed-by: Oscar Salvador <osalvador@suse.de>
    Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: <stable@vger.kernel.org>    [b30c14cd6102: hugetlb: unshare some PMDs when splitting VMAs]
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    [stable backport: added missing include]
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm: close theoretical race where stale TLB entries could linger [+ + +]
Author: Ryan Roberts <ryan.roberts@arm.com>
Date:   Fri Jun 6 10:28:07 2025 +0100

    mm: close theoretical race where stale TLB entries could linger
    
    commit 383c4613c67c26e90e8eebb72e3083457d02033f upstream.
    
    Commit 3ea277194daa ("mm, mprotect: flush TLB if potentially racing with a
    parallel reclaim leaving stale TLB entries") described a theoretical race
    as such:
    
    
    """
    Nadav Amit identified a theoretical race between page reclaim and mprotect
    due to TLB flushes being batched outside of the PTL being held.
    
    He described the race as follows:
    
            CPU0                            CPU1
            ----                            ----
                                            user accesses memory using RW PTE
                                            [PTE now cached in TLB]
            try_to_unmap_one()
            ==> ptep_get_and_clear()
            ==> set_tlb_ubc_flush_pending()
                                            mprotect(addr, PROT_READ)
                                            ==> change_pte_range()
                                            ==> [ PTE non-present - no flush ]
    
                                            user writes using cached RW PTE
            ...
    
            try_to_unmap_flush()
    
    The same type of race exists for reads when protecting for PROT_NONE and
    also exists for operations that can leave an old TLB entry behind such as
    munmap, mremap and madvise.
    """
    
    The solution was to introduce flush_tlb_batched_pending() and call it
    under the PTL from mprotect/madvise/munmap/mremap to complete any pending
    tlb flushes.
    
    However, while madvise_free_pte_range() and
    madvise_cold_or_pageout_pte_range() were both retro-fitted to call
    flush_tlb_batched_pending() immediately after initially acquiring the PTL,
    they both temporarily release the PTL to split a large folio if they
    stumble upon one.  In this case, where re-acquiring the PTL
    flush_tlb_batched_pending() must be called again, but it previously was
    not.  Let's fix that.
    
    There are 2 Fixes: tags here: the first is the commit that fixed
    madvise_free_pte_range().  The second is the commit that added
    madvise_cold_or_pageout_pte_range(), which looks like it copy/pasted the
    faulty pattern from madvise_free_pte_range().
    
    This is a theoretical bug discovered during code review.
    
    Link: https://lkml.kernel.org/r/20250606092809.4194056-1-ryan.roberts@arm.com
    Fixes: 3ea277194daa ("mm, mprotect: flush TLB if potentially racing with a parallel reclaim leaving stale TLB entries")
    Fixes: 9c276cc65a58 ("mm: introduce MADV_COLD")
    Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
    Reviewed-by: Jann Horn <jannh@google.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Cc: Liam Howlett <liam.howlett@oracle.com>
    Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Cc: Mel Gorman <mgorman <mgorman@suse.de>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    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>

 
mmc: Add quirk to disable DDR50 tuning [+ + +]
Author: Erick Shepherd <erick.shepherd@ni.com>
Date:   Mon Mar 31 17:13:37 2025 -0500

    mmc: Add quirk to disable DDR50 tuning
    
    [ Upstream commit 9510b38dc0ba358c93cbf5ee7c28820afb85937b ]
    
    Adds the MMC_QUIRK_NO_UHS_DDR50_TUNING quirk and updates
    mmc_execute_tuning() to return 0 if that quirk is set. This fixes an
    issue on certain Swissbit SD cards that do not support DDR50 tuning
    where tuning requests caused I/O errors to be thrown.
    
    Signed-off-by: Erick Shepherd <erick.shepherd@ni.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Link: https://lore.kernel.org/r/20250331221337.1414534-1-erick.shepherd@ni.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.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: qcom: Fix read len for onfi param page [+ + +]
Author: Md Sadre Alam <quic_mdalam@quicinc.com>
Date:   Thu Apr 10 15:30:19 2025 +0530

    mtd: rawnand: qcom: Fix read len for onfi param page
    
    commit e6031b11544b44966ba020c867fe438bccd3bdfa upstream.
    
    The minimum size to fetch the data from device to QPIC buffer
    is 512-bytes. If size is less than 512-bytes the data will not be
    protected by ECC as per QPIC standard. So while reading onfi parameter
    page from NAND device set nandc->buf_count = 512.
    
    Cc: stable@vger.kernel.org
    Fixes: 89550beb098e ("mtd: rawnand: qcom: Implement exec_op()")
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Tested-by: Lakshmi Sowjanya D <quic_laksd@quicinc.com>
    Signed-off-by: Md Sadre Alam <quic_mdalam@quicinc.com>
    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/mlx5: Add error handling in mlx5_query_nic_vport_node_guid() [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
Date:   Sun May 25 00:34:25 2025 +0800

    net/mlx5: Add error handling in mlx5_query_nic_vport_node_guid()
    
    commit c6bb8a21cdad8c975a3a646b9e5c8df01ad29783 upstream.
    
    The function mlx5_query_nic_vport_node_guid() calls the function
    mlx5_query_nic_vport_context() but does not check its return value.
    A proper implementation can be found in mlx5_nic_vport_query_local_lb().
    
    Add error handling for mlx5_query_nic_vport_context(). If it fails, free
    the out buffer via kvfree() and return error code.
    
    Fixes: 9efa75254593 ("net/mlx5_core: Introduce access functions to query vport RoCE fields")
    Cc: stable@vger.kernel.org # v4.5
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/20250524163425.1695-1-vulab@iscas.ac.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net/mlx5: HWS, Fix IP version decision [+ + +]
Author: Vlad Dogaru <vdogaru@nvidia.com>
Date:   Tue Apr 22 12:25:38 2025 +0300

    net/mlx5: HWS, Fix IP version decision
    
    [ Upstream commit 5f2f8d8b6800e4fc760c2eccec9b2bd2cacf80cf ]
    
    Unify the check for IP version when creating a definer. A given matcher
    is deemed to match on IPv6 if any of the higher order (>31) bits of
    source or destination address mask are set.
    
    A single packet cannot mix IP versions between source and destination
    addresses, so it makes no sense that they would be decided on
    independently.
    
    Signed-off-by: Vlad Dogaru <vdogaru@nvidia.com>
    Reviewed-by: Yevgeny Kliteynik <kliteyn@nvidia.com>
    Signed-off-by: Mark Bloch <mbloch@nvidia.com>
    Link: https://patch.msgid.link/20250422092540.182091-2-mbloch@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/mlx5: HWS, Harden IP version definer checks [+ + +]
Author: Vlad Dogaru <vdogaru@nvidia.com>
Date:   Tue Apr 22 12:25:39 2025 +0300

    net/mlx5: HWS, Harden IP version definer checks
    
    [ Upstream commit 6991a975e416154576b0f5f06256aec13e23b0a7 ]
    
    Replicate some sanity checks that firmware does, since hardware steering
    does not go through firmware.
    
    When creating a definer, disallow matching on IP addresses without also
    matching on IP version. The latter can be satisfied by matching either
    on the version field in the IP header, or on the ethertype field.
    
    Also refuse to match IPv4 IHL alongside IPv6.
    
    Signed-off-by: Vlad Dogaru <vdogaru@nvidia.com>
    Reviewed-by: Yevgeny Kliteynik <kliteyn@nvidia.com>
    Signed-off-by: Mark Bloch <mbloch@nvidia.com>
    Link: https://patch.msgid.link/20250422092540.182091-3-mbloch@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/mlx5_core: Add error handling inmlx5_query_nic_vport_qkey_viol_cntr() [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
Date:   Wed May 21 21:36:20 2025 +0800

    net/mlx5_core: Add error handling inmlx5_query_nic_vport_qkey_viol_cntr()
    
    commit f0b50730bdd8f2734e548de541e845c0d40dceb6 upstream.
    
    The function mlx5_query_nic_vport_qkey_viol_cntr() calls the function
    mlx5_query_nic_vport_context() but does not check its return value. This
    could lead to undefined behavior if the query fails. A proper
    implementation can be found in mlx5_nic_vport_query_local_lb().
    
    Add error handling for mlx5_query_nic_vport_context(). If it fails, free
    the out buffer via kvfree() and return error code.
    
    Fixes: 9efa75254593 ("net/mlx5_core: Introduce access functions to query vport RoCE fields")
    Cc: stable@vger.kernel.org # v4.5
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/20250521133620.912-1-vulab@iscas.ac.cn
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/sched: fix use-after-free in taprio_dev_notifier [+ + +]
Author: Hyunwoo Kim <imv4bel@gmail.com>
Date:   Fri Jun 13 20:54:57 2025 -0400

    net/sched: fix use-after-free in taprio_dev_notifier
    
    commit b160766e26d4e2e2d6fe2294e0b02f92baefcec5 upstream.
    
    Since taprio’s taprio_dev_notifier() isn’t protected by an
    RCU read-side critical section, a race with advance_sched()
    can lead to a use-after-free.
    
    Adding rcu_read_lock() inside taprio_dev_notifier() prevents this.
    
    Fixes: fed87cc6718a ("net/sched: taprio: automatically calculate queueMaxSDU based on TC gate durations")
    Cc: stable@vger.kernel.org
    Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/aEzIYYxt0is9upYG@v4bel-B760M-AORUS-ELITE-AX
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net: atlantic: generate software timestamp just before the doorbell [+ + +]
Author: Jason Xing <kernelxing@tencent.com>
Date:   Sat May 10 21:48:10 2025 +0800

    net: atlantic: generate software timestamp just before the doorbell
    
    [ Upstream commit 285ad7477559b6b5ceed10ba7ecfed9d17c0e7c6 ]
    
    Make sure the call of skb_tx_timestamp is as close as possible to the
    doorbell.
    
    Signed-off-by: Jason Xing <kernelxing@tencent.com>
    Link: https://patch.msgid.link/20250510134812.48199-2-kerneljasonxing@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    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: bridge: mcast: re-implement br_multicast_{enable, disable}_port functions [+ + +]
Author: Yong Wang <yongwang@nvidia.com>
Date:   Thu Apr 17 15:43:12 2025 +0200

    net: bridge: mcast: re-implement br_multicast_{enable, disable}_port functions
    
    [ Upstream commit 4b30ae9adb047dd0a7982975ec3933c529537026 ]
    
    When a bridge port STP state is changed from BLOCKING/DISABLED to
    FORWARDING, the port's igmp query timer will NOT re-arm itself if the
    bridge has been configured as per-VLAN multicast snooping.
    
    Solve this by choosing the correct multicast context(s) to enable/disable
    port multicast based on whether per-VLAN multicast snooping is enabled or
    not, i.e. using per-{port, VLAN} context in case of per-VLAN multicast
    snooping by re-implementing br_multicast_enable_port() and
    br_multicast_disable_port() functions.
    
    Before the patch, the IGMP query does not happen in the last step of the
    following test sequence, i.e. no growth for tx counter:
     # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 mcast_vlan_snooping 1 mcast_querier 1 mcast_stats_enabled 1
     # bridge vlan global set vid 1 dev br1 mcast_snooping 1 mcast_querier 1 mcast_query_interval 100 mcast_startup_query_count 0
     # ip link add name swp1 up master br1 type dummy
     # bridge link set dev swp1 state 0
     # ip -j -p stats show dev swp1 group xstats_slave subgroup bridge suite mcast | jq '.[]["multicast"]["igmp_queries"]["tx_v2"]'
    1
     # sleep 1
     # ip -j -p stats show dev swp1 group xstats_slave subgroup bridge suite mcast | jq '.[]["multicast"]["igmp_queries"]["tx_v2"]'
    1
     # bridge link set dev swp1 state 3
     # sleep 2
     # ip -j -p stats show dev swp1 group xstats_slave subgroup bridge suite mcast | jq '.[]["multicast"]["igmp_queries"]["tx_v2"]'
    1
    
    After the patch, the IGMP query happens in the last step of the test:
     # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 mcast_vlan_snooping 1 mcast_querier 1 mcast_stats_enabled 1
     # bridge vlan global set vid 1 dev br1 mcast_snooping 1 mcast_querier 1 mcast_query_interval 100 mcast_startup_query_count 0
     # ip link add name swp1 up master br1 type dummy
     # bridge link set dev swp1 state 0
     # ip -j -p stats show dev swp1 group xstats_slave subgroup bridge suite mcast | jq '.[]["multicast"]["igmp_queries"]["tx_v2"]'
    1
     # sleep 1
     # ip -j -p stats show dev swp1 group xstats_slave subgroup bridge suite mcast | jq '.[]["multicast"]["igmp_queries"]["tx_v2"]'
    1
     # bridge link set dev swp1 state 3
     # sleep 2
     # ip -j -p stats show dev swp1 group xstats_slave subgroup bridge suite mcast | jq '.[]["multicast"]["igmp_queries"]["tx_v2"]'
    3
    
    Signed-off-by: Yong Wang <yongwang@nvidia.com>
    Reviewed-by: Andy Roulin <aroulin@nvidia.com>
    Reviewed-by: Ido Schimmel <idosch@nvidia.com>
    Signed-off-by: Petr Machata <petrm@nvidia.com>
    Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: bridge: mcast: update multicast contex when vlan state is changed [+ + +]
Author: Yong Wang <yongwang@nvidia.com>
Date:   Thu Apr 17 15:43:13 2025 +0200

    net: bridge: mcast: update multicast contex when vlan state is changed
    
    [ Upstream commit 6c131043eaf1be2a6cc2d228f92ceb626fbcc0f3 ]
    
    When the vlan STP state is changed, which could be manipulated by
    "bridge vlan" commands, similar to port STP state, this also impacts
    multicast behaviors such as igmp query. In the scenario of per-VLAN
    snooping, there's a need to update the corresponding multicast context
    to re-arm the port query timer when vlan state becomes "forwarding" etc.
    
    Update br_vlan_set_state() function to enable vlan multicast context
    in such scenario.
    
    Before the patch, the IGMP query does not happen in the last step of the
    following test sequence, i.e. no growth for tx counter:
     # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 mcast_vlan_snooping 1 mcast_querier 1 mcast_stats_enabled 1
     # bridge vlan global set vid 1 dev br1 mcast_snooping 1 mcast_querier 1 mcast_query_interval 100 mcast_startup_query_count 0
     # ip link add name swp1 up master br1 type dummy
     # sleep 1
     # bridge vlan set vid 1 dev swp1 state 4
     # ip -j -p stats show dev swp1 group xstats_slave subgroup bridge suite mcast | jq '.[]["multicast"]["igmp_queries"]["tx_v2"]'
    1
     # sleep 1
     # ip -j -p stats show dev swp1 group xstats_slave subgroup bridge suite mcast | jq '.[]["multicast"]["igmp_queries"]["tx_v2"]'
    1
     # bridge vlan set vid 1 dev swp1 state 3
     # sleep 2
     # ip -j -p stats show dev swp1 group xstats_slave subgroup bridge suite mcast | jq '.[]["multicast"]["igmp_queries"]["tx_v2"]'
    1
    
    After the patch, the IGMP query happens in the last step of the test:
     # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 mcast_vlan_snooping 1 mcast_querier 1 mcast_stats_enabled 1
     # bridge vlan global set vid 1 dev br1 mcast_snooping 1 mcast_querier 1 mcast_query_interval 100 mcast_startup_query_count 0
     # ip link add name swp1 up master br1 type dummy
     # sleep 1
     # bridge vlan set vid 1 dev swp1 state 4
     # ip -j -p stats show dev swp1 group xstats_slave subgroup bridge suite mcast | jq '.[]["multicast"]["igmp_queries"]["tx_v2"]'
    1
     # sleep 1
     # ip -j -p stats show dev swp1 group xstats_slave subgroup bridge suite mcast | jq '.[]["multicast"]["igmp_queries"]["tx_v2"]'
    1
     # bridge vlan set vid 1 dev swp1 state 3
     # sleep 2
     # ip -j -p stats show dev swp1 group xstats_slave subgroup bridge suite mcast | jq '.[]["multicast"]["igmp_queries"]["tx_v2"]'
    3
    
    Signed-off-by: Yong Wang <yongwang@nvidia.com>
    Reviewed-by: Andy Roulin <aroulin@nvidia.com>
    Reviewed-by: Ido Schimmel <idosch@nvidia.com>
    Signed-off-by: Petr Machata <petrm@nvidia.com>
    Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    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: clear the dst when changing skb protocol [+ + +]
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Jun 9 17:12:44 2025 -0700

    net: clear the dst when changing skb protocol
    
    commit ba9db6f907ac02215e30128770f85fbd7db2fcf9 upstream.
    
    A not-so-careful NAT46 BPF program can crash the kernel
    if it indiscriminately flips ingress packets from v4 to v6:
    
      BUG: kernel NULL pointer dereference, address: 0000000000000000
        ip6_rcv_core (net/ipv6/ip6_input.c:190:20)
        ipv6_rcv (net/ipv6/ip6_input.c:306:8)
        process_backlog (net/core/dev.c:6186:4)
        napi_poll (net/core/dev.c:6906:9)
        net_rx_action (net/core/dev.c:7028:13)
        do_softirq (kernel/softirq.c:462:3)
        netif_rx (net/core/dev.c:5326:3)
        dev_loopback_xmit (net/core/dev.c:4015:2)
        ip_mc_finish_output (net/ipv4/ip_output.c:363:8)
        NF_HOOK (./include/linux/netfilter.h:314:9)
        ip_mc_output (net/ipv4/ip_output.c:400:5)
        dst_output (./include/net/dst.h:459:9)
        ip_local_out (net/ipv4/ip_output.c:130:9)
        ip_send_skb (net/ipv4/ip_output.c:1496:8)
        udp_send_skb (net/ipv4/udp.c:1040:8)
        udp_sendmsg (net/ipv4/udp.c:1328:10)
    
    The output interface has a 4->6 program attached at ingress.
    We try to loop the multicast skb back to the sending socket.
    Ingress BPF runs as part of netif_rx(), pushes a valid v6 hdr
    and changes skb->protocol to v6. We enter ip6_rcv_core which
    tries to use skb_dst(). But the dst is still an IPv4 one left
    after IPv4 mcast output.
    
    Clear the dst in all BPF helpers which change the protocol.
    Try to preserve metadata dsts, those may carry non-routing
    metadata.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Maciej Żenczykowski <maze@google.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Fixes: d219df60a70e ("bpf: Add ipip6 and ip6ip decap support for bpf_skb_adjust_room()")
    Fixes: 1b00e0dfe7d0 ("bpf: update skb->protocol in bpf_skb_net_grow")
    Fixes: 6578171a7ff0 ("bpf: add bpf_skb_change_proto helper")
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://patch.msgid.link/20250610001245.1981782-1-kuba@kernel.org
    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: ethernet: cortina: Use TOE/TSO on all TCP [+ + +]
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Tue Apr 8 11:26:58 2025 +0200

    net: ethernet: cortina: Use TOE/TSO on all TCP
    
    [ Upstream commit 6a07e3af4973402fa199a80036c10060b922c92c ]
    
    It is desireable to push the hardware accelerator to also
    process non-segmented TCP frames: we pass the skb->len
    to the "TOE/TSO" offloader and it will handle them.
    
    Without this quirk the driver becomes unstable and lock
    up and and crash.
    
    I do not know exactly why, but it is probably due to the
    TOE (TCP offload engine) feature that is coupled with the
    segmentation feature - it is not possible to turn one
    part off and not the other, either both TOE and TSO are
    active, or neither of them.
    
    Not having the TOE part active seems detrimental, as if
    that hardware feature is not really supposed to be turned
    off.
    
    The datasheet says:
    
      "Based on packet parsing and TCP connection/NAT table
       lookup results, the NetEngine puts the packets
       belonging to the same TCP connection to the same queue
       for the software to process. The NetEngine puts
       incoming packets to the buffer or series of buffers
       for a jumbo packet. With this hardware acceleration,
       IP/TCP header parsing, checksum validation and
       connection lookup are offloaded from the software
       processing."
    
    After numerous tests with the hardware locking up after
    something between minutes and hours depending on load
    using iperf3 I have concluded this is necessary to stabilize
    the hardware.
    
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://patch.msgid.link/20250408-gemini-ethernet-tso-always-v1-1-e669f932359c@linaro.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ethernet: ti: am65-cpsw: handle -EPROBE_DEFER [+ + +]
Author: Michael Walle <mwalle@kernel.org>
Date:   Mon Apr 14 10:43:36 2025 +0200

    net: ethernet: ti: am65-cpsw: handle -EPROBE_DEFER
    
    [ Upstream commit 09737cb80b8686ffca4ed1805fee745d5c85604d ]
    
    of_get_mac_address() might fetch the MAC address from NVMEM and that
    driver might not have been loaded. In that case, -EPROBE_DEFER is
    returned. Right now, this will trigger an immediate fallback to
    am65_cpsw_am654_get_efuse_macid() possibly resulting in a random MAC
    address although the MAC address is stored in the referenced NVMEM.
    
    Fix it by handling the -EPROBE_DEFER return code correctly. This also
    means that the creation of the MDIO device has to be moved to a later
    stage as -EPROBE_DEFER must not be returned after child devices are
    created.
    
    Signed-off-by: Michael Walle <mwalle@kernel.org>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://patch.msgid.link/20250414084336.4017237-3-mwalle@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: Fix checksum update for ILA adj-transport [+ + +]
Author: Paul Chaignon <paul.chaignon@gmail.com>
Date:   Thu May 29 12:28:05 2025 +0200

    net: Fix checksum update for ILA adj-transport
    
    commit 6043b794c7668c19dabc4a93c75b924a19474d59 upstream.
    
    During ILA address translations, the L4 checksums can be handled in
    different ways. One of them, adj-transport, consist in parsing the
    transport layer and updating any found checksum. This logic relies on
    inet_proto_csum_replace_by_diff and produces an incorrect skb->csum when
    in state CHECKSUM_COMPLETE.
    
    This bug can be reproduced with a simple ILA to SIR mapping, assuming
    packets are received with CHECKSUM_COMPLETE:
    
      $ ip a show dev eth0
      14: eth0@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
          link/ether 62:ae:35:9e:0f:8d brd ff:ff:ff:ff:ff:ff link-netnsid 0
          inet6 3333:0:0:1::c078/64 scope global
             valid_lft forever preferred_lft forever
          inet6 fd00:10:244:1::c078/128 scope global nodad
             valid_lft forever preferred_lft forever
          inet6 fe80::60ae:35ff:fe9e:f8d/64 scope link proto kernel_ll
             valid_lft forever preferred_lft forever
      $ ip ila add loc_match fd00:10:244:1 loc 3333:0:0:1 \
          csum-mode adj-transport ident-type luid dev eth0
    
    Then I hit [fd00:10:244:1::c078]:8000 with a server listening only on
    [3333:0:0:1::c078]:8000. With the bug, the SYN packet is dropped with
    SKB_DROP_REASON_TCP_CSUM after inet_proto_csum_replace_by_diff changed
    skb->csum. The translation and drop are visible on pwru [1] traces:
    
      IFACE   TUPLE                                                        FUNC
      eth0:9  [fd00:10:244:3::3d8]:51420->[fd00:10:244:1::c078]:8000(tcp)  ipv6_rcv
      eth0:9  [fd00:10:244:3::3d8]:51420->[fd00:10:244:1::c078]:8000(tcp)  ip6_rcv_core
      eth0:9  [fd00:10:244:3::3d8]:51420->[fd00:10:244:1::c078]:8000(tcp)  nf_hook_slow
      eth0:9  [fd00:10:244:3::3d8]:51420->[fd00:10:244:1::c078]:8000(tcp)  inet_proto_csum_replace_by_diff
      eth0:9  [fd00:10:244:3::3d8]:51420->[3333:0:0:1::c078]:8000(tcp)     tcp_v6_early_demux
      eth0:9  [fd00:10:244:3::3d8]:51420->[3333:0:0:1::c078]:8000(tcp)     ip6_route_input
      eth0:9  [fd00:10:244:3::3d8]:51420->[3333:0:0:1::c078]:8000(tcp)     ip6_input
      eth0:9  [fd00:10:244:3::3d8]:51420->[3333:0:0:1::c078]:8000(tcp)     ip6_input_finish
      eth0:9  [fd00:10:244:3::3d8]:51420->[3333:0:0:1::c078]:8000(tcp)     ip6_protocol_deliver_rcu
      eth0:9  [fd00:10:244:3::3d8]:51420->[3333:0:0:1::c078]:8000(tcp)     raw6_local_deliver
      eth0:9  [fd00:10:244:3::3d8]:51420->[3333:0:0:1::c078]:8000(tcp)     ipv6_raw_deliver
      eth0:9  [fd00:10:244:3::3d8]:51420->[3333:0:0:1::c078]:8000(tcp)     tcp_v6_rcv
      eth0:9  [fd00:10:244:3::3d8]:51420->[3333:0:0:1::c078]:8000(tcp)     __skb_checksum_complete
      eth0:9  [fd00:10:244:3::3d8]:51420->[3333:0:0:1::c078]:8000(tcp)     kfree_skb_reason(SKB_DROP_REASON_TCP_CSUM)
      eth0:9  [fd00:10:244:3::3d8]:51420->[3333:0:0:1::c078]:8000(tcp)     skb_release_head_state
      eth0:9  [fd00:10:244:3::3d8]:51420->[3333:0:0:1::c078]:8000(tcp)     skb_release_data
      eth0:9  [fd00:10:244:3::3d8]:51420->[3333:0:0:1::c078]:8000(tcp)     skb_free_head
      eth0:9  [fd00:10:244:3::3d8]:51420->[3333:0:0:1::c078]:8000(tcp)     kfree_skbmem
    
    This is happening because inet_proto_csum_replace_by_diff is updating
    skb->csum when it shouldn't. The L4 checksum is updated such that it
    "cancels" the IPv6 address change in terms of checksum computation, so
    the impact on skb->csum is null.
    
    Note this would be different for an IPv4 packet since three fields
    would be updated: the IPv4 address, the IP checksum, and the L4
    checksum. Two would cancel each other and skb->csum would still need
    to be updated to take the L4 checksum change into account.
    
    This patch fixes it by passing an ipv6 flag to
    inet_proto_csum_replace_by_diff, to skip the skb->csum update if we're
    in the IPv6 case. Note the behavior of the only other user of
    inet_proto_csum_replace_by_diff, the BPF subsystem, is left as is in
    this patch and fixed in the subsequent patch.
    
    With the fix, using the reproduction from above, I can confirm
    skb->csum is not touched by inet_proto_csum_replace_by_diff and the TCP
    SYN proceeds to the application after the ILA translation.
    
    Link: https://github.com/cilium/pwru [1]
    Fixes: 65d7ab8de582 ("net: Identifier Locator Addressing module")
    Signed-off-by: Paul Chaignon <paul.chaignon@gmail.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://patch.msgid.link/b5539869e3550d46068504feb02d37653d939c0b.1748509484.git.paul.chaignon@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Paul Chaignon <paul.chaignon@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: ftgmac100: select FIXED_PHY [+ + +]
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Tue Jun 17 20:20:17 2025 +0200

    net: ftgmac100: select FIXED_PHY
    
    commit ae409629e022fbebbc6d31a1bfeccdbbeee20fd6 upstream.
    
    Depending on e.g. DT configuration this driver uses a fixed link.
    So we shouldn't rely on the user to enable FIXED_PHY, select it in
    Kconfig instead. We may end up with a non-functional driver otherwise.
    
    Fixes: 38561ded50d0 ("net: ftgmac100: support fixed link")
    Cc: stable@vger.kernel.org
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://patch.msgid.link/476bb33b-5584-40f0-826a-7294980f2895@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: ice: Perform accurate aRFS flow match [+ + +]
Author: Krishna Kumar <krikku@gmail.com>
Date:   Tue May 20 22:36:56 2025 +0530

    net: ice: Perform accurate aRFS flow match
    
    [ Upstream commit 5d3bc9e5e725aa36cca9b794e340057feb6880b4 ]
    
    This patch fixes an issue seen in a large-scale deployment under heavy
    incoming pkts where the aRFS flow wrongly matches a flow and reprograms the
    NIC with wrong settings. That mis-steering causes RX-path latency spikes
    and noisy neighbor effects when many connections collide on the same
    hash (some of our production servers have 20-30K connections).
    
    set_rps_cpu() calls ndo_rx_flow_steer() with flow_id that is calculated by
    hashing the skb sized by the per rx-queue table size. This results in
    multiple connections (even across different rx-queues) getting the same
    hash value. The driver steer function modifies the wrong flow to use this
    rx-queue, e.g.: Flow#1 is first added:
        Flow#1:  <ip1, port1, ip2, port2>, Hash 'h', q#10
    
    Later when a new flow needs to be added:
                Flow#2:  <ip3, port3, ip4, port4>, Hash 'h', q#20
    
    The driver finds the hash 'h' from Flow#1 and updates it to use q#20. This
    results in both flows getting un-optimized - packets for Flow#1 goes to
    q#20, and then reprogrammed back to q#10 later and so on; and Flow #2
    programming is never done as Flow#1 is matched first for all misses. Many
    flows may wrongly share the same hash and reprogram rules of the original
    flow each with their own q#.
    
    Tested on two 144-core servers with 16K netperf sessions for 180s. Netperf
    clients are pinned to cores 0-71 sequentially (so that wrong packets on q#s
    72-143 can be measured). IRQs are set 1:1 for queues -> CPUs, enable XPS,
    enable aRFS (global value is 144 * rps_flow_cnt).
    
    Test notes about results from ice_rx_flow_steer():
    ---------------------------------------------------
    1. "Skip:" counter increments here:
        if (fltr_info->q_index == rxq_idx ||
            arfs_entry->fltr_state != ICE_ARFS_ACTIVE)
                goto out;
    2. "Add:" counter increments here:
        ret = arfs_entry->fltr_info.fltr_id;
        INIT_HLIST_NODE(&arfs_entry->list_entry);
    3. "Update:" counter increments here:
        /* update the queue to forward to on an already existing flow */
    
    Runtime comparison: original code vs with the patch for different
    rps_flow_cnt values.
    
    +-------------------------------+--------------+--------------+
    | rps_flow_cnt                  |      512     |    2048      |
    +-------------------------------+--------------+--------------+
    | Ratio of Pkts on Good:Bad q's | 214 vs 822K  | 1.1M vs 980K |
    | Avoid wrong aRFS programming  | 0 vs 310K    | 0 vs 30K     |
    | CPU User                      | 216 vs 183   | 216 vs 206   |
    | CPU System                    | 1441 vs 1171 | 1447 vs 1320 |
    | CPU Softirq                   | 1245 vs 920  | 1238 vs 961  |
    | CPU Total                     | 29 vs 22.7   | 29 vs 24.9   |
    | aRFS Update                   | 533K vs 59   | 521K vs 32   |
    | aRFS Skip                     | 82M vs 77M   | 7.2M vs 4.5M |
    +-------------------------------+--------------+--------------+
    
    A separate TCP_STREAM and TCP_RR with 1,4,8,16,64,128,256,512 connections
    showed no performance degradation.
    
    Some points on the patch/aRFS behavior:
    1. Enabling full tuple matching ensures flows are always correctly matched,
       even with smaller hash sizes.
    2. 5-6% drop in CPU utilization as the packets arrive at the correct CPUs
       and fewer calls to driver for programming on misses.
    3. Larger hash tables reduces mis-steering due to more unique flow hashes,
       but still has clashes. However, with larger per-device rps_flow_cnt, old
       flows take more time to expire and new aRFS flows cannot be added if h/w
       limits are reached (rps_may_expire_flow() succeeds when 10*rps_flow_cnt
       pkts have been processed by this cpu that are not part of the flow).
    
    Fixes: 28bf26724fdb0 ("ice: Implement aRFS")
    Signed-off-by: Krishna Kumar <krikku@gmail.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    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>

net: lan743x: fix potential out-of-bounds write in lan743x_ptp_io_event_clock_get() [+ + +]
Author: Alexey Kodanev <aleksei.kodanev@bell-sw.com>
Date:   Mon Jun 16 11:37:43 2025 +0000

    net: lan743x: fix potential out-of-bounds write in lan743x_ptp_io_event_clock_get()
    
    [ Upstream commit e353b0854d3a1a31cb061df8d022fbfea53a0f24 ]
    
    Before calling lan743x_ptp_io_event_clock_get(), the 'channel' value
    is checked against the maximum value of PCI11X1X_PTP_IO_MAX_CHANNELS(8).
    This seems correct and aligns with the PTP interrupt status register
    (PTP_INT_STS) specifications.
    
    However, lan743x_ptp_io_event_clock_get() writes to ptp->extts[] with
    only LAN743X_PTP_N_EXTTS(4) elements, using channel as an index:
    
        lan743x_ptp_io_event_clock_get(..., u8 channel,...)
        {
            ...
            /* Update Local timestamp */
            extts = &ptp->extts[channel];
            extts->ts.tv_sec = sec;
            ...
        }
    
    To avoid an out-of-bounds write and utilize all the supported GPIO
    inputs, set LAN743X_PTP_N_EXTTS to 8.
    
    Detected using the static analysis tool - Svace.
    Fixes: 60942c397af6 ("net: lan743x: Add support for PTP-IO Event Input External Timestamp (extts)")
    Signed-off-by: Alexey Kodanev <aleksei.kodanev@bell-sw.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Acked-by: Rengarajan S <rengarajan.s@microchip.com>
    Link: https://patch.msgid.link/20250616113743.36284-1-aleksei.kodanev@bell-sw.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: lan743x: Modify the EEPROM and OTP size for PCI1xxxx devices [+ + +]
Author: Rengarajan S <rengarajan.s@microchip.com>
Date:   Fri May 23 23:03:26 2025 +0530

    net: lan743x: Modify the EEPROM and OTP size for PCI1xxxx devices
    
    [ Upstream commit 3b9935586a9b54d2da27901b830d3cf46ad66a1e ]
    
    Maximum OTP and EEPROM size for hearthstone PCI1xxxx devices are 8 Kb
    and 64 Kb respectively. Adjust max size definitions and return correct
    EEPROM length based on device. Also prevent out-of-bound read/write.
    
    Signed-off-by: Rengarajan S <rengarajan.s@microchip.com>
    Link: https://patch.msgid.link/20250523173326.18509-1-rengarajan.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: 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: netmem: fix skb_ensure_writable with unreadable skbs [+ + +]
Author: Mina Almasry <almasrymina@google.com>
Date:   Sun Jun 15 20:07:33 2025 +0000

    net: netmem: fix skb_ensure_writable with unreadable skbs
    
    [ Upstream commit 6f793a1d053775f8324b8dba1e7ed224f8b0166f ]
    
    skb_ensure_writable should succeed when it's trying to write to the
    header of the unreadable skbs, so it doesn't need an unconditional
    skb_frags_readable check. The preceding pskb_may_pull() call will
    succeed if write_len is within the head and fail if we're trying to
    write to the unreadable payload, so we don't need an additional check.
    
    Removing this check restores DSCP functionality with unreadable skbs as
    it's called from dscp_tg.
    
    Cc: willemb@google.com
    Cc: asml.silence@gmail.com
    Fixes: 65249feb6b3d ("net: add support for skbs with unreadable frags")
    Signed-off-by: Mina Almasry <almasrymina@google.com>
    Acked-by: Stanislav Fomichev <sdf@fomichev.me>
    Link: https://patch.msgid.link/20250615200733.520113-1-almasrymina@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: page_pool: Don't recycle into cache on PREEMPT_RT [+ + +]
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Mon May 12 11:27:22 2025 +0200

    net: page_pool: Don't recycle into cache on PREEMPT_RT
    
    [ Upstream commit 32471b2f481dea8624f27669d36ffd131d24b732 ]
    
    With preemptible softirq and no per-CPU locking in local_bh_disable() on
    PREEMPT_RT the consumer can be preempted while a skb is returned.
    
    Avoid the race by disabling the recycle into the cache on PREEMPT_RT.
    
    Cc: Jesper Dangaard Brouer <hawk@kernel.org>
    Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Link: https://patch.msgid.link/20250512092736.229935-2-bigeasy@linutronix.de
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: stmmac: generate software timestamp just before the doorbell [+ + +]
Author: Jason Xing <kernelxing@tencent.com>
Date:   Sat May 10 21:48:12 2025 +0800

    net: stmmac: generate software timestamp just before the doorbell
    
    [ Upstream commit 33d4cc81fcd930fdbcca7ac9e8959225cbec0a5e ]
    
    Make sure the call of skb_tx_timestamp is as close as possbile to the
    doorbell.
    
    The patch also adjusts the order of setting SKBTX_IN_PROGRESS and
    generate software timestamp so that without SOF_TIMESTAMPING_OPT_TX_SWHW
    being set the software and hardware timestamps will not appear in the
    error queue of socket nearly at the same time (Please see __skb_tstamp_tx()).
    
    Signed-off-by: Jason Xing <kernelxing@tencent.com>
    Link: https://patch.msgid.link/20250510134812.48199-4-kerneljasonxing@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: vertexcom: mse102x: Return code for mse102x_rx_pkt_spi [+ + +]
Author: Stefan Wahren <wahrenst@gmx.net>
Date:   Fri May 9 14:04:34 2025 +0200

    net: vertexcom: mse102x: Return code for mse102x_rx_pkt_spi
    
    [ Upstream commit 4ecf56f4b66011b583644bf9a62188d05dfcd78c ]
    
    The MSE102x doesn't provide any interrupt register, so the only way
    to handle the level interrupt is to fetch the whole packet from
    the MSE102x internal buffer via SPI. So in cases the interrupt
    handler fails to do this, it should return IRQ_NONE. This allows
    the core to disable the interrupt in case the issue persists
    and prevent an interrupt storm.
    
    Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
    Link: https://patch.msgid.link/20250509120435.43646-6-wahrenst@gmx.net
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net_sched: sch_sfq: reject invalid perturb period [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jun 11 08:35:01 2025 +0000

    net_sched: sch_sfq: reject invalid perturb period
    
    commit 7ca52541c05c832d32b112274f81a985101f9ba8 upstream.
    
    Gerrard Tai reported that SFQ perturb_period has no range check yet,
    and this can be used to trigger a race condition fixed in a separate patch.
    
    We want to make sure ctl->perturb_period * HZ will not overflow
    and is positive.
    
    Tested:
    
    tc qd add dev lo root sfq perturb -10   # negative value : error
    Error: sch_sfq: invalid perturb period.
    
    tc qd add dev lo root sfq perturb 1000000000 # too big : error
    Error: sch_sfq: invalid perturb period.
    
    tc qd add dev lo root sfq perturb 2000000 # acceptable value
    tc -s -d qd sh dev lo
    qdisc sfq 8005: root refcnt 2 limit 127p quantum 64Kb depth 127 flows 128 divisor 1024 perturb 2000000sec
     Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
     backlog 0b 0p requeues 0
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Gerrard Tai <gerrard.tai@starlabs.sg>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20250611083501.1810459-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
netdevsim: Mark NAPI ID on skb in nsim_rcv [+ + +]
Author: Joe Damato <jdamato@fastly.com>
Date:   Thu Apr 24 00:27:31 2025 +0000

    netdevsim: Mark NAPI ID on skb in nsim_rcv
    
    [ Upstream commit f71c549b26a33fd62f1e9c7deeba738bfc73fbfc ]
    
    Previously, nsim_rcv was not marking the NAPI ID on the skb, leading to
    applications seeing a napi ID of 0 when using SO_INCOMING_NAPI_ID.
    
    To add to the userland confusion, netlink appears to correctly report
    the NAPI IDs for netdevsim queues but the resulting file descriptor from
    a call to accept() was reporting a NAPI ID of 0.
    
    Signed-off-by: Joe Damato <jdamato@fastly.com>
    Link: https://patch.msgid.link/20250424002746.16891-2-jdamato@fastly.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfilter: nft_set_pipapo: clamp maximum map bucket size to INT_MAX [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Tue Apr 22 21:52:44 2025 +0200

    netfilter: nft_set_pipapo: clamp maximum map bucket size to INT_MAX
    
    [ Upstream commit b85e3367a5716ed3662a4fe266525190d2af76df ]
    
    Otherwise, it is possible to hit WARN_ON_ONCE in __kvmalloc_node_noprof()
    when resizing hashtable because __GFP_NOWARN is unset.
    
    Similar to:
    
      b541ba7d1f5a ("netfilter: conntrack: clamp maximum hashtable size to INT_MAX")
    
    Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.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 race between nfsd registration and exports_proc [+ + +]
Author: Maninder Singh <maninder1.s@samsung.com>
Date:   Thu Mar 6 14:50:07 2025 +0530

    NFSD: fix race between nfsd registration and exports_proc
    
    commit f7fb730cac9aafda8b9813b55d04e28a9664d17c upstream.
    
    As of now nfsd calls create_proc_exports_entry() at start of init_nfsd
    and cleanup by remove_proc_entry() at last of exit_nfsd.
    
    Which causes kernel OOPs if there is race between below 2 operations:
    (i) exportfs -r
    (ii) mount -t nfsd none /proc/fs/nfsd
    
    for 5.4 kernel ARM64:
    
    CPU 1:
    el1_irq+0xbc/0x180
    arch_counter_get_cntvct+0x14/0x18
    running_clock+0xc/0x18
    preempt_count_add+0x88/0x110
    prep_new_page+0xb0/0x220
    get_page_from_freelist+0x2d8/0x1778
    __alloc_pages_nodemask+0x15c/0xef0
    __vmalloc_node_range+0x28c/0x478
    __vmalloc_node_flags_caller+0x8c/0xb0
    kvmalloc_node+0x88/0xe0
    nfsd_init_net+0x6c/0x108 [nfsd]
    ops_init+0x44/0x170
    register_pernet_operations+0x114/0x270
    register_pernet_subsys+0x34/0x50
    init_nfsd+0xa8/0x718 [nfsd]
    do_one_initcall+0x54/0x2e0
    
    CPU 2 :
    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010
    
    PC is at : exports_net_open+0x50/0x68 [nfsd]
    
    Call trace:
    exports_net_open+0x50/0x68 [nfsd]
    exports_proc_open+0x2c/0x38 [nfsd]
    proc_reg_open+0xb8/0x198
    do_dentry_open+0x1c4/0x418
    vfs_open+0x38/0x48
    path_openat+0x28c/0xf18
    do_filp_open+0x70/0xe8
    do_sys_open+0x154/0x248
    
    Sometimes it crashes at exports_net_open() and sometimes cache_seq_next_rcu().
    
    and same is happening on latest 6.14 kernel as well:
    
    [    0.000000] Linux version 6.14.0-rc5-next-20250304-dirty
    ...
    [  285.455918] Unable to handle kernel paging request at virtual address 00001f4800001f48
    ...
    [  285.464902] pc : cache_seq_next_rcu+0x78/0xa4
    ...
    [  285.469695] Call trace:
    [  285.470083]  cache_seq_next_rcu+0x78/0xa4 (P)
    [  285.470488]  seq_read+0xe0/0x11c
    [  285.470675]  proc_reg_read+0x9c/0xf0
    [  285.470874]  vfs_read+0xc4/0x2fc
    [  285.471057]  ksys_read+0x6c/0xf4
    [  285.471231]  __arm64_sys_read+0x1c/0x28
    [  285.471428]  invoke_syscall+0x44/0x100
    [  285.471633]  el0_svc_common.constprop.0+0x40/0xe0
    [  285.471870]  do_el0_svc_compat+0x1c/0x34
    [  285.472073]  el0_svc_compat+0x2c/0x80
    [  285.472265]  el0t_32_sync_handler+0x90/0x140
    [  285.472473]  el0t_32_sync+0x19c/0x1a0
    [  285.472887] Code: f9400885 93407c23 937d7c27 11000421 (f86378a3)
    [  285.473422] ---[ end trace 0000000000000000 ]---
    
    It reproduced simply with below script:
    while [ 1 ]
    do
    /exportfs -r
    done &
    
    while [ 1 ]
    do
    insmod /nfsd.ko
    mount -t nfsd none /proc/fs/nfsd
    umount /proc/fs/nfsd
    rmmod nfsd
    done &
    
    So exporting interfaces to user space shall be done at last and
    cleanup at first place.
    
    With change there is no Kernel OOPs.
    
    Co-developed-by: Shubham Rana <s9.rana@samsung.com>
    Signed-off-by: Shubham Rana <s9.rana@samsung.com>
    Signed-off-by: Maninder Singh <maninder1.s@samsung.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

NFSD: Implement FATTR4_CLONE_BLKSIZE attribute [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Wed May 7 10:45:15 2025 -0400

    NFSD: Implement FATTR4_CLONE_BLKSIZE attribute
    
    commit d6ca7d2643eebe09cf46840bdc7d68b6e07aba77 upstream.
    
    RFC 7862 states that if an NFS server implements a CLONE operation,
    it MUST also implement FATTR4_CLONE_BLKSIZE. NFSD implements CLONE,
    but does not implement FATTR4_CLONE_BLKSIZE.
    
    Note that in Section 12.2, RFC 7862 claims that
    FATTR4_CLONE_BLKSIZE is RECOMMENDED, not REQUIRED. Likely this is
    because a minor version is not permitted to add a REQUIRED
    attribute. Confusing.
    
    We assume this attribute reports a block size as a count of bytes,
    as RFC 7862 does not specify a unit.
    
    Reported-by: Roland Mainz <roland.mainz@nrubsig.org>
    Suggested-by: Christoph Hellwig <hch@infradead.org>
    Reviewed-by: Roland Mainz <roland.mainz@nrubsig.org>
    Cc: stable@vger.kernel.org # v6.7+
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nfsd: Initialize ssc before laundromat_work to prevent NULL dereference [+ + +]
Author: Li Lingfeng <lilingfeng3@huawei.com>
Date:   Mon Apr 14 22:38:52 2025 +0800

    nfsd: Initialize ssc before laundromat_work to prevent NULL dereference
    
    commit b31da62889e6d610114d81dc7a6edbcaa503fcf8 upstream.
    
    In nfs4_state_start_net(), laundromat_work may access nfsd_ssc through
    nfs4_laundromat -> nfsd4_ssc_expire_umount. If nfsd_ssc isn't initialized,
    this can cause NULL pointer dereference.
    
    Normally the delayed start of laundromat_work allows sufficient time for
    nfsd_ssc initialization to complete. However, when the kernel waits too
    long for userspace responses (e.g. in nfs4_state_start_net ->
    nfsd4_end_grace -> nfsd4_record_grace_done -> nfsd4_cld_grace_done ->
    cld_pipe_upcall -> __cld_pipe_upcall -> wait_for_completion path), the
    delayed work may start before nfsd_ssc initialization finishes.
    
    Fix this by moving nfsd_ssc initialization before starting laundromat_work.
    
    Fixes: f4e44b393389 ("NFSD: delay unmount source's export after inter-server copy completed.")
    Cc: stable@vger.kernel.org
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Li Lingfeng <lilingfeng3@huawei.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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>

 
NFSD: unregister filesystem in case genl_register_family() fails [+ + +]
Author: Maninder Singh <maninder1.s@samsung.com>
Date:   Thu Mar 6 14:50:06 2025 +0530

    NFSD: unregister filesystem in case genl_register_family() fails
    
    commit ff12eb379554eea7932ad6caea55e3091701cce4 upstream.
    
    With rpc_status netlink support, unregister of register_filesystem()
    was missed in case of genl_register_family() fails.
    
    Correcting it by making new label.
    
    Fixes: bd9d6a3efa97 ("NFSD: add rpc_status netlink support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Maninder Singh <maninder1.s@samsung.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nfsd: use threads array as-is in netlink interface [+ + +]
Author: Jeff Layton <jlayton@kernel.org>
Date:   Tue May 27 20:12:47 2025 -0400

    nfsd: use threads array as-is in netlink interface
    
    commit 8ea688a3372e8369dc04395b39b4e71a6d91d4d5 upstream.
    
    The old nfsdfs interface for starting a server with multiple pools
    handles the special case of a single entry array passed down from
    userland by distributing the threads over every NUMA node.
    
    The netlink control interface however constructs an array of length
    nfsd_nrpools() and fills any unprovided slots with 0's. This behavior
    defeats the special casing that the old interface relies on.
    
    Change nfsd_nl_threads_set_doit() to pass down the array from userland
    as-is.
    
    Fixes: 7f5c330b2620 ("nfsd: allow passing in array of thread counts via netlink")
    Cc: stable@vger.kernel.org
    Reported-by: Mike Snitzer <snitzer@kernel.org>
    Closes: https://lore.kernel.org/linux-nfs/aDC-ftnzhJAlwqwh@kernel.org/
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Tested-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
NFSv4: Don't check for OPEN feature support in v4.1 [+ + +]
Author: Scott Mayhew <smayhew@redhat.com>
Date:   Wed Apr 30 07:12:29 2025 -0400

    NFSv4: Don't check for OPEN feature support in v4.1
    
    commit 4d4832ed13ff505fe0371544b4773e79be2bb964 upstream.
    
    fattr4_open_arguments is a v4.2 recommended attribute, so we shouldn't
    be sending it to v4.1 servers.
    
    Fixes: cb78f9b7d0c0 ("nfs: fix the fetch of FATTR4_OPEN_ARGUMENTS")
    Signed-off-by: Scott Mayhew <smayhew@redhat.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
    Cc: stable@vger.kernel.org # 6.11+
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nvme: always punt polled uring_cmd end_io work to task_work [+ + +]
Author: Jens Axboe <axboe@kernel.dk>
Date:   Fri Jun 13 13:37:41 2025 -0600

    nvme: always punt polled uring_cmd end_io work to task_work
    
    commit 9ce6c9875f3e995be5fd720b65835291f8a609b1 upstream.
    
    Currently NVMe uring_cmd completions will complete locally, if they are
    polled. This is done because those completions are always invoked from
    task context. And while that is true, there's no guarantee that it's
    invoked under the right ring context, or even task. If someone does
    NVMe passthrough via multiple threads and with a limited number of
    poll queues, then ringA may find completions from ringB. For that case,
    completing the request may not be sound.
    
    Always just punt the passthrough completions via task_work, which will
    redirect the completion, if needed.
    
    Cc: stable@vger.kernel.org
    Fixes: 585079b6e425 ("nvme: wire up async polling for io passthrough commands")
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
octeontx2-pf: Add error log forcn10k_map_unmap_rq_policer() [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
Date:   Tue Apr 8 11:26:02 2025 +0800

    octeontx2-pf: Add error log forcn10k_map_unmap_rq_policer()
    
    [ Upstream commit 9c056ec6dd1654b1420dafbbe2a69718850e6ff2 ]
    
    The cn10k_free_matchall_ipolicer() calls the cn10k_map_unmap_rq_policer()
    for each queue in a for loop without checking for any errors.
    
    Check the return value of the cn10k_map_unmap_rq_policer() function during
    each loop, and report a warning if the function fails.
    
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250408032602.2909-1-vulab@iscas.ac.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ovl: Fix nested backing file paths [+ + +]
Author: André Almeida <andrealmeid@igalia.com>
Date:   Tue Apr 29 15:38:50 2025 -0300

    ovl: Fix nested backing file paths
    
    commit 924577e4f6ca473de1528953a0e13505fae61d7b upstream.
    
    When the lowerdir of an overlayfs is a merged directory of another
    overlayfs, ovl_open_realfile() will fail to open the real file and point
    to a lower dentry copy, without the proper parent path. After this,
    d_path() will then display the path incorrectly as if the file is placed
    in the root directory.
    
    This bug can be triggered with the following setup:
    
     mkdir -p ovl-A/lower ovl-A/upper ovl-A/merge ovl-A/work
     mkdir -p ovl-B/upper ovl-B/merge ovl-B/work
    
     cp /bin/cat ovl-A/lower/
    
     mount -t overlay overlay -o \
     lowerdir=ovl-A/lower,upperdir=ovl-A/upper,workdir=ovl-A/work \
     ovl-A/merge
    
     mount -t overlay overlay -o \
     lowerdir=ovl-A/merge,upperdir=ovl-B/upper,workdir=ovl-B/work \
     ovl-B/merge
    
     ovl-A/merge/cat /proc/self/maps | grep --color cat
     ovl-B/merge/cat /proc/self/maps | grep --color cat
    
    The first cat will correctly show `/ovl-A/merge/cat`, while the second
    one shows just `/cat`.
    
    To fix that, uses file_user_path() inside of backing_file_open() to get
    the correct file path for the dentry.
    
    Co-developed-by: John Schoenick <johns@valvesoftware.com>
    Signed-off-by: John Schoenick <johns@valvesoftware.com>
    Signed-off-by: André Almeida <andrealmeid@igalia.com>
    Fixes: def3ae83da02 ("fs: store real path instead of fake path in backing file f_path")
    Cc: <stable@vger.kernel.org> # v6.7
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
parisc/unaligned: Fix hex output to show 8 hex chars [+ + +]
Author: Helge Deller <deller@gmx.de>
Date:   Sat May 31 15:26:27 2025 +0200

    parisc/unaligned: Fix hex output to show 8 hex chars
    
    commit 213205889d5ffc19cb8df06aa6778b2d4724c887 upstream.
    
    Change back printk format to 0x%08lx instead of %#08lx, since the latter
    does not seem to reliably format the value to 8 hex chars.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: stable@vger.kernel.org # v5.18+
    Fixes: e5e9e7f222e5b ("parisc/unaligned: Enhance user-space visible output")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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: cadence-ep: Correct PBA offset in .set_msix() callback [+ + +]
Author: Niklas Cassel <cassel@kernel.org>
Date:   Wed May 14 09:43:15 2025 +0200

    PCI: cadence-ep: Correct PBA offset in .set_msix() callback
    
    commit c8bcb01352a86bc5592403904109c22b66bd916e upstream.
    
    While cdns_pcie_ep_set_msix() writes the Table Size field correctly (N-1),
    the calculation of the PBA offset is wrong because it calculates space for
    (N-1) entries instead of N.
    
    This results in the following QEMU error when using PCI passthrough on a
    device which relies on the PCI endpoint subsystem:
    
      failed to add PCI capability 0x11[0x50]@0xb0: table & pba overlap, or they don't fit in BARs, or don't align
    
    Fix the calculation of PBA offset in the MSI-X capability.
    
    [bhelgaas: more specific subject and commit log]
    
    Fixes: 3ef5d16f50f8 ("PCI: cadence: Add MSI-X support to Endpoint driver")
    Signed-off-by: Niklas Cassel <cassel@kernel.org>
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20250514074313.283156-10-cassel@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

PCI: dw-rockchip: Fix PHY function call sequence in rockchip_pcie_phy_deinit() [+ + +]
Author: Diederik de Haas <didi.debian@cknow.org>
Date:   Thu Apr 17 16:21:18 2025 +0200

    PCI: dw-rockchip: Fix PHY function call sequence in rockchip_pcie_phy_deinit()
    
    commit 286ed198b899739862456f451eda884558526a9d upstream.
    
    The documentation for the phy_power_off() function explicitly says that it
    must be called before phy_exit().
    
    Hence, follow the same rule in rockchip_pcie_phy_deinit().
    
    Fixes: 0e898eb8df4e ("PCI: rockchip-dwc: Add Rockchip RK356X host controller driver")
    Signed-off-by: Diederik de Haas <didi.debian@cknow.org>
    [mani: commit message change]
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Reviewed-by: Niklas Cassel <cassel@kernel.org>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Acked-by: Shawn Lin <shawn.lin@rock-chips.com>
    Cc: stable@vger.kernel.org      # v5.15+
    Link: https://patch.msgid.link/20250417142138.1377451-1-didi.debian@cknow.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

PCI: dw-rockchip: Remove PCIE_L0S_ENTRY check from rockchip_pcie_link_up() [+ + +]
Author: Shawn Lin <shawn.lin@rock-chips.com>
Date:   Thu Apr 17 08:35:09 2025 +0800

    PCI: dw-rockchip: Remove PCIE_L0S_ENTRY check from rockchip_pcie_link_up()
    
    commit 7d9b5d6115532cf90a789ed6afd3f4c70ebbd827 upstream.
    
    rockchip_pcie_link_up() currently has two issues:
    1. Value 0x11 of PCIE_L0S_ENTRY corresponds to L0 state, not L0S. So the
    naming is wrong from the very beginning.
    2. Checking for value 0x11 treats other states like L0S and L1 as link
    down, which is wrong.
    
    Hence, remove the PCIE_L0S_ENTRY check and also its definition. This allows
    adding ASPM support in the successive commits.
    
    Fixes: 0e898eb8df4e ("PCI: rockchip-dwc: Add Rockchip RK356X host controller driver")
    Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
    [mani: commit message rewording]
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Reviewed-by: Niklas Cassel <cassel@kernel.org>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/1744850111-236269-1-git-send-email-shawn.lin@rock-chips.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

PCI: dwc: ep: Correct PBA offset in .set_msix() callback [+ + +]
Author: Niklas Cassel <cassel@kernel.org>
Date:   Wed May 14 09:43:14 2025 +0200

    PCI: dwc: ep: Correct PBA offset in .set_msix() callback
    
    commit 810276362bad172d063d1f6be1cc2cb425b90103 upstream.
    
    While dw_pcie_ep_set_msix() writes the Table Size field correctly (N-1),
    the calculation of the PBA offset is wrong because it calculates space for
    (N-1) entries instead of N.
    
    This results in the following QEMU error when using PCI passthrough on a
    device which relies on the PCI endpoint subsystem:
    
      failed to add PCI capability 0x11[0x50]@0xb0: table & pba overlap, or they don't fit in BARs, or don't align
    
    Fix the calculation of PBA offset in the MSI-X capability.
    
    [bhelgaas: more specific subject and commit log]
    
    Fixes: 83153d9f36e2 ("PCI: endpoint: Fix ->set_msix() to take BIR and offset as arguments")
    Signed-off-by: Niklas Cassel <cassel@kernel.org>
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20250514074313.283156-9-cassel@kernel.org
    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 evsel: Missed close() when probing hybrid core PMUs [+ + +]
Author: Ian Rogers <irogers@google.com>
Date:   Fri Jun 13 17:41:05 2025 -0700

    perf evsel: Missed close() when probing hybrid core PMUs
    
    [ Upstream commit ebec62bc7ec435b475722a5467d67c720a1ad79f ]
    
    Add missing close() to avoid leaking perf events.
    
    In past perfs this mattered little as the function was just used by 'perf
    list'.
    
    As the function is now used to detect hybrid PMUs leaking the perf event
    is somewhat more painful.
    
    Fixes: b41f1cec91c37eee ("perf list: Skip unsupported events")
    Signed-off-by: Ian Rogers <irogers@google.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: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Michael Petlan <mpetlan@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Namhyung Kim <namhyung.kim@lge.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Tiezhu Yang <yangtiezhu@loongson.cn>
    Link: https://lore.kernel.org/r/20250614004108.1650988-2-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf test: Directory file descriptor leak [+ + +]
Author: Ian Rogers <irogers@google.com>
Date:   Fri Jun 13 17:41:04 2025 -0700

    perf test: Directory file descriptor leak
    
    [ Upstream commit 19f4422d485b2d0a935117a1a16015328f99be25 ]
    
    Add missed close when iterating over the script directories.
    
    Fixes: f3295f5b067d3c26 ("perf tests: Use scandirat for shell script finding")
    Signed-off-by: Ian Rogers <irogers@google.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: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Michael Petlan <mpetlan@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Tiezhu Yang <yangtiezhu@loongson.cn>
    Link: https://lore.kernel.org/r/20250614004108.1650988-1-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf/core: Fix WARN in perf_cgroup_switch() [+ + +]
Author: Luo Gengkun <luogengkun@huaweicloud.com>
Date:   Wed Jun 4 03:39:24 2025 +0000

    perf/core: Fix WARN in perf_cgroup_switch()
    
    [ Upstream commit 3172fb986666dfb71bf483b6d3539e1e587fa197 ]
    
    There may be concurrency between perf_cgroup_switch and
    perf_cgroup_event_disable. Consider the following scenario: after a new
    perf cgroup event is created on CPU0, the new event may not trigger
    a reprogramming, causing ctx->is_active to be 0. In this case, when CPU1
    disables this perf event, it executes __perf_remove_from_context->
    list _del_event->perf_cgroup_event_disable on CPU1, which causes a race
    with perf_cgroup_switch running on CPU0.
    
    The following describes the details of this concurrency scenario:
    
    CPU0                                            CPU1
    
    perf_cgroup_switch:
       ...
       # cpuctx->cgrp is not NULL here
       if (READ_ONCE(cpuctx->cgrp) == NULL)
            return;
    
                                                    perf_remove_from_context:
                                                       ...
                                                       raw_spin_lock_irq(&ctx->lock);
                                                       ...
                                                       # ctx->is_active == 0 because reprogramm is not
                                                       # tigger, so CPU1 can do __perf_remove_from_context
                                                       # for CPU0
                                                       __perf_remove_from_context:
                                                             perf_cgroup_event_disable:
                                                                ...
                                                                if (--ctx->nr_cgroups)
                                                                ...
    
       # this warning will happened because CPU1 changed
       # ctx.nr_cgroups to 0.
       WARN_ON_ONCE(cpuctx->ctx.nr_cgroups == 0);
    
    [peterz: use guard instead of goto unlock]
    Fixes: db4a835601b7 ("perf/core: Set cgroup in CPU contexts for new cgroup events")
    Signed-off-by: Luo Gengkun <luogengkun@huaweicloud.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20250604033924.3914647-3-luogengkun@huaweicloud.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf: Fix cgroup state vs ERROR [+ + +]
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Thu Jun 5 12:37:11 2025 +0200

    perf: Fix cgroup state vs ERROR
    
    [ Upstream commit 61988e36dc5457cdff7ae7927e8d9ad1419ee998 ]
    
    While chasing down a missing perf_cgroup_event_disable() elsewhere,
    Leo Yan found that both perf_put_aux_event() and
    perf_remove_sibling_event() were also missing one.
    
    Specifically, the rule is that events that switch to OFF,ERROR need to
    call perf_cgroup_event_disable().
    
    Unify the disable paths to ensure this.
    
    Fixes: ab43762ef010 ("perf: Allow normal events to output AUX data")
    Fixes: 9f0c4fa111dc ("perf/core: Add a new PERF_EV_CAP_SIBLING event capability")
    Reported-by: Leo Yan <leo.yan@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20250605123343.GD35970@noisy.programming.kicks-ass.net
    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>

 
phy: fsl-imx8mq-usb: fix phy_tx_vboost_level_from_property() [+ + +]
Author: Xu Yang <xu.yang_2@nxp.com>
Date:   Wed Apr 30 17:45:01 2025 +0800

    phy: fsl-imx8mq-usb: fix phy_tx_vboost_level_from_property()
    
    commit b15ee09ddb987a122e74fb0fdf1bd6e864959fd3 upstream.
    
    The description of TX_VBOOST_LVL is wrong in register PHY_CTRL3
    bit[31:29].
    
    The updated description as below:
      011: Corresponds to a launch amplitude of 0.844 V.
      100: Corresponds to a launch amplitude of 1.008 V.
      101: Corresponds to a launch amplitude of 1.156 V.
    
    This will fix the parsing function
    phy_tx_vboost_level_from_property() to return correct value.
    
    Fixes: 63c85ad0cd81 ("phy: fsl-imx8mp-usb: add support for phy tuning")
    Cc: stable@vger.kernel.org
    Reviewed-by: Jun Li <jun.li@nxp.com>
    Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
    Link: https://lore.kernel.org/r/20250430094502.2723983-3-xu.yang_2@nxp.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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: mcp23s08: Reset all pins to input at probe [+ + +]
Author: Mike Looijmans <mike.looijmans@topic.nl>
Date:   Fri Mar 14 16:17:45 2025 +0100

    pinctrl: mcp23s08: Reset all pins to input at probe
    
    [ Upstream commit 3ede3f8b4b4b399b0ca41e44959f80d5cf84fc98 ]
    
    At startup, the driver just assumes that all registers have their
    default values. But after a soft reset, the chip will just be in the
    state it was, and some pins may have been configured as outputs. Any
    modification of the output register will cause these pins to be driven
    low, which leads to unexpected/unwanted effects. To prevent this from
    happening, set the chip's IO configuration register to a known safe
    mode (all inputs) before toggling any other bits.
    
    Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
    Link: https://lore.kernel.org/20250314151803.28903-1-mike.looijmans@topic.nl
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform-msi: Add msi_remove_device_irq_domain() in platform_device_msi_free_irqs_all() [+ + +]
Author: Frank Li <Frank.Li@nxp.com>
Date:   Mon Apr 14 14:30:55 2025 -0400

    platform-msi: Add msi_remove_device_irq_domain() in platform_device_msi_free_irqs_all()
    
    [ Upstream commit 9a958e1fd40d6fae8c66385687a00ebd9575a7d2 ]
    
    platform_device_msi_init_and_alloc_irqs() performs two tasks: allocating
    the MSI domain for a platform device, and allocate a number of MSIs in that
    domain.
    
    platform_device_msi_free_irqs_all() only frees the MSIs, and leaves the MSI
    domain alive.
    
    Given that platform_device_msi_init_and_alloc_irqs() is the sole tool a
    platform device has to allocate platform MSIs, it makes sense for
    platform_device_msi_free_irqs_all() to teardown the MSI domain at the same
    time as the MSIs.
    
    This avoids warnings and unexpected behaviours when a driver repeatedly
    allocates and frees MSIs.
    
    Signed-off-by: Frank Li <Frank.Li@nxp.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/all/20250414-ep-msi-v18-1-f69b49917464@nxp.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/loongarch: laptop: Add backlight power control support [+ + +]
Author: Yao Zi <ziyao@disroot.org>
Date:   Thu Jun 5 20:34:46 2025 +0800

    platform/loongarch: laptop: Add backlight power control support
    
    commit 53c762b47f726e4079a1f06f684bce2fc0d56fba upstream.
    
    loongson_laptop_turn_{on,off}_backlight() are designed for controlling
    the power of the backlight, but they aren't really used in the driver
    previously.
    
    Unify these two functions since they only differ in arguments passed to
    ACPI method, and wire up loongson_laptop_backlight_update() to update
    the power state of the backlight as well. Tested on the TongFang L860-T2
    Loongson-3A5000 laptop.
    
    Cc: stable@vger.kernel.org
    Fixes: 6246ed09111f ("LoongArch: Add ACPI-based generic laptop driver")
    Signed-off-by: Yao Zi <ziyao@disroot.org>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

platform/loongarch: laptop: Get brightness setting from EC on probe [+ + +]
Author: Yao Zi <ziyao@disroot.org>
Date:   Thu Jun 5 20:34:46 2025 +0800

    platform/loongarch: laptop: Get brightness setting from EC on probe
    
    commit 1205088fd0393bd9eae96b62bf1e4b9eb1b73edf upstream.
    
    Previously during driver probe, 1 is unconditionally taken as current
    brightness value and set to props.brightness, which will be considered
    as the brightness before suspend and restored to EC on resume. Since a
    brightness value of 1 almost never matches EC's state on coldboot (my
    laptop's EC defaults to 80), this causes surprising changes of screen
    brightness on the first time of resume after coldboot.
    
    Let's get brightness from EC and take it as the current brightness on
    probe of the laptop driver to avoid the surprising behavior. Tested on
    TongFang L860-T2 Loongson-3A5000 laptop.
    
    Cc: stable@vger.kernel.org
    Fixes: 6246ed09111f ("LoongArch: Add ACPI-based generic laptop driver")
    Signed-off-by: Yao Zi <ziyao@disroot.org>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

platform/loongarch: laptop: Unregister generic_sub_drivers on exit [+ + +]
Author: Yao Zi <ziyao@disroot.org>
Date:   Thu Jun 5 20:34:46 2025 +0800

    platform/loongarch: laptop: Unregister generic_sub_drivers on exit
    
    commit f78fb2576f22b0ba5297412a9aa7691920666c41 upstream.
    
    Without correct unregisteration, ACPI notify handlers and the platform
    drivers installed by generic_subdriver_init() will become dangling
    references after removing the loongson_laptop module, triggering various
    kernel faults when a hotkey is sent or at kernel shutdown.
    
    Cc: stable@vger.kernel.org
    Fixes: 6246ed09111f ("LoongArch: Add ACPI-based generic laptop driver")
    Signed-off-by: Yao Zi <ziyao@disroot.org>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
platform/x86/amd: pmc: Clear metrics table at start of cycle [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Tue Jun 3 08:24:08 2025 -0500

    platform/x86/amd: pmc: Clear metrics table at start of cycle
    
    [ Upstream commit 4dbd11796f3a8eb95647507befc41995458a4023 ]
    
    The area of memory that contains the metrics table may contain garbage
    when the cycle starts.  This normally doesn't matter because the cycle
    itself will populate it with valid data, however commit 9f5595d5f03fd
    ("platform/x86/amd: pmc: Require at least 2.5 seconds between HW sleep
    cycles") started to use it during the check() phase.  Depending upon
    what garbage is in the table it's possible that the system will wait
    2.5 seconds for even the first cycle, which will be visible to a user.
    
    To prevent this from happening explicitly clear the table when logging
    is started.
    
    Fixes: 9f5595d5f03fd ("platform/x86/amd: pmc: Require at least 2.5 seconds between HW sleep cycles")
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://lore.kernel.org/r/20250603132412.3555302-1-superm1@kernel.org
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

platform/x86/amd: pmf: Prevent amd_pmf_tee_deinit() from running twice [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Wed May 21 19:34:56 2025 -0500

    platform/x86/amd: pmf: Prevent amd_pmf_tee_deinit() from running twice
    
    [ Upstream commit 93103d56650d7a38ed37ba4041578310f82776ae ]
    
    If any of the tee init fails, pass up the errors and clear the tee_ctx
    pointer. This will prevent cleaning up multiple times.
    
    Fixes: ac052d8c08f9d ("platform/x86/amd/pmf: Add PMF TEE interface")
    Suggested-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://lore.kernel.org/r/20250512211154.2510397-3-superm1@kernel.org
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://lore.kernel.org/r/20250522003457.1516679-3-superm1@kernel.org
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/x86/intel-uncore-freq: Fail module load when plat_info is NULL [+ + +]
Author: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date:   Fri Jun 6 13:53:00 2025 -0700

    platform/x86/intel-uncore-freq: Fail module load when plat_info is NULL
    
    commit 685f88c72a0c4d12d3bd2ff50286938f14486f85 upstream.
    
    Address a Smatch static checker warning regarding an unchecked
    dereference in the function call:
    set_cdie_id(i, cluster_info, plat_info)
    when plat_info is NULL.
    
    Instead of addressing this one case, in general if plat_info is NULL
    then it can cause other issues. For example in a two package system it
    will give warning for duplicate sysfs entry as package ID will be always
    zero for both packages when creating string for attribute group name.
    
    plat_info is derived from TPMI ID TPMI_BUS_INFO, which is integral to
    the core TPMI design. Therefore, it should not be NULL on a production
    platform. Consequently, the module should fail to load if plat_info is
    NULL.
    
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Closes: https://lore.kernel.org/platform-driver-x86/aEKvGCLd1qmX04Tc@stanley.mountain/T/#u
    Fixes: 8a54e2253e4c ("platform/x86/intel-uncore-freq: Uncore frequency control via TPMI")
    Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20250606205300.2384494-1-srinivas.pandruvada@linux.intel.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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
platform/x86: dell_rbu: Fix list usage [+ + +]
Author: Stuart Hayes <stuart.w.hayes@gmail.com>
Date:   Mon Jun 9 13:46:56 2025 -0500

    platform/x86: dell_rbu: Fix list usage
    
    [ Upstream commit 61ce04601e0d8265ec6d2ffa6df5a7e1bce64854 ]
    
    Pass the correct list head to list_for_each_entry*() when looping through
    the packet list.
    
    Without this patch, reading the packet data via sysfs will show the data
    incorrectly (because it starts at the wrong packet), and clearing the
    packet list will result in a NULL pointer dereference.
    
    Fixes: d19f359fbdc6 ("platform/x86: dell_rbu: don't open code list_for_each_entry*()")
    Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com>
    Link: https://lore.kernel.org/r/20250609184659.7210-3-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/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/x86: ideapad-laptop: use usleep_range() for EC polling [+ + +]
Author: Rong Zhang <i@rong.moe>
Date:   Mon May 26 04:18:07 2025 +0800

    platform/x86: ideapad-laptop: use usleep_range() for EC polling
    
    commit 5808c34216954cd832bd4b8bc52dfa287049122b upstream.
    
    It was reported that ideapad-laptop sometimes causes some recent (since
    2024) Lenovo ThinkBook models shut down when:
     - suspending/resuming
     - closing/opening the lid
     - (dis)connecting a charger
     - reading/writing some sysfs properties, e.g., fan_mode, touchpad
     - pressing down some Fn keys, e.g., Brightness Up/Down (Fn+F5/F6)
     - (seldom) loading the kmod
    
    The issue has existed since the launch day of such models, and there
    have been some out-of-tree workarounds (see Link:) for the issue. One
    disables some functionalities, while another one simply shortens
    IDEAPAD_EC_TIMEOUT. The disabled functionalities have read_ec_data() in
    their call chains, which calls schedule() between each poll.
    
    It turns out that these models suffer from the indeterminacy of
    schedule() because of their low tolerance for being polled too
    frequently. Sometimes schedule() returns too soon due to the lack of
    ready tasks, causing the margin between two polls to be too short.
    In this case, the command is somehow aborted, and too many subsequent
    polls (they poll for "nothing!") may eventually break the state machine
    in the EC, resulting in a hard shutdown. This explains why shortening
    IDEAPAD_EC_TIMEOUT works around the issue - it reduces the total number
    of polls sent to the EC.
    
    Even when it doesn't lead to a shutdown, frequent polls may also disturb
    the ongoing operation and notably delay (+ 10-20ms) the availability of
    EC response. This phenomenon is unlikely to be exclusive to the models
    mentioned above, so dropping the schedule() manner should also slightly
    improve the responsiveness of various models.
    
    Fix these issues by migrating to usleep_range(150, 300). The interval is
    chosen to add some margin to the minimal 50us and considering EC
    responses are usually available after 150-2500us based on my test. It
    should be enough to fix these issues on all models subject to the EC bug
    without introducing latency on other models.
    
    Tested on ThinkBook 14 G7+ ASP and solved both issues. No regression was
    introduced in the test on a model without the EC bug (ThinkBook X IMH,
    thanks Eric).
    
    Link: https://github.com/ty2/ideapad-laptop-tb2024g6plus/commit/6c5db18c9e8109873c2c90a7d2d7f552148f7ad4
    Link: https://github.com/ferstar/ideapad-laptop-tb/commit/42d1e68e5009529d31bd23f978f636f79c023e80
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218771
    Fixes: 6a09f21dd1e2 ("ideapad: add ACPI helpers")
    Cc: stable@vger.kernel.org
    Tested-by: Felix Yan <felixonmars@archlinux.org>
    Tested-by: Eric Long <i@hack3r.moe>
    Tested-by: Jianfei Zhang <zhangjianfei3@gmail.com>
    Tested-by: Mingcong Bai <jeffbai@aosc.io>
    Tested-by: Minh Le <minhld139@gmail.com>
    Tested-by: Sicheng Zhu <Emmet_Z@outlook.com>
    Signed-off-by: Rong Zhang <i@rong.moe>
    Link: https://lore.kernel.org/r/20250525201833.37939-1-i@rong.moe
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
pldmfw: Select CRC32 when PLDMFW is selected [+ + +]
Author: Simon Horman <horms@kernel.org>
Date:   Fri Jun 13 17:46:20 2025 +0100

    pldmfw: Select CRC32 when PLDMFW is selected
    
    [ Upstream commit 1224b218a4b9203656ecc932152f4c81a97b4fcc ]
    
    pldmfw calls crc32 code and depends on it being enabled, else
    there is a link error as follows. So PLDMFW should select CRC32.
    
      lib/pldmfw/pldmfw.o: In function `pldmfw_flash_image':
      pldmfw.c:(.text+0x70f): undefined reference to `crc32_le_base'
    
    This problem was introduced by commit b8265621f488 ("Add pldmfw library
    for PLDM firmware update").
    
    It manifests as of commit d69ea414c9b4 ("ice: implement device flash
    update via devlink").
    
    And is more likely to occur as of commit 9ad19171b6d6 ("lib/crc: remove
    unnecessary prompt for CONFIG_CRC32 and drop 'default y'").
    
    Found by chance while exercising builds based on tinyconfig.
    
    Fixes: b8265621f488 ("Add pldmfw library for PLDM firmware update")
    Signed-off-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://patch.msgid.link/20250613-pldmfw-crc32-v1-1-f3fad109eee6@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    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>

 
pmdomain: core: Reset genpd->states to avoid freeing invalid data [+ + +]
Author: Ulf Hansson <ulf.hansson@linaro.org>
Date:   Wed Apr 2 14:06:13 2025 +0200

    pmdomain: core: Reset genpd->states to avoid freeing invalid data
    
    [ Upstream commit 99012014c902cd9ad85fd288d8a107f33a69855e ]
    
    If genpd_alloc_data() allocates data for the default power-states for the
    genpd, let's make sure to also reset the pointer in the error path. This
    makes sure a genpd provider driver doesn't end up trying to free the data
    again, but using an invalid pointer.
    
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Reviewed-by: Dhruva Gole <d-gole@ti.com>
    Link: https://lore.kernel.org/r/20250402120613.1116711-1-ulf.hansson@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.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>

power: supply: collie: Fix wakeup source leaks on device unbind [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Sun Apr 6 22:27:29 2025 +0200

    power: supply: collie: Fix wakeup source leaks on device unbind
    
    [ Upstream commit c73d19f89cb03c43abbbfa3b9caa1b8fc719764c ]
    
    Device can be unbound, so driver must also release memory for the wakeup
    source.
    
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Link: https://lore.kernel.org/r/20250406202730.55096-1-krzysztof.kozlowski@linaro.org
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

power: supply: max17040: adjust thermal channel scaling [+ + +]
Author: Svyatoslav Ryhel <clamor95@gmail.com>
Date:   Wed Apr 30 09:02:39 2025 +0300

    power: supply: max17040: adjust thermal channel scaling
    
    [ Upstream commit d055f51731744243b244aafb1720f793a5b61f7b ]
    
    IIO thermal channel is in millidegree while power supply framework expects
    decidegree values. Adjust scaling to get correct readings.
    
    Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
    Link: https://lore.kernel.org/r/20250430060239.12085-2-clamor95@gmail.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>

 
powerpc/pseries/msi: Avoid reading PCI device registers in reduced power states [+ + +]
Author: Gautam Menghani <gautam@linux.ibm.com>
Date:   Wed Mar 5 14:32:36 2025 +0530

    powerpc/pseries/msi: Avoid reading PCI device registers in reduced power states
    
    commit 9cc0eafd28c7faef300822992bb08d79cab2a36c upstream.
    
    When a system is being suspended to RAM, the PCI devices are also
    suspended and the PPC code ends up calling pseries_msi_compose_msg() and
    this triggers the BUG_ON() in __pci_read_msi_msg() because the device at
    this point is in reduced power state. In reduced power state, the memory
    mapped registers of the PCI device are not accessible.
    
    To replicate the bug:
    1. Make sure deep sleep is selected
            # cat /sys/power/mem_sleep
            s2idle [deep]
    
    2. Make sure console is not suspended (so that dmesg logs are visible)
            echo N > /sys/module/printk/parameters/console_suspend
    
    3. Suspend the system
            echo mem > /sys/power/state
    
    To fix this behaviour, read the cached msi message of the device when the
    device is not in PCI_D0 power state instead of touching the hardware.
    
    Fixes: a5f3d2c17b07 ("powerpc/pseries/pci: Add MSI domains")
    Cc: stable@vger.kernel.org # v5.15+
    Signed-off-by: Gautam Menghani <gautam@linux.ibm.com>
    Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
    Reviewed-by: Vaibhav Jain <vaibhav@linux.ibm.com>
    Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
    Link: https://patch.msgid.link/20250305090237.294633-1-gautam@linux.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
powerpc/vdso: Fix build of VDSO32 with pcrel [+ + +]
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Mon May 12 20:14:55 2025 +0200

    powerpc/vdso: Fix build of VDSO32 with pcrel
    
    [ Upstream commit b93755f408325170edb2156c6a894ed1cae5f4f6 ]
    
    Building vdso32 on power10 with pcrel leads to following errors:
    
              VDSO32A arch/powerpc/kernel/vdso/gettimeofday-32.o
            arch/powerpc/kernel/vdso/gettimeofday.S: Assembler messages:
            arch/powerpc/kernel/vdso/gettimeofday.S:40: Error: syntax error; found `@', expected `,'
            arch/powerpc/kernel/vdso/gettimeofday.S:71:  Info: macro invoked from here
            arch/powerpc/kernel/vdso/gettimeofday.S:40: Error: junk at end of line: `@notoc'
            arch/powerpc/kernel/vdso/gettimeofday.S:71:  Info: macro invoked from here
             ...
            make[2]: *** [arch/powerpc/kernel/vdso/Makefile:85: arch/powerpc/kernel/vdso/gettimeofday-32.o] Error 1
            make[1]: *** [arch/powerpc/Makefile:388: vdso_prepare] Error 2
    
    Once the above is fixed, the following happens:
    
              VDSO32C arch/powerpc/kernel/vdso/vgettimeofday-32.o
            cc1: error: '-mpcrel' requires '-mcmodel=medium'
            make[2]: *** [arch/powerpc/kernel/vdso/Makefile:89: arch/powerpc/kernel/vdso/vgettimeofday-32.o] Error 1
            make[1]: *** [arch/powerpc/Makefile:388: vdso_prepare] Error 2
            make: *** [Makefile:251: __sub-make] Error 2
    
    Make sure pcrel version of CFUNC() macro is used only for powerpc64
    builds and remove -mpcrel for powerpc32 builds.
    
    Fixes: 7e3a68be42e1 ("powerpc/64: vmlinux support building with PCREL addresing")
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
    Link: https://patch.msgid.link/1fa3453f07d42a50a70114da9905bf7b73304fca.1747073669.git.christophe.leroy@csgroup.eu
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ptp: allow reading of currently dialed frequency to succeed on free-running clocks [+ + +]
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Fri Jun 13 20:47:49 2025 +0300

    ptp: allow reading of currently dialed frequency to succeed on free-running clocks
    
    [ Upstream commit aa112cbc5f0ac6f3b44d829005bf34005d9fe9bb ]
    
    There is a bug in ptp_clock_adjtime() which makes it refuse the
    operation even if we just want to read the current clock dialed
    frequency, not modify anything (tx->modes == 0). That should be possible
    even if the clock is free-running. For context, the kernel UAPI is the
    same for getting and setting the frequency of a POSIX clock.
    
    For example, ptp4l errors out at clock_create() -> clockadj_get_freq()
    -> clock_adjtime() time, when it should logically only have failed on
    actual adjustments to the clock, aka if the clock was configured as
    slave. But in master mode it should work.
    
    This was discovered when examining the issue described in the previous
    commit, where ptp_clock_freerun() returned true despite n_vclocks being
    zero.
    
    Fixes: 73f37068d540 ("ptp: support ptp physical/virtual clocks conversion")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://patch.msgid.link/20250613174749.406826-3-vladimir.oltean@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ptp: fix breakage after ptp_vclock_in_use() rework [+ + +]
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Fri Jun 13 20:47:48 2025 +0300

    ptp: fix breakage after ptp_vclock_in_use() rework
    
    [ Upstream commit 5ab73b010cad294851e558f1d4714a85c6f206c7 ]
    
    What is broken
    --------------
    
    ptp4l, and any other application which calls clock_adjtime() on a
    physical clock, is greeted with error -EBUSY after commit 87f7ce260a3c
    ("ptp: remove ptp->n_vclocks check logic in ptp_vclock_in_use()").
    
    Explanation for the breakage
    ----------------------------
    
    The blamed commit was based on the false assumption that
    ptp_vclock_in_use() callers already test for n_vclocks prior to calling
    this function.
    
    This is notably incorrect for the code path below, in which there is, in
    fact, no n_vclocks test:
    
    ptp_clock_adjtime()
    -> ptp_clock_freerun()
       -> ptp_vclock_in_use()
    
    The result is that any clock adjustment on any physical clock is now
    impossible. This is _despite_ there not being any vclock over this
    physical clock.
    
    $ ptp4l -i eno0 -2 -P -m
    ptp4l[58.425]: selected /dev/ptp0 as PTP clock
    [   58.429749] ptp: physical clock is free running
    ptp4l[58.431]: Failed to open /dev/ptp0: Device or resource busy
    failed to create a clock
    $ cat /sys/class/ptp/ptp0/n_vclocks
    0
    
    The patch makes the ptp_vclock_in_use() function say "if it's not a
    virtual clock, then this physical clock does have virtual clocks on
    top".
    
    Then ptp_clock_freerun() uses this information to say "this physical
    clock has virtual clocks on top, so it must stay free-running".
    
    Then ptp_clock_adjtime() uses this information to say "well, if this
    physical clock has to be free-running, I can't do it, return -EBUSY".
    
    Simply put, ptp_vclock_in_use() cannot be simplified so as to remove the
    test whether vclocks are in use.
    
    What did the blamed commit intend to fix
    ----------------------------------------
    
    The blamed commit presents a lockdep warning stating "possible recursive
    locking detected", with the n_vclocks_store() and ptp_clock_unregister()
    functions involved.
    
    The recursive locking seems this:
    n_vclocks_store()
    -> mutex_lock_interruptible(&ptp->n_vclocks_mux) // 1
    -> device_for_each_child_reverse(..., unregister_vclock)
       -> unregister_vclock()
          -> ptp_vclock_unregister()
             -> ptp_clock_unregister()
                -> ptp_vclock_in_use()
                   -> mutex_lock_interruptible(&ptp->n_vclocks_mux) // 2
    
    The issue can be triggered by creating and then deleting vclocks:
    $ echo 2 > /sys/class/ptp/ptp0/n_vclocks
    $ echo 0 > /sys/class/ptp/ptp0/n_vclocks
    
    But note that in the original stack trace, the address of the first lock
    is different from the address of the second lock. This is because at
    step 1 marked above, &ptp->n_vclocks_mux is the lock of the parent
    (physical) PTP clock, and at step 2, the lock is of the child (virtual)
    PTP clock. They are different locks of different devices.
    
    In this situation there is no real deadlock, the lockdep warning is
    caused by the fact that the mutexes have the same lock class on both the
    parent and the child. Functionally it is fine.
    
    Proposed alternative solution
    -----------------------------
    
    We must reintroduce the body of ptp_vclock_in_use() mostly as it was
    structured prior to the blamed commit, but avoid the lockdep warning.
    
    Based on the fact that vclocks cannot be nested on top of one another
    (ptp_is_attribute_visible() hides n_vclocks for virtual clocks), we
    already know that ptp->n_vclocks is zero for a virtual clock. And
    ptp->is_virtual_clock is a runtime invariant, established at
    ptp_clock_register() time and never changed. There is no need to
    serialize on any mutex in order to read ptp->is_virtual_clock, and we
    take advantage of that by moving it outside the lock.
    
    Thus, virtual clocks do not need to acquire &ptp->n_vclocks_mux at
    all, and step 2 in the code walkthrough above can simply go away.
    We can simply return false to the question "ptp_vclock_in_use(a virtual
    clock)".
    
    Other notes
    -----------
    
    Releasing &ptp->n_vclocks_mux before ptp_vclock_in_use() returns
    execution seems racy, because the returned value can become stale as
    soon as the function returns and before the return value is used (i.e.
    n_vclocks_store() can run any time). The locking requirement should
    somehow be transferred to the caller, to ensure a longer life time for
    the returned value, but this seems out of scope for this severe bug fix.
    
    Because we are also fixing up the logic from the original commit, there
    is another Fixes: tag for that.
    
    Fixes: 87f7ce260a3c ("ptp: remove ptp->n_vclocks check logic in ptp_vclock_in_use()")
    Fixes: 73f37068d540 ("ptp: support ptp physical/virtual clocks conversion")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://patch.msgid.link/20250613174749.406826-2-vladimir.oltean@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pwm: axi-pwmgen: fix missing separate external clock [+ + +]
Author: David Lechner <dlechner@baylibre.com>
Date:   Thu May 29 11:53:20 2025 -0500

    pwm: axi-pwmgen: fix missing separate external clock
    
    commit a8841dc3dfbf127a19c3612204bd336ee559b9a1 upstream.
    
    Add proper support for external clock to the AXI PWM generator driver.
    
    In most cases, the HDL for this IP block is compiled with the default
    ASYNC_CLK_EN=1. With this option, there is a separate external clock
    that drives the PWM output separate from the peripheral clock. So the
    driver should be enabling the "axi" clock to power the peripheral and
    the "ext" clock to drive the PWM output.
    
    When ASYNC_CLK_EN=0, the "axi" clock is also used to drive the PWM
    output and there is no "ext" clock.
    
    Previously, if there was a separate external clock, users had to specify
    only the external clock and (incorrectly) omit the AXI clock in order
    to get the correct operating frequency for the PWM output.
    
    The devicetree bindings are updated to fix this shortcoming and this
    patch changes the driver to match the new bindings. To preserve
    compatibility with any existing dtbs that specify only one clock, we
    don't require the clock name on the first clock.
    
    Fixes: 41814fe5c782 ("pwm: Add driver for AXI PWM generator")
    Cc: stable@vger.kernel.org
    Acked-by: Nuno Sá <nuno.sa@analog.com>
    Reviewed-by: Trevor Gamblin <tgamblin@baylibre.com>
    Signed-off-by: David Lechner <dlechner@baylibre.com>
    Link: https://lore.kernel.org/r/20250529-pwm-axi-pwmgen-add-external-clock-v3-3-5d8809a7da91@baylibre.com
    Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
RDMA/hns: initialize db in update_srq_db() [+ + +]
Author: Chen Linxuan <chenlinxuan@uniontech.com>
Date:   Fri Apr 11 18:54:53 2025 +0800

    RDMA/hns: initialize db in update_srq_db()
    
    [ Upstream commit ffe1cee21f8b533ae27c3a31bfa56b8c1b27fa6e ]
    
    On x86_64 with gcc version 13.3.0, I compile
    drivers/infiniband/hw/hns/hns_roce_hw_v2.c with:
    
      make defconfig
      ./scripts/kconfig/merge_config.sh .config <(
        echo CONFIG_COMPILE_TEST=y
        echo CONFIG_HNS3=m
        echo CONFIG_INFINIBAND=m
        echo CONFIG_INFINIBAND_HNS_HIP08=m
      )
      make KCFLAGS="-fno-inline-small-functions -fno-inline-functions-called-once" \
        drivers/infiniband/hw/hns/hns_roce_hw_v2.o
    
    Then I get a compile error:
    
        CALL    scripts/checksyscalls.sh
        DESCEND objtool
        INSTALL libsubcmd_headers
        CC [M]  drivers/infiniband/hw/hns/hns_roce_hw_v2.o
      In file included from drivers/infiniband/hw/hns/hns_roce_hw_v2.c:47:
      drivers/infiniband/hw/hns/hns_roce_hw_v2.c: In function 'update_srq_db':
      drivers/infiniband/hw/hns/hns_roce_common.h:74:17: error: 'db' is used uninitialized [-Werror=uninitialized]
         74 |                 *((__le32 *)_ptr + (field_h) / 32) &=                          \
            |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      drivers/infiniband/hw/hns/hns_roce_common.h:90:17: note: in expansion of macro '_hr_reg_clear'
         90 |                 _hr_reg_clear(ptr, field_type, field_h, field_l);              \
            |                 ^~~~~~~~~~~~~
      drivers/infiniband/hw/hns/hns_roce_common.h:95:39: note: in expansion of macro '_hr_reg_write'
         95 | #define hr_reg_write(ptr, field, val) _hr_reg_write(ptr, field, val)
            |                                       ^~~~~~~~~~~~~
      drivers/infiniband/hw/hns/hns_roce_hw_v2.c:948:9: note: in expansion of macro 'hr_reg_write'
        948 |         hr_reg_write(&db, DB_TAG, srq->srqn);
            |         ^~~~~~~~~~~~
      drivers/infiniband/hw/hns/hns_roce_hw_v2.c:946:31: note: 'db' declared here
        946 |         struct hns_roce_v2_db db;
            |                               ^~
      cc1: all warnings being treated as errors
    
    Signed-off-by: Chen Linxuan <chenlinxuan@uniontech.com>
    Co-developed-by: Winston Wen <wentao@uniontech.com>
    Signed-off-by: Winston Wen <wentao@uniontech.com>
    Link: https://patch.msgid.link/FF922C77946229B6+20250411105459.90782-5-chenlinxuan@uniontech.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/iwcm: Fix use-after-free of work objects after cm_id destruction [+ + +]
Author: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Date:   Sat May 10 19:10:36 2025 +0900

    RDMA/iwcm: Fix use-after-free of work objects after cm_id destruction
    
    commit 6883b680e703c6b2efddb4e7a8d891ce1803d06b upstream.
    
    The commit 59c68ac31e15 ("iw_cm: free cm_id resources on the last
    deref") simplified cm_id resource management by freeing cm_id once all
    references to the cm_id were removed. The references are removed either
    upon completion of iw_cm event handlers or when the application destroys
    the cm_id. This commit introduced the use-after-free condition where
    cm_id_private object could still be in use by event handler works during
    the destruction of cm_id. The commit aee2424246f9 ("RDMA/iwcm: Fix a
    use-after-free related to destroying CM IDs") addressed this use-after-
    free by flushing all pending works at the cm_id destruction.
    
    However, still another use-after-free possibility remained. It happens
    with the work objects allocated for each cm_id_priv within
    alloc_work_entries() during cm_id creation, and subsequently freed in
    dealloc_work_entries() once all references to the cm_id are removed.
    If the cm_id's last reference is decremented in the event handler work,
    the work object for the work itself gets removed, and causes the use-
    after-free BUG below:
    
      BUG: KASAN: slab-use-after-free in __pwq_activate_work+0x1ff/0x250
      Read of size 8 at addr ffff88811f9cf800 by task kworker/u16:1/147091
    
      CPU: 2 UID: 0 PID: 147091 Comm: kworker/u16:1 Not tainted 6.15.0-rc2+ #27 PREEMPT(voluntary)
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
      Workqueue:  0x0 (iw_cm_wq)
      Call Trace:
       <TASK>
       dump_stack_lvl+0x6a/0x90
       print_report+0x174/0x554
       ? __virt_addr_valid+0x208/0x430
       ? __pwq_activate_work+0x1ff/0x250
       kasan_report+0xae/0x170
       ? __pwq_activate_work+0x1ff/0x250
       __pwq_activate_work+0x1ff/0x250
       pwq_dec_nr_in_flight+0x8c5/0xfb0
       process_one_work+0xc11/0x1460
       ? __pfx_process_one_work+0x10/0x10
       ? assign_work+0x16c/0x240
       worker_thread+0x5ef/0xfd0
       ? __pfx_worker_thread+0x10/0x10
       kthread+0x3b0/0x770
       ? __pfx_kthread+0x10/0x10
       ? rcu_is_watching+0x11/0xb0
       ? _raw_spin_unlock_irq+0x24/0x50
       ? rcu_is_watching+0x11/0xb0
       ? __pfx_kthread+0x10/0x10
       ret_from_fork+0x30/0x70
       ? __pfx_kthread+0x10/0x10
       ret_from_fork_asm+0x1a/0x30
       </TASK>
    
      Allocated by task 147416:
       kasan_save_stack+0x2c/0x50
       kasan_save_track+0x10/0x30
       __kasan_kmalloc+0xa6/0xb0
       alloc_work_entries+0xa9/0x260 [iw_cm]
       iw_cm_connect+0x23/0x4a0 [iw_cm]
       rdma_connect_locked+0xbfd/0x1920 [rdma_cm]
       nvme_rdma_cm_handler+0x8e5/0x1b60 [nvme_rdma]
       cma_cm_event_handler+0xae/0x320 [rdma_cm]
       cma_work_handler+0x106/0x1b0 [rdma_cm]
       process_one_work+0x84f/0x1460
       worker_thread+0x5ef/0xfd0
       kthread+0x3b0/0x770
       ret_from_fork+0x30/0x70
       ret_from_fork_asm+0x1a/0x30
    
      Freed by task 147091:
       kasan_save_stack+0x2c/0x50
       kasan_save_track+0x10/0x30
       kasan_save_free_info+0x37/0x60
       __kasan_slab_free+0x4b/0x70
       kfree+0x13a/0x4b0
       dealloc_work_entries+0x125/0x1f0 [iw_cm]
       iwcm_deref_id+0x6f/0xa0 [iw_cm]
       cm_work_handler+0x136/0x1ba0 [iw_cm]
       process_one_work+0x84f/0x1460
       worker_thread+0x5ef/0xfd0
       kthread+0x3b0/0x770
       ret_from_fork+0x30/0x70
       ret_from_fork_asm+0x1a/0x30
    
      Last potentially related work creation:
       kasan_save_stack+0x2c/0x50
       kasan_record_aux_stack+0xa3/0xb0
       __queue_work+0x2ff/0x1390
       queue_work_on+0x67/0xc0
       cm_event_handler+0x46a/0x820 [iw_cm]
       siw_cm_upcall+0x330/0x650 [siw]
       siw_cm_work_handler+0x6b9/0x2b20 [siw]
       process_one_work+0x84f/0x1460
       worker_thread+0x5ef/0xfd0
       kthread+0x3b0/0x770
       ret_from_fork+0x30/0x70
       ret_from_fork_asm+0x1a/0x30
    
    This BUG is reproducible by repeating the blktests test case nvme/061
    for the rdma transport and the siw driver.
    
    To avoid the use-after-free of cm_id_private work objects, ensure that
    the last reference to the cm_id is decremented not in the event handler
    works, but in the cm_id destruction context. For that purpose, move
    iwcm_deref_id() call from destroy_cm_id() to the callers of
    destroy_cm_id(). In iw_destroy_cm_id(), call iwcm_deref_id() after
    flushing the pending works.
    
    During the fix work, I noticed that iw_destroy_cm_id() is called from
    cm_work_handler() and process_event() context. However, the comment of
    iw_destroy_cm_id() notes that the function "cannot be called by the
    event thread". Drop the false comment.
    
    Closes: https://lore.kernel.org/linux-rdma/r5676e754sv35aq7cdsqrlnvyhiq5zktteaurl7vmfih35efko@z6lay7uypy3c/
    Fixes: 59c68ac31e15 ("iw_cm: free cm_id resources on the last deref")
    Cc: stable@vger.kernel.org
    Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Link: https://patch.msgid.link/20250510101036.1756439-1-shinichiro.kawasaki@wdc.com
    Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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>

regulator: max20086: Change enable gpio to optional [+ + +]
Author: João Paulo Gonçalves <jpaulo.silvagoncalves@gmail.com>
Date:   Sun Apr 20 15:28:02 2025 -0300

    regulator: max20086: Change enable gpio to optional
    
    commit e8ac7336dd62f0443a675ed80b17f0f0e6846e20 upstream.
    
    The enable pin can be configured as always enabled by the hardware. Make
    the enable gpio request optional so the driver doesn't fail to probe
    when `enable-gpios` property is not present in the device tree.
    
    Cc: stable@vger.kernel.org
    Fixes: bfff546aae50 ("regulator: Add MAX20086-MAX20089 driver")
    Signed-off-by: João Paulo Gonçalves <jpaulo.silvagoncalves@gmail.com>
    Link: https://patch.msgid.link/20250420-fix-max20086-v1-2-8cc9ee0d5a08@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

regulator: max20086: Fix MAX200086 chip id [+ + +]
Author: João Paulo Gonçalves <jpaulo.silvagoncalves@gmail.com>
Date:   Sun Apr 20 15:28:01 2025 -0300

    regulator: max20086: Fix MAX200086 chip id
    
    commit 71406b6d1155d883c80c1b4405939a52f723aa05 upstream.
    
    >From MAX20086-MAX20089 datasheet, the id for a MAX20086 is 0x30 and not
    0x40. With the current code, the driver will fail on probe when the
    driver tries to identify the chip id from a MAX20086 device over I2C.
    
    Cc: stable@vger.kernel.org
    Fixes: bfff546aae50 ("regulator: Add MAX20086-MAX20089 driver")
    Signed-off-by: João Paulo Gonçalves <jpaulo.silvagoncalves@gmail.com>
    Link: https://patch.msgid.link/20250420-fix-max20086-v1-1-8cc9ee0d5a08@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
remoteproc: core: Cleanup acquired resources when rproc_handle_resources() fails in rproc_attach() [+ + +]
Author: Xiaolei Wang <xiaolei.wang@windriver.com>
Date:   Wed Apr 30 17:20:42 2025 +0800

    remoteproc: core: Cleanup acquired resources when rproc_handle_resources() fails in rproc_attach()
    
    commit 7692c9fbedd9087dc9050903f58095915458d9b1 upstream.
    
    When rproc->state = RPROC_DETACHED and rproc_attach() is used
    to attach to the remote processor, if rproc_handle_resources()
    returns a failure, the resources allocated by imx_rproc_prepare()
    should be released, otherwise the following memory leak will occur.
    
    Since almost the same thing is done in imx_rproc_prepare() and
    rproc_resource_cleanup(), Function rproc_resource_cleanup() is able
    to deal with empty lists so it is better to fix the "goto" statements
    in rproc_attach(). replace the "unprepare_device" goto statement with
    "clean_up_resources" and get rid of the "unprepare_device" label.
    
    unreferenced object 0xffff0000861c5d00 (size 128):
    comm "kworker/u12:3", pid 59, jiffies 4294893509 (age 149.220s)
    hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    00 00 02 88 00 00 00 00 00 00 10 00 00 00 00 00 ............
    backtrace:
     [<00000000f949fe18>] slab_post_alloc_hook+0x98/0x37c
     [<00000000adbfb3e7>] __kmem_cache_alloc_node+0x138/0x2e0
     [<00000000521c0345>] kmalloc_trace+0x40/0x158
     [<000000004e330a49>] rproc_mem_entry_init+0x60/0xf8
     [<000000002815755e>] imx_rproc_prepare+0xe0/0x180
     [<0000000003f61b4e>] rproc_boot+0x2ec/0x528
     [<00000000e7e994ac>] rproc_add+0x124/0x17c
     [<0000000048594076>] imx_rproc_probe+0x4ec/0x5d4
     [<00000000efc298a1>] platform_probe+0x68/0xd8
     [<00000000110be6fe>] really_probe+0x110/0x27c
     [<00000000e245c0ae>] __driver_probe_device+0x78/0x12c
     [<00000000f61f6f5e>] driver_probe_device+0x3c/0x118
     [<00000000a7874938>] __device_attach_driver+0xb8/0xf8
     [<0000000065319e69>] bus_for_each_drv+0x84/0xe4
     [<00000000db3eb243>] __device_attach+0xfc/0x18c
     [<0000000072e4e1a4>] device_initial_probe+0x14/0x20
    
    Fixes: 10a3d4079eae ("remoteproc: imx_rproc: move memory parsing to rproc_ops")
    Suggested-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Xiaolei Wang <xiaolei.wang@windriver.com>
    Reviewed-by: Peng Fan <peng.fan@nxp.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20250430092043.1819308-2-xiaolei.wang@windriver.com
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

remoteproc: core: Release rproc->clean_table after rproc_attach() fails [+ + +]
Author: Xiaolei Wang <xiaolei.wang@windriver.com>
Date:   Wed Apr 30 17:20:43 2025 +0800

    remoteproc: core: Release rproc->clean_table after rproc_attach() fails
    
    commit bcd241230fdbc6005230f80a4f8646ff5a84f15b upstream.
    
    When rproc->state = RPROC_DETACHED is attached to remote processor
    through rproc_attach(), if rproc_handle_resources() returns failure,
    then the clean table should be released, otherwise the following
    memory leak will occur.
    
    unreferenced object 0xffff000086a99800 (size 1024):
    comm "kworker/u12:3", pid 59, jiffies 4294893670 (age 121.140s)
    hex dump (first 32 bytes):
    00 00 00 00 00 80 00 00 00 00 00 00 00 00 10 00 ............
    00 00 00 00 00 00 08 00 00 00 00 00 00 00 00 00 ............
    backtrace:
     [<000000008bbe4ca8>] slab_post_alloc_hook+0x98/0x3fc
     [<000000003b8a272b>] __kmem_cache_alloc_node+0x13c/0x230
     [<000000007a507c51>] __kmalloc_node_track_caller+0x5c/0x260
     [<0000000037818dae>] kmemdup+0x34/0x60
     [<00000000610f7f57>] rproc_boot+0x35c/0x56c
     [<0000000065f8871a>] rproc_add+0x124/0x17c
     [<00000000497416ee>] imx_rproc_probe+0x4ec/0x5d4
     [<000000003bcaa37d>] platform_probe+0x68/0xd8
     [<00000000771577f9>] really_probe+0x110/0x27c
     [<00000000531fea59>] __driver_probe_device+0x78/0x12c
     [<0000000080036a04>] driver_probe_device+0x3c/0x118
     [<000000007e0bddcb>] __device_attach_driver+0xb8/0xf8
     [<000000000cf1fa33>] bus_for_each_drv+0x84/0xe4
     [<000000001a53b53e>] __device_attach+0xfc/0x18c
     [<00000000d1a2a32c>] device_initial_probe+0x14/0x20
     [<00000000d8f8b7ae>] bus_probe_device+0xb0/0xb4
     unreferenced object 0xffff0000864c9690 (size 16):
    
    Fixes: 9dc9507f1880 ("remoteproc: Properly deal with the resource table when detaching")
    Signed-off-by: Xiaolei Wang <xiaolei.wang@windriver.com>
    Reviewed-by: Peng Fan <peng.fan@nxp.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20250430092043.1819308-3-xiaolei.wang@windriver.com
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

remoteproc: k3-m4: Don't assert reset in detach routine [+ + +]
Author: Beleswar Padhi <b-padhi@ti.com>
Date:   Tue May 13 11:14:38 2025 +0530

    remoteproc: k3-m4: Don't assert reset in detach routine
    
    commit 23532524594c211871054a15c425812a4ac35102 upstream.
    
    The rproc_detach() function invokes __rproc_detach() before
    rproc_unprepare_device(). The __rproc_detach() function sets the
    rproc->state to "RPROC_DETACHED".
    
    However, the TI K3 M4 driver erroneously looks for "RPROC_ATTACHED"
    state in its .unprepare ops to identify IPC-only mode; which leads to
    resetting the rproc in detach routine.
    
    Therefore, correct the IPC-only mode detection logic to look for
    "RPROC_DETACHED" in k3_m4_rproc_unprepare() function.
    
    Fixes: ebcf9008a895 ("remoteproc: k3-m4: Add a remoteproc driver for M4F subsystem")
    Signed-off-by: Beleswar Padhi <b-padhi@ti.com>
    Reviewed-by: Hari Nagalla <hnagalla@ti.com>
    Reviewed-by: Martyn Welch <martyn.welch@collabora.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20250513054510.3439842-5-b-padhi@ti.com
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.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 "mac80211: Dynamically set CoDel parameters per station" [+ + +]
Author: Toke Høiland-Jørgensen <toke@toke.dk>
Date:   Thu Apr 3 20:39:28 2025 +0200

    Revert "mac80211: Dynamically set CoDel parameters per station"
    
    [ Upstream commit 4876376988081d636a4c4e5f03a5556386b49087 ]
    
    This reverts commit 484a54c2e597dbc4ace79c1687022282905afba0. The CoDel
    parameter change essentially disables CoDel on slow stations, with some
    questionable assumptions, as Dave pointed out in [0]. Quoting from
    there:
    
      But here are my pithy comments as to why this part of mac80211 is so
      wrong...
    
       static void sta_update_codel_params(struct sta_info *sta, u32 thr)
       {
      -       if (thr && thr < STA_SLOW_THRESHOLD * sta->local->num_sta) {
    
      1) sta->local->num_sta is the number of associated, rather than
      active, stations. "Active" stations in the last 50ms or so, might have
      been a better thing to use, but as most people have far more than that
      associated, we end up with really lousy codel parameters, all the
      time. Mistake numero uno!
    
      2) The STA_SLOW_THRESHOLD was completely arbitrary in 2016.
    
      -               sta->cparams.target = MS2TIME(50);
    
      This, by itself, was probably not too bad. 30ms might have been
      better, at the time, when we were battling powersave etc, but 20ms was
      enough, really, to cover most scenarios, even where we had low rate
      2Ghz multicast to cope with. Even then, codel has a hard time finding
      any sane drop rate at all, with a target this high.
    
      -               sta->cparams.interval = MS2TIME(300);
    
      But this was horrible, a total mistake, that is leading to codel being
      completely ineffective in almost any scenario on clients or APS.
      100ms, even 80ms, here, would be vastly better than this insanity. I'm
      seeing 5+seconds of delay accumulated in a bunch of otherwise happily
      fq-ing APs....
    
      100ms of observed jitter during a flow is enough. Certainly (in 2016)
      there were interactions with powersave that I did not understand, and
      still don't, but if you are transmitting in the first place, powersave
      shouldn't be a problemmmm.....
    
      -               sta->cparams.ecn = false;
    
      At the time we were pretty nervous about ecn, I'm kind of sanguine
      about it now, and reliably indicating ecn seems better than turning it
      off for any reason.
    
      [...]
    
      In production, on p2p wireless, I've had 8ms and 80ms for target and
      interval for years now, and it works great.
    
    I think Dave's arguments above are basically sound on the face of it,
    and various experimentation with tighter CoDel parameters in the OpenWrt
    community have show promising results[1]. So I don't think there's any
    reason to keep this parameter fiddling; hence this revert.
    
    [0] https://lore.kernel.org/linux-wireless/CAA93jw6NJ2cmLmMauz0xAgC2MGbBq6n0ZiZzAdkK0u4b+O2yXg@mail.gmail.com/
    [1] https://forum.openwrt.org/t/reducing-multiplexing-latencies-still-further-in-wifi/133605/130
    
    Suggested-By: Dave Taht <dave.taht@gmail.com>
    In-memory-of: Dave Taht <dave.taht@gmail.com>
    Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
    Link: https://patch.msgid.link/20250403183930.197716-1-toke@toke.dk
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RISC-V: KVM: Don't treat SBI HFENCE calls as NOPs [+ + +]
Author: Anup Patel <apatel@ventanamicro.com>
Date:   Thu Jun 5 11:44:47 2025 +0530

    RISC-V: KVM: Don't treat SBI HFENCE calls as NOPs
    
    [ Upstream commit 2e7be162996640bbe3b6da694cc064c511b8a5d9 ]
    
    The SBI specification clearly states that SBI HFENCE calls should
    return SBI_ERR_NOT_SUPPORTED when one of the target hart doesn’t
    support hypervisor extension (aka nested virtualization in-case
    of KVM RISC-V).
    
    Fixes: c7fa3c48de86 ("RISC-V: KVM: Treat SBI HFENCE calls as NOPs")
    Reviewed-by: Atish Patra <atishp@rivosinc.com>
    Signed-off-by: Anup Patel <apatel@ventanamicro.com>
    Link: https://lore.kernel.org/r/20250605061458.196003-3-apatel@ventanamicro.com
    Signed-off-by: Anup Patel <anup@brainfault.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RISC-V: KVM: Fix the size parameter check in SBI SFENCE calls [+ + +]
Author: Anup Patel <apatel@ventanamicro.com>
Date:   Thu Jun 5 11:44:46 2025 +0530

    RISC-V: KVM: Fix the size parameter check in SBI SFENCE calls
    
    [ Upstream commit 6aba0cb5bba6141158d5449f2cf53187b7f755f9 ]
    
    As-per the SBI specification, an SBI remote fence operation applies
    to the entire address space if either:
    1) start_addr and size are both 0
    2) size is equal to 2^XLEN-1
    
    >From the above, only #1 is checked by SBI SFENCE calls so fix the
    size parameter check in SBI SFENCE calls to cover #2 as well.
    
    Fixes: 13acfec2dbcc ("RISC-V: KVM: Add remote HFENCE functions based on VCPU requests")
    Reviewed-by: Atish Patra <atishp@rivosinc.com>
    Signed-off-by: Anup Patel <apatel@ventanamicro.com>
    Link: https://lore.kernel.org/r/20250605061458.196003-2-apatel@ventanamicro.com
    Signed-off-by: Anup Patel <anup@brainfault.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rust: compile libcore with edition 2024 for 1.87+ [+ + +]
Author: Gary Guo <gary@garyguo.net>
Date:   Sat May 17 09:55:59 2025 +0100

    rust: compile libcore with edition 2024 for 1.87+
    
    commit f4daa80d6be7d3c55ca72a8e560afc4e21f886aa upstream.
    
    Rust 1.87 (released on 2025-05-15) compiles core library with edition
    2024 instead of 2021 [1]. Ensure that the edition matches libcore's
    expectation to avoid potential breakage.
    
    [ J3m3 reported in Zulip [2] that the `rust-analyzer` target was
      broken after this patch -- indeed, we need to avoid `core-cfgs`
      since those are passed to the `rust-analyzer` target.
    
      So, instead, I tweaked the patch to create a new `core-edition`
      variable and explicitly mention the `--edition` flag instead of
      reusing `core-cfg`s.
    
      In addition, pass a new argument using this new variable to
      `generate_rust_analyzer.py` so that we set the right edition there.
    
      By the way, for future reference: the `filter-out` change is needed
      for Rust < 1.87, since otherwise we would skip the `--edition=2021`
      we just added, ending up with no edition flag, and thus the compiler
      would default to the 2015 one.
    
      [2] https://rust-for-linux.zulipchat.com/#narrow/channel/291565/topic/x/near/520206547
    
        - Miguel ]
    
    Cc: stable@vger.kernel.org # Needed in 6.12.y and later (Rust is pinned in older LTSs).
    Link: https://github.com/rust-lang/rust/pull/138162 [1]
    Reported-by: est31 <est31@protonmail.com>
    Closes: https://github.com/Rust-for-Linux/linux/issues/1163
    Signed-off-by: Gary Guo <gary@garyguo.net>
    Link: https://lore.kernel.org/r/20250517085600.2857460-1-gary@garyguo.net
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    [ Solved conflicts for 6.12.y backport. - Miguel ]
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
s390/pci: Allow re-add of a reserved but not yet removed device [+ + +]
Author: Niklas Schnelle <schnelle@linux.ibm.com>
Date:   Thu May 22 14:13:14 2025 +0200

    s390/pci: Allow re-add of a reserved but not yet removed device
    
    commit 4b1815a52d7eb03b3e0e6742c6728bc16a4b2d1d upstream.
    
    The architecture assumes that PCI functions can be removed synchronously
    as PCI events are processed. This however clashes with the reference
    counting of struct pci_dev which allows device drivers to hold on to a
    struct pci_dev reference even as the underlying device is removed. To
    bridge this gap commit 2a671f77ee49 ("s390/pci: fix use after free of
    zpci_dev") keeps the struct zpci_dev in ZPCI_FN_STATE_RESERVED state
    until common code releases the struct pci_dev. Only when all references
    are dropped, the struct zpci_dev can be removed and freed.
    
    Later commit a46044a92add ("s390/pci: fix zpci_zdev_put() on reserve")
    moved the deletion of the struct zpci_dev from the zpci_list in
    zpci_release_device() to the point where the device is reserved. This
    was done to prevent handling events for a device that is already being
    removed, e.g. when the platform generates both PCI event codes 0x304
    and 0x308. In retrospect, deletion from the zpci_list in the release
    function without holding the zpci_list_lock was also racy.
    
    A side effect of this handling is that if the underlying device
    re-appears while the struct zpci_dev is in the ZPCI_FN_STATE_RESERVED
    state, the new and old instances of the struct zpci_dev and/or struct
    pci_dev may clash. For example when trying to create the IOMMU sysfs
    files for the new instance. In this case, re-adding the new instance is
    aborted. The old instance is removed, and the device will remain absent
    until the platform issues another event.
    
    Fix this by allowing the struct zpci_dev to be brought back up right
    until it is finally removed. To this end also keep the struct zpci_dev
    in the zpci_list until it is finally released when all references have
    been dropped.
    
    Deletion from the zpci_list from within the release function is made
    safe by using kref_put_lock() with the zpci_list_lock. This ensures that
    the releasing code holds the last reference.
    
    Cc: stable@vger.kernel.org
    Fixes: a46044a92add ("s390/pci: fix zpci_zdev_put() on reserve")
    Reviewed-by: Gerd Bayer <gbayer@linux.ibm.com>
    Tested-by: Gerd Bayer <gbayer@linux.ibm.com>
    Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    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>

s390/pci: Prevent self deletion in disable_slot() [+ + +]
Author: Niklas Schnelle <schnelle@linux.ibm.com>
Date:   Thu May 22 14:13:13 2025 +0200

    s390/pci: Prevent self deletion in disable_slot()
    
    commit 47c397844869ad0e6738afb5879c7492f4691122 upstream.
    
    As disable_slot() takes a struct zpci_dev from the Configured to the
    Standby state. In Standby there is still a hotplug slot so this is not
    usually a case of sysfs self deletion. This is important because self
    deletion gets very hairy in terms of locking (see for example
    recover_store() in arch/s390/pci/pci_sysfs.c).
    
    Because the pci_dev_put() is not within the critical section of the
    zdev->state_lock however, disable_slot() can turn into a case of self
    deletion if zPCI device event handling slips between the mutex_unlock()
    and the pci_dev_put(). If the latter is the last put and
    zpci_release_device() is called this then tries to remove the hotplug
    slot via zpci_exit_slot() which will try to remove the hotplug slot
    directory the disable_slot() is part of i.e. self deletion.
    
    Prevent this by widening the zdev->state_lock critical section to
    include the pci_dev_put() which is then guaranteed to happen with the
    struct zpci_dev still in Standby state ensuring it will not lead to
    a zpci_release_device() call as at least the zPCI event handling code
    still holds a reference.
    
    Cc: stable@vger.kernel.org
    Fixes: a46044a92add ("s390/pci: fix zpci_zdev_put() on reserve")
    Reviewed-by: Gerd Bayer <gbayer@linux.ibm.com>
    Tested-by: Gerd Bayer <gbayer@linux.ibm.com>
    Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

s390/pci: Remove redundant bus removal and disable from zpci_release_device() [+ + +]
Author: Niklas Schnelle <schnelle@linux.ibm.com>
Date:   Thu May 22 14:13:12 2025 +0200

    s390/pci: Remove redundant bus removal and disable from zpci_release_device()
    
    commit d76f9633296785343d45f85199f4138cb724b6d2 upstream.
    
    Remove zpci_bus_remove_device() and zpci_disable_device() calls from
    zpci_release_device(). These calls were done when the device
    transitioned into the ZPCI_FN_STATE_STANDBY state which is guaranteed to
    happen before it enters the ZPCI_FN_STATE_RESERVED state. When
    zpci_release_device() is called the device is known to be in the
    ZPCI_FN_STATE_RESERVED state which is also checked by a WARN_ON().
    
    Cc: stable@vger.kernel.org
    Fixes: a46044a92add ("s390/pci: fix zpci_zdev_put() on reserve")
    Reviewed-by: Gerd Bayer <gbayer@linux.ibm.com>
    Reviewed-by: Julian Ruess <julianr@linux.ibm.com>
    Tested-by: Gerd Bayer <gbayer@linux.ibm.com>
    Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

s390/pci: Serialize device addition and removal [+ + +]
Author: Niklas Schnelle <schnelle@linux.ibm.com>
Date:   Thu May 22 14:13:15 2025 +0200

    s390/pci: Serialize device addition and removal
    
    commit 774a1fa880bc949d88b5ddec9494a13be733dfa8 upstream.
    
    Prior changes ensured that when zpci_release_device() is called and it
    removed the zdev from the zpci_list this instance can not be found via
    the zpci_list anymore even while allowing re-add of reserved devices.
    This only accounts for the overall lifetime and zpci_list addition and
    removal, it does not yet prevent concurrent add of a new instance for
    the same underlying device. Such concurrent add would subsequently cause
    issues such as attempted re-use of the same IOMMU sysfs directory and is
    generally undesired.
    
    Introduce a new zpci_add_remove_lock mutex to serialize adding a new
    device with removal. Together this ensures that if a struct zpci_dev is
    not found in the zpci_list it was either already removed and torn down,
    or its removal and tear down is in progress with the
    zpci_add_remove_lock held.
    
    Cc: stable@vger.kernel.org
    Fixes: a46044a92add ("s390/pci: fix zpci_zdev_put() on reserve")
    Reviewed-by: Gerd Bayer <gbayer@linux.ibm.com>
    Tested-by: Gerd Bayer <gbayer@linux.ibm.com>
    Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
sched_ext, sched/core: Don't call scx_group_set_weight() prematurely from sched_create_group() [+ + +]
Author: Tejun Heo <tj@kernel.org>
Date:   Mon Jun 16 10:13:25 2025 -1000

    sched_ext, sched/core: Don't call scx_group_set_weight() prematurely from sched_create_group()
    
    commit 33796b91871ad4010c8188372dd1faf97cf0f1c0 upstream.
    
    During task_group creation, sched_create_group() calls
    scx_group_set_weight() with CGROUP_WEIGHT_DFL to initialize the sched_ext
    portion. This is premature and ends up calling ops.cgroup_set_weight() with
    an incorrect @cgrp before ops.cgroup_init() is called.
    
    sched_create_group() should just initialize SCX related fields in the new
    task_group. Fix it by factoring out scx_tg_init() from sched_init() and
    making sched_create_group() call that function instead of
    scx_group_set_weight().
    
    v2: Retain CONFIG_EXT_GROUP_SCHED ifdef in sched_init() as removing it leads
        to build failures on !CONFIG_GROUP_SCHED configs.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: 819513666966 ("sched_ext: Add cgroup support")
    Cc: stable@vger.kernel.org # v6.12+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
scsi: elx: efct: Fix memory leak in efct_hw_parse_filter() [+ + +]
Author: Vitaliy Shevtsov <v.shevtsov@mt-integration.ru>
Date:   Thu Jun 12 21:35:18 2025 +0500

    scsi: elx: efct: Fix memory leak in efct_hw_parse_filter()
    
    [ Upstream commit 2a8a5a5dd06eef580f9818567773fd75057cb875 ]
    
    strsep() modifies the address of the pointer passed to it so that it no
    longer points to the original address. This means kfree() gets the wrong
    pointer.
    
    Fix this by passing unmodified pointer returned from kstrdup() to
    kfree().
    
    Found by Linux Verification Center (linuxtesting.org) with Svace.
    
    Fixes: 4df84e846624 ("scsi: elx: efct: Driver initialization routines")
    Signed-off-by: Vitaliy Shevtsov <v.shevtsov@mt-integration.ru>
    Link: https://lore.kernel.org/r/20250612163616.24298-1-v.shevtsov@mt-integration.ru
    Reviewed-by: Daniel Wagner <dwagner@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: lpfc: Fix lpfc_check_sli_ndlp() handling for GEN_REQUEST64 commands [+ + +]
Author: Justin Tee <justin.tee@broadcom.com>
Date:   Fri Apr 25 12:47:59 2025 -0700

    scsi: lpfc: Fix lpfc_check_sli_ndlp() handling for GEN_REQUEST64 commands
    
    [ Upstream commit 05ae6c9c7315d844fbc15afe393f5ba5e5771126 ]
    
    In lpfc_check_sli_ndlp(), the get_job_els_rsp64_did remote_id assignment
    does not apply for GEN_REQUEST64 commands as it only has meaning for a
    ELS_REQUEST64 command.  So, if (iocb->ndlp == ndlp) is false, we could
    erroneously return the wrong value.  Fix by replacing the fallthrough
    statement with a break statement before the remote_id check.
    
    Signed-off-by: Justin Tee <justin.tee@broadcom.com>
    Link: https://lore.kernel.org/r/20250425194806.3585-2-justintee8345@gmail.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: 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: smartpqi: Add new PCI IDs [+ + +]
Author: David Strahan <david.strahan@microchip.com>
Date:   Wed Apr 23 13:32:26 2025 -0500

    scsi: smartpqi: Add new PCI IDs
    
    [ Upstream commit 01b8bdddcfab035cf70fd9981cb20593564cd15d ]
    
    Add in support for more PCI devices.
    
    All PCI ID entries in Hex.
    
    Add PCI IDs for Ramaxel controllers:
                                                      VID  / DID  / SVID / SDID
                                                      ----   ----   ----   ----
                          Ramaxel SmartHBA RX8238-16i 9005   028f   1018   8238
                          Ramaxel SSSRAID card        9005   028f   1f3f   0610
    
    Add PCI ID for Alibaba controller:
                                                      VID  / DID  / SVID / SDID
                                                      ----   ----   ----   ----
                          HBA AS1340                  9005   028f   1ded   3301
    
    Add PCI IDs for Inspur controller:
                                                      VID  / DID  / SVID / SDID
                                                      ----   ----   ----   ----
                          RT0800M6E2i                 9005   028f   1bd4   00a3
    
    Add PCI IDs for Delta controllers:
                                                      VID  / DID  / SVID / SDID
                                                      ----   ----   ----   ----
    ThinkSystem 4450-8i SAS/SATA/NVMe PCIe Gen4       9005   028f   1d49   0222
    24Gb HBA
    ThinkSystem 4450-16i SAS/SATA/NVMe PCIe Gen4      9005   028f   1d49   0223
    24Gb HBA
    ThinkSystem 4450-8e SAS/SATA PCIe Gen4            9005   028f   1d49   0224
    24Gb HBA
    ThinkSystem RAID 4450-16e PCIe Gen4 24Gb          9005   028f   1d49   0225
    Adapter HBA
    ThinkSystem RAID 5450-16i PCIe Gen4 24Gb Adapter  9005   028f   1d49   0521
    ThinkSystem RAID 9450-8i 4GB Flash PCIe Gen4      9005   028f   1d49   0624
    24Gb Adapter
    ThinkSystem RAID 9450-16i 4GB Flash PCIe Gen4     9005   028f   1d49   0625
    24Gb Adapter
    ThinkSystem RAID 9450-16i 4GB Flash PCIe Gen4     9005   028f   1d49   0626
    24Gb Adapter
    ThinkSystem RAID 9450-32i 8GB Flash PCIe Gen4     9005   028f   1d49   0627
    24Gb Adapter
    ThinkSystem RAID 9450-16e 4GB Flash PCIe Gen4     9005   028f   1d49   0628
    24Gb Adapter
    
    Add PCI ID for Cloudnine Controller:
                                                      VID  / DID  / SVID / SDID
                                                      ----   ----   ----   ----
                          SmartHBA P6600-24i          9005   028f   1f51   100b
    
    Add PCI IDs for Hurraydata Controllers:
                                                      VID  / DID  / SVID / SDID
                                                      ----   ----   ----   ----
                          HRDT TrustHBA H4100-8i      9005   028f   207d   4044
                          HRDT TrustHBA H4100-8e      9005   028f   207d   4054
                          HRDT TrustHBA H4100-16i     9005   028f   207d   4084
                          HRDT TrustHBA H4100-16e     9005   028f   207d   4094
                          HRDT TrustRAID D3152s-8i    9005   028f   207d   4140
                          HRDT TrustRAID D3154s-8i    9005   028f   207d   4240
    
    Reviewed-by: Scott Benesh <scott.benesh@microchip.com>
    Reviewed-by: Scott Teel <scott.teel@microchip.com>
    Reviewed-by: Mike McGowen <mike.mcgowen@microchip.com>
    Signed-off-by: David Strahan <david.strahan@microchip.com>
    Signed-off-by: Don Brace <don.brace@microchip.com>
    Link: https://lore.kernel.org/r/20250423183229.538572-3-don.brace@microchip.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.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/x86: Add a test to detect infinite SIGTRAP handler loop [+ + +]
Author: Xin Li (Intel) <xin@zytor.com>
Date:   Mon Jun 9 01:40:54 2025 -0700

    selftests/x86: Add a test to detect infinite SIGTRAP handler loop
    
    commit f287822688eeb44ae1cf6ac45701d965efc33218 upstream.
    
    When FRED is enabled, if the Trap Flag (TF) is set without an external
    debugger attached, it can lead to an infinite loop in the SIGTRAP
    handler.  To avoid this, the software event flag in the augmented SS
    must be cleared, ensuring that no single-step trap remains pending when
    ERETU completes.
    
    This test checks for that specific scenario—verifying whether the kernel
    correctly prevents an infinite SIGTRAP loop in this edge case when FRED
    is enabled.
    
    The test should _always_ pass with IDT event delivery, thus no need to
    disable the test even when FRED is not enabled.
    
    Signed-off-by: Xin Li (Intel) <xin@zytor.com>
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Tested-by: Sohil Mehta <sohil.mehta@intel.com>
    Cc:stable@vger.kernel.org
    Link: https://lore.kernel.org/all/20250609084054.2083189-3-xin%40zytor.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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: sh-sci: Clean sci_ports[0] after at earlycon exit [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Thu Jan 16 20:22:48 2025 +0200

    serial: sh-sci: Clean sci_ports[0] after at earlycon exit
    
    commit 5f1017069933489add0c08659673443c9905659e upstream.
    
    The early_console_setup() function initializes sci_ports[0].port with an
    object of type struct uart_port obtained from the struct earlycon_device
    passed as an argument to early_console_setup().
    
    Later, during serial port probing, the serial port used as earlycon
    (e.g., port A) might be remapped to a different position in the sci_ports[]
    array, and a different serial port (e.g., port B) might be assigned to slot
    0. For example:
    
    sci_ports[0] = port B
    sci_ports[X] = port A
    
    In this scenario, the new port mapped at index zero (port B) retains the
    data associated with the earlycon configuration. Consequently, after the
    Linux boot process, any access to the serial port now mapped to
    sci_ports[0] (port B) will block the original earlycon port (port A).
    
    To address this, introduce an early_console_exit() function to clean up
    sci_ports[0] when earlycon is exited.
    
    To prevent the cleanup of sci_ports[0] while the serial device is still
    being used by earlycon, introduce the struct sci_port::probing flag and
    account for it in early_console_exit().
    
    Fixes: 0b0cced19ab1 ("serial: sh-sci: Add CONFIG_SERIAL_EARLYCON support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Link: https://lore.kernel.org/r/20250116182249.3828577-5-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

serial: sh-sci: Increment the runtime usage counter for the earlycon device [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Thu Jan 16 20:22:49 2025 +0200

    serial: sh-sci: Increment the runtime usage counter for the earlycon device
    
    commit 651dee03696e1dfde6d9a7e8664bbdcd9a10ea7f upstream.
    
    In the sh-sci driver, serial ports are mapped to the sci_ports[] array,
    with earlycon mapped at index zero.
    
    The uart_add_one_port() function eventually calls __device_attach(),
    which, in turn, calls pm_request_idle(). The identified code path is as
    follows:
    
    uart_add_one_port() ->
      serial_ctrl_register_port() ->
        serial_core_register_port() ->
          serial_core_port_device_add() ->
            serial_base_port_add() ->
              device_add() ->
                bus_probe_device() ->
                  device_initial_probe() ->
                    __device_attach() ->
                      // ...
                      if (dev->p->dead) {
                        // ...
                      } else if (dev->driver) {
                        // ...
                      } else {
                        // ...
                        pm_request_idle(dev);
                        // ...
                      }
    
    The earlycon device clocks are enabled by the bootloader. However, the
    pm_request_idle() call in __device_attach() disables the SCI port clocks
    while earlycon is still active.
    
    The earlycon write function, serial_console_write(), calls
    sci_poll_put_char() via serial_console_putchar(). If the SCI port clocks
    are disabled, writing to earlycon may sometimes cause the SR.TDFE bit to
    remain unset indefinitely, causing the while loop in sci_poll_put_char()
    to never exit. On single-core SoCs, this can result in the system being
    blocked during boot when this issue occurs.
    
    To resolve this, increment the runtime PM usage counter for the earlycon
    SCI device before registering the UART port.
    
    Fixes: 0b0cced19ab1 ("serial: sh-sci: Add CONFIG_SERIAL_EARLYCON support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Link: https://lore.kernel.org/r/20250116182249.3828577-6-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
smb: client: add NULL check in automount_fullpath [+ + +]
Author: Ruben Devos <devosruben6@gmail.com>
Date:   Sun Jun 1 19:18:55 2025 +0200

    smb: client: add NULL check in automount_fullpath
    
    commit f1e7a277a1736e12cc4bd6d93b8a5c439b8ca20c upstream.
    
    page is checked for null in __build_path_from_dentry_optional_prefix
    when tcon->origin_fullpath is not set. However, the check is missing when
    it is set.
    Add a check to prevent a potential NULL pointer dereference.
    
    Signed-off-by: Ruben Devos <devosruben6@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

smb: client: fix first command failure during re-negotiation [+ + +]
Author: zhangjian <zhangjian496@huawei.com>
Date:   Thu Jun 19 09:18:29 2025 +0800

    smb: client: fix first command failure during re-negotiation
    
    commit 34331d7beed7576acfc98e991c39738b96162499 upstream.
    
    after fabc4ed200f9, server_unresponsive add a condition to check whether client
    need to reconnect depending on server->lstrp. When client failed to reconnect
    for some time and abort connection, server->lstrp is updated for the last time.
    In the following scene, server->lstrp is too old. This cause next command
    failure in re-negotiation rather than waiting for re-negotiation done.
    
    1. mount -t cifs -o username=Everyone,echo_internal=10 //$server_ip/export /mnt
    2. ssh $server_ip "echo b > /proc/sysrq-trigger &"
    3. ls /mnt
    4. sleep 21s
    5. ssh $server_ip "service firewalld stop"
    6. ls # return EHOSTDOWN
    
    If the interval between 5 and 6 is too small, 6 may trigger sending negotiation
    request. Before backgrounding cifsd thread try to receive negotiation response
    from server in cifs_readv_from_socket, server_unresponsive may trigger
    cifs_reconnect which cause 6 to be failed:
    
    ls thread
    ----------------
      smb2_negotiate
        server->tcpStatus = CifsInNegotiate
        compound_send_recv
          wait_for_compound_request
    
    cifsd thread
    ----------------
      cifs_readv_from_socket
        server_unresponsive
          server->tcpStatus == CifsInNegotiate && jiffies > server->lstrp + 20s
            cifs_reconnect
              cifs_abort_connection: mid_state = MID_RETRY_NEEDED
    
    ls thread
    ----------------
          cifs_sync_mid_result return EAGAIN
      smb2_negotiate return EHOSTDOWN
    
    Though server->lstrp means last server response time, it is updated in
    cifs_abort_connection and cifs_get_tcp_session. We can also update server->lstrp
    before switching into CifsInNegotiate state to avoid failure in 6.
    
    Fixes: 7ccc1465465d ("smb: client: fix hang in wait_for_response() for negproto")
    Acked-by: Paulo Alcantara (Red Hat) <pc@manguebit.org>
    Acked-by: Meetakshi Setiya <msetiya@microsoft.com>
    Signed-off-by: zhangjian <zhangjian496@huawei.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

smb: client: fix max_sge overflow in smb_extract_folioq_to_rdma() [+ + +]
Author: Stefan Metzmacher <metze@samba.org>
Date:   Wed Jun 18 18:51:40 2025 +0200

    smb: client: fix max_sge overflow in smb_extract_folioq_to_rdma()
    
    commit a379a8a2a0032e12e7ef397197c9c2ad011588d6 upstream.
    
    This fixes the following problem:
    
    [  749.901015] [   T8673] run fstests cifs/001 at 2025-06-17 09:40:30
    [  750.346409] [   T9870] ==================================================================
    [  750.346814] [   T9870] BUG: KASAN: slab-out-of-bounds in smb_set_sge+0x2cc/0x3b0 [cifs]
    [  750.347330] [   T9870] Write of size 8 at addr ffff888011082890 by task xfs_io/9870
    [  750.347705] [   T9870]
    [  750.348077] [   T9870] CPU: 0 UID: 0 PID: 9870 Comm: xfs_io Kdump: loaded Not tainted 6.16.0-rc2-metze.02+ #1 PREEMPT(voluntary)
    [  750.348082] [   T9870] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    [  750.348085] [   T9870] Call Trace:
    [  750.348086] [   T9870]  <TASK>
    [  750.348088] [   T9870]  dump_stack_lvl+0x76/0xa0
    [  750.348106] [   T9870]  print_report+0xd1/0x640
    [  750.348116] [   T9870]  ? __pfx__raw_spin_lock_irqsave+0x10/0x10
    [  750.348120] [   T9870]  ? kasan_complete_mode_report_info+0x26/0x210
    [  750.348124] [   T9870]  kasan_report+0xe7/0x130
    [  750.348128] [   T9870]  ? smb_set_sge+0x2cc/0x3b0 [cifs]
    [  750.348262] [   T9870]  ? smb_set_sge+0x2cc/0x3b0 [cifs]
    [  750.348377] [   T9870]  __asan_report_store8_noabort+0x17/0x30
    [  750.348381] [   T9870]  smb_set_sge+0x2cc/0x3b0 [cifs]
    [  750.348496] [   T9870]  smbd_post_send_iter+0x1990/0x3070 [cifs]
    [  750.348625] [   T9870]  ? __pfx_smbd_post_send_iter+0x10/0x10 [cifs]
    [  750.348741] [   T9870]  ? update_stack_state+0x2a0/0x670
    [  750.348749] [   T9870]  ? cifs_flush+0x153/0x320 [cifs]
    [  750.348870] [   T9870]  ? cifs_flush+0x153/0x320 [cifs]
    [  750.348990] [   T9870]  ? update_stack_state+0x2a0/0x670
    [  750.348995] [   T9870]  smbd_send+0x58c/0x9c0 [cifs]
    [  750.349117] [   T9870]  ? __pfx_smbd_send+0x10/0x10 [cifs]
    [  750.349231] [   T9870]  ? unwind_get_return_address+0x65/0xb0
    [  750.349235] [   T9870]  ? __pfx_stack_trace_consume_entry+0x10/0x10
    [  750.349242] [   T9870]  ? arch_stack_walk+0xa7/0x100
    [  750.349250] [   T9870]  ? stack_trace_save+0x92/0xd0
    [  750.349254] [   T9870]  __smb_send_rqst+0x931/0xec0 [cifs]
    [  750.349374] [   T9870]  ? kernel_text_address+0x173/0x190
    [  750.349379] [   T9870]  ? kasan_save_stack+0x39/0x70
    [  750.349382] [   T9870]  ? kasan_save_track+0x18/0x70
    [  750.349385] [   T9870]  ? __kasan_slab_alloc+0x9d/0xa0
    [  750.349389] [   T9870]  ? __pfx___smb_send_rqst+0x10/0x10 [cifs]
    [  750.349508] [   T9870]  ? smb2_mid_entry_alloc+0xb4/0x7e0 [cifs]
    [  750.349626] [   T9870]  ? cifs_call_async+0x277/0xb00 [cifs]
    [  750.349746] [   T9870]  ? cifs_issue_write+0x256/0x610 [cifs]
    [  750.349867] [   T9870]  ? netfs_do_issue_write+0xc2/0x340 [netfs]
    [  750.349900] [   T9870]  ? netfs_advance_write+0x45b/0x1270 [netfs]
    [  750.349929] [   T9870]  ? netfs_write_folio+0xd6c/0x1be0 [netfs]
    [  750.349958] [   T9870]  ? netfs_writepages+0x2e9/0xa80 [netfs]
    [  750.349987] [   T9870]  ? do_writepages+0x21f/0x590
    [  750.349993] [   T9870]  ? filemap_fdatawrite_wbc+0xe1/0x140
    [  750.349997] [   T9870]  ? entry_SYSCALL_64_after_hwframe+0x76/0x7e
    [  750.350002] [   T9870]  smb_send_rqst+0x22e/0x2f0 [cifs]
    [  750.350131] [   T9870]  ? __pfx_smb_send_rqst+0x10/0x10 [cifs]
    [  750.350255] [   T9870]  ? local_clock_noinstr+0xe/0xd0
    [  750.350261] [   T9870]  ? kasan_save_alloc_info+0x37/0x60
    [  750.350268] [   T9870]  ? __kasan_check_write+0x14/0x30
    [  750.350271] [   T9870]  ? _raw_spin_lock+0x81/0xf0
    [  750.350275] [   T9870]  ? __pfx__raw_spin_lock+0x10/0x10
    [  750.350278] [   T9870]  ? smb2_setup_async_request+0x293/0x580 [cifs]
    [  750.350398] [   T9870]  cifs_call_async+0x477/0xb00 [cifs]
    [  750.350518] [   T9870]  ? __pfx_smb2_writev_callback+0x10/0x10 [cifs]
    [  750.350636] [   T9870]  ? __pfx_cifs_call_async+0x10/0x10 [cifs]
    [  750.350756] [   T9870]  ? __pfx__raw_spin_lock+0x10/0x10
    [  750.350760] [   T9870]  ? __kasan_check_write+0x14/0x30
    [  750.350763] [   T9870]  ? __smb2_plain_req_init+0x933/0x1090 [cifs]
    [  750.350891] [   T9870]  smb2_async_writev+0x15ff/0x2460 [cifs]
    [  750.351008] [   T9870]  ? sched_clock_noinstr+0x9/0x10
    [  750.351012] [   T9870]  ? local_clock_noinstr+0xe/0xd0
    [  750.351018] [   T9870]  ? __pfx_smb2_async_writev+0x10/0x10 [cifs]
    [  750.351144] [   T9870]  ? __pfx__raw_spin_lock_irqsave+0x10/0x10
    [  750.351150] [   T9870]  ? _raw_spin_unlock+0xe/0x40
    [  750.351154] [   T9870]  ? cifs_pick_channel+0x242/0x370 [cifs]
    [  750.351275] [   T9870]  cifs_issue_write+0x256/0x610 [cifs]
    [  750.351554] [   T9870]  ? cifs_issue_write+0x256/0x610 [cifs]
    [  750.351677] [   T9870]  netfs_do_issue_write+0xc2/0x340 [netfs]
    [  750.351710] [   T9870]  netfs_advance_write+0x45b/0x1270 [netfs]
    [  750.351740] [   T9870]  ? rolling_buffer_append+0x12d/0x440 [netfs]
    [  750.351769] [   T9870]  netfs_write_folio+0xd6c/0x1be0 [netfs]
    [  750.351798] [   T9870]  ? __kasan_check_write+0x14/0x30
    [  750.351804] [   T9870]  netfs_writepages+0x2e9/0xa80 [netfs]
    [  750.351835] [   T9870]  ? __pfx_netfs_writepages+0x10/0x10 [netfs]
    [  750.351864] [   T9870]  ? exit_files+0xab/0xe0
    [  750.351867] [   T9870]  ? do_exit+0x148f/0x2980
    [  750.351871] [   T9870]  ? do_group_exit+0xb5/0x250
    [  750.351874] [   T9870]  ? arch_do_signal_or_restart+0x92/0x630
    [  750.351879] [   T9870]  ? exit_to_user_mode_loop+0x98/0x170
    [  750.351882] [   T9870]  ? do_syscall_64+0x2cf/0xd80
    [  750.351886] [   T9870]  ? entry_SYSCALL_64_after_hwframe+0x76/0x7e
    [  750.351890] [   T9870]  do_writepages+0x21f/0x590
    [  750.351894] [   T9870]  ? __pfx_do_writepages+0x10/0x10
    [  750.351897] [   T9870]  filemap_fdatawrite_wbc+0xe1/0x140
    [  750.351901] [   T9870]  __filemap_fdatawrite_range+0xba/0x100
    [  750.351904] [   T9870]  ? __pfx___filemap_fdatawrite_range+0x10/0x10
    [  750.351912] [   T9870]  ? __kasan_check_write+0x14/0x30
    [  750.351916] [   T9870]  filemap_write_and_wait_range+0x7d/0xf0
    [  750.351920] [   T9870]  cifs_flush+0x153/0x320 [cifs]
    [  750.352042] [   T9870]  filp_flush+0x107/0x1a0
    [  750.352046] [   T9870]  filp_close+0x14/0x30
    [  750.352049] [   T9870]  put_files_struct.part.0+0x126/0x2a0
    [  750.352053] [   T9870]  ? __pfx__raw_spin_lock+0x10/0x10
    [  750.352058] [   T9870]  exit_files+0xab/0xe0
    [  750.352061] [   T9870]  do_exit+0x148f/0x2980
    [  750.352065] [   T9870]  ? __pfx_do_exit+0x10/0x10
    [  750.352069] [   T9870]  ? __kasan_check_write+0x14/0x30
    [  750.352072] [   T9870]  ? _raw_spin_lock_irq+0x8a/0xf0
    [  750.352076] [   T9870]  do_group_exit+0xb5/0x250
    [  750.352080] [   T9870]  get_signal+0x22d3/0x22e0
    [  750.352086] [   T9870]  ? __pfx_get_signal+0x10/0x10
    [  750.352089] [   T9870]  ? fpregs_assert_state_consistent+0x68/0x100
    [  750.352101] [   T9870]  ? folio_add_lru+0xda/0x120
    [  750.352105] [   T9870]  arch_do_signal_or_restart+0x92/0x630
    [  750.352109] [   T9870]  ? __pfx_arch_do_signal_or_restart+0x10/0x10
    [  750.352115] [   T9870]  exit_to_user_mode_loop+0x98/0x170
    [  750.352118] [   T9870]  do_syscall_64+0x2cf/0xd80
    [  750.352123] [   T9870]  ? __kasan_check_read+0x11/0x20
    [  750.352126] [   T9870]  ? count_memcg_events+0x1b4/0x420
    [  750.352132] [   T9870]  ? handle_mm_fault+0x148/0x690
    [  750.352136] [   T9870]  ? _raw_spin_lock_irq+0x8a/0xf0
    [  750.352140] [   T9870]  ? __kasan_check_read+0x11/0x20
    [  750.352143] [   T9870]  ? fpregs_assert_state_consistent+0x68/0x100
    [  750.352146] [   T9870]  ? irqentry_exit_to_user_mode+0x2e/0x250
    [  750.352151] [   T9870]  ? irqentry_exit+0x43/0x50
    [  750.352154] [   T9870]  ? exc_page_fault+0x75/0xe0
    [  750.352160] [   T9870]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
    [  750.352163] [   T9870] RIP: 0033:0x7858c94ab6e2
    [  750.352167] [   T9870] Code: Unable to access opcode bytes at 0x7858c94ab6b8.
    [  750.352175] [   T9870] RSP: 002b:00007858c9248ce8 EFLAGS: 00000246 ORIG_RAX: 0000000000000022
    [  750.352179] [   T9870] RAX: fffffffffffffdfe RBX: 00007858c92496c0 RCX: 00007858c94ab6e2
    [  750.352182] [   T9870] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
    [  750.352184] [   T9870] RBP: 00007858c9248d10 R08: 0000000000000000 R09: 0000000000000000
    [  750.352185] [   T9870] R10: 0000000000000000 R11: 0000000000000246 R12: fffffffffffffde0
    [  750.352187] [   T9870] R13: 0000000000000020 R14: 0000000000000002 R15: 00007ffc072d2230
    [  750.352191] [   T9870]  </TASK>
    [  750.352195] [   T9870]
    [  750.395206] [   T9870] Allocated by task 9870 on cpu 0 at 750.346406s:
    [  750.395523] [   T9870]  kasan_save_stack+0x39/0x70
    [  750.395532] [   T9870]  kasan_save_track+0x18/0x70
    [  750.395536] [   T9870]  kasan_save_alloc_info+0x37/0x60
    [  750.395539] [   T9870]  __kasan_slab_alloc+0x9d/0xa0
    [  750.395543] [   T9870]  kmem_cache_alloc_noprof+0x13c/0x3f0
    [  750.395548] [   T9870]  mempool_alloc_slab+0x15/0x20
    [  750.395553] [   T9870]  mempool_alloc_noprof+0x135/0x340
    [  750.395557] [   T9870]  smbd_post_send_iter+0x63e/0x3070 [cifs]
    [  750.395694] [   T9870]  smbd_send+0x58c/0x9c0 [cifs]
    [  750.395819] [   T9870]  __smb_send_rqst+0x931/0xec0 [cifs]
    [  750.395950] [   T9870]  smb_send_rqst+0x22e/0x2f0 [cifs]
    [  750.396081] [   T9870]  cifs_call_async+0x477/0xb00 [cifs]
    [  750.396232] [   T9870]  smb2_async_writev+0x15ff/0x2460 [cifs]
    [  750.396359] [   T9870]  cifs_issue_write+0x256/0x610 [cifs]
    [  750.396492] [   T9870]  netfs_do_issue_write+0xc2/0x340 [netfs]
    [  750.396544] [   T9870]  netfs_advance_write+0x45b/0x1270 [netfs]
    [  750.396576] [   T9870]  netfs_write_folio+0xd6c/0x1be0 [netfs]
    [  750.396608] [   T9870]  netfs_writepages+0x2e9/0xa80 [netfs]
    [  750.396639] [   T9870]  do_writepages+0x21f/0x590
    [  750.396643] [   T9870]  filemap_fdatawrite_wbc+0xe1/0x140
    [  750.396647] [   T9870]  __filemap_fdatawrite_range+0xba/0x100
    [  750.396651] [   T9870]  filemap_write_and_wait_range+0x7d/0xf0
    [  750.396656] [   T9870]  cifs_flush+0x153/0x320 [cifs]
    [  750.396787] [   T9870]  filp_flush+0x107/0x1a0
    [  750.396791] [   T9870]  filp_close+0x14/0x30
    [  750.396795] [   T9870]  put_files_struct.part.0+0x126/0x2a0
    [  750.396800] [   T9870]  exit_files+0xab/0xe0
    [  750.396803] [   T9870]  do_exit+0x148f/0x2980
    [  750.396808] [   T9870]  do_group_exit+0xb5/0x250
    [  750.396813] [   T9870]  get_signal+0x22d3/0x22e0
    [  750.396817] [   T9870]  arch_do_signal_or_restart+0x92/0x630
    [  750.396822] [   T9870]  exit_to_user_mode_loop+0x98/0x170
    [  750.396827] [   T9870]  do_syscall_64+0x2cf/0xd80
    [  750.396832] [   T9870]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
    [  750.396836] [   T9870]
    [  750.397150] [   T9870] The buggy address belongs to the object at ffff888011082800
                               which belongs to the cache smbd_request_0000000008f3bd7b of size 144
    [  750.397798] [   T9870] The buggy address is located 0 bytes to the right of
                               allocated 144-byte region [ffff888011082800, ffff888011082890)
    [  750.398469] [   T9870]
    [  750.398800] [   T9870] The buggy address belongs to the physical page:
    [  750.399141] [   T9870] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x11082
    [  750.399148] [   T9870] flags: 0xfffffc0000000(node=0|zone=1|lastcpupid=0x1fffff)
    [  750.399155] [   T9870] page_type: f5(slab)
    [  750.399161] [   T9870] raw: 000fffffc0000000 ffff888022d65640 dead000000000122 0000000000000000
    [  750.399165] [   T9870] raw: 0000000000000000 0000000080100010 00000000f5000000 0000000000000000
    [  750.399169] [   T9870] page dumped because: kasan: bad access detected
    [  750.399172] [   T9870]
    [  750.399505] [   T9870] Memory state around the buggy address:
    [  750.399863] [   T9870]  ffff888011082780: fb fb fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [  750.400247] [   T9870]  ffff888011082800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [  750.400618] [   T9870] >ffff888011082880: 00 00 fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [  750.400982] [   T9870]                          ^
    [  750.401370] [   T9870]  ffff888011082900: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [  750.401774] [   T9870]  ffff888011082980: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [  750.402171] [   T9870] ==================================================================
    [  750.402696] [   T9870] Disabling lock debugging due to kernel taint
    [  750.403202] [   T9870] BUG: unable to handle page fault for address: ffff8880110a2000
    [  750.403797] [   T9870] #PF: supervisor write access in kernel mode
    [  750.404204] [   T9870] #PF: error_code(0x0003) - permissions violation
    [  750.404581] [   T9870] PGD 5ce01067 P4D 5ce01067 PUD 5ce02067 PMD 78aa063 PTE 80000000110a2021
    [  750.404969] [   T9870] Oops: Oops: 0003 [#1] SMP KASAN PTI
    [  750.405394] [   T9870] CPU: 0 UID: 0 PID: 9870 Comm: xfs_io Kdump: loaded Tainted: G    B               6.16.0-rc2-metze.02+ #1 PREEMPT(voluntary)
    [  750.406510] [   T9870] Tainted: [B]=BAD_PAGE
    [  750.406967] [   T9870] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    [  750.407440] [   T9870] RIP: 0010:smb_set_sge+0x15c/0x3b0 [cifs]
    [  750.408065] [   T9870] Code: 48 83 f8 ff 0f 84 b0 00 00 00 48 ba 00 00 00 00 00 fc ff df 4c 89 e1 48 c1 e9 03 80 3c 11 00 0f 85 69 01 00 00 49 8d 7c 24 08 <49> 89 04 24 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 0f
    [  750.409283] [   T9870] RSP: 0018:ffffc90005e2e758 EFLAGS: 00010246
    [  750.409803] [   T9870] RAX: ffff888036c53400 RBX: ffffc90005e2e878 RCX: 1ffff11002214400
    [  750.410323] [   T9870] RDX: dffffc0000000000 RSI: dffffc0000000000 RDI: ffff8880110a2008
    [  750.411217] [   T9870] RBP: ffffc90005e2e798 R08: 0000000000000001 R09: 0000000000000400
    [  750.411770] [   T9870] R10: ffff888011082800 R11: 0000000000000000 R12: ffff8880110a2000
    [  750.412325] [   T9870] R13: 0000000000000000 R14: ffffc90005e2e888 R15: ffff88801a4b6000
    [  750.412901] [   T9870] FS:  0000000000000000(0000) GS:ffff88812bc68000(0000) knlGS:0000000000000000
    [  750.413477] [   T9870] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  750.414077] [   T9870] CR2: ffff8880110a2000 CR3: 000000005b0a6005 CR4: 00000000000726f0
    [  750.414654] [   T9870] Call Trace:
    [  750.415211] [   T9870]  <TASK>
    [  750.415748] [   T9870]  smbd_post_send_iter+0x1990/0x3070 [cifs]
    [  750.416449] [   T9870]  ? __pfx_smbd_post_send_iter+0x10/0x10 [cifs]
    [  750.417128] [   T9870]  ? update_stack_state+0x2a0/0x670
    [  750.417685] [   T9870]  ? cifs_flush+0x153/0x320 [cifs]
    [  750.418380] [   T9870]  ? cifs_flush+0x153/0x320 [cifs]
    [  750.419055] [   T9870]  ? update_stack_state+0x2a0/0x670
    [  750.419624] [   T9870]  smbd_send+0x58c/0x9c0 [cifs]
    [  750.420297] [   T9870]  ? __pfx_smbd_send+0x10/0x10 [cifs]
    [  750.420936] [   T9870]  ? unwind_get_return_address+0x65/0xb0
    [  750.421456] [   T9870]  ? __pfx_stack_trace_consume_entry+0x10/0x10
    [  750.421954] [   T9870]  ? arch_stack_walk+0xa7/0x100
    [  750.422460] [   T9870]  ? stack_trace_save+0x92/0xd0
    [  750.422948] [   T9870]  __smb_send_rqst+0x931/0xec0 [cifs]
    [  750.423579] [   T9870]  ? kernel_text_address+0x173/0x190
    [  750.424056] [   T9870]  ? kasan_save_stack+0x39/0x70
    [  750.424813] [   T9870]  ? kasan_save_track+0x18/0x70
    [  750.425323] [   T9870]  ? __kasan_slab_alloc+0x9d/0xa0
    [  750.425831] [   T9870]  ? __pfx___smb_send_rqst+0x10/0x10 [cifs]
    [  750.426548] [   T9870]  ? smb2_mid_entry_alloc+0xb4/0x7e0 [cifs]
    [  750.427231] [   T9870]  ? cifs_call_async+0x277/0xb00 [cifs]
    [  750.427882] [   T9870]  ? cifs_issue_write+0x256/0x610 [cifs]
    [  750.428909] [   T9870]  ? netfs_do_issue_write+0xc2/0x340 [netfs]
    [  750.429425] [   T9870]  ? netfs_advance_write+0x45b/0x1270 [netfs]
    [  750.429882] [   T9870]  ? netfs_write_folio+0xd6c/0x1be0 [netfs]
    [  750.430345] [   T9870]  ? netfs_writepages+0x2e9/0xa80 [netfs]
    [  750.430809] [   T9870]  ? do_writepages+0x21f/0x590
    [  750.431239] [   T9870]  ? filemap_fdatawrite_wbc+0xe1/0x140
    [  750.431652] [   T9870]  ? entry_SYSCALL_64_after_hwframe+0x76/0x7e
    [  750.432041] [   T9870]  smb_send_rqst+0x22e/0x2f0 [cifs]
    [  750.432586] [   T9870]  ? __pfx_smb_send_rqst+0x10/0x10 [cifs]
    [  750.433108] [   T9870]  ? local_clock_noinstr+0xe/0xd0
    [  750.433482] [   T9870]  ? kasan_save_alloc_info+0x37/0x60
    [  750.433855] [   T9870]  ? __kasan_check_write+0x14/0x30
    [  750.434214] [   T9870]  ? _raw_spin_lock+0x81/0xf0
    [  750.434561] [   T9870]  ? __pfx__raw_spin_lock+0x10/0x10
    [  750.434903] [   T9870]  ? smb2_setup_async_request+0x293/0x580 [cifs]
    [  750.435394] [   T9870]  cifs_call_async+0x477/0xb00 [cifs]
    [  750.435892] [   T9870]  ? __pfx_smb2_writev_callback+0x10/0x10 [cifs]
    [  750.436388] [   T9870]  ? __pfx_cifs_call_async+0x10/0x10 [cifs]
    [  750.436881] [   T9870]  ? __pfx__raw_spin_lock+0x10/0x10
    [  750.437237] [   T9870]  ? __kasan_check_write+0x14/0x30
    [  750.437579] [   T9870]  ? __smb2_plain_req_init+0x933/0x1090 [cifs]
    [  750.438062] [   T9870]  smb2_async_writev+0x15ff/0x2460 [cifs]
    [  750.438557] [   T9870]  ? sched_clock_noinstr+0x9/0x10
    [  750.438906] [   T9870]  ? local_clock_noinstr+0xe/0xd0
    [  750.439293] [   T9870]  ? __pfx_smb2_async_writev+0x10/0x10 [cifs]
    [  750.439786] [   T9870]  ? __pfx__raw_spin_lock_irqsave+0x10/0x10
    [  750.440143] [   T9870]  ? _raw_spin_unlock+0xe/0x40
    [  750.440495] [   T9870]  ? cifs_pick_channel+0x242/0x370 [cifs]
    [  750.440989] [   T9870]  cifs_issue_write+0x256/0x610 [cifs]
    [  750.441492] [   T9870]  ? cifs_issue_write+0x256/0x610 [cifs]
    [  750.441987] [   T9870]  netfs_do_issue_write+0xc2/0x340 [netfs]
    [  750.442387] [   T9870]  netfs_advance_write+0x45b/0x1270 [netfs]
    [  750.442969] [   T9870]  ? rolling_buffer_append+0x12d/0x440 [netfs]
    [  750.443376] [   T9870]  netfs_write_folio+0xd6c/0x1be0 [netfs]
    [  750.443768] [   T9870]  ? __kasan_check_write+0x14/0x30
    [  750.444145] [   T9870]  netfs_writepages+0x2e9/0xa80 [netfs]
    [  750.444541] [   T9870]  ? __pfx_netfs_writepages+0x10/0x10 [netfs]
    [  750.444936] [   T9870]  ? exit_files+0xab/0xe0
    [  750.445312] [   T9870]  ? do_exit+0x148f/0x2980
    [  750.445672] [   T9870]  ? do_group_exit+0xb5/0x250
    [  750.446028] [   T9870]  ? arch_do_signal_or_restart+0x92/0x630
    [  750.446402] [   T9870]  ? exit_to_user_mode_loop+0x98/0x170
    [  750.446762] [   T9870]  ? do_syscall_64+0x2cf/0xd80
    [  750.447132] [   T9870]  ? entry_SYSCALL_64_after_hwframe+0x76/0x7e
    [  750.447499] [   T9870]  do_writepages+0x21f/0x590
    [  750.447859] [   T9870]  ? __pfx_do_writepages+0x10/0x10
    [  750.448236] [   T9870]  filemap_fdatawrite_wbc+0xe1/0x140
    [  750.448595] [   T9870]  __filemap_fdatawrite_range+0xba/0x100
    [  750.448953] [   T9870]  ? __pfx___filemap_fdatawrite_range+0x10/0x10
    [  750.449336] [   T9870]  ? __kasan_check_write+0x14/0x30
    [  750.449697] [   T9870]  filemap_write_and_wait_range+0x7d/0xf0
    [  750.450062] [   T9870]  cifs_flush+0x153/0x320 [cifs]
    [  750.450592] [   T9870]  filp_flush+0x107/0x1a0
    [  750.450952] [   T9870]  filp_close+0x14/0x30
    [  750.451322] [   T9870]  put_files_struct.part.0+0x126/0x2a0
    [  750.451678] [   T9870]  ? __pfx__raw_spin_lock+0x10/0x10
    [  750.452033] [   T9870]  exit_files+0xab/0xe0
    [  750.452401] [   T9870]  do_exit+0x148f/0x2980
    [  750.452751] [   T9870]  ? __pfx_do_exit+0x10/0x10
    [  750.453109] [   T9870]  ? __kasan_check_write+0x14/0x30
    [  750.453459] [   T9870]  ? _raw_spin_lock_irq+0x8a/0xf0
    [  750.453787] [   T9870]  do_group_exit+0xb5/0x250
    [  750.454082] [   T9870]  get_signal+0x22d3/0x22e0
    [  750.454406] [   T9870]  ? __pfx_get_signal+0x10/0x10
    [  750.454709] [   T9870]  ? fpregs_assert_state_consistent+0x68/0x100
    [  750.455031] [   T9870]  ? folio_add_lru+0xda/0x120
    [  750.455347] [   T9870]  arch_do_signal_or_restart+0x92/0x630
    [  750.455656] [   T9870]  ? __pfx_arch_do_signal_or_restart+0x10/0x10
    [  750.455967] [   T9870]  exit_to_user_mode_loop+0x98/0x170
    [  750.456282] [   T9870]  do_syscall_64+0x2cf/0xd80
    [  750.456591] [   T9870]  ? __kasan_check_read+0x11/0x20
    [  750.456897] [   T9870]  ? count_memcg_events+0x1b4/0x420
    [  750.457280] [   T9870]  ? handle_mm_fault+0x148/0x690
    [  750.457616] [   T9870]  ? _raw_spin_lock_irq+0x8a/0xf0
    [  750.457925] [   T9870]  ? __kasan_check_read+0x11/0x20
    [  750.458297] [   T9870]  ? fpregs_assert_state_consistent+0x68/0x100
    [  750.458672] [   T9870]  ? irqentry_exit_to_user_mode+0x2e/0x250
    [  750.459191] [   T9870]  ? irqentry_exit+0x43/0x50
    [  750.459600] [   T9870]  ? exc_page_fault+0x75/0xe0
    [  750.460130] [   T9870]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
    [  750.460570] [   T9870] RIP: 0033:0x7858c94ab6e2
    [  750.461206] [   T9870] Code: Unable to access opcode bytes at 0x7858c94ab6b8.
    [  750.461780] [   T9870] RSP: 002b:00007858c9248ce8 EFLAGS: 00000246 ORIG_RAX: 0000000000000022
    [  750.462327] [   T9870] RAX: fffffffffffffdfe RBX: 00007858c92496c0 RCX: 00007858c94ab6e2
    [  750.462653] [   T9870] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
    [  750.462969] [   T9870] RBP: 00007858c9248d10 R08: 0000000000000000 R09: 0000000000000000
    [  750.463290] [   T9870] R10: 0000000000000000 R11: 0000000000000246 R12: fffffffffffffde0
    [  750.463640] [   T9870] R13: 0000000000000020 R14: 0000000000000002 R15: 00007ffc072d2230
    [  750.463965] [   T9870]  </TASK>
    [  750.464285] [   T9870] Modules linked in: siw ib_uverbs ccm cmac nls_utf8 cifs cifs_arc4 nls_ucs2_utils rdma_cm iw_cm ib_cm ib_core cifs_md4 netfs softdog vboxsf vboxguest cpuid intel_rapl_msr intel_rapl_common intel_uncore_frequency_common intel_pmc_core pmt_telemetry pmt_class intel_pmc_ssram_telemetry intel_vsec polyval_clmulni ghash_clmulni_intel sha1_ssse3 aesni_intel rapl i2c_piix4 i2c_smbus joydev input_leds mac_hid sunrpc binfmt_misc kvm_intel kvm irqbypass sch_fq_codel efi_pstore nfnetlink vsock_loopback vmw_vsock_virtio_transport_common vmw_vsock_vmci_transport vsock vmw_vmci dmi_sysfs ip_tables x_tables autofs4 hid_generic vboxvideo usbhid drm_vram_helper psmouse vga16fb vgastate drm_ttm_helper serio_raw hid ahci libahci ttm pata_acpi video wmi [last unloaded: vboxguest]
    [  750.467127] [   T9870] CR2: ffff8880110a2000
    
    cc: Tom Talpey <tom@talpey.com>
    cc: linux-cifs@vger.kernel.org
    Reviewed-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Tom Talpey <tom@talpey.com>
    Fixes: c45ebd636c32 ("cifs: Provide the capability to extract from ITER_FOLIOQ to RDMA SGEs")
    Signed-off-by: Stefan Metzmacher <metze@samba.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

smb: fix secondary channel creation issue with kerberos by populating hostname when adding channels [+ + +]
Author: Bharath SM <bharathsm@microsoft.com>
Date:   Mon Mar 17 15:57:27 2025 +0530

    smb: fix secondary channel creation issue with kerberos by populating hostname when adding channels
    
    commit 306cb65bb0cb243389fcbd0a66907d5bdea07d1e upstream.
    
    When mounting a share with kerberos authentication with multichannel
    support, share mounts correctly, but fails to create secondary
    channels. This occurs because the hostname is not populated when
    adding the channels. The hostname is necessary for the userspace
    cifs.upcall program to retrieve the required credentials and pass
    it back to kernel, without hostname secondary channels fails
    establish.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Shyam Prasad N <sprasad@microsoft.com>
    Signed-off-by: Bharath SM <bharathsm@microsoft.com>
    Reported-by: xfuren <xfuren@gmail.com>
    Link: https://bugzilla.samba.org/show_bug.cgi?id=15824
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

smb: improve directory cache reuse for readdir operations [+ + +]
Author: Bharath SM <bharathsm.hsk@gmail.com>
Date:   Wed Jun 11 16:59:02 2025 +0530

    smb: improve directory cache reuse for readdir operations
    
    commit 72dd7961a4bb4fa1fc456169a61dd12e68e50645 upstream.
    
    Currently, cached directory contents were not reused across subsequent
    'ls' operations because the cache validity check relied on comparing
    the ctx pointer, which changes with each readdir invocation. As a
    result, the cached dir entries was not marked as valid and the cache was
    not utilized for subsequent 'ls' operations.
    
    This change uses the file pointer, which remains consistent across all
    readdir calls for a given directory instance, to associate and validate
    the cache. As a result, cached directory contents can now be
    correctly reused, improving performance for repeated directory listings.
    
    Performance gains with local windows SMB server:
    
    Without the patch and default actimeo=1:
     1000 directory enumeration operations on dir with 10k files took 135.0s
    
    With this patch and actimeo=0:
     1000 directory enumeration operations on dir with 10k files took just 5.1s
    
    Signed-off-by: Bharath SM <bharathsm@microsoft.com>
    Reviewed-by: Shyam Prasad N <sprasad@microsoft.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

smb: Log an error when close_all_cached_dirs fails [+ + +]
Author: Paul Aurich <paul@darkrain42.org>
Date:   Wed Nov 20 08:01:54 2024 -0800

    smb: Log an error when close_all_cached_dirs fails
    
    commit a2182743a8b4969481f64aec4908ff162e8a206c upstream.
    
    Under low-memory conditions, close_all_cached_dirs() can't move the
    dentries to a separate list to dput() them once the locks are dropped.
    This will result in a "Dentry still in use" error, so add an error
    message that makes it clear this is what happened:
    
    [  495.281119] CIFS: VFS: \\otters.example.com\share Out of memory while dropping dentries
    [  495.281595] ------------[ cut here ]------------
    [  495.281887] BUG: Dentry ffff888115531138{i=78,n=/}  still in use (2) [unmount of cifs cifs]
    [  495.282391] WARNING: CPU: 1 PID: 2329 at fs/dcache.c:1536 umount_check+0xc8/0xf0
    
    Also, bail out of looping through all tcons as soon as a single
    allocation fails, since we're already in trouble, and kmalloc() attempts
    for subseqeuent tcons are likely to fail just like the first one did.
    
    Signed-off-by: Paul Aurich <paul@darkrain42.org>
    Acked-by: Bharath SM <bharathsm@microsoft.com>
    Suggested-by: Ruben Devos <rdevos@oxya.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
soc: qcom: pmic_glink_altmode: fix spurious DP hotplug events [+ + +]
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Mon Mar 24 14:24:48 2025 +0100

    soc: qcom: pmic_glink_altmode: fix spurious DP hotplug events
    
    commit 5090ac9191a19c61beeade60d3d839e509fab640 upstream.
    
    The PMIC GLINK driver is currently generating DisplayPort hotplug
    notifications whenever something is connected to (or disconnected from)
    a port regardless of the type of notification sent by the firmware.
    
    These notifications are forwarded to user space by the DRM subsystem as
    connector "change" uevents:
    
        KERNEL[1556.223776] change   /devices/platform/soc@0/ae00000.display-subsystem/ae01000.display-controller/drm/card0 (drm)
        ACTION=change
        DEVPATH=/devices/platform/soc@0/ae00000.display-subsystem/ae01000.display-controller/drm/card0
        SUBSYSTEM=drm
        HOTPLUG=1
        CONNECTOR=36
        DEVNAME=/dev/dri/card0
        DEVTYPE=drm_minor
        SEQNUM=4176
        MAJOR=226
        MINOR=0
    
    On the Lenovo ThinkPad X13s and T14s, the PMIC GLINK firmware sends two
    identical notifications with orientation information when connecting a
    charger, each generating a bogus DRM hotplug event. On the X13s, two
    such notification are also sent every 90 seconds while a charger remains
    connected, which again are forwarded to user space:
    
        port = 1, svid = ff00, mode = 255, hpd_state = 0
        payload = 01 00 00 00 00 00 00 ff 00 00 00 00 00 00 00 00
    
    Note that the firmware only sends on of these when connecting an
    ethernet adapter.
    
    Fix the spurious hotplug events by only forwarding hotplug notifications
    for the Type-C DisplayPort service id. This also reduces the number of
    uevents from four to two when an actual DisplayPort altmode device is
    connected:
    
        port = 0, svid = ff01, mode = 2, hpd_state = 0
        payload = 00 01 02 00 f2 0c 01 ff 03 00 00 00 00 00 00 00
        port = 0, svid = ff01, mode = 2, hpd_state = 1
        payload = 00 01 02 00 f2 0c 01 ff 43 00 00 00 00 00 00 00
    
    Fixes: 080b4e24852b ("soc: qcom: pmic_glink: Introduce altmode support")
    Cc: stable@vger.kernel.org      # 6.3
    Cc: Bjorn Andersson <andersson@kernel.org>
    Reported-by: Clayton Craft <clayton@craftyguy.net>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Acked-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Tested-by: Clayton Craft <clayton@craftyguy.net>
    Link: https://lore.kernel.org/r/20250324132448.6134-1-johan+linaro@kernel.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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>

 
software node: Correct a OOB check in software_node_get_reference_args() [+ + +]
Author: Zijun Hu <quic_zijuhu@quicinc.com>
Date:   Mon Apr 14 19:36:52 2025 +0800

    software node: Correct a OOB check in software_node_get_reference_args()
    
    [ Upstream commit 31e4e12e0e9609850cefd4b2e1adf782f56337d6 ]
    
    software_node_get_reference_args() wants to get @index-th element, so
    the property value requires at least '(index + 1) * sizeof(*ref)' bytes
    but that can not be guaranteed by current OOB check, and may cause OOB
    for malformed property.
    
    Fix by using as OOB check '((index + 1) * sizeof(*ref) > prop->length)'.
    
    Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
    Link: https://lore.kernel.org/r/20250414-fix_swnode-v2-1-9c9e6ae11eab@quicinc.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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: handle SVC_GARBAGE during svc auth processing as auth error [+ + +]
Author: Jeff Layton <jlayton@kernel.org>
Date:   Thu Jun 19 06:01:55 2025 -0400

    sunrpc: handle SVC_GARBAGE during svc auth processing as auth error
    
    commit 94d10a4dba0bc482f2b01e39f06d5513d0f75742 upstream.
    
    tianshuo han reported a remotely-triggerable crash if the client sends a
    kernel RPC server a specially crafted packet. If decoding the RPC reply
    fails in such a way that SVC_GARBAGE is returned without setting the
    rq_accept_statp pointer, then that pointer can be dereferenced and a
    value stored there.
    
    If it's the first time the thread has processed an RPC, then that
    pointer will be set to NULL and the kernel will crash. In other cases,
    it could create a memory scribble.
    
    The server sunrpc code treats a SVC_GARBAGE return from svc_authenticate
    or pg_authenticate as if it should send a GARBAGE_ARGS reply. RFC 5531
    says that if authentication fails that the RPC should be rejected
    instead with a status of AUTH_ERR.
    
    Handle a SVC_GARBAGE return as an AUTH_ERROR, with a reason of
    AUTH_BADCRED instead of returning GARBAGE_ARGS in that case. This
    sidesteps the whole problem of touching the rpc_accept_statp pointer in
    this situation and avoids the crash.
    
    Cc: stable@kernel.org
    Fixes: 29cd2927fb91 ("SUNRPC: Fix encoding of accepted but unsuccessful RPC replies")
    Reported-by: tianshuo han <hantianshuo233@gmail.com>
    Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
SUNRPC: Prevent hang on NFS mount with xprtsec=[m]tls [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Wed May 21 16:34:13 2025 -0400

    SUNRPC: Prevent hang on NFS mount with xprtsec=[m]tls
    
    commit 0bd2f6b8996d4f1ca4573652454987826730a04a upstream.
    
    Engineers at Hammerspace noticed that sometimes mounting with
    "xprtsec=tls" hangs for a minute or so, and then times out, even
    when the NFS server is reachable and responsive.
    
    kTLS shuts off data_ready callbacks if strp->msg_ready is set to
    mitigate data_ready callbacks when a full TLS record is not yet
    ready to be read from the socket.
    
    Normally msg_ready is clear when the first TLS record arrives on
    a socket. However, I observed that sometimes tls_setsockopt() sets
    strp->msg_ready, and that prevents forward progress because
    tls_data_ready() becomes a no-op.
    
    Moreover, Jakub says: "If there's a full record queued at the time
    when [tlshd] passes the socket back to the kernel, it's up to the
    reader to read the already queued data out." So SunRPC cannot
    expect a data_ready call when ingress data is already waiting.
    
    Add an explicit poll after SunRPC's upper transport is set up to
    pick up any data that arrived after the TLS handshake but before
    transport set-up is complete.
    
    Reported-by: Steve Sears <sjs@hammerspace.com>
    Suggested-by: Jakub Kacinski <kuba@kernel.org>
    Fixes: 75eb6af7acdf ("SUNRPC: Add a TCP-with-TLS RPC transport class")
    Tested-by: Mike Snitzer <snitzer@kernel.org>
    Reviewed-by: Mike Snitzer <snitzer@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
svcrdma: Unregister the device if svc_rdma_accept() fails [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Sun Apr 27 12:39:59 2025 -0400

    svcrdma: Unregister the device if svc_rdma_accept() fails
    
    commit 8ac6fcae5dc0e801f1c82a83f5ae2c0a4db19932 upstream.
    
    To handle device removal, svc_rdma_accept() requests removal
    notification for the underlying device when accepting a connection.
    However svc_rdma_free() is not invoked if svc_rdma_accept() fails.
    There needs to be a matching "unregister" in that case; otherwise
    the device cannot be removed.
    
    Fixes: c4de97f7c454 ("svcrdma: Handle device removal outside of the CM event handler")
    Cc: stable@vger.kernel.org
    Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
sysfb: Fix screen_info type check for VGA [+ + +]
Author: Thomas Zimmermann <tzimmermann@suse.de>
Date:   Tue Jun 3 17:48:20 2025 +0200

    sysfb: Fix screen_info type check for VGA
    
    commit f670b50ef5e4a69bf4d2ec5ac6a9228d93b13a7a upstream.
    
    Use the helper screen_info_video_type() to get the framebuffer
    type from struct screen_info. Handle supported values in sorted
    switch statement.
    
    Reading orig_video_isVGA is unreliable. On most systems it is a
    VIDEO_TYPE_ constant. On some systems with VGA it is simply set
    to 1 to signal the presence of a VGA output. See vga_probe() for
    an example. Retrieving the screen_info type with the helper
    screen_info_video_type() detects these cases and returns the
    appropriate VIDEO_TYPE_ constant. For VGA, sysfb creates a device
    named "vga-framebuffer".
    
    The sysfb code has been taken from vga16fb, where it likely didn't
    work correctly either. With this bugfix applied, vga16fb loads for
    compatible vga-framebuffer devices.
    
    Fixes: 0db5b61e0dc0 ("fbdev/vga16fb: Create EGA/VGA devices in sysfb code")
    Cc: Thomas Zimmermann <tzimmermann@suse.de>
    Cc: Javier Martinez Canillas <javierm@redhat.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Cc: Tzung-Bi Shih <tzungbi@kernel.org>
    Cc: Helge Deller <deller@gmx.de>
    Cc: "Uwe Kleine-König" <u.kleine-koenig@baylibre.com>
    Cc: Zsolt Kajtar <soci@c64.rulez.org>
    Cc: <stable@vger.kernel.org> # v6.1+
    Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
    Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Link: https://lore.kernel.org/r/20250603154838.401882-1-tzimmermann@suse.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tcp: add receive queue awareness in tcp_rcv_space_adjust() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue May 13 19:39:12 2025 +0000

    tcp: add receive queue awareness in tcp_rcv_space_adjust()
    
    [ Upstream commit ea33537d82921e71f852ea2ed985acc562125efe ]
    
    If the application can not drain fast enough a TCP socket queue,
    tcp_rcv_space_adjust() can overestimate tp->rcvq_space.space.
    
    Then sk->sk_rcvbuf can grow and hit tcp_rmem[2] for no good reason.
    
    Fix this by taking into acount the number of available bytes.
    
    Keeping sk->sk_rcvbuf at the right size allows better cache efficiency.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Wei Wang <weiwan@google.com>
    Link: https://patch.msgid.link/20250513193919.1089692-5-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    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 passive TFO socket having invalid NAPI ID [+ + +]
Author: David Wei <dw@davidwei.uk>
Date:   Tue Jun 17 14:21:02 2025 -0700

    tcp: fix passive TFO socket having invalid NAPI ID
    
    [ Upstream commit dbe0ca8da1f62b6252e7be6337209f4d86d4a914 ]
    
    There is a bug with passive TFO sockets returning an invalid NAPI ID 0
    from SO_INCOMING_NAPI_ID. Normally this is not an issue, but zero copy
    receive relies on a correct NAPI ID to process sockets on the right
    queue.
    
    Fix by adding a sk_mark_napi_id_set().
    
    Fixes: e5907459ce7e ("tcp: Record Rx hash and NAPI ID in tcp_child_process")
    Signed-off-by: David Wei <dw@davidwei.uk>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250617212102.175711-5-dw@davidwei.uk
    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>

tcp: remove zero TCP TS samples for autotuning [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue May 13 19:39:13 2025 +0000

    tcp: remove zero TCP TS samples for autotuning
    
    [ Upstream commit d59fc95be9d0fd05ed3ccc11b4a2f832bdf2ee03 ]
    
    For TCP flows using ms RFC 7323 timestamp granularity
    tcp_rcv_rtt_update() can be fed with 1 ms samples, breaking
    TCP autotuning for data center flows with sub ms RTT.
    
    Instead, rely on the window based samples, fed by tcp_rcv_rtt_measure()
    
    tcp_rcvbuf_grow() for a 10 second TCP_STREAM sesssion now looks saner.
    We can see rcvbuf is kept at a reasonable value.
    
      222.234976: tcp:tcp_rcvbuf_grow: time=348 rtt_us=330 copied=110592 inq=0 space=40960 ooo=0 scaling_ratio=230 rcvbuf=131072 ...
      222.235276: tcp:tcp_rcvbuf_grow: time=300 rtt_us=288 copied=126976 inq=0 space=110592 ooo=0 scaling_ratio=230 rcvbuf=246187 ...
      222.235569: tcp:tcp_rcvbuf_grow: time=294 rtt_us=288 copied=184320 inq=0 space=126976 ooo=0 scaling_ratio=230 rcvbuf=282659 ...
      222.235833: tcp:tcp_rcvbuf_grow: time=264 rtt_us=244 copied=373760 inq=0 space=184320 ooo=0 scaling_ratio=230 rcvbuf=410312 ...
      222.236142: tcp:tcp_rcvbuf_grow: time=308 rtt_us=219 copied=424960 inq=20480 space=373760 ooo=0 scaling_ratio=230 rcvbuf=832022 ...
      222.236378: tcp:tcp_rcvbuf_grow: time=236 rtt_us=219 copied=692224 inq=49152 space=404480 ooo=0 scaling_ratio=230 rcvbuf=900407 ...
      222.236602: tcp:tcp_rcvbuf_grow: time=225 rtt_us=219 copied=730112 inq=49152 space=643072 ooo=0 scaling_ratio=230 rcvbuf=1431534 ...
      222.237050: tcp:tcp_rcvbuf_grow: time=229 rtt_us=219 copied=1160192 inq=49152 space=680960 ooo=0 scaling_ratio=230 rcvbuf=1515876 ...
      222.237618: tcp:tcp_rcvbuf_grow: time=305 rtt_us=218 copied=2228224 inq=49152 space=1111040 ooo=0 scaling_ratio=230 rcvbuf=2473271 ...
      222.238591: tcp:tcp_rcvbuf_grow: time=224 rtt_us=218 copied=3063808 inq=360448 space=2179072 ooo=0 scaling_ratio=230 rcvbuf=4850803 ...
      222.240647: tcp:tcp_rcvbuf_grow: time=260 rtt_us=218 copied=2752512 inq=0 space=2703360 ooo=0 scaling_ratio=230 rcvbuf=6017914 ...
      222.243535: tcp:tcp_rcvbuf_grow: time=224 rtt_us=218 copied=2834432 inq=49152 space=2752512 ooo=0 scaling_ratio=230 rcvbuf=6127331 ...
      222.245108: tcp:tcp_rcvbuf_grow: time=240 rtt_us=218 copied=2883584 inq=49152 space=2785280 ooo=0 scaling_ratio=230 rcvbuf=6200275 ...
      222.245333: tcp:tcp_rcvbuf_grow: time=224 rtt_us=218 copied=2859008 inq=0 space=2834432 ooo=0 scaling_ratio=230 rcvbuf=6309692 ...
      222.301021: tcp:tcp_rcvbuf_grow: time=222 rtt_us=218 copied=2883584 inq=0 space=2859008 ooo=0 scaling_ratio=230 rcvbuf=6364400 ...
      222.989242: tcp:tcp_rcvbuf_grow: time=225 rtt_us=218 copied=2899968 inq=0 space=2883584 ooo=0 scaling_ratio=230 rcvbuf=6419108 ...
      224.139553: tcp:tcp_rcvbuf_grow: time=224 rtt_us=218 copied=3014656 inq=65536 space=2899968 ooo=0 scaling_ratio=230 rcvbuf=6455580 ...
      224.584608: tcp:tcp_rcvbuf_grow: time=232 rtt_us=218 copied=3014656 inq=49152 space=2949120 ooo=0 scaling_ratio=230 rcvbuf=6564997 ...
      230.145560: tcp:tcp_rcvbuf_grow: time=223 rtt_us=218 copied=2981888 inq=0 space=2965504 ooo=0 scaling_ratio=230 rcvbuf=6601469 ...
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Wei Wang <weiwan@google.com>
    Link: https://patch.msgid.link/20250513193919.1089692-6-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    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>

 
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>

tipc: use kfree_sensitive() for aead cleanup [+ + +]
Author: Zilin Guan <zilin@seu.edu.cn>
Date:   Fri May 23 11:47:17 2025 +0000

    tipc: use kfree_sensitive() for aead cleanup
    
    [ Upstream commit c8ef20fe7274c5766a317f9193b70bed717b6b3d ]
    
    The tipc_aead_free() function currently uses kfree() to release the aead
    structure. However, this structure contains sensitive information, such
    as key's SALT value, which should be securely erased from memory to
    prevent potential leakage.
    
    To enhance security, replace kfree() with kfree_sensitive() when freeing
    the aead structure. This change ensures that sensitive data is explicitly
    cleared before memory deallocation, aligning with the approach used in
    tipc_aead_init() and adhering to best practices for handling confidential
    information.
    
    Signed-off-by: Zilin Guan <zilin@seu.edu.cn>
    Reviewed-by: Tung Nguyen <tung.quang.nguyen@est.tech>
    Link: https://patch.msgid.link/20250523114717.4021518-1-zilin@seu.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ublk: santizize the arguments from userspace when adding a device [+ + +]
Author: Ronnie Sahlberg <rsahlberg@whamcloud.com>
Date:   Thu Jun 19 12:10:31 2025 +1000

    ublk: santizize the arguments from userspace when adding a device
    
    [ Upstream commit 8c8472855884355caf3d8e0c50adf825f83454b2 ]
    
    Sanity check the values for queue depth and number of queues
    we get from userspace when adding a device.
    
    Signed-off-by: Ronnie Sahlberg <rsahlberg@whamcloud.com>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Fixes: 71f28f3136af ("ublk_drv: add io_uring based userspace block driver")
    Fixes: 62fe99cef94a ("ublk: add read()/write() support for ublk char device")
    Link: https://lore.kernel.org/r/20250619021031.181340-1-ronniesahlberg@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
udmabuf: use sgtable-based scatterlist wrappers [+ + +]
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Wed May 7 18:09:12 2025 +0200

    udmabuf: use sgtable-based scatterlist wrappers
    
    commit afe382843717d44b24ef5014d57dcbaab75a4052 upstream.
    
    Use common wrappers operating directly on the struct sg_table objects to
    fix incorrect use of scatterlists sync calls. dma_sync_sg_for_*()
    functions have to be called with the number of elements originally passed
    to dma_map_sg_*() function, not the one returned in sgtable's nents.
    
    Fixes: 1ffe09590121 ("udmabuf: fix dma-buf cpu access")
    CC: stable@vger.kernel.org
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Acked-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Link: https://lore.kernel.org/r/20250507160913.2084079-3-m.szyprowski@samsung.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
uio_hv_generic: Align ring size to system page [+ + +]
Author: Long Li <longli@microsoft.com>
Date:   Mon May 5 17:56:35 2025 -0700

    uio_hv_generic: Align ring size to system page
    
    commit 0315fef2aff9f251ddef8a4b53db9187429c3553 upstream.
    
    Following the ring header, the ring data should align to system page
    boundary. Adjust the size if necessary.
    
    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-4-git-send-email-longli@linuxonhyperv.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Message-ID: <1746492997-4599-4-git-send-email-longli@linuxonhyperv.com>
    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>

 
usbnet: asix AX88772: leave the carrier control to phylink [+ + +]
Author: Krzysztof Hałasa <khalasa@piap.pl>
Date:   Tue Apr 8 13:59:41 2025 +0200

    usbnet: asix AX88772: leave the carrier control to phylink
    
    [ Upstream commit 4145f00227ee80f21ab274e9cd9c09758e9bcf3d ]
    
    ASIX AX88772B based USB 10/100 Ethernet adapter doesn't come
    up ("carrier off"), despite the built-in 100BASE-FX PHY positive link
    indication. The internal PHY is configured (using EEPROM) in fixed
    100 Mbps full duplex mode.
    
    The primary problem appears to be using carrier_netif_{on,off}() while,
    at the same time, delegating carrier management to phylink. Use only the
    latter and remove "manual control" in the asix driver.
    
    I don't have any other AX88772 board here, but the problem doesn't seem
    specific to a particular board or settings - it's probably
    timing-dependent.
    
    Remove unused asix_adjust_link() as well.
    
    Signed-off-by: Krzysztof Hałasa <khalasa@piap.pl>
    Tested-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Link: https://patch.msgid.link/m3plhmdfte.fsf_-_@t19.piap.pl
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.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>

 
video: screen_info: Relocate framebuffers behind PCI bridges [+ + +]
Author: Thomas Zimmermann <tzimmermann@suse.de>
Date:   Wed May 28 10:02:08 2025 +0200

    video: screen_info: Relocate framebuffers behind PCI bridges
    
    commit 2f29b5c231011b94007d2c8a6d793992f2275db1 upstream.
    
    Apply PCI host-bridge window offsets to screen_info framebuffers. Fixes
    invalid access to I/O memory.
    
    Resources behind a PCI host bridge can be relocated by a certain offset
    in the kernel's CPU address range used for I/O. The framebuffer memory
    range stored in screen_info refers to the CPU addresses as seen during
    boot (where the offset is 0). During boot up, firmware may assign a
    different memory offset to the PCI host bridge and thereby relocating
    the framebuffer address of the PCI graphics device as seen by the kernel.
    The information in screen_info must be updated as well.
    
    The helper pcibios_bus_to_resource() performs the relocation of the
    screen_info's framebuffer resource (given in PCI bus addresses). The
    result matches the I/O-memory resource of the PCI graphics device (given
    in CPU addresses). As before, we store away the information necessary to
    later update the information in screen_info itself.
    
    Commit 78aa89d1dfba ("firmware/sysfb: Update screen_info for relocated
    EFI framebuffers") added the code for updating screen_info. It is based
    on similar functionality that pre-existed in efifb. Efifb uses a pointer
    to the PCI resource, while the newer code does a memcpy of the region.
    Hence efifb sees any updates to the PCI resource and avoids the issue.
    
    v3:
    - Only use struct pci_bus_region for PCI bus addresses (Bjorn)
    - Clarify address semantics in commit messages and comments (Bjorn)
    v2:
    - Fixed tags (Takashi, Ivan)
    - Updated information on efifb
    
    Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Reported-by: "Ivan T. Ivanov" <iivanov@suse.de>
    Closes: https://bugzilla.suse.com/show_bug.cgi?id=1240696
    Tested-by: "Ivan T. Ivanov" <iivanov@suse.de>
    Fixes: 78aa89d1dfba ("firmware/sysfb: Update screen_info for relocated EFI framebuffers")
    Cc: dri-devel@lists.freedesktop.org
    Cc: <stable@vger.kernel.org> # v6.9+
    Link: https://lore.kernel.org/r/20250528080234.7380-1-tzimmermann@suse.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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>

watchdog: fix watchdog may detect false positive of softlockup [+ + +]
Author: Luo Gengkun <luogengkun@huaweicloud.com>
Date:   Mon Apr 21 03:50:21 2025 +0000

    watchdog: fix watchdog may detect false positive of softlockup
    
    commit 7123dbbef88cfd9f09e8a7899b0911834600cfa3 upstream.
    
    When updating `watchdog_thresh`, there is a race condition between writing
    the new `watchdog_thresh` value and stopping the old watchdog timer.  If
    the old timer triggers during this window, it may falsely detect a
    softlockup due to the old interval and the new `watchdog_thresh` value
    being used.  The problem can be described as follow:
    
     # We asuume previous watchdog_thresh is 60, so the watchdog timer is
     # coming every 24s.
    echo 10 > /proc/sys/kernel/watchdog_thresh (User space)
    |
    +------>+ update watchdog_thresh (We are in kernel now)
            |
            |         # using old interval and new `watchdog_thresh`
            +------>+ watchdog hrtimer (irq context: detect softlockup)
                    |
                    |
            +-------+
            |
            |
            + softlockup_stop_all
    
    To fix this problem, introduce a shadow variable for `watchdog_thresh`.
    The update to the actual `watchdog_thresh` is delayed until after the old
    timer is stopped, preventing false positives.
    
    The following testcase may help to understand this problem.
    
    ---------------------------------------------
    echo RT_RUNTIME_SHARE > /sys/kernel/debug/sched/features
    echo -1 > /proc/sys/kernel/sched_rt_runtime_us
    echo 0 > /sys/kernel/debug/sched/fair_server/cpu3/runtime
    echo 60 > /proc/sys/kernel/watchdog_thresh
    taskset -c 3 chrt -r 99 /bin/bash -c "while true;do true; done" &
    echo 10 > /proc/sys/kernel/watchdog_thresh &
    ---------------------------------------------
    
    The test case above first removes the throttling restrictions for
    real-time tasks.  It then sets watchdog_thresh to 60 and executes a
    real-time task ,a simple while(1) loop, on cpu3.  Consequently, the final
    command gets blocked because the presence of this real-time thread
    prevents kworker:3 from being selected by the scheduler.  This eventually
    triggers a softlockup detection on cpu3 due to watchdog_timer_fn operating
    with inconsistent variable - using both the old interval and the updated
    watchdog_thresh simultaneously.
    
    [nysal@linux.ibm.com: fix the SOFTLOCKUP_DETECTOR=n case]
      Link: https://lkml.kernel.org/r/20250502111120.282690-1-nysal@linux.ibm.com
    Link: https://lkml.kernel.org/r/20250421035021.3507649-1-luogengkun@huaweicloud.com
    Signed-off-by: Luo Gengkun <luogengkun@huaweicloud.com>
    Signed-off-by: Nysal Jan K.A. <nysal@linux.ibm.com>
    Cc: Doug Anderson <dianders@chromium.org>
    Cc: Joel Granados <joel.granados@kernel.org>
    Cc: Song Liu <song@kernel.org>
    Cc: Thomas Gleinxer <tglx@linutronix.de>
    Cc: "Nysal Jan K.A." <nysal@linux.ibm.com>
    Cc: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
wifi: ath11k: determine PM policy based on machine model [+ + +]
Author: Baochen Qiang <quic_bqiang@quicinc.com>
Date:   Fri Mar 28 13:32:24 2025 +0800

    wifi: ath11k: determine PM policy based on machine model
    
    [ Upstream commit ce8669a27016354dfa8bf3c954255cb9f3583bae ]
    
    To handle the Lenovo unexpected wakeup issue [1], previously we revert
    commit 166a490f59ac ("wifi: ath11k: support hibernation"). So currently
    WLAN target is put into WoWLAN mode during suspend. This is a temporary
    solution as it does not work on machines where WLAN power is cut off.
    
    The thought here is that we do WoWLAN suspend on Lenovo machines while
    do non-WoWLAN suspend (which is done in the reverted commit) on other
    machines. This requires us to identify Lenovo machines from others.
    For that purpose, read board vendor and product name from DMI interface,
    match it against all known affected machines. If there is a match, choose
    WoWLAN suspend mode, else choose non-WoWLAN mode. Save the mode in ab
    for later reference.
    
    [1] https://bugzilla.kernel.org/show_bug.cgi?id=219196
    
    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.30
    
    Tested-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
    Tested-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
    Link: https://patch.msgid.link/20250328-ath11k-bring-hibernation-back-v3-1-23405ae23431@quicinc.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath11k: Fix QMI memory reuse logic [+ + +]
Author: Muhammad Usama Anjum <usama.anjum@collabora.com>
Date:   Mon Apr 28 13:02:41 2025 +0500

    wifi: ath11k: Fix QMI memory reuse logic
    
    [ Upstream commit cd2e7bae92bd7e65063ab8d04721d2b711ba4cbe ]
    
    Firmware requests 2 segments at first. The first segment is of 6799360
    whose allocation fails due to dma remapping not available. The success
    is returned to firmware. Then firmware asks for 22 smaller segments
    instead of 2 big ones. Those get allocated successfully. At suspend/
    hibernation time, these segments aren't freed as they will be reused
    by firmware after resuming.
    
    After resuming, the firmware asks for the 2 segments again with the
    first segment of 6799360 size. Since chunk->vaddr is not NULL, the
    type and size are compared with the previous type and size to know if
    it can be reused or not. Unfortunately, it is detected that it cannot
    be reused and this first smaller segment is freed. Then we continue to
    allocate 6799360 size memory which fails and ath11k_qmi_free_target_mem_chunk()
    is called which frees the second smaller segment as well. Later success
    is returned to firmware which asks for 22 smaller segments again. But
    as we had freed 2 segments already, we'll allocate the first 2 new
    smaller segments again and reuse the remaining 20. Hence 20 small
    segments are being reused instead of 22.
    
    Add skip logic when vaddr is set, but size/type don't match. Use the
    same skip and success logic as used when dma_alloc_coherent() fails.
    By skipping, the possibility of resume failure due to kernel failing to
    allocate memory for QMI can be avoided.
    
            kernel: ath11k_pci 0000:03:00.0: failed to allocate dma memory for qmi (524288 B type 1)
            ath11k_pci 0000:03:00.0: failed to allocate qmi target memory: -22
    
    Tested-on: WCN6855 WLAN.HSP.1.1-03926.13-QCAHSPSWPL_V2_SILICONZ_CE-2.52297.6
    
    Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
    Reviewed-by: Baochen Qiang <quic_bqiang@quicinc.com>
    Link: https://patch.msgid.link/20250428080242.466901-1-usama.anjum@collabora.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath11k: fix ring-buffer corruption [+ + +]
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Fri Mar 21 10:49:16 2025 +0100

    wifi: ath11k: fix ring-buffer corruption
    
    commit 6d037a372f817e9fcb56482f37917545596bd776 upstream.
    
    Users of the Lenovo ThinkPad X13s have reported that Wi-Fi sometimes
    breaks and the log fills up with errors like:
    
        ath11k_pci 0006:01:00.0: HTC Rx: insufficient length, got 1484, expected 1492
        ath11k_pci 0006:01:00.0: HTC Rx: insufficient length, got 1460, expected 1484
    
    which based on a quick look at the driver seemed to indicate some kind
    of ring-buffer corruption.
    
    Miaoqing Pan tracked it down to the host seeing the updated destination
    ring head pointer before the updated descriptor, and the error handling
    for that in turn leaves the ring buffer in an inconsistent state.
    
    Add the missing memory barrier to make sure that the descriptor is read
    after the head pointer to address the root cause of the corruption while
    fixing up the error handling in case there are ever any (ordering) bugs
    on the device side.
    
    Note that the READ_ONCE() are only needed to avoid compiler mischief in
    case the ring-buffer helpers are ever inlined.
    
    Tested-on: WCN6855 hw2.1 WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.41
    
    Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218623
    Link: https://lore.kernel.org/20250310010217.3845141-3-quic_miaoqing@quicinc.com
    Cc: Miaoqing Pan <quic_miaoqing@quicinc.com>
    Cc: stable@vger.kernel.org      # 5.6
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Reviewed-by: Miaoqing Pan <quic_miaoqing@quicinc.com>
    Tested-by: Steev Klimaszewski <steev@kali.org>
    Tested-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
    Tested-by: Clayton Craft <clayton@craftyguy.net>
    Link: https://patch.msgid.link/20250321094916.19098-1-johan+linaro@kernel.org
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: ath11k: fix rx completion meta data corruption [+ + +]
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Fri Mar 21 15:53:02 2025 +0100

    wifi: ath11k: fix rx completion meta data corruption
    
    commit ab52e3e44fe9b666281752e2481d11e25b0e3fdd upstream.
    
    Add the missing memory barrier to make sure that the REO dest ring
    descriptor is read after the head pointer to avoid using stale data on
    weakly ordered architectures like aarch64.
    
    This may fix the ring-buffer corruption worked around by commit
    f9fff67d2d7c ("wifi: ath11k: Fix SKB corruption in REO destination
    ring") by silently discarding data, and may possibly also address user
    reported errors like:
    
            ath11k_pci 0006:01:00.0: msdu_done bit in attention is not set
    
    Tested-on: WCN6855 hw2.1 WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.41
    
    Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
    Cc: stable@vger.kernel.org      # 5.6
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=218005
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Tested-by: Clayton Craft <clayton@craftyguy.net>
    Link: https://patch.msgid.link/20250321145302.4775-1-johan+linaro@kernel.org
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: ath12k: Clear affinity hint before calling ath12k_pci_free_irq() in error path [+ + +]
Author: Manivannan Sadhasivam <mani@kernel.org>
Date:   Tue Feb 25 11:04:46 2025 +0530

    wifi: ath12k: Clear affinity hint before calling ath12k_pci_free_irq() in error path
    
    commit b43b1e2c52db77c872bd60d30cdcc72c47df70c7 upstream.
    
    If a shared IRQ is used by the driver due to platform limitation, then the
    IRQ affinity hint is set right after the allocation of IRQ vectors in
    ath12k_pci_msi_alloc(). This does no harm unless one of the functions
    requesting the IRQ fails and attempt to free the IRQ.
    
    This may end up with a warning from the IRQ core that is expecting the
    affinity hint to be cleared before freeing the IRQ:
    
    kernel/irq/manage.c:
    
            /* make sure affinity_hint is cleaned up */
            if (WARN_ON_ONCE(desc->affinity_hint))
                    desc->affinity_hint = NULL;
    
    So to fix this issue, clear the IRQ affinity hint before calling
    ath12k_pci_free_irq() in the error path. The affinity will be cleared once
    again further down the error path due to code organization, but that does
    no harm.
    
    Fixes: a3012f206d07 ("wifi: ath12k: set IRQ affinity to CPU0 in case of one MSI vector")
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Reviewed-by: Baochen Qiang <quic_bqiang@quicinc.com>
    Link: https://patch.msgid.link/20250225053447.16824-3-manivannan.sadhasivam@linaro.org
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Wenshan Lan <jetlan9@163.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: ath12k: fix a possible dead lock caused by ab->base_lock [+ + +]
Author: Baochen Qiang <quic_bqiang@quicinc.com>
Date:   Fri Apr 18 10:55:34 2025 +0800

    wifi: ath12k: fix a possible dead lock caused by ab->base_lock
    
    [ Upstream commit ef115c265a21e3c11deee7f73bd1061775a7bf20 ]
    
    spin_lock/spin_unlock are used in ath12k_reg_chan_list_event
    to acquire/release ab->base_lock. For now this is safe because
    that function is only called in soft IRQ context.
    
    But ath12k_reg_chan_list_event() will be called from process
    context in an upcoming patch, and this can result in a deadlock
    if ab->base_lock is acquired in process context and then soft
    IRQ occurs on the same CPU and tries to acquire that lock.
    
    Fix it by using spin_lock_bh and spin_unlock_bh instead.
    
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    
    Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
    Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250418-ath12k-6g-lp-vlp-v1-1-c869c86cad60@quicinc.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: fix failed to set mhi state error during reboot with hardware grouping [+ + +]
Author: Aditya Kumar Singh <aditya.kumar.singh@oss.qualcomm.com>
Date:   Tue Apr 8 11:36:31 2025 +0530

    wifi: ath12k: fix failed to set mhi state error during reboot with hardware grouping
    
    [ Upstream commit dce7aec6b1f74b0a46b901ab8de1f7bd0515f733 ]
    
    With hardware grouping, during reboot, whenever a device is removed, it
    powers down itself and all its partner devices in the same group. Now this
    is done by all devices and hence there is multiple power down for devices
    and hence the following error messages can be seen:
    
    ath12k_pci 0002:01:00.0: failed to set mhi state POWER_OFF(3) in current mhi state (0x0)
    ath12k_pci 0002:01:00.0: failed to set mhi state: POWER_OFF(3)
    ath12k_pci 0002:01:00.0: failed to set mhi state DEINIT(1) in current mhi state (0x0)
    ath12k_pci 0002:01:00.0: failed to set mhi state: DEINIT(1)
    ath12k_pci 0003:01:00.0: failed to set mhi state POWER_OFF(3) in current mhi state (0x0)
    ath12k_pci 0003:01:00.0: failed to set mhi state: POWER_OFF(3)
    ath12k_pci 0003:01:00.0: failed to set mhi state DEINIT(1) in current mhi state (0x0)
    ath12k_pci 0003:01:00.0: failed to set mhi state: DEINIT(1)
    ath12k_pci 0004:01:00.0: failed to set mhi state POWER_OFF(3) in current mhi state (0x0)
    ath12k_pci 0004:01:00.0: failed to set mhi state: POWER_OFF(3)
    
    To prevent this, check if the ATH12K_PCI_FLAG_INIT_DONE flag is already
    set before powering down. If it is set, it indicates that another partner
    device has already performed the power down, and this device can skip this
    step.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    
    Signed-off-by: Aditya Kumar Singh <aditya.kumar.singh@oss.qualcomm.com>
    Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250408-fix_reboot_issues_with_hw_grouping-v4-3-95e7bf048595@oss.qualcomm.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: fix incorrect CE addresses [+ + +]
Author: Balamurugan S <quic_bselvara@quicinc.com>
Date:   Fri Mar 21 16:22:39 2025 +0530

    wifi: ath12k: fix incorrect CE addresses
    
    [ Upstream commit 60031d9c3589c7983fd1deb4a4c0bebf0929890e ]
    
    In the current ath12k implementation, the CE addresses
    CE_HOST_IE_ADDRESS and CE_HOST_IE_2_ADDRESS are incorrect. These
    values were inherited from ath11k, but ath12k does not currently use
    them.
    
    However, the Ath12k AHB support relies on these addresses. Therefore,
    correct the CE addresses for ath12k.
    
    Tested-on: IPQ5332 hw1.0 AHB WLAN.WBE.1.3.1-00130-QCAHKSWPL_SILICONZ-1
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00210-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Balamurugan S <quic_bselvara@quicinc.com>
    Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
    Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
    Link: https://patch.msgid.link/20250321-ath12k-ahb-v12-2-bb389ed76ae5@quicinc.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: fix link valid field initialization in the monitor Rx [+ + +]
Author: Hari Chandrakanthan <quic_haric@quicinc.com>
Date:   Mon Mar 24 11:55:09 2025 +0530

    wifi: ath12k: fix link valid field initialization in the monitor Rx
    
    [ Upstream commit 2826139f9295821fe2b049318a1cc057ec003131 ]
    
    Currently, the link_valid field is not initialized in the monitor Rx path.
    This can result in random values for the link_valid and link_id leads to
    undefined behaviour in mac80211. Therefore, initialize the link_valid
    field in the monitor Rx path.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    
    Signed-off-by: Hari Chandrakanthan <quic_haric@quicinc.com>
    Tested-by: Nicolas Escande <nico.escande@gmail.com>
    Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
    Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
    Link: https://patch.msgid.link/20250324062518.2752822-2-quic_periyasa@quicinc.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: fix macro definition HAL_RX_MSDU_PKT_LENGTH_GET [+ + +]
Author: Kang Yang <kang.yang@oss.qualcomm.com>
Date:   Mon Apr 21 10:34:39 2025 +0800

    wifi: ath12k: fix macro definition HAL_RX_MSDU_PKT_LENGTH_GET
    
    [ Upstream commit a69bbf89d751ba2d6da21d773c4e29c91c5e53c4 ]
    
    Currently, HAL_RX_MSDU_PKT_LENGTH_GET uses u32_get_bits to obtain the
    MSDU length from the MSDU description.
    
    This is not right. Because all halphy descriptions are little endian.
    
    So use le32_get_bits for HAL_RX_MSDU_PKT_LENGTH_GET.
    
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Kang Yang <kang.yang@oss.qualcomm.com>
    Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250421023444.1778-9-kang.yang@oss.qualcomm.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: fix ring-buffer corruption [+ + +]
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Fri Mar 21 10:52:19 2025 +0100

    wifi: ath12k: fix ring-buffer corruption
    
    commit 6b67d2cf14ea997061f61e9c8afd4e1c0f22acb9 upstream.
    
    Users of the Lenovo ThinkPad X13s have reported that Wi-Fi sometimes
    breaks and the log fills up with errors like:
    
        ath11k_pci 0006:01:00.0: HTC Rx: insufficient length, got 1484, expected 1492
        ath11k_pci 0006:01:00.0: HTC Rx: insufficient length, got 1460, expected 1484
    
    which based on a quick look at the ath11k driver seemed to indicate some
    kind of ring-buffer corruption.
    
    Miaoqing Pan tracked it down to the host seeing the updated destination
    ring head pointer before the updated descriptor, and the error handling
    for that in turn leaves the ring buffer in an inconsistent state.
    
    While this has not yet been observed with ath12k, the ring-buffer
    implementation is very similar to the ath11k one and it suffers from the
    same bugs.
    
    Add the missing memory barrier to make sure that the descriptor is read
    after the head pointer to address the root cause of the corruption while
    fixing up the error handling in case there are ever any (ordering) bugs
    on the device side.
    
    Note that the READ_ONCE() are only needed to avoid compiler mischief in
    case the ring-buffer helpers are ever inlined.
    
    Tested-on: WCN7850 hw2.0 WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    
    Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
    Cc: stable@vger.kernel.org      # 6.3
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=218623
    Link: https://lore.kernel.org/20250310010217.3845141-3-quic_miaoqing@quicinc.com
    Cc: Miaoqing Pan <quic_miaoqing@quicinc.com>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Reviewed-by: Miaoqing Pan <quic_miaoqing@quicinc.com>
    Link: https://patch.msgid.link/20250321095219.19369-1-johan+linaro@kernel.org
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: ath12k: Pass correct values of center freq1 and center freq2 for 160 MHz [+ + +]
Author: Suraj P Kizhakkethil <quic_surapk@quicinc.com>
Date:   Tue Mar 4 15:23:14 2025 +0530

    wifi: ath12k: Pass correct values of center freq1 and center freq2 for 160 MHz
    
    [ Upstream commit b1b01e46a3db5ad44d1e4691ba37c1e0832cd5cf ]
    
    Currently, for 160 MHz bandwidth, center frequency1 and
    center frequency2 are not passed correctly to the firmware.
    Set center frequency1 as the center frequency
    of the primary 80 MHz channel segment and center frequency2 as
    the center frequency of the 160 MHz channel and pass the values
    to the firmware.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Suraj P Kizhakkethil <quic_surapk@quicinc.com>
    Reviewed-by: Aditya Kumar Singh <aditya.kumar.singh@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250304095315.3050325-2-quic_surapk@quicinc.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: using msdu end descriptor to check for rx multicast packets [+ + +]
Author: Sarika Sharma <quic_sarishar@quicinc.com>
Date:   Fri Apr 11 11:45:22 2025 +0530

    wifi: ath12k: using msdu end descriptor to check for rx multicast packets
    
    [ Upstream commit cb7433cc5cd4d07175dbc41f5a19966e9fae48be ]
    
    Currently, the RX multicast broadcast packet check is performed using
    bit 15 from the info6 field of the MPDU start descriptor. This check
    can also be done using bit 9 from the info5 field of the MSDU end
    descriptor. However, in some scenarios multicast bit is not set when
    fetched from MPDU start descriptor.
    Therefore, checking the RX multicast broadcast packet from the MSDU
    end descriptor is more reliable as it is per MSDU.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com>
    Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250411061523.859387-2-quic_sarishar@quicinc.com
    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: cfg80211: init wiphy_work before allocating rfkill fails [+ + +]
Author: Edward Adam Davis <eadavis@qq.com>
Date:   Tue Mar 18 11:13:45 2025 +0800

    wifi: cfg80211: init wiphy_work before allocating rfkill fails
    
    commit fc88dee89d7b63eeb17699393eb659aadf9d9b7c upstream.
    
    syzbort reported a uninitialize wiphy_work_lock in cfg80211_dev_free. [1]
    
    After rfkill allocation fails, the wiphy release process will be performed,
    which will cause cfg80211_dev_free to access the uninitialized wiphy_work
    related data.
    
    Move the initialization of wiphy_work to before rfkill initialization to
    avoid this issue.
    
    [1]
    INFO: trying to register non-static key.
    The code is fine but needs lockdep annotation, or maybe
    you didn't initialize this object before use?
    turning off the locking correctness validator.
    CPU: 0 UID: 0 PID: 5935 Comm: syz-executor550 Not tainted 6.14.0-rc6-syzkaller-00103-g4003c9e78778 #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
     assign_lock_key kernel/locking/lockdep.c:983 [inline]
     register_lock_class+0xc39/0x1240 kernel/locking/lockdep.c:1297
     __lock_acquire+0x135/0x3c40 kernel/locking/lockdep.c:5103
     lock_acquire.part.0+0x11b/0x380 kernel/locking/lockdep.c:5851
     __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
     _raw_spin_lock_irqsave+0x3a/0x60 kernel/locking/spinlock.c:162
     cfg80211_dev_free+0x30/0x3d0 net/wireless/core.c:1196
     device_release+0xa1/0x240 drivers/base/core.c:2568
     kobject_cleanup lib/kobject.c:689 [inline]
     kobject_release lib/kobject.c:720 [inline]
     kref_put include/linux/kref.h:65 [inline]
     kobject_put+0x1e4/0x5a0 lib/kobject.c:737
     put_device+0x1f/0x30 drivers/base/core.c:3774
     wiphy_free net/wireless/core.c:1224 [inline]
     wiphy_new_nm+0x1c1f/0x2160 net/wireless/core.c:562
     ieee80211_alloc_hw_nm+0x1b7a/0x2260 net/mac80211/main.c:835
     mac80211_hwsim_new_radio+0x1d6/0x54e0 drivers/net/wireless/virtual/mac80211_hwsim.c:5185
     hwsim_new_radio_nl+0xb42/0x12b0 drivers/net/wireless/virtual/mac80211_hwsim.c:6242
     genl_family_rcv_msg_doit+0x202/0x2f0 net/netlink/genetlink.c:1115
     genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
     genl_rcv_msg+0x565/0x800 net/netlink/genetlink.c:1210
     netlink_rcv_skb+0x16b/0x440 net/netlink/af_netlink.c:2533
     genl_rcv+0x28/0x40 net/netlink/genetlink.c:1219
     netlink_unicast_kernel net/netlink/af_netlink.c:1312 [inline]
     netlink_unicast+0x53c/0x7f0 net/netlink/af_netlink.c:1338
     netlink_sendmsg+0x8b8/0xd70 net/netlink/af_netlink.c:1882
     sock_sendmsg_nosec net/socket.c:718 [inline]
     __sock_sendmsg net/socket.c:733 [inline]
     ____sys_sendmsg+0xaaf/0xc90 net/socket.c:2573
     ___sys_sendmsg+0x135/0x1e0 net/socket.c:2627
     __sys_sendmsg+0x16e/0x220 net/socket.c:2659
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
    
    Fixes: 72d520476a2f ("wifi: cfg80211: cancel wiphy_work before freeing wiphy")
    Reported-by: syzbot+aaf0488c83d1d5f4f029@syzkaller.appspotmail.com
    Close: https://syzkaller.appspot.com/bug?extid=aaf0488c83d1d5f4f029
    Tested-by: syzbot+aaf0488c83d1d5f4f029@syzkaller.appspotmail.com
    Signed-off-by: Edward Adam Davis <eadavis@qq.com>
    Link: https://patch.msgid.link/tencent_258DD9121DDDB9DD9A1939CFAA0D8625B107@qq.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: WangYuli <wangyuli@uniontech.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: iwlwifi: Add missing MODULE_FIRMWARE for Qu-c0-jf-b0 [+ + +]
Author: Víctor Gonzalo <victor.gonzalo@anddroptable.net>
Date:   Wed Mar 13 20:02:27 2024 +0200

    wifi: iwlwifi: Add missing MODULE_FIRMWARE for Qu-c0-jf-b0
    
    [ Upstream commit 2b801487ac3be7bec561ae62d1a6c4d6f5283f8c ]
    
    The module metadata for the firmware file iwlwifi-Qu-c0-jf-b0-* is missing.
    
    Signed-off-by: Víctor Gonzalo <victor.gonzalo@anddroptable.net>
    Link: https://patch.msgid.link/20240313180227.2224780-1-victor.gonzalo@anddroptable.net
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: mvm: fix beacon CCK flag [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon May 5 21:56:47 2025 +0300

    wifi: iwlwifi: mvm: fix beacon CCK flag
    
    [ Upstream commit 8d7f08922a8cb621aa5d00bdce6a7afe57af1665 ]
    
    The beacon CCK flag should be set for any CCK rate, not
    just for 1 Mbps. Fix that.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Reviewed-by: Ilan Peer <ilan.peer@intel.com>
    Link: https://patch.msgid.link/20250505215513.fe18b7d92d7d.I7bb40a92cea102677b695beb1e2a62a5ea72678b@changeid
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: pcie: make sure to lock rxq->read [+ + +]
Author: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Date:   Thu Apr 24 15:38:30 2025 +0300

    wifi: iwlwifi: pcie: make sure to lock rxq->read
    
    [ Upstream commit 1cc2c48c4af81bed5ddbe9f2c9d6e20fa163acf9 ]
    
    rxq->read is accessed without the rxq->lock in a few places,
    Make sure to have the lock there.
    
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Tested-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Link: https://patch.msgid.link/20250424153620.73725f207aaa.I1a3e4b6c5fd370e029fdacfcdc9ee335788afa98@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.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: mac80211: validate SCAN_FLAG_AP in scan request during MLO [+ + +]
Author: Aditya Kumar Singh <aditya.kumar.singh@oss.qualcomm.com>
Date:   Fri May 16 16:02:07 2025 +0530

    wifi: mac80211: validate SCAN_FLAG_AP in scan request during MLO
    
    [ Upstream commit 78a7a126dc5b8e3c5a3d4da9f513e0236d2dc1a3 ]
    
    When an AP interface is already beaconing, a subsequent scan is not allowed
    unless the user space explicitly sets the flag NL80211_SCAN_FLAG_AP in the
    scan request. If this flag is not set, the scan request will be returned
    with the error code -EOPNOTSUPP. However, this restriction currently
    applies only to non-ML interfaces. For ML interfaces, scans are allowed
    without this flag being explicitly set by the user space which is wrong.
    This is because the beaconing check currently uses only the deflink, which
    does not get set during MLO.
    
    Hence to fix this, during MLO, use the existing helper
    ieee80211_num_beaconing_links() to know if any of the link is beaconing.
    
    Signed-off-by: Aditya Kumar Singh <aditya.kumar.singh@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250516-bug_fix_mlo_scan-v2-1-12e59d9110ac@oss.qualcomm.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: VLAN traffic in multicast path [+ + +]
Author: Muna Sinada <muna.sinada@oss.qualcomm.com>
Date:   Tue Mar 25 14:31:25 2025 -0700

    wifi: mac80211: VLAN traffic in multicast path
    
    [ Upstream commit 1a4a6a22552ca9d723f28a1fe35eab1b9b3d8b33 ]
    
    Currently for MLO, sending out multicast frames on each link is handled by
    mac80211 only when IEEE80211_HW_MLO_MCAST_MULTI_LINK_TX flag is not set.
    
    Dynamic VLAN multicast traffic utilizes software encryption.
    Due to this, mac80211 should handle transmitting multicast frames on
    all links for multicast VLAN traffic.
    
    Signed-off-by: Muna Sinada <muna.sinada@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250325213125.1509362-4-muna.sinada@oss.qualcomm.com
    [remove unnecessary parentheses]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211_hwsim: Prevent tsf from setting if beacon is disabled [+ + +]
Author: Edward Adam Davis <eadavis@qq.com>
Date:   Wed Apr 23 22:15:53 2025 +0800

    wifi: mac80211_hwsim: Prevent tsf from setting if beacon is disabled
    
    [ Upstream commit c575f5374be7a5c4be4acb9fe6be3a4669d94674 ]
    
    Setting tsf is meaningless if beacon is disabled, so check that beacon
    is enabled before setting tsf.
    
    Reported-by: syzbot+064815c6cd721082a52a@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=064815c6cd721082a52a
    Tested-by: syzbot+064815c6cd721082a52a@syzkaller.appspotmail.com
    Signed-off-by: Edward Adam Davis <eadavis@qq.com>
    Link: https://patch.msgid.link/tencent_3609AC2EFAAED68CA5A7E3C6D212D1C67806@qq.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt76x2: Add support for LiteOn WN4516R,WN4519R [+ + +]
Author: Henk Vergonet <henk.vergonet@gmail.com>
Date:   Fri Apr 18 16:39:14 2025 +0200

    wifi: mt76: mt76x2: Add support for LiteOn WN4516R,WN4519R
    
    [ Upstream commit 3c0e4f606d8693795a2c965d6f4987b1bfc31097 ]
    
    Adds support for:
     - LiteOn WN4516R
     - LiteOn WN4519R
     Both use:
     - A nonstandard USB connector
     - Mediatek chipset MT7600U
     - ASIC revision: 76320044
    
    Disabled VHT support on ASIC revision 76320044:
    
     This fixes the 5G connectibity issue on LiteOn WN4519R module
     see https://github.com/openwrt/mt76/issues/971
    
     And may also fix the 5G issues on the XBox One Wireless Adapter
     see https://github.com/openwrt/mt76/issues/200
    
     I have looked at the FCC info related to the MT7632U chip as mentioned in here:
     https://github.com/openwrt/mt76/issues/459
     These confirm the chipset does not support 'ac' mode and hence VHT should be turned of.
    
    Signed-off-by: Henk Vergonet <henk.vergonet@gmail.com>
    Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Link: https://patch.msgid.link/20250418143914.31384-1-henk.vergonet@gmail.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7921: add 160 MHz AP for mt7922 device [+ + +]
Author: Samuel Williams <sam8641@gmail.com>
Date:   Sat May 10 19:53:09 2025 -0500

    wifi: mt76: mt7921: add 160 MHz AP for mt7922 device
    
    [ Upstream commit 7011faebe543f8f094fdb3281d0ec9e1eab81309 ]
    
    This allows mt7922 in hostapd mode to transmit up to 1.4 Gbps.
    
    Signed-off-by: Samuel Williams <sam8641@gmail.com>
    Link: https://patch.msgid.link/20250511005316.1118961-1-sam8641@gmail.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7925: fix host interrupt register initialization [+ + +]
Author: Michael Lo <michael.lo@mediatek.com>
Date:   Fri May 9 16:35:12 2025 +0800

    wifi: mt76: mt7925: fix host interrupt register initialization
    
    commit ca872e0ad97159375da8f3d05cac1f48239e01d7 upstream.
    
    ensure proper interrupt handling and aligns with the hardware spec by
    updating the register offset for MT_WFDMA0_HOST_INT_ENA.
    
    Cc: stable@vger.kernel.org
    Fixes: c948b5da6bbe ("wifi: mt76: mt7925: add Mediatek Wi-Fi7 driver for mt7925 chips")
    Signed-off-by: Michael Lo <michael.lo@mediatek.com>
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Link: https://patch.msgid.link/20250509083512.455095-1-mingyen.hsieh@mediatek.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: mt76: mt7925: introduce thermal protection [+ + +]
Author: Leon Yen <leon.yen@mediatek.com>
Date:   Fri May 9 16:21:17 2025 +0800

    wifi: mt76: mt7925: introduce thermal protection
    
    [ Upstream commit 1d81e893b422a6f0ae70f8648867c2e73edfb413 ]
    
    Add thermal protection to prevent the chip from possible overheating
    due to prolonged high traffic and adverse operating conditions.
    
    Signed-off-by: Leon Yen <leon.yen@mediatek.com>
    Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Link: https://patch.msgid.link/20250509082117.453819-1-mingyen.hsieh@mediatek.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7996: drop fragments with multicast or broadcast RA [+ + +]
Author: Benjamin Lin <benjamin-jw.lin@mediatek.com>
Date:   Thu May 15 11:29:47 2025 +0800

    wifi: mt76: mt7996: drop fragments with multicast or broadcast RA
    
    [ Upstream commit 80fda1cd7b0a1edd0849dc71403a070d0922118d ]
    
    IEEE 802.11 fragmentation can only be applied to unicast frames.
    Therefore, drop fragments with multicast or broadcast RA. This patch
    addresses vulnerabilities such as CVE-2020-26145.
    
    Signed-off-by: Benjamin Lin <benjamin-jw.lin@mediatek.com>
    Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
    Link: https://patch.msgid.link/20250515032952.1653494-4-shayne.chen@mediatek.com
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    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: usb: Reduce control message timeout to 500 ms [+ + +]
Author: Bitterblue Smith <rtl8821cerfe2@gmail.com>
Date:   Sat May 10 15:21:25 2025 +0300

    wifi: rtw88: usb: Reduce control message timeout to 500 ms
    
    commit 490340faddea461319652ce36dbc7c1b4482c35e upstream.
    
    RTL8811AU stops responding during the firmware download on some systems:
    
    [  809.256440] rtw_8821au 5-2.1:1.0: Firmware version 42.4.0, H2C version 0
    [  812.759142] rtw_8821au 5-2.1:1.0 wlp48s0f4u2u1: renamed from wlan0
    [  837.315388] rtw_8821au 1-4:1.0: write register 0x1ef4 failed with -110
    [  867.524259] rtw_8821au 1-4:1.0: write register 0x1ef8 failed with -110
    [  868.930976] rtw_8821au 5-2.1:1.0 wlp48s0f4u2u1: entered promiscuous mode
    [  897.730952] rtw_8821au 1-4:1.0: write register 0x1efc failed with -110
    
    Each write takes 30 seconds to fail because that's the timeout currently
    used for control messages in rtw_usb_write().
    
    In this scenario the firmware download takes at least 2000 seconds.
    Because this is done from the USB probe function, the long delay makes
    other things in the system hang.
    
    Reduce the timeout to 500 ms. This is the value used by the official USB
    wifi drivers from Realtek.
    
    Of course this only makes things hang for ~30 seconds instead of ~30
    minutes. It doesn't fix the firmware download.
    
    Tested with RTL8822CU, RTL8812BU, RTL8811CU, RTL8814AU, RTL8811AU,
    RTL8812AU, RTL8821AU, RTL8723DU.
    
    Cc: stable@vger.kernel.org
    Fixes: a82dfd33d123 ("wifi: rtw88: Add common USB chip support")
    Link: https://github.com/lwfinger/rtw88/issues/344
    Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
    Acked-by: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/1e35dd26-3f10-40b1-b2b4-f72184a26611@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: rtw88: usb: Upload the firmware in bigger chunks [+ + +]
Author: Bitterblue Smith <rtl8821cerfe2@gmail.com>
Date:   Sat May 10 15:22:24 2025 +0300

    wifi: rtw88: usb: Upload the firmware in bigger chunks
    
    commit 80fe0bc1659c0ccc79d082e426fa376be5df9c04 upstream.
    
    RTL8811AU stops responding during the firmware download on some systems:
    
    [  809.256440] rtw_8821au 5-2.1:1.0: Firmware version 42.4.0, H2C version 0
    [  812.759142] rtw_8821au 5-2.1:1.0 wlp48s0f4u2u1: renamed from wlan0
    [  837.315388] rtw_8821au 1-4:1.0: write register 0x1ef4 failed with -110
    [  867.524259] rtw_8821au 1-4:1.0: write register 0x1ef8 failed with -110
    [  868.930976] rtw_8821au 5-2.1:1.0 wlp48s0f4u2u1: entered promiscuous mode
    [  897.730952] rtw_8821au 1-4:1.0: write register 0x1efc failed with -110
    
    Maybe it takes too long when writing the firmware 4 bytes at a time.
    
    Write 196 bytes at a time for RTL8821AU, RTL8811AU, and RTL8812AU,
    and 254 bytes at a time for RTL8723DU. These are the sizes used in
    their official drivers. Tested with all these chips.
    
    Cc: stable@vger.kernel.org
    Link: https://github.com/lwfinger/rtw88/issues/344
    Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
    Acked-by: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/43f1daad-3ec0-4a3b-a50c-9cd9eb2c2f52@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: rtw89: 8922a: fix TX fail with wrong VCO setting [+ + +]
Author: Kuan-Chung Chen <damon.chen@realtek.com>
Date:   Wed Apr 16 16:12:39 2025 +0800

    wifi: rtw89: 8922a: fix TX fail with wrong VCO setting
    
    [ Upstream commit 20aac091a15dc7229ef1a268253fe36bb6b2be39 ]
    
    An incorrect Voltage Controlled Oscillator (VCO) setting
    may cause Synthesizer (SYN) unlock, which may lead to a
    failure in the TX authentication request.
    
    Signed-off-by: Kuan-Chung Chen <damon.chen@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20250416081241.36138-3-pkshih@realtek.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw89: leave idle mode when setting WEP encryption for AP mode [+ + +]
Author: Dian-Syuan Yang <dian_syuan0116@realtek.com>
Date:   Wed May 7 11:12:03 2025 +0800

    wifi: rtw89: leave idle mode when setting WEP encryption for AP mode
    
    [ Upstream commit d105652b33245162867ac769bea336976e67efb8 ]
    
    Due to mac80211 triggering the hardware to enter idle mode, it fails
    to install WEP key causing connected station can't ping successfully.
    Currently, it forces the hardware to leave idle mode before driver
    adding WEP keys.
    
    Signed-off-by: Dian-Syuan Yang <dian_syuan0116@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20250507031203.8256-1-pkshih@realtek.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw89: phy: add dummy C2H event handler for report of TAS power [+ + +]
Author: Ping-Ke Shih <pkshih@realtek.com>
Date:   Mon Dec 9 12:21:27 2024 +0800

    wifi: rtw89: phy: add dummy C2H event handler for report of TAS power
    
    commit 09489812013f9ff3850c3af9900c88012b8c1e5d upstream.
    
    The newer firmware, lik RTL8852C version 0.27.111.0, will notify driver
    report of TAS (Time Averaged SAR) power by new C2H events. This is to
    assist in higher accurate calculation of TAS.
    
    For now, driver doesn't use the report yet, so add a dummy handler to
    avoid it throws info like:
       rtw89_8852ce 0000:03:00.0: c2h class 9 func 6 not support
    
    Also add "MAC" and "PHY" to the message to disambiguate the source of
    C2H event.
    
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241209042127.21424-1-pkshih@realtek.com
    Signed-off-by: Zenm Chen <zenmchen@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
wireless: purelifi: plfxlc: fix memory leak in plfxlc_usb_wreq_asyn() [+ + +]
Author: Salah Triki <salah.triki@gmail.com>
Date:   Sun Apr 27 10:57:45 2025 +0100

    wireless: purelifi: plfxlc: fix memory leak in plfxlc_usb_wreq_asyn()
    
    [ Upstream commit 63a9a727d373fa5b8ce509eef50dbc45e0f745b9 ]
    
    Add usb_free_urb() in the error path to prevent memory leak.
    
    Signed-off-by: Salah Triki <salah.triki@gmail.com>
    Link: https://patch.msgid.link/aA3_maPlEJzO7wrL@pc
    [fix subject]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
workqueue: Initialize wq_isolated_cpumask in workqueue_init_early() [+ + +]
Author: Chuyi Zhou <zhouchuyi@bytedance.com>
Date:   Tue Jun 17 12:42:16 2025 +0800

    workqueue: Initialize wq_isolated_cpumask in workqueue_init_early()
    
    [ Upstream commit 261dce3d64021e7ec828a17b4975ce9182e54ceb ]
    
    Now when isolcpus is enabled via the cmdline, wq_isolated_cpumask does
    not include these isolated CPUs, even wq_unbound_cpumask has already
    excluded them. It is only when we successfully configure an isolate cpuset
    partition that wq_isolated_cpumask gets overwritten by
    workqueue_unbound_exclude_cpumask(), including both the cmdline-specified
    isolated CPUs and the isolated CPUs within the cpuset partitions.
    
    Fix this issue by initializing wq_isolated_cpumask properly in
    workqueue_init_early().
    
    Fixes: fe28f631fa94 ("workqueue: Add workqueue_unbound_exclude_cpumask() to exclude CPUs from wq_unbound_cpumask")
    Signed-off-by: Chuyi Zhou <zhouchuyi@bytedance.com>
    Reviewed-by: Waiman Long <longman@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/sgx: Prevent attempts to reclaim poisoned pages [+ + +]
Author: Andrew Zaborowski <andrew.zaborowski@intel.com>
Date:   Fri May 9 01:04:29 2025 +0200

    x86/sgx: Prevent attempts to reclaim poisoned pages
    
    [ Upstream commit ed16618c380c32c68c06186d0ccbb0d5e0586e59 ]
    
    TL;DR: SGX page reclaim touches the page to copy its contents to
    secondary storage. SGX instructions do not gracefully handle machine
    checks. Despite this, the existing SGX code will try to reclaim pages
    that it _knows_ are poisoned. Avoid even trying to reclaim poisoned pages.
    
    The longer story:
    
    Pages used by an enclave only get epc_page->poison set in
    arch_memory_failure() but they currently stay on sgx_active_page_list until
    sgx_encl_release(), with the SGX_EPC_PAGE_RECLAIMER_TRACKED flag untouched.
    
    epc_page->poison is not checked in the reclaimer logic meaning that, if other
    conditions are met, an attempt will be made to reclaim an EPC page that was
    poisoned.  This is bad because 1. we don't want that page to end up added
    to another enclave and 2. it is likely to cause one core to shut down
    and the kernel to panic.
    
    Specifically, reclaiming uses microcode operations including "EWB" which
    accesses the EPC page contents to encrypt and write them out to non-SGX
    memory.  Those operations cannot handle MCEs in their accesses other than
    by putting the executing core into a special shutdown state (affecting
    both threads with HT.)  The kernel will subsequently panic on the
    remaining cores seeing the core didn't enter MCE handler(s) in time.
    
    Call sgx_unmark_page_reclaimable() to remove the affected EPC page from
    sgx_active_page_list on memory error to stop it being considered for
    reclaiming.
    
    Testing epc_page->poison in sgx_reclaim_pages() would also work but I assume
    it's better to add code in the less likely paths.
    
    The affected EPC page is not added to &node->sgx_poison_page_list until
    later in sgx_encl_release()->sgx_free_epc_page() when it is EREMOVEd.
    Membership on other lists doesn't change to avoid changing any of the
    lists' semantics except for sgx_active_page_list.  There's a "TBD" comment
    in arch_memory_failure() about pre-emptive actions, the goal here is not
    to address everything that it may imply.
    
    This also doesn't completely close the time window when a memory error
    notification will be fatal (for a not previously poisoned EPC page) --
    the MCE can happen after sgx_reclaim_pages() has selected its candidates
    or even *inside* a microcode operation (actually easy to trigger due to
    the amount of time spent in them.)
    
    The spinlock in sgx_unmark_page_reclaimable() is safe because
    memory_failure() runs in process context and no spinlocks are held,
    explicitly noted in a mm/memory-failure.c comment.
    
    Signed-off-by: Andrew Zaborowski <andrew.zaborowski@intel.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Acked-by: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: balrogg@gmail.com
    Cc: linux-sgx@vger.kernel.org
    Link: https://lore.kernel.org/r/20250508230429.456271-1-andrew.zaborowski@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/tools: Drop duplicate unlikely() definition in insn_decoder_test.c [+ + +]
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Tue Mar 18 15:32:30 2025 -0700

    x86/tools: Drop duplicate unlikely() definition in insn_decoder_test.c
    
    commit f710202b2a45addea3dcdcd862770ecbaf6597ef upstream.
    
    After commit c104c16073b7 ("Kunit to check the longest symbol length"),
    there is a warning when building with clang because there is now a
    definition of unlikely from compiler.h in tools/include/linux, which
    conflicts with the one in the instruction decoder selftest:
    
      arch/x86/tools/insn_decoder_test.c:15:9: warning: 'unlikely' macro redefined [-Wmacro-redefined]
    
    Remove the second unlikely() definition, as it is no longer necessary,
    clearing up the warning.
    
    Fixes: c104c16073b7 ("Kunit to check the longest symbol length")
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Acked-by: Shuah Khan <skhan@linuxfoundation.org>
    Link: https://lore.kernel.org/r/20250318-x86-decoder-test-fix-unlikely-redef-v1-1-74c84a7bf05b@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/virt/tdx: Avoid indirect calls to TDX assembly functions [+ + +]
Author: Kai Huang <kai.huang@intel.com>
Date:   Sat Jun 7 01:07:37 2025 +1200

    x86/virt/tdx: Avoid indirect calls to TDX assembly functions
    
    commit 0b3bc018e86afdc0cbfef61328c63d5c08f8b370 upstream.
    
    Two 'static inline' TDX helper functions (sc_retry() and
    sc_retry_prerr()) take function pointer arguments which refer to
    assembly functions.  Normally, the compiler inlines the TDX helper,
    realizes that the function pointer targets are completely static --
    thus can be resolved at compile time -- and generates direct call
    instructions.
    
    But, other times (like when CONFIG_CC_OPTIMIZE_FOR_SIZE=y), the
    compiler declines to inline the helpers and will instead generate
    indirect call instructions.
    
    Indirect calls to assembly functions require special annotation (for
    various Control Flow Integrity mechanisms).  But TDX assembly
    functions lack the special annotations and can only be called
    directly.
    
    Annotate both the helpers as '__always_inline' to prod the compiler
    into maintaining the direct calls. There is no guarantee here, but
    Peter has volunteered to report the compiler bug if this assumption
    ever breaks[1].
    
    Fixes: 1e66a7e27539 ("x86/virt/tdx: Handle SEAMCALL no entropy error in common code")
    Fixes: df01f5ae07dd ("x86/virt/tdx: Add SEAMCALL error printing for module initialization")
    Signed-off-by: Kai Huang <kai.huang@intel.com>
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/lkml/20250605145914.GW39944@noisy.programming.kicks-ass.net/ [1]
    Link: https://lore.kernel.org/all/20250606130737.30713-1-kai.huang%40intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
xfrm: validate assignment of maximal possible SEQ number [+ + +]
Author: Leon Romanovsky <leon@kernel.org>
Date:   Tue May 13 13:56:22 2025 +0300

    xfrm: validate assignment of maximal possible SEQ number
    
    [ Upstream commit e86212b6b13a20c5ad404c5597933f57fd0f1519 ]
    
    Users can set any seq/seq_hi/oseq/oseq_hi values. The XFRM core code
    doesn't prevent from them to set even 0xFFFFFFFF, however this value
    will cause for traffic drop.
    
    Is is happening because SEQ numbers here mean that packet with such
    number was processed and next number should be sent on the wire. In this
    case, the next number will be 0, and it means overflow which causes to
    (expected) packet drops.
    
    While it can be considered as misconfiguration and handled by XFRM
    datapath in the same manner as any other SEQ number, let's add
    validation to easy for packet offloads implementations which need to
    configure HW with next SEQ to send and not with current SEQ like it is
    done in core code.
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>