Changelog in Linux kernel 6.1.115

 
ACPI: button: Add DMI quirk for Samsung Galaxy Book2 to fix initial lid detection issue [+ + +]
Author: Shubham Panwar <[email protected]>
Date:   Sun Oct 20 15:20:46 2024 +0530

    ACPI: button: Add DMI quirk for Samsung Galaxy Book2 to fix initial lid detection issue
    
    commit 8fa73ee44daefc884c53a25158c25a4107eb5a94 upstream.
    
    Add a DMI quirk for Samsung Galaxy Book2 to fix an initial lid state
    detection issue.
    
    The _LID device incorrectly returns the lid status as "closed" during
    boot, causing the system to enter a suspend loop right after booting.
    
    The quirk ensures that the correct lid state is reported initially,
    preventing the system from immediately suspending after startup.  It
    only addresses the initial lid state detection and ensures proper
    system behavior upon boot.
    
    Signed-off-by: Shubham Panwar <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Changelog edits ]
    Cc: All applicable <[email protected]>
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ACPI: PRM: Clean up guid type in struct prm_handler_info [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Thu Oct 24 11:07:15 2024 +0300

    ACPI: PRM: Clean up guid type in struct prm_handler_info
    
    commit 3d1c651272cf1df8aac7d9b6d92d836d27bed50f upstream.
    
    Clang 19 prints a warning when we pass &th->guid to efi_pa_va_lookup():
    
    drivers/acpi/prmt.c:156:29: error: passing 1-byte aligned argument to
    4-byte aligned parameter 1 of 'efi_pa_va_lookup' may result in an
    unaligned pointer access [-Werror,-Walign-mismatch]
      156 |                         (void *)efi_pa_va_lookup(&th->guid, handler_info->handler_address);
          |                                                  ^
    
    The problem is that efi_pa_va_lookup() takes a efi_guid_t and &th->guid
    is a regular guid_t.  The difference between the two types is the
    alignment.  efi_guid_t is a typedef.
    
            typedef guid_t efi_guid_t __aligned(__alignof__(u32));
    
    It's possible that this a bug in Clang 19.  Even though the alignment of
    &th->guid is not explicitly specified, it will still end up being aligned
    at 4 or 8 bytes.
    
    Anyway, as Ard points out, it's cleaner to change guid to efi_guid_t type
    and that also makes the warning go away.
    
    Fixes: 088984c8d54c ("ACPI: PRM: Find EFI_MEMORY_RUNTIME block for PRM handler and context")
    Reported-by: Linux Kernel Functional Testing <[email protected]>
    Suggested-by: Ard Biesheuvel <[email protected]>
    Signed-off-by: Dan Carpenter <[email protected]>
    Tested-by: Paul E. McKenney <[email protected]>
    Acked-by: Ard Biesheuvel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Subject edit ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ACPI: PRM: Find EFI_MEMORY_RUNTIME block for PRM handler and context [+ + +]
Author: Koba Ko <[email protected]>
Date:   Sun Oct 13 04:50:10 2024 +0800

    ACPI: PRM: Find EFI_MEMORY_RUNTIME block for PRM handler and context
    
    commit 088984c8d54c0053fc4ae606981291d741c5924b upstream.
    
    PRMT needs to find the correct type of block to translate the PA-VA
    mapping for EFI runtime services.
    
    The issue arises because the PRMT is finding a block of type
    EFI_CONVENTIONAL_MEMORY, which is not appropriate for runtime services
    as described in Section 2.2.2 (Runtime Services) of the UEFI
    Specification [1]. Since the PRM handler is a type of runtime service,
    this causes an exception when the PRM handler is called.
    
        [Firmware Bug]: Unable to handle paging request in EFI runtime service
        WARNING: CPU: 22 PID: 4330 at drivers/firmware/efi/runtime-wrappers.c:341
            __efi_queue_work+0x11c/0x170
        Call trace:
    
    Let PRMT find a block with EFI_MEMORY_RUNTIME for PRM handler and PRM
    context.
    
    If no suitable block is found, a warning message will be printed, but
    the procedure continues to manage the next PRM handler.
    
    However, if the PRM handler is actually called without proper allocation,
    it would result in a failure during error handling.
    
    By using the correct memory types for runtime services, ensure that the
    PRM handler and the context are properly mapped in the virtual address
    space during runtime, preventing the paging request error.
    
    The issue is really that only memory that has been remapped for runtime
    by the firmware can be used by the PRM handler, and so the region needs
    to have the EFI_MEMORY_RUNTIME attribute.
    
    Link: https://uefi.org/sites/default/files/resources/UEFI_Spec_2_10_Aug29.pdf # [1]
    Fixes: cefc7ca46235 ("ACPI: PRM: implement OperationRegion handler for the PlatformRtMechanism subtype")
    Cc: All applicable <[email protected]>
    Signed-off-by: Koba Ko <[email protected]>
    Reviewed-by: Matthew R. Ochs <[email protected]>
    Reviewed-by: Zhang Rui <[email protected]>
    Reviewed-by: Ard Biesheuvel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Subject and changelog edits ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ACPI: resource: Add LG 16T90SP to irq1_level_low_skip_override[] [+ + +]
Author: Christian Heusel <[email protected]>
Date:   Thu Oct 17 13:16:26 2024 +0200

    ACPI: resource: Add LG 16T90SP to irq1_level_low_skip_override[]
    
    commit 53f1a907d36fb3aa02a4d34073bcec25823a6c74 upstream.
    
    The LG Gram Pro 16 2-in-1 (2024) the 16T90SP has its keybopard IRQ (1)
    described as ActiveLow in the DSDT, which the kernel overrides to EdgeHigh
    which breaks the keyboard.
    
    Add the 16T90SP to the irq1_level_low_skip_override[] quirk table to fix
    this.
    
    Reported-by: Dirk Holten <[email protected]>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219382
    Cc: All applicable <[email protected]>
    Suggested-by: Dirk Holten <[email protected]>
    Signed-off-by: Christian Heusel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ALSA: firewire-lib: Avoid division by zero in apply_constraint_to_size() [+ + +]
Author: Andrey Shumilin <[email protected]>
Date:   Fri Oct 18 09:00:18 2024 +0300

    ALSA: firewire-lib: Avoid division by zero in apply_constraint_to_size()
    
    [ Upstream commit 72cafe63b35d06b5cfbaf807e90ae657907858da ]
    
    The step variable is initialized to zero. It is changed in the loop,
    but if it's not changed it will remain zero. Add a variable check
    before the division.
    
    The observed behavior was introduced by commit 826b5de90c0b
    ("ALSA: firewire-lib: fix insufficient PCM rule for period/buffer size"),
    and it is difficult to show that any of the interval parameters will
    satisfy the snd_interval_test() condition with data from the
    amdtp_rate_table[] table.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 826b5de90c0b ("ALSA: firewire-lib: fix insufficient PCM rule for period/buffer size")
    Signed-off-by: Andrey Shumilin <[email protected]>
    Reviewed-by: Takashi Sakamoto <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/cs8409: Fix possible NULL dereference [+ + +]
Author: Murad Masimov <[email protected]>
Date:   Fri Oct 11 01:16:45 2024 +0300

    ALSA: hda/cs8409: Fix possible NULL dereference
    
    [ Upstream commit c9bd4a82b4ed32c6d1c90500a52063e6e341517f ]
    
    If snd_hda_gen_add_kctl fails to allocate memory and returns NULL, then
    NULL pointer dereference will occur in the next line.
    
    Since dolphin_fixups function is a hda_fixup function which is not supposed
    to return any errors, add simple check before dereference, ignore the fail.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 20e507724113 ("ALSA: hda/cs8409: Add support for dolphin")
    Signed-off-by: Murad Masimov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek: Add subwoofer quirk for Acer Predator G9-593 [+ + +]
Author: José Relvas <[email protected]>
Date:   Sun Oct 20 11:27:56 2024 +0100

    ALSA: hda/realtek: Add subwoofer quirk for Acer Predator G9-593
    
    commit 35fdc6e1c16099078bcbd73a6c8f1733ae7f1909 upstream.
    
    The Acer Predator G9-593 has a 2+1 speaker system which isn't probed
    correctly.
    This patch adds a quirk with the proper pin connections.
    
    Note that I do not own this laptop, so I cannot guarantee that this
    fixes the issue.
    Testing was done by other users here:
    https://discussion.fedoraproject.org/t/-/118482
    
    This model appears to have two different dev IDs...
    
    - 0x1177 (as seen on the forum link above)
    - 0x1178 (as seen on https://linux-hardware.org/?probe=127df9999f)
    
    I don't think the audio system was changed between model revisions, so
    the patch applies for both IDs.
    
    Signed-off-by: José Relvas <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: hda/realtek: Update default depop procedure [+ + +]
Author: Kailang Yang <[email protected]>
Date:   Wed Oct 23 16:13:10 2024 +0800

    ALSA: hda/realtek: Update default depop procedure
    
    [ Upstream commit e3ea2757c312e51bbf62ebc434a6f7df1e3a201f ]
    
    Old procedure has a chance to meet Headphone no output.
    
    Fixes: c2d6af53a43f ("ALSA: hda/realtek - Add default procedure for suspend and resume state")
    Signed-off-by: Kailang Yang <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64/uprobes: change the uprobe_opcode_t typedef to fix the sparse warning [+ + +]
Author: junhua huang <[email protected]>
Date:   Wed Dec 28 09:54:12 2022 +0800

    arm64/uprobes: change the uprobe_opcode_t typedef to fix the sparse warning
    
    commit ef08c0fadd8a17ebe429b85e23952dac3263ad34 upstream.
    
    After we fixed the uprobe inst endian in aarch_be, the sparse check report
    the following warning info:
    
    sparse warnings: (new ones prefixed by >>)
    >> kernel/events/uprobes.c:223:25: sparse: sparse: restricted __le32 degrades to integer
    >> kernel/events/uprobes.c:574:56: sparse: sparse: incorrect type in argument 4 (different base types)
    @@     expected unsigned int [addressable] [usertype] opcode @@     got restricted __le32 [usertype] @@
       kernel/events/uprobes.c:574:56: sparse:     expected unsigned int [addressable] [usertype] opcode
       kernel/events/uprobes.c:574:56: sparse:     got restricted __le32 [usertype]
    >> kernel/events/uprobes.c:1483:32: sparse: sparse: incorrect type in initializer (different base types)
    @@     expected unsigned int [usertype] insn @@     got restricted __le32 [usertype] @@
       kernel/events/uprobes.c:1483:32: sparse:     expected unsigned int [usertype] insn
       kernel/events/uprobes.c:1483:32: sparse:     got restricted __le32 [usertype]
    
    use the __le32 to u32 for uprobe_opcode_t, to keep the same.
    
    Fixes: 60f07e22a73d ("arm64:uprobe fix the uprobe SWBP_INSN in big-endian")
    Reported-by: kernel test robot <[email protected]>
    Signed-off-by: junhua huang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
arm64: Force position-independent veneers [+ + +]
Author: Mark Rutland <[email protected]>
Date:   Fri Sep 27 11:18:38 2024 +0100

    arm64: Force position-independent veneers
    
    [ Upstream commit 9abe390e689f4f5c23c5f507754f8678431b4f72 ]
    
    Certain portions of code always need to be position-independent
    regardless of CONFIG_RELOCATABLE, including code which is executed in an
    idmap or which is executed before relocations are applied. In some
    kernel configurations the LLD linker generates position-dependent
    veneers for such code, and when executed these result in early boot-time
    failures.
    
    Marc Zyngier encountered a boot failure resulting from this when
    building a (particularly cursed) configuration with LLVM, as he reported
    to the list:
    
      https://lore.kernel.org/linux-arm-kernel/[email protected]/
    
    In Marc's kernel configuration, the .head.text and .rodata.text sections
    end up more than 128MiB apart, requiring a veneer to branch between the
    two:
    
    | [mark@lakrids:~/src/linux]% usekorg 14.1.0 aarch64-linux-objdump -t vmlinux | grep -w _text
    | ffff800080000000 g       .head.text     0000000000000000 _text
    | [mark@lakrids:~/src/linux]% usekorg 14.1.0 aarch64-linux-objdump -t vmlinux | grep -w primary_entry
    | ffff8000889df0e0 g       .rodata.text   000000000000006c primary_entry,
    
    ... consequently, LLD inserts a position-dependent veneer for the branch
    from _stext (in .head.text) to primary_entry (in .rodata.text):
    
    | ffff800080000000 <_text>:
    | ffff800080000000:       fa405a4d        ccmp    x18, #0x0, #0xd, pl     // pl = nfrst
    | ffff800080000004:       14003fff        b       ffff800080010000 <__AArch64AbsLongThunk_primary_entry>
    ...
    | ffff800080010000 <__AArch64AbsLongThunk_primary_entry>:
    | ffff800080010000:       58000050        ldr     x16, ffff800080010008 <__AArch64AbsLongThunk_primary_entry+0x8>
    | ffff800080010004:       d61f0200        br      x16
    | ffff800080010008:       889df0e0        .word   0x889df0e0
    | ffff80008001000c:       ffff8000        .word   0xffff8000
    
    ... and as this is executed early in boot before the kernel is mapped in
    TTBR1 this results in a silent boot failure.
    
    Fix this by passing '--pic-veneer' to the linker, which will cause the
    linker to use position-independent veneers, e.g.
    
    | ffff800080000000 <_text>:
    | ffff800080000000:       fa405a4d        ccmp    x18, #0x0, #0xd, pl     // pl = nfrst
    | ffff800080000004:       14003fff        b       ffff800080010000 <__AArch64ADRPThunk_primary_entry>
    ...
    | ffff800080010000 <__AArch64ADRPThunk_primary_entry>:
    | ffff800080010000:       f004e3f0        adrp    x16, ffff800089c8f000 <__idmap_text_start>
    | ffff800080010004:       91038210        add     x16, x16, #0xe0
    | ffff800080010008:       d61f0200        br      x16
    
    I've opted to pass '--pic-veneer' unconditionally, as:
    
    * In addition to solving the boot failure, these sequences are generally
      nicer as they require fewer instructions and don't need to perform
      data accesses.
    
    * While the position-independent veneer sequences have a limited +/-2GiB
      range, this is not a new restriction. Even kernels built with
      CONFIG_RELOCATABLE=n are limited to 2GiB in size as we have several
      structues using 32-bit relative offsets and PPREL32 relocations, which
      are similarly limited to +/-2GiB in range. These include extable
      entries, jump table entries, and alt_instr entries.
    
    * GNU LD defaults to using position-independent veneers, and supports
      the same '--pic-veneer' option, so this change is not expected to
      adversely affect GNU LD.
    
    I've tested with GNU LD 2.30 to 2.42 inclusive and LLVM 13.0.1 to 19.1.0
    inclusive, using the kernel.org binaries from:
    
    * https://mirrors.edge.kernel.org/pub/tools/crosstool/
    * https://mirrors.edge.kernel.org/pub/tools/llvm/
    
    Signed-off-by: Mark Rutland <[email protected]>
    Reported-by: Marc Zyngier <[email protected]>
    Cc: Ard Biesheuvel <[email protected]>
    Cc: Nathan Chancellor <[email protected]>
    Cc: Nick Desaulniers <[email protected]>
    Cc: Will Deacon <[email protected]>
    Acked-by: Ard Biesheuvel <[email protected]>
    Reviewed-by: Nathan Chancellor <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: probes: Fix uprobes for big-endian kernels [+ + +]
Author: Mark Rutland <[email protected]>
Date:   Tue Oct 8 16:58:48 2024 +0100

    arm64: probes: Fix uprobes for big-endian kernels
    
    [ Upstream commit 13f8f1e05f1dc36dbba6cba0ae03354c0dafcde7 ]
    
    The arm64 uprobes code is broken for big-endian kernels as it doesn't
    convert the in-memory instruction encoding (which is always
    little-endian) into the kernel's native endianness before analyzing and
    simulating instructions. This may result in a few distinct problems:
    
    * The kernel may may erroneously reject probing an instruction which can
      safely be probed.
    
    * The kernel may erroneously erroneously permit stepping an
      instruction out-of-line when that instruction cannot be stepped
      out-of-line safely.
    
    * The kernel may erroneously simulate instruction incorrectly dur to
      interpretting the byte-swapped encoding.
    
    The endianness mismatch isn't caught by the compiler or sparse because:
    
    * The arch_uprobe::{insn,ixol} fields are encoded as arrays of u8, so
      the compiler and sparse have no idea these contain a little-endian
      32-bit value. The core uprobes code populates these with a memcpy()
      which similarly does not handle endianness.
    
    * While the uprobe_opcode_t type is an alias for __le32, both
      arch_uprobe_analyze_insn() and arch_uprobe_skip_sstep() cast from u8[]
      to the similarly-named probe_opcode_t, which is an alias for u32.
      Hence there is no endianness conversion warning.
    
    Fix this by changing the arch_uprobe::{insn,ixol} fields to __le32 and
    adding the appropriate __le32_to_cpu() conversions prior to consuming
    the instruction encoding. The core uprobes copies these fields as opaque
    ranges of bytes, and so is unaffected by this change.
    
    At the same time, remove MAX_UINSN_BYTES and consistently use
    AARCH64_INSN_SIZE for clarity.
    
    Tested with the following:
    
    | #include <stdio.h>
    | #include <stdbool.h>
    |
    | #define noinline __attribute__((noinline))
    |
    | static noinline void *adrp_self(void)
    | {
    |         void *addr;
    |
    |         asm volatile(
    |         "       adrp    %x0, adrp_self\n"
    |         "       add     %x0, %x0, :lo12:adrp_self\n"
    |         : "=r" (addr));
    | }
    |
    |
    | int main(int argc, char *argv)
    | {
    |         void *ptr = adrp_self();
    |         bool equal = (ptr == adrp_self);
    |
    |         printf("adrp_self   => %p\n"
    |                "adrp_self() => %p\n"
    |                "%s\n",
    |                adrp_self, ptr, equal ? "EQUAL" : "NOT EQUAL");
    |
    |         return 0;
    | }
    
    .... where the adrp_self() function was compiled to:
    
    | 00000000004007e0 <adrp_self>:
    |   4007e0:       90000000        adrp    x0, 400000 <__ehdr_start>
    |   4007e4:       911f8000        add     x0, x0, #0x7e0
    |   4007e8:       d65f03c0        ret
    
    Before this patch, the ADRP is not recognized, and is assumed to be
    steppable, resulting in corruption of the result:
    
    | # ./adrp-self
    | adrp_self   => 0x4007e0
    | adrp_self() => 0x4007e0
    | EQUAL
    | # echo 'p /root/adrp-self:0x007e0' > /sys/kernel/tracing/uprobe_events
    | # echo 1 > /sys/kernel/tracing/events/uprobes/enable
    | # ./adrp-self
    | adrp_self   => 0x4007e0
    | adrp_self() => 0xffffffffff7e0
    | NOT EQUAL
    
    After this patch, the ADRP is correctly recognized and simulated:
    
    | # ./adrp-self
    | adrp_self   => 0x4007e0
    | adrp_self() => 0x4007e0
    | EQUAL
    | #
    | # echo 'p /root/adrp-self:0x007e0' > /sys/kernel/tracing/uprobe_events
    | # echo 1 > /sys/kernel/tracing/events/uprobes/enable
    | # ./adrp-self
    | adrp_self   => 0x4007e0
    | adrp_self() => 0x4007e0
    | EQUAL
    
    Fixes: 9842ceae9fa8 ("arm64: Add uprobe support")
    Cc: [email protected]
    Signed-off-by: Mark Rutland <[email protected]>
    Cc: Catalin Marinas <[email protected]>
    Cc: Will Deacon <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: arm64:uprobe fix the uprobe SWBP_INSN in big-endian [+ + +]
Author: junhua huang <[email protected]>
Date:   Fri Dec 2 15:11:10 2022 +0800

    arm64:uprobe fix the uprobe SWBP_INSN in big-endian
    
    [ Upstream commit 60f07e22a73d318cddaafa5ef41a10476807cc07 ]
    
    We use uprobe in aarch64_be, which we found the tracee task would exit
    due to SIGILL when we enable the uprobe trace.
    We can see the replace inst from uprobe is not correct in aarch big-endian.
    As in Armv8-A, instruction fetches are always treated as little-endian,
    we should treat the UPROBE_SWBP_INSN as little-endian。
    
    The test case is as following。
    bash-4.4# ./mqueue_test_aarchbe 1 1 2 1 10 > /dev/null &
    bash-4.4# cd /sys/kernel/debug/tracing/
    bash-4.4# echo 'p:test /mqueue_test_aarchbe:0xc30 %x0 %x1' > uprobe_events
    bash-4.4# echo 1 > events/uprobes/enable
    bash-4.4#
    bash-4.4# ps
      PID TTY          TIME CMD
      140 ?        00:00:01 bash
      237 ?        00:00:00 ps
    [1]+  Illegal instruction     ./mqueue_test_aarchbe 1 1 2 1 100 > /dev/null
    
    which we debug use gdb as following:
    
    bash-4.4# gdb attach 155
    (gdb) disassemble send
    Dump of assembler code for function send:
       0x0000000000400c30 <+0>:     .inst   0xa00020d4 ; undefined
       0x0000000000400c34 <+4>:     mov     x29, sp
       0x0000000000400c38 <+8>:     str     w0, [sp, #28]
       0x0000000000400c3c <+12>:    strb    w1, [sp, #27]
       0x0000000000400c40 <+16>:    str     xzr, [sp, #40]
       0x0000000000400c44 <+20>:    str     xzr, [sp, #48]
       0x0000000000400c48 <+24>:    add     x0, sp, #0x1b
       0x0000000000400c4c <+28>:    mov     w3, #0x0                 // #0
       0x0000000000400c50 <+32>:    mov     x2, #0x1                 // #1
       0x0000000000400c54 <+36>:    mov     x1, x0
       0x0000000000400c58 <+40>:    ldr     w0, [sp, #28]
       0x0000000000400c5c <+44>:    bl      0x405e10 <mq_send>
       0x0000000000400c60 <+48>:    str     w0, [sp, #60]
       0x0000000000400c64 <+52>:    ldr     w0, [sp, #60]
       0x0000000000400c68 <+56>:    ldp     x29, x30, [sp], #64
       0x0000000000400c6c <+60>:    ret
    End of assembler dump.
    (gdb) info b
    No breakpoints or watchpoints.
    (gdb) c
    Continuing.
    
    Program received signal SIGILL, Illegal instruction.
    0x0000000000400c30 in send ()
    (gdb) x/10x 0x400c30
    0x400c30 <send>:    0xd42000a0   0xfd030091      0xe01f00b9      0xe16f0039
    0x400c40 <send+16>: 0xff1700f9   0xff1b00f9      0xe06f0091      0x03008052
    0x400c50 <send+32>: 0x220080d2   0xe10300aa
    (gdb) disassemble 0x400c30
    Dump of assembler code for function send:
    => 0x0000000000400c30 <+0>:     .inst   0xa00020d4 ; undefined
       0x0000000000400c34 <+4>:     mov     x29, sp
       0x0000000000400c38 <+8>:     str     w0, [sp, #28]
       0x0000000000400c3c <+12>:    strb    w1, [sp, #27]
       0x0000000000400c40 <+16>:    str     xzr, [sp, #40]
    
    Signed-off-by: junhua huang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Stable-dep-of: 13f8f1e05f1d ("arm64: probes: Fix uprobes for big-endian kernels")
    Signed-off-by: Sasha Levin <[email protected]>

 
ARM: dts: bcm2837-rpi-cm3-io3: Fix HDMI hpd-gpio pin [+ + +]
Author: Florian Klink <[email protected]>
Date:   Tue Jul 16 02:03:11 2024 +0300

    ARM: dts: bcm2837-rpi-cm3-io3: Fix HDMI hpd-gpio pin
    
    [ Upstream commit dc7785e4723510616d776862ddb4c08857a1bdb2 ]
    
    HDMI_HPD_N_1V8 is connected to GPIO pin 0, not 1.
    
    This fixes HDMI hotplug/output detection.
    
    See https://datasheets.raspberrypi.com/cm/cm3-schematics.pdf
    
    Signed-off-by: Florian Klink <[email protected]>
    Reviewed-by: Stefan Wahren <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Stefan Wahren <[email protected]>
    Fixes: a54fe8a6cf66 ("ARM: dts: add Raspberry Pi Compute Module 3 and IO board")
    Signed-off-by: Florian Fainelli <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ASoC: codecs: lpass-rx-macro: add missing CDC_RX_BCL_VBAT_RF_PROC2 to default regs values [+ + +]
Author: Alexey Klimov <[email protected]>
Date:   Wed Sep 25 05:38:23 2024 +0100

    ASoC: codecs: lpass-rx-macro: add missing CDC_RX_BCL_VBAT_RF_PROC2 to default regs values
    
    [ Upstream commit e249786b2188107a7c50e7174d35f955a60988a1 ]
    
    CDC_RX_BCL_VBAT_RF_PROC1 is listed twice and its default value
    is 0x2a which is overwriten by its next occurence in rx_defaults[].
    The second one should be missing CDC_RX_BCL_VBAT_RF_PROC2 instead
    and its default value is expected 0x0.
    
    Signed-off-by: Alexey Klimov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: dt-bindings: davinci-mcasp: Fix interrupt properties [+ + +]
Author: Miquel Raynal <[email protected]>
Date:   Thu Oct 3 10:36:11 2024 +0200

    ASoC: dt-bindings: davinci-mcasp: Fix interrupt properties
    
    [ Upstream commit 8380dbf1b9ef66e3ce6c1d660fd7259637c2a929 ]
    
    Combinations of "tx" alone, "rx" alone and "tx", "rx" together are
    supposedly valid (see link below), which is not the case today as "rx"
    alone is not accepted by the current binding.
    
    Let's rework the two interrupt properties to expose all correct
    possibilities.
    
    Cc: Péter Ujfalusi <[email protected]>
    Link: https://lore.kernel.org/linux-sound/20241003102552.2c11840e@xps-13/T/#m277fce1d49c50d94e071f7890aed472fa2c64052
    Fixes: 8be90641a0bb ("ASoC: dt-bindings: davinci-mcasp: convert McASP bindings to yaml schema")
    Signed-off-by: Miquel Raynal <[email protected]>
    Acked-by: Krzysztof Kozlowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: dt-bindings: davinci-mcasp: Fix interrupts property [+ + +]
Author: Miquel Raynal <[email protected]>
Date:   Tue Oct 1 22:47:49 2024 +0200

    ASoC: dt-bindings: davinci-mcasp: Fix interrupts property
    
    [ Upstream commit 17d8adc4cd5181c13c1041b197b76efc09eaf8a8 ]
    
    My understanding of the interrupts property is that it can either be:
    1/ - TX
    2/ - TX
       - RX
    3/ - Common/combined.
    
    There are very little chances that either:
       - TX
       - Common/combined
    or even
       - TX
       - RX
       - Common/combined
    could be a thing.
    
    Looking at the interrupt-names definition (which uses oneOf instead of
    anyOf), it makes indeed little sense to use anyOf in the interrupts
    definition. I believe this is just a mistake, hence let's fix it.
    
    Fixes: 8be90641a0bb ("ASoC: dt-bindings: davinci-mcasp: convert McASP bindings to yaml schema")
    Signed-off-by: Miquel Raynal <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: fsl_sai: Enable 'FIFO continue on error' FCONT bit [+ + +]
Author: Shengjiu Wang <[email protected]>
Date:   Mon Sep 30 14:08:28 2024 +0800

    ASoC: fsl_sai: Enable 'FIFO continue on error' FCONT bit
    
    [ Upstream commit 72455e33173c1a00c0ce93d2b0198eb45d5f4195 ]
    
    FCONT=1 means On FIFO error, the SAI will continue from the
    same word that caused the FIFO error to set after the FIFO
    warning flag has been cleared.
    
    Set FCONT bit in control register to avoid the channel swap
    issue after SAI xrun.
    
    Signed-off-by: Shengjiu Wang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: qcom: Fix NULL Dereference in asoc_qcom_lpass_cpu_platform_probe() [+ + +]
Author: Zichen Xie <[email protected]>
Date:   Sun Oct 6 15:57:37 2024 -0500

    ASoC: qcom: Fix NULL Dereference in asoc_qcom_lpass_cpu_platform_probe()
    
    commit 49da1463c9e3d2082276c3e0e2a8b65a88711cd2 upstream.
    
    A devm_kzalloc() in asoc_qcom_lpass_cpu_platform_probe() could
    possibly return NULL pointer. NULL Pointer Dereference may be
    triggerred without addtional check.
    Add a NULL check for the returned pointer.
    
    Fixes: b5022a36d28f ("ASoC: qcom: lpass: Use regmap_field for i2sctl and dmactl registers")
    Cc: [email protected]
    Signed-off-by: Zichen Xie <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ASoC: qcom: sm8250: add qrb4210-rb2-sndcard compatible string [+ + +]
Author: Alexey Klimov <[email protected]>
Date:   Wed Oct 2 03:20:10 2024 +0100

    ASoC: qcom: sm8250: add qrb4210-rb2-sndcard compatible string
    
    [ Upstream commit b97bc0656a66f89f78098d4d72dc04fa9518ab11 ]
    
    Add "qcom,qrb4210-rb2-sndcard" to the list of recognizable
    devices.
    
    Signed-off-by: Alexey Klimov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
be2net: fix potential memory leak in be_xmit() [+ + +]
Author: Wang Hai <[email protected]>
Date:   Tue Oct 15 22:48:02 2024 +0800

    be2net: fix potential memory leak in be_xmit()
    
    [ Upstream commit e4dd8bfe0f6a23acd305f9b892c00899089bd621 ]
    
    The be_xmit() returns NETDEV_TX_OK without freeing skb
    in case of be_xmit_enqueue() fails, add dev_kfree_skb_any() to fix it.
    
    Fixes: 760c295e0e8d ("be2net: Support for OS2BMC.")
    Signed-off-by: Wang Hai <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Reviewed-by: Kalesh AP <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Andrew Lunn <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
block, bfq: fix procress reference leakage for bfqq in merge chain [+ + +]
Author: Yu Kuai <[email protected]>
Date:   Wed Oct 23 11:39:50 2024 +0800

    block, bfq: fix procress reference leakage for bfqq in merge chain
    
    [ Upstream commit 73aeab373557fa6ee4ae0b742c6211ccd9859280 ]
    
    Original state:
    
            Process 1       Process 2       Process 3       Process 4
             (BIC1)          (BIC2)          (BIC3)          (BIC4)
              Λ                |               |               |
               \--------------\ \-------------\ \-------------\|
                               V               V               V
              bfqq1--------->bfqq2---------->bfqq3----------->bfqq4
        ref    0               1               2               4
    
    After commit 0e456dba86c7 ("block, bfq: choose the last bfqq from merge
    chain in bfq_setup_cooperator()"), if P1 issues a new IO:
    
    Without the patch:
    
            Process 1       Process 2       Process 3       Process 4
             (BIC1)          (BIC2)          (BIC3)          (BIC4)
              Λ                |               |               |
               \------------------------------\ \-------------\|
                                               V               V
              bfqq1--------->bfqq2---------->bfqq3----------->bfqq4
        ref    0               0               2               4
    
    bfqq3 will be used to handle IO from P1, this is not expected, IO
    should be redirected to bfqq4;
    
    With the patch:
    
              -------------------------------------------
              |                                         |
            Process 1       Process 2       Process 3   |   Process 4
             (BIC1)          (BIC2)          (BIC3)     |    (BIC4)
                               |               |        |      |
                                \-------------\ \-------------\|
                                               V               V
              bfqq1--------->bfqq2---------->bfqq3----------->bfqq4
        ref    0               0               2               4
    
    IO is redirected to bfqq4, however, procress reference of bfqq3 is still
    2, while there is only P2 using it.
    
    Fix the problem by calling bfq_merge_bfqqs() for each bfqq in the merge
    chain. Also change bfqq_merge_bfqqs() to return new_bfqq to simplify
    code.
    
    Fixes: 0e456dba86c7 ("block, bfq: choose the last bfqq from merge chain in bfq_setup_cooperator()")
    Signed-off-by: Yu Kuai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Bluetooth: bnep: fix wild-memory-access in proto_unregister [+ + +]
Author: Ye Bin <[email protected]>
Date:   Mon Oct 14 17:07:08 2024 +0800

    Bluetooth: bnep: fix wild-memory-access in proto_unregister
    
    [ Upstream commit 64a90991ba8d4e32e3173ddd83d0b24167a5668c ]
    
    There's issue as follows:
      KASAN: maybe wild-memory-access in range [0xdead...108-0xdead...10f]
      CPU: 3 UID: 0 PID: 2805 Comm: rmmod Tainted: G        W
      RIP: 0010:proto_unregister+0xee/0x400
      Call Trace:
       <TASK>
       __do_sys_delete_module+0x318/0x580
       do_syscall_64+0xc1/0x1d0
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    As bnep_init() ignore bnep_sock_init()'s return value, and bnep_sock_init()
    will cleanup all resource. Then when remove bnep module will call
    bnep_sock_cleanup() to cleanup sock's resource.
    To solve above issue just return bnep_sock_init()'s return value in
    bnep_exit().
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Ye Bin <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: ISO: Fix UAF on iso_sock_timeout [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Tue Oct 22 15:35:49 2024 -0400

    Bluetooth: ISO: Fix UAF on iso_sock_timeout
    
    [ Upstream commit 246b435ad668596aa0e2bbb9d491b6413861211a ]
    
    conn->sk maybe have been unlinked/freed while waiting for iso_conn_lock
    so this checks if the conn->sk is still valid by checking if it part of
    iso_sk_list.
    
    Fixes: ccf74f2390d6 ("Bluetooth: Add BTPROTO_ISO socket type")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: SCO: Fix UAF on sco_sock_timeout [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Tue Oct 22 12:31:08 2024 -0400

    Bluetooth: SCO: Fix UAF on sco_sock_timeout
    
    [ Upstream commit 1bf4470a3939c678fb822073e9ea77a0560bc6bb ]
    
    conn->sk maybe have been unlinked/freed while waiting for sco_conn_lock
    so this checks if the conn->sk is still valid by checking if it part of
    sco_sk_list.
    
    Reported-by: [email protected]
    Tested-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=4c0d0c4cde787116d465
    Fixes: ba316be1b6a0 ("Bluetooth: schedule SCO timeouts with delayed_work")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf,perf: Fix perf_event_detach_bpf_prog error handling [+ + +]
Author: Jiri Olsa <[email protected]>
Date:   Wed Oct 23 22:03:52 2024 +0200

    bpf,perf: Fix perf_event_detach_bpf_prog error handling
    
    [ Upstream commit 0ee288e69d033850bc87abe0f9cc3ada24763d7f ]
    
    Peter reported that perf_event_detach_bpf_prog might skip to release
    the bpf program for -ENOENT error from bpf_prog_array_copy.
    
    This can't happen because bpf program is stored in perf event and is
    detached and released only when perf event is freed.
    
    Let's drop the -ENOENT check and make sure the bpf program is released
    in any case.
    
    Fixes: 170a7e3ea070 ("bpf: bpf_prog_array_copy() should return -ENOENT if exclude_prog not found")
    Reported-by: Peter Zijlstra <[email protected]>
    Signed-off-by: Jiri Olsa <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    
    Closes: https://lore.kernel.org/lkml/[email protected]/
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf: devmap: provide rxq after redirect [+ + +]
Author: Florian Kauer <[email protected]>
Date:   Wed Sep 11 10:41:18 2024 +0200

    bpf: devmap: provide rxq after redirect
    
    [ Upstream commit ca9984c5f0ab3690d98b13937b2485a978c8dd73 ]
    
    rxq contains a pointer to the device from where
    the redirect happened. Currently, the BPF program
    that was executed after a redirect via BPF_MAP_TYPE_DEVMAP*
    does not have it set.
    
    This is particularly bad since accessing ingress_ifindex, e.g.
    
    SEC("xdp")
    int prog(struct xdp_md *pkt)
    {
            return bpf_redirect_map(&dev_redirect_map, 0, 0);
    }
    
    SEC("xdp/devmap")
    int prog_after_redirect(struct xdp_md *pkt)
    {
            bpf_printk("ifindex %i", pkt->ingress_ifindex);
            return XDP_PASS;
    }
    
    depends on access to rxq, so a NULL pointer gets dereferenced:
    
    <1>[  574.475170] BUG: kernel NULL pointer dereference, address: 0000000000000000
    <1>[  574.475188] #PF: supervisor read access in kernel mode
    <1>[  574.475194] #PF: error_code(0x0000) - not-present page
    <6>[  574.475199] PGD 0 P4D 0
    <4>[  574.475207] Oops: Oops: 0000 [#1] PREEMPT SMP NOPTI
    <4>[  574.475217] CPU: 4 UID: 0 PID: 217 Comm: kworker/4:1 Not tainted 6.11.0-rc5-reduced-00859-g780801200300 #23
    <4>[  574.475226] Hardware name: Intel(R) Client Systems NUC13ANHi7/NUC13ANBi7, BIOS ANRPL357.0026.2023.0314.1458 03/14/2023
    <4>[  574.475231] Workqueue: mld mld_ifc_work
    <4>[  574.475247] RIP: 0010:bpf_prog_5e13354d9cf5018a_prog_after_redirect+0x17/0x3c
    <4>[  574.475257] Code: cc cc cc cc cc cc cc 80 00 00 00 cc cc cc cc cc cc cc cc f3 0f 1e fa 0f 1f 44 00 00 66 90 55 48 89 e5 f3 0f 1e fa 48 8b 57 20 <48> 8b 52 00 8b 92 e0 00 00 00 48 bf f8 a6 d5 c4 5d a0 ff ff be 0b
    <4>[  574.475263] RSP: 0018:ffffa62440280c98 EFLAGS: 00010206
    <4>[  574.475269] RAX: ffffa62440280cd8 RBX: 0000000000000001 RCX: 0000000000000000
    <4>[  574.475274] RDX: 0000000000000000 RSI: ffffa62440549048 RDI: ffffa62440280ce0
    <4>[  574.475278] RBP: ffffa62440280c98 R08: 0000000000000002 R09: 0000000000000001
    <4>[  574.475281] R10: ffffa05dc8b98000 R11: ffffa05f577fca40 R12: ffffa05dcab24000
    <4>[  574.475285] R13: ffffa62440280ce0 R14: ffffa62440549048 R15: ffffa62440549000
    <4>[  574.475289] FS:  0000000000000000(0000) GS:ffffa05f4f700000(0000) knlGS:0000000000000000
    <4>[  574.475294] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    <4>[  574.475298] CR2: 0000000000000000 CR3: 000000025522e000 CR4: 0000000000f50ef0
    <4>[  574.475303] PKRU: 55555554
    <4>[  574.475306] Call Trace:
    <4>[  574.475313]  <IRQ>
    <4>[  574.475318]  ? __die+0x23/0x70
    <4>[  574.475329]  ? page_fault_oops+0x180/0x4c0
    <4>[  574.475339]  ? skb_pp_cow_data+0x34c/0x490
    <4>[  574.475346]  ? kmem_cache_free+0x257/0x280
    <4>[  574.475357]  ? exc_page_fault+0x67/0x150
    <4>[  574.475368]  ? asm_exc_page_fault+0x26/0x30
    <4>[  574.475381]  ? bpf_prog_5e13354d9cf5018a_prog_after_redirect+0x17/0x3c
    <4>[  574.475386]  bq_xmit_all+0x158/0x420
    <4>[  574.475397]  __dev_flush+0x30/0x90
    <4>[  574.475407]  veth_poll+0x216/0x250 [veth]
    <4>[  574.475421]  __napi_poll+0x28/0x1c0
    <4>[  574.475430]  net_rx_action+0x32d/0x3a0
    <4>[  574.475441]  handle_softirqs+0xcb/0x2c0
    <4>[  574.475451]  do_softirq+0x40/0x60
    <4>[  574.475458]  </IRQ>
    <4>[  574.475461]  <TASK>
    <4>[  574.475464]  __local_bh_enable_ip+0x66/0x70
    <4>[  574.475471]  __dev_queue_xmit+0x268/0xe40
    <4>[  574.475480]  ? selinux_ip_postroute+0x213/0x420
    <4>[  574.475491]  ? alloc_skb_with_frags+0x4a/0x1d0
    <4>[  574.475502]  ip6_finish_output2+0x2be/0x640
    <4>[  574.475512]  ? nf_hook_slow+0x42/0xf0
    <4>[  574.475521]  ip6_finish_output+0x194/0x300
    <4>[  574.475529]  ? __pfx_ip6_finish_output+0x10/0x10
    <4>[  574.475538]  mld_sendpack+0x17c/0x240
    <4>[  574.475548]  mld_ifc_work+0x192/0x410
    <4>[  574.475557]  process_one_work+0x15d/0x380
    <4>[  574.475566]  worker_thread+0x29d/0x3a0
    <4>[  574.475573]  ? __pfx_worker_thread+0x10/0x10
    <4>[  574.475580]  ? __pfx_worker_thread+0x10/0x10
    <4>[  574.475587]  kthread+0xcd/0x100
    <4>[  574.475597]  ? __pfx_kthread+0x10/0x10
    <4>[  574.475606]  ret_from_fork+0x31/0x50
    <4>[  574.475615]  ? __pfx_kthread+0x10/0x10
    <4>[  574.475623]  ret_from_fork_asm+0x1a/0x30
    <4>[  574.475635]  </TASK>
    <4>[  574.475637] Modules linked in: veth br_netfilter bridge stp llc iwlmvm x86_pkg_temp_thermal iwlwifi efivarfs nvme nvme_core
    <4>[  574.475662] CR2: 0000000000000000
    <4>[  574.475668] ---[ end trace 0000000000000000 ]---
    
    Therefore, provide it to the program by setting rxq properly.
    
    Fixes: cb261b594b41 ("bpf: Run devmap xdp_prog on flush instead of bulk enqueue")
    Reviewed-by: Toke Høiland-Jørgensen <[email protected]>
    Signed-off-by: Florian Kauer <[email protected]>
    Acked-by: Jakub Kicinski <[email protected]>
    Link: https://lore.kernel.org/r/20240911-devel-koalo-fix-ingress-ifindex-v4-1-5c643ae10258@linutronix.de
    Signed-off-by: Martin KaFai Lau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Fix iter/task tid filtering [+ + +]
Author: Jordan Rome <[email protected]>
Date:   Wed Oct 16 14:00:47 2024 -0700

    bpf: Fix iter/task tid filtering
    
    [ Upstream commit 9495a5b731fcaf580448a3438d63601c88367661 ]
    
    In userspace, you can add a tid filter by setting
    the "task.tid" field for "bpf_iter_link_info".
    However, `get_pid_task` when called for the
    `BPF_TASK_ITER_TID` type should have been using
    `PIDTYPE_PID` (tid) instead of `PIDTYPE_TGID` (pid).
    
    Fixes: f0d74c4da1f0 ("bpf: Parameterize task iterators.")
    Signed-off-by: Jordan Rome <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

bpf: fix kfunc btf caching for modules [+ + +]
Author: Toke Høiland-Jørgensen <[email protected]>
Date:   Thu Oct 10 15:27:07 2024 +0200

    bpf: fix kfunc btf caching for modules
    
    [ Upstream commit 6cb86a0fdece87e126323ec1bb19deb16a52aedf ]
    
    The verifier contains a cache for looking up module BTF objects when
    calling kfuncs defined in modules. This cache uses a 'struct
    bpf_kfunc_btf_tab', which contains a sorted list of BTF objects that
    were already seen in the current verifier run, and the BTF objects are
    looked up by the offset stored in the relocated call instruction using
    bsearch().
    
    The first time a given offset is seen, the module BTF is loaded from the
    file descriptor passed in by libbpf, and stored into the cache. However,
    there's a bug in the code storing the new entry: it stores a pointer to
    the new cache entry, then calls sort() to keep the cache sorted for the
    next lookup using bsearch(), and then returns the entry that was just
    stored through the stored pointer. However, because sort() modifies the
    list of entries in place *by value*, the stored pointer may no longer
    point to the right entry, in which case the wrong BTF object will be
    returned.
    
    The end result of this is an intermittent bug where, if a BPF program
    calls two functions with the same signature in two different modules,
    the function from the wrong module may sometimes end up being called.
    Whether this happens depends on the order of the calls in the BPF
    program (as that affects whether sort() reorders the array of BTF
    objects), making it especially hard to track down. Simon, credited as
    reporter below, spent significant effort analysing and creating a
    reproducer for this issue. The reproducer is added as a selftest in a
    subsequent patch.
    
    The fix is straight forward: simply don't use the stored pointer after
    calling sort(). Since we already have an on-stack pointer to the BTF
    object itself at the point where the function return, just use that, and
    populate it from the cache entry in the branch where the lookup
    succeeds.
    
    Fixes: 2357672c54c3 ("bpf: Introduce BPF support for kernel module function calls")
    Reported-by: Simon Sundberg <[email protected]>
    Acked-by: Jiri Olsa <[email protected]>
    Acked-by: Kumar Kartikeya Dwivedi <[email protected]>
    Signed-off-by: Toke Høiland-Jørgensen <[email protected]>
    Link: https://lore.kernel.org/r/20241010-fix-kfunc-btf-caching-for-modules-v2-1-745af6c1af98@redhat.com
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Fix memory leak in bpf_core_apply [+ + +]
Author: Jiri Olsa <[email protected]>
Date:   Mon Oct 7 18:09:58 2024 +0200

    bpf: Fix memory leak in bpf_core_apply
    
    [ Upstream commit 45126b155e3b5201179cdc038504bf93a8ccd921 ]
    
    We need to free specs properly.
    
    Fixes: 3d2786d65aaa ("bpf: correctly handle malformed BPF_CORE_TYPE_ID_LOCAL relos")
    Signed-off-by: Jiri Olsa <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Acked-by: Eduard Zingerman <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Make sure internal and UAPI bpf_redirect flags don't overlap [+ + +]
Author: Toke Høiland-Jørgensen <[email protected]>
Date:   Fri Sep 20 14:56:24 2024 +0200

    bpf: Make sure internal and UAPI bpf_redirect flags don't overlap
    
    [ Upstream commit 09d88791c7cd888d5195c84733caf9183dcfbd16 ]
    
    The bpf_redirect_info is shared between the SKB and XDP redirect paths,
    and the two paths use the same numeric flag values in the ri->flags
    field (specifically, BPF_F_BROADCAST == BPF_F_NEXTHOP). This means that
    if skb bpf_redirect_neigh() is used with a non-NULL params argument and,
    subsequently, an XDP redirect is performed using the same
    bpf_redirect_info struct, the XDP path will get confused and end up
    crashing, which syzbot managed to trigger.
    
    With the stack-allocated bpf_redirect_info, the structure is no longer
    shared between the SKB and XDP paths, so the crash doesn't happen
    anymore. However, different code paths using identically-numbered flag
    values in the same struct field still seems like a bit of a mess, so
    this patch cleans that up by moving the flag definitions together and
    redefining the three flags in BPF_F_REDIRECT_INTERNAL to not overlap
    with the flags used for XDP. It also adds a BUILD_BUG_ON() check to make
    sure the overlap is not re-introduced by mistake.
    
    Fixes: e624d4ed4aa8 ("xdp: Extend xdp_redirect_map with broadcast support")
    Reported-by: [email protected]
    Signed-off-by: Toke Høiland-Jørgensen <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Acked-by: Daniel Borkmann <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=cca39e6e84a367a7e6f6
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Use raw_spinlock_t in ringbuf [+ + +]
Author: Wander Lairson Costa <[email protected]>
Date:   Fri Sep 20 16:06:59 2024 -0300

    bpf: Use raw_spinlock_t in ringbuf
    
    [ Upstream commit 8b62645b09f870d70c7910e7550289d444239a46 ]
    
    The function __bpf_ringbuf_reserve is invoked from a tracepoint, which
    disables preemption. Using spinlock_t in this context can lead to a
    "sleep in atomic" warning in the RT variant. This issue is illustrated
    in the example below:
    
    BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
    in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 556208, name: test_progs
    preempt_count: 1, expected: 0
    RCU nest depth: 1, expected: 1
    INFO: lockdep is turned off.
    Preemption disabled at:
    [<ffffd33a5c88ea44>] migrate_enable+0xc0/0x39c
    CPU: 7 PID: 556208 Comm: test_progs Tainted: G
    Hardware name: Qualcomm SA8775P Ride (DT)
    Call trace:
     dump_backtrace+0xac/0x130
     show_stack+0x1c/0x30
     dump_stack_lvl+0xac/0xe8
     dump_stack+0x18/0x30
     __might_resched+0x3bc/0x4fc
     rt_spin_lock+0x8c/0x1a4
     __bpf_ringbuf_reserve+0xc4/0x254
     bpf_ringbuf_reserve_dynptr+0x5c/0xdc
     bpf_prog_ac3d15160d62622a_test_read_write+0x104/0x238
     trace_call_bpf+0x238/0x774
     perf_call_bpf_enter.isra.0+0x104/0x194
     perf_syscall_enter+0x2f8/0x510
     trace_sys_enter+0x39c/0x564
     syscall_trace_enter+0x220/0x3c0
     do_el0_svc+0x138/0x1dc
     el0_svc+0x54/0x130
     el0t_64_sync_handler+0x134/0x150
     el0t_64_sync+0x17c/0x180
    
    Switch the spinlock to raw_spinlock_t to avoid this error.
    
    Fixes: 457f44363a88 ("bpf: Implement BPF ring buffer and verifier support for it")
    Reported-by: Brian Grech <[email protected]>
    Signed-off-by: Wander Lairson Costa <[email protected]>
    Signed-off-by: Wander Lairson Costa <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Acked-by: Daniel Borkmann <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
 
btrfs: fix passing 0 to ERR_PTR in btrfs_search_dir_index_item() [+ + +]
Author: Yue Haibing <[email protected]>
Date:   Tue Oct 22 17:52:08 2024 +0800

    btrfs: fix passing 0 to ERR_PTR in btrfs_search_dir_index_item()
    
    commit 75f49c3dc7b7423d3734f2e4dabe3dac8d064338 upstream.
    
    The ret may be zero in btrfs_search_dir_index_item() and should not
    passed to ERR_PTR(). Now btrfs_unlink_subvol() is the only caller to
    this, reconstructed it to check ERR_PTR(-ENOENT) while ret >= 0.
    
    This fixes smatch warnings:
    
    fs/btrfs/dir-item.c:353
      btrfs_search_dir_index_item() warn: passing zero to 'ERR_PTR'
    
    Fixes: 9dcbe16fccbb ("btrfs: use btrfs_for_each_slot in btrfs_search_dir_index_item")
    CC: [email protected] # 6.1+
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Signed-off-by: Yue Haibing <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

btrfs: zoned: fix zone unusable accounting for freed reserved extent [+ + +]
Author: Naohiro Aota <[email protected]>
Date:   Tue Oct 1 17:03:32 2024 +0900

    btrfs: zoned: fix zone unusable accounting for freed reserved extent
    
    commit bf9821ba4792a0d9a2e72803ae7b4341faf3d532 upstream.
    
    When btrfs reserves an extent and does not use it (e.g, by an error), it
    calls btrfs_free_reserved_extent() to free the reserved extent. In the
    process, it calls btrfs_add_free_space() and then it accounts the region
    bytes as block_group->zone_unusable.
    
    However, it leaves the space_info->bytes_zone_unusable side not updated. As
    a result, ENOSPC can happen while a space_info reservation succeeded. The
    reservation is fine because the freed region is not added in
    space_info->bytes_zone_unusable, leaving that space as "free". OTOH,
    corresponding block group counts it as zone_unusable and its allocation
    pointer is not rewound, we cannot allocate an extent from that block group.
    That will also negate space_info's async/sync reclaim process, and cause an
    ENOSPC error from the extent allocation process.
    
    Fix that by returning the space to space_info->bytes_zone_unusable.
    Ideally, since a bio is not submitted for this reserved region, we should
    return the space to free space and rewind the allocation pointer. But, it
    needs rework on extent allocation handling, so let it work in this way for
    now.
    
    Fixes: 169e0da91a21 ("btrfs: zoned: track unusable bytes for zones")
    CC: [email protected] # 5.15+
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Signed-off-by: Naohiro Aota <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
cpufreq/cppc: Move and rename cppc_cpufreq_{perf_to_khz|khz_to_perf}() [+ + +]
Author: Vincent Guittot <[email protected]>
Date:   Mon Dec 11 11:48:53 2023 +0100

    cpufreq/cppc: Move and rename cppc_cpufreq_{perf_to_khz|khz_to_perf}()
    
    [ Upstream commit 50b813b147e9eb6546a1fc49d4e703e6d23691f2 ]
    
    Move and rename cppc_cpufreq_perf_to_khz() and cppc_cpufreq_khz_to_perf() to
    use them outside cppc_cpufreq in topology_init_cpu_capacity_cppc().
    
    Modify the interface to use struct cppc_perf_caps *caps instead of
    struct cppc_cpudata *cpu_data as we only use the fields of cppc_perf_caps.
    
    cppc_cpufreq was converting the lowest and nominal freq from MHz to kHz
    before using them. We move this conversion inside cppc_perf_to_khz and
    cppc_khz_to_perf to make them generic and usable outside cppc_cpufreq.
    
    No functional change
    
    Signed-off-by: Vincent Guittot <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Tested-by: Pierre Gondois <[email protected]>
    Acked-by: Rafael J. Wysocki <[email protected]>
    Acked-by: Viresh Kumar <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: d93df29bdab1 ("cpufreq: CPPC: fix perf_to_khz/khz_to_perf conversion exception")
    Signed-off-by: Sasha Levin <[email protected]>

 
cpufreq: CPPC: fix perf_to_khz/khz_to_perf conversion exception [+ + +]
Author: liwei <[email protected]>
Date:   Thu Oct 24 10:29:52 2024 +0800

    cpufreq: CPPC: fix perf_to_khz/khz_to_perf conversion exception
    
    [ Upstream commit d93df29bdab133b85e94b3c328e7fe26a0ebd56c ]
    
    When the nominal_freq recorded by the kernel is equal to the lowest_freq,
    and the frequency adjustment operation is triggered externally, there is
    a logic error in cppc_perf_to_khz()/cppc_khz_to_perf(), resulting in perf
    and khz conversion errors.
    
    Fix this by adding a branch processing logic when nominal_freq is equal
    to lowest_freq.
    
    Fixes: ec1c7ad47664 ("cpufreq: CPPC: Fix performance/frequency conversion")
    Signed-off-by: liwei <[email protected]>
    Acked-by: Viresh Kumar <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Subject and changelog edits ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
docs: net: reformat driver.rst from a list to sections [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Thu Apr 6 18:25:30 2023 -0700

    docs: net: reformat driver.rst from a list to sections
    
    [ Upstream commit d2f5c68e3f7157e874a759e382a5eaffa775b869 ]
    
    driver.rst had a historical form of list of common problems.
    In the age os Sphinx and rendered documentation it's better
    to use the more usual title + text format.
    
    This will allow us to render kdoc into the output more naturally.
    
    No changes to the actual text.
    
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 95ecba62e2fd ("net: fix races in netdev_tx_sent_queue()/dev_watchdog()")
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/amdgpu: Fix double unlock in amdgpu_mes_add_ring [+ + +]
Author: Srinivasan Shanmugam <[email protected]>
Date:   Tue Oct 8 19:01:48 2024 +0530

    drm/amd/amdgpu: Fix double unlock in amdgpu_mes_add_ring
    
    [ Upstream commit e7457532cb7167516263150ceae86f36d6ef9683 ]
    
    This patch addresses a double unlock issue in the amdgpu_mes_add_ring
    function. The mutex was being unlocked twice under certain error
    conditions, which could lead to undefined behavior.
    
    The fix ensures that the mutex is unlocked only once before jumping to
    the clean_up_memory label. The unlock operation is moved to just before
    the goto statement within the conditional block that checks the return
    value of amdgpu_ring_init. This prevents the second unlock attempt after
    the clean_up_memory label, which is no longer necessary as the mutex is
    already unlocked by this point in the code flow.
    
    This change resolves the potential double unlock and maintains the
    correct mutex handling throughout the function.
    
    Fixes below:
    Commit d0c423b64765 ("drm/amdgpu/mes: use ring for kernel queue
    submission"), leads to the following Smatch static checker warning:
    
            drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c:1240 amdgpu_mes_add_ring()
            warn: double unlock '&adev->mes.mutex_hidden' (orig line 1213)
    
    drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
        1143 int amdgpu_mes_add_ring(struct amdgpu_device *adev, int gang_id,
        1144                         int queue_type, int idx,
        1145                         struct amdgpu_mes_ctx_data *ctx_data,
        1146                         struct amdgpu_ring **out)
        1147 {
        1148         struct amdgpu_ring *ring;
        1149         struct amdgpu_mes_gang *gang;
        1150         struct amdgpu_mes_queue_properties qprops = {0};
        1151         int r, queue_id, pasid;
        1152
        1153         /*
        1154          * Avoid taking any other locks under MES lock to avoid circular
        1155          * lock dependencies.
        1156          */
        1157         amdgpu_mes_lock(&adev->mes);
        1158         gang = idr_find(&adev->mes.gang_id_idr, gang_id);
        1159         if (!gang) {
        1160                 DRM_ERROR("gang id %d doesn't exist\n", gang_id);
        1161                 amdgpu_mes_unlock(&adev->mes);
        1162                 return -EINVAL;
        1163         }
        1164         pasid = gang->process->pasid;
        1165
        1166         ring = kzalloc(sizeof(struct amdgpu_ring), GFP_KERNEL);
        1167         if (!ring) {
        1168                 amdgpu_mes_unlock(&adev->mes);
        1169                 return -ENOMEM;
        1170         }
        1171
        1172         ring->ring_obj = NULL;
        1173         ring->use_doorbell = true;
        1174         ring->is_mes_queue = true;
        1175         ring->mes_ctx = ctx_data;
        1176         ring->idx = idx;
        1177         ring->no_scheduler = true;
        1178
        1179         if (queue_type == AMDGPU_RING_TYPE_COMPUTE) {
        1180                 int offset = offsetof(struct amdgpu_mes_ctx_meta_data,
        1181                                       compute[ring->idx].mec_hpd);
        1182                 ring->eop_gpu_addr =
        1183                         amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset);
        1184         }
        1185
        1186         switch (queue_type) {
        1187         case AMDGPU_RING_TYPE_GFX:
        1188                 ring->funcs = adev->gfx.gfx_ring[0].funcs;
        1189                 ring->me = adev->gfx.gfx_ring[0].me;
        1190                 ring->pipe = adev->gfx.gfx_ring[0].pipe;
        1191                 break;
        1192         case AMDGPU_RING_TYPE_COMPUTE:
        1193                 ring->funcs = adev->gfx.compute_ring[0].funcs;
        1194                 ring->me = adev->gfx.compute_ring[0].me;
        1195                 ring->pipe = adev->gfx.compute_ring[0].pipe;
        1196                 break;
        1197         case AMDGPU_RING_TYPE_SDMA:
        1198                 ring->funcs = adev->sdma.instance[0].ring.funcs;
        1199                 break;
        1200         default:
        1201                 BUG();
        1202         }
        1203
        1204         r = amdgpu_ring_init(adev, ring, 1024, NULL, 0,
        1205                              AMDGPU_RING_PRIO_DEFAULT, NULL);
        1206         if (r)
        1207                 goto clean_up_memory;
        1208
        1209         amdgpu_mes_ring_to_queue_props(adev, ring, &qprops);
        1210
        1211         dma_fence_wait(gang->process->vm->last_update, false);
        1212         dma_fence_wait(ctx_data->meta_data_va->last_pt_update, false);
        1213         amdgpu_mes_unlock(&adev->mes);
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    
        1214
        1215         r = amdgpu_mes_add_hw_queue(adev, gang_id, &qprops, &queue_id);
        1216         if (r)
        1217                 goto clean_up_ring;
                             ^^^^^^^^^^^^^^^^^^
    
        1218
        1219         ring->hw_queue_id = queue_id;
        1220         ring->doorbell_index = qprops.doorbell_off;
        1221
        1222         if (queue_type == AMDGPU_RING_TYPE_GFX)
        1223                 sprintf(ring->name, "gfx_%d.%d.%d", pasid, gang_id, queue_id);
        1224         else if (queue_type == AMDGPU_RING_TYPE_COMPUTE)
        1225                 sprintf(ring->name, "compute_%d.%d.%d", pasid, gang_id,
        1226                         queue_id);
        1227         else if (queue_type == AMDGPU_RING_TYPE_SDMA)
        1228                 sprintf(ring->name, "sdma_%d.%d.%d", pasid, gang_id,
        1229                         queue_id);
        1230         else
        1231                 BUG();
        1232
        1233         *out = ring;
        1234         return 0;
        1235
        1236 clean_up_ring:
        1237         amdgpu_ring_fini(ring);
        1238 clean_up_memory:
        1239         kfree(ring);
    --> 1240         amdgpu_mes_unlock(&adev->mes);
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    
        1241         return r;
        1242 }
    
    Fixes: d0c423b64765 ("drm/amdgpu/mes: use ring for kernel queue submission")
    Cc: Christian König <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Cc: Hawking Zhang <[email protected]>
    Suggested-by: Jack Xiao <[email protected]>
    Reported by: Dan Carpenter <[email protected]>
    Signed-off-by: Srinivasan Shanmugam <[email protected]>
    Reviewed-by: Jack Xiao <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit bfaf1883605fd0c0dbabacd67ed49708470d5ea4)
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/display: Disable PSR-SU on Parade 08-01 TCON too [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Mon Feb 5 15:12:33 2024 -0600

    drm/amd/display: Disable PSR-SU on Parade 08-01 TCON too
    
    commit ba1959f71117b27f3099ee789e0815360b4081dd upstream.
    
    Stuart Hayhurst has found that both at bootup and fullscreen VA-API video
    is leading to black screens for around 1 second and kernel WARNING [1] traces
    when calling dmub_psr_enable() with Parade 08-01 TCON.
    
    These symptoms all go away with PSR-SU disabled for this TCON, so disable
    it for now while DMUB traces [2] from the failure can be analyzed and the failure
    state properly root caused.
    
    Cc: Marc Rossi <[email protected]>
    Cc: Hamza Mahfooz <[email protected]>
    Link: https://gitlab.freedesktop.org/drm/amd/uploads/a832dd515b571ee171b3e3b566e99a13/dmesg.log [1]
    Link: https://gitlab.freedesktop.org/drm/amd/uploads/8f13ff3b00963c833e23e68aa8116959/output.log [2]
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/2645
    Reviewed-by: Leo Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mario Limonciello <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit afb634a6823d8d9db23c5fb04f79c5549349628b)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/amd: Guard against bad data for ATIF ACPI method [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Fri Oct 11 12:23:15 2024 -0500

    drm/amd: Guard against bad data for ATIF ACPI method
    
    commit bf58f03931fdcf7b3c45cb76ac13244477a60f44 upstream.
    
    If a BIOS provides bad data in response to an ATIF method call
    this causes a NULL pointer dereference in the caller.
    
    ```
    ? show_regs (arch/x86/kernel/dumpstack.c:478 (discriminator 1))
    ? __die (arch/x86/kernel/dumpstack.c:423 arch/x86/kernel/dumpstack.c:434)
    ? page_fault_oops (arch/x86/mm/fault.c:544 (discriminator 2) arch/x86/mm/fault.c:705 (discriminator 2))
    ? do_user_addr_fault (arch/x86/mm/fault.c:440 (discriminator 1) arch/x86/mm/fault.c:1232 (discriminator 1))
    ? acpi_ut_update_object_reference (drivers/acpi/acpica/utdelete.c:642)
    ? exc_page_fault (arch/x86/mm/fault.c:1542)
    ? asm_exc_page_fault (./arch/x86/include/asm/idtentry.h:623)
    ? amdgpu_atif_query_backlight_caps.constprop.0 (drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c:387 (discriminator 2)) amdgpu
    ? amdgpu_atif_query_backlight_caps.constprop.0 (drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c:386 (discriminator 1)) amdgpu
    ```
    
    It has been encountered on at least one system, so guard for it.
    
    Fixes: d38ceaf99ed0 ("drm/amdgpu: add core driver (v4)")
    Acked-by: Alex Deucher <[email protected]>
    Signed-off-by: Mario Limonciello <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit c9b7c809b89f24e9372a4e7f02d64c950b07fdee)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/msm/dpu: don't always program merge_3d block [+ + +]
Author: Jessica Zhang <[email protected]>
Date:   Wed Oct 9 20:46:19 2024 -0700

    drm/msm/dpu: don't always program merge_3d block
    
    [ Upstream commit f87f3b80abaf7949e638dd17dfdc267066eb52d5 ]
    
    Only program the merge_3d block for the video phys encoder when the 3d
    blend mode is not NONE
    
    Fixes: 3e79527a33a8 ("drm/msm/dpu: enable merge_3d support on sm8150/sm8250")
    Suggested-by: Abhinav Kumar <[email protected]>
    Signed-off-by: Jessica Zhang <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/619095/
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Abhinav Kumar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/msm/dpu: make sure phys resources are properly initialized [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Sep 3 06:22:44 2024 +0300

    drm/msm/dpu: make sure phys resources are properly initialized
    
    [ Upstream commit bfecbc2cfba9b06d67d9d249c33d92e570e2fa70 ]
    
    The commit b954fa6baaca ("drm/msm/dpu: Refactor rm iterator") removed
    zero-init of the hw_ctl array, but didn't change the error condition,
    that checked for hw_ctl[i] being NULL. At the same time because of the
    early returns in case of an error dpu_encoder_phys might be left with
    the resources assigned in the previous state. Rework assigning of hw_pp
    / hw_ctl to the dpu_encoder_phys in order to make sure they are always
    set correctly.
    
    Fixes: b954fa6baaca ("drm/msm/dpu: Refactor rm iterator")
    Suggested-by: Abhinav Kumar <[email protected]>
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: Abhinav Kumar <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/612233/
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Abhinav Kumar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/msm/dpu: Wire up DSC mask for active CTL configuration [+ + +]
Author: Marijn Suijten <[email protected]>
Date:   Thu Dec 22 00:19:36 2022 +0100

    drm/msm/dpu: Wire up DSC mask for active CTL configuration
    
    [ Upstream commit cda3774c242e156cdcc279bd36b404af89f744c6 ]
    
    Active CTLs have to configure what DSC block(s) have to be enabled, and
    what DSC block(s) have to be flushed; this value was initialized to zero
    resulting in the necessary register writes to never happen (or would
    write zero otherwise).  This seems to have gotten lost in the DSC v4->v5
    series while refactoring how the combination with merge_3d was handled.
    
    Fixes: 58dca9810749 ("drm/msm/disp/dpu1: Add support for DSC in encoder")
    Signed-off-by: Marijn Suijten <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/515693/
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Stable-dep-of: f87f3b80abaf ("drm/msm/dpu: don't always program merge_3d block")
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/msm/dsi: fix 32-bit signed integer extension in pclk_rate calculation [+ + +]
Author: Jonathan Marek <[email protected]>
Date:   Mon Oct 7 01:01:49 2024 -0400

    drm/msm/dsi: fix 32-bit signed integer extension in pclk_rate calculation
    
    [ Upstream commit 358b762400bd94db2a14a72dfcef74c7da6bd845 ]
    
    When (mode->clock * 1000) is larger than (1<<31), int to unsigned long
    conversion will sign extend the int to 64 bits and the pclk_rate value
    will be incorrect.
    
    Fix this by making the result of the multiplication unsigned.
    
    Note that above (1<<32) would still be broken and require more changes, but
    its unlikely anyone will need that anytime soon.
    
    Fixes: c4d8cfe516dc ("drm/msm/dsi: add implementation for helper functions")
    Signed-off-by: Jonathan Marek <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: Abhinav Kumar <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/618434/
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Abhinav Kumar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/msm: Allocate memory for disp snapshot with kvzalloc() [+ + +]
Author: Douglas Anderson <[email protected]>
Date:   Mon Oct 14 09:36:09 2024 -0700

    drm/msm: Allocate memory for disp snapshot with kvzalloc()
    
    [ Upstream commit e4a45582db1b792c57bdb52c45958264f7fcfbdc ]
    
    With the "drm/msm: add a display mmu fault handler" series [1] we saw
    issues in the field where memory allocation was failing when
    allocating space for registers in msm_disp_state_dump_regs().
    Specifically we were seeing an order 5 allocation fail. It's not
    surprising that order 5 allocations will sometimes fail after the
    system has been up and running for a while.
    
    There's no need here for contiguous memory. Change the allocation to
    kvzalloc() which should make it much less likely to fail.
    
    [1] https://lore.kernel.org/r/[email protected]/
    
    Fixes: 98659487b845 ("drm/msm: add support to take dpu snapshot")
    Signed-off-by: Douglas Anderson <[email protected]>
    Reviewed-by: Abhinav Kumar <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/619658/
    Link: https://lore.kernel.org/r/20241014093605.2.I72441365ffe91f3dceb17db0a8ec976af8139590@changeid
    Signed-off-by: Abhinav Kumar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/msm: Avoid NULL dereference in msm_disp_state_print_regs() [+ + +]
Author: Douglas Anderson <[email protected]>
Date:   Mon Oct 14 09:36:08 2024 -0700

    drm/msm: Avoid NULL dereference in msm_disp_state_print_regs()
    
    [ Upstream commit 293f53263266bc4340d777268ab4328a97f041fa ]
    
    If the allocation in msm_disp_state_dump_regs() failed then
    `block->state` can be NULL. The msm_disp_state_print_regs() function
    _does_ have code to try to handle it with:
    
      if (*reg)
        dump_addr = *reg;
    
    ...but since "dump_addr" is initialized to NULL the above is actually
    a noop. The code then goes on to dereference `dump_addr`.
    
    Make the function print "Registers not stored" when it sees a NULL to
    solve this. Since we're touching the code, fix
    msm_disp_state_print_regs() not to pointlessly take a double-pointer
    and properly mark the pointer as `const`.
    
    Fixes: 98659487b845 ("drm/msm: add support to take dpu snapshot")
    Signed-off-by: Douglas Anderson <[email protected]>
    Reviewed-by: Abhinav Kumar <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/619657/
    Link: https://lore.kernel.org/r/20241014093605.1.Ia1217cecec9ef09eb3c6d125360cc6c8574b0e73@changeid
    Signed-off-by: Abhinav Kumar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/vboxvideo: Replace fake VLA at end of vbva_mouse_pointer_shape with real VLA [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Tue Aug 27 12:45:23 2024 +0200

    drm/vboxvideo: Replace fake VLA at end of vbva_mouse_pointer_shape with real VLA
    
    [ Upstream commit d92b90f9a54d9300a6e883258e79f36dab53bfae ]
    
    Replace the fake VLA at end of the vbva_mouse_pointer_shape shape with
    a real VLA to fix a "memcpy: detected field-spanning write error" warning:
    
    [   13.319813] memcpy: detected field-spanning write (size 16896) of single field "p->data" at drivers/gpu/drm/vboxvideo/hgsmi_base.c:154 (size 4)
    [   13.319841] WARNING: CPU: 0 PID: 1105 at drivers/gpu/drm/vboxvideo/hgsmi_base.c:154 hgsmi_update_pointer_shape+0x192/0x1c0 [vboxvideo]
    [   13.320038] Call Trace:
    [   13.320173]  hgsmi_update_pointer_shape [vboxvideo]
    [   13.320184]  vbox_cursor_atomic_update [vboxvideo]
    
    Note as mentioned in the added comment it seems the original length
    calculation for the allocated and send hgsmi buffer is 4 bytes too large.
    Changing this is not the goal of this patch, so this behavior is kept.
    
    Signed-off-by: Hans de Goede <[email protected]>
    Reviewed-by: Jani Nikula <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/vmwgfx: Handle possible ENOMEM in vmw_stdu_connector_atomic_check [+ + +]
Author: Ian Forbes <[email protected]>
Date:   Fri Aug 9 13:37:56 2024 -0500

    drm/vmwgfx: Handle possible ENOMEM in vmw_stdu_connector_atomic_check
    
    [ Upstream commit 4809a017a2bc42ff239d53ade4b2e70f2fe81348 ]
    
    Handle unlikely ENOMEN condition and other errors in
    vmw_stdu_connector_atomic_check.
    
    Signed-off-by: Ian Forbes <[email protected]>
    Reported-by: Dan Carpenter <[email protected]>
    Fixes: 75c3e8a26a35 ("drm/vmwgfx: Trigger a modeset when the screen moves")
    Reviewed-by: Zack Rusin <[email protected]>
    Reviewed-by: Martin Krastev <[email protected]>
    Signed-off-by: Zack Rusin <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
exec: don't WARN for racy path_noexec check [+ + +]
Author: Mateusz Guzik <[email protected]>
Date:   Tue Oct 22 15:45:25 2024 -0300

    exec: don't WARN for racy path_noexec check
    
    [ Upstream commit 0d196e7589cefe207d5d41f37a0a28a1fdeeb7c6 ]
    
    Both i_mode and noexec checks wrapped in WARN_ON stem from an artifact
    of the previous implementation. They used to legitimately check for the
    condition, but that got moved up in two commits:
    633fb6ac3980 ("exec: move S_ISREG() check earlier")
    0fd338b2d2cd ("exec: move path_noexec() check earlier")
    
    Instead of being removed said checks are WARN_ON'ed instead, which
    has some debug value.
    
    However, the spurious path_noexec check is racy, resulting in
    unwarranted warnings should someone race with setting the noexec flag.
    
    One can note there is more to perm-checking whether execve is allowed
    and none of the conditions are guaranteed to still hold after they were
    tested for.
    
    Additionally this does not validate whether the code path did any perm
    checking to begin with -- it will pass if the inode happens to be
    regular.
    
    Keep the redundant path_noexec() check even though it's mindless
    nonsense checking for guarantee that isn't given so drop the WARN.
    
    Reword the commentary and do small tidy ups while here.
    
    Signed-off-by: Mateusz Guzik <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [brauner: keep redundant path_noexec() check]
    Signed-off-by: Christian Brauner <[email protected]>
    [cascardo: keep exit label and use it]
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs/ntfs3: Add more attributes checks in mi_enum_attr() [+ + +]
Author: Konstantin Komarov <[email protected]>
Date:   Tue Oct 22 16:53:50 2024 +0800

    fs/ntfs3: Add more attributes checks in mi_enum_attr()
    
    [ Upstream commit 013ff63b649475f0ee134e2c8d0c8e65284ede50 ]
    
    Signed-off-by: Konstantin Komarov <[email protected]>
    CVE: CVE-2023-45896
    Signed-off-by: Xiangyu Chen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
genetlink: hold RCU in genlmsg_mcast() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Oct 11 17:12:17 2024 +0000

    genetlink: hold RCU in genlmsg_mcast()
    
    [ Upstream commit 56440d7ec28d60f8da3bfa09062b3368ff9b16db ]
    
    While running net selftests with CONFIG_PROVE_RCU_LIST=y I saw
    one lockdep splat [1].
    
    genlmsg_mcast() uses for_each_net_rcu(), and must therefore hold RCU.
    
    Instead of letting all callers guard genlmsg_multicast_allns()
    with a rcu_read_lock()/rcu_read_unlock() pair, do it in genlmsg_mcast().
    
    This also means the @flags parameter is useless, we need to always use
    GFP_ATOMIC.
    
    [1]
    [10882.424136] =============================
    [10882.424166] WARNING: suspicious RCU usage
    [10882.424309] 6.12.0-rc2-virtme #1156 Not tainted
    [10882.424400] -----------------------------
    [10882.424423] net/netlink/genetlink.c:1940 RCU-list traversed in non-reader section!!
    [10882.424469]
    other info that might help us debug this:
    
    [10882.424500]
    rcu_scheduler_active = 2, debug_locks = 1
    [10882.424744] 2 locks held by ip/15677:
    [10882.424791] #0: ffffffffb6b491b0 (cb_lock){++++}-{3:3}, at: genl_rcv (net/netlink/genetlink.c:1219)
    [10882.426334] #1: ffffffffb6b49248 (genl_mutex){+.+.}-{3:3}, at: genl_rcv_msg (net/netlink/genetlink.c:61 net/netlink/genetlink.c:57 net/netlink/genetlink.c:1209)
    [10882.426465]
    stack backtrace:
    [10882.426805] CPU: 14 UID: 0 PID: 15677 Comm: ip Not tainted 6.12.0-rc2-virtme #1156
    [10882.426919] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [10882.427046] Call Trace:
    [10882.427131]  <TASK>
    [10882.427244] dump_stack_lvl (lib/dump_stack.c:123)
    [10882.427335] lockdep_rcu_suspicious (kernel/locking/lockdep.c:6822)
    [10882.427387] genlmsg_multicast_allns (net/netlink/genetlink.c:1940 (discriminator 7) net/netlink/genetlink.c:1977 (discriminator 7))
    [10882.427436] l2tp_tunnel_notify.constprop.0 (net/l2tp/l2tp_netlink.c:119) l2tp_netlink
    [10882.427683] l2tp_nl_cmd_tunnel_create (net/l2tp/l2tp_netlink.c:253) l2tp_netlink
    [10882.427748] genl_family_rcv_msg_doit (net/netlink/genetlink.c:1115)
    [10882.427834] genl_rcv_msg (net/netlink/genetlink.c:1195 net/netlink/genetlink.c:1210)
    [10882.427877] ? __pfx_l2tp_nl_cmd_tunnel_create (net/l2tp/l2tp_netlink.c:186) l2tp_netlink
    [10882.427927] ? __pfx_genl_rcv_msg (net/netlink/genetlink.c:1201)
    [10882.427959] netlink_rcv_skb (net/netlink/af_netlink.c:2551)
    [10882.428069] genl_rcv (net/netlink/genetlink.c:1220)
    [10882.428095] netlink_unicast (net/netlink/af_netlink.c:1332 net/netlink/af_netlink.c:1357)
    [10882.428140] netlink_sendmsg (net/netlink/af_netlink.c:1901)
    [10882.428210] ____sys_sendmsg (net/socket.c:729 (discriminator 1) net/socket.c:744 (discriminator 1) net/socket.c:2607 (discriminator 1))
    
    Fixes: 33f72e6f0c67 ("l2tp : multicast notification to the registered listeners")
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: James Chapman <[email protected]>
    Cc: Tom Parkin <[email protected]>
    Cc: Johannes Berg <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
hv_netvsc: Fix VF namespace also in synthetic NIC NETDEV_REGISTER event [+ + +]
Author: Haiyang Zhang <[email protected]>
Date:   Fri Oct 18 11:25:22 2024 -0700

    hv_netvsc: Fix VF namespace also in synthetic NIC NETDEV_REGISTER event
    
    commit 4c262801ea60c518b5bebc22a09f5b78b3147da2 upstream.
    
    The existing code moves VF to the same namespace as the synthetic NIC
    during netvsc_register_vf(). But, if the synthetic device is moved to a
    new namespace after the VF registration, the VF won't be moved together.
    
    To make the behavior more consistent, add a namespace check for synthetic
    NIC's NETDEV_REGISTER event (generated during its move), and move the VF
    if it is not in the same namespace.
    
    Cc: [email protected]
    Fixes: c0a41b887ce6 ("hv_netvsc: move VF to same namespace as netvsc device")
    Suggested-by: Stephen Hemminger <[email protected]>
    Signed-off-by: Haiyang Zhang <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
iio: accel: bma400: Fix uninitialized variable field_value in tap event handling. [+ + +]
Author: Mikhail Lobanov <[email protected]>
Date:   Tue Sep 10 04:36:20 2024 -0400

    iio: accel: bma400: Fix uninitialized variable field_value in tap event handling.
    
    [ Upstream commit db9795a43dc944f048a37b65e06707f60f713e34 ]
    
    In the current implementation, the local variable field_value is used
    without prior initialization, which may lead to reading uninitialized
    memory. Specifically, in the macro set_mask_bits, the initial
    (potentially uninitialized) value of the buffer is copied into old__,
    and a mask is applied to calculate new__. A similar issue was resolved in
    commit 6ee2a7058fea ("iio: accel: bma400: Fix smatch warning based on use
    of unintialized value.").
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 961db2da159d ("iio: accel: bma400: Add support for single and double tap events")
    Signed-off-by: Mikhail Lobanov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: frequency: admv4420: fix missing select REMAP_SPI in Kconfig [+ + +]
Author: Javier Carrasco <[email protected]>
Date:   Mon Oct 7 22:06:39 2024 +0200

    iio: frequency: admv4420: fix missing select REMAP_SPI in Kconfig
    
    [ Upstream commit 6b8e9dbfaed471627f7b863633b9937717df1d4d ]
    
    This driver makes use of regmap_spi, but does not select the required
    module.
    Add the missing 'select REGMAP_SPI'.
    
    Fixes: b59c04155901 ("iio: frequency: admv4420.c: Add support for ADMV4420")
    Signed-off-by: Javier Carrasco <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: frequency: {admv4420,adrf6780}: format Kconfig entries [+ + +]
Author: Javier Carrasco <[email protected]>
Date:   Mon Oct 7 22:06:38 2024 +0200

    iio: frequency: {admv4420,adrf6780}: format Kconfig entries
    
    [ Upstream commit 5c9644a683e1690387a476a4f5f6bd5cf9a1d695 ]
    
    Format the entries of these drivers in the Kconfig, where spaces
    instead of tabs were used.
    
    Signed-off-by: Javier Carrasco <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Stable-dep-of: 6b8e9dbfaed4 ("iio: frequency: admv4420: fix missing select REMAP_SPI in Kconfig")
    Signed-off-by: Sasha Levin <[email protected]>

 
ipv4: give an IPv4 dev to blackhole_netdev [+ + +]
Author: Xin Long <[email protected]>
Date:   Wed Oct 9 14:47:13 2024 -0400

    ipv4: give an IPv4 dev to blackhole_netdev
    
    [ Upstream commit 22600596b6756b166fd052d5facb66287e6f0bad ]
    
    After commit 8d7017fd621d ("blackhole_netdev: use blackhole_netdev to
    invalidate dst entries"), blackhole_netdev was introduced to invalidate
    dst cache entries on the TX path whenever the cache times out or is
    flushed.
    
    When two UDP sockets (sk1 and sk2) send messages to the same destination
    simultaneously, they are using the same dst cache. If the dst cache is
    invalidated on one path (sk2) while the other (sk1) is still transmitting,
    sk1 may try to use the invalid dst entry.
    
             CPU1                   CPU2
    
          udp_sendmsg(sk1)       udp_sendmsg(sk2)
          udp_send_skb()
          ip_output()
                                                 <--- dst timeout or flushed
                                 dst_dev_put()
          ip_finish_output2()
          ip_neigh_for_gw()
    
    This results in a scenario where ip_neigh_for_gw() returns -EINVAL because
    blackhole_dev lacks an in_dev, which is needed to initialize the neigh in
    arp_constructor(). This error is then propagated back to userspace,
    breaking the UDP application.
    
    The patch fixes this issue by assigning an in_dev to blackhole_dev for
    IPv4, similar to what was done for IPv6 in commit e5f80fcf869a ("ipv6:
    give an IPv6 dev to blackhole_netdev"). This ensures that even when the
    dst entry is invalidated with blackhole_dev, it will not fail to create
    the neigh entry.
    
    As devinet_init() is called ealier than blackhole_netdev_init() in system
    booting, it can not assign the in_dev to blackhole_dev in devinet_init().
    As Paolo suggested, add a separate late_initcall() in devinet.c to ensure
    inet_blackhole_dev_init() is called after blackhole_netdev_init().
    
    Fixes: 8d7017fd621d ("blackhole_netdev: use blackhole_netdev to invalidate dst entries")
    Signed-off-by: Xin Long <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/3000792d45ca44e16c785ebe2b092e610e5b3df1.1728499633.git.lucien.xin@gmail.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
irqchip/renesas-rzg2l: Add support for suspend to RAM [+ + +]
Author: Claudiu Beznea <[email protected]>
Date:   Mon Nov 20 13:18:18 2023 +0200

    irqchip/renesas-rzg2l: Add support for suspend to RAM
    
    [ Upstream commit 74d2ef5f6f4b2437e6292ab2502400e8048db4aa ]
    
    The irqchip-renesas-rzg2l driver is used on RZ/G3S SoC. RZ/G3S can go into
    deep sleep states where power to different SoC's parts is cut off and RAM
    is switched to self-refresh. The resume from these states is done with the
    help of the bootloader.
    
    The IA55 IRQ controller needs to be reconfigured when resuming from deep
    sleep state. For this the IA55 registers are cached in suspend and restored
    in resume.
    
    The IA55 IRQ controller is connected to GPIO controller and GIC as follows:
    
                                          ┌──────────┐          ┌──────────┐
                                          │          │ SPIX     │          │
                                          │          ├─────────►│          │
                                          │          │          │          │
                                          │          │          │          │
                  ┌────────┐IRQ0-7        │  IA55    │          │  GIC     │
     Pin0 ───────►│        ├─────────────►│          │          │          │
                  │        │              │          │ PPIY     │          │
     ...          │  GPIO  │              │          ├─────────►│          │
                  │        │GPIOINT0-127  │          │          │          │
     PinN ───────►│        ├─────────────►│          │          │          │
                  └────────┘              └──────────┘          └──────────┘
    
    where:
      - Pin0 is the first GPIO controller pin
      - PinN is the last GPIO controller pin
    
      - SPIX is the SPI interrupt with identifier X
      - PPIY is the PPI interrupt with identifier Y
    
    Implement suspend/resume functionality with syscore_ops to be able to
    cache/restore the registers after/before the GPIO controller suspend/resume
    functions are invoked.
    
    As the syscore_ops suspend/resume functions do not take any argument make
    the driver private data static so it can be accessed from the
    suspend/resume functions.
    
    The IA55 interrupt controller is resumed before the GPIO controller. As
    GPIO pins could be in an a state which causes spurious interrupts, the
    reconfiguration of the interrupt controller is restricted to restore the
    interrupt type and leave them disabled.
    
    An eventually required interrupt enable operation will be done as part of
    the GPIO controller resume function after restoring the GPIO state.
    
    [ tglx: Massaged changelog ]
    
    Signed-off-by: Claudiu Beznea <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: d038109ac1c6 ("irqchip/renesas-rzg2l: Fix missing put_device")
    Signed-off-by: Sasha Levin <[email protected]>

irqchip/renesas-rzg2l: Align struct member names to tabs [+ + +]
Author: Claudiu Beznea <[email protected]>
Date:   Mon Nov 20 13:18:14 2023 +0200

    irqchip/renesas-rzg2l: Align struct member names to tabs
    
    [ Upstream commit 02f6507640173addeeb3af035d2c6f0b3cff1567 ]
    
    Align struct member names to tabs to follow the requirements from
    maintainer-tip file. 3 tabs were used at the moment as the next commits
    will add a new member which requires 3 tabs for a better view.
    
    Signed-off-by: Claudiu Beznea <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: d038109ac1c6 ("irqchip/renesas-rzg2l: Fix missing put_device")
    Signed-off-by: Sasha Levin <[email protected]>

irqchip/renesas-rzg2l: Document structure members [+ + +]
Author: Claudiu Beznea <[email protected]>
Date:   Mon Nov 20 13:18:15 2023 +0200

    irqchip/renesas-rzg2l: Document structure members
    
    [ Upstream commit b94f455372ad6e6b4da8e8ed9864d9c7daaf54b8 ]
    
    Document structure members to follow the requirements specified in
    maintainer-tip, section 4.3.7. Struct declarations and initializers.
    
    Signed-off-by: Claudiu Beznea <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: d038109ac1c6 ("irqchip/renesas-rzg2l: Fix missing put_device")
    Signed-off-by: Sasha Levin <[email protected]>

irqchip/renesas-rzg2l: Fix missing put_device [+ + +]
Author: Fabrizio Castro <[email protected]>
Date:   Fri Oct 11 18:20:03 2024 +0100

    irqchip/renesas-rzg2l: Fix missing put_device
    
    [ Upstream commit d038109ac1c6bf619473dda03a16a6de58170f7f ]
    
    rzg2l_irqc_common_init() calls of_find_device_by_node(), but the
    corresponding put_device() call is missing.  This also gets reported by
    make coccicheck.
    
    Make use of the cleanup interfaces from cleanup.h to call into
    __free_put_device(), which in turn calls into put_device when leaving
    function rzg2l_irqc_common_init() and variable "dev" goes out of scope.
    
    To prevent that the device is put on successful completion, assign NULL to
    "dev" to prevent __free_put_device() from calling into put_device() within
    the successful path.
    
    "make coccicheck" will still complain about missing put_device() calls,
    but those are false positives now.
    
    Fixes: 3fed09559cd8 ("irqchip: Add RZ/G2L IA55 Interrupt Controller driver")
    Signed-off-by: Fabrizio Castro <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
jfs: Fix sanity check in dbMount [+ + +]
Author: Dave Kleikamp <[email protected]>
Date:   Tue Oct 22 09:40:37 2024 -0500

    jfs: Fix sanity check in dbMount
    
    [ Upstream commit 67373ca8404fe57eb1bb4b57f314cff77ce54932 ]
    
    MAXAG is a legitimate value for bmp->db_numag
    
    Fixes: e63866a47556 ("jfs: fix out-of-bounds in dbNextAG() and diAlloc()")
    
    Signed-off-by: Dave Kleikamp <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
KVM: arm64: Don't eagerly teardown the vgic on init error [+ + +]
Author: Marc Zyngier <[email protected]>
Date:   Wed Oct 9 19:36:03 2024 +0100

    KVM: arm64: Don't eagerly teardown the vgic on init error
    
    commit df5fd75ee305cb5927e0b1a0b46cc988ad8db2b1 upstream.
    
    As there is very little ordering in the KVM API, userspace can
    instanciate a half-baked GIC (missing its memory map, for example)
    at almost any time.
    
    This means that, with the right timing, a thread running vcpu-0
    can enter the kernel without a GIC configured and get a GIC created
    behind its back by another thread. Amusingly, it will pick up
    that GIC and start messing with the data structures without the
    GIC having been fully initialised.
    
    Similarly, a thread running vcpu-1 can enter the kernel, and try
    to init the GIC that was previously created. Since this GIC isn't
    properly configured (no memory map), it fails to correctly initialise.
    
    And that's the point where we decide to teardown the GIC, freeing all
    its resources. Behind vcpu-0's back. Things stop pretty abruptly,
    with a variety of symptoms.  Clearly, this isn't good, we should be
    a bit more careful about this.
    
    It is obvious that this guest is not viable, as it is missing some
    important part of its configuration. So instead of trying to tear
    bits of it down, let's just mark it as *dead*. It means that any
    further interaction from userspace will result in -EIO. The memory
    will be released on the "normal" path, when userspace gives up.
    
    Cc: [email protected]
    Reported-by: Alexander Potapenko <[email protected]>
    Reviewed-by: Oliver Upton <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Marc Zyngier <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

KVM: nSVM: Ignore nCR3[4:0] when loading PDPTEs from memory [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Wed Oct 9 07:08:38 2024 -0700

    KVM: nSVM: Ignore nCR3[4:0] when loading PDPTEs from memory
    
    commit f559b2e9c5c5308850544ab59396b7d53cfc67bd upstream.
    
    Ignore nCR3[4:0] when loading PDPTEs from memory for nested SVM, as bits
    4:0 of CR3 are ignored when PAE paging is used, and thus VMRUN doesn't
    enforce 32-byte alignment of nCR3.
    
    In the absolute worst case scenario, failure to ignore bits 4:0 can result
    in an out-of-bounds read, e.g. if the target page is at the end of a
    memslot, and the VMM isn't using guard pages.
    
    Per the APM:
    
      The CR3 register points to the base address of the page-directory-pointer
      table. The page-directory-pointer table is aligned on a 32-byte boundary,
      with the low 5 address bits 4:0 assumed to be 0.
    
    And the SDM's much more explicit:
    
      4:0    Ignored
    
    Note, KVM gets this right when loading PDPTRs, it's only the nSVM flow
    that is broken.
    
    Fixes: e4e517b4be01 ("KVM: MMU: Do not unconditionally read PDPTE from guest memory")
    Reported-by: Kirk Swidowski <[email protected]>
    Cc: Andy Nguyen <[email protected]>
    Cc: 3pvd <[email protected]>
    Cc: [email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Paolo Bonzini <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Linux: Linux 6.1.115 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Fri Nov 1 01:56:07 2024 +0100

    Linux 6.1.115
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Mark Brown <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: SeongJae Park <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Hardik Garg <[email protected]>
    Tested-by: Salvatore Bonaccorso <[email protected]>
    Tested-by: kernelci.org bot <[email protected]>
    Tested-by: Pavel Machek (CIP) <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
LoongArch: Add support to clone a time namespace [+ + +]
Author: Tiezhu Yang <[email protected]>
Date:   Thu Jun 29 20:58:43 2023 +0800

    LoongArch: Add support to clone a time namespace
    
    [ Upstream commit aa5e65dc0818bbf676bf06927368ec46867778fd ]
    
    We can see that "Time namespaces are not supported" on LoongArch:
    
    (1) clone3 test
      # cd tools/testing/selftests/clone3 && make && ./clone3
      ...
      # Time namespaces are not supported
      ok 18 # SKIP Skipping clone3() with CLONE_NEWTIME
      # Totals: pass:17 fail:0 xfail:0 xpass:0 skip:1 error:0
    
    (2) timens test
      # cd tools/testing/selftests/timens && make && ./timens
      ...
      1..0 # SKIP Time namespaces are not supported
    
    On LoongArch the current kernel does not support CONFIG_TIME_NS which
    depends on GENERIC_VDSO_TIME_NS, select GENERIC_VDSO_TIME_NS to enable
    CONFIG_TIME_NS to build kernel/time/namespace.c.
    
    Additionally, it needs to define some arch-dependent functions for the
    timens, such as __arch_get_timens_vdso_data(), arch_get_vdso_data() and
    vdso_join_timens().
    
    At the same time, modify the layout of vvar to use one page size for
    generic vdso data, expand another page size for timens vdso data and
    assign LOONGARCH_VDSO_DATA_SIZE (maybe exceeds a page size if expand in
    the future) for loongarch vdso data, at last add the callback function
    vvar_fault() and modify stack_top().
    
    With this patch under CONFIG_TIME_NS:
    
    (1) clone3 test
      # cd tools/testing/selftests/clone3 && make && ./clone3
      ...
      ok 18 [739] Result (0) matches expectation (0)
      # Totals: pass:18 fail:0 xfail:0 xpass:0 skip:0 error:0
    
    (2) timens test
      # cd tools/testing/selftests/timens && make && ./timens
      ...
      # Totals: pass:10 fail:0 xfail:0 xpass:0 skip:0 error:0
    
    Signed-off-by: Tiezhu Yang <[email protected]>
    Signed-off-by: Huacai Chen <[email protected]>
    Stable-dep-of: 134475a9ab84 ("LoongArch: Don't crash in stack_top() for tasks without vDSO")
    Signed-off-by: Sasha Levin <[email protected]>

LoongArch: Don't crash in stack_top() for tasks without vDSO [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Mon Oct 21 22:11:19 2024 +0800

    LoongArch: Don't crash in stack_top() for tasks without vDSO
    
    [ Upstream commit 134475a9ab8487527238d270639a8cb74c10aab2 ]
    
    Not all tasks have a vDSO mapped, for example kthreads never do. If such
    a task ever ends up calling stack_top(), it will derefence the NULL vdso
    pointer and crash.
    
    This can for example happen when using kunit:
    
            [<9000000000203874>] stack_top+0x58/0xa8
            [<90000000002956cc>] arch_pick_mmap_layout+0x164/0x220
            [<90000000003c284c>] kunit_vm_mmap_init+0x108/0x12c
            [<90000000003c1fbc>] __kunit_add_resource+0x38/0x8c
            [<90000000003c2704>] kunit_vm_mmap+0x88/0xc8
            [<9000000000410b14>] usercopy_test_init+0xbc/0x25c
            [<90000000003c1db4>] kunit_try_run_case+0x5c/0x184
            [<90000000003c3d54>] kunit_generic_run_threadfn_adapter+0x24/0x48
            [<900000000022e4bc>] kthread+0xc8/0xd4
            [<9000000000200ce8>] ret_from_kernel_thread+0xc/0xa4
    
    Fixes: 803b0fc5c3f2 ("LoongArch: Add process management")
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Signed-off-by: Huacai Chen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

LoongArch: Get correct cores_per_package for SMT systems [+ + +]
Author: Huacai Chen <[email protected]>
Date:   Mon Oct 21 22:11:18 2024 +0800

    LoongArch: Get correct cores_per_package for SMT systems
    
    commit b7296f9d5bf99330063d4bbecc43c9b33fed0137 upstream.
    
    In loongson_sysconf, The "core" of cores_per_node and cores_per_package
    stands for a logical core, which means in a SMT system it stands for a
    thread indeed. This information is gotten from SMBIOS Type4 Structure,
    so in order to get a correct cores_per_package for both SMT and non-SMT
    systems in parse_cpu_table() we should use SMBIOS_THREAD_PACKAGE_OFFSET
    instead of SMBIOS_CORE_PACKAGE_OFFSET.
    
    Cc: [email protected]
    Reported-by: Chao Li <[email protected]>
    Tested-by: Chao Li <[email protected]>
    Signed-off-by: Huacai Chen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
macsec: don't increment counters for an unrelated SA [+ + +]
Author: Sabrina Dubroca <[email protected]>
Date:   Fri Oct 11 17:16:37 2024 +0200

    macsec: don't increment counters for an unrelated SA
    
    [ Upstream commit cf58aefb1332db322060cad4a330d5f9292b0f41 ]
    
    On RX, we shouldn't be incrementing the stats for an arbitrary SA in
    case the actual SA hasn't been set up. Those counters are intended to
    track packets for their respective AN when the SA isn't currently
    configured. Due to the way MACsec is implemented, we don't keep
    counters unless the SA is configured, so we can't track those packets,
    and those counters will remain at 0.
    
    The RXSC's stats keeps track of those packets without telling us which
    AN they belonged to. We could add counters for non-existent SAs, and
    then find a way to integrate them in the dump to userspace, but I
    don't think it's worth the effort.
    
    Fixes: 91ec9bd57f35 ("macsec: Fix traffic counters/statistics")
    Reported-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sabrina Dubroca <[email protected]>
    Link: https://patch.msgid.link/f5ac92aaa5b89343232615f4c03f9f95042c6aa0.1728657709.git.sd@queasysnail.net
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5: Fix command bitmask initialization [+ + +]
Author: Shay Drory <[email protected]>
Date:   Tue Oct 15 12:32:06 2024 +0300

    net/mlx5: Fix command bitmask initialization
    
    [ Upstream commit d62b14045c6511a7b2d4948d1a83a4e592deeb05 ]
    
    Command bitmask have a dedicated bit for MANAGE_PAGES command, this bit
    isn't Initialize during command bitmask Initialization, only during
    MANAGE_PAGES.
    
    In addition, mlx5_cmd_trigger_completions() is trying to trigger
    completion for MANAGE_PAGES command as well.
    
    Hence, in case health error occurred before any MANAGE_PAGES command
    have been invoke (for example, during mlx5_enable_hca()),
    mlx5_cmd_trigger_completions() will try to trigger completion for
    MANAGE_PAGES command, which will result in null-ptr-deref error.[1]
    
    Fix it by Initialize command bitmask correctly.
    
    While at it, re-write the code for better understanding.
    
    [1]
    BUG: KASAN: null-ptr-deref in mlx5_cmd_trigger_completions+0x1db/0x600 [mlx5_core]
    Write of size 4 at addr 0000000000000214 by task kworker/u96:2/12078
    CPU: 10 PID: 12078 Comm: kworker/u96:2 Not tainted 6.9.0-rc2_for_upstream_debug_2024_04_07_19_01 #1
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
    Workqueue: mlx5_health0000:08:00.0 mlx5_fw_fatal_reporter_err_work [mlx5_core]
    Call Trace:
     <TASK>
     dump_stack_lvl+0x7e/0xc0
     kasan_report+0xb9/0xf0
     kasan_check_range+0xec/0x190
     mlx5_cmd_trigger_completions+0x1db/0x600 [mlx5_core]
     mlx5_cmd_flush+0x94/0x240 [mlx5_core]
     enter_error_state+0x6c/0xd0 [mlx5_core]
     mlx5_fw_fatal_reporter_err_work+0xf3/0x480 [mlx5_core]
     process_one_work+0x787/0x1490
     ? lockdep_hardirqs_on_prepare+0x400/0x400
     ? pwq_dec_nr_in_flight+0xda0/0xda0
     ? assign_work+0x168/0x240
     worker_thread+0x586/0xd30
     ? rescuer_thread+0xae0/0xae0
     kthread+0x2df/0x3b0
     ? kthread_complete_and_exit+0x20/0x20
     ret_from_fork+0x2d/0x70
     ? kthread_complete_and_exit+0x20/0x20
     ret_from_fork_asm+0x11/0x20
     </TASK>
    
    Fixes: 9b98d395b85d ("net/mlx5: Start health poll at earlier stage of driver load")
    Signed-off-by: Shay Drory <[email protected]>
    Reviewed-by: Moshe Shemesh <[email protected]>
    Reviewed-by: Saeed Mahameed <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Remove redundant cmdif revision check [+ + +]
Author: Shay Drory <[email protected]>
Date:   Sun Jan 29 12:08:30 2023 +0200

    net/mlx5: Remove redundant cmdif revision check
    
    [ Upstream commit 0714ec9ea1f291447a925657e0808f34b8fbce2b ]
    
    mlx5 is checking the cmdif revision twice, for no reason.
    Remove the latter check.
    
    Signed-off-by: Shay Drory <[email protected]>
    Reviewed-by: Moshe Shemesh <[email protected]>
    Signed-off-by: Saeed Mahameed <[email protected]>
    Stable-dep-of: d62b14045c65 ("net/mlx5: Fix command bitmask initialization")
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: split mlx5_cmd_init() to probe and reload routines [+ + +]
Author: Shay Drory <[email protected]>
Date:   Wed Jan 18 20:55:54 2023 +0200

    net/mlx5: split mlx5_cmd_init() to probe and reload routines
    
    [ Upstream commit 06cd555f73caec515a14d42ef052221fa2587ff9 ]
    
    There is no need to destroy and allocate cmd SW structs during reload,
    this is time consuming for no reason.
    Hence, split mlx5_cmd_init() to probe and reload routines.
    
    Signed-off-by: Shay Drory <[email protected]>
    Reviewed-by: Moshe Shemesh <[email protected]>
    Signed-off-by: Saeed Mahameed <[email protected]>
    Stable-dep-of: d62b14045c65 ("net/mlx5: Fix command bitmask initialization")
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Unregister notifier on eswitch init failure [+ + +]
Author: Cosmin Ratiu <[email protected]>
Date:   Tue Oct 15 12:32:07 2024 +0300

    net/mlx5: Unregister notifier on eswitch init failure
    
    [ Upstream commit 1da9cfd6c41c2e6bbe624d0568644e1521c33e12 ]
    
    It otherwise remains registered and a subsequent attempt at eswitch
    enabling might trigger warnings of the sort:
    
    [  682.589148] ------------[ cut here ]------------
    [  682.590204] notifier callback eswitch_vport_event [mlx5_core] already registered
    [  682.590256] WARNING: CPU: 13 PID: 2660 at kernel/notifier.c:31 notifier_chain_register+0x3e/0x90
    [...snipped]
    [  682.610052] Call Trace:
    [  682.610369]  <TASK>
    [  682.610663]  ? __warn+0x7c/0x110
    [  682.611050]  ? notifier_chain_register+0x3e/0x90
    [  682.611556]  ? report_bug+0x148/0x170
    [  682.611977]  ? handle_bug+0x36/0x70
    [  682.612384]  ? exc_invalid_op+0x13/0x60
    [  682.612817]  ? asm_exc_invalid_op+0x16/0x20
    [  682.613284]  ? notifier_chain_register+0x3e/0x90
    [  682.613789]  atomic_notifier_chain_register+0x25/0x40
    [  682.614322]  mlx5_eswitch_enable_locked+0x1d4/0x3b0 [mlx5_core]
    [  682.614965]  mlx5_eswitch_enable+0xc9/0x100 [mlx5_core]
    [  682.615551]  mlx5_device_enable_sriov+0x25/0x340 [mlx5_core]
    [  682.616170]  mlx5_core_sriov_configure+0x50/0x170 [mlx5_core]
    [  682.616789]  sriov_numvfs_store+0xb0/0x1b0
    [  682.617248]  kernfs_fop_write_iter+0x117/0x1a0
    [  682.617734]  vfs_write+0x231/0x3f0
    [  682.618138]  ksys_write+0x63/0xe0
    [  682.618536]  do_syscall_64+0x4c/0x100
    [  682.618958]  entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    Fixes: 7624e58a8b3a ("net/mlx5: E-switch, register event handler before arming the event")
    Signed-off-by: Cosmin Ratiu <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/sched: act_api: deny mismatched skip_sw/skip_hw flags for actions created by classifiers [+ + +]
Author: Vladimir Oltean <[email protected]>
Date:   Thu Oct 17 19:10:48 2024 +0300

    net/sched: act_api: deny mismatched skip_sw/skip_hw flags for actions created by classifiers
    
    [ Upstream commit 34d35b4edbbe890a91bec939bfd29ad92517a52b ]
    
    tcf_action_init() has logic for checking mismatches between action and
    filter offload flags (skip_sw/skip_hw). AFAIU, this is intended to run
    on the transition between the new tc_act_bind(flags) returning true (aka
    now gets bound to classifier) and tc_act_bind(act->tcfa_flags) returning
    false (aka action was not bound to classifier before). Otherwise, the
    check is skipped.
    
    For the case where an action is not standalone, but rather it was
    created by a classifier and is bound to it, tcf_action_init() skips the
    check entirely, and this means it allows mismatched flags to occur.
    
    Taking the matchall classifier code path as an example (with mirred as
    an action), the reason is the following:
    
     1 | mall_change()
     2 | -> mall_replace_hw_filter()
     3 |   -> tcf_exts_validate_ex()
     4 |      -> flags |= TCA_ACT_FLAGS_BIND;
     5 |      -> tcf_action_init()
     6 |         -> tcf_action_init_1()
     7 |            -> a_o->init()
     8 |               -> tcf_mirred_init()
     9 |                  -> tcf_idr_create_from_flags()
    10 |                     -> tcf_idr_create()
    11 |                        -> p->tcfa_flags = flags;
    12 |         -> tc_act_bind(flags))
    13 |         -> tc_act_bind(act->tcfa_flags)
    
    When invoked from tcf_exts_validate_ex() like matchall does (but other
    classifiers validate their extensions as well), tcf_action_init() runs
    in a call path where "flags" always contains TCA_ACT_FLAGS_BIND (set by
    line 4). So line 12 is always true, and line 13 is always true as well.
    No transition ever takes place, and the check is skipped.
    
    The code was added in this form in commit c86e0209dc77 ("flow_offload:
    validate flags of filter and actions"), but I'm attributing the blame
    even earlier in that series, to when TCA_ACT_FLAGS_SKIP_HW and
    TCA_ACT_FLAGS_SKIP_SW were added to the UAPI.
    
    Following the development process of this change, the check did not
    always exist in this form. A change took place between v3 [1] and v4 [2],
    AFAIU due to review feedback that it doesn't make sense for action flags
    to be different than classifier flags. I think I agree with that
    feedback, but it was translated into code that omits enforcing this for
    "classic" actions created at the same time with the filters themselves.
    
    There are 3 more important cases to discuss. First there is this command:
    
    $ tc qdisc add dev eth0 clasct
    $ tc filter add dev eth0 ingress matchall skip_sw \
            action mirred ingress mirror dev eth1
    
    which should be allowed, because prior to the concept of dedicated
    action flags, it used to work and it used to mean the action inherited
    the skip_sw/skip_hw flags from the classifier. It's not a mismatch.
    
    Then we have this command:
    
    $ tc qdisc add dev eth0 clasct
    $ tc filter add dev eth0 ingress matchall skip_sw \
            action mirred ingress mirror dev eth1 skip_hw
    
    where there is a mismatch and it should be rejected.
    
    Finally, we have:
    
    $ tc qdisc add dev eth0 clasct
    $ tc filter add dev eth0 ingress matchall skip_sw \
            action mirred ingress mirror dev eth1 skip_sw
    
    where the offload flags coincide, and this should be treated the same as
    the first command based on inheritance, and accepted.
    
    [1]: https://lore.kernel.org/netdev/[email protected]/
    [2]: https://lore.kernel.org/netdev/[email protected]/
    Fixes: 7adc57651211 ("flow_offload: add skip_hw and skip_sw to control if offload the action")
    Signed-off-by: Vladimir Oltean <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Tested-by: Ido Schimmel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/sched: adjust device watchdog timer to detect stopped queue at right time [+ + +]
Author: Praveen Kumar Kannoju <[email protected]>
Date:   Wed May 8 19:06:17 2024 +0530

    net/sched: adjust device watchdog timer to detect stopped queue at right time
    
    [ Upstream commit 33fb988b67050d9bb512f77f08453fa00088943c ]
    
    Applications are sensitive to long network latency, particularly
    heartbeat monitoring ones. Longer the tx timeout recovery higher the
    risk with such applications on a production machines. This patch
    remedies, yet honoring device set tx timeout.
    
    Modify watchdog next timeout to be shorter than the device specified.
    Compute the next timeout be equal to device watchdog timeout less the
    how long ago queue stop had been done. At next watchdog timeout tx
    timeout handler is called into if still in stopped state. Either called
    or not called, restore the watchdog timeout back to device specified.
    
    Signed-off-by: Praveen Kumar Kannoju <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 95ecba62e2fd ("net: fix races in netdev_tx_sent_queue()/dev_watchdog()")
    Signed-off-by: Sasha Levin <[email protected]>

 
net/smc: Fix searching in list of known pnetids in smc_pnet_add_pnetid [+ + +]
Author: Li RongQing <[email protected]>
Date:   Mon Oct 14 19:53:21 2024 +0800

    net/smc: Fix searching in list of known pnetids in smc_pnet_add_pnetid
    
    [ Upstream commit 82ac39ebd6db0c9f7a97a934bda1e3e101a9d201 ]
    
    pnetid of pi (not newly allocated pe) should be compared
    
    Fixes: e888a2e8337c ("net/smc: introduce list of pnetids for Ethernet devices")
    Reviewed-by: D. Wythe <[email protected]>
    Reviewed-by: Wen Gu <[email protected]>
    Signed-off-by: Li RongQing <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Reviewed-by: Gerd Bayer <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/sun3_82586: fix potential memory leak in sun3_82586_send_packet() [+ + +]
Author: Wang Hai <[email protected]>
Date:   Tue Oct 15 22:41:48 2024 +0800

    net/sun3_82586: fix potential memory leak in sun3_82586_send_packet()
    
    [ Upstream commit 2cb3f56e827abb22c4168ad0c1bbbf401bb2f3b8 ]
    
    The sun3_82586_send_packet() returns NETDEV_TX_OK without freeing skb
    in case of skb->len being too long, add dev_kfree_skb() to fix it.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Wang Hai <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Andrew Lunn <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net: dsa: mv88e6xxx: Fix error when setting port policy on mv88e6393x [+ + +]
Author: Peter Rashleigh <[email protected]>
Date:   Tue Oct 15 21:08:22 2024 -0700

    net: dsa: mv88e6xxx: Fix error when setting port policy on mv88e6393x
    
    [ Upstream commit 12bc14949c4a7272b509af0f1022a0deeb215fd8 ]
    
    mv88e6393x_port_set_policy doesn't correctly shift the ptr value when
    converting the policy format between the old and new styles, so the
    target register ends up with the ptr being written over the data bits.
    
    Shift the pointer to align with the format expected by
    mv88e6393x_port_policy_write().
    
    Fixes: 6584b26020fc ("net: dsa: mv88e6xxx: implement .port_set_policy for Amethyst")
    Signed-off-by: Peter Rashleigh <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Andrew Lunn <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ethernet: aeroflex: fix potential memory leak in greth_start_xmit_gbit() [+ + +]
Author: Wang Hai <[email protected]>
Date:   Sat Oct 12 19:04:34 2024 +0800

    net: ethernet: aeroflex: fix potential memory leak in greth_start_xmit_gbit()
    
    [ Upstream commit cf57b5d7a2aad456719152ecd12007fe031628a3 ]
    
    The greth_start_xmit_gbit() returns NETDEV_TX_OK without freeing skb
    in case of skb->len being too long, add dev_kfree_skb() to fix it.
    
    Fixes: d4c41139df6e ("net: Add Aeroflex Gaisler 10/100/1G Ethernet MAC driver")
    Signed-off-by: Wang Hai <[email protected]>
    Reviewed-by: Gerhard Engleder <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: fix races in netdev_tx_sent_queue()/dev_watchdog() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Tue Oct 15 19:41:18 2024 +0000

    net: fix races in netdev_tx_sent_queue()/dev_watchdog()
    
    [ Upstream commit 95ecba62e2fd201bcdcca636f5d774f1cd4f1458 ]
    
    Some workloads hit the infamous dev_watchdog() message:
    
    "NETDEV WATCHDOG: eth0 (xxxx): transmit queue XX timed out"
    
    It seems possible to hit this even for perfectly normal
    BQL enabled drivers:
    
    1) Assume a TX queue was idle for more than dev->watchdog_timeo
       (5 seconds unless changed by the driver)
    
    2) Assume a big packet is sent, exceeding current BQL limit.
    
    3) Driver ndo_start_xmit() puts the packet in TX ring,
       and netdev_tx_sent_queue() is called.
    
    4) QUEUE_STATE_STACK_XOFF could be set from netdev_tx_sent_queue()
       before txq->trans_start has been written.
    
    5) txq->trans_start is written later, from netdev_start_xmit()
    
        if (rc == NETDEV_TX_OK)
              txq_trans_update(txq)
    
    dev_watchdog() running on another cpu could read the old
    txq->trans_start, and then see QUEUE_STATE_STACK_XOFF, because 5)
    did not happen yet.
    
    To solve the issue, write txq->trans_start right before one XOFF bit
    is set :
    
    - _QUEUE_STATE_DRV_XOFF from netif_tx_stop_queue()
    - __QUEUE_STATE_STACK_XOFF from netdev_tx_sent_queue()
    
    From dev_watchdog(), we have to read txq->state before txq->trans_start.
    
    Add memory barriers to enforce correct ordering.
    
    In the future, we could avoid writing over txq->trans_start for normal
    operations, and rename this field to txq->xoff_start_time.
    
    Fixes: bec251bc8b6a ("net: no longer stop all TX queues in dev_watchdog()")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Reviewed-by: Toke Høiland-Jørgensen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: dp83822: Fix reset pin definitions [+ + +]
Author: Michel Alex <[email protected]>
Date:   Wed Oct 16 12:11:15 2024 +0000

    net: phy: dp83822: Fix reset pin definitions
    
    commit de96f6a3003513c796bbe4e23210a446913f5c00 upstream.
    
    This change fixes a rare issue where the PHY fails to detect a link
    due to incorrect reset behavior.
    
    The SW_RESET definition was incorrectly assigned to bit 14, which is the
    Digital Restart bit according to the datasheet. This commit corrects
    SW_RESET to bit 15 and assigns DIG_RESTART to bit 14 as per the
    datasheet specifications.
    
    The SW_RESET define is only used in the phy_reset function, which fully
    re-initializes the PHY after the reset is performed. The change in the
    bit definitions should not have any negative impact on the functionality
    of the PHY.
    
    v2:
    - added Fixes tag
    - improved commit message
    
    Cc: [email protected]
    Fixes: 5dc39fd5ef35 ("net: phy: DP83822: Add ability to advertise Fiber connection")
    Signed-off-by: Alex Michel <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Message-ID: <AS1P250MB0608A798661549BF83C4B43EA9462@AS1P250MB0608.EURP250.PROD.OUTLOOK.COM>
    Signed-off-by: Andrew Lunn <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: plip: fix break; causing plip to never transmit [+ + +]
Author: Jakub Boehm <[email protected]>
Date:   Tue Oct 15 17:16:04 2024 +0200

    net: plip: fix break; causing plip to never transmit
    
    [ Upstream commit f99cf996ba5a315f8b9f13cc21dff0604a0eb749 ]
    
    Since commit
      71ae2cb30531 ("net: plip: Fix fall-through warnings for Clang")
    
    plip was not able to send any packets, this patch replaces one
    unintended break; with fallthrough; which was originally missed by
    commit 9525d69a3667 ("net: plip: mark expected switch fall-throughs").
    
    I have verified with a real hardware PLIP connection that everything
    works once again after applying this patch.
    
    Fixes: 71ae2cb30531 ("net: plip: Fix fall-through warnings for Clang")
    Signed-off-by: Jakub Boehm <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Andrew Lunn <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: provide macros for commonly copied lockless queue stop/wake code [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Thu Apr 6 18:25:33 2023 -0700

    net: provide macros for commonly copied lockless queue stop/wake code
    
    [ Upstream commit c91c46de6bbc1147ae5dfe046b87f5f3d6593215 ]
    
    A lot of drivers follow the same scheme to stop / start queues
    without introducing locks between xmit and NAPI tx completions.
    I'm guessing they all copy'n'paste each other's code.
    The original code dates back all the way to e1000 and Linux 2.6.19.
    
    Smaller drivers shy away from the scheme and introduce a lock
    which may cause deadlocks in netpoll.
    
    Provide macros which encapsulate the necessary logic.
    
    The macros do not prevent false wake ups, the extra barrier
    required to close that race is not worth it. See discussion in:
    https://lore.kernel.org/all/[email protected]/
    
    Acked-by: Herbert Xu <[email protected]>
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 95ecba62e2fd ("net: fix races in netdev_tx_sent_queue()/dev_watchdog()")
    Signed-off-by: Sasha Levin <[email protected]>

net: ravb: Only advertise Rx/Tx timestamps if hardware supports it [+ + +]
Author: Niklas Söderlund <[email protected]>
Date:   Mon Oct 14 14:43:43 2024 +0200

    net: ravb: Only advertise Rx/Tx timestamps if hardware supports it
    
    [ Upstream commit 126e799602f45e9ce1ded03ee9eadda68bf470e0 ]
    
    Recent work moving the reporting of Rx software timestamps to the core
    [1] highlighted an issue where hardware time stamping was advertised
    for the platforms where it is not supported.
    
    Fix this by covering advertising support for hardware timestamps only if
    the hardware supports it. Due to the Tx implementation in RAVB software
    Tx timestamping is also only considered if the hardware supports
    hardware timestamps. This should be addressed in future, but this fix
    only reflects what the driver currently implements.
    
    1. Commit 277901ee3a26 ("ravb: Remove setting of RX software timestamp")
    
    Fixes: 7e09a052dc4e ("ravb: Exclude gPTP feature support for RZ/G2L")
    Signed-off-by: Niklas Söderlund <[email protected]>
    Reviewed-by: Paul Barker <[email protected]>
    Tested-by: Paul Barker <[email protected]>
    Reviewed-by: Sergey Shtylyov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: sched: fix use-after-free in taprio_change() [+ + +]
Author: Dmitry Antipov <[email protected]>
Date:   Fri Oct 18 08:13:38 2024 +0300

    net: sched: fix use-after-free in taprio_change()
    
    [ Upstream commit f504465970aebb2467da548f7c1efbbf36d0f44b ]
    
    In 'taprio_change()', 'admin' pointer may become dangling due to sched
    switch / removal caused by 'advance_sched()', and critical section
    protected by 'q->current_entry_lock' is too small to prevent from such
    a scenario (which causes use-after-free detected by KASAN). Fix this
    by prefer 'rcu_replace_pointer()' over 'rcu_assign_pointer()' to update
    'admin' immediately before an attempt to schedule freeing.
    
    Fixes: a3d43c0d56f1 ("taprio: Add support adding an admin schedule")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=b65e0af58423fc8a73aa
    Acked-by: Vinicius Costa Gomes <[email protected]>
    Signed-off-by: Dmitry Antipov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: systemport: fix potential memory leak in bcm_sysport_xmit() [+ + +]
Author: Wang Hai <[email protected]>
Date:   Mon Oct 14 22:51:15 2024 +0800

    net: systemport: fix potential memory leak in bcm_sysport_xmit()
    
    [ Upstream commit c401ed1c709948e57945485088413e1bb5e94bd1 ]
    
    The bcm_sysport_xmit() returns NETDEV_TX_OK without freeing skb
    in case of dma_map_single() fails, add dev_kfree_skb() to fix it.
    
    Fixes: 80105befdb4b ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
    Signed-off-by: Wang Hai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: usbnet: fix name regression [+ + +]
Author: Oliver Neukum <[email protected]>
Date:   Thu Oct 17 09:18:37 2024 +0200

    net: usb: usbnet: fix name regression
    
    [ Upstream commit 8a7d12d674ac6f2147c18f36d1e15f1a48060edf ]
    
    The fix for MAC addresses broke detection of the naming convention
    because it gave network devices no random MAC before bind()
    was called. This means that the check for the local assignment bit
    was always negative as the address was zeroed from allocation,
    instead of from overwriting the MAC with a unique hardware address.
    
    The correct check for whether bind() has altered the MAC is
    done with is_zero_ether_addr
    
    Signed-off-by: Oliver Neukum <[email protected]>
    Reported-by: Greg Thelen <[email protected]>
    Diagnosed-by: John Sperbeck <[email protected]>
    Fixes: bab8eb0dd4cb9 ("usbnet: modern method to get random MAC")
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: usbnet: fix race in probe failure [+ + +]
Author: Oliver Neukum <[email protected]>
Date:   Thu Oct 10 15:19:14 2024 +0200

    net: usb: usbnet: fix race in probe failure
    
    [ Upstream commit b62f4c186c70aa235fef2da68d07325d85ca3ade ]
    
    The same bug as in the disconnect code path also exists
    in the case of a failure late during the probe process.
    The flag must also be set.
    
    Signed-off-by: Oliver Neukum <[email protected]>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: wwan: fix global oob in wwan_rtnl_policy [+ + +]
Author: Lin Ma <[email protected]>
Date:   Tue Oct 15 21:16:21 2024 +0800

    net: wwan: fix global oob in wwan_rtnl_policy
    
    [ Upstream commit 47dd5447cab8ce30a847a0337d5341ae4c7476a7 ]
    
    The variable wwan_rtnl_link_ops assign a *bigger* maxtype which leads to
    a global out-of-bounds read when parsing the netlink attributes. Exactly
    same bug cause as the oob fixed in commit b33fb5b801c6 ("net: qualcomm:
    rmnet: fix global oob in rmnet_policy").
    
    ==================================================================
    BUG: KASAN: global-out-of-bounds in validate_nla lib/nlattr.c:388 [inline]
    BUG: KASAN: global-out-of-bounds in __nla_validate_parse+0x19d7/0x29a0 lib/nlattr.c:603
    Read of size 1 at addr ffffffff8b09cb60 by task syz.1.66276/323862
    
    CPU: 0 PID: 323862 Comm: syz.1.66276 Not tainted 6.1.70 #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0x177/0x231 lib/dump_stack.c:106
     print_address_description mm/kasan/report.c:284 [inline]
     print_report+0x14f/0x750 mm/kasan/report.c:395
     kasan_report+0x139/0x170 mm/kasan/report.c:495
     validate_nla lib/nlattr.c:388 [inline]
     __nla_validate_parse+0x19d7/0x29a0 lib/nlattr.c:603
     __nla_parse+0x3c/0x50 lib/nlattr.c:700
     nla_parse_nested_deprecated include/net/netlink.h:1269 [inline]
     __rtnl_newlink net/core/rtnetlink.c:3514 [inline]
     rtnl_newlink+0x7bc/0x1fd0 net/core/rtnetlink.c:3623
     rtnetlink_rcv_msg+0x794/0xef0 net/core/rtnetlink.c:6122
     netlink_rcv_skb+0x1de/0x420 net/netlink/af_netlink.c:2508
     netlink_unicast_kernel net/netlink/af_netlink.c:1326 [inline]
     netlink_unicast+0x74b/0x8c0 net/netlink/af_netlink.c:1352
     netlink_sendmsg+0x882/0xb90 net/netlink/af_netlink.c:1874
     sock_sendmsg_nosec net/socket.c:716 [inline]
     __sock_sendmsg net/socket.c:728 [inline]
     ____sys_sendmsg+0x5cc/0x8f0 net/socket.c:2499
     ___sys_sendmsg+0x21c/0x290 net/socket.c:2553
     __sys_sendmsg net/socket.c:2582 [inline]
     __do_sys_sendmsg net/socket.c:2591 [inline]
     __se_sys_sendmsg+0x19e/0x270 net/socket.c:2589
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x45/0x90 arch/x86/entry/common.c:81
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    RIP: 0033:0x7f67b19a24ad
    RSP: 002b:00007f67b17febb8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 00007f67b1b45f80 RCX: 00007f67b19a24ad
    RDX: 0000000000000000 RSI: 0000000020005e40 RDI: 0000000000000004
    RBP: 00007f67b1a1e01d R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 00007ffd2513764f R14: 00007ffd251376e0 R15: 00007f67b17fed40
     </TASK>
    
    The buggy address belongs to the variable:
     wwan_rtnl_policy+0x20/0x40
    
    The buggy address belongs to the physical page:
    page:ffffea00002c2700 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0xb09c
    flags: 0xfff00000001000(reserved|node=0|zone=1|lastcpupid=0x7ff)
    raw: 00fff00000001000 ffffea00002c2708 ffffea00002c2708 0000000000000000
    raw: 0000000000000000 0000000000000000 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    page_owner info is not present (never set?)
    
    Memory state around the buggy address:
     ffffffff8b09ca00: 05 f9 f9 f9 05 f9 f9 f9 00 01 f9 f9 00 01 f9 f9
     ffffffff8b09ca80: 00 00 00 05 f9 f9 f9 f9 00 00 03 f9 f9 f9 f9 f9
    >ffffffff8b09cb00: 00 00 00 00 05 f9 f9 f9 00 00 00 00 f9 f9 f9 f9
                                                           ^
     ffffffff8b09cb80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    ==================================================================
    
    According to the comment of `nla_parse_nested_deprecated`, use correct size
    `IFLA_WWAN_MAX` here to fix this issue.
    
    Fixes: 88b710532e53 ("wwan: add interface creation support")
    Signed-off-by: Lin Ma <[email protected]>
    Reviewed-by: Loic Poulain <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: xilinx: axienet: fix potential memory leak in axienet_start_xmit() [+ + +]
Author: Wang Hai <[email protected]>
Date:   Mon Oct 14 22:37:04 2024 +0800

    net: xilinx: axienet: fix potential memory leak in axienet_start_xmit()
    
    [ Upstream commit 99714e37e8333bbc22496fe80f241d5b35380e83 ]
    
    The axienet_start_xmit() returns NETDEV_TX_OK without freeing skb
    in case of dma_map_single() fails, add dev_kfree_skb_any() to fix it.
    
    Fixes: 71791dc8bdea ("net: axienet: Check for DMA mapping errors")
    Signed-off-by: Wang Hai <[email protected]>
    Reviewed-by: Radhey Shyam Pandey <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netdevsim: use cond_resched() in nsim_dev_trap_report_work() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Sat Oct 12 09:42:30 2024 +0000

    netdevsim: use cond_resched() in nsim_dev_trap_report_work()
    
    [ Upstream commit a1494d532e28598bde7a5544892ef9c7dbfafa93 ]
    
    I am still seeing many syzbot reports hinting that syzbot
    might fool nsim_dev_trap_report_work() with hundreds of ports [1]
    
    Lets use cond_resched(), and system_unbound_wq
    instead of implicit system_wq.
    
    [1]
    INFO: task syz-executor:20633 blocked for more than 143 seconds.
          Not tainted 6.12.0-rc2-syzkaller-00205-g1d227fcc7222 #0
    "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    task:syz-executor    state:D stack:25856 pid:20633 tgid:20633 ppid:1      flags:0x00004006
    ...
    NMI backtrace for cpu 1
    CPU: 1 UID: 0 PID: 16760 Comm: kworker/1:0 Not tainted 6.12.0-rc2-syzkaller-00205-g1d227fcc7222 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    Workqueue: events nsim_dev_trap_report_work
     RIP: 0010:__sanitizer_cov_trace_pc+0x0/0x70 kernel/kcov.c:210
    Code: 89 fb e8 23 00 00 00 48 8b 3d 04 fb 9c 0c 48 89 de 5b e9 c3 c7 5d 00 0f 1f 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 <f3> 0f 1e fa 48 8b 04 24 65 48 8b 0c 25 c0 d7 03 00 65 8b 15 60 f0
    RSP: 0018:ffffc90000a187e8 EFLAGS: 00000246
    RAX: 0000000000000100 RBX: ffffc90000a188e0 RCX: ffff888027d3bc00
    RDX: ffff888027d3bc00 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: ffff88804a2e6000 R08: ffffffff8a4bc495 R09: ffffffff89da3577
    R10: 0000000000000004 R11: ffffffff8a4bc2b0 R12: dffffc0000000000
    R13: ffff88806573b503 R14: dffffc0000000000 R15: ffff8880663cca00
    FS:  0000000000000000(0000) GS:ffff8880b8700000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fc90a747f98 CR3: 000000000e734000 CR4: 00000000003526f0
    DR0: 0000000000000000 DR1: 000000000000002b DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Call Trace:
     <NMI>
     </NMI>
     <TASK>
      __local_bh_enable_ip+0x1bb/0x200 kernel/softirq.c:382
      spin_unlock_bh include/linux/spinlock.h:396 [inline]
      nsim_dev_trap_report drivers/net/netdevsim/dev.c:820 [inline]
      nsim_dev_trap_report_work+0x75d/0xaa0 drivers/net/netdevsim/dev.c:850
      process_one_work kernel/workqueue.c:3229 [inline]
      process_scheduled_works+0xa63/0x1850 kernel/workqueue.c:3310
      worker_thread+0x870/0xd30 kernel/workqueue.c:3391
      kthread+0x2f0/0x390 kernel/kthread.c:389
      ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
      ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
     </TASK>
    
    Fixes: ba5e1272142d ("netdevsim: avoid potential loop in nsim_dev_trap_report_work()")
    Reported-by: [email protected]
    Reported-by: [email protected]
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Jiri Pirko <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netfilter: xtables: fix typo causing some targets not to load on IPv6 [+ + +]
Author: Pablo Neira Ayuso <[email protected]>
Date:   Sun Oct 20 14:49:51 2024 +0200

    netfilter: xtables: fix typo causing some targets not to load on IPv6
    
    [ Upstream commit 306ed1728e8438caed30332e1ab46b28c25fe3d8 ]
    
    - There is no NFPROTO_IPV6 family for mark and NFLOG.
    - TRACE is also missing module autoload with NFPROTO_IPV6.
    
    This results in ip6tables failing to restore a ruleset. This issue has been
    reported by several users providing incomplete patches.
    
    Very similar to Ilya Katsnelson's patch including a missing chunk in the
    TRACE extension.
    
    Fixes: 0bfcb7b71e73 ("netfilter: xtables: avoid NFPROTO_UNSPEC where needed")
    Reported-by: Ignat Korchagin <[email protected]>
    Reported-by: Ilya Katsnelson <[email protected]>
    Reported-by: Krzysztof Olędzki <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nilfs2: fix kernel bug due to missing clearing of buffer delay flag [+ + +]
Author: Ryusuke Konishi <[email protected]>
Date:   Wed Oct 16 06:32:07 2024 +0900

    nilfs2: fix kernel bug due to missing clearing of buffer delay flag
    
    commit 6ed469df0bfbef3e4b44fca954a781919db9f7ab upstream.
    
    Syzbot reported that after nilfs2 reads a corrupted file system image
    and degrades to read-only, the BUG_ON check for the buffer delay flag
    in submit_bh_wbc() may fail, causing a kernel bug.
    
    This is because the buffer delay flag is not cleared when clearing the
    buffer state flags to discard a page/folio or a buffer head. So, fix
    this.
    
    This became necessary when the use of nilfs2's own page clear routine
    was expanded.  This state inconsistency does not occur if the buffer
    is written normally by log writing.
    
    Signed-off-by: Ryusuke Konishi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Fixes: 8c26c4e2694a ("nilfs2: fix issue with flush kernel thread after remount in RO mode because of driver's internal error or metadata corruption")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=985ada84bf055a575c07
    Cc: [email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
octeon_ep: Add SKB allocation failures handling in __octep_oq_process_rx() [+ + +]
Author: Aleksandr Mishin <[email protected]>
Date:   Thu Oct 17 13:06:51 2024 +0300

    octeon_ep: Add SKB allocation failures handling in __octep_oq_process_rx()
    
    [ Upstream commit eb592008f79be52ccef88cd9a5249b3fc0367278 ]
    
    build_skb() returns NULL in case of a memory allocation failure so handle
    it inside __octep_oq_process_rx() to avoid NULL pointer dereference.
    
    __octep_oq_process_rx() is called during NAPI polling by the driver. If
    skb allocation fails, keep on pulling packets out of the Rx DMA queue: we
    shouldn't break the polling immediately and thus falsely indicate to the
    octep_napi_poll() that the Rx pressure is going down. As there is no
    associated skb in this case, don't process the packets and don't push them
    up the network stack - they are skipped.
    
    Helper function is implemented to unmmap/flush all the fragment buffers
    used by the dropped packet. 'alloc_failures' counter is incremented to
    mark the skb allocation error in driver statistics.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 37d79d059606 ("octeon_ep: add Tx/Rx processing and interrupt support")
    Suggested-by: Paolo Abeni <[email protected]>
    Signed-off-by: Aleksandr Mishin <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Signed-off-by: Andrew Lunn <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

octeon_ep: Implement helper for iterating packets in Rx queue [+ + +]
Author: Aleksandr Mishin <[email protected]>
Date:   Thu Oct 17 13:06:50 2024 +0300

    octeon_ep: Implement helper for iterating packets in Rx queue
    
    [ Upstream commit bd28df26197b2bd0913bf1b36770836481975143 ]
    
    The common code with some packet and index manipulations is extracted and
    moved to newly implemented helper to make the code more readable and avoid
    duplication. This is a preparation for skb allocation failure handling.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Suggested-by: Simon Horman <[email protected]>
    Suggested-by: Paolo Abeni <[email protected]>
    Signed-off-by: Aleksandr Mishin <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Signed-off-by: Andrew Lunn <[email protected]>
    Stable-dep-of: eb592008f79b ("octeon_ep: Add SKB allocation failures handling in __octep_oq_process_rx()")
    Signed-off-by: Sasha Levin <[email protected]>

 
octeontx2-af: Fix potential integer overflows on integer shifts [+ + +]
Author: Colin Ian King <[email protected]>
Date:   Thu Oct 10 16:45:19 2024 +0100

    octeontx2-af: Fix potential integer overflows on integer shifts
    
    [ Upstream commit 637c4f6fe40befa04f19c38b5d15429cbb9191d9 ]
    
    The left shift int 32 bit integer constants 1 is evaluated using 32 bit
    arithmetic and then assigned to a 64 bit unsigned integer. In the case
    where the shift is 32 or more this can lead to an overflow. Avoid this
    by shifting using the BIT_ULL macro instead.
    
    Fixes: 019aba04f08c ("octeontx2-af: Modify SMQ flush sequence to drop packets")
    Signed-off-by: Colin Ian King <[email protected]>
    Reviewed-by: Dan Carpenter <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
openat2: explicitly return -E2BIG for (usize > PAGE_SIZE) [+ + +]
Author: Aleksa Sarai <[email protected]>
Date:   Thu Oct 10 07:40:36 2024 +1100

    openat2: explicitly return -E2BIG for (usize > PAGE_SIZE)
    
    commit f92f0a1b05698340836229d791b3ffecc71b265a upstream.
    
    While we do currently return -EFAULT in this case, it seems prudent to
    follow the behaviour of other syscalls like clone3. It seems quite
    unlikely that anyone depends on this error code being EFAULT, but we can
    always revert this if it turns out to be an issue.
    
    Cc: [email protected] # v5.6+
    Fixes: fddb5d430ad9 ("open: introduce openat2(2) syscall")
    Signed-off-by: Aleksa Sarai <[email protected]>
    Link: https://lore.kernel.org/r/20241010-extensible-structs-check_fields-v3-3-d2833dfe6edd@cyphar.com
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
platform/x86: dell-sysman: add support for alienware products [+ + +]
Author: Crag Wang <[email protected]>
Date:   Fri Oct 4 23:27:58 2024 +0800

    platform/x86: dell-sysman: add support for alienware products
    
    [ Upstream commit a561509b4187a8908eb7fbb2d1bf35bbc20ec74b ]
    
    Alienware supports firmware-attributes and has its own OEM string.
    
    Signed-off-by: Crag Wang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

platform/x86: dell-wmi: Ignore suspend notifications [+ + +]
Author: Armin Wolf <[email protected]>
Date:   Tue Oct 15 00:05:29 2024 +0200

    platform/x86: dell-wmi: Ignore suspend notifications
    
    commit a7990957fa53326fe9b47f0349373ed99bb69aaa upstream.
    
    Some machines like the Dell G15 5155 emit WMI events when
    suspending/resuming. Ignore those WMI events.
    
    Tested-by: [email protected]
    Signed-off-by: Armin Wolf <[email protected]>
    Acked-by: Pali Rohár <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
posix-clock: posix-clock: Fix unbalanced locking in pc_clock_settime() [+ + +]
Author: Jinjie Ruan <[email protected]>
Date:   Fri Oct 18 18:07:48 2024 +0800

    posix-clock: posix-clock: Fix unbalanced locking in pc_clock_settime()
    
    [ Upstream commit 6e62807c7fbb3c758d233018caf94dfea9c65dbd ]
    
    If get_clock_desc() succeeds, it calls fget() for the clockid's fd,
    and get the clk->rwsem read lock, so the error path should release
    the lock to make the lock balance and fput the clockid's fd to make
    the refcount balance and release the fd related resource.
    
    However the below commit left the error path locked behind resulting in
    unbalanced locking. Check timespec64_valid_strict() before
    get_clock_desc() to fix it, because the "ts" is not changed
    after that.
    
    Fixes: d8794ac20a29 ("posix-clock: Fix missing timespec64 check in pc_clock_settime()")
    Acked-by: Richard Cochran <[email protected]>
    Signed-off-by: Jinjie Ruan <[email protected]>
    Acked-by: Anna-Maria Behnsen <[email protected]>
    [[email protected]: fixed commit message typo]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
powercap: dtpm_devfreq: Fix error check against dev_pm_qos_add_request() [+ + +]
Author: Yuan Can <[email protected]>
Date:   Fri Oct 18 10:12:05 2024 +0800

    powercap: dtpm_devfreq: Fix error check against dev_pm_qos_add_request()
    
    [ Upstream commit 5209d1b654f1db80509040cc694c7814a1b547e3 ]
    
    The caller of the function dev_pm_qos_add_request() checks again a non
    zero value but dev_pm_qos_add_request() can return '1' if the request
    already exists. Therefore, the setup function fails while the QoS
    request actually did not failed.
    
    Fix that by changing the check against a negative value like all the
    other callers of the function.
    
    Fixes: e44655617317 ("powercap/drivers/dtpm: Add dtpm devfreq with energy model support")
    Signed-off-by: Yuan Can <[email protected]>
    Reviewed-by: Lukasz Luba <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Subject edit ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
r8169: avoid unsolicited interrupts [+ + +]
Author: Heiner Kallweit <[email protected]>
Date:   Fri Oct 18 11:08:16 2024 +0200

    r8169: avoid unsolicited interrupts
    
    [ Upstream commit 10ce0db787004875f4dba068ea952207d1d8abeb ]
    
    It was reported that after resume from suspend a PCI error is logged
    and connectivity is broken. Error message is:
    PCI error (cmd = 0x0407, status_errs = 0x0000)
    The message seems to be a red herring as none of the error bits is set,
    and the PCI command register value also is normal. Exception handling
    for a PCI error includes a chip reset what apparently brakes connectivity
    here. The interrupt status bit triggering the PCI error handling isn't
    actually used on PCIe chip versions, so it's not clear why this bit is
    set by the chip. Fix this by ignoring this bit on PCIe chip versions.
    
    Fixes: 0e4851502f84 ("r8169: merge with version 8.001.00 of Realtek's r8168 driver")
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219388
    Tested-by: Atlas Yu <[email protected]>
    Signed-off-by: Heiner Kallweit <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ravb: Remove setting of RX software timestamp [+ + +]
Author: Gal Pressman <[email protected]>
Date:   Sun Sep 1 14:27:55 2024 +0300

    ravb: Remove setting of RX software timestamp
    
    [ Upstream commit 277901ee3a2620679e2c8797377d2a72f4358068 ]
    
    The responsibility for reporting of RX software timestamp has moved to
    the core layer (see __ethtool_get_ts_info()), remove usage from the
    device drivers.
    
    Reviewed-by: Carolina Jubran <[email protected]>
    Reviewed-by: Rahul Rameshbabu <[email protected]>
    Signed-off-by: Gal Pressman <[email protected]>
    Reviewed-by: Niklas Söderlund <[email protected]>
    Reviewed-by: Sergey Shtylyov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 126e799602f4 ("net: ravb: Only advertise Rx/Tx timestamps if hardware supports it")
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/bnxt_re: Add a check for memory allocation [+ + +]
Author: Kalesh AP <[email protected]>
Date:   Wed Sep 18 20:05:58 2024 -0700

    RDMA/bnxt_re: Add a check for memory allocation
    
    [ Upstream commit c5c1ae73b7741fa3b58e6e001b407825bb971225 ]
    
    __alloc_pbl() can return error when memory allocation fails.
    Driver is not checking the status on one of the instances.
    
    Fixes: 0c4dcd602817 ("RDMA/bnxt_re: Refactor hardware queue memory allocation")
    Link: https://patch.msgid.link/r/[email protected]
    Reviewed-by: Selvin Xavier <[email protected]>
    Signed-off-by: Kalesh AP <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Fix a bug while setting up Level-2 PBL pages [+ + +]
Author: Bhargava Chenna Marreddy <[email protected]>
Date:   Tue Oct 8 00:41:41 2024 -0700

    RDMA/bnxt_re: Fix a bug while setting up Level-2 PBL pages
    
    [ Upstream commit 7988bdbbb85ac85a847baf09879edcd0f70521dc ]
    
    Avoid memory corruption while setting up Level-2 PBL pages for the non MR
    resources when num_pages > 256K.
    
    There will be a single PDE page address (contiguous pages in the case of >
    PAGE_SIZE), but, current logic assumes multiple pages, leading to invalid
    memory access after 256K PBL entries in the PDE.
    
    Fixes: 0c4dcd602817 ("RDMA/bnxt_re: Refactor hardware queue memory allocation")
    Link: https://patch.msgid.link/r/[email protected]
    Signed-off-by: Bhargava Chenna Marreddy <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Fix incorrect AVID type in WQE structure [+ + +]
Author: Saravanan Vajravel <[email protected]>
Date:   Wed Sep 18 20:05:57 2024 -0700

    RDMA/bnxt_re: Fix incorrect AVID type in WQE structure
    
    [ Upstream commit 9ab20f76ae9fad55ebaf36bdff04aea1c2552374 ]
    
    Driver uses internal data structure to construct WQE frame.
    It used avid type as u16 which can accommodate up to 64K AVs.
    When outstanding AVID crosses 64K, driver truncates AVID and
    hence it uses incorrect AVID to WR. This leads to WR failure
    due to invalid AV ID and QP is moved to error state with reason
    set to 19 (INVALID AVID). When RDMA CM path is used, this issue
    hits QP1 and it is moved to error state
    
    Fixes: 1ac5a4047975 ("RDMA/bnxt_re: Add bnxt_re RoCE driver")
    Link: https://patch.msgid.link/r/[email protected]
    Reviewed-by: Selvin Xavier <[email protected]>
    Reviewed-by: Chandramohan Akula <[email protected]>
    Signed-off-by: Saravanan Vajravel <[email protected]>
    Signed-off-by: Kalesh AP <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Return more meaningful error [+ + +]
Author: Kalesh AP <[email protected]>
Date:   Tue Oct 8 00:41:36 2024 -0700

    RDMA/bnxt_re: Return more meaningful error
    
    [ Upstream commit 98647df0178df215b8239c5c365537283b2852a6 ]
    
    When the HWRM command fails, driver currently returns -EFAULT(Bad
    address). This does not look correct.
    
    Modified to return -EIO(I/O error).
    
    Fixes: cc1ec769b87c ("RDMA/bnxt_re: Fixing the Control path command and response handling")
    Fixes: 65288a22ddd8 ("RDMA/bnxt_re: use shadow qd while posting non blocking rcfw command")
    Link: https://patch.msgid.link/r/[email protected]
    Signed-off-by: Kalesh AP <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/cxgb4: Fix RDMA_CM_EVENT_UNREACHABLE error for iWARP [+ + +]
Author: Anumula Murali Mohan Reddy <[email protected]>
Date:   Mon Oct 7 18:53:11 2024 +0530

    RDMA/cxgb4: Fix RDMA_CM_EVENT_UNREACHABLE error for iWARP
    
    [ Upstream commit c659b405b82ead335bee6eb33f9691bf718e21e8 ]
    
    ip_dev_find() always returns real net_device address, whether traffic is
    running on a vlan or real device, if traffic is over vlan, filling
    endpoint struture with real ndev and an attempt to send a connect request
    will results in RDMA_CM_EVENT_UNREACHABLE error.  This patch fixes the
    issue by using vlan_dev_real_dev().
    
    Fixes: 830662f6f032 ("RDMA/cxgb4: Add support for active and passive open connection with IPv6 address")
    Link: https://patch.msgid.link/r/[email protected]
    Signed-off-by: Anumula Murali Mohan Reddy <[email protected]>
    Signed-off-by: Potnuri Bharat Teja <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/irdma: Fix misspelling of "accept*" [+ + +]
Author: Alexander Zubkov <[email protected]>
Date:   Tue Oct 8 18:19:13 2024 +0200

    RDMA/irdma: Fix misspelling of "accept*"
    
    [ Upstream commit 8cddfa535c931b8d8110c73bfed7354a94cbf891 ]
    
    There is "accept*" misspelled as "accpet*" in the comments.  Fix the
    spelling.
    
    Fixes: 146b9756f14c ("RDMA/irdma: Add connection manager")
    Link: https://patch.msgid.link/r/[email protected]
    Signed-off-by: Alexander Zubkov <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/srpt: Make slab cache names unique [+ + +]
Author: Bart Van Assche <[email protected]>
Date:   Wed Oct 9 14:00:48 2024 -0700

    RDMA/srpt: Make slab cache names unique
    
    [ Upstream commit 4d784c042d164f10fc809e2338457036cd7c653d ]
    
    Since commit 4c39529663b9 ("slab: Warn on duplicate cache names when
    DEBUG_VM=y"), slab complains about duplicate cache names. Hence this
    patch. The approach is as follows:
    - Maintain an xarray with the slab size as index and a reference count
      and a kmem_cache pointer as contents. Use srpt-${slab_size} as kmem
      cache name.
    - Use 512-byte alignment for all slabs instead of only for some of the
      slabs.
    - Increment the reference count instead of calling kmem_cache_create().
    - Decrement the reference count instead of calling kmem_cache_destroy().
    
    Fixes: 5dabcd0456d7 ("RDMA/srpt: Add support for immediate data")
    Link: https://patch.msgid.link/r/[email protected]
    Reported-by: Shinichiro Kawasaki <[email protected]>
    Closes: https://lore.kernel.org/linux-block/xpe6bea7rakpyoyfvspvin2dsozjmjtjktpph7rep3h25tv7fb@ooz4cu5z6bq6/
    Suggested-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Bart Van Assche <[email protected]>
    Tested-by: Shin'ichiro Kawasaki <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
riscv, bpf: Make BPF_CMPXCHG fully ordered [+ + +]
Author: Andrea Parri <[email protected]>
Date:   Thu Oct 17 17:36:28 2024 +0300

    riscv, bpf: Make BPF_CMPXCHG fully ordered
    
    [ Upstream commit e59db0623f6955986d1be0880b351a1f56e7fd6d ]
    
    According to the prototype formal BPF memory consistency model
    discussed e.g. in [1] and following the ordering properties of
    the C/in-kernel macro atomic_cmpxchg(), a BPF atomic operation
    with the BPF_CMPXCHG modifier is fully ordered.  However, the
    current RISC-V JIT lowerings fail to meet such memory ordering
    property.  This is illustrated by the following litmus test:
    
    BPF BPF__MP+success_cmpxchg+fence
    {
     0:r1=x; 0:r3=y; 0:r5=1;
     1:r2=y; 1:r4=f; 1:r7=x;
    }
     P0                               | P1                                         ;
     *(u64 *)(r1 + 0) = 1             | r1 = *(u64 *)(r2 + 0)                      ;
     r2 = cmpxchg_64 (r3 + 0, r4, r5) | r3 = atomic_fetch_add((u64 *)(r4 + 0), r5) ;
                                      | r6 = *(u64 *)(r7 + 0)                      ;
    exists (1:r1=1 /\ 1:r6=0)
    
    whose "exists" clause is not satisfiable according to the BPF
    memory model.  Using the current RISC-V JIT lowerings, the test
    can be mapped to the following RISC-V litmus test:
    
    RISCV RISCV__MP+success_cmpxchg+fence
    {
     0:x1=x; 0:x3=y; 0:x5=1;
     1:x2=y; 1:x4=f; 1:x7=x;
    }
     P0                 | P1                          ;
     sd x5, 0(x1)       | ld x1, 0(x2)                ;
     L00:               | amoadd.d.aqrl x3, x5, 0(x4) ;
     lr.d x2, 0(x3)     | ld x6, 0(x7)                ;
     bne x2, x4, L01    |                             ;
     sc.d x6, x5, 0(x3) |                             ;
     bne x6, x4, L00    |                             ;
     fence rw, rw       |                             ;
     L01:               |                             ;
    exists (1:x1=1 /\ 1:x6=0)
    
    where the two stores in P0 can be reordered.  Update the RISC-V
    JIT lowerings/implementation of BPF_CMPXCHG to emit an SC with
    RELEASE ("rl") annotation in order to meet the expected memory
    ordering guarantees.  The resulting RISC-V JIT lowerings of
    BPF_CMPXCHG match the RISC-V lowerings of the C atomic_cmpxchg().
    
    Other lowerings were fixed via 20a759df3bba ("riscv, bpf: make
    some atomic operations fully ordered").
    
    Fixes: dd642ccb45ec ("riscv, bpf: Implement more atomic operations for RV64")
    Signed-off-by: Andrea Parri <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Reviewed-by: Puranjay Mohan <[email protected]>
    Acked-by: Björn Töpel <[email protected]>
    Link: https://lpc.events/event/18/contributions/1949/attachments/1665/3441/bpfmemmodel.2024.09.19p.pdf [1]
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
s390/pci: Handle PCI error codes other than 0x3a [+ + +]
Author: Niklas Schnelle <[email protected]>
Date:   Thu Apr 11 14:01:39 2024 +0200

    s390/pci: Handle PCI error codes other than 0x3a
    
    [ Upstream commit 3cd03ea57e8e16cc78cc357d5e9f26078426f236 ]
    
    The Linux implementation of PCI error recovery for s390 was based on the
    understanding that firmware error recovery is a two step process with an
    optional initial error event to indicate the cause of the error if known
    followed by either error event 0x3A (Success) or 0x3B (Failure) to
    indicate whether firmware was able to recover. While this has been the
    case in testing and the error cases seen in the wild it turns out this
    is not correct. Instead firmware only generates 0x3A for some error and
    service scenarios and expects the OS to perform recovery for all PCI
    events codes except for those indicating permanent error (0x3B, 0x40)
    and those indicating errors on the function measurement block (0x2A,
    0x2B, 0x2C). Align Linux behavior with these expectations.
    
    Fixes: 4cdf2f4e24ff ("s390/pci: implement minimal PCI error recovery")
    Reviewed-by: Gerd Bayer <[email protected]>
    Signed-off-by: Niklas Schnelle <[email protected]>
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
s390: Initialize psw mask in perf_arch_fetch_caller_regs() [+ + +]
Author: Heiko Carstens <[email protected]>
Date:   Thu Oct 10 17:52:39 2024 +0200

    s390: Initialize psw mask in perf_arch_fetch_caller_regs()
    
    [ Upstream commit 223e7fb979fa06934f1595b6ad0ae1d4ead1147f ]
    
    Also initialize regs->psw.mask in perf_arch_fetch_caller_regs().
    This way user_mode(regs) will return false, like it should.
    
    It looks like all current users initialize regs to zero, so that this
    doesn't fix a bug currently. However it is better to not rely on callers
    to do this.
    
    Fixes: 914d52e46490 ("s390: implement perf_arch_fetch_caller_regs")
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
scsi: target: core: Fix null-ptr-deref in target_alloc_device() [+ + +]
Author: Wang Hai <[email protected]>
Date:   Fri Oct 11 19:34:44 2024 +0800

    scsi: target: core: Fix null-ptr-deref in target_alloc_device()
    
    [ Upstream commit fca6caeb4a61d240f031914413fcc69534f6dc03 ]
    
    There is a null-ptr-deref issue reported by KASAN:
    
    BUG: KASAN: null-ptr-deref in target_alloc_device+0xbc4/0xbe0 [target_core_mod]
    ...
     kasan_report+0xb9/0xf0
     target_alloc_device+0xbc4/0xbe0 [target_core_mod]
     core_dev_setup_virtual_lun0+0xef/0x1f0 [target_core_mod]
     target_core_init_configfs+0x205/0x420 [target_core_mod]
     do_one_initcall+0xdd/0x4e0
    ...
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    In target_alloc_device(), if allocing memory for dev queues fails, then
    dev will be freed by dev->transport->free_device(), but dev->transport
    is not initialized at that time, which will lead to a null pointer
    reference problem.
    
    Fixing this bug by freeing dev with hba->backend->ops->free_device().
    
    Fixes: 1526d9f10c61 ("scsi: target: Make state_list per CPU")
    Signed-off-by: Wang Hai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Mike Christie <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/bpf: Fix cross-compiling urandom_read [+ + +]
Author: Tony Ambardar <[email protected]>
Date:   Tue Oct 8 21:07:20 2024 -0700

    selftests/bpf: Fix cross-compiling urandom_read
    
    [ Upstream commit fd526e121c4d6f71aed82d21a8b8277b03e60b43 ]
    
    Linking of urandom_read and liburandom_read.so prefers LLVM's 'ld.lld' but
    falls back to using 'ld' if unsupported. However, this fallback discards
    any existing makefile macro for LD and can break cross-compilation.
    
    Fix by changing the fallback to use the target linker $(LD), passed via
    '-fuse-ld=' using an absolute path rather than a linker "flavour".
    
    Fixes: 08c79c9cd67f ("selftests/bpf: Don't force lld on non-x86 architectures")
    Signed-off-by: Tony Ambardar <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
selinux: improve error checking in sel_write_load() [+ + +]
Author: Paul Moore <[email protected]>
Date:   Fri Oct 25 11:20:46 2024 -0300

    selinux: improve error checking in sel_write_load()
    
    [ Upstream commit 42c773238037c90b3302bf37a57ae3b5c3f6004a ]
    
    Move our existing input sanity checking to the top of sel_write_load()
    and add a check to ensure the buffer size is non-zero.
    
    Move a local variable initialization from the declaration to before it
    is used.
    
    Minor style adjustments.
    
    Reported-by: Sam Sun <[email protected]>
    Signed-off-by: Paul Moore <[email protected]>
    [cascardo: keep fsi initialization at its declaration point as it is used earlier]
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
serial: imx: Update mctrl old_status on RTSD interrupt [+ + +]
Author: Marek Vasut <[email protected]>
Date:   Wed Oct 2 20:40:38 2024 +0200

    serial: imx: Update mctrl old_status on RTSD interrupt
    
    [ Upstream commit 40d7903386df4d18f04d90510ba90eedee260085 ]
    
    When sending data using DMA at high baudrate (4 Mbdps in local test case) to
    a device with small RX buffer which keeps asserting RTS after every received
    byte, it is possible that the iMX UART driver would not recognize the falling
    edge of RTS input signal and get stuck, unable to transmit any more data.
    
    This condition happens when the following sequence of events occur:
    - imx_uart_mctrl_check() is called at some point and takes a snapshot of UART
      control signal status into sport->old_status using imx_uart_get_hwmctrl().
      The RTSS/TIOCM_CTS bit is of interest here (*).
    - DMA transfer occurs, the remote device asserts RTS signal after each byte.
      The i.MX UART driver recognizes each such RTS signal change, raises an
      interrupt with USR1 register RTSD bit set, which leads to invocation of
      __imx_uart_rtsint(), which calls uart_handle_cts_change().
      - If the RTS signal is deasserted, uart_handle_cts_change() clears
        port->hw_stopped and unblocks the port for further data transfers.
      - If the RTS is asserted, uart_handle_cts_change() sets port->hw_stopped
        and blocks the port for further data transfers. This may occur as the
        last interrupt of a transfer, which means port->hw_stopped remains set
        and the port remains blocked (**).
    - Any further data transfer attempts will trigger imx_uart_mctrl_check(),
      which will read current status of UART control signals by calling
      imx_uart_get_hwmctrl() (***) and compare it with sport->old_status .
      - If current status differs from sport->old_status for RTS signal,
        uart_handle_cts_change() is called and possibly unblocks the port
        by clearing port->hw_stopped .
      - If current status does not differ from sport->old_status for RTS
        signal, no action occurs. This may occur in case prior snapshot (*)
        was taken before any transfer so the RTS is deasserted, current
        snapshot (***) was taken after a transfer and therefore RTS is
        deasserted again, which means current status and sport->old_status
        are identical. In case (**) triggered when RTS got asserted, and
        made port->hw_stopped set, the port->hw_stopped will remain set
        because no change on RTS line is recognized by this driver and
        uart_handle_cts_change() is not called from here to unblock the
        port->hw_stopped.
    
    Update sport->old_status in __imx_uart_rtsint() accordingly to make
    imx_uart_mctrl_check() detect such RTS change. Note that TIOCM_CAR
    and TIOCM_RI bits in sport->old_status do not suffer from this problem.
    
    Fixes: ceca629e0b48 ("[ARM] 2971/1: i.MX uart handle rts irq")
    Cc: stable <[email protected]>
    Reviewed-by: Esben Haabendal <[email protected]>
    Signed-off-by: Marek Vasut <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

serial: Make uart_handle_cts_change() status param bool active [+ + +]
Author: Ilpo Järvinen <[email protected]>
Date:   Tue Jan 17 11:03:55 2023 +0200

    serial: Make uart_handle_cts_change() status param bool active
    
    [ Upstream commit 968d64578ec92968e8c79d766eb966efd1f68d7e ]
    
    Convert uart_handle_cts_change() to bool which is more appropriate
    than unsigned int.
    
    Rename status to active to better describe what the parameter means.
    While at it, make the comment about the active parameter easier to
    parse.
    
    Cleanup callsites from operations that are not necessary with bool.
    
    Reviewed-by: Jiri Slaby <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 40d7903386df ("serial: imx: Update mctrl old_status on RTSD interrupt")
    Signed-off-by: Sasha Levin <[email protected]>

serial: protect uart_port_dtr_rts() in uart_shutdown() too [+ + +]
Author: Jiri Slaby (SUSE) <[email protected]>
Date:   Fri Oct 25 11:05:48 2024 +0000

    serial: protect uart_port_dtr_rts() in uart_shutdown() too
    
    [ Upstream commit 602babaa84d627923713acaf5f7e9a4369e77473 ]
    
    Commit af224ca2df29 (serial: core: Prevent unsafe uart port access, part
    3) added few uport == NULL checks. It added one to uart_shutdown(), so
    the commit assumes, uport can be NULL in there. But right after that
    protection, there is an unprotected "uart_port_dtr_rts(uport, false);"
    call. That is invoked only if HUPCL is set, so I assume that is the
    reason why we do not see lots of these reports.
    
    Or it cannot be NULL at this point at all for some reason :P.
    
    Until the above is investigated, stay on the safe side and move this
    dereference to the if too.
    
    I got this inconsistency from Coverity under CID 1585130. Thanks.
    
    Signed-off-by: Jiri Slaby (SUSE) <[email protected]>
    Cc: Peter Hurley <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    [Adapted over commit 5701cb8bf50e ("tty: Call ->dtr_rts() parameter
    active consistently") not in the tree]
    Signed-off-by: Tomas Krcka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
smb: client: fix OOBs when building SMB2_IOCTL request [+ + +]
Author: Paulo Alcantara <[email protected]>
Date:   Tue Oct 15 19:04:04 2024 -0300

    smb: client: fix OOBs when building SMB2_IOCTL request
    
    [ Upstream commit 1ab60323c5201bef25f2a3dc0ccc404d9aca77f1 ]
    
    When using encryption, either enforced by the server or when using
    'seal' mount option, the client will squash all compound request buffers
    down for encryption into a single iov in smb2_set_next_command().
    
    SMB2_ioctl_init() allocates a small buffer (448 bytes) to hold the
    SMB2_IOCTL request in the first iov, and if the user passes an input
    buffer that is greater than 328 bytes, smb2_set_next_command() will
    end up writing off the end of @rqst->iov[0].iov_base as shown below:
    
      mount.cifs //srv/share /mnt -o ...,seal
      ln -s $(perl -e "print('a')for 1..1024") /mnt/link
    
      BUG: KASAN: slab-out-of-bounds in
      smb2_set_next_command.cold+0x1d6/0x24c [cifs]
      Write of size 4116 at addr ffff8881148fcab8 by task ln/859
    
      CPU: 1 UID: 0 PID: 859 Comm: ln Not tainted 6.12.0-rc3 #1
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
      1.16.3-2.fc40 04/01/2014
      Call Trace:
       <TASK>
       dump_stack_lvl+0x5d/0x80
       ? smb2_set_next_command.cold+0x1d6/0x24c [cifs]
       print_report+0x156/0x4d9
       ? smb2_set_next_command.cold+0x1d6/0x24c [cifs]
       ? __virt_addr_valid+0x145/0x310
       ? __phys_addr+0x46/0x90
       ? smb2_set_next_command.cold+0x1d6/0x24c [cifs]
       kasan_report+0xda/0x110
       ? smb2_set_next_command.cold+0x1d6/0x24c [cifs]
       kasan_check_range+0x10f/0x1f0
       __asan_memcpy+0x3c/0x60
       smb2_set_next_command.cold+0x1d6/0x24c [cifs]
       smb2_compound_op+0x238c/0x3840 [cifs]
       ? kasan_save_track+0x14/0x30
       ? kasan_save_free_info+0x3b/0x70
       ? vfs_symlink+0x1a1/0x2c0
       ? do_symlinkat+0x108/0x1c0
       ? __pfx_smb2_compound_op+0x10/0x10 [cifs]
       ? kmem_cache_free+0x118/0x3e0
       ? cifs_get_writable_path+0xeb/0x1a0 [cifs]
       smb2_get_reparse_inode+0x423/0x540 [cifs]
       ? __pfx_smb2_get_reparse_inode+0x10/0x10 [cifs]
       ? rcu_is_watching+0x20/0x50
       ? __kmalloc_noprof+0x37c/0x480
       ? smb2_create_reparse_symlink+0x257/0x490 [cifs]
       ? smb2_create_reparse_symlink+0x38f/0x490 [cifs]
       smb2_create_reparse_symlink+0x38f/0x490 [cifs]
       ? __pfx_smb2_create_reparse_symlink+0x10/0x10 [cifs]
       ? find_held_lock+0x8a/0xa0
       ? hlock_class+0x32/0xb0
       ? __build_path_from_dentry_optional_prefix+0x19d/0x2e0 [cifs]
       cifs_symlink+0x24f/0x960 [cifs]
       ? __pfx_make_vfsuid+0x10/0x10
       ? __pfx_cifs_symlink+0x10/0x10 [cifs]
       ? make_vfsgid+0x6b/0xc0
       ? generic_permission+0x96/0x2d0
       vfs_symlink+0x1a1/0x2c0
       do_symlinkat+0x108/0x1c0
       ? __pfx_do_symlinkat+0x10/0x10
       ? strncpy_from_user+0xaa/0x160
       __x64_sys_symlinkat+0xb9/0xf0
       do_syscall_64+0xbb/0x1d0
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
      RIP: 0033:0x7f08d75c13bb
    
    Reported-by: David Howells <[email protected]>
    Fixes: e77fe73c7e38 ("cifs: we can not use small padding iovs together with encryption")
    Signed-off-by: Paulo Alcantara (Red Hat) <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tcp/dccp: Don't use timer_pending() in reqsk_queue_unlink(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Mon Oct 14 15:33:12 2024 -0700

    tcp/dccp: Don't use timer_pending() in reqsk_queue_unlink().
    
    [ Upstream commit e8c526f2bdf1845bedaf6a478816a3d06fa78b8f ]
    
    Martin KaFai Lau reported use-after-free [0] in reqsk_timer_handler().
    
      """
      We are seeing a use-after-free from a bpf prog attached to
      trace_tcp_retransmit_synack. The program passes the req->sk to the
      bpf_sk_storage_get_tracing kernel helper which does check for null
      before using it.
      """
    
    The commit 83fccfc3940c ("inet: fix potential deadlock in
    reqsk_queue_unlink()") added timer_pending() in reqsk_queue_unlink() not
    to call del_timer_sync() from reqsk_timer_handler(), but it introduced a
    small race window.
    
    Before the timer is called, expire_timers() calls detach_timer(timer, true)
    to clear timer->entry.pprev and marks it as not pending.
    
    If reqsk_queue_unlink() checks timer_pending() just after expire_timers()
    calls detach_timer(), TCP will miss del_timer_sync(); the reqsk timer will
    continue running and send multiple SYN+ACKs until it expires.
    
    The reported UAF could happen if req->sk is close()d earlier than the timer
    expiration, which is 63s by default.
    
    The scenario would be
    
      1. inet_csk_complete_hashdance() calls inet_csk_reqsk_queue_drop(),
         but del_timer_sync() is missed
    
      2. reqsk timer is executed and scheduled again
    
      3. req->sk is accept()ed and reqsk_put() decrements rsk_refcnt, but
         reqsk timer still has another one, and inet_csk_accept() does not
         clear req->sk for non-TFO sockets
    
      4. sk is close()d
    
      5. reqsk timer is executed again, and BPF touches req->sk
    
    Let's not use timer_pending() by passing the caller context to
    __inet_csk_reqsk_queue_drop().
    
    Note that reqsk timer is pinned, so the issue does not happen in most
    use cases. [1]
    
    [0]
    BUG: KFENCE: use-after-free read in bpf_sk_storage_get_tracing+0x2e/0x1b0
    
    Use-after-free read at 0x00000000a891fb3a (in kfence-#1):
    bpf_sk_storage_get_tracing+0x2e/0x1b0
    bpf_prog_5ea3e95db6da0438_tcp_retransmit_synack+0x1d20/0x1dda
    bpf_trace_run2+0x4c/0xc0
    tcp_rtx_synack+0xf9/0x100
    reqsk_timer_handler+0xda/0x3d0
    run_timer_softirq+0x292/0x8a0
    irq_exit_rcu+0xf5/0x320
    sysvec_apic_timer_interrupt+0x6d/0x80
    asm_sysvec_apic_timer_interrupt+0x16/0x20
    intel_idle_irq+0x5a/0xa0
    cpuidle_enter_state+0x94/0x273
    cpu_startup_entry+0x15e/0x260
    start_secondary+0x8a/0x90
    secondary_startup_64_no_verify+0xfa/0xfb
    
    kfence-#1: 0x00000000a72cc7b6-0x00000000d97616d9, size=2376, cache=TCPv6
    
    allocated by task 0 on cpu 9 at 260507.901592s:
    sk_prot_alloc+0x35/0x140
    sk_clone_lock+0x1f/0x3f0
    inet_csk_clone_lock+0x15/0x160
    tcp_create_openreq_child+0x1f/0x410
    tcp_v6_syn_recv_sock+0x1da/0x700
    tcp_check_req+0x1fb/0x510
    tcp_v6_rcv+0x98b/0x1420
    ipv6_list_rcv+0x2258/0x26e0
    napi_complete_done+0x5b1/0x2990
    mlx5e_napi_poll+0x2ae/0x8d0
    net_rx_action+0x13e/0x590
    irq_exit_rcu+0xf5/0x320
    common_interrupt+0x80/0x90
    asm_common_interrupt+0x22/0x40
    cpuidle_enter_state+0xfb/0x273
    cpu_startup_entry+0x15e/0x260
    start_secondary+0x8a/0x90
    secondary_startup_64_no_verify+0xfa/0xfb
    
    freed by task 0 on cpu 9 at 260507.927527s:
    rcu_core_si+0x4ff/0xf10
    irq_exit_rcu+0xf5/0x320
    sysvec_apic_timer_interrupt+0x6d/0x80
    asm_sysvec_apic_timer_interrupt+0x16/0x20
    cpuidle_enter_state+0xfb/0x273
    cpu_startup_entry+0x15e/0x260
    start_secondary+0x8a/0x90
    secondary_startup_64_no_verify+0xfa/0xfb
    
    Fixes: 83fccfc3940c ("inet: fix potential deadlock in reqsk_queue_unlink()")
    Reported-by: Martin KaFai Lau <[email protected]>
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Link: https://lore.kernel.org/netdev/[email protected]/ [1]
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Reviewed-by: Martin KaFai Lau <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tracing: Consider the NULL character when validating the event length [+ + +]
Author: Leo Yan <[email protected]>
Date:   Mon Oct 7 15:47:24 2024 +0100

    tracing: Consider the NULL character when validating the event length
    
    [ Upstream commit 0b6e2e22cb23105fcb171ab92f0f7516c69c8471 ]
    
    strlen() returns a string length excluding the null byte. If the string
    length equals to the maximum buffer length, the buffer will have no
    space for the NULL terminating character.
    
    This commit checks this condition and returns failure for it.
    
    Link: https://lore.kernel.org/all/[email protected]/
    
    Fixes: dec65d79fd26 ("tracing/probe: Check event name length correctly")
    Signed-off-by: Leo Yan <[email protected]>
    Reviewed-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tty/serial: Make ->dcd_change()+uart_handle_dcd_change() status bool active [+ + +]
Author: Ilpo Järvinen <[email protected]>
Date:   Tue Jan 17 11:03:54 2023 +0200

    tty/serial: Make ->dcd_change()+uart_handle_dcd_change() status bool active
    
    [ Upstream commit 0388a152fc5544be82e736343496f99c4eef8d62 ]
    
    Convert status parameter for ->dcd_change() and
    uart_handle_dcd_change() to bool which matches to how the parameter is
    used.
    
    Rename status to active to better describe what the parameter means.
    
    Acked-by: Rodolfo Giometti <[email protected]>
    Reviewed-by: Jiri Slaby <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 40d7903386df ("serial: imx: Update mctrl old_status on RTSD interrupt")
    Signed-off-by: Sasha Levin <[email protected]>

 
udf: fix uninit-value use in udf_get_fileshortad [+ + +]
Author: Gianfranco Trad <[email protected]>
Date:   Wed Sep 25 09:46:15 2024 +0200

    udf: fix uninit-value use in udf_get_fileshortad
    
    [ Upstream commit 264db9d666ad9a35075cc9ed9ec09d021580fbb1 ]
    
    Check for overflow when computing alen in udf_current_aext to mitigate
    later uninit-value use in udf_get_fileshortad KMSAN bug[1].
    After applying the patch reproducer did not trigger any issue[2].
    
    [1] https://syzkaller.appspot.com/bug?extid=8901c4560b7ab5c2f9df
    [2] https://syzkaller.appspot.com/x/log.txt?x=10242227980000
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=8901c4560b7ab5c2f9df
    Tested-by: [email protected]
    Suggested-by: Jan Kara <[email protected]>
    Signed-off-by: Gianfranco Trad <[email protected]>
    Signed-off-by: Jan Kara <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

udf: refactor udf_current_aext() to handle error [+ + +]
Author: Zhao Mengmeng <[email protected]>
Date:   Tue Oct 1 19:54:23 2024 +0800

    udf: refactor udf_current_aext() to handle error
    
    [ Upstream commit ee703a7068f95764cfb62b57db1d36e465cb9b26 ]
    
    As Jan suggested in links below, refactor udf_current_aext() to
    differentiate between error, hit EOF and success, it now takes pointer to
    etype to store the extent type, return 1 when getting etype success,
    return 0 when hitting EOF and return -errno when err.
    
    Link: https://lore.kernel.org/all/20240912111235.6nr3wuqvktecy3vh@quack3/
    Signed-off-by: Zhao Mengmeng <[email protected]>
    Suggested-by: Jan Kara <[email protected]>
    Signed-off-by: Jan Kara <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
usb: dwc3: core: Fix system suspend on TI AM62 platforms [+ + +]
Author: Roger Quadros <[email protected]>
Date:   Fri Oct 11 13:53:24 2024 +0300

    usb: dwc3: core: Fix system suspend on TI AM62 platforms
    
    [ Upstream commit 705e3ce37bccdf2ed6f848356ff355f480d51a91 ]
    
    Since commit 6d735722063a ("usb: dwc3: core: Prevent phy suspend during init"),
    system suspend is broken on AM62 TI platforms.
    
    Before that commit, both DWC3_GUSB3PIPECTL_SUSPHY and DWC3_GUSB2PHYCFG_SUSPHY
    bits (hence forth called 2 SUSPHY bits) were being set during core
    initialization and even during core re-initialization after a system
    suspend/resume.
    
    These bits are required to be set for system suspend/resume to work correctly
    on AM62 platforms.
    
    Since that commit, the 2 SUSPHY bits are not set for DEVICE/OTG mode if gadget
    driver is not loaded and started.
    For Host mode, the 2 SUSPHY bits are set before the first system suspend but
    get cleared at system resume during core re-init and are never set again.
    
    This patch resovles these two issues by ensuring the 2 SUSPHY bits are set
    before system suspend and restored to the original state during system resume.
    
    Cc: [email protected] # v6.9+
    Fixes: 6d735722063a ("usb: dwc3: core: Prevent phy suspend during init")
    Link: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Roger Quadros <[email protected]>
    Acked-by: Thinh Nguyen <[email protected]>
    Tested-by: Markus Schneider-Pargmann <[email protected]>
    Reviewed-by: Dhruva Gole <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: gadget: Add function wakeup support [+ + +]
Author: Elson Roy Serrao <[email protected]>
Date:   Fri Mar 24 14:47:59 2023 -0700

    usb: gadget: Add function wakeup support
    
    [ Upstream commit f0db885fb05d35befa81896db6b19eb3ee9ccdfe ]
    
    USB3.2 spec section 9.2.5.4 quotes that a function may signal that
    it wants to exit from Function Suspend by sending a Function
    Wake Notification to the host if it is enabled for function
    remote wakeup. Add an api in composite layer that can be used
    by the function drivers to support this feature. Also expose
    a gadget op so that composite layer can trigger a wakeup request
    to the UDC driver.
    
    Reviewed-by: Thinh Nguyen <[email protected]>
    Signed-off-by: Elson Roy Serrao <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 705e3ce37bcc ("usb: dwc3: core: Fix system suspend on TI AM62 platforms")
    Signed-off-by: Sasha Levin <[email protected]>

usb: gadget: f_uac2: fix non-newline-terminated function name [+ + +]
Author: John Keeping <[email protected]>
Date:   Mon Jul 8 15:25:53 2024 +0100

    usb: gadget: f_uac2: fix non-newline-terminated function name
    
    [ Upstream commit e60284b63245b84c3ae352427ed5ff8b79266b91 ]
    
    Most writes to configfs handle an optional newline, but do not require
    it.  By using the number of bytes written as the limit for scnprintf()
    it is guaranteed that the final character in the buffer will be
    overwritten.
    
    This is expected if it is a newline but is undesirable when a string is
    written "as-is" (as libusbgx does, for example).
    
    Update the store function to strip an optional newline, matching the
    behaviour of usb_string_copy().
    
    Signed-off-by: John Keeping <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 9499327714de ("usb: gadget: f_uac2: fix return value for UAC2_ATTRIBUTE_STRING store")
    Signed-off-by: Sasha Levin <[email protected]>

usb: gadget: f_uac2: fix return value for UAC2_ATTRIBUTE_STRING store [+ + +]
Author: Kevin Groeneveld <[email protected]>
Date:   Sun Oct 6 19:26:31 2024 -0400

    usb: gadget: f_uac2: fix return value for UAC2_ATTRIBUTE_STRING store
    
    [ Upstream commit 9499327714de7bc5cf6c792112c1474932d8ad31 ]
    
    The configfs store callback should return the number of bytes consumed
    not the total number of bytes we actually stored. These could differ if
    for example the passed in string had a newline we did not store.
    
    If the returned value does not match the number of bytes written the
    writer might assume a failure or keep trying to write the remaining bytes.
    
    For example the following command will hang trying to write the final
    newline over and over again (tested on bash 2.05b):
    
      echo foo > function_name
    
    Fixes: 993a44fa85c1 ("usb: gadget: f_uac2: allow changing interface name via configfs")
    Cc: stable <[email protected]>
    Signed-off-by: Kevin Groeneveld <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: gadget: f_uac2: Replace snprintf() with the safer scnprintf() variant [+ + +]
Author: Lee Jones <[email protected]>
Date:   Wed Dec 13 16:42:32 2023 +0000

    usb: gadget: f_uac2: Replace snprintf() with the safer scnprintf() variant
    
    [ Upstream commit 60034e0aedf507888c4a880f57011bb7f5d7700c ]
    
    There is a general misunderstanding amongst engineers that {v}snprintf()
    returns the length of the data *actually* encoded into the destination
    array.  However, as per the C99 standard {v}snprintf() really returns
    the length of the data that *would have been* written if there were
    enough space for it.  This misunderstanding has led to buffer-overruns
    in the past.  It's generally considered safer to use the {v}scnprintf()
    variants in their place (or even sprintf() in simple cases).  So let's
    do that.
    
    Link: https://lwn.net/Articles/69419/
    Link: https://github.com/KSPP/linux/issues/105
    Cc: James Gruber <[email protected]>
    Cc: Yadwinder Singh <[email protected]>
    Cc: Jaswinder Singh <[email protected]>
    Cc: Ruslan Bilovol <[email protected]>
    Signed-off-by: Lee Jones <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 9499327714de ("usb: gadget: f_uac2: fix return value for UAC2_ATTRIBUTE_STRING store")
    Signed-off-by: Sasha Levin <[email protected]>

usb: typec: altmode should keep reference to parent [+ + +]
Author: Thadeu Lima de Souza Cascardo <[email protected]>
Date:   Fri Oct 4 09:37:38 2024 -0300

    usb: typec: altmode should keep reference to parent
    
    [ Upstream commit befab3a278c59db0cc88c8799638064f6d3fd6f8 ]
    
    The altmode device release refers to its parent device, but without keeping
    a reference to it.
    
    When registering the altmode, get a reference to the parent and put it in
    the release function.
    
    Before this fix, when using CONFIG_DEBUG_KOBJECT_RELEASE, we see issues
    like this:
    
    [   43.572860] kobject: 'port0.0' (ffff8880057ba008): kobject_release, parent 0000000000000000 (delayed 3000)
    [   43.573532] kobject: 'port0.1' (ffff8880057bd008): kobject_release, parent 0000000000000000 (delayed 1000)
    [   43.574407] kobject: 'port0' (ffff8880057b9008): kobject_release, parent 0000000000000000 (delayed 3000)
    [   43.575059] kobject: 'port1.0' (ffff8880057ca008): kobject_release, parent 0000000000000000 (delayed 4000)
    [   43.575908] kobject: 'port1.1' (ffff8880057c9008): kobject_release, parent 0000000000000000 (delayed 4000)
    [   43.576908] kobject: 'typec' (ffff8880062dbc00): kobject_release, parent 0000000000000000 (delayed 4000)
    [   43.577769] kobject: 'port1' (ffff8880057bf008): kobject_release, parent 0000000000000000 (delayed 3000)
    [   46.612867] ==================================================================
    [   46.613402] BUG: KASAN: slab-use-after-free in typec_altmode_release+0x38/0x129
    [   46.614003] Read of size 8 at addr ffff8880057b9118 by task kworker/2:1/48
    [   46.614538]
    [   46.614668] CPU: 2 UID: 0 PID: 48 Comm: kworker/2:1 Not tainted 6.12.0-rc1-00138-gedbae730ad31 #535
    [   46.615391] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.15.0-1 04/01/2014
    [   46.616042] Workqueue: events kobject_delayed_cleanup
    [   46.616446] Call Trace:
    [   46.616648]  <TASK>
    [   46.616820]  dump_stack_lvl+0x5b/0x7c
    [   46.617112]  ? typec_altmode_release+0x38/0x129
    [   46.617470]  print_report+0x14c/0x49e
    [   46.617769]  ? rcu_read_unlock_sched+0x56/0x69
    [   46.618117]  ? __virt_addr_valid+0x19a/0x1ab
    [   46.618456]  ? kmem_cache_debug_flags+0xc/0x1d
    [   46.618807]  ? typec_altmode_release+0x38/0x129
    [   46.619161]  kasan_report+0x8d/0xb4
    [   46.619447]  ? typec_altmode_release+0x38/0x129
    [   46.619809]  ? process_scheduled_works+0x3cb/0x85f
    [   46.620185]  typec_altmode_release+0x38/0x129
    [   46.620537]  ? process_scheduled_works+0x3cb/0x85f
    [   46.620907]  device_release+0xaf/0xf2
    [   46.621206]  kobject_delayed_cleanup+0x13b/0x17a
    [   46.621584]  process_scheduled_works+0x4f6/0x85f
    [   46.621955]  ? __pfx_process_scheduled_works+0x10/0x10
    [   46.622353]  ? hlock_class+0x31/0x9a
    [   46.622647]  ? lock_acquired+0x361/0x3c3
    [   46.622956]  ? move_linked_works+0x46/0x7d
    [   46.623277]  worker_thread+0x1ce/0x291
    [   46.623582]  ? __kthread_parkme+0xc8/0xdf
    [   46.623900]  ? __pfx_worker_thread+0x10/0x10
    [   46.624236]  kthread+0x17e/0x190
    [   46.624501]  ? kthread+0xfb/0x190
    [   46.624756]  ? __pfx_kthread+0x10/0x10
    [   46.625015]  ret_from_fork+0x20/0x40
    [   46.625268]  ? __pfx_kthread+0x10/0x10
    [   46.625532]  ret_from_fork_asm+0x1a/0x30
    [   46.625805]  </TASK>
    [   46.625953]
    [   46.626056] Allocated by task 678:
    [   46.626287]  kasan_save_stack+0x24/0x44
    [   46.626555]  kasan_save_track+0x14/0x2d
    [   46.626811]  __kasan_kmalloc+0x3f/0x4d
    [   46.627049]  __kmalloc_noprof+0x1bf/0x1f0
    [   46.627362]  typec_register_port+0x23/0x491
    [   46.627698]  cros_typec_probe+0x634/0xbb6
    [   46.628026]  platform_probe+0x47/0x8c
    [   46.628311]  really_probe+0x20a/0x47d
    [   46.628605]  device_driver_attach+0x39/0x72
    [   46.628940]  bind_store+0x87/0xd7
    [   46.629213]  kernfs_fop_write_iter+0x1aa/0x218
    [   46.629574]  vfs_write+0x1d6/0x29b
    [   46.629856]  ksys_write+0xcd/0x13b
    [   46.630128]  do_syscall_64+0xd4/0x139
    [   46.630420]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
    [   46.630820]
    [   46.630946] Freed by task 48:
    [   46.631182]  kasan_save_stack+0x24/0x44
    [   46.631493]  kasan_save_track+0x14/0x2d
    [   46.631799]  kasan_save_free_info+0x3f/0x4d
    [   46.632144]  __kasan_slab_free+0x37/0x45
    [   46.632474]  kfree+0x1d4/0x252
    [   46.632725]  device_release+0xaf/0xf2
    [   46.633017]  kobject_delayed_cleanup+0x13b/0x17a
    [   46.633388]  process_scheduled_works+0x4f6/0x85f
    [   46.633764]  worker_thread+0x1ce/0x291
    [   46.634065]  kthread+0x17e/0x190
    [   46.634324]  ret_from_fork+0x20/0x40
    [   46.634621]  ret_from_fork_asm+0x1a/0x30
    
    Fixes: 8a37d87d72f0 ("usb: typec: Bus type for alternate modes")
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Reviewed-by: Heikki Krogerus <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/resctrl: Avoid overflow in MB settings in bw_validate() [+ + +]
Author: Martin Kletzander <[email protected]>
Date:   Tue Oct 1 13:43:56 2024 +0200

    x86/resctrl: Avoid overflow in MB settings in bw_validate()
    
    [ Upstream commit 2b5648416e47933939dc310c4ea1e29404f35630 ]
    
    The resctrl schemata file supports specifying memory bandwidth associated with
    the Memory Bandwidth Allocation (MBA) feature via a percentage (this is the
    default) or bandwidth in MiBps (when resctrl is mounted with the "mba_MBps"
    option).
    
    The allowed range for the bandwidth percentage is from
    /sys/fs/resctrl/info/MB/min_bandwidth to 100, using a granularity of
    /sys/fs/resctrl/info/MB/bandwidth_gran. The supported range for the MiBps
    bandwidth is 0 to U32_MAX.
    
    There are two issues with parsing of MiBps memory bandwidth:
    
    * The user provided MiBps is mistakenly rounded up to the granularity
      that is unique to percentage input.
    
    * The user provided MiBps is parsed using unsigned long (thus accepting
      values up to ULONG_MAX), and then assigned to u32 that could result in
      overflow.
    
    Do not round up the MiBps value and parse user provided bandwidth as the u32
    it is intended to be. Use the appropriate kstrtou32() that can detect out of
    range values.
    
    Fixes: 8205a078ba78 ("x86/intel_rdt/mba_sc: Add schemata support")
    Fixes: 6ce1560d35f6 ("x86/resctrl: Switch over to the resctrl mbps_val list")
    Co-developed-by: Reinette Chatre <[email protected]>
    Signed-off-by: Reinette Chatre <[email protected]>
    Signed-off-by: Martin Kletzander <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Reviewed-by: Reinette Chatre <[email protected]>
    Reviewed-by: Tony Luck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xfrm: extract dst lookup parameters into a struct [+ + +]
Author: Eyal Birger <[email protected]>
Date:   Mon Sep 2 17:07:09 2024 -0700

    xfrm: extract dst lookup parameters into a struct
    
    [ Upstream commit e509996b16728e37d5a909a5c63c1bd64f23b306 ]
    
    Preparation for adding more fields to dst lookup functions without
    changing their signatures.
    
    Signed-off-by: Eyal Birger <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Stable-dep-of: b84697210343 ("xfrm: respect ip protocols rules criteria when performing dst lookups")
    Signed-off-by: Sasha Levin <[email protected]>

xfrm: fix one more kernel-infoleak in algo dumping [+ + +]
Author: Petr Vaganov <[email protected]>
Date:   Tue Oct 8 14:02:58 2024 +0500

    xfrm: fix one more kernel-infoleak in algo dumping
    
    commit 6889cd2a93e1e3606b3f6e958aa0924e836de4d2 upstream.
    
    During fuzz testing, the following issue was discovered:
    
    BUG: KMSAN: kernel-infoleak in _copy_to_iter+0x598/0x2a30
     _copy_to_iter+0x598/0x2a30
     __skb_datagram_iter+0x168/0x1060
     skb_copy_datagram_iter+0x5b/0x220
     netlink_recvmsg+0x362/0x1700
     sock_recvmsg+0x2dc/0x390
     __sys_recvfrom+0x381/0x6d0
     __x64_sys_recvfrom+0x130/0x200
     x64_sys_call+0x32c8/0x3cc0
     do_syscall_64+0xd8/0x1c0
     entry_SYSCALL_64_after_hwframe+0x79/0x81
    
    Uninit was stored to memory at:
     copy_to_user_state_extra+0xcc1/0x1e00
     dump_one_state+0x28c/0x5f0
     xfrm_state_walk+0x548/0x11e0
     xfrm_dump_sa+0x1e0/0x840
     netlink_dump+0x943/0x1c40
     __netlink_dump_start+0x746/0xdb0
     xfrm_user_rcv_msg+0x429/0xc00
     netlink_rcv_skb+0x613/0x780
     xfrm_netlink_rcv+0x77/0xc0
     netlink_unicast+0xe90/0x1280
     netlink_sendmsg+0x126d/0x1490
     __sock_sendmsg+0x332/0x3d0
     ____sys_sendmsg+0x863/0xc30
     ___sys_sendmsg+0x285/0x3e0
     __x64_sys_sendmsg+0x2d6/0x560
     x64_sys_call+0x1316/0x3cc0
     do_syscall_64+0xd8/0x1c0
     entry_SYSCALL_64_after_hwframe+0x79/0x81
    
    Uninit was created at:
     __kmalloc+0x571/0xd30
     attach_auth+0x106/0x3e0
     xfrm_add_sa+0x2aa0/0x4230
     xfrm_user_rcv_msg+0x832/0xc00
     netlink_rcv_skb+0x613/0x780
     xfrm_netlink_rcv+0x77/0xc0
     netlink_unicast+0xe90/0x1280
     netlink_sendmsg+0x126d/0x1490
     __sock_sendmsg+0x332/0x3d0
     ____sys_sendmsg+0x863/0xc30
     ___sys_sendmsg+0x285/0x3e0
     __x64_sys_sendmsg+0x2d6/0x560
     x64_sys_call+0x1316/0x3cc0
     do_syscall_64+0xd8/0x1c0
     entry_SYSCALL_64_after_hwframe+0x79/0x81
    
    Bytes 328-379 of 732 are uninitialized
    Memory access of size 732 starts at ffff88800e18e000
    Data copied to user address 00007ff30f48aff0
    
    CPU: 2 PID: 18167 Comm: syz-executor.0 Not tainted 6.8.11 #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
    
    Fixes copying of xfrm algorithms where some random
    data of the structure fields can end up in userspace.
    Padding in structures may be filled with random (possibly sensitve)
    data and should never be given directly to user-space.
    
    A similar issue was resolved in the commit
    8222d5910dae ("xfrm: Zero padding when dumping algos and encap")
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: c7a5899eb26e ("xfrm: redact SA secret with lockdown confidentiality")
    Cc: [email protected]
    Co-developed-by: Boris Tonofa <[email protected]>
    Signed-off-by: Boris Tonofa <[email protected]>
    Signed-off-by: Petr Vaganov <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

xfrm: respect ip protocols rules criteria when performing dst lookups [+ + +]
Author: Eyal Birger <[email protected]>
Date:   Mon Sep 2 17:07:10 2024 -0700

    xfrm: respect ip protocols rules criteria when performing dst lookups
    
    [ Upstream commit b8469721034300bbb6dec5b4bf32492c95e16a0c ]
    
    The series in the "fixes" tag added the ability to consider L4 attributes
    in routing rules.
    
    The dst lookup on the outer packet of encapsulated traffic in the xfrm
    code was not adapted to this change, thus routing behavior that relies
    on L4 information is not respected.
    
    Pass the ip protocol information when performing dst lookups.
    
    Fixes: a25724b05af0 ("Merge branch 'fib_rules-support-sport-dport-and-proto-match'")
    Signed-off-by: Eyal Birger <[email protected]>
    Tested-by: Antony Antony <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

xfrm: validate new SA's prefixlen using SA family when sel.family is unset [+ + +]
Author: Sabrina Dubroca <[email protected]>
Date:   Tue Oct 1 18:48:14 2024 +0200

    xfrm: validate new SA's prefixlen using SA family when sel.family is unset
    
    [ Upstream commit 3f0ab59e6537c6a8f9e1b355b48f9c05a76e8563 ]
    
    This expands the validation introduced in commit 07bf7908950a ("xfrm:
    Validate address prefix lengths in the xfrm selector.")
    
    syzbot created an SA with
        usersa.sel.family = AF_UNSPEC
        usersa.sel.prefixlen_s = 128
        usersa.family = AF_INET
    
    Because of the AF_UNSPEC selector, verify_newsa_info doesn't put
    limits on prefixlen_{s,d}. But then copy_from_user_state sets
    x->sel.family to usersa.family (AF_INET). Do the same conversion in
    verify_newsa_info before validating prefixlen_{s,d}, since that's how
    prefixlen is going to be used later on.
    
    Reported-by: [email protected]
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Sabrina Dubroca <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Signed-off-by: Antony Antony <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xhci: dbc: honor usb transfer size boundaries. [+ + +]
Author: Mathias Nyman <[email protected]>
Date:   Wed Oct 16 17:00:00 2024 +0300

    xhci: dbc: honor usb transfer size boundaries.
    
    [ Upstream commit 30c9ae5ece8ecd69d36e6912c2c0896418f2468c ]
    
    Treat each completed full size write to /dev/ttyDBC0 as a separate usb
    transfer. Make sure the size of the TRBs matches the size of the tty
    write by first queuing as many max packet size TRBs as possible up to
    the last TRB which will be cut short to match the size of the tty write.
    
    This solves an issue where userspace writes several transfers back to
    back via /dev/ttyDBC0 into a kfifo before dbgtty can find available
    request to turn that kfifo data into TRBs on the transfer ring.
    
    The boundary between transfer was lost as xhci-dbgtty then turned
    everyting in the kfifo into as many 'max packet size' TRBs as possible.
    
    DbC would then send more data to the host than intended for that
    transfer, causing host to issue a babble error.
    
    Refuse to write more data to kfifo until previous tty write data is
    turned into properly sized TRBs with data size boundaries matching tty
    write size
    
    Tested-by: Uday M Bhat <[email protected]>
    Tested-by: Łukasz Bartosik <[email protected]>
    Cc: [email protected]
    Signed-off-by: Mathias Nyman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

xhci: dbgtty: remove kfifo_out() wrapper [+ + +]
Author: Jiri Slaby (SUSE) <[email protected]>
Date:   Thu Aug 8 12:35:40 2024 +0200

    xhci: dbgtty: remove kfifo_out() wrapper
    
    [ Upstream commit 2b217514436744dd98c4d9fa48d60610f9f67d61 ]
    
    There is no need to check against kfifo_len() before kfifo_out(). Just
    ask the latter for data and it tells how much it retrieved. Or returns 0
    in case there are no more.
    
    Signed-off-by: Jiri Slaby (SUSE) <[email protected]>
    Cc: Mathias Nyman <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 30c9ae5ece8e ("xhci: dbc: honor usb transfer size boundaries.")
    Signed-off-by: Sasha Levin <[email protected]>

xhci: dbgtty: use kfifo from tty_port struct [+ + +]
Author: Jiri Slaby (SUSE) <[email protected]>
Date:   Thu Aug 8 12:35:41 2024 +0200

    xhci: dbgtty: use kfifo from tty_port struct
    
    [ Upstream commit 866025f0237609532bc8e4af5ef4d7252d3b55b6 ]
    
    There is no need to define one in a custom structure. The tty_port one
    is free to use.
    
    Signed-off-by: Jiri Slaby (SUSE) <[email protected]>
    Cc: Mathias Nyman <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 30c9ae5ece8e ("xhci: dbc: honor usb transfer size boundaries.")
    Signed-off-by: Sasha Levin <[email protected]>

 
XHCI: Separate PORT and CAPs macros into dedicated file [+ + +]
Author: Frank Li <[email protected]>
Date:   Wed Jan 24 10:25:23 2024 -0500

    XHCI: Separate PORT and CAPs macros into dedicated file
    
    [ Upstream commit c35ba0ac48355df1d11fcce85945f76c42d250ac ]
    
    Split the PORT and CAPs macro definitions into a separate file to
    facilitate sharing with other files without the need to include the entire
    xhci.h.
    
    Signed-off-by: Frank Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 705e3ce37bcc ("usb: dwc3: core: Fix system suspend on TI AM62 platforms")
    Signed-off-by: Sasha Levin <[email protected]>