Changelog in Linux kernel 6.6.59

 
accel/qaic: Fix the for loop used to walk SG table [+ + +]
Author: Pranjal Ramajor Asha Kanojiya <[email protected]>
Date:   Fri Oct 4 13:32:52 2024 -0600

    accel/qaic: Fix the for loop used to walk SG table
    
    [ Upstream commit c5e8e93897b7bb0a336bf3332f82f8d9f2b33f14 ]
    
    Only for_each_sgtable_dma_sg() should be used to walk through a SG table
    to grab correct bus address and length pair after calling DMA MAP API on
    a SG table as DMA MAP APIs updates the SG table and for_each_sgtable_sg()
    walks through the original SG table.
    
    Fixes: ff13be830333 ("accel/qaic: Add datapath")
    Fixes: 129776ac2e38 ("accel/qaic: Add control path")
    Signed-off-by: Pranjal Ramajor Asha Kanojiya <[email protected]>
    Reviewed-by: Jeffrey Hugo <[email protected]>
    Signed-off-by: Jeffrey Hugo <[email protected]>
    Reviewed-by: Jacek Lawrynowicz <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
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]>

ALSA: hda/tas2781: select CRC32 instead of CRC32_SARWATE [+ + +]
Author: Eric Biggers <[email protected]>
Date:   Sun Oct 20 10:56:24 2024 -0700

    ALSA: hda/tas2781: select CRC32 instead of CRC32_SARWATE
    
    commit 86c96e7289c5758284b562ac7b5c94429f48d2d9 upstream.
    
    Fix the kconfig option for the tas2781 HDA driver to select CRC32 rather
    than CRC32_SARWATE.  CRC32_SARWATE is an option from the kconfig
    'choice' that selects the specific CRC32 implementation.  Selecting a
    'choice' option seems to have no effect, but even if it did work, it
    would be incorrect for a random driver to override the user's choice.
    CRC32 is the correct option to select for crc32() to be available.
    
    Fixes: 5be27f1e3ec9 ("ALSA: hda/tas2781: Add tas2781 HDA driver")
    Cc: [email protected]
    Signed-off-by: Eric Biggers <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[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]>

 
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: amd: yc: Add quirk for HP Dragonfly pro one [+ + +]
Author: David Lawrence Glanzman <[email protected]>
Date:   Tue Sep 17 00:44:08 2024 -0400

    ASoC: amd: yc: Add quirk for HP Dragonfly pro one
    
    [ Upstream commit 84e8d59651879b2ff8499bddbbc9549b7f1a646b ]
    
    Adds a quirk entry to enable the mic on HP Dragonfly pro one laptop
    
    Signed-off-by: David Lawrence Glanzman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[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_micfil: Add a flag to distinguish with different volume control types [+ + +]
Author: Chancel Liu <[email protected]>
Date:   Thu Oct 17 16:15:07 2024 +0900

    ASoC: fsl_micfil: Add a flag to distinguish with different volume control types
    
    [ Upstream commit da95e891dd5d5de6c5ebc010bd028a2e028de093 ]
    
    On i.MX8MM the register of volume control has positive and negative
    values. It is different from other platforms like i.MX8MP and i.MX93
    which only have positive values. Add a volume_sx flag to use SX_TLV
    volume control for this kind of platform. Use common TLV volume control
    for other platforms.
    
    Fixes: cdfa92eb90f5 ("ASoC: fsl_micfil: Correct the number of steps on SX controls")
    Signed-off-by: Chancel Liu <[email protected]>
    Reviewed-by: Daniel Baluta <[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: loongson: Fix component check failed on FDT systems [+ + +]
Author: Binbin Zhou <[email protected]>
Date:   Wed Oct 9 15:52:27 2024 +0800

    ASoC: loongson: Fix component check failed on FDT systems
    
    [ Upstream commit a6134e7b4d4a14e0942f113a6df1d518baa2a0a4 ]
    
    Add missing snd_soc_dai_link.platforms assignment to avoid
    soc_dai_link_sanity_check() failure.
    
    Fixes: d24028606e76 ("ASoC: loongson: Add Loongson ASoC Sound Card Support")
    Signed-off-by: Binbin Zhou <[email protected]>
    Link: https://patch.msgid.link/6645888f2f9e8a1d8d799109f867d0f97fd78c58.1728459624.git.zhoubinbin@loongson.cn
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: max98388: Fix missing increment of variable slot_found [+ + +]
Author: Colin Ian King <[email protected]>
Date:   Thu Oct 10 19:20:32 2024 +0100

    ASoC: max98388: Fix missing increment of variable slot_found
    
    [ Upstream commit ca2803fadfd239abf155ef4a563b22a9507ee4b2 ]
    
    The variable slot_found is being initialized to zero and inside
    a for-loop is being checked if it's reached MAX_NUM_CH, however,
    this is currently impossible since slot_found is never changed.
    In a previous loop a similar coding pattern is used and slot_found
    is being incremented. It appears the increment of slot_found is
    missing from the loop, so fix the code by adding in the increment.
    
    Fixes: 6a8e1d46f062 ("ASoC: max98388: add amplifier driver")
    Signed-off-by: Colin Ian King <[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]>

ASoC: rsnd: Fix probe failure on HiHope boards due to endpoint parsing [+ + +]
Author: Lad Prabhakar <[email protected]>
Date:   Thu Oct 10 15:14:32 2024 +0100

    ASoC: rsnd: Fix probe failure on HiHope boards due to endpoint parsing
    
    [ Upstream commit 9b064d200aa8fee9d1d7ced05d8a617e45966715 ]
    
    On the HiHope boards, we have a single port with a single endpoint defined
    as below:
    ....
            rsnd_port: port {
                    rsnd_endpoint: endpoint {
                            remote-endpoint = <&dw_hdmi0_snd_in>;
    
                            dai-format = "i2s";
                            bitclock-master = <&rsnd_endpoint>;
                            frame-master = <&rsnd_endpoint>;
    
                            playback = <&ssi2>;
                    };
            };
    ....
    
    With commit 547b02f74e4a ("ASoC: rsnd: enable multi Component support for
    Audio Graph Card/Card2"), support for multiple ports was added. This caused
    probe failures on HiHope boards, as the endpoint could not be retrieved due
    to incorrect device node pointers being used.
    
    This patch fixes the issue by updating the `rsnd_dai_of_node()` and
    `rsnd_dai_probe()` functions to use the correct device node pointers based
    on the port names ('port' or 'ports'). It ensures that the endpoint is
    properly parsed for both single and multi-port configurations, restoring
    compatibility with HiHope boards.
    
    Fixes: 547b02f74e4a ("ASoC: rsnd: enable multi Component support for Audio Graph Card/Card2")
    Signed-off-by: Lad Prabhakar <[email protected]>
    Acked-by: Kuninori Morimoto <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ata: libata: Set DID_TIME_OUT for commands that actually timed out [+ + +]
Author: Niklas Cassel <[email protected]>
Date:   Wed Oct 23 12:55:41 2024 +0200

    ata: libata: Set DID_TIME_OUT for commands that actually timed out
    
    commit 8e59a2a5459fd9840dbe2cbde85fe154b11e1727 upstream.
    
    When ata_qc_complete() schedules a command for EH using
    ata_qc_schedule_eh(), blk_abort_request() will be called, which leads to
    req->q->mq_ops->timeout() / scsi_timeout() being called.
    
    scsi_timeout(), if the LLDD has no abort handler (libata has no abort
    handler), will set host byte to DID_TIME_OUT, and then call
    scsi_eh_scmd_add() to add the command to EH.
    
    Thus, when commands first enter libata's EH strategy_handler, all the
    commands that have been added to EH will have DID_TIME_OUT set.
    
    Commit e5dd410acb34 ("ata: libata: Clear DID_TIME_OUT for ATA PT commands
    with sense data") clears this bogus DID_TIME_OUT flag for all commands
    that reached libata's EH strategy_handler.
    
    libata has its own flag (AC_ERR_TIMEOUT), that it sets for commands that
    have not received a completion at the time of entering EH.
    
    ata_eh_worth_retry() has no special handling for AC_ERR_TIMEOUT, so by
    default timed out commands will get flag ATA_QCFLAG_RETRY set, and will be
    retried after the port has been reset (ata_eh_link_autopsy() always
    triggers a port reset if any command has AC_ERR_TIMEOUT set).
    
    For a command that has ATA_QCFLAG_RETRY set, while also having an error
    flag set (e.g. AC_ERR_TIMEOUT), ata_eh_finish() will not increment
    scmd->allowed, so the command will at most be retried scmd->allowed number
    of times (which by default is set to 3).
    
    However, scsi_eh_flush_done_q() will only retry commands for which
    scsi_noretry_cmd() returns false.
    
    For a command that has DID_TIME_OUT set, while also having either the
    FAILFAST flag set, or the command being a passthrough command,
    scsi_noretry_cmd() will return true. Thus, such a command will never be
    retried.
    
    Thus, make sure that libata sets SCSI's DID_TIME_OUT flag for commands that
    actually timed out (libata's AC_ERR_TIMEOUT flag), such that timed out
    commands will once again not be retried if they are also a FAILFAST or
    passthrough command.
    
    Cc: [email protected]
    Fixes: e5dd410acb34 ("ata: libata: Clear DID_TIME_OUT for ATA PT commands with sense data")
    Reported-by: Lai, Yi <[email protected]>
    Closes: https://lore.kernel.org/linux-ide/ZxYz871I3Blsi30F@ly-workstation/
    Reviewed-by: Damien Le Moal <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Niklas Cassel <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[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]>

 
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, sockmap: SK_DROP on attempted redirects of unsupported af_vsock [+ + +]
Author: Michal Luczaj <[email protected]>
Date:   Sun Oct 13 18:26:39 2024 +0200

    bpf, sockmap: SK_DROP on attempted redirects of unsupported af_vsock
    
    [ Upstream commit 9c5bd93edf7b8834aecaa7c340b852d5990d7c78 ]
    
    Don't mislead the callers of bpf_{sk,msg}_redirect_{map,hash}(): make sure
    to immediately and visibly fail the forwarding of unsupported af_vsock
    packets.
    
    Fixes: 634f1a7110b4 ("vsock: support sockmap")
    Signed-off-by: Michal Luczaj <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Acked-by: John Fastabend <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf, vsock: Drop static vsock_bpf_prot initialization [+ + +]
Author: Michal Luczaj <[email protected]>
Date:   Sun Oct 13 18:26:42 2024 +0200

    bpf, vsock: Drop static vsock_bpf_prot initialization
    
    [ Upstream commit 19039f279797efbe044cae41ee216c5fe481fc33 ]
    
    vsock_bpf_prot is set up at runtime. Remove the superfluous init.
    
    No functional change intended.
    
    Fixes: 634f1a7110b4 ("vsock: support sockmap")
    Signed-off-by: Michal Luczaj <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Acked-by: John Fastabend <[email protected]>
    Link: https://lore.kernel.org/bpf/[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: Add cookie to perf_event bpf_link_info records [+ + +]
Author: Jiri Olsa <[email protected]>
Date:   Fri Jan 19 12:04:58 2024 +0100

    bpf: Add cookie to perf_event bpf_link_info records
    
    [ Upstream commit d5c16492c66fbfca85f36e42363d32212df5927b ]
    
    At the moment we don't store cookie for perf_event probes,
    while we do that for the rest of the probes.
    
    Adding cookie fields to struct bpf_link_info perf event
    probe records:
    
      perf_event.uprobe
      perf_event.kprobe
      perf_event.tracepoint
      perf_event.perf_event
    
    And the code to store that in bpf_link_info struct.
    
    Signed-off-by: Jiri Olsa <[email protected]>
    Acked-by: Song Liu <[email protected]>
    Acked-by: Yafang Shao <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Stable-dep-of: 4deecdd29cf2 ("bpf: fix unpopulated name_len field in perf_event link info")
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Add MEM_WRITE attribute [+ + +]
Author: Daniel Borkmann <[email protected]>
Date:   Mon Oct 21 17:28:05 2024 +0200

    bpf: Add MEM_WRITE attribute
    
    [ Upstream commit 6fad274f06f038c29660aa53fbad14241c9fd976 ]
    
    Add a MEM_WRITE attribute for BPF helper functions which can be used in
    bpf_func_proto to annotate an argument type in order to let the verifier
    know that the helper writes into the memory passed as an argument. In
    the past MEM_UNINIT has been (ab)used for this function, but the latter
    merely tells the verifier that the passed memory can be uninitialized.
    
    There have been bugs with overloading the latter but aside from that
    there are also cases where the passed memory is read + written which
    currently cannot be expressed, see also 4b3786a6c539 ("bpf: Zero former
    ARG_PTR_TO_{LONG,INT} args in case of error").
    
    Signed-off-by: Daniel Borkmann <[email protected]>
    Acked-by: Kumar Kartikeya Dwivedi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Stable-dep-of: 8ea607330a39 ("bpf: Fix overloading of MEM_UNINIT's meaning")
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Add missed value to kprobe perf link info [+ + +]
Author: Jiri Olsa <[email protected]>
Date:   Wed Sep 20 23:31:39 2023 +0200

    bpf: Add missed value to kprobe perf link info
    
    [ Upstream commit 3acf8ace68230e9558cf916847f1cc9f208abdf1 ]
    
    Add missed value to kprobe attached through perf link info to
    hold the stats of missed kprobe handler execution.
    
    The kprobe's missed counter gets incremented when kprobe handler
    is not executed due to another kprobe running on the same cpu.
    
    Signed-off-by: Jiri Olsa <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Stable-dep-of: 4deecdd29cf2 ("bpf: fix unpopulated name_len field in perf_event link info")
    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 link info netfilter flags to populate defrag flag [+ + +]
Author: Tyrone Wu <[email protected]>
Date:   Fri Oct 11 19:32:51 2024 +0000

    bpf: Fix link info netfilter flags to populate defrag flag
    
    [ Upstream commit 92f3715e1eba1d41e55be06159dc3d856b18326d ]
    
    This fix correctly populates the `bpf_link_info.netfilter.flags` field
    when user passes the `BPF_F_NETFILTER_IP_DEFRAG` flag.
    
    Fixes: 91721c2d02d3 ("netfilter: bpf: Support BPF_F_NETFILTER_IP_DEFRAG in netfilter link")
    Signed-off-by: Tyrone Wu <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Acked-by: Florian Westphal <[email protected]>
    Cc: Daniel Xu <[email protected]>
    Link: https://lore.kernel.org/bpf/[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: Fix overloading of MEM_UNINIT's meaning [+ + +]
Author: Daniel Borkmann <[email protected]>
Date:   Mon Oct 21 17:28:06 2024 +0200

    bpf: Fix overloading of MEM_UNINIT's meaning
    
    [ Upstream commit 8ea607330a39184f51737c6ae706db7fdca7628e ]
    
    Lonial reported an issue in the BPF verifier where check_mem_size_reg()
    has the following code:
    
        if (!tnum_is_const(reg->var_off))
            /* For unprivileged variable accesses, disable raw
             * mode so that the program is required to
             * initialize all the memory that the helper could
             * just partially fill up.
             */
             meta = NULL;
    
    This means that writes are not checked when the register containing the
    size of the passed buffer has not a fixed size. Through this bug, a BPF
    program can write to a map which is marked as read-only, for example,
    .rodata global maps.
    
    The problem is that MEM_UNINIT's initial meaning that "the passed buffer
    to the BPF helper does not need to be initialized" which was added back
    in commit 435faee1aae9 ("bpf, verifier: add ARG_PTR_TO_RAW_STACK type")
    got overloaded over time with "the passed buffer is being written to".
    
    The problem however is that checks such as the above which were added later
    via 06c1c049721a ("bpf: allow helpers access to variable memory") set meta
    to NULL in order force the user to always initialize the passed buffer to
    the helper. Due to the current double meaning of MEM_UNINIT, this bypasses
    verifier write checks to the memory (not boundary checks though) and only
    assumes the latter memory is read instead.
    
    Fix this by reverting MEM_UNINIT back to its original meaning, and having
    MEM_WRITE as an annotation to BPF helpers in order to then trigger the
    BPF verifier checks for writing to memory.
    
    Some notes: check_arg_pair_ok() ensures that for ARG_CONST_SIZE{,_OR_ZERO}
    we can access fn->arg_type[arg - 1] since it must contain a preceding
    ARG_PTR_TO_MEM. For check_mem_reg() the meta argument can be removed
    altogether since we do check both BPF_READ and BPF_WRITE. Same for the
    equivalent check_kfunc_mem_size_reg().
    
    Fixes: 7b3552d3f9f6 ("bpf: Reject writes for PTR_TO_MAP_KEY in check_helper_mem_access")
    Fixes: 97e6d7dab1ca ("bpf: Check PTR_TO_MEM | MEM_RDONLY in check_helper_mem_access")
    Fixes: 15baa55ff5b0 ("bpf/verifier: allow all functions to read user provided context")
    Reported-by: Lonial Con <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Acked-by: Kumar Kartikeya Dwivedi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Fix truncation bug in coerce_reg_to_size_sx() [+ + +]
Author: Dimitar Kanaliev <[email protected]>
Date:   Mon Oct 14 15:11:53 2024 +0300

    bpf: Fix truncation bug in coerce_reg_to_size_sx()
    
    [ Upstream commit ae67b9fb8c4e981e929a665dcaa070f4b05ebdb4 ]
    
    coerce_reg_to_size_sx() updates the register state after a sign-extension
    operation. However, there's a bug in the assignment order of the unsigned
    min/max values, leading to incorrect truncation:
    
      0: (85) call bpf_get_prandom_u32#7    ; R0_w=scalar()
      1: (57) r0 &= 1                       ; R0_w=scalar(smin=smin32=0,smax=umax=smax32=umax32=1,var_off=(0x0; 0x1))
      2: (07) r0 += 254                     ; R0_w=scalar(smin=umin=smin32=umin32=254,smax=umax=smax32=umax32=255,var_off=(0xfe; 0x1))
      3: (bf) r0 = (s8)r0                   ; R0_w=scalar(smin=smin32=-2,smax=smax32=-1,umin=umin32=0xfffffffe,umax=0xffffffff,var_off=(0xfffffffffffffffe; 0x1))
    
    In the current implementation, the unsigned 32-bit min/max values
    (u32_min_value and u32_max_value) are assigned directly from the 64-bit
    signed min/max values (s64_min and s64_max):
    
      reg->umin_value = reg->u32_min_value = s64_min;
      reg->umax_value = reg->u32_max_value = s64_max;
    
    Due to the chain assigmnent, this is equivalent to:
    
      reg->u32_min_value = s64_min;  // Unintended truncation
      reg->umin_value = reg->u32_min_value;
      reg->u32_max_value = s64_max;  // Unintended truncation
      reg->umax_value = reg->u32_max_value;
    
    Fixes: 1f9a1ea821ff ("bpf: Support new sign-extension load insns")
    Reported-by: Shung-Hsi Yu <[email protected]>
    Reported-by: Zac Ecob <[email protected]>
    Signed-off-by: Dimitar Kanaliev <[email protected]>
    Acked-by: Yonghong Song <[email protected]>
    Reviewed-by: Shung-Hsi Yu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: fix unpopulated name_len field in perf_event link info [+ + +]
Author: Tyrone Wu <[email protected]>
Date:   Tue Oct 8 16:43:11 2024 +0000

    bpf: fix unpopulated name_len field in perf_event link info
    
    [ Upstream commit 4deecdd29cf29844c7bd164d72dc38d2e672f64e ]
    
    Previously when retrieving `bpf_link_info.perf_event` for
    kprobe/uprobe/tracepoint, the `name_len` field was not populated by the
    kernel, leaving it to reflect the value initially set by the user. This
    behavior was inconsistent with how other input/output string buffer
    fields function (e.g. `raw_tracepoint.tp_name_len`).
    
    This patch fills `name_len` with the actual size of the string name.
    
    Fixes: 1b715e1b0ec5 ("bpf: Support ->fill_link_info for perf_event")
    Signed-off-by: Tyrone Wu <[email protected]>
    Acked-by: Jiri Olsa <[email protected]>
    Acked-by: Yafang Shao <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: 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: Remove MEM_UNINIT from skb/xdp MTU helpers [+ + +]
Author: Daniel Borkmann <[email protected]>
Date:   Mon Oct 21 17:28:07 2024 +0200

    bpf: Remove MEM_UNINIT from skb/xdp MTU helpers
    
    [ Upstream commit 14a3d3ef02ba53447d5112a2641aac0d10dc994f ]
    
    We can now undo parts of 4b3786a6c539 ("bpf: Zero former ARG_PTR_TO_{LONG,INT}
    args in case of error") as discussed in [0].
    
    Given the BPF helpers now have MEM_WRITE tag, the MEM_UNINIT can be cleared.
    
    The mtu_len is an input as well as output argument, meaning, the BPF program
    has to set it to something. It cannot be uninitialized. Therefore, allowing
    uninitialized memory and zeroing it on error would be odd. It was done as
    an interim step in 4b3786a6c539 as the desired behavior could not have been
    expressed before the introduction of MEM_WRITE tag.
    
    Fixes: 4b3786a6c539 ("bpf: Zero former ARG_PTR_TO_{LONG,INT} args in case of error")
    Signed-off-by: Daniel Borkmann <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected] [0]
    Acked-by: Kumar Kartikeya Dwivedi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Simplify checking size of helper accesses [+ + +]
Author: Andrei Matei <[email protected]>
Date:   Thu Dec 21 18:22:24 2023 -0500

    bpf: Simplify checking size of helper accesses
    
    [ Upstream commit 8a021e7fa10576eeb3938328f39bbf98fe7d4715 ]
    
    This patch simplifies the verification of size arguments associated to
    pointer arguments to helpers and kfuncs. Many helpers take a pointer
    argument followed by the size of the memory access performed to be
    performed through that pointer. Before this patch, the handling of the
    size argument in check_mem_size_reg() was confusing and wasteful: if the
    size register's lower bound was 0, then the verification was done twice:
    once considering the size of the access to be the lower-bound of the
    respective argument, and once considering the upper bound (even if the
    two are the same). The upper bound checking is a super-set of the
    lower-bound checking(*), except: the only point of the lower-bound check
    is to handle the case where zero-sized-accesses are explicitly not
    allowed and the lower-bound is zero. This static condition is now
    checked explicitly, replacing a much more complex, expensive and
    confusing verification call to check_helper_mem_access().
    
    Error messages change in this patch. Before, messages about illegal
    zero-size accesses depended on the type of the pointer and on other
    conditions, and sometimes the message was plain wrong: in some tests
    that changed you'll see that the old message was something like "R1 min
    value is outside of the allowed memory range", where R1 is the pointer
    register; the error was wrongly claiming that the pointer was bad
    instead of the size being bad. Other times the information that the size
    came for a register with a possible range of values was wrong, and the
    error presented the size as a fixed zero. Now the errors refer to the
    right register. However, the old error messages did contain useful
    information about the pointer register which is now lost; recovering
    this information was deemed not important enough.
    
    (*) Besides standing to reason that the checks for a bigger size access
    are a super-set of the checks for a smaller size access, I have also
    mechanically verified this by reading the code for all types of
    pointers. I could convince myself that it's true for all but
    PTR_TO_BTF_ID (check_ptr_to_btf_access). There, simply looking
    line-by-line does not immediately prove what we want. If anyone has any
    qualms, let me know.
    
    Signed-off-by: Andrei Matei <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Acked-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Stable-dep-of: 8ea607330a39 ("bpf: Fix overloading of MEM_UNINIT's meaning")
    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]>

 
cdrom: Avoid barrier_nospec() in cdrom_ioctl_media_changed() [+ + +]
Author: Josh Poimboeuf <[email protected]>
Date:   Thu Oct 17 15:09:02 2024 -0700

    cdrom: Avoid barrier_nospec() in cdrom_ioctl_media_changed()
    
    [ Upstream commit b0bf1afde7c34698cf61422fa8ee60e690dc25c3 ]
    
    The barrier_nospec() after the array bounds check is overkill and
    painfully slow for arches which implement it.
    
    Furthermore, most arches don't implement it, so they remain exposed to
    Spectre v1 (which can affect pretty much any CPU with branch
    prediction).
    
    Instead, clamp the user pointer to a valid range so it's guaranteed to
    be a valid array index even when the bounds check mispredicts.
    
    Fixes: 8270cb10c068 ("cdrom: Fix spectre-v1 gadget")
    Signed-off-by: Josh Poimboeuf <[email protected]>
    Link: https://lore.kernel.org/r/1d86f4d9d8fba68e5ca64cdeac2451b95a8bf872.1729202937.git.jpoimboe@kernel.org
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
cifs: Validate content of NFS reparse point buffer [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Sat Sep 28 23:59:47 2024 +0200

    cifs: Validate content of NFS reparse point buffer
    
    [ Upstream commit 556ac52bb1e76cc28fd30aa117b42989965b3efd ]
    
    Symlink target location stored in DataBuffer is encoded in UTF-16. So check
    that symlink DataBuffer length is non-zero and even number. And check that
    DataBuffer does not contain UTF-16 null codepoint because Linux cannot
    process symlink with null byte.
    
    DataBuffer for char and block devices is 8 bytes long as it contains two
    32-bit numbers (major and minor). Add check for this.
    
    DataBuffer buffer for sockets and fifos zero-length. Add checks for this.
    
    Signed-off-by: Pali Rohár <[email protected]>
    Reviewed-by: Paulo Alcantara (Red Hat) <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
cpufreq/amd-pstate: Fix amd_pstate mode switch on shared memory systems [+ + +]
Author: Dhananjay Ugwekar <[email protected]>
Date:   Fri Oct 4 12:23:04 2024 +0000

    cpufreq/amd-pstate: Fix amd_pstate mode switch on shared memory systems
    
    [ Upstream commit c10e50a469b5ec91eabf653526a22bdce03a9bca ]
    
    While switching the driver mode between active and passive, Collaborative
    Processor Performance Control (CPPC) is disabled in
    amd_pstate_unregister_driver(). But, it is not enabled back while registering
    the new driver (passive or active). This leads to the new driver mode not
    working correctly, so enable it back in amd_pstate_register_driver().
    
    Fixes: 3ca7bc818d8c ("cpufreq: amd-pstate: Add guided mode control support via sysfs")
    Signed-off-by: Dhananjay Ugwekar <[email protected]>
    Reviewed-by: Mario Limonciello <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mario Limonciello <[email protected]>
    Signed-off-by: Sasha Levin <[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]>

 
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: check for overflow in _dpu_crtc_setup_lm_bounds() [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Sep 3 06:22:46 2024 +0300

    drm/msm/dpu: check for overflow in _dpu_crtc_setup_lm_bounds()
    
    [ Upstream commit 3a0851b442d1f63ba42ecfa2506d3176cfabf9d4 ]
    
    Make _dpu_crtc_setup_lm_bounds() check that CRTC width is not
    overflowing LM requirements. Rename the function accordingly.
    
    Fixes: 25fdd5933e4c ("drm/msm: Add SDM845 DPU support")
    Reviewed-by: Abhinav Kumar <[email protected]>
    Tested-by: Abhinav Kumar <[email protected]> # sc7280
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/612237/
    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: 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/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/dsi: improve/fix dsc pclk calculation [+ + +]
Author: Jonathan Marek <[email protected]>
Date:   Mon Oct 7 01:01:48 2024 -0400

    drm/msm/dsi: improve/fix dsc pclk calculation
    
    [ Upstream commit 24436a540d16ca6a523b8e5441180001c31b6b35 ]
    
    drm_mode_vrefresh() can introduce a large rounding error, avoid it.
    
    Fixes: 7c9e4a554d4a ("drm/msm/dsi: Reduce pclk rate for compression")
    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/618432/
    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:44:58 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]>

 
firmware: arm_scmi: Fix the double free in scmi_debugfs_common_setup() [+ + +]
Author: Su Hui <[email protected]>
Date:   Fri Oct 11 18:40:02 2024 +0800

    firmware: arm_scmi: Fix the double free in scmi_debugfs_common_setup()
    
    [ Upstream commit 39b13dce1a91cdfc3bec9238f9e89094551bd428 ]
    
    Clang static checker(scan-build) throws below warning:
      |  drivers/firmware/arm_scmi/driver.c:line 2915, column 2
      |        Attempt to free released memory.
    
    When devm_add_action_or_reset() fails, scmi_debugfs_common_cleanup()
    will run twice which causes double free of 'dbg->name'.
    
    Remove the redundant scmi_debugfs_common_cleanup() to fix this problem.
    
    Fixes: c3d4aed763ce ("firmware: arm_scmi: Populate a common SCMI debugfs root")
    Signed-off-by: Su Hui <[email protected]>
    Reviewed-by: Cristian Marussi <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Sudeep Holla <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

firmware: arm_scmi: Queue in scmi layer for mailbox implementation [+ + +]
Author: Justin Chen <[email protected]>
Date:   Mon Oct 14 09:07:17 2024 -0700

    firmware: arm_scmi: Queue in scmi layer for mailbox implementation
    
    [ Upstream commit da1642bc97c4ef67f347edcd493bd0a52f88777b ]
    
    send_message() does not block in the MBOX implementation. This is
    because the mailbox layer has its own queue. However, this confuses
    the per xfer timeouts as they all start their timeout ticks in
    parallel.
    
    Consider a case where the xfer timeout is 30ms and a SCMI transaction
    takes 25ms:
    
      | 0ms: Message #0 is queued in mailbox layer and sent out, then sits
      |      at scmi_wait_for_message_response() with a timeout of 30ms
      | 1ms: Message #1 is queued in mailbox layer but not sent out yet.
      |      Since send_message() doesn't block, it also sits at
      |      scmi_wait_for_message_response() with a timeout of 30ms
      |  ...
      | 25ms: Message #0 is completed, txdone is called and message #1 is sent
      | 31ms: Message #1 times out since the count started at 1ms. Even though
      |       it has only been inflight for 6ms.
    
    Fixes: 5c8a47a5a91d ("firmware: arm_scmi: Make scmi core independent of the transport type")
    Signed-off-by: Justin Chen <[email protected]>
    Message-Id: <[email protected]>
    Reviewed-by: Cristian Marussi <[email protected]>
    Tested-by: Cristian Marussi <[email protected]>
    Signed-off-by: Sudeep Holla <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fsl/fman: Fix refcount handling of fman-related devices [+ + +]
Author: Aleksandr Mishin <[email protected]>
Date:   Tue Oct 15 09:01:22 2024 +0300

    fsl/fman: Fix refcount handling of fman-related devices
    
    [ Upstream commit 1dec67e0d9fbb087c2ab17bf1bd17208231c3bb1 ]
    
    In mac_probe() there are multiple calls to of_find_device_by_node(),
    fman_bind() and fman_port_bind() which takes references to of_dev->dev.
    Not all references taken by these calls are released later on error path
    in mac_probe() and in mac_remove() which lead to reference leaks.
    
    Add references release.
    
    Fixes: 3933961682a3 ("fsl/fman: Add FMan MAC driver")
    Signed-off-by: Aleksandr Mishin <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fsl/fman: Save device references taken in mac_probe() [+ + +]
Author: Aleksandr Mishin <[email protected]>
Date:   Tue Oct 15 09:01:21 2024 +0300

    fsl/fman: Save device references taken in mac_probe()
    
    [ Upstream commit efeddd552ec6767e4c8884caa516ac80b65f8823 ]
    
    In mac_probe() there are calls to of_find_device_by_node() which takes
    references to of_dev->dev. These references are not saved and not released
    later on error path in mac_probe() and in mac_remove().
    
    Add new fields into mac_device structure to save references taken for
    future use in mac_probe() and mac_remove().
    
    This is a preparation for further reference leaks fix.
    
    Signed-off-by: Aleksandr Mishin <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Stable-dep-of: 1dec67e0d9fb ("fsl/fman: Fix refcount handling of fman-related devices")
    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: adc: ti-lmp92064: add missing select IIO_(TRIGGERED_)BUFFER in Kconfig [+ + +]
Author: Javier Carrasco <[email protected]>
Date:   Thu Oct 3 23:04:52 2024 +0200

    iio: adc: ti-lmp92064: add missing select IIO_(TRIGGERED_)BUFFER in Kconfig
    
    [ Upstream commit a985576af824426e33100554a5958a6beda60a13 ]
    
    This driver makes use of triggered buffers, but does not select the
    required modules.
    
    Add the missing 'select IIO_BUFFER' and 'select IIO_TRIGGERED_BUFFER'.
    
    Fixes: 6c7bc1d27bb2 ("iio: adc: ti-lmp92064: add buffering support")
    Signed-off-by: Javier Carrasco <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: <[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]>

 
khugepaged: convert alloc_charge_hpage to alloc_charge_folio [+ + +]
Author: Matthew Wilcox (Oracle) <[email protected]>
Date:   Wed Apr 3 18:18:31 2024 +0100

    khugepaged: convert alloc_charge_hpage to alloc_charge_folio
    
    [ Upstream commit d5ab50b9412c0bba750eef5a34fd2937de1aee55 ]
    
    Both callers want to deal with a folio, so return a folio from this
    function.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Matthew Wilcox (Oracle) <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 37f0b47c5143 ("mm: khugepaged: fix the arguments order in khugepaged_collapse_file trace point")
    Signed-off-by: Sasha Levin <[email protected]>

khugepaged: inline hpage_collapse_alloc_folio() [+ + +]
Author: Matthew Wilcox (Oracle) <[email protected]>
Date:   Wed Apr 3 18:18:30 2024 +0100

    khugepaged: inline hpage_collapse_alloc_folio()
    
    [ Upstream commit 4746f5ce0fa52e21b5fe432970fe9516d1a45ebc ]
    
    Patch series "khugepaged folio conversions".
    
    We've been kind of hacking piecemeal at converting khugepaged to use
    folios instead of compound pages, and so this patchset is a little larger
    than it should be as I undo some of our wrong moves in the past.  In
    particular, collapse_file() now consistently uses 'new_folio' for the
    freshly allocated folio and 'folio' for the one that's currently in use.
    
    This patch (of 7):
    
    This function has one caller, and the combined function is simpler to
    read, reason about and modify.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Matthew Wilcox (Oracle) <[email protected]>
    Reviewed-by: Vishal Moola (Oracle) <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 37f0b47c5143 ("mm: khugepaged: fix the arguments order in khugepaged_collapse_file trace point")
    Signed-off-by: Sasha Levin <[email protected]>

khugepaged: remove hpage from collapse_file() [+ + +]
Author: Matthew Wilcox (Oracle) <[email protected]>
Date:   Wed Apr 3 18:18:34 2024 +0100

    khugepaged: remove hpage from collapse_file()
    
    [ Upstream commit 610ff817b981921213ae51e5c5f38c76c6f0405e ]
    
    Use new_folio throughout where we had been using hpage.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Matthew Wilcox (Oracle) <[email protected]>
    Reviewed-by: Vishal Moola (Oracle) <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 37f0b47c5143 ("mm: khugepaged: fix the arguments order in khugepaged_collapse_file trace point")
    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: arm64: Fix shift-out-of-bounds bug [+ + +]
Author: Ilkka Koskinen <[email protected]>
Date:   Wed Oct 16 19:57:01 2024 -0700

    KVM: arm64: Fix shift-out-of-bounds bug
    
    commit c6c167afa090ea0451f91814e1318755a8fb8bb9 upstream.
    
    Fix a shift-out-of-bounds bug reported by UBSAN when running
    VM with MTE enabled host kernel.
    
    UBSAN: shift-out-of-bounds in arch/arm64/kvm/sys_regs.c:1988:14
    shift exponent 33 is too large for 32-bit type 'int'
    CPU: 26 UID: 0 PID: 7629 Comm: qemu-kvm Not tainted 6.12.0-rc2 #34
    Hardware name: IEI NF5280R7/Mitchell MB, BIOS 00.00. 2024-10-12 09:28:54 10/14/2024
    Call trace:
     dump_backtrace+0xa0/0x128
     show_stack+0x20/0x38
     dump_stack_lvl+0x74/0x90
     dump_stack+0x18/0x28
     __ubsan_handle_shift_out_of_bounds+0xf8/0x1e0
     reset_clidr+0x10c/0x1c8
     kvm_reset_sys_regs+0x50/0x1c8
     kvm_reset_vcpu+0xec/0x2b0
     __kvm_vcpu_set_target+0x84/0x158
     kvm_vcpu_set_target+0x138/0x168
     kvm_arch_vcpu_ioctl_vcpu_init+0x40/0x2b0
     kvm_arch_vcpu_ioctl+0x28c/0x4b8
     kvm_vcpu_ioctl+0x4bc/0x7a8
     __arm64_sys_ioctl+0xb4/0x100
     invoke_syscall+0x70/0x100
     el0_svc_common.constprop.0+0x48/0xf0
     do_el0_svc+0x24/0x38
     el0_svc+0x3c/0x158
     el0t_64_sync_handler+0x120/0x130
     el0t_64_sync+0x194/0x198
    
    Fixes: 7af0c2534f4c ("KVM: arm64: Normalize cache configuration")
    Cc: [email protected]
    Reviewed-by: Gavin Shan <[email protected]>
    Signed-off-by: Ilkka Koskinen <[email protected]>
    Reviewed-by: Anshuman Khandual <[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]>

 
lib/Kconfig.debug: fix grammar in RUST_BUILD_ASSERT_ALLOW [+ + +]
Author: Timo Grautstueck <[email protected]>
Date:   Sun Oct 6 16:02:44 2024 +0200

    lib/Kconfig.debug: fix grammar in RUST_BUILD_ASSERT_ALLOW
    
    [ Upstream commit ab8851431bef5cc44f0f3f0da112e883fd4d0df5 ]
    
    Just a grammar fix in lib/Kconfig.debug, under the config option
    RUST_BUILD_ASSERT_ALLOW.
    
    Reported-by: Miguel Ojeda <[email protected]>
    Closes: https://github.com/Rust-for-Linux/linux/issues/1006
    Fixes: ecaa6ddff2fd ("rust: add `build_error` crate")
    Signed-off-by: Timo Grautstueck <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Miguel Ojeda <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 6.6.59 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Fri Nov 1 01:58:34 2024 +0100

    Linux 6.6.59
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Miguel Ojeda <[email protected]>
    Tested-by: Takeshi Ogasawara <[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: Harshit Mogalapalli <[email protected]>
    Tested-by: kernelci.org bot <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[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: Enable IRQ if do_ale() triggered in irq-enabled context [+ + +]
Author: Huacai Chen <[email protected]>
Date:   Mon Oct 21 22:11:19 2024 +0800

    LoongArch: Enable IRQ if do_ale() triggered in irq-enabled context
    
    commit 69cc6fad5df4ce652d969be69acc60e269e5eea1 upstream.
    
    Unaligned access exception can be triggered in irq-enabled context such
    as user mode, in this case do_ale() may call get_user() which may cause
    sleep. Then we will get:
    
     BUG: sleeping function called from invalid context at arch/loongarch/kernel/access-helper.h:7
     in_atomic(): 0, irqs_disabled(): 1, non_block: 0, pid: 129, name: modprobe
     preempt_count: 0, expected: 0
     RCU nest depth: 0, expected: 0
     CPU: 0 UID: 0 PID: 129 Comm: modprobe Tainted: G        W          6.12.0-rc1+ #1723
     Tainted: [W]=WARN
     Stack : 9000000105e0bd48 0000000000000000 9000000003803944 9000000105e08000
             9000000105e0bc70 9000000105e0bc78 0000000000000000 0000000000000000
             9000000105e0bc78 0000000000000001 9000000185e0ba07 9000000105e0b890
             ffffffffffffffff 9000000105e0bc78 73924b81763be05b 9000000100194500
             000000000000020c 000000000000000a 0000000000000000 0000000000000003
             00000000000023f0 00000000000e1401 00000000072f8000 0000007ffbb0e260
             0000000000000000 0000000000000000 9000000005437650 90000000055d5000
             0000000000000000 0000000000000003 0000007ffbb0e1f0 0000000000000000
             0000005567b00490 0000000000000000 9000000003803964 0000007ffbb0dfec
             00000000000000b0 0000000000000007 0000000000000003 0000000000071c1d
             ...
     Call Trace:
     [<9000000003803964>] show_stack+0x64/0x1a0
     [<9000000004c57464>] dump_stack_lvl+0x74/0xb0
     [<9000000003861ab4>] __might_resched+0x154/0x1a0
     [<900000000380c96c>] emulate_load_store_insn+0x6c/0xf60
     [<9000000004c58118>] do_ale+0x78/0x180
     [<9000000003801bc8>] handle_ale+0x128/0x1e0
    
    So enable IRQ if unaligned access exception is triggered in irq-enabled
    context to fix it.
    
    Cc: [email protected]
    Reported-by: Binbin Zhou <[email protected]>
    Signed-off-by: Huacai Chen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[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]>

LoongArch: Make KASAN usable for variable cpu_vabits [+ + +]
Author: Huacai Chen <[email protected]>
Date:   Wed Oct 23 22:15:30 2024 +0800

    LoongArch: Make KASAN usable for variable cpu_vabits
    
    commit 3c252263be801f937f56b4bcd8e8e2b5307c1ce5 upstream.
    
    Currently, KASAN on LoongArch assume the CPU VA bits is 48, which is
    true for Loongson-3 series, but not for Loongson-2 series (only 40 or
    lower), this patch fix that issue and make KASAN usable for variable
    cpu_vabits.
    
    Solution is very simple: Just define XRANGE_SHADOW_SHIFT which means
    valid address length from VA_BITS to min(cpu_vabits, VA_BITS).
    
    Cc: [email protected]
    Signed-off-by: Kanglong Wang <[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]>

 
mm/khugepaged: convert alloc_charge_hpage() to use folios [+ + +]
Author: Vishal Moola (Oracle) <[email protected]>
Date:   Fri Oct 20 11:33:30 2023 -0700

    mm/khugepaged: convert alloc_charge_hpage() to use folios
    
    [ Upstream commit b455f39d228935f88eebcd1f7c1a6981093c6a3b ]
    
    Also remove count_memcg_page_event now that its last caller no longer uses
    it and reword hpage_collapse_alloc_page() to hpage_collapse_alloc_folio().
    
    This removes 1 call to compound_head() and helps convert khugepaged to
    use folios throughout.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Vishal Moola (Oracle) <[email protected]>
    Reviewed-by: Rik van Riel <[email protected]>
    Reviewed-by: Yang Shi <[email protected]>
    Cc: Kefeng Wang <[email protected]>
    Cc: Matthew Wilcox (Oracle) <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 37f0b47c5143 ("mm: khugepaged: fix the arguments order in khugepaged_collapse_file trace point")
    Signed-off-by: Sasha Levin <[email protected]>

mm/khugepaged: use a folio more in collapse_file() [+ + +]
Author: Matthew Wilcox (Oracle) <[email protected]>
Date:   Thu Dec 28 08:57:47 2023 +0000

    mm/khugepaged: use a folio more in collapse_file()
    
    [ Upstream commit b54d60b18e850561e8bdb4264ae740676c3b7658 ]
    
    This function is not yet fully converted to the folio API, but this
    removes a few uses of old APIs.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Matthew Wilcox (Oracle) <[email protected]>
    Reviewed-by: Zi Yan <[email protected]>
    Reviewed-by: Vlastimil Babka <[email protected]>
    Cc: Hyeonggon Yoo <[email protected]>
    Cc: Johannes Weiner <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 37f0b47c5143 ("mm: khugepaged: fix the arguments order in khugepaged_collapse_file trace point")
    Signed-off-by: Sasha Levin <[email protected]>

 
mm: convert collapse_huge_page() to use a folio [+ + +]
Author: Matthew Wilcox (Oracle) <[email protected]>
Date:   Mon Dec 11 16:22:13 2023 +0000

    mm: convert collapse_huge_page() to use a folio
    
    [ Upstream commit 5432726848bb27a01badcbc93b596f39ee6c5ffb ]
    
    Replace three calls to compound_head() with one.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Matthew Wilcox (Oracle) <[email protected]>
    Reviewed-by: David Hildenbrand <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 37f0b47c5143 ("mm: khugepaged: fix the arguments order in khugepaged_collapse_file trace point")
    Signed-off-by: Sasha Levin <[email protected]>

mm: khugepaged: fix the arguments order in khugepaged_collapse_file trace point [+ + +]
Author: Yang Shi <[email protected]>
Date:   Fri Oct 11 18:17:02 2024 -0700

    mm: khugepaged: fix the arguments order in khugepaged_collapse_file trace point
    
    [ Upstream commit 37f0b47c5143c2957909ced44fc09ffb118c99f7 ]
    
    The "addr" and "is_shmem" arguments have different order in TP_PROTO and
    TP_ARGS.  This resulted in the incorrect trace result:
    
    text-hugepage-644429 [276] 392092.878683: mm_khugepaged_collapse_file:
    mm=0xffff20025d52c440, hpage_pfn=0x200678c00, index=512, addr=1, is_shmem=0,
    filename=text-hugepage, nr=512, result=failed
    
    The value of "addr" is wrong because it was treated as bool value, the
    type of is_shmem.
    
    Fix the order in TP_PROTO to keep "addr" is before "is_shmem" since the
    original patch review suggested this order to achieve best packing.
    
    And use "lx" for "addr" instead of "ld" in TP_printk because address is
    typically shown in hex.
    
    After the fix, the trace result looks correct:
    
    text-hugepage-7291  [004]   128.627251: mm_khugepaged_collapse_file:
    mm=0xffff0001328f9500, hpage_pfn=0x20016ea00, index=512, addr=0x400000,
    is_shmem=0, filename=text-hugepage, nr=512, result=failed
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 4c9473e87e75 ("mm/khugepaged: add tracepoint to collapse_file()")
    Signed-off-by: Yang Shi <[email protected]>
    Cc: Gautam Menghani <[email protected]>
    Cc: Steven Rostedt (Google) <[email protected]>
    Cc: <[email protected]>    [6.2+]
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5: Check for invalid vector index on EQ creation [+ + +]
Author: Maher Sanalla <[email protected]>
Date:   Tue Oct 15 12:32:05 2024 +0300

    net/mlx5: Check for invalid vector index on EQ creation
    
    [ Upstream commit d4f25be27e3ef7e23998fbd3dd4bff0602de7ae5 ]
    
    Currently, mlx5 driver does not enforce vector index to be lower than
    the maximum number of supported completion vectors when requesting a
    new completion EQ. Thus, mlx5_comp_eqn_get() fails when trying to
    acquire an IRQ with an improper vector index.
    
    To prevent the case above, enforce that vector index value is
    valid and lower than maximum in mlx5_comp_eqn_get() before handling the
    request.
    
    Fixes: f14c1a14e632 ("net/mlx5: Allocate completion EQs dynamically")
    Signed-off-by: Maher Sanalla <[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: 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: 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 memory leak when using percpu refs [+ + +]
Author: Kai Shen <[email protected]>
Date:   Thu Oct 10 11:56:24 2024 +0000

    net/smc: Fix memory leak when using percpu refs
    
    [ Upstream commit 25c12b459db8365fee84b63f3dd7910f70627f29 ]
    
    This patch adds missing percpu_ref_exit when releasing percpu refs.
    When releasing percpu refs, percpu_ref_exit should be called.
    Otherwise, memory leak happens.
    
    Fixes: 79a22238b4f2 ("net/smc: Use percpu ref for wr tx reference")
    Signed-off-by: Kai Shen <[email protected]>
    Reviewed-by: Dust Li <[email protected]>
    Reviewed-by: Wenjia Zhang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    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: bcmasp: fix potential memory leak in bcmasp_xmit() [+ + +]
Author: Wang Hai <[email protected]>
Date:   Mon Oct 14 22:59:01 2024 +0800

    net: bcmasp: fix potential memory leak in bcmasp_xmit()
    
    [ Upstream commit fed07d3eb8a8d9fcc0e455175a89bc6445d6faed ]
    
    The bcmasp_xmit() returns NETDEV_TX_OK without freeing skb
    in case of mapping fails, add dev_kfree_skb() to fix it.
    
    Fixes: 490cb412007d ("net: bcmasp: Add support for ASP2.0 Ethernet controller")
    Signed-off-by: Wang Hai <[email protected]>
    Acked-by: Florian Fainelli <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[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: dsa: mv88e6xxx: Fix the max_vid definition for the MV88E6361 [+ + +]
Author: Peter Rashleigh <[email protected]>
Date:   Mon Oct 14 13:43:42 2024 -0700

    net: dsa: mv88e6xxx: Fix the max_vid definition for the MV88E6361
    
    [ Upstream commit 1833d8a26f057128fd63e126b4428203ece84684 ]
    
    According to the Marvell datasheet the 88E6361 has two VTU pages
    (4k VIDs per page) so the max_vid should be 8191, not 4095.
    
    In the current implementation mv88e6xxx_vtu_walk() gives unexpected
    results because of this error. I verified that mv88e6xxx_vtu_walk()
    works correctly on the MV88E6361 with this patch in place.
    
    Fixes: 12899f299803 ("net: dsa: mv88e6xxx: enable support for 88E6361 switch")
    Signed-off-by: Peter Rashleigh <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: dsa: mv88e6xxx: group cycle counter coefficients [+ + +]
Author: Shenghao Yang <[email protected]>
Date:   Sun Oct 20 14:38:28 2024 +0800

    net: dsa: mv88e6xxx: group cycle counter coefficients
    
    [ Upstream commit 67af86afff74c914944374a103c04e4d9868dd15 ]
    
    Instead of having them as individual fields in ptp_ops, wrap the
    coefficients in a separate struct so they can be referenced together.
    
    Fixes: de776d0d316f ("net: dsa: mv88e6xxx: add support for mv88e6393x family")
    Signed-off-by: Shenghao Yang <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: dsa: mv88e6xxx: read cycle counter period from hardware [+ + +]
Author: Shenghao Yang <[email protected]>
Date:   Sun Oct 20 14:38:29 2024 +0800

    net: dsa: mv88e6xxx: read cycle counter period from hardware
    
    [ Upstream commit 7e3c18097a709e9b958e721066e5fe76e563739b ]
    
    Instead of relying on a fixed mapping of hardware family to cycle
    counter frequency, pull this information from the
    MV88E6XXX_TAI_CLOCK_PERIOD register.
    
    This lets us support switches whose cycle counter frequencies depend on
    board design.
    
    Fixes: de776d0d316f ("net: dsa: mv88e6xxx: add support for mv88e6393x family")
    Suggested-by: Andrew Lunn <[email protected]>
    Signed-off-by: Shenghao Yang <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: dsa: mv88e6xxx: support 4000ps cycle counter period [+ + +]
Author: Shenghao Yang <[email protected]>
Date:   Sun Oct 20 14:38:30 2024 +0800

    net: dsa: mv88e6xxx: support 4000ps cycle counter period
    
    [ Upstream commit 3e65ede526cf4f95636dbc835598d100c7668ab3 ]
    
    The MV88E6393X family of devices can run its cycle counter off
    an internal 250MHz clock instead of an external 125MHz one.
    
    Add support for this cycle counter period by adding another set
    of coefficients and lowering the periodic cycle counter read interval
    to compensate for faster overflows at the increased frequency.
    
    Otherwise, the PHC runs at 2x real time in userspace and cannot be
    synchronized.
    
    Fixes: de776d0d316f ("net: dsa: mv88e6xxx: add support for mv88e6393x family")
    Signed-off-by: Shenghao Yang <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Signed-off-by: Paolo Abeni <[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: 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: sched: use RCU read-side critical section in taprio_dump() [+ + +]
Author: Dmitry Antipov <[email protected]>
Date:   Fri Oct 18 08:13:39 2024 +0300

    net: sched: use RCU read-side critical section in taprio_dump()
    
    [ Upstream commit b22db8b8befe90b61c98626ca1a2fbb0505e9fe3 ]
    
    Fix possible use-after-free in 'taprio_dump()' by adding RCU
    read-side critical section there. Never seen on x86 but
    found on a KASAN-enabled arm64 system when investigating
    https://syzkaller.appspot.com/bug?extid=b65e0af58423fc8a73aa:
    
    [T15862] BUG: KASAN: slab-use-after-free in taprio_dump+0xa0c/0xbb0
    [T15862] Read of size 4 at addr ffff0000d4bb88f8 by task repro/15862
    [T15862]
    [T15862] CPU: 0 UID: 0 PID: 15862 Comm: repro Not tainted 6.11.0-rc1-00293-gdefaf1a2113a-dirty #2
    [T15862] Hardware name: QEMU QEMU Virtual Machine, BIOS edk2-20240524-5.fc40 05/24/2024
    [T15862] Call trace:
    [T15862]  dump_backtrace+0x20c/0x220
    [T15862]  show_stack+0x2c/0x40
    [T15862]  dump_stack_lvl+0xf8/0x174
    [T15862]  print_report+0x170/0x4d8
    [T15862]  kasan_report+0xb8/0x1d4
    [T15862]  __asan_report_load4_noabort+0x20/0x2c
    [T15862]  taprio_dump+0xa0c/0xbb0
    [T15862]  tc_fill_qdisc+0x540/0x1020
    [T15862]  qdisc_notify.isra.0+0x330/0x3a0
    [T15862]  tc_modify_qdisc+0x7b8/0x1838
    [T15862]  rtnetlink_rcv_msg+0x3c8/0xc20
    [T15862]  netlink_rcv_skb+0x1f8/0x3d4
    [T15862]  rtnetlink_rcv+0x28/0x40
    [T15862]  netlink_unicast+0x51c/0x790
    [T15862]  netlink_sendmsg+0x79c/0xc20
    [T15862]  __sock_sendmsg+0xe0/0x1a0
    [T15862]  ____sys_sendmsg+0x6c0/0x840
    [T15862]  ___sys_sendmsg+0x1ac/0x1f0
    [T15862]  __sys_sendmsg+0x110/0x1d0
    [T15862]  __arm64_sys_sendmsg+0x74/0xb0
    [T15862]  invoke_syscall+0x88/0x2e0
    [T15862]  el0_svc_common.constprop.0+0xe4/0x2a0
    [T15862]  do_el0_svc+0x44/0x60
    [T15862]  el0_svc+0x50/0x184
    [T15862]  el0t_64_sync_handler+0x120/0x12c
    [T15862]  el0t_64_sync+0x190/0x194
    [T15862]
    [T15862] Allocated by task 15857:
    [T15862]  kasan_save_stack+0x3c/0x70
    [T15862]  kasan_save_track+0x20/0x3c
    [T15862]  kasan_save_alloc_info+0x40/0x60
    [T15862]  __kasan_kmalloc+0xd4/0xe0
    [T15862]  __kmalloc_cache_noprof+0x194/0x334
    [T15862]  taprio_change+0x45c/0x2fe0
    [T15862]  tc_modify_qdisc+0x6a8/0x1838
    [T15862]  rtnetlink_rcv_msg+0x3c8/0xc20
    [T15862]  netlink_rcv_skb+0x1f8/0x3d4
    [T15862]  rtnetlink_rcv+0x28/0x40
    [T15862]  netlink_unicast+0x51c/0x790
    [T15862]  netlink_sendmsg+0x79c/0xc20
    [T15862]  __sock_sendmsg+0xe0/0x1a0
    [T15862]  ____sys_sendmsg+0x6c0/0x840
    [T15862]  ___sys_sendmsg+0x1ac/0x1f0
    [T15862]  __sys_sendmsg+0x110/0x1d0
    [T15862]  __arm64_sys_sendmsg+0x74/0xb0
    [T15862]  invoke_syscall+0x88/0x2e0
    [T15862]  el0_svc_common.constprop.0+0xe4/0x2a0
    [T15862]  do_el0_svc+0x44/0x60
    [T15862]  el0_svc+0x50/0x184
    [T15862]  el0t_64_sync_handler+0x120/0x12c
    [T15862]  el0t_64_sync+0x190/0x194
    [T15862]
    [T15862] Freed by task 6192:
    [T15862]  kasan_save_stack+0x3c/0x70
    [T15862]  kasan_save_track+0x20/0x3c
    [T15862]  kasan_save_free_info+0x4c/0x80
    [T15862]  poison_slab_object+0x110/0x160
    [T15862]  __kasan_slab_free+0x3c/0x74
    [T15862]  kfree+0x134/0x3c0
    [T15862]  taprio_free_sched_cb+0x18c/0x220
    [T15862]  rcu_core+0x920/0x1b7c
    [T15862]  rcu_core_si+0x10/0x1c
    [T15862]  handle_softirqs+0x2e8/0xd64
    [T15862]  __do_softirq+0x14/0x20
    
    Fixes: 18cdd2f0998a ("net/sched: taprio: taprio_dump and taprio_change are protected by rtnl_mutex")
    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: stmmac: dwmac-tegra: Fix link bring-up sequence [+ + +]
Author: Paritosh Dixit <[email protected]>
Date:   Thu Oct 10 10:29:08 2024 -0400

    net: stmmac: dwmac-tegra: Fix link bring-up sequence
    
    [ Upstream commit 1cff6ff302f5703a627f9ee1d99131161ea2683e ]
    
    The Tegra MGBE driver sometimes fails to initialize, reporting the
    following error, and as a result, it is unable to acquire an IP
    address with DHCP:
    
     tegra-mgbe 6800000.ethernet: timeout waiting for link to become ready
    
    As per the recommendation from the Tegra hardware design team, fix this
    issue by:
    - clearing the PHY_RDY bit before setting the CDR_RESET bit and then
    setting PHY_RDY bit before clearing CDR_RESET bit. This ensures valid
    data is present at UPHY RX inputs before starting the CDR lock.
    - adding the required delays when bringing up the UPHY lane. Note we
    need to use delays here because there is no alternative, such as
    polling, for these cases. Using the usleep_range() instead of ndelay()
    as sleeping is preferred over busy wait loop.
    
    Without this change we would see link failures on boot sometimes as
    often as 1 in 5 boots. With this fix we have not observed any failures
    in over 1000 boots.
    
    Fixes: d8ca113724e7 ("net: stmmac: tegra: Add MGBE support")
    Signed-off-by: Paritosh Dixit <[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: bpf: must hold reference on net namespace [+ + +]
Author: Florian Westphal <[email protected]>
Date:   Thu Oct 10 18:34:05 2024 +0200

    netfilter: bpf: must hold reference on net namespace
    
    [ Upstream commit 1230fe7ad3974f7bf6c78901473e039b34d4fb1f ]
    
    BUG: KASAN: slab-use-after-free in __nf_unregister_net_hook+0x640/0x6b0
    Read of size 8 at addr ffff8880106fe400 by task repro/72=
    bpf_nf_link_release+0xda/0x1e0
    bpf_link_free+0x139/0x2d0
    bpf_link_release+0x68/0x80
    __fput+0x414/0xb60
    
    Eric says:
     It seems that bpf was able to defer the __nf_unregister_net_hook()
     after exit()/close() time.
     Perhaps a netns reference is missing, because the netns has been
     dismantled/freed already.
     bpf_nf_link_attach() does :
     link->net = net;
     But I do not see a reference being taken on net.
    
    Add such a reference and release it after hook unreg.
    Note that I was unable to get syzbot reproducer to work, so I
    do not know if this resolves this splat.
    
    Fixes: 84601d6ee68a ("bpf: add bpf_link support for BPF_NETFILTER programs")
    Diagnosed-by: Eric Dumazet <[email protected]>
    Reported-by: Lai, Yi <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[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]>

 
nfsd: cancel nfsd_shrinker_work using sync mode in nfs4_state_shutdown_net [+ + +]
Author: Yang Erkun <[email protected]>
Date:   Mon Oct 21 16:25:40 2024 +0800

    nfsd: cancel nfsd_shrinker_work using sync mode in nfs4_state_shutdown_net
    
    [ Upstream commit d5ff2fb2e7167e9483846e34148e60c0c016a1f6 ]
    
    In the normal case, when we excute `echo 0 > /proc/fs/nfsd/threads`, the
    function `nfs4_state_destroy_net` in `nfs4_state_shutdown_net` will
    release all resources related to the hashed `nfs4_client`. If the
    `nfsd_client_shrinker` is running concurrently, the `expire_client`
    function will first unhash this client and then destroy it. This can
    lead to the following warning. Additionally, numerous use-after-free
    errors may occur as well.
    
    nfsd_client_shrinker         echo 0 > /proc/fs/nfsd/threads
    
    expire_client                nfsd_shutdown_net
      unhash_client                ...
                                   nfs4_state_shutdown_net
                                     /* won't wait shrinker exit */
      /*                             cancel_work(&nn->nfsd_shrinker_work)
       * nfsd_file for this          /* won't destroy unhashed client1 */
       * client1 still alive         nfs4_state_destroy_net
       */
    
                                   nfsd_file_cache_shutdown
                                     /* trigger warning */
                                     kmem_cache_destroy(nfsd_file_slab)
                                     kmem_cache_destroy(nfsd_file_mark_slab)
      /* release nfsd_file and mark */
      __destroy_client
    
    ====================================================================
    BUG nfsd_file (Not tainted): Objects remaining in nfsd_file on
    __kmem_cache_shutdown()
    --------------------------------------------------------------------
    CPU: 4 UID: 0 PID: 764 Comm: sh Not tainted 6.12.0-rc3+ #1
    
     dump_stack_lvl+0x53/0x70
     slab_err+0xb0/0xf0
     __kmem_cache_shutdown+0x15c/0x310
     kmem_cache_destroy+0x66/0x160
     nfsd_file_cache_shutdown+0xac/0x210 [nfsd]
     nfsd_destroy_serv+0x251/0x2a0 [nfsd]
     nfsd_svc+0x125/0x1e0 [nfsd]
     write_threads+0x16a/0x2a0 [nfsd]
     nfsctl_transaction_write+0x74/0xa0 [nfsd]
     vfs_write+0x1a5/0x6d0
     ksys_write+0xc1/0x160
     do_syscall_64+0x5f/0x170
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    ====================================================================
    BUG nfsd_file_mark (Tainted: G    B   W         ): Objects remaining
    nfsd_file_mark on __kmem_cache_shutdown()
    --------------------------------------------------------------------
    
     dump_stack_lvl+0x53/0x70
     slab_err+0xb0/0xf0
     __kmem_cache_shutdown+0x15c/0x310
     kmem_cache_destroy+0x66/0x160
     nfsd_file_cache_shutdown+0xc8/0x210 [nfsd]
     nfsd_destroy_serv+0x251/0x2a0 [nfsd]
     nfsd_svc+0x125/0x1e0 [nfsd]
     write_threads+0x16a/0x2a0 [nfsd]
     nfsctl_transaction_write+0x74/0xa0 [nfsd]
     vfs_write+0x1a5/0x6d0
     ksys_write+0xc1/0x160
     do_syscall_64+0x5f/0x170
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    To resolve this issue, cancel `nfsd_shrinker_work` using synchronous
    mode in nfs4_state_shutdown_net.
    
    Fixes: 7c24fa225081 ("NFSD: replace delayed_work with work_struct for nfsd_client_shrinker")
    Signed-off-by: Yang Erkun <[email protected]>
    Reviewed-by: Jeff Layton <[email protected]>
    Signed-off-by: Chuck Lever <[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]>

 
nvme-pci: fix race condition between reset and nvme_dev_disable() [+ + +]
Author: Maurizio Lombardi <[email protected]>
Date:   Tue Oct 15 13:21:00 2024 +0200

    nvme-pci: fix race condition between reset and nvme_dev_disable()
    
    [ Upstream commit 26bc0a81f64ce00fc4342c38eeb2eddaad084dd2 ]
    
    nvme_dev_disable() modifies the dev->online_queues field, therefore
    nvme_pci_update_nr_queues() should avoid racing against it, otherwise
    we could end up passing invalid values to blk_mq_update_nr_hw_queues().
    
     WARNING: CPU: 39 PID: 61303 at drivers/pci/msi/api.c:347
              pci_irq_get_affinity+0x187/0x210
     Workqueue: nvme-reset-wq nvme_reset_work [nvme]
     RIP: 0010:pci_irq_get_affinity+0x187/0x210
     Call Trace:
      <TASK>
      ? blk_mq_pci_map_queues+0x87/0x3c0
      ? pci_irq_get_affinity+0x187/0x210
      blk_mq_pci_map_queues+0x87/0x3c0
      nvme_pci_map_queues+0x189/0x460 [nvme]
      blk_mq_update_nr_hw_queues+0x2a/0x40
      nvme_reset_work+0x1be/0x2a0 [nvme]
    
    Fix the bug by locking the shutdown_lock mutex before using
    dev->online_queues. Give up if nvme_dev_disable() is running or if
    it has been executed already.
    
    Fixes: 949928c1c731 ("NVMe: Fix possible queue use after freed")
    Tested-by: Yi Zhang <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Maurizio Lombardi <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nvme-pci: set doorbell config before unquiescing [+ + +]
Author: William Butler <[email protected]>
Date:   Wed Jan 10 18:28:55 2024 +0000

    nvme-pci: set doorbell config before unquiescing
    
    [ Upstream commit 06c59d427017fcde3107c236177fcc74c9db7909 ]
    
    During resets, if queues are unquiesced first, then the host can submit
    IOs to the controller using shadow doorbell logic but the controller
    won't be aware. This can lead to necessary MMIO doorbells from being
    not issued, causing requests to be delayed and timed-out.
    
    Signed-off-by: William Butler <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Stable-dep-of: 26bc0a81f64c ("nvme-pci: fix race condition between reset and nvme_dev_disable()")
    Signed-off-by: Sasha Levin <[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: Avoid creating fence MR for newer adapters [+ + +]
Author: Kalesh AP <[email protected]>
Date:   Mon Jan 22 20:54:33 2024 -0800

    RDMA/bnxt_re: Avoid creating fence MR for newer adapters
    
    commit 282fd66e2ef6e5d72b8fcd77efb2b282d2569464 upstream.
    
    Limit the usage of fence MR to adapters older than Gen P5 products.
    
    Fixes: 1801d87b3598 ("RDMA/bnxt_re: Support new 5760X P7 devices")
    Signed-off-by: Kashyap Desai <[email protected]>
    Signed-off-by: Bhargava Chenna Marreddy <[email protected]>
    Signed-off-by: Kalesh AP <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[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 a possible memory leak [+ + +]
Author: Kalesh AP <[email protected]>
Date:   Wed Sep 18 20:05:56 2024 -0700

    RDMA/bnxt_re: Fix a possible memory leak
    
    [ Upstream commit 3fc5410f225d1651580a4aeb7c72f55e28673b53 ]
    
    In bnxt_re_setup_chip_ctx() when bnxt_qplib_map_db_bar() fails
    driver is not freeing the memory allocated for "rdev->chip_ctx".
    
    Fixes: 0ac20faf5d83 ("RDMA/bnxt_re: Reorg the bar mapping")
    Link: https://patch.msgid.link/r/[email protected]
    Signed-off-by: Selvin Xavier <[email protected]>
    Signed-off-by: Kalesh AP <[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 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: Fix out of bound check [+ + +]
Author: Kalesh AP <[email protected]>
Date:   Tue Oct 8 00:41:34 2024 -0700

    RDMA/bnxt_re: Fix out of bound check
    
    [ Upstream commit a9e6e7443922ac0a48243c35d03834c96926bff1 ]
    
    Driver exports pacing stats only on GenP5 and P7 adapters. But while
    parsing the pacing stats, driver has a check for "rdev->dbr_pacing".  This
    caused a trace when KASAN is enabled.
    
    BUG: KASAN: slab-out-of-bounds in bnxt_re_get_hw_stats+0x2b6a/0x2e00 [bnxt_re]
    Write of size 8 at addr ffff8885942a6340 by task modprobe/4809
    
    Fixes: 8b6573ff3420 ("bnxt_re: Update the debug counters for doorbell pacing")
    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/bnxt_re: Fix the GID table length [+ + +]
Author: Kalesh AP <[email protected]>
Date:   Tue Oct 8 00:41:42 2024 -0700

    RDMA/bnxt_re: Fix the GID table length
    
    [ Upstream commit dc5006cfcf62bea88076a587344ba5e00e66d1c6 ]
    
    GID table length is reported by FW. The gid index which is passed to the
    driver during modify_qp/create_ah is restricted by the sgid_index field of
    struct ib_global_route.  sgid_index is u8 and the max sgid possible is
    256.
    
    Each GID entry in HW will have 2 GID entries in the kernel gid table.  So
    we can support twice the gid table size reported by FW. Also, restrict the
    max GID to 256 also.
    
    Fixes: 847b97887ed4 ("RDMA/bnxt_re: Restrict the max_gids to 256")
    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/bnxt_re: Fix the max CQ WQEs for older adapters [+ + +]
Author: Abhishek Mohapatra <[email protected]>
Date:   Tue Oct 8 00:41:33 2024 -0700

    RDMA/bnxt_re: Fix the max CQ WQEs for older adapters
    
    [ Upstream commit ac6df53738b465053d38d491fff87bd7d37fdc07 ]
    
    Older adapters doesn't support the MAX CQ WQEs reported by older FW. So
    restrict the value reported to 1M always for older adapters.
    
    Fixes: 1ac5a4047975 ("RDMA/bnxt_re: Add bnxt_re RoCE driver")
    Link: https://patch.msgid.link/r/[email protected]
    Signed-off-by: Abhishek Mohapatra<[email protected]>
    Reviewed-by: Chandramohan Akula <[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 the offset for GenP7 adapters for user applications [+ + +]
Author: Selvin Xavier <[email protected]>
Date:   Tue Dec 19 04:11:40 2023 -0800

    RDMA/bnxt_re: Fix the offset for GenP7 adapters for user applications
    
    commit 9248f363d0791a548a9c7711365b8be4c70bd375 upstream.
    
    User Doorbell page indexes start at an offset for GenP7 adapters.
    Fix the offset that will be used for user doorbell page indexes.
    
    Fixes: a62d68581441 ("RDMA/bnxt_re: Update the BAR offsets")
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

RDMA/bnxt_re: Fix unconditional fence for newer adapters [+ + +]
Author: Kalesh AP <[email protected]>
Date:   Mon Jan 22 20:54:35 2024 -0800

    RDMA/bnxt_re: Fix unconditional fence for newer adapters
    
    commit 8eaca6b5997bd8fd7039f2693e4ecf112823c816 upstream.
    
    Older adapters required an unconditional fence for
    non-wire memory operations. Newer adapters doesn't require
    this and therefore, disabling the unconditional fence.
    
    Fixes: 1801d87b3598 ("RDMA/bnxt_re: Support new 5760X P7 devices")
    Signed-off-by: Kashyap Desai <[email protected]>
    Signed-off-by: Kalesh AP <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[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/bnxt_re: Support new 5760X P7 devices [+ + +]
Author: Selvin Xavier <[email protected]>
Date:   Thu Dec 7 02:47:35 2023 -0800

    RDMA/bnxt_re: Support new 5760X P7 devices
    
    [ Upstream commit 1801d87b3598b173bce3fbf15c5517796f38db96 ]
    
    Add basic support for 5760X P7 devices. Add new chip
    revisions. The first version support is similar to
    the existing P5 adapters. Extend the current support
    for P5 adapters to P7 also.
    
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Stable-dep-of: ac6df53738b4 ("RDMA/bnxt_re: Fix the max CQ WQEs for older adapters")
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Update the BAR offsets [+ + +]
Author: Selvin Xavier <[email protected]>
Date:   Thu Dec 7 02:47:36 2023 -0800

    RDMA/bnxt_re: Update the BAR offsets
    
    [ Upstream commit a62d685814416647fbb28b3eb2617744adef2d4f ]
    
    Update the BAR offsets for handling GenP7 adapters.
    Use the values populated by L2 driver for getting the
    Doorbell offsets.
    
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Stable-dep-of: dc5006cfcf62 ("RDMA/bnxt_re: Fix the GID table length")
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/core: Fix ENODEV error for iWARP test over vlan [+ + +]
Author: Anumula Murali Mohan Reddy <[email protected]>
Date:   Tue Oct 8 17:13:34 2024 +0530

    RDMA/core: Fix ENODEV error for iWARP test over vlan
    
    [ Upstream commit 5069d7e202f640a36cf213a432296c85113a52f7 ]
    
    If traffic is over vlan, cma_validate_port() fails to match vlan
    net_device ifindex with bound_if_index and results in ENODEV error.
    It is because rdma_copy_src_l2_addr() always assigns bound_if_index with
    real net_device ifindex.
    This patch fixes the issue by assigning bound_if_index with vlan
    net_device index if traffic is over vlan.
    
    Fixes: f8ef1be816bf ("RDMA/cma: Avoid GID lookups on iWARP devices")
    Signed-off-by: Anumula Murali Mohan Reddy <[email protected]>
    Signed-off-by: Potnuri Bharat Teja <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[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]>

 
sched/core: Disable page allocation in task_tick_mm_cid() [+ + +]
Author: Waiman Long <[email protected]>
Date:   Wed Oct 9 21:44:32 2024 -0400

    sched/core: Disable page allocation in task_tick_mm_cid()
    
    [ Upstream commit 73ab05aa46b02d96509cb029a8d04fca7bbde8c7 ]
    
    With KASAN and PREEMPT_RT enabled, calling task_work_add() in
    task_tick_mm_cid() may cause the following splat.
    
    [   63.696416] BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
    [   63.696416] in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 610, name: modprobe
    [   63.696416] preempt_count: 10001, expected: 0
    [   63.696416] RCU nest depth: 1, expected: 1
    
    This problem is caused by the following call trace.
    
      sched_tick() [ acquire rq->__lock ]
       -> task_tick_mm_cid()
        -> task_work_add()
         -> __kasan_record_aux_stack()
          -> kasan_save_stack()
           -> stack_depot_save_flags()
            -> alloc_pages_mpol_noprof()
             -> __alloc_pages_noprof()
              -> get_page_from_freelist()
               -> rmqueue()
                -> rmqueue_pcplist()
                 -> __rmqueue_pcplist()
                  -> rmqueue_bulk()
                   -> rt_spin_lock()
    
    The rq lock is a raw_spinlock_t. We can't sleep while holding
    it. IOW, we can't call alloc_pages() in stack_depot_save_flags().
    
    The task_tick_mm_cid() function with its task_work_add() call was
    introduced by commit 223baf9d17f2 ("sched: Fix performance regression
    introduced by mm_cid") in v6.4 kernel.
    
    Fortunately, there is a kasan_record_aux_stack_noalloc() variant that
    calls stack_depot_save_flags() while not allowing it to allocate
    new pages.  To allow task_tick_mm_cid() to use task_work without
    page allocation, a new TWAF_NO_ALLOC flag is added to enable calling
    kasan_record_aux_stack_noalloc() instead of kasan_record_aux_stack()
    if set. The task_tick_mm_cid() function is modified to add this new flag.
    
    The possible downside is the missing stack trace in a KASAN report due
    to new page allocation required when task_work_add_noallloc() is called
    which should be rare.
    
    Fixes: 223baf9d17f2 ("sched: Fix performance regression introduced by mm_cid")
    Signed-off-by: Waiman Long <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Link: https://lkml.kernel.org/r/[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: Add cookies check for perf_event fill_link_info test [+ + +]
Author: Jiri Olsa <[email protected]>
Date:   Fri Jan 19 12:05:02 2024 +0100

    selftests/bpf: Add cookies check for perf_event fill_link_info test
    
    [ Upstream commit d74179708473c649c653f1db280e29875a532e99 ]
    
    Now that we get cookies for perf_event probes, adding tests
    for cookie for kprobe/uprobe/tracepoint.
    
    The perf_event test needs to be added completely and is coming
    in following change.
    
    Signed-off-by: Jiri Olsa <[email protected]>
    Acked-by: Song Liu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Stable-dep-of: 4538a38f654a ("selftests/bpf: fix perf_event link info name_len assertion")
    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]>

selftests/bpf: fix perf_event link info name_len assertion [+ + +]
Author: Tyrone Wu <[email protected]>
Date:   Tue Oct 8 16:43:12 2024 +0000

    selftests/bpf: fix perf_event link info name_len assertion
    
    [ Upstream commit 4538a38f654a1c292fe489a9b66179262bfed088 ]
    
    Fix `name_len` field assertions in `bpf_link_info.perf_event` for
    kprobe/uprobe/tracepoint to validate correct name size instead of 0.
    
    Fixes: 23cf7aa539dc ("selftests/bpf: Add selftest for fill_link_info")
    Signed-off-by: Tyrone Wu <[email protected]>
    Acked-by: Jiri Olsa <[email protected]>
    Acked-by: Yafang Shao <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

selftests/bpf: Use bpf_link__destroy in fill_link_info tests [+ + +]
Author: Jiri Olsa <[email protected]>
Date:   Sat Nov 25 20:31:28 2023 +0100

    selftests/bpf: Use bpf_link__destroy in fill_link_info tests
    
    [ Upstream commit 1703612885723869064f18e8816c6f3f87987748 ]
    
    The fill_link_info test keeps skeleton open and just creates
    various links. We are wrongly calling bpf_link__detach after
    each test to close them, we need to call bpf_link__destroy.
    
    Signed-off-by: Jiri Olsa <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Acked-by: Yonghong Song <[email protected]>
    Acked-by: Yafang Shao <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Stable-dep-of: 4538a38f654a ("selftests/bpf: fix perf_event link info name_len assertion")
    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:21 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]>
    Signed-off-by: Thadeu Lima de Souza Cascardo <[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]>

smb: client: fix possible double free in smb2_set_ea() [+ + +]
Author: Su Hui <[email protected]>
Date:   Tue Oct 15 18:20:37 2024 +0800

    smb: client: fix possible double free in smb2_set_ea()
    
    [ Upstream commit 19ebc1e6cab334a8193398d4152deb76019b5d34 ]
    
    Clang static checker(scan-build) warning:
    fs/smb/client/smb2ops.c:1304:2: Attempt to free released memory.
     1304 |         kfree(ea);
          |         ^~~~~~~~~
    
    There is a double free in such case:
    'ea is initialized to NULL' -> 'first successful memory allocation for
    ea' -> 'something failed, goto sea_exit' -> 'first memory release for ea'
    -> 'goto replay_again' -> 'second goto sea_exit before allocate memory
    for ea' -> 'second memory release for ea resulted in double free'.
    
    Re-initialie 'ea' to NULL near to the replay_again label, it can fix this
    double free problem.
    
    Fixes: 4f1fffa23769 ("cifs: commands that are retried should have replay flag set")
    Reviewed-by: Dan Carpenter <[email protected]>
    Signed-off-by: Su Hui <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

smb: client: Handle kstrdup failures for passwords [+ + +]
Author: Henrique Carvalho <[email protected]>
Date:   Tue Oct 22 15:21:26 2024 -0300

    smb: client: Handle kstrdup failures for passwords
    
    [ Upstream commit 9a5dd61151399ad5a5d69aad28ab164734c1e3bc ]
    
    In smb3_reconfigure(), after duplicating ctx->password and
    ctx->password2 with kstrdup(), we need to check for allocation
    failures.
    
    If ses->password allocation fails, return -ENOMEM.
    If ses->password2 allocation fails, free ses->password, set it
    to NULL, and return -ENOMEM.
    
    Fixes: c1eb537bf456 ("cifs: allow changing password during remount")
    Reviewed-by: David Howells <[email protected]
    Signed-off-by: Haoxiang Li <[email protected]>
    Signed-off-by: Henrique Carvalho <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
task_work: Add TWA_NMI_CURRENT as an additional notify mode. [+ + +]
Author: Sebastian Andrzej Siewior <[email protected]>
Date:   Thu Jul 4 19:03:36 2024 +0200

    task_work: Add TWA_NMI_CURRENT as an additional notify mode.
    
    [ Upstream commit 466e4d801cd438a1ab2c8a2cce1bef6b65c31bbb ]
    
    Adding task_work from NMI context requires the following:
    - The kasan_record_aux_stack() is not NMU safe and must be avoided.
    - Using TWA_RESUME is NMI safe. If the NMI occurs while the CPU is in
      userland then it will continue in userland and not invoke the `work'
      callback.
    
    Add TWA_NMI_CURRENT as an additional notify mode. In this mode skip
    kasan and use irq_work in hardirq-mode to for needed interrupt. Set
    TIF_NOTIFY_RESUME within the irq_work callback due to k[ac]san
    instrumentation in test_and_set_bit() which does not look NMI safe in
    case of a report.
    
    Suggested-by: Peter Zijlstra <[email protected]>
    Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: 73ab05aa46b0 ("sched/core: Disable page allocation in task_tick_mm_cid()")
    Signed-off-by: Sasha Levin <[email protected]>

task_work: make TWA_NMI_CURRENT handling conditional on IRQ_WORK [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Mon Jul 29 12:05:06 2024 -0700

    task_work: make TWA_NMI_CURRENT handling conditional on IRQ_WORK
    
    commit cec6937dd1aae1b38d147bd190cb895d06cf96d0 upstream.
    
    The TWA_NMI_CURRENT handling very much depends on IRQ_WORK, but that
    isn't universally enabled everywhere.
    
    Maybe the IRQ_WORK infrastructure should just be unconditional - x86
    ends up indirectly enabling it through unconditionally enabling
    PERF_EVENTS, for example.  But it also gets enabled by having SMP
    support, or even if you just have PRINTK enabled.
    
    But in the meantime TWA_NMI_CURRENT causes tons of build failures on
    various odd minimal configs.  Which did show up in linux-next, but
    despite that nobody bothered to fix it or even inform me until -rc1 was
    out.
    
    Fixes: 466e4d801cd4 ("task_work: Add TWA_NMI_CURRENT as an additional notify mode")
    Reported-by: Naresh Kamboju <[email protected]>
    Reported-by: kernelci.org bot <[email protected]>
    Reported-by: Guenter Roeck <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Sebastian Andrzej Siewior <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[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/fprobe-event: cleanup: Fix a wrong comment in fprobe event [+ + +]
Author: Masami Hiramatsu (Google) <[email protected]>
Date:   Mon Mar 4 12:40:16 2024 +0900

    tracing/fprobe-event: cleanup: Fix a wrong comment in fprobe event
    
    [ Upstream commit 7e37b6bc3cc096e24709908076807bb9c3cf0d38 ]
    
    Despite the fprobe event,  "Kretprobe" was commented. So fix it.
    
    Link: https://lore.kernel.org/all/170952361630.229804.10832200172327797860.stgit@devnote2/
    
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Reviewed-by: Steven Rostedt (Google) <[email protected]>
    Stable-dep-of: 373b9338c972 ("uprobe: avoid out-of-bounds memory access of fetching args")
    Signed-off-by: Sasha Levin <[email protected]>

 
tracing/probes: cleanup: Set trace_probe::nr_args at trace_probe_init [+ + +]
Author: Masami Hiramatsu (Google) <[email protected]>
Date:   Mon Mar 4 12:40:36 2024 +0900

    tracing/probes: cleanup: Set trace_probe::nr_args at trace_probe_init
    
    [ Upstream commit 035ba76014c096316fa809a46ce0a1b9af1cde0d ]
    
    Instead of incrementing the trace_probe::nr_args, init it at
    trace_probe_init(). Without this change, there is no way to get the number
    of trace_probe arguments while parsing it.
    This is a cleanup, so the behavior is not changed.
    
    Link: https://lore.kernel.org/all/170952363585.229804.13060759900346411951.stgit@devnote2/
    
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Stable-dep-of: 373b9338c972 ("uprobe: avoid out-of-bounds memory access of fetching args")
    Signed-off-by: Sasha Levin <[email protected]>

tracing/probes: Fix MAX_TRACE_ARGS limit handling [+ + +]
Author: Mikel Rychliski <[email protected]>
Date:   Mon Sep 30 16:26:54 2024 -0400

    tracing/probes: Fix MAX_TRACE_ARGS limit handling
    
    [ Upstream commit 73f35080477e893aa6f4c8d388352b871b288fbc ]
    
    When creating a trace_probe we would set nr_args prior to truncating the
    arguments to MAX_TRACE_ARGS. However, we would only initialize arguments
    up to the limit.
    
    This caused invalid memory access when attempting to set up probes with
    more than 128 fetchargs.
    
      BUG: kernel NULL pointer dereference, address: 0000000000000020
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      PGD 0 P4D 0
      Oops: Oops: 0000 [#1] PREEMPT SMP PTI
      CPU: 0 UID: 0 PID: 1769 Comm: cat Not tainted 6.11.0-rc7+ #8
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-1.fc39 04/01/2014
      RIP: 0010:__set_print_fmt+0x134/0x330
    
    Resolve the issue by applying the MAX_TRACE_ARGS limit earlier. Return
    an error when there are too many arguments instead of silently
    truncating.
    
    Link: https://lore.kernel.org/all/[email protected]/
    
    Fixes: 035ba76014c0 ("tracing/probes: cleanup: Set trace_probe::nr_args at trace_probe_init")
    Signed-off-by: Mikel Rychliski <[email protected]>
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tracing/probes: Support $argN in return probe (kprobe and fprobe) [+ + +]
Author: Masami Hiramatsu (Google) <[email protected]>
Date:   Mon Mar 4 12:40:55 2024 +0900

    tracing/probes: Support $argN in return probe (kprobe and fprobe)
    
    [ Upstream commit 25f00e40ce7953db197af3a59233711d154c9d80 ]
    
    Support accessing $argN in the return probe events. This will help users to
    record entry data in function return (exit) event for simplfing the function
    entry/exit information in one event, and record the result values (e.g.
    allocated object/initialized object) at function exit.
    
    For example, if we have a function `int init_foo(struct foo *obj, int param)`
    sometimes we want to check how `obj` is initialized. In such case, we can
    define a new return event like below;
    
     # echo 'r init_foo retval=$retval param=$arg2 field1=+0($arg1)' >> kprobe_events
    
    Thus it records the function parameter `param` and its result `obj->field1`
    (the dereference will be done in the function exit timing) value at once.
    
    This also support fprobe, BTF args and'$arg*'. So if CONFIG_DEBUG_INFO_BTF
    is enabled, we can trace both function parameters and the return value
    by following command.
    
     # echo 'f target_function%return $arg* $retval' >> dynamic_events
    
    Link: https://lore.kernel.org/all/170952365552.229804.224112990211602895.stgit@devnote2/
    
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Stable-dep-of: 373b9338c972 ("uprobe: avoid out-of-bounds memory access of fetching args")
    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]>

tracing: probes: Fix to zero initialize a local variable [+ + +]
Author: Masami Hiramatsu (Google) <[email protected]>
Date:   Wed Mar 20 17:10:38 2024 +0900

    tracing: probes: Fix to zero initialize a local variable
    
    commit 0add699ad068d26e5b1da9ff28b15461fc4005df upstream.
    
    Fix to initialize 'val' local variable with zero.
    Dan reported that Smatch static code checker reports an error that a local
    'val' variable needs to be initialized. Actually, the 'val' is expected to
    be initialized by FETCH_OP_ARG in the same loop, but it is not obvious. So
    initialize it with zero.
    
    Link: https://lore.kernel.org/all/171092223833.237219.17304490075697026697.stgit@devnote2/
    
    Reported-by: Dan Carpenter <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Fixes: 25f00e40ce79 ("tracing/probes: Support $argN in return probe (kprobe and fprobe)")
    Reviewed-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[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 inode_bmap() to handle error [+ + +]
Author: Zhao Mengmeng <[email protected]>
Date:   Tue Oct 1 19:54:25 2024 +0800

    udf: refactor inode_bmap() to handle error
    
    [ Upstream commit c226964ec786f3797ed389a16392ce4357697d24 ]
    
    Refactor inode_bmap() to handle error since udf_next_aext() can return
    error now. On situations like ftruncate, udf_extend_file() can now
    detect errors and bail out early without resorting to checking for
    particular offsets and assuming internal behavior of these functions.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=7a4842f0b1801230a989
    Tested-by: [email protected]
    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]>

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]>

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

    udf: refactor udf_next_aext() to handle error
    
    [ Upstream commit b405c1e58b73981da0f8df03b00666b22b9397ae ]
    
    Since udf_current_aext() has error handling, udf_next_aext() should have
    error handling too. Besides, when too many indirect extents found in one
    inode, return -EFSCORRUPTED; when reading block failed, return -EIO.
    
    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]>

 
uprobe: avoid out-of-bounds memory access of fetching args [+ + +]
Author: Qiao Ma <[email protected]>
Date:   Tue Oct 15 14:01:48 2024 +0800

    uprobe: avoid out-of-bounds memory access of fetching args
    
    [ Upstream commit 373b9338c9722a368925d83bc622c596896b328e ]
    
    Uprobe needs to fetch args into a percpu buffer, and then copy to ring
    buffer to avoid non-atomic context problem.
    
    Sometimes user-space strings, arrays can be very large, but the size of
    percpu buffer is only page size. And store_trace_args() won't check
    whether these data exceeds a single page or not, caused out-of-bounds
    memory access.
    
    It could be reproduced by following steps:
    1. build kernel with CONFIG_KASAN enabled
    2. save follow program as test.c
    
    ```
    \#include <stdio.h>
    \#include <stdlib.h>
    \#include <string.h>
    
    // If string length large than MAX_STRING_SIZE, the fetch_store_strlen()
    // will return 0, cause __get_data_size() return shorter size, and
    // store_trace_args() will not trigger out-of-bounds access.
    // So make string length less than 4096.
    \#define STRLEN 4093
    
    void generate_string(char *str, int n)
    {
        int i;
        for (i = 0; i < n; ++i)
        {
            char c = i % 26 + 'a';
            str[i] = c;
        }
        str[n-1] = '\0';
    }
    
    void print_string(char *str)
    {
        printf("%s\n", str);
    }
    
    int main()
    {
        char tmp[STRLEN];
    
        generate_string(tmp, STRLEN);
        print_string(tmp);
    
        return 0;
    }
    ```
    3. compile program
    `gcc -o test test.c`
    
    4. get the offset of `print_string()`
    ```
    objdump -t test | grep -w print_string
    0000000000401199 g     F .text  000000000000001b              print_string
    ```
    
    5. configure uprobe with offset 0x1199
    ```
    off=0x1199
    
    cd /sys/kernel/debug/tracing/
    echo "p /root/test:${off} arg1=+0(%di):ustring arg2=\$comm arg3=+0(%di):ustring"
     > uprobe_events
    echo 1 > events/uprobes/enable
    echo 1 > tracing_on
    ```
    
    6. run `test`, and kasan will report error.
    ==================================================================
    BUG: KASAN: use-after-free in strncpy_from_user+0x1d6/0x1f0
    Write of size 8 at addr ffff88812311c004 by task test/499CPU: 0 UID: 0 PID: 499 Comm: test Not tainted 6.12.0-rc3+ #18
    Hardware name: Red Hat KVM, BIOS 1.16.0-4.al8 04/01/2014
    Call Trace:
     <TASK>
     dump_stack_lvl+0x55/0x70
     print_address_description.constprop.0+0x27/0x310
     kasan_report+0x10f/0x120
     ? strncpy_from_user+0x1d6/0x1f0
     strncpy_from_user+0x1d6/0x1f0
     ? rmqueue.constprop.0+0x70d/0x2ad0
     process_fetch_insn+0xb26/0x1470
     ? __pfx_process_fetch_insn+0x10/0x10
     ? _raw_spin_lock+0x85/0xe0
     ? __pfx__raw_spin_lock+0x10/0x10
     ? __pte_offset_map+0x1f/0x2d0
     ? unwind_next_frame+0xc5f/0x1f80
     ? arch_stack_walk+0x68/0xf0
     ? is_bpf_text_address+0x23/0x30
     ? kernel_text_address.part.0+0xbb/0xd0
     ? __kernel_text_address+0x66/0xb0
     ? unwind_get_return_address+0x5e/0xa0
     ? __pfx_stack_trace_consume_entry+0x10/0x10
     ? arch_stack_walk+0xa2/0xf0
     ? _raw_spin_lock_irqsave+0x8b/0xf0
     ? __pfx__raw_spin_lock_irqsave+0x10/0x10
     ? depot_alloc_stack+0x4c/0x1f0
     ? _raw_spin_unlock_irqrestore+0xe/0x30
     ? stack_depot_save_flags+0x35d/0x4f0
     ? kasan_save_stack+0x34/0x50
     ? kasan_save_stack+0x24/0x50
     ? mutex_lock+0x91/0xe0
     ? __pfx_mutex_lock+0x10/0x10
     prepare_uprobe_buffer.part.0+0x2cd/0x500
     uprobe_dispatcher+0x2c3/0x6a0
     ? __pfx_uprobe_dispatcher+0x10/0x10
     ? __kasan_slab_alloc+0x4d/0x90
     handler_chain+0xdd/0x3e0
     handle_swbp+0x26e/0x3d0
     ? __pfx_handle_swbp+0x10/0x10
     ? uprobe_pre_sstep_notifier+0x151/0x1b0
     irqentry_exit_to_user_mode+0xe2/0x1b0
     asm_exc_int3+0x39/0x40
    RIP: 0033:0x401199
    Code: 01 c2 0f b6 45 fb 88 02 83 45 fc 01 8b 45 fc 3b 45 e4 7c b7 8b 45 e4 48 98 48 8d 50 ff 48 8b 45 e8 48 01 d0 ce
    RSP: 002b:00007ffdf00576a8 EFLAGS: 00000206
    RAX: 00007ffdf00576b0 RBX: 0000000000000000 RCX: 0000000000000ff2
    RDX: 0000000000000ffc RSI: 0000000000000ffd RDI: 00007ffdf00576b0
    RBP: 00007ffdf00586b0 R08: 00007feb2f9c0d20 R09: 00007feb2f9c0d20
    R10: 0000000000000001 R11: 0000000000000202 R12: 0000000000401040
    R13: 00007ffdf0058780 R14: 0000000000000000 R15: 0000000000000000
     </TASK>
    
    This commit enforces the buffer's maxlen less than a page-size to avoid
    store_trace_args() out-of-memory access.
    
    Link: https://lore.kernel.org/all/[email protected]/
    
    Fixes: dcad1a204f72 ("tracing/uprobes: Fetch args before reserving a ring buffer")
    Signed-off-by: Qiao Ma <[email protected]>
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
uprobes: encapsulate preparation of uprobe args buffer [+ + +]
Author: Andrii Nakryiko <[email protected]>
Date:   Mon Mar 18 11:17:26 2024 -0700

    uprobes: encapsulate preparation of uprobe args buffer
    
    [ Upstream commit 3eaea21b4d27cff0017c20549aeb53034c58fc23 ]
    
    Move the logic of fetching temporary per-CPU uprobe buffer and storing
    uprobes args into it to a new helper function. Store data size as part
    of this buffer, simplifying interfaces a bit, as now we only pass single
    uprobe_cpu_buffer reference around, instead of pointer + dsize.
    
    This logic was duplicated across uprobe_dispatcher and uretprobe_dispatcher,
    and now will be centralized. All this is also in preparation to make
    this uprobe_cpu_buffer handling logic optional in the next patch.
    
    Link: https://lore.kernel.org/all/[email protected]/
    [Masami: update for v6.9-rc3 kernel]
    
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Reviewed-by: Jiri Olsa <[email protected]>
    Acked-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Stable-dep-of: 373b9338c972 ("uprobe: avoid out-of-bounds memory access of fetching args")
    Signed-off-by: Sasha Levin <[email protected]>

uprobes: prepare uprobe args buffer lazily [+ + +]
Author: Andrii Nakryiko <[email protected]>
Date:   Mon Mar 18 11:17:27 2024 -0700

    uprobes: prepare uprobe args buffer lazily
    
    [ Upstream commit 1b8f85defbc82e2eb8f27c5f6060ea507ad4d5a3 ]
    
    uprobe_cpu_buffer and corresponding logic to store uprobe args into it
    are used for uprobes/uretprobes that are created through tracefs or
    perf events.
    
    BPF is yet another user of uprobe/uretprobe infrastructure, but doesn't
    need uprobe_cpu_buffer and associated data. For BPF-only use cases this
    buffer handling and preparation is a pure overhead. At the same time,
    BPF-only uprobe/uretprobe usage is very common in practice. Also, for
    a lot of cases applications are very senstivie to performance overheads,
    as they might be tracing a very high frequency functions like
    malloc()/free(), so every bit of performance improvement matters.
    
    All that is to say that this uprobe_cpu_buffer preparation is an
    unnecessary overhead that each BPF user of uprobes/uretprobe has to pay.
    This patch is changing this by making uprobe_cpu_buffer preparation
    optional. It will happen only if either tracefs-based or perf event-based
    uprobe/uretprobe consumer is registered for given uprobe/uretprobe. For
    BPF-only use cases this step will be skipped.
    
    We used uprobe/uretprobe benchmark which is part of BPF selftests (see [0])
    to estimate the improvements. We have 3 uprobe and 3 uretprobe
    scenarios, which vary an instruction that is replaced by uprobe: nop
    (fastest uprobe case), `push rbp` (typical case), and non-simulated
    `ret` instruction (slowest case). Benchmark thread is constantly calling
    user space function in a tight loop. User space function has attached
    BPF uprobe or uretprobe program doing nothing but atomic counter
    increments to count number of triggering calls. Benchmark emits
    throughput in millions of executions per second.
    
    BEFORE these changes
    ====================
    uprobe-nop     :    2.657 ± 0.024M/s
    uprobe-push    :    2.499 ± 0.018M/s
    uprobe-ret     :    1.100 ± 0.006M/s
    uretprobe-nop  :    1.356 ± 0.004M/s
    uretprobe-push :    1.317 ± 0.019M/s
    uretprobe-ret  :    0.785 ± 0.007M/s
    
    AFTER these changes
    ===================
    uprobe-nop     :    2.732 ± 0.022M/s (+2.8%)
    uprobe-push    :    2.621 ± 0.016M/s (+4.9%)
    uprobe-ret     :    1.105 ± 0.007M/s (+0.5%)
    uretprobe-nop  :    1.396 ± 0.007M/s (+2.9%)
    uretprobe-push :    1.347 ± 0.008M/s (+2.3%)
    uretprobe-ret  :    0.800 ± 0.006M/s (+1.9)
    
    So the improvements on this particular machine seems to be between 2% and 5%.
    
      [0] https://github.com/torvalds/linux/blob/master/tools/testing/selftests/bpf/benchs/bench_trigger.c
    
    Reviewed-by: Jiri Olsa <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]/
    
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Acked-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Stable-dep-of: 373b9338c972 ("uprobe: avoid out-of-bounds memory access of fetching args")
    Signed-off-by: Sasha Levin <[email protected]>

uprobes: prevent mutex_lock() under rcu_read_lock() [+ + +]
Author: Andrii Nakryiko <[email protected]>
Date:   Mon May 20 22:30:17 2024 -0700

    uprobes: prevent mutex_lock() under rcu_read_lock()
    
    [ Upstream commit 699646734ab51bf5b1cd4a7a30c20074f6e74f6e ]
    
    Recent changes made uprobe_cpu_buffer preparation lazy, and moved it
    deeper into __uprobe_trace_func(). This is problematic because
    __uprobe_trace_func() is called inside rcu_read_lock()/rcu_read_unlock()
    block, which then calls prepare_uprobe_buffer() -> uprobe_buffer_get() ->
    mutex_lock(&ucb->mutex), leading to a splat about using mutex under
    non-sleepable RCU:
    
      BUG: sleeping function called from invalid context at kernel/locking/mutex.c:585
       in_atomic(): 0, irqs_disabled(): 0, non_block: 0, pid: 98231, name: stress-ng-sigq
       preempt_count: 0, expected: 0
       RCU nest depth: 1, expected: 0
       ...
       Call Trace:
        <TASK>
        dump_stack_lvl+0x3d/0xe0
        __might_resched+0x24c/0x270
        ? prepare_uprobe_buffer+0xd5/0x1d0
        __mutex_lock+0x41/0x820
        ? ___perf_sw_event+0x206/0x290
        ? __perf_event_task_sched_in+0x54/0x660
        ? __perf_event_task_sched_in+0x54/0x660
        prepare_uprobe_buffer+0xd5/0x1d0
        __uprobe_trace_func+0x4a/0x140
        uprobe_dispatcher+0x135/0x280
        ? uprobe_dispatcher+0x94/0x280
        uprobe_notify_resume+0x650/0xec0
        ? atomic_notifier_call_chain+0x21/0x110
        ? atomic_notifier_call_chain+0xf8/0x110
        irqentry_exit_to_user_mode+0xe2/0x1e0
        asm_exc_int3+0x35/0x40
       RIP: 0033:0x7f7e1d4da390
       Code: 33 04 00 0f 1f 80 00 00 00 00 f3 0f 1e fa b9 01 00 00 00 e9 b2 fc ff ff 66 90 f3 0f 1e fa 31 c9 e9 a5 fc ff ff 0f 1f 44 00 00 <cc> 0f 1e fa b8 27 00 00 00 0f 05 c3 0f 1f 40 00 f3 0f 1e fa b8 6e
       RSP: 002b:00007ffd2abc3608 EFLAGS: 00000246
       RAX: 0000000000000000 RBX: 0000000076d325f1 RCX: 0000000000000000
       RDX: 0000000076d325f1 RSI: 000000000000000a RDI: 00007ffd2abc3690
       RBP: 000000000000000a R08: 00017fb700000000 R09: 00017fb700000000
       R10: 00017fb700000000 R11: 0000000000000246 R12: 0000000000017ff2
       R13: 00007ffd2abc3610 R14: 0000000000000000 R15: 00007ffd2abc3780
        </TASK>
    
    Luckily, it's easy to fix by moving prepare_uprobe_buffer() to be called
    slightly earlier: into uprobe_trace_func() and uretprobe_trace_func(), outside
    of RCU locked section. This still keeps this buffer preparation lazy and helps
    avoid the overhead when it's not needed. E.g., if there is only BPF uprobe
    handler installed on a given uprobe, buffer won't be initialized.
    
    Note, the other user of prepare_uprobe_buffer(), __uprobe_perf_func(), is not
    affected, as it doesn't prepare buffer under RCU read lock.
    
    Link: https://lore.kernel.org/all/[email protected]/
    
    Fixes: 1b8f85defbc8 ("uprobes: prepare uprobe args buffer lazily")
    Reported-by: Breno Leitao <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Stable-dep-of: 373b9338c972 ("uprobe: avoid out-of-bounds memory access of fetching args")
    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: 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]>

 
vmxnet3: Fix packet corruption in vmxnet3_xdp_xmit_frame [+ + +]
Author: Daniel Borkmann <[email protected]>
Date:   Mon Oct 14 21:03:11 2024 +0200

    vmxnet3: Fix packet corruption in vmxnet3_xdp_xmit_frame
    
    [ Upstream commit 4678adf94da4a9e9683817b246b58ce15fb81782 ]
    
    Andrew and Nikolay reported connectivity issues with Cilium's service
    load-balancing in case of vmxnet3.
    
    If a BPF program for native XDP adds an encapsulation header such as
    IPIP and transmits the packet out the same interface, then in case
    of vmxnet3 a corrupted packet is being sent and subsequently dropped
    on the path.
    
    vmxnet3_xdp_xmit_frame() which is called e.g. via vmxnet3_run_xdp()
    through vmxnet3_xdp_xmit_back() calculates an incorrect DMA address:
    
      page = virt_to_page(xdpf->data);
      tbi->dma_addr = page_pool_get_dma_addr(page) +
                      VMXNET3_XDP_HEADROOM;
      dma_sync_single_for_device(&adapter->pdev->dev,
                                 tbi->dma_addr, buf_size,
                                 DMA_TO_DEVICE);
    
    The above assumes a fixed offset (VMXNET3_XDP_HEADROOM), but the XDP
    BPF program could have moved xdp->data. While the passed buf_size is
    correct (xdpf->len), the dma_addr needs to have a dynamic offset which
    can be calculated as xdpf->data - (void *)xdpf, that is, xdp->data -
    xdp->data_hard_start.
    
    Fixes: 54f00cce1178 ("vmxnet3: Add XDP support.")
    Reported-by: Andrew Sauber <[email protected]>
    Reported-by: Nikolay Nikolaev <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Tested-by: Nikolay Nikolaev <[email protected]>
    Acked-by: Anton Protopopov <[email protected]>
    Cc: William Tu <[email protected]>
    Cc: Ronak Doshi <[email protected]>
    Link: https://patch.msgid.link/a0888656d7f09028f9984498cc698bb5364d89fc.1728931137.git.daniel@iogearbox.net
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vsock: Update msg_count on read_skb() [+ + +]
Author: Michal Luczaj <[email protected]>
Date:   Sun Oct 13 18:26:41 2024 +0200

    vsock: Update msg_count on read_skb()
    
    [ Upstream commit 6dafde852df8de3617d4b9f835b629aaeaccd01d ]
    
    Dequeuing via vsock_transport::read_skb() left msg_count outdated, which
    then confused SOCK_SEQPACKET recv(). Decrease the counter.
    
    Fixes: 634f1a7110b4 ("vsock: support sockmap")
    Signed-off-by: Michal Luczaj <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Reviewed-by: Stefano Garzarella <[email protected]>
    Acked-by: John Fastabend <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

vsock: Update rx_bytes on read_skb() [+ + +]
Author: Michal Luczaj <[email protected]>
Date:   Sun Oct 13 18:26:40 2024 +0200

    vsock: Update rx_bytes on read_skb()
    
    [ Upstream commit 3543152f2d330141d9394d28855cb90b860091d2 ]
    
    Make sure virtio_transport_inc_rx_pkt() and virtio_transport_dec_rx_pkt()
    calls are balanced (i.e. virtio_vsock_sock::rx_bytes doesn't lie) after
    vsock_transport::read_skb().
    
    While here, also inform the peer that we've freed up space and it has more
    credit.
    
    Failing to update rx_bytes after packet is dequeued leads to a warning on
    SOCK_STREAM recv():
    
    [  233.396654] rx_queue is empty, but rx_bytes is non-zero
    [  233.396702] WARNING: CPU: 11 PID: 40601 at net/vmw_vsock/virtio_transport_common.c:589
    
    Fixes: 634f1a7110b4 ("vsock: support sockmap")
    Suggested-by: Stefano Garzarella <[email protected]>
    Signed-off-by: Michal Luczaj <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Reviewed-by: Stefano Garzarella <[email protected]>
    Acked-by: John Fastabend <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/lam: Disable ADDRESS_MASKING in most cases [+ + +]
Author: Pawan Gupta <[email protected]>
Date:   Tue Jan 23 19:55:21 2024 -0800

    x86/lam: Disable ADDRESS_MASKING in most cases
    
    commit 3267cb6d3a174ff83d6287dcd5b0047bbd912452 upstream.
    
    Linear Address Masking (LAM) has a weakness related to transient
    execution as described in the SLAM paper[1]. Unless Linear Address
    Space Separation (LASS) is enabled this weakness may be exploitable.
    
    Until kernel adds support for LASS[2], only allow LAM for COMPILE_TEST,
    or when speculation mitigations have been disabled at compile time,
    otherwise keep LAM disabled.
    
    There are no processors in market that support LAM yet, so currently
    nobody is affected by this issue.
    
    [1] SLAM: https://download.vusec.net/papers/slam_sp24.pdf
    [2] LASS: https://lore.kernel.org/lkml/[email protected]/
    
    [ dhansen: update SPECULATION_MITIGATIONS -> CPU_MITIGATIONS ]
    
    Signed-off-by: Pawan Gupta <[email protected]>
    Signed-off-by: Dave Hansen <[email protected]>
    Reviewed-by: Sohil Mehta <[email protected]>
    Acked-by: Kirill A. Shutemov <[email protected]>
    Cc:[email protected]
    Link: https://lore.kernel.org/all/5373262886f2783f054256babdf5a98545dc986b.1706068222.git.pawan.kumar.gupta%40linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <[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]>