Changelog in Linux kernel 6.1.129

 
ACPI: fan: cleanup resources in the error path of .probe() [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Wed Dec 11 12:28:12 2024 +0900

    ACPI: fan: cleanup resources in the error path of .probe()
    
    [ Upstream commit c759bc8e9046f9812238f506d70f07d3ea4206d4 ]
    
    Call thermal_cooling_device_unregister() and sysfs_remove_link() in the
    error path of acpi_fan_probe() to fix possible memory leak.
    
    This bug was found by an experimental static analysis tool that I am
    developing.
    
    Fixes: 05a83d972293 ("ACPI: register ACPI Fan as generic thermal cooling device")
    Signed-off-by: Joe Hattori <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ACPI: PRM: Remove unnecessary strict handler address checks [+ + +]
Author: Aubrey Li <[email protected]>
Date:   Sun Jan 26 10:22:50 2025 +0800

    ACPI: PRM: Remove unnecessary strict handler address checks
    
    commit 7f5704b6a143b8eca640cba820968e798d065e91 upstream.
    
    Commit 088984c8d54c ("ACPI: PRM: Find EFI_MEMORY_RUNTIME block for PRM
    handler and context") added unnecessary strict handler address checks,
    causing the PRM module to fail in translating memory error addresses.
    
    Both static data buffer address and ACPI parameter buffer address may
    be NULL if they are not needed, as described in section 4.1.2 PRM Handler
    Information Structure of Platform Runtime Mechanism specification [1].
    
    Here are two examples from real hardware:
    
    ----PRMT.dsl----
    
    - staic data address is not used
    [10Ch 0268   2]                     Revision : 0000
    [10Eh 0270   2]                       Length : 002C
    [110h 0272  16]                 Handler GUID : F6A58D47-E04F-4F5A-86B8-2A50D4AA109B
    [120h 0288   8]              Handler address : 0000000065CE51F4
    [128h 0296   8]           Satic Data Address : 0000000000000000
    [130h 0304   8]       ACPI Parameter Address : 000000006522A718
    
    - ACPI parameter address is not used
    [1B0h 0432   2]                     Revision : 0000
    [1B2h 0434   2]                       Length : 002C
    [1B4h 0436  16]                 Handler GUID : 657E8AE6-A8FC-4877-BB28-42E7DE1899A5
    [1C4h 0452   8]              Handler address : 0000000065C567C8
    [1CCh 0460   8]           Satic Data Address : 000000006113FB98
    [1D4h 0468   8]       ACPI Parameter Address : 0000000000000000
    
    Fixes: 088984c8d54c ("ACPI: PRM: Find EFI_MEMORY_RUNTIME block for PRM handler and context")
    Reported-and-tested-by: Shi Liu <[email protected]>
    Cc: All applicable <[email protected]>
    Signed-off-by: Aubrey Li <[email protected]>
    Link: https://uefi.org/sites/default/files/resources/Platform%20Runtime%20Mechanism%20-%20with%20legal%20notice.pdf # [1]
    Reviewed-by: Koba Ko <[email protected]>
    Acked-by: Ard Biesheuvel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Minor changelog edits ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ACPI: property: Fix return value for nval == 0 in acpi_data_prop_read() [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Mon Feb 3 21:46:29 2025 +0200

    ACPI: property: Fix return value for nval == 0 in acpi_data_prop_read()
    
    [ Upstream commit ab930483eca9f3e816c35824b5868599af0c61d7 ]
    
    While analysing code for software and OF node for the corner case when
    caller asks to read zero items in the supposed to be an array of values
    I found that ACPI behaves differently to what OF does, i.e.
    
     1. It returns -EINVAL when caller asks to read zero items from integer
        array, while OF returns 0, if no other errors happened.
    
     2. It returns -EINVAL when caller asks to read zero items from string
        array, while OF returns -ENODATA, if no other errors happened.
    
    Amend ACPI implementation to follow what OF does.
    
    Fixes: b31384fa5de3 ("Driver core: Unified device properties interface for platform firmware")
    Signed-off-by: Andy Shevchenko <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Added empty line after a conditional ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
afs: Fix directory format encoding struct [+ + +]
Author: David Howells <[email protected]>
Date:   Mon Dec 16 20:41:03 2024 +0000

    afs: Fix directory format encoding struct
    
    [ Upstream commit 07a10767853adcbdbf436dc91393b729b52c4e81 ]
    
    The AFS directory format structure, union afs_xdr_dir_block::meta, has too
    many alloc counter slots declared and so pushes the hash table along and
    over the data.  This doesn't cause a problem at the moment because I'm
    currently ignoring the hash table and only using the correct number of
    alloc_ctrs in the code anyway.  In future, however, I should start using
    the hash table to try and speed up afs_lookup().
    
    Fix this by using the correct constant to declare the counter array.
    
    Fixes: 4ea219a839bf ("afs: Split the directory content defs into a header")
    Signed-off-by: David Howells <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    cc: Marc Dionne <[email protected]>
    cc: [email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

afs: Fix EEXIST error returned from afs_rmdir() to be ENOTEMPTY [+ + +]
Author: David Howells <[email protected]>
Date:   Mon Dec 16 20:41:02 2024 +0000

    afs: Fix EEXIST error returned from afs_rmdir() to be ENOTEMPTY
    
    [ Upstream commit b49194da2aff2c879dec9c59ef8dec0f2b0809ef ]
    
    AFS servers pass back a code indicating EEXIST when they're asked to remove
    a directory that is not empty rather than ENOTEMPTY because not all the
    systems that an AFS server can run on have the latter error available and
    AFS preexisted the addition of that error in general.
    
    Fix afs_rmdir() to translate EEXIST to ENOTEMPTY.
    
    Fixes: 260a980317da ("[AFS]: Add "directory write" support.")
    Signed-off-by: David Howells <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    cc: Marc Dionne <[email protected]>
    cc: [email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

afs: Fix the fallback handling for the YFS.RemoveFile2 RPC call [+ + +]
Author: David Howells <[email protected]>
Date:   Tue Jan 14 14:46:03 2025 +0000

    afs: Fix the fallback handling for the YFS.RemoveFile2 RPC call
    
    [ Upstream commit e30458d690f35abb01de8b3cbc09285deb725d00 ]
    
    Fix a pair of bugs in the fallback handling for the YFS.RemoveFile2 RPC
    call:
    
     (1) Fix the abort code check to also look for RXGEN_OPCODE.  The lack of
         this masks the second bug.
    
     (2) call->server is now not used for ordinary filesystem RPC calls that
         have an operation descriptor.  Fix to use call->op->server instead.
    
    Fixes: e49c7b2f6de7 ("afs: Build an abstraction around an "operation" concept")
    Signed-off-by: David Howells <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    cc: Marc Dionne <[email protected]>
    cc: [email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
alpha: align stack for page fault and user unaligned trap handlers [+ + +]
Author: Ivan Kokshaysky <[email protected]>
Date:   Tue Feb 4 23:35:24 2025 +0100

    alpha: align stack for page fault and user unaligned trap handlers
    
    commit 3b35a171060f846b08b48646b38c30b5d57d17ff upstream.
    
    do_page_fault() and do_entUna() are special because they use
    non-standard stack frame layout. Fix them manually.
    
    Cc: [email protected]
    Tested-by: Maciej W. Rozycki <[email protected]>
    Tested-by: Magnus Lindholm <[email protected]>
    Tested-by: Matt Turner <[email protected]>
    Reviewed-by: Maciej W. Rozycki <[email protected]>
    Suggested-by: Maciej W. Rozycki <[email protected]>
    Signed-off-by: Ivan Kokshaysky <[email protected]>
    Signed-off-by: Matt Turner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

alpha: make stack 16-byte aligned (most cases) [+ + +]
Author: Ivan Kokshaysky <[email protected]>
Date:   Tue Feb 4 23:35:23 2025 +0100

    alpha: make stack 16-byte aligned (most cases)
    
    commit 0a0f7362b0367634a2d5cb7c96226afc116f19c9 upstream.
    
    The problem is that GCC expects 16-byte alignment of the incoming stack
    since early 2004, as Maciej found out [1]:
      Having actually dug speculatively I can see that the psABI was changed in
     GCC 3.5 with commit e5e10fb4a350 ("re PR target/14539 (128-bit long double
     improperly aligned)") back in Mar 2004, when the stack pointer alignment
     was increased from 8 bytes to 16 bytes, and arch/alpha/kernel/entry.S has
     various suspicious stack pointer adjustments, starting with SP_OFF which
     is not a whole multiple of 16.
    
    Also, as Magnus noted, "ALPHA Calling Standard" [2] required the same:
     D.3.1 Stack Alignment
      This standard requires that stacks be octaword aligned at the time a
      new procedure is invoked.
    
    However:
    - the "normal" kernel stack is always misaligned by 8 bytes, thanks to
      the odd number of 64-bit words in 'struct pt_regs', which is the very
      first thing pushed onto the kernel thread stack;
    - syscall, fault, interrupt etc. handlers may, or may not, receive aligned
      stack depending on numerous factors.
    
    Somehow we got away with it until recently, when we ended up with
    a stack corruption in kernel/smp.c:smp_call_function_single() due to
    its use of 32-byte aligned local data and the compiler doing clever
    things allocating it on the stack.
    
    This adds padding between the PAL-saved and kernel-saved registers
    so that 'struct pt_regs' have an even number of 64-bit words.
    This makes the stack properly aligned for most of the kernel
    code, except two handlers which need special threatment.
    
    Note: struct pt_regs doesn't belong in uapi/asm; this should be fixed,
    but let's put this off until later.
    
    Link: https://lore.kernel.org/rcu/[email protected]/ [1]
    Link: https://bitsavers.org/pdf/dec/alpha/Alpha_Calling_Standard_Rev_2.0_19900427.pdf [2]
    
    Cc: [email protected]
    Tested-by: Maciej W. Rozycki <[email protected]>
    Tested-by: Magnus Lindholm <[email protected]>
    Tested-by: Matt Turner <[email protected]>
    Reviewed-by: Maciej W. Rozycki <[email protected]>
    Signed-off-by: Ivan Kokshaysky <[email protected]>
    Signed-off-by: Matt Turner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

alpha: replace hardcoded stack offsets with autogenerated ones [+ + +]
Author: Ivan Kokshaysky <[email protected]>
Date:   Tue Feb 4 23:35:22 2025 +0100

    alpha: replace hardcoded stack offsets with autogenerated ones
    
    commit 77b823fa619f97d16409ca37ad4f7936e28c5f83 upstream.
    
    This allows the assembly in entry.S to automatically keep in sync with
    changes in the stack layout (struct pt_regs and struct switch_stack).
    
    Cc: [email protected]
    Tested-by: Maciej W. Rozycki <[email protected]>
    Tested-by: Matt Turner <[email protected]>
    Reviewed-by: Maciej W. Rozycki <[email protected]>
    Signed-off-by: Ivan Kokshaysky <[email protected]>
    Signed-off-by: Matt Turner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ALSA: hda/realtek - Fixed headphone distorted sound on Acer Aspire A115-31 laptop [+ + +]
Author: Kailang Yang <[email protected]>
Date:   Mon Dec 30 14:44:01 2024 +0800

    ALSA: hda/realtek - Fixed headphone distorted sound on Acer Aspire A115-31 laptop
    
    [ Upstream commit 5cb4e5b056772e341b590755a976081776422053 ]
    
    Sound played through headphones is distorted.
    
    Fixes: 34ab5bbc6e82 ("ALSA: hda/realtek - Add Headset Mic supported Acer NB platform")
    Closes: https://lore.kernel.org/linux-sound/[email protected]/
    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/realtek: Enable headset mic on Positivo C6400 [+ + +]
Author: Edson Juliano Drosdeck <[email protected]>
Date:   Tue Jan 14 14:06:19 2025 -0300

    ALSA: hda/realtek: Enable headset mic on Positivo C6400
    
    commit 1aec3ed2e3e1512aba15e7e790196a44efd5f0a7 upstream.
    
    Positivo C6400 is equipped with ALC269VB, and it needs
    ALC269VB_FIXUP_ASUS_ZENBOOK quirk to make its headset mic work.
    Also must to limits the microphone boost.
    
    Signed-off-by: Edson Juliano Drosdeck <[email protected]>
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: hda/realtek: Enable Mute LED on HP Laptop 14s-fq1xxx [+ + +]
Author: Sebastian Wiese-Wagner <[email protected]>
Date:   Mon Jan 20 19:12:40 2025 +0100

    ALSA: hda/realtek: Enable Mute LED on HP Laptop 14s-fq1xxx
    
    commit 711aad3c43a9853657e00225466d204e46ae528b upstream.
    
    This HP Laptop uses ALC236 codec with COEF 0x07 controlling the mute
    LED. Enable existing quirk for this device.
    
    Signed-off-by: Sebastian Wiese-Wagner <[email protected]>
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: hda: Fix headset detection failure due to unstable sort [+ + +]
Author: Kuan-Wei Chiu <[email protected]>
Date:   Wed Jan 29 00:54:15 2025 +0800

    ALSA: hda: Fix headset detection failure due to unstable sort
    
    commit 3b4309546b48fc167aa615a2d881a09c0a97971f upstream.
    
    The auto_parser assumed sort() was stable, but the kernel's sort() uses
    heapsort, which has never been stable. After commit 0e02ca29a563
    ("lib/sort: optimize heapsort with double-pop variation"), the order of
    equal elements changed, causing the headset to fail to work.
    
    Fix the issue by recording the original order of elements before
    sorting and using it as a tiebreaker for equal elements in the
    comparison function.
    
    Fixes: b9030a005d58 ("ALSA: hda - Use standard sort function in hda_auto_parser.c")
    Reported-by: Austrum <[email protected]>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219158
    Tested-by: Austrum <[email protected]>
    Cc: [email protected]
    Signed-off-by: Kuan-Wei Chiu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: usb-audio: Add delay quirk for iBasso DC07 Pro [+ + +]
Author: Lianqin Hu <[email protected]>
Date:   Sun Jan 26 03:51:11 2025 +0000

    ALSA: usb-audio: Add delay quirk for iBasso DC07 Pro
    
    commit d85fc52cbb9a719c8335d93a28d6a79d7acd419f upstream.
    
    Audio control requests that sets sampling frequency sometimes fail on
    this card. Adding delay between control messages eliminates that problem.
    
    usb 1-1: New USB device found, idVendor=2fc6, idProduct=f0b7
    usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    usb 1-1: Product: iBasso DC07 Pro
    usb 1-1: Manufacturer: iBasso
    usb 1-1: SerialNumber: CTUA171130B
    
    Signed-off-by: Lianqin Hu <[email protected]>
    Cc: <[email protected]>
    Link: https://patch.msgid.link/TYUPR06MB62174A48D04E09A37996DF84D2ED2@TYUPR06MB6217.apcprd06.prod.outlook.com
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
APEI: GHES: Have GHES honor the panic= setting [+ + +]
Author: Borislav Petkov <[email protected]>
Date:   Mon Jan 13 13:52:24 2025 +0100

    APEI: GHES: Have GHES honor the panic= setting
    
    [ Upstream commit 5c0e00a391dd0099fe95991bb2f962848d851916 ]
    
    The GHES driver overrides the panic= setting by force-rebooting the
    system after a fatal hw error has been reported. The intent being that
    such an error would be reported earlier.
    
    However, this is not optimal when a hard-to-debug issue requires long
    time to reproduce and when that happens, the box will get rebooted after
    30 seconds and thus destroy the whole hw context of when the error
    happened.
    
    So rip out the default GHES panic timeout and honor the global one.
    
    In the panic disabled (panic=0) case, the error will still be logged to
    dmesg for later inspection and if panic after a hw error is really
    required, then that can be controlled the usual way - use panic= on the
    cmdline or set it in the kernel .config's CONFIG_PANIC_TIMEOUT.
    
    Reported-by: Feng Tang <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Reviewed-by: Feng Tang <[email protected]>
    Reviewed-by: Ira Weiny <[email protected]>
    Link: https://patch.msgid.link/20250113125224.GFZ4UMiNtWIJvgpveU@fat_crate.local
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64/mm: Ensure adequate HUGE_MAX_HSTATE [+ + +]
Author: Anshuman Khandual <[email protected]>
Date:   Mon Dec 2 12:14:07 2024 +0530

    arm64/mm: Ensure adequate HUGE_MAX_HSTATE
    
    [ Upstream commit 1e5823c8e86de83a43d59a522b4de29066d3b306 ]
    
    This asserts that HUGE_MAX_HSTATE is sufficient enough preventing potential
    hugetlb_max_hstate runtime overflow in hugetlb_add_hstate() thus triggering
    a BUG_ON() there after.
    
    Cc: Catalin Marinas <[email protected]>
    Cc: Will Deacon <[email protected]>
    Cc: Ard Biesheuvel <[email protected]>
    Cc: Ryan Roberts <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Signed-off-by: Anshuman Khandual <[email protected]>
    Reviewed-by: Ryan Roberts <[email protected]>
    Reviewed-by: Gavin Shan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64: cacheinfo: Avoid out-of-bounds write to cacheinfo array [+ + +]
Author: Radu Rendec <[email protected]>
Date:   Thu Feb 6 12:44:20 2025 -0500

    arm64: cacheinfo: Avoid out-of-bounds write to cacheinfo array
    
    [ Upstream commit 875d742cf5327c93cba1f11e12b08d3cce7a88d2 ]
    
    The loop that detects/populates cache information already has a bounds
    check on the array size but does not account for cache levels with
    separate data/instructions cache. Fix this by incrementing the index
    for any populated leaf (instead of any populated level).
    
    Fixes: 5d425c186537 ("arm64: kernel: add support for cpu cache information")
    
    Signed-off-by: Radu Rendec <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8173-elm: Drop regulator-compatible property [+ + +]
Author: Chen-Yu Tsai <[email protected]>
Date:   Wed Dec 11 13:24:21 2024 +0800

    arm64: dts: mediatek: mt8173-elm: Drop regulator-compatible property
    
    [ Upstream commit 4b907b3ea5fba240808136cc5599d14b52230b39 ]
    
    The "regulator-compatible" property has been deprecated since 2012 in
    commit 13511def87b9 ("regulator: deprecate regulator-compatible DT
    property"), which is so old it's not even mentioned in the converted
    regulator bindings YAML file. It is also not listed in the MT6397
    regulator bindings. Having them present produces a whole bunch of
    validation errors:
    
        Unevaluated properties are not allowed ('regulator-compatible' was unexpected)
    
    Drop the "regulator-compatible" property from the board dts. The
    property values are the same as the node name, so everything should
    continue to work.
    
    Fixes: 689b937bedde ("arm64: dts: mediatek: add mt8173 elm and hana board")
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8173-elm: Fix MT6397 PMIC sub-node names [+ + +]
Author: Chen-Yu Tsai <[email protected]>
Date:   Tue Dec 10 17:26:12 2024 +0800

    arm64: dts: mediatek: mt8173-elm: Fix MT6397 PMIC sub-node names
    
    [ Upstream commit beb06b727194f68b0a4b5183e50c88265ce185af ]
    
    The MT6397 PMIC bindings specify exact names for its sub-nodes. The
    names used in the current dts don't match, causing a validation error.
    
    Fix up the names. Also drop the label for the regulators node, since
    any reference should be against the individual regulator sub-nodes.
    
    Fixes: 689b937bedde ("arm64: dts: mediatek: add mt8173 elm and hana board")
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8173-evb: Drop regulator-compatible property [+ + +]
Author: Chen-Yu Tsai <[email protected]>
Date:   Wed Dec 11 13:24:20 2024 +0800

    arm64: dts: mediatek: mt8173-evb: Drop regulator-compatible property
    
    [ Upstream commit a6d5983e40f5d5b219337569cdd269727f5a3e2e ]
    
    The "regulator-compatible" property has been deprecated since 2012 in
    commit 13511def87b9 ("regulator: deprecate regulator-compatible DT
    property"), which is so old it's not even mentioned in the converted
    regulator bindings YAML file. It is also not listed in the MT6397
    regulator bindings. Having them present produces a whole bunch of
    validation errors:
    
        Unevaluated properties are not allowed ('regulator-compatible' was unexpected)
    
    Drop the "regulator-compatible" property from the board dts. The
    property values are the same as the node name, so everything should
    continue to work.
    
    Fixes: 16ea61fc5614 ("arm64: dts: mt8173-evb: Add PMIC support")
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8173-evb: Fix MT6397 PMIC sub-node names [+ + +]
Author: Chen-Yu Tsai <[email protected]>
Date:   Tue Dec 10 17:26:13 2024 +0800

    arm64: dts: mediatek: mt8173-evb: Fix MT6397 PMIC sub-node names
    
    [ Upstream commit 9545ba142865b9099d43c972b9ebcf463606499a ]
    
    The MT6397 PMIC bindings specify exact names for its sub-nodes. The
    names used in the current dts don't match, causing a validation error.
    
    Fix up the names. Also drop the label for the regulators node, since
    any reference should be against the individual regulator sub-nodes.
    
    Fixes: 16ea61fc5614 ("arm64: dts: mt8173-evb: Add PMIC support")
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8183-kukui-jacuzzi: Drop pp3300_panel voltage settings [+ + +]
Author: Chen-Yu Tsai <[email protected]>
Date:   Wed Oct 30 15:02:20 2024 +0800

    arm64: dts: mediatek: mt8183-kukui-jacuzzi: Drop pp3300_panel voltage settings
    
    [ Upstream commit 0b5b1c881a909f17c05ef4b1ccb421e077f6e466 ]
    
    The pp3300_panel fixed regulator is just a load switch. It does not have
    any regulating capabilities. Thus having voltage constraints on it is
    wrong.
    
    Remove the voltage constraints.
    
    Fixes: cabc71b08eb5 ("arm64: dts: mt8183: Add kukui-jacuzzi-damu board")
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8183: kenzo: Support second source touchscreen [+ + +]
Author: Hsin-Te Yuan <[email protected]>
Date:   Fri Dec 13 05:27:47 2024 +0000

    arm64: dts: mediatek: mt8183: kenzo: Support second source touchscreen
    
    [ Upstream commit 5ec5dc73c5ac0c6e06803dc3b5aea4493e856568 ]
    
    Some kenzo devices use second source touchscreen.
    
    Fixes: 0a9cefe21aec ("arm64: dts: mt8183: Add kukui-jacuzzi-kenzo board")
    Signed-off-by: Hsin-Te Yuan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8183: willow: Support second source touchscreen [+ + +]
Author: Hsin-Te Yuan <[email protected]>
Date:   Fri Dec 13 05:27:48 2024 +0000

    arm64: dts: mediatek: mt8183: willow: Support second source touchscreen
    
    [ Upstream commit 9594935260d76bffe200bea6cfab6ba0752e70d9 ]
    
    Some willow devices use second source touchscreen.
    
    Fixes: f006bcf1c972 ("arm64: dts: mt8183: Add kukui-jacuzzi-willow board")
    Signed-off-by: Hsin-Te Yuan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8192-asurada: Drop regulator-compatible property [+ + +]
Author: Chen-Yu Tsai <[email protected]>
Date:   Wed Dec 11 13:24:22 2024 +0800

    arm64: dts: mediatek: mt8192-asurada: Drop regulator-compatible property
    
    [ Upstream commit d1fb968551c8688652b8b817bb081fdc9c25cd48 ]
    
    The "regulator-compatible" property has been deprecated since 2012 in
    commit 13511def87b9 ("regulator: deprecate regulator-compatible DT
    property"), which is so old it's not even mentioned in the converted
    regulator bindings YAML file. It should not have been used for new
    submissions such as the MT6315.
    
    Drop the "regulator-compatible" property from the board dts. The
    property values are the same as the node name, so everything should
    continue to work.
    
    Fixes: 3183cb62b033 ("arm64: dts: mediatek: asurada: Add SPMI regulators")
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8195-cherry: Drop regulator-compatible property [+ + +]
Author: Chen-Yu Tsai <[email protected]>
Date:   Wed Dec 11 13:24:23 2024 +0800

    arm64: dts: mediatek: mt8195-cherry: Drop regulator-compatible property
    
    [ Upstream commit 4dbaa5d5def2c49e44efaa5e796c23d9b904be09 ]
    
    The "regulator-compatible" property has been deprecated since 2012 in
    commit 13511def87b9 ("regulator: deprecate regulator-compatible DT
    property"), which is so old it's not even mentioned in the converted
    regulator bindings YAML file. It should not have been used for new
    submissions such as the MT6315.
    
    Drop the "regulator-compatible" property from the board dts. The
    property values are the same as the node name, so everything should
    continue to work.
    
    Fixes: 260c04d425eb ("arm64: dts: mediatek: cherry: Enable MT6315 regulators on SPMI bus")
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8195-demo: Drop regulator-compatible property [+ + +]
Author: Chen-Yu Tsai <[email protected]>
Date:   Wed Dec 11 13:24:24 2024 +0800

    arm64: dts: mediatek: mt8195-demo: Drop regulator-compatible property
    
    [ Upstream commit 2a8af9b95f504260a6d8200a11f0ae5c90e9f787 ]
    
    The "regulator-compatible" property has been deprecated since 2012 in
    commit 13511def87b9 ("regulator: deprecate regulator-compatible DT
    property"), which is so old it's not even mentioned in the converted
    regulator bindings YAML file. It is also not listed in the MT6360
    regulator and charger bindings.
    
    Drop the "regulator-compatible" property from the board dts. The MT6360
    bindings actually require the lowercase name, so with the property
    present the regulators were likely not actually working.
    
    Fixes: 6147314aeedc ("arm64: dts: mediatek: Add device-tree for MT8195 Demo board")
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8516: add i2c clock-div property [+ + +]
Author: Val Packett <[email protected]>
Date:   Wed Dec 4 16:05:06 2024 -0300

    arm64: dts: mediatek: mt8516: add i2c clock-div property
    
    [ Upstream commit eb72341fd92b7af510d236e5a8554d855ed38d3c ]
    
    Move the clock-div property from the pumpkin board dtsi to the SoC's
    since it belongs to the SoC itself and is required on other devices.
    
    Fixes: 5236347bde42 ("arm64: dts: mediatek: add dtsi for MT8516")
    Signed-off-by: Val Packett <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8516: fix GICv2 range [+ + +]
Author: Val Packett <[email protected]>
Date:   Wed Dec 4 16:05:04 2024 -0300

    arm64: dts: mediatek: mt8516: fix GICv2 range
    
    [ Upstream commit e3ee31e4409f051c021a30122f3c470f093a7386 ]
    
    On the MT8167 which is based on the MT8516 DTS, the following error
    was appearing on boot, breaking interrupt operation:
    
    GICv2 detected, but range too small and irqchip.gicv2_force_probe not set
    
    Similar to what's been proposed for MT7622 which has the same issue,
    fix by using the range reported by force_probe.
    
    Link: https://lore.kernel.org/all/YmhNSLgp%[email protected]/
    Fixes: 5236347bde42 ("arm64: dts: mediatek: add dtsi for MT8516")
    Signed-off-by: Val Packett <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8516: fix wdt irq type [+ + +]
Author: Val Packett <[email protected]>
Date:   Wed Dec 4 16:05:05 2024 -0300

    arm64: dts: mediatek: mt8516: fix wdt irq type
    
    [ Upstream commit 03a80442030e7147391738fb6cbe5fa0b3b91bb1 ]
    
    The GICv2 does not support EDGE_FALLING interrupts, so the watchdog
    would refuse to attach due to a failing check coming from the GIC driver.
    
    Fixes: 5236347bde42 ("arm64: dts: mediatek: add dtsi for MT8516")
    Signed-off-by: Val Packett <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8516: reserve 192 KiB for TF-A [+ + +]
Author: Val Packett <[email protected]>
Date:   Wed Dec 4 16:05:07 2024 -0300

    arm64: dts: mediatek: mt8516: reserve 192 KiB for TF-A
    
    [ Upstream commit 2561c7d5d497b988deccc36fe5eac7fd50b937f8 ]
    
    The Android DTB for the related MT8167 reserves 0x30000. This is likely
    correct for MT8516 Android devices as well, and there's never any harm
    in reserving 64KiB more.
    
    Fixes: 5236347bde42 ("arm64: dts: mediatek: add dtsi for MT8516")
    Signed-off-by: Val Packett <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mt8183: set DMIC one-wire mode on Damu [+ + +]
Author: Hsin-Yi Wang <[email protected]>
Date:   Wed Nov 13 16:16:53 2024 +0800

    arm64: dts: mt8183: set DMIC one-wire mode on Damu
    
    [ Upstream commit 6c379e8b984815fc8f876e4bc78c4d563f13ddae ]
    
    Sets DMIC one-wire mode on Damu.
    
    Fixes: cabc71b08eb5 ("arm64: dts: mt8183: Add kukui-jacuzzi-damu board")
    Signed-off-by: Hsin-Yi Wang <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Hsin-Te Yuan <[email protected]>
    Reviewed-by: Matthias Brugger <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: msm8916: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Dec 24 12:17:00 2024 +0200

    arm64: dts: qcom: msm8916: correct sleep clock frequency
    
    [ Upstream commit f088b921890cef28862913e5627bb2e2b5f82125 ]
    
    The MSM8916 platform uses PM8916 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: f4fb6aeafaaa ("arm64: dts: qcom: msm8916: Add fixed rate on-board oscillators")
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: msm8994: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Dec 24 12:17:02 2024 +0200

    arm64: dts: qcom: msm8994: correct sleep clock frequency
    
    [ Upstream commit a4148d869d47d8c86da0291dd95d411a5ebe90c8 ]
    
    The MSM8994 platform uses PM8994/6 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: feeaf56ac78d ("arm64: dts: msm8994 SoC and Huawei Angler (Nexus 6P) support")
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: msm8994: Describe USB interrupts [+ + +]
Author: Konrad Dybcio <[email protected]>
Date:   Fri Nov 29 23:12:48 2024 +0100

    arm64: dts: qcom: msm8994: Describe USB interrupts
    
    [ Upstream commit c910544d2234709660d60f80345c285616e73b1c ]
    
    Previously the interrupt lanes were not described, fix that.
    
    Fixes: d9be0bc95f25 ("arm64: dts: qcom: msm8994: Add USB support")
    Signed-off-by: Konrad Dybcio <[email protected]>
    Tested-by: Petr Vorel <[email protected]>
    Link: https://lore.kernel.org/r/20241129-topic-qcom_usb_dtb_fixup-v1-4-cba24120c058@oss.qualcomm.com
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: msm8996-xiaomi-gemini: Fix LP5562 LED1 reg property [+ + +]
Author: Marek Vasut <[email protected]>
Date:   Sun Oct 6 04:19:48 2024 +0200

    arm64: dts: qcom: msm8996-xiaomi-gemini: Fix LP5562 LED1 reg property
    
    [ Upstream commit 02e784c5023232c48c6ec79b52ac8929d4e4db34 ]
    
    The LP5562 led@1 reg property should likely be set to 1 to match
    the unit. Fix it.
    
    Fixes: 4ac46b3682c5 ("arm64: dts: qcom: msm8996: xiaomi-gemini: Add support for Xiaomi Mi 5")
    Signed-off-by: Marek Vasut <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: msm8996: Fix up USB3 interrupts [+ + +]
Author: Konrad Dybcio <[email protected]>
Date:   Fri Nov 29 23:12:47 2024 +0100

    arm64: dts: qcom: msm8996: Fix up USB3 interrupts
    
    [ Upstream commit 9cb9c9f4e1380da317a056afd26d66a835c5796c ]
    
    Add the missing interrupt lines and fix qusb2_phy being an impostor
    of hs_phy_irq.
    
    This happens to also fix warnings such as:
    
    usb@6af8800: interrupt-names: ['hs_phy_irq', 'ss_phy_irq'] is too short
    
    Fixes: 4753492de9df ("arm64: dts: qcom: msm8996: Add usb3 interrupts")
    Signed-off-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/20241129-topic-qcom_usb_dtb_fixup-v1-3-cba24120c058@oss.qualcomm.com
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: pm6150l: add temp sensor and thermal zone config [+ + +]
Author: Luca Weiss <[email protected]>
Date:   Fri Oct 28 09:54:05 2022 +0200

    arm64: dts: qcom: pm6150l: add temp sensor and thermal zone config
    
    [ Upstream commit ce1b5eb74b3ef042b1c797f04e8683e7cad34ae6 ]
    
    Add temp-alarm device tree node and a default configuration for the
    corresponding thermal zone for this PMIC. Temperatures are based on
    downstream values, except for trip2 where 125°C is used instead of 145°C
    due to limitations without a configured ADC.
    
    Signed-off-by: Luca Weiss <[email protected]>
    Signed-off-by: Bjorn Andersson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: 9180b38d706c ("arm64: dts: qcom: sc7180-trogdor-pompom: rename 5v-choke thermal zone")
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc7180-*: Remove thermal zone polling delays [+ + +]
Author: Konrad Dybcio <[email protected]>
Date:   Fri May 10 13:59:39 2024 +0200

    arm64: dts: qcom: sc7180-*: Remove thermal zone polling delays
    
    [ Upstream commit 7cd2d9080a6eb281701f7303b1699719640380d0 ]
    
    All of the thermal zone suppliers are interrupt-driven, remove the
    bogus and unnecessary polling that only wastes CPU time.
    
    Signed-off-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Stable-dep-of: 9180b38d706c ("arm64: dts: qcom: sc7180-trogdor-pompom: rename 5v-choke thermal zone")
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc7180-idp: use just "port" in panel [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Sun Mar 26 17:57:46 2023 +0200

    arm64: dts: qcom: sc7180-idp: use just "port" in panel
    
    [ Upstream commit 746bda7d9dd9518793034d7008a19e4cf5c3004d ]
    
    The panel bindings expect to have only one port, thus they do not allow
    to use "ports" node:
    
      sc7180-idp.dtb: panel@0: 'ports' does not match any of the regexes: 'pinctrl-[0-9]+'
      sc7180-idp.dtb: panel@0: 'port' is a required property
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Bjorn Andersson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: aa09de104d42 ("arm64: dts: qcom: sc7180-trogdor-quackingstick: add missing avee-supply")
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc7180-trogdor-pompom: rename 5v-choke thermal zone [+ + +]
Author: Neil Armstrong <[email protected]>
Date:   Mon Dec 30 13:44:47 2024 +0100

    arm64: dts: qcom: sc7180-trogdor-pompom: rename 5v-choke thermal zone
    
    [ Upstream commit 9180b38d706c29ed212181a77999c35ae9ff6879 ]
    
    Rename the 5v-choke thermal zone to satisfy the bindings.
    
    This fixes:
    sc7180-trogdor-pompom-r2-lte.dts: thermal-zones: '5v-choke-thermal' does not match any of the regexes: '^[a-zA-Z][a-zA-Z0-9\\-]{1,10}-thermal$', 'pinctrl-[0-9]+'
            from schema $id: http://devicetree.org/schemas/thermal/thermal-zones.yaml#
    
    Reviewed-by: Douglas Anderson <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc7180-trogdor-quackingstick: add missing avee-supply [+ + +]
Author: Neil Armstrong <[email protected]>
Date:   Mon Dec 30 13:44:46 2024 +0100

    arm64: dts: qcom: sc7180-trogdor-quackingstick: add missing avee-supply
    
    [ Upstream commit aa09de104d421e7ff8d8cde9af98568ce62a002c ]
    
    The bindings requires the avee-supply, use the same regulator as
    the avdd (positive voltage) which would also provide the negative
    voltage by definition.
    
    The fixes:
    sc7180-trogdor-quackingstick-r0.dts: panel@0: 'avee-supply' is a required property
            from schema $id: http://devicetree.org/schemas/display/panel/boe,tv101wum-nl6.yaml#
    
    Reviewed-by: Douglas Anderson <[email protected]>
    Signed-off-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc7180-trogdor-quackingstick: use just "port" in panel [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Sun Mar 26 17:57:47 2023 +0200

    arm64: dts: qcom: sc7180-trogdor-quackingstick: use just "port" in panel
    
    [ Upstream commit 88904a12fbcbd97e56d341080845ce0807164fb5 ]
    
    The panel bindings expect to have only one port, thus they do not allow
    to use "ports" node:
    
      sc7180-trogdor-quackingstick-r0.dtb: panel@0: 'ports' does not match any of the regexes: 'pinctrl-[0-9]+'
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Bjorn Andersson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: aa09de104d42 ("arm64: dts: qcom: sc7180-trogdor-quackingstick: add missing avee-supply")
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc7180-trogdor-wormdingler: use just "port" in panel [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Sun Mar 26 17:57:48 2023 +0200

    arm64: dts: qcom: sc7180-trogdor-wormdingler: use just "port" in panel
    
    [ Upstream commit c28d9029f3b68a42794a0527696c91f7b31e81f3 ]
    
    The panel bindings expect to have only one port, thus they do not allow
    to use "ports" node:
    
      sc7180-trogdor-wormdingler-rev1-boe.dtb: panel@0: 'ports' does not match any of the regexes: 'pinctrl-[0-9]+'
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Bjorn Andersson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: aa09de104d42 ("arm64: dts: qcom: sc7180-trogdor-quackingstick: add missing avee-supply")
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc7180: Add compat qcom,sc7180-dsi-ctrl [+ + +]
Author: Bryan O'Donoghue <[email protected]>
Date:   Fri Dec 23 02:10:20 2022 +0000

    arm64: dts: qcom: sc7180: Add compat qcom,sc7180-dsi-ctrl
    
    [ Upstream commit a45d0641d110e81826710aa92711e1c2eedecb43 ]
    
    Add silicon specific compatible qcom,sc7180-dsi-ctrl to the
    mdss-dsi-ctrl block. This allows us to differentiate the specific bindings
    for sc7180 against the yaml documentation.
    
    Reviewed-by: Douglas Anderson <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Bryan O'Donoghue <[email protected]>
    Signed-off-by: Bjorn Andersson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: aa09de104d42 ("arm64: dts: qcom: sc7180-trogdor-quackingstick: add missing avee-supply")
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc7180: Don't enable lpass clocks by default [+ + +]
Author: Nikita Travkin <[email protected]>
Date:   Mon May 15 14:37:41 2023 +0500

    arm64: dts: qcom: sc7180: Don't enable lpass clocks by default
    
    [ Upstream commit 43926a3cb19180b4fc6cd0d72bbefc7e93592f91 ]
    
    lpass clocks are usually blocked from HLOS by the firmware and
    instead are managed by the ADSP. Mark them as reserved and explicitly
    enable in the CrOS boards that have special, cooperative firmware.
    
    The IDP board gets lpass clocks disabled as it doesn't make use of sound
    anyway and might use Qualcomm firmware that blocks those clocks. [1]
    
    [1] https://lore.kernel.org/all/ZBJhmDd3zK%[email protected]/
    
    Signed-off-by: Nikita Travkin <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Douglas Anderson <[email protected]>
    Signed-off-by: Bjorn Andersson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: aa09de104d42 ("arm64: dts: qcom: sc7180-trogdor-quackingstick: add missing avee-supply")
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc7180: Drop redundant disable in mdp [+ + +]
Author: Nikita Travkin <[email protected]>
Date:   Mon May 15 14:37:42 2023 +0500

    arm64: dts: qcom: sc7180: Drop redundant disable in mdp
    
    [ Upstream commit 39238382c4991d7d9442de4aa6636b19355be1e9 ]
    
    mdss is useless without a display controller which makes explicitly
    enabling mdp redundant. Have it enabled by default to drop the extra
    node for all users.
    
    Signed-off-by: Nikita Travkin <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Douglas Anderson <[email protected]>
    Signed-off-by: Bjorn Andersson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: aa09de104d42 ("arm64: dts: qcom: sc7180-trogdor-quackingstick: add missing avee-supply")
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc7280: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Dec 24 12:17:07 2024 +0200

    arm64: dts: qcom: sc7280: correct sleep clock frequency
    
    [ Upstream commit f6ccdca14eac545320ab03d6ca91ca343e7372e5 ]
    
    The SC7280 platform uses PMK8350 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: 7a1f4e7f740d ("arm64: dts: qcom: sc7280: Add basic dts/dtsi files for sc7280 soc")
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc8280xp: Fix up remoteproc register space sizes [+ + +]
Author: Konrad Dybcio <[email protected]>
Date:   Thu Dec 12 23:19:37 2024 +0100

    arm64: dts: qcom: sc8280xp: Fix up remoteproc register space sizes
    
    [ Upstream commit 7ec7e327286182c65d0b5b81dff498d620fe9e8c ]
    
    Make sure the remoteproc reg ranges reflect the entire register space
    they refer to.
    
    Since they're unused by the driver, there's no functional change.
    
    Fixes: 152d1faf1e2f ("arm64: dts: qcom: add SC8280XP platform")
    Signed-off-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Bryan O'Donoghue <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm845: Fix interrupt types of camss interrupts [+ + +]
Author: Vladimir Zapolskiy <[email protected]>
Date:   Wed Nov 27 14:29:49 2024 +0200

    arm64: dts: qcom: sdm845: Fix interrupt types of camss interrupts
    
    [ Upstream commit cb96722b728e81ad97f5b5b20dea64cd294a5452 ]
    
    Qualcomm IP catalog says that all CAMSS interrupts is edge rising,
    fix it in the CAMSS device tree node for sdm845 SoC.
    
    Fixes: d48a6698a6b7 ("arm64: dts: qcom: sdm845: Add CAMSS ISP node")
    Signed-off-by: Vladimir Zapolskiy <[email protected]>
    Reviewed-by: Bryan O'Donoghue <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sm6125: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Dec 24 12:17:10 2024 +0200

    arm64: dts: qcom: sm6125: correct sleep clock frequency
    
    [ Upstream commit b3c547e1507862f0e4d46432b665c5c6e61e14d6 ]
    
    The SM6125 platform uses PM6125 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: cff4bbaf2a2d ("arm64: dts: qcom: Add support for SM6125")
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sm6350: Fix ADSP memory length [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Fri Dec 13 15:54:04 2024 +0100

    arm64: dts: qcom: sm6350: Fix ADSP memory length
    
    commit b0805a864459a29831577d2a47165afebe338faf upstream.
    
    The address space in ADSP (Peripheral Authentication Service) remoteproc
    node should point to the QDSP PUB address space (QDSP6...SS_PUB) which
    has a length of 0x10000.
    
    This should have no functional impact on Linux users, because PAS loader
    does not use this address space at all.
    
    Fixes: efc33c969f23 ("arm64: dts: qcom: sm6350: Add ADSP nodes")
    Cc: [email protected]
    Tested-by: Luca Weiss <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/20241213-dts-qcom-cdsp-mpss-base-address-v3-15-2e0036fccd8d@linaro.org
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: dts: qcom: sm6350: Fix MPSS memory length [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Fri Dec 13 15:54:05 2024 +0100

    arm64: dts: qcom: sm6350: Fix MPSS memory length
    
    commit cd8d83de9cc9ecfb1f9a12bc838041c4eb4d10bd upstream.
    
    The address space in MPSS/Modem PAS (Peripheral Authentication Service)
    remoteproc node should point to the QDSP PUB address space
    (QDSP6...SS_PUB) which has a length of 0x10000.  Value of 0x4040 was
    copied from older DTS, but it grew since then.
    
    This should have no functional impact on Linux users, because PAS loader
    does not use this address space at all.
    
    Fixes: 489be59b635b ("arm64: dts: qcom: sm6350: Add MPSS nodes")
    Cc: [email protected]
    Tested-by: Luca Weiss <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/20241213-dts-qcom-cdsp-mpss-base-address-v3-16-2e0036fccd8d@linaro.org
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: dts: qcom: sm7225-fairphone-fp4: Drop extra qcom,msm-id value [+ + +]
Author: Luca Weiss <[email protected]>
Date:   Fri Dec 20 09:55:01 2024 +0100

    arm64: dts: qcom: sm7225-fairphone-fp4: Drop extra qcom,msm-id value
    
    [ Upstream commit 7fb88e0d4dc1a40a29d49b603faa1484334c60f3 ]
    
    The ID 434 is for SM6350 while 459 is for SM7225. Fairphone 4 is only
    SM7225, so drop the unused 434 entry.
    
    Fixes: 4cbea668767d ("arm64: dts: qcom: sm7225: Add device tree for Fairphone 4")
    Signed-off-by: Luca Weiss <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sm8150-microsoft-surface-duo: fix typos in da7280 properties [+ + +]
Author: Neil Armstrong <[email protected]>
Date:   Mon Dec 30 13:44:49 2024 +0100

    arm64: dts: qcom: sm8150-microsoft-surface-duo: fix typos in da7280 properties
    
    [ Upstream commit 9875adffb87da5c40f4013e55104f5e2fc071c2a ]
    
    The dlg,const-op-mode & dlg,periodic-op-mode were mis-names with twice
    the "dlg," prefix, drop one to match the bindings.
    
    This fixes:
    sm8150-microsoft-surface-duo.dtb: da7280@4a: 'dlg,const-op-mode' is a required property
            from schema $id: http://devicetree.org/schemas/input/dlg,da7280.yaml#
    m8150-microsoft-surface-duo.dtb: da7280@4a: 'dlg,periodic-op-mode' is a required property
            from schema $id: http://devicetree.org/schemas/input/dlg,da7280.yaml#
    sm8150-microsoft-surface-duo.dtb: da7280@4a: 'dlg,dlg,const-op-mode', 'dlg,dlg,periodic-op-mode' do not match any of the regexes: 'pinctrl-[0-9]+'
            from schema $id: http://devicetree.org/schemas/input/dlg,da7280.yaml#
    
    With the dlg,da7280.yaml converted from dlg,da7280.txt at [1].
    
    [1] https://lore.kernel.org/all/[email protected]/
    
    Fixes: d1f781db47a8 ("arm64: dts: qcom: add initial device-tree for Microsoft Surface Duo")
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sm8250: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Dec 24 12:17:12 2024 +0200

    arm64: dts: qcom: sm8250: correct sleep clock frequency
    
    [ Upstream commit 75420e437eed69fa95d1d7c339dad86dea35319a ]
    
    The SM8250 platform uses PM8150 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: 9ff8b0591fcf ("arm64: dts: qcom: sm8250: use the right clock-freqency for sleep-clk")
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sm8250: Fix interrupt types of camss interrupts [+ + +]
Author: Vladimir Zapolskiy <[email protected]>
Date:   Wed Nov 27 14:29:50 2024 +0200

    arm64: dts: qcom: sm8250: Fix interrupt types of camss interrupts
    
    [ Upstream commit 6c7bba42ebc3da56e64d4aec4c4a31dd454e05fd ]
    
    Qualcomm IP catalog says that all CAMSS interrupts is edge rising,
    fix it in the CAMSS device tree node for sm8250 SoC.
    
    Fixes: 30325603b910 ("arm64: dts: qcom: sm8250: camss: Add CAMSS block definition")
    Signed-off-by: Vladimir Zapolskiy <[email protected]>
    Reviewed-by: Bryan O'Donoghue <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sm8350: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Dec 24 12:17:13 2024 +0200

    arm64: dts: qcom: sm8350: correct sleep clock frequency
    
    [ Upstream commit f4cc8c75cfc5d06084a31da2ff67e477565f0cae ]
    
    The SM8350 platform uses PMK8350 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: b7e8f433a673 ("arm64: dts: qcom: Add basic devicetree support for SM8350 SoC")
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sm8350: Fix MPSS memory length [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Fri Dec 13 15:53:52 2024 +0100

    arm64: dts: qcom: sm8350: Fix MPSS memory length
    
    commit da1937dec9cd986e685b6a429b528a4cbc7b1603 upstream.
    
    The address space in MPSS/Modem PAS (Peripheral Authentication Service)
    remoteproc node should point to the QDSP PUB address space
    (QDSP6...SS_PUB) which has a length of 0x10000.  Value of 0x4040 was
    copied from older DTS, but it grew since then.
    
    This should have no functional impact on Linux users, because PAS loader
    does not use this address space at all.
    
    Fixes: 177fcf0aeda2 ("arm64: dts: qcom: sm8350: Add remoteprocs")
    Cc: [email protected]
    Reviewed-by: Konrad Dybcio <[email protected]>
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/20241213-dts-qcom-cdsp-mpss-base-address-v3-3-2e0036fccd8d@linaro.org
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: dts: qcom: sm8450: correct sleep clock frequency [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Dec 24 12:17:14 2024 +0200

    arm64: dts: qcom: sm8450: correct sleep clock frequency
    
    [ Upstream commit c375ff3b887abf376607d4769c1114c5e3b6ea72 ]
    
    The SM8450 platform uses PMK8350 to provide sleep clock. According to the
    documentation, that clock has 32.7645 kHz frequency. Correct the sleep
    clock definition.
    
    Fixes: 5188049c9b36 ("arm64: dts: qcom: Add base SM8450 DTSI")
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sm8450: Fix MPSS memory length [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Fri Dec 13 15:53:55 2024 +0100

    arm64: dts: qcom: sm8450: Fix MPSS memory length
    
    commit fa6442e87ab7c4a58c0b5fc64aab1aacc8034712 upstream.
    
    The address space in MPSS/Modem PAS (Peripheral Authentication Service)
    remoteproc node should point to the QDSP PUB address space
    (QDSP6...SS_PUB) which has a length of 0x10000.  Value of 0x4040 was
    copied from older DTS, but it grew since then.
    
    This should have no functional impact on Linux users, because PAS loader
    does not use this address space at all.
    
    Fixes: 1172729576fb ("arm64: dts: qcom: sm8450: Add remoteproc enablers and instances")
    Cc: [email protected]
    Reviewed-by: Neil Armstrong <[email protected]>
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/20241213-dts-qcom-cdsp-mpss-base-address-v3-6-2e0036fccd8d@linaro.org
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: dts: rockchip: increase gmac rx_delay on rk3399-puma [+ + +]
Author: Jakob Unterwurzacher <[email protected]>
Date:   Fri Dec 13 10:54:58 2024 +0100

    arm64: dts: rockchip: increase gmac rx_delay on rk3399-puma
    
    commit 9d241b06802c6c2176ae7aa4f9f17f8a577ed337 upstream.
    
    During mass manufacturing, we noticed the mmc_rx_crc_error counter,
    as reported by "ethtool -S eth0 | grep mmc_rx_crc_error", to increase
    above zero during nuttcp speedtests. Most of the time, this did not
    affect the achieved speed, but it prompted this investigation.
    
    Cycling through the rx_delay range on six boards (see table below) of
    various ages shows that there is a large good region from 0x12 to 0x35
    where we see zero crc errors on all tested boards.
    
    The old rx_delay value (0x10) seems to have always been on the edge for
    the KSZ9031RNX that is usually placed on Puma.
    
    Choose "rx_delay = 0x23" to put us smack in the middle of the good
    region. This works fine as well with the KSZ9131RNX PHY that was used
    for a small number of boards during the COVID chip shortages.
    
            Board S/N        PHY        rx_delay good region
            ---------        ---        --------------------
            Puma TT0069903   KSZ9031RNX 0x11 0x35
            Puma TT0157733   KSZ9031RNX 0x11 0x35
            Puma TT0681551   KSZ9031RNX 0x12 0x37
            Puma TT0681156   KSZ9031RNX 0x10 0x38
            Puma 17496030079 KSZ9031RNX 0x10 0x37 (Puma v1.2 from 2017)
            Puma TT0681720   KSZ9131RNX 0x02 0x39 (alternative PHY used in very few boards)
    
            Intersection of good regions = 0x12 0x35
            Middle of good region = 0x23
    
    Fixes: 2c66fc34e945 ("arm64: dts: rockchip: add RK3399-Q7 (Puma) SoM")
    Cc: [email protected]
    Reviewed-by: Quentin Schulz <[email protected]>
    Tested-by: Quentin Schulz <[email protected]> # Puma v2.1 and v2.3 with KSZ9031
    Signed-off-by: Jakob Unterwurzacher <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Heiko Stuebner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: dts: ti: k3-am62: Remove duplicate GICR reg [+ + +]
Author: Bryan Brattlof <[email protected]>
Date:   Tue Dec 10 14:59:24 2024 -0600

    arm64: dts: ti: k3-am62: Remove duplicate GICR reg
    
    [ Upstream commit 72c691d77ea5d0c4636fd3e9f0ad80d813c7d1a7 ]
    
    The GIC Redistributor control register range is mapped twice. Remove
    the extra entry from the reg range.
    
    Fixes: f1d17330a5be ("arm64: dts: ti: Introduce base support for AM62x SoC")
    Reported-by: Bin Liu <[email protected]>
    Signed-off-by: Bryan Brattlof <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Nishanth Menon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: ti: k3-am62a: Remove duplicate GICR reg [+ + +]
Author: Bryan Brattlof <[email protected]>
Date:   Tue Dec 10 14:59:25 2024 -0600

    arm64: dts: ti: k3-am62a: Remove duplicate GICR reg
    
    [ Upstream commit 6f0232577e260cdbc25508e27bb0b75ade7e7ebc ]
    
    The GIC Redistributor control range is mapped twice. Remove the extra
    entry from the reg range.
    
    Fixes: 5fc6b1b62639 ("arm64: dts: ti: Introduce AM62A7 family of SoCs")
    Reported-by: Bin Liu <[email protected]>
    Signed-off-by: Bryan Brattlof <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Nishanth Menon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: Handle .ARM.attributes section in linker scripts [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Thu Feb 6 10:21:38 2025 -0700

    arm64: Handle .ARM.attributes section in linker scripts
    
    commit ca0f4fe7cf7183bfbdc67ca2de56ae1fc3a8db2b upstream.
    
    A recent LLVM commit [1] started generating an .ARM.attributes section
    similar to the one that exists for 32-bit, which results in orphan
    section warnings (or errors if CONFIG_WERROR is enabled) from the linker
    because it is not handled in the arm64 linker scripts.
    
      ld.lld: error: arch/arm64/kernel/vdso/vgettimeofday.o:(.ARM.attributes) is being placed in '.ARM.attributes'
      ld.lld: error: arch/arm64/kernel/vdso/vgetrandom.o:(.ARM.attributes) is being placed in '.ARM.attributes'
    
      ld.lld: error: vmlinux.a(lib/vsprintf.o):(.ARM.attributes) is being placed in '.ARM.attributes'
      ld.lld: error: vmlinux.a(lib/win_minmax.o):(.ARM.attributes) is being placed in '.ARM.attributes'
      ld.lld: error: vmlinux.a(lib/xarray.o):(.ARM.attributes) is being placed in '.ARM.attributes'
    
    Discard the new sections in the necessary linker scripts to resolve the
    warnings, as the kernel and vDSO do not need to retain it, similar to
    the .note.gnu.property section.
    
    Cc: [email protected]
    Fixes: b3e5d80d0c48 ("arm64/build: Warn on orphan section placement")
    Link: https://github.com/llvm/llvm-project/commit/ee99c4d4845db66c4daa2373352133f4b237c942 [1]
    Signed-off-by: Nathan Chancellor <[email protected]>
    Link: https://lore.kernel.org/r/20250206-arm64-handle-arm-attributes-in-linker-script-v3-1-d53d169913eb@kernel.org
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: tegra: Disable Tegra234 sce-fabric node [+ + +]
Author: Sumit Gupta <[email protected]>
Date:   Wed Dec 18 00:07:37 2024 +0000

    arm64: tegra: Disable Tegra234 sce-fabric node
    
    commit a5e6fc0a10fe280989f1367a3b4f8047c7d00ea6 upstream.
    
    Access to safety cluster engine (SCE) fabric registers was blocked
    by firewall after the introduction of Functional Safety Island in
    Tegra234. After that, any access by software to SCE registers is
    correctly resulting in the internal bus error. However, when CPUs
    try accessing the SCE-fabric registers to print error info,
    another firewall error occurs as the fabric registers are also
    firewall protected. This results in a second error to be printed.
    Disable the SCE fabric node to avoid printing the misleading error.
    The first error info will be printed by the interrupt from the
    fabric causing the actual access.
    
    Cc: [email protected]
    Fixes: 302e154000ec ("arm64: tegra: Add node for CBB 2.0 on Tegra234")
    Signed-off-by: Sumit Gupta <[email protected]>
    Signed-off-by: Ivy Huang <[email protected]>
    Reviewed-by: Brad Griffis <[email protected]>
    Reviewed-by: Jon Hunter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Thierry Reding <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: tegra: Fix Tegra234 PCIe interrupt-map [+ + +]
Author: Brad Griffis <[email protected]>
Date:   Fri Dec 13 23:56:02 2024 +0000

    arm64: tegra: Fix Tegra234 PCIe interrupt-map
    
    commit b615fbd70fce8582d92b3bdbbf3c9b80cadcfb55 upstream.
    
    For interrupt-map entries, the DTS specification requires
    that #address-cells is defined for both the child node and the
    interrupt parent.  For the PCIe interrupt-map entries, the parent
    node ("gic") has not specified #address-cells. The existing layout
    of the PCIe interrupt-map entries indicates that it assumes
    that #address-cells is zero for this node.
    
    Explicitly set #address-cells to zero for "gic" so that it complies
    with the device tree specification.
    
    NVIDIA EDK2 works around this issue by assuming #address-cells
    is zero in this scenario, but that workaround is being removed and so
    this update is needed or else NVIDIA EDK2 cannot successfully parse the
    device tree and the board cannot boot.
    
    Fixes: ec142c44b026 ("arm64: tegra: Add P2U and PCIe controller nodes to Tegra234 DT")
    Signed-off-by: Brad Griffis <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Thierry Reding <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: tegra: Fix typo in Tegra234 dce-fabric compatible [+ + +]
Author: Sumit Gupta <[email protected]>
Date:   Wed Dec 18 00:07:36 2024 +0000

    arm64: tegra: Fix typo in Tegra234 dce-fabric compatible
    
    commit 604120fd9e9df50ee0e803d3c6e77a1f45d2c58e upstream.
    
    The compatible string for the Tegra DCE fabric is currently defined as
    'nvidia,tegra234-sce-fabric' but this is incorrect because this is the
    compatible string for SCE fabric. Update the compatible for the DCE
    fabric to correct the compatible string.
    
    This compatible needs to be correct in order for the interconnect
    to catch things such as improper data accesses.
    
    Cc: [email protected]
    Fixes: 302e154000ec ("arm64: tegra: Add node for CBB 2.0 on Tegra234")
    Signed-off-by: Sumit Gupta <[email protected]>
    Signed-off-by: Ivy Huang <[email protected]>
    Reviewed-by: Brad Griffis <[email protected]>
    Reviewed-by: Jon Hunter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Thierry Reding <[email protected]>
    Signed-off-by: Brad Griffis <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ARM: at91: pm: change BU Power Switch to automatic mode [+ + +]
Author: Nicolas Ferre <[email protected]>
Date:   Mon Nov 25 17:56:48 2024 +0100

    ARM: at91: pm: change BU Power Switch to automatic mode
    
    [ Upstream commit 6fc5bdfa872b7da51b5507a1327a17c3db2fcf95 ]
    
    Change how the Backup Unit Power is configured and force the
    automatic/hardware mode.
    This change eliminates the need for software management of the power
    switch, ensuring it transitions to the backup power source before
    entering low power modes.
    
    This is done in the only location where this switch was configured. It's
    usually done in the bootloader.
    
    Previously, the loss of the VDDANA (or VDDIN33) power source was not
    automatically compensated by an alternative power source. This resulted
    in the loss of Backup Unit content, including Backup Self-refresh low
    power mode information, OTP emulation configuration, and boot
    configuration, for instance.
    
    Fixes: ac809e7879b1 ("ARM: at91: pm: switch backup area to vbat in backup mode")
    Signed-off-by: Nicolas Ferre <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Claudiu Beznea <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ARM: dts: dra7: Add bus_dma_limit for l4 cfg bus [+ + +]
Author: Romain Naour <[email protected]>
Date:   Fri Nov 15 11:25:37 2024 +0100

    ARM: dts: dra7: Add bus_dma_limit for l4 cfg bus
    
    commit c1472ec1dc4419d0bae663c1a1e6cb98dc7881ad upstream.
    
    A bus_dma_limit was added for l3 bus by commit cfb5d65f2595
    ("ARM: dts: dra7: Add bus_dma_limit for L3 bus") to fix an issue
    observed only with SATA on DRA7-EVM with 4GB RAM and CONFIG_ARM_LPAE
    enabled.
    
    Since kernel 5.13, the SATA issue can be reproduced again following
    the SATA node move from L3 bus to L4_cfg in commit 8af15365a368
    ("ARM: dts: Configure interconnect target module for dra7 sata").
    
    Fix it by adding an empty dma-ranges property to l4_cfg and
    segment@100000 nodes (parent device tree node of SATA controller) to
    inherit the 2GB dma ranges limit from l3 bus node.
    
    Note: A similar fix was applied for PCIe controller by commit
    90d4d3f4ea45 ("ARM: dts: dra7: Fix bus_dma_limit for PCIe").
    
    Fixes: 8af15365a368 ("ARM: dts: Configure interconnect target module for dra7 sata").
    Link: https://lore.kernel.org/linux-omap/[email protected]/
    Cc: [email protected] # 5.13
    Signed-off-by: Romain Naour <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kevin Hilman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ARM: dts: mediatek: mt7623: fix IR nodename [+ + +]
Author: Rafał Miłecki <[email protected]>
Date:   Mon Jun 17 11:46:33 2024 +0200

    ARM: dts: mediatek: mt7623: fix IR nodename
    
    [ Upstream commit 90234cf9b37c57201a24b78c217a91a8af774109 ]
    
    Fix following validation error:
    arch/arm/boot/dts/mediatek/mt7623a-rfb-emmc.dtb: cir@10013000: $nodename:0: 'cir@10013000' does not match '^ir(-receiver)?(@[a-f0-9]+)?$'
            from schema $id: http://devicetree.org/schemas/media/mediatek,mt7622-cir.yaml#
    
    Fixes: 91044f38dae7 ("arm: dts: mt7623: add ir nodes to the mt7623.dtsi file")
    Cc: [email protected]
    Signed-off-by: Rafał Miłecki <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Matthias Brugger <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arp: use RCU protection in arp_xmit() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Feb 7 13:58:36 2025 +0000

    arp: use RCU protection in arp_xmit()
    
    [ Upstream commit a42b69f692165ec39db42d595f4f65a4c8f42e44 ]
    
    arp_xmit() can be called without RTNL or RCU protection.
    
    Use RCU protection to avoid potential UAF.
    
    Fixes: 29a26a568038 ("netfilter: Pass struct net into the netfilter hooks")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ASoC: acp: Support microphone from Lenovo Go S [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Wed Jan 22 20:49:13 2025 -0600

    ASoC: acp: Support microphone from Lenovo Go S
    
    commit b9a8ea185f3f8024619b2e74b74375493c87df8c upstream.
    
    On Lenovo Go S there is a DMIC connected to the ACP but the firmware
    has no `AcpDmicConnected` ACPI _DSD.
    
    Add a DMI entry for all possible Lenovo Go S SKUs to enable DMIC.
    
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Signed-off-by: Mario Limonciello <[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: amd: Add ACPI dependency to fix build error [+ + +]
Author: Yu-Chun Lin <[email protected]>
Date:   Fri Jan 10 01:15:47 2025 +0800

    ASoC: amd: Add ACPI dependency to fix build error
    
    [ Upstream commit 7e24ec93aecd12e33d31e38e5af4625553bbc727 ]
    
    As reported by the kernel test robot, the following error occurs:
    
       sound/soc/amd/yc/acp6x-mach.c: In function 'acp6x_probe':
    >> sound/soc/amd/yc/acp6x-mach.c:573:15: error: implicit declaration of function 'acpi_evaluate_integer'; did you mean 'acpi_evaluate_object'? [-Werror=implicit-function-declaration]
         573 |         ret = acpi_evaluate_integer(handle, "_WOV", NULL, &dmic_status);
             |               ^~~~~~~~~~~~~~~~~~~~~
             |               acpi_evaluate_object
       cc1: some warnings being treated as errors
    
    The function 'acpi_evaluate_integer' and its prototype in 'acpi_bus.h'
    are only available when 'CONFIG_ACPI' is enabled. Add a 'depends on ACPI'
    directive in Kconfig to ensure proper compilation.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Yu-Chun Lin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: Intel: avs: Fix theoretical infinite loop [+ + +]
Author: Cezary Rojewski <[email protected]>
Date:   Thu Jan 9 13:22:06 2025 +0100

    ASoC: Intel: avs: Fix theoretical infinite loop
    
    [ Upstream commit cf4d74256fe103ece7b2647550e6c063048e5682 ]
    
    While 'stack_dump_size' is a u32 bitfield of 16 bits, u32 has a bigger
    upper bound than the type u16 of loop counter 'offset' what in theory
    may lead to infinite loop condition.
    
    Found out by Coverity static analyzer.
    
    Fixes: c8c960c10971 ("ASoC: Intel: avs: APL-based platforms support")
    Signed-off-by: Cezary Rojewski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: Intel: bytcr_rt5640: Add DMI quirk for Vexia Edu Atla 10 tablet 5V [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Thu Jan 23 14:25:07 2025 +0100

    ASoC: Intel: bytcr_rt5640: Add DMI quirk for Vexia Edu Atla 10 tablet 5V
    
    [ Upstream commit 6917192378c1ce17ba31df51c4e0d8b1c97a453b ]
    
    The Vexia EDU ATLA 10 tablet comes in 2 different versions with
    significantly different mainboards. The only outward difference is that
    the charging barrel on one is marked 5V and the other is marked 9V.
    
    The 5V version mostly works with the BYTCR defaults, except that it is
    missing a CHAN package in its ACPI tables and the default of using
    SSP0-AIF2 is wrong, instead SSP0-AIF1 must be used. That and its jack
    detect signal is not inverted as it usually is.
    
    Add a DMI quirk for the 5V version to fix sound not working.
    
    Signed-off-by: Hans de Goede <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: renesas: rz-ssi: Use only the proper amount of dividers [+ + +]
Author: Claudiu Beznea <[email protected]>
Date:   Tue Dec 10 19:09:34 2024 +0200

    ASoC: renesas: rz-ssi: Use only the proper amount of dividers
    
    [ Upstream commit 55c209cd4318c701e6e88e0b2512a0f12dd02a7d ]
    
    There is no need to populate the ckdv[] with invalid dividers as that
    part will not be indexed anyway. The ssi->audio_mck/bclk_rate should
    always be >= 0. While at it, change the ckdv type as u8, as the divider
    128 was previously using the s8 sign bit.
    
    Signed-off-by: Claudiu Beznea <[email protected]>
    Fixes: 03e786bd43410fa9 ("ASoC: sh: Add RZ/G2L SSIF-2 driver")
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: rockchip: i2s_tdm: Re-add the set_sysclk callback [+ + +]
Author: Detlev Casanova <[email protected]>
Date:   Fri Jan 17 11:31:02 2025 -0500

    ASoC: rockchip: i2s_tdm: Re-add the set_sysclk callback
    
    [ Upstream commit 5323186e2e8d33c073fad51e24f18e2d6dbae2da ]
    
    In commit
    9e2ab4b18ebd ("ASoC: rockchip: i2s-tdm: Fix inaccurate sampling rates"),
    the set_sysclk callback was removed as considered unused as the mclk rate
    can be set in the hw_params callback.
    The difference between hw_params and set_sysclk is that the former is
    called with the audio sampling rate set in the params (e.g.: 48000 Hz)
    while the latter is called with a clock rate already computed with
      sampling_rate * mclk-fs (e.g.: 48000 * 256)
    
    For HDMI audio using the Rockchip I2S TDM driver, the mclk-fs value must
    be set to 128 instead of the default 256, and that value is set in the
    device tree at the machine driver level (like a simple-audio-card
    compatible node).
    Therefore, the i2s_tdm driver has no idea that another mclk-fs value can
    be configured and simply computes the mclk rate in the hw_params callback
    with DEFAULT_MCLK_FS * params_rate(params), which is wrong for HDMI
    audio.
    
    Re-add the set_sysclk callback so that the mclk rate is computed by the
    machine driver which has the correct mclk-fs value set in its device tree
    node.
    
    Fixes: 9e2ab4b18ebd ("ASoC: rockchip: i2s-tdm: Fix inaccurate sampling rates")
    Signed-off-by: Detlev Casanova <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: soc-pcm: don't use soc_pcm_ret() on .prepare callback [+ + +]
Author: Kuninori Morimoto <[email protected]>
Date:   Fri Dec 13 01:21:10 2024 +0000

    ASoC: soc-pcm: don't use soc_pcm_ret() on .prepare callback
    
    [ Upstream commit 301c26a018acb94dd537a4418cefa0f654500c6f ]
    
    commit 1f5664351410 ("ASoC: lower "no backend DAIs enabled for ... Port"
    log severity") ignores -EINVAL error message on common soc_pcm_ret().
    It is used from many functions, ignoring -EINVAL is over-kill.
    
    The reason why -EINVAL was ignored was it really should only be used
    upon invalid parameters coming from userspace and in that case we don't
    want to log an error since we do not want to give userspace a way to do
    a denial-of-service attack on the syslog / diskspace.
    
    So don't use soc_pcm_ret() on .prepare callback is better idea.
    
    Link: https://lore.kernel.org/r/[email protected]
    Cc: Hans de Goede <[email protected]>
    Signed-off-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]>

ASoC: sun4i-spdif: Add clock multiplier settings [+ + +]
Author: George Lander <[email protected]>
Date:   Mon Nov 11 17:55:29 2024 +0100

    ASoC: sun4i-spdif: Add clock multiplier settings
    
    [ Upstream commit 0a2319308de88b9e819c0b43d0fccd857123eb31 ]
    
    There have been intermittent issues with the SPDIF output on H3
    and H2+ devices which has been fixed by setting the s_clk to 4
    times the audio pll.
    Add a quirk for the clock multiplier as not every supported SoC
    requires it. Without the multiplier, the audio at normal sampling
    rates was distorted and did not play at higher sampling rates.
    
    Fixes: 1bd92af877ab ("ASoC: sun4i-spdif: Add support for the H3 SoC")
    Signed-off-by: George Lander <[email protected]>
    Signed-off-by: Marcus Cooper <[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-sff: Ensure that we cannot write outside the allocated buffer [+ + +]
Author: Niklas Cassel <[email protected]>
Date:   Mon Jan 27 16:43:04 2025 +0100

    ata: libata-sff: Ensure that we cannot write outside the allocated buffer
    
    commit 6e74e53b34b6dec5a50e1404e2680852ec6768d2 upstream.
    
    reveliofuzzing reported that a SCSI_IOCTL_SEND_COMMAND ioctl with out_len
    set to 0xd42, SCSI command set to ATA_16 PASS-THROUGH, ATA command set to
    ATA_NOP, and protocol set to ATA_PROT_PIO, can cause ata_pio_sector() to
    write outside the allocated buffer, overwriting random memory.
    
    While a ATA device is supposed to abort a ATA_NOP command, there does seem
    to be a bug either in libata-sff or QEMU, where either this status is not
    set, or the status is cleared before read by ata_sff_hsm_move().
    Anyway, that is most likely a separate bug.
    
    Looking at __atapi_pio_bytes(), it already has a safety check to ensure
    that __atapi_pio_bytes() cannot write outside the allocated buffer.
    
    Add a similar check to ata_pio_sector(), such that also ata_pio_sector()
    cannot write outside the allocated buffer.
    
    Cc: [email protected]
    Reported-by: reveliofuzzing <[email protected]>
    Closes: https://lore.kernel.org/linux-ide/CA+-ZZ_jTgxh3bS7m+KX07_EWckSnW3N2adX3KV63y4g7M4CZ2A@mail.gmail.com/
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Niklas Cassel <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ax25: Fix refcount leak caused by setting SO_BINDTODEVICE sockopt [+ + +]
Author: Murad Masimov <[email protected]>
Date:   Mon Feb 3 12:12:03 2025 +0300

    ax25: Fix refcount leak caused by setting SO_BINDTODEVICE sockopt
    
    [ Upstream commit bca0902e61731a75fc4860c8720168d9f1bae3b6 ]
    
    If an AX25 device is bound to a socket by setting the SO_BINDTODEVICE
    socket option, a refcount leak will occur in ax25_release().
    
    Commit 9fd75b66b8f6 ("ax25: Fix refcount leaks caused by ax25_cb_del()")
    added decrement of device refcounts in ax25_release(). In order for that
    to work correctly the refcounts must already be incremented when the
    device is bound to the socket. An AX25 device can be bound to a socket
    by either calling ax25_bind() or setting SO_BINDTODEVICE socket option.
    In both cases the refcounts should be incremented, but in fact it is done
    only in ax25_bind().
    
    This bug leads to the following issue reported by Syzkaller:
    
    ================================================================
    refcount_t: decrement hit 0; leaking memory.
    WARNING: CPU: 1 PID: 5932 at lib/refcount.c:31 refcount_warn_saturate+0x1ed/0x210 lib/refcount.c:31
    Modules linked in:
    CPU: 1 UID: 0 PID: 5932 Comm: syz-executor424 Not tainted 6.13.0-rc4-syzkaller-00110-g4099a71718b0 #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    RIP: 0010:refcount_warn_saturate+0x1ed/0x210 lib/refcount.c:31
    Call Trace:
     <TASK>
     __refcount_dec include/linux/refcount.h:336 [inline]
     refcount_dec include/linux/refcount.h:351 [inline]
     ref_tracker_free+0x710/0x820 lib/ref_tracker.c:236
     netdev_tracker_free include/linux/netdevice.h:4156 [inline]
     netdev_put include/linux/netdevice.h:4173 [inline]
     netdev_put include/linux/netdevice.h:4169 [inline]
     ax25_release+0x33f/0xa10 net/ax25/af_ax25.c:1069
     __sock_release+0xb0/0x270 net/socket.c:640
     sock_close+0x1c/0x30 net/socket.c:1408
     ...
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
     ...
     </TASK>
    ================================================================
    
    Fix the implementation of ax25_setsockopt() by adding increment of
    refcounts for the new device bound, and decrement of refcounts for
    the old unbound device.
    
    Fixes: 9fd75b66b8f6 ("ax25: Fix refcount leaks caused by ax25_cb_del()")
    Reported-by: [email protected]
    Signed-off-by: Murad Masimov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ax25: rcu protect dev->ax25_ptr [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Jan 3 21:05:14 2025 +0000

    ax25: rcu protect dev->ax25_ptr
    
    [ Upstream commit 95fc45d1dea8e1253f8ec58abc5befb71553d666 ]
    
    syzbot found a lockdep issue [1].
    
    We should remove ax25 RTNL dependency in ax25_setsockopt()
    
    This should also fix a variety of possible UAF in ax25.
    
    [1]
    
    WARNING: possible circular locking dependency detected
    6.13.0-rc3-syzkaller-00762-g9268abe611b0 #0 Not tainted
    ------------------------------------------------------
    syz.5.1818/12806 is trying to acquire lock:
     ffffffff8fcb3988 (rtnl_mutex){+.+.}-{4:4}, at: ax25_setsockopt+0xa55/0xe90 net/ax25/af_ax25.c:680
    
    but task is already holding lock:
     ffff8880617ac258 (sk_lock-AF_AX25){+.+.}-{0:0}, at: lock_sock include/net/sock.h:1618 [inline]
     ffff8880617ac258 (sk_lock-AF_AX25){+.+.}-{0:0}, at: ax25_setsockopt+0x209/0xe90 net/ax25/af_ax25.c:574
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #1 (sk_lock-AF_AX25){+.+.}-{0:0}:
            lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
            lock_sock_nested+0x48/0x100 net/core/sock.c:3642
            lock_sock include/net/sock.h:1618 [inline]
            ax25_kill_by_device net/ax25/af_ax25.c:101 [inline]
            ax25_device_event+0x24d/0x580 net/ax25/af_ax25.c:146
            notifier_call_chain+0x1a5/0x3f0 kernel/notifier.c:85
           __dev_notify_flags+0x207/0x400
            dev_change_flags+0xf0/0x1a0 net/core/dev.c:9026
            dev_ifsioc+0x7c8/0xe70 net/core/dev_ioctl.c:563
            dev_ioctl+0x719/0x1340 net/core/dev_ioctl.c:820
            sock_do_ioctl+0x240/0x460 net/socket.c:1234
            sock_ioctl+0x626/0x8e0 net/socket.c:1339
            vfs_ioctl fs/ioctl.c:51 [inline]
            __do_sys_ioctl fs/ioctl.c:906 [inline]
            __se_sys_ioctl+0xf5/0x170 fs/ioctl.c:892
            do_syscall_x64 arch/x86/entry/common.c:52 [inline]
            do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
           entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    -> #0 (rtnl_mutex){+.+.}-{4:4}:
            check_prev_add kernel/locking/lockdep.c:3161 [inline]
            check_prevs_add kernel/locking/lockdep.c:3280 [inline]
            validate_chain+0x18ef/0x5920 kernel/locking/lockdep.c:3904
            __lock_acquire+0x1397/0x2100 kernel/locking/lockdep.c:5226
            lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
            __mutex_lock_common kernel/locking/mutex.c:585 [inline]
            __mutex_lock+0x1ac/0xee0 kernel/locking/mutex.c:735
            ax25_setsockopt+0xa55/0xe90 net/ax25/af_ax25.c:680
            do_sock_setsockopt+0x3af/0x720 net/socket.c:2324
            __sys_setsockopt net/socket.c:2349 [inline]
            __do_sys_setsockopt net/socket.c:2355 [inline]
            __se_sys_setsockopt net/socket.c:2352 [inline]
            __x64_sys_setsockopt+0x1ee/0x280 net/socket.c:2352
            do_syscall_x64 arch/x86/entry/common.c:52 [inline]
            do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
           entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    other info that might help us debug this:
    
     Possible unsafe locking scenario:
    
           CPU0                    CPU1
           ----                    ----
      lock(sk_lock-AF_AX25);
                                   lock(rtnl_mutex);
                                   lock(sk_lock-AF_AX25);
      lock(rtnl_mutex);
    
     *** DEADLOCK ***
    
    1 lock held by syz.5.1818/12806:
      #0: ffff8880617ac258 (sk_lock-AF_AX25){+.+.}-{0:0}, at: lock_sock include/net/sock.h:1618 [inline]
      #0: ffff8880617ac258 (sk_lock-AF_AX25){+.+.}-{0:0}, at: ax25_setsockopt+0x209/0xe90 net/ax25/af_ax25.c:574
    
    stack backtrace:
    CPU: 1 UID: 0 PID: 12806 Comm: syz.5.1818 Not tainted 6.13.0-rc3-syzkaller-00762-g9268abe611b0 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    Call Trace:
     <TASK>
      __dump_stack lib/dump_stack.c:94 [inline]
      dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
      print_circular_bug+0x13a/0x1b0 kernel/locking/lockdep.c:2074
      check_noncircular+0x36a/0x4a0 kernel/locking/lockdep.c:2206
      check_prev_add kernel/locking/lockdep.c:3161 [inline]
      check_prevs_add kernel/locking/lockdep.c:3280 [inline]
      validate_chain+0x18ef/0x5920 kernel/locking/lockdep.c:3904
      __lock_acquire+0x1397/0x2100 kernel/locking/lockdep.c:5226
      lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
      __mutex_lock_common kernel/locking/mutex.c:585 [inline]
      __mutex_lock+0x1ac/0xee0 kernel/locking/mutex.c:735
      ax25_setsockopt+0xa55/0xe90 net/ax25/af_ax25.c:680
      do_sock_setsockopt+0x3af/0x720 net/socket.c:2324
      __sys_setsockopt net/socket.c:2349 [inline]
      __do_sys_setsockopt net/socket.c:2355 [inline]
      __se_sys_setsockopt net/socket.c:2352 [inline]
      __x64_sys_setsockopt+0x1ee/0x280 net/socket.c:2352
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f7b62385d29
    
    Fixes: c433570458e4 ("ax25: fix a use-after-free in ax25_fillin_cb()")
    Reported-by: syzbot <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
batman-adv: Drop unmanaged ELP metric worker [+ + +]
Author: Sven Eckelmann <[email protected]>
Date:   Mon Jan 20 00:06:11 2025 +0100

    batman-adv: Drop unmanaged ELP metric worker
    
    commit 8c8ecc98f5c65947b0070a24bac11e12e47cc65d upstream.
    
    The ELP worker needs to calculate new metric values for all neighbors
    "reachable" over an interface. Some of the used metric sources require
    locks which might need to sleep. This sleep is incompatible with the RCU
    list iterator used for the recorded neighbors. The initial approach to work
    around of this problem was to queue another work item per neighbor and then
    run this in a new context.
    
    Even when this solved the RCU vs might_sleep() conflict, it has a major
    problems: Nothing was stopping the work item in case it is not needed
    anymore - for example because one of the related interfaces was removed or
    the batman-adv module was unloaded - resulting in potential invalid memory
    accesses.
    
    Directly canceling the metric worker also has various problems:
    
    * cancel_work_sync for a to-be-deactivated interface is called with
      rtnl_lock held. But the code in the ELP metric worker also tries to use
      rtnl_lock() - which will never return in this case. This also means that
      cancel_work_sync would never return because it is waiting for the worker
      to finish.
    * iterating over the neighbor list for the to-be-deactivated interface is
      currently done using the RCU specific methods. Which means that it is
      possible to miss items when iterating over it without the associated
      spinlock - a behaviour which is acceptable for a periodic metric check
      but not for a cleanup routine (which must "stop" all still running
      workers)
    
    The better approch is to get rid of the per interface neighbor metric
    worker and handle everything in the interface worker. The original problems
    are solved by:
    
    * creating a list of neighbors which require new metric information inside
      the RCU protected context, gathering the metric according to the new list
      outside the RCU protected context
    * only use rcu_trylock inside metric gathering code to avoid a deadlock
      when the cancel_delayed_work_sync is called in the interface removal code
      (which is called with the rtnl_lock held)
    
    Cc: [email protected]
    Fixes: c833484e5f38 ("batman-adv: ELP - compute the metric based on the estimated throughput")
    Signed-off-by: Sven Eckelmann <[email protected]>
    Signed-off-by: Simon Wunderlich <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

batman-adv: fix panic during interface removal [+ + +]
Author: Andy Strohman <[email protected]>
Date:   Thu Jan 9 02:27:56 2025 +0000

    batman-adv: fix panic during interface removal
    
    commit ccb7276a6d26d6f8416e315b43b45e15ee7f29e2 upstream.
    
    Reference counting is used to ensure that
    batadv_hardif_neigh_node and batadv_hard_iface
    are not freed before/during
    batadv_v_elp_throughput_metric_update work is
    finished.
    
    But there isn't a guarantee that the hard if will
    remain associated with a soft interface up until
    the work is finished.
    
    This fixes a crash triggered by reboot that looks
    like this:
    
    Call trace:
     batadv_v_mesh_free+0xd0/0x4dc [batman_adv]
     batadv_v_elp_throughput_metric_update+0x1c/0xa4
     process_one_work+0x178/0x398
     worker_thread+0x2e8/0x4d0
     kthread+0xd8/0xdc
     ret_from_fork+0x10/0x20
    
    (the batadv_v_mesh_free call is misleading,
    and does not actually happen)
    
    I was able to make the issue happen more reliably
    by changing hardif_neigh->bat_v.metric_work work
    to be delayed work. This allowed me to track down
    and confirm the fix.
    
    Cc: [email protected]
    Fixes: c833484e5f38 ("batman-adv: ELP - compute the metric based on the estimated throughput")
    Signed-off-by: Andy Strohman <[email protected]>
    [[email protected]: prevent entering batadv_v_elp_get_throughput without
     soft_iface]
    Signed-off-by: Sven Eckelmann <[email protected]>
    Signed-off-by: Simon Wunderlich <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

batman-adv: Ignore neighbor throughput metrics in error case [+ + +]
Author: Sven Eckelmann <[email protected]>
Date:   Mon Jan 20 20:35:28 2025 +0100

    batman-adv: Ignore neighbor throughput metrics in error case
    
    commit e7e34ffc976aaae4f465b7898303241b81ceefc3 upstream.
    
    If a temporary error happened in the evaluation of the neighbor throughput
    information, then the invalid throughput result should not be stored in the
    throughtput EWMA.
    
    Cc: [email protected]
    Signed-off-by: Sven Eckelmann <[email protected]>
    Signed-off-by: Simon Wunderlich <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
bgmac: reduce max frame size to support just MTU 1500 [+ + +]
Author: Rafał Miłecki <[email protected]>
Date:   Mon Jan 27 09:51:59 2025 -0800

    bgmac: reduce max frame size to support just MTU 1500
    
    [ Upstream commit 752e5fcc2e77358936d36ef8e522d6439372e201 ]
    
    bgmac allocates new replacement buffer before handling each received
    frame. Allocating & DMA-preparing 9724 B each time consumes a lot of CPU
    time. Ideally bgmac should just respect currently set MTU but it isn't
    the case right now. For now just revert back to the old limited frame
    size.
    
    This change bumps NAT masquerade speed by ~95%.
    
    Since commit 8218f62c9c9b ("mm: page_frag: use initial zero offset for
    page_frag_alloc_align()"), the bgmac driver fails to open its network
    interface successfully and runs out of memory in the following call
    stack:
    
    bgmac_open
      -> bgmac_dma_init
        -> bgmac_dma_rx_skb_for_slot
          -> netdev_alloc_frag
    
    BGMAC_RX_ALLOC_SIZE = 10048 and PAGE_FRAG_CACHE_MAX_SIZE = 32768.
    
    Eventually we land into __page_frag_alloc_align() with the following
    parameters across multiple successive calls:
    
    __page_frag_alloc_align: fragsz=10048, align_mask=-1, size=32768, offset=0
    __page_frag_alloc_align: fragsz=10048, align_mask=-1, size=32768, offset=10048
    __page_frag_alloc_align: fragsz=10048, align_mask=-1, size=32768, offset=20096
    __page_frag_alloc_align: fragsz=10048, align_mask=-1, size=32768, offset=30144
    
    So in that case we do indeed have offset + fragsz (40192) > size (32768)
    and so we would eventually return NULL. Reverting to the older 1500
    bytes MTU allows the network driver to be usable again.
    
    Fixes: 8c7da63978f1 ("bgmac: configure MTU and add support for frames beyond 8192 byte size")
    Signed-off-by: Rafał Miłecki <[email protected]>
    [florian: expand commit message about recent commits]
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-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]>

 
binfmt_flat: Fix integer overflow bug on 32 bit systems [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Wed Dec 4 15:07:15 2024 +0300

    binfmt_flat: Fix integer overflow bug on 32 bit systems
    
    commit 55cf2f4b945f6a6416cc2524ba740b83cc9af25a upstream.
    
    Most of these sizes and counts are capped at 256MB so the math doesn't
    result in an integer overflow.  The "relocs" count needs to be checked
    as well.  Otherwise on 32bit systems the calculation of "full_data"
    could be wrong.
    
            full_data = data_len + relocs * sizeof(unsigned long);
    
    Fixes: c995ee28d29d ("binfmt_flat: prevent kernel dammage from corrupted executable headers")
    Cc: [email protected]
    Signed-off-by: Dan Carpenter <[email protected]>
    Acked-by: Nicolas Pitre <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
blk-cgroup: Fix class @block_class's subsystem refcount leakage [+ + +]
Author: Zijun Hu <[email protected]>
Date:   Sun Jan 5 16:34:03 2025 +0800

    blk-cgroup: Fix class @block_class's subsystem refcount leakage
    
    commit d1248436cbef1f924c04255367ff4845ccd9025e upstream.
    
    blkcg_fill_root_iostats() iterates over @block_class's devices by
    class_dev_iter_(init|next)(), but does not end iterating with
    class_dev_iter_exit(), so causes the class's subsystem refcount leakage.
    
    Fix by ending the iterating with class_dev_iter_exit().
    
    Fixes: ef45fe470e1e ("blk-cgroup: show global disk stats in root cgroup io.stat")
    Reviewed-by: Michal Koutný <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: [email protected]
    Acked-by: Tejun Heo <[email protected]>
    Signed-off-by: Zijun Hu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
block: don't revert iter for -EIOCBQUEUED [+ + +]
Author: Jens Axboe <[email protected]>
Date:   Thu Jan 23 06:18:41 2025 -0700

    block: don't revert iter for -EIOCBQUEUED
    
    commit b13ee668e8280ca5b07f8ce2846b9957a8a10853 upstream.
    
    blkdev_read_iter() has a few odd checks, like gating the position and
    count adjustment on whether or not the result is bigger-than-or-equal to
    zero (where bigger than makes more sense), and not checking the return
    value of blkdev_direct_IO() before doing an iov_iter_revert(). The
    latter can lead to attempting to revert with a negative value, which
    when passed to iov_iter_revert() as an unsigned value will lead to
    throwing a WARN_ON() because unroll is bigger than MAX_RW_COUNT.
    
    Be sane and don't revert for -EIOCBQUEUED, like what is done in other
    spots.
    
    Cc: [email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

block: retry call probe after request_module in blk_request_module [+ + +]
Author: Yang Erkun <[email protected]>
Date:   Mon Dec 9 19:04:35 2024 +0800

    block: retry call probe after request_module in blk_request_module
    
    [ Upstream commit 457ef47c08d2979f3e59ce66267485c3faed70c8 ]
    
    Set kernel config:
    
     CONFIG_BLK_DEV_LOOP=m
     CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
    
    Do latter:
    
     mknod loop0 b 7 0
     exec 4<> loop0
    
    Before commit e418de3abcda ("block: switch gendisk lookup to a simple
    xarray"), lookup_gendisk will first use base_probe to load module loop,
    and then the retry will call loop_probe to prepare the loop disk. Finally
    open for this disk will success. However, after this commit, we lose the
    retry logic, and open will fail with ENXIO. Block device autoloading is
    deprecated and will be removed soon, but maybe we should keep open success
    until we really remove it. So, give a retry to fix it.
    
    Fixes: e418de3abcda ("block: switch gendisk lookup to a simple xarray")
    Suggested-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Yang Erkun <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Bluetooth: L2CAP: accept zero as a special value for MTU auto-selection [+ + +]
Author: Fedor Pchelkin <[email protected]>
Date:   Wed Jan 29 00:08:14 2025 +0300

    Bluetooth: L2CAP: accept zero as a special value for MTU auto-selection
    
    commit 5c61419e02033eaf01733d66e2fcd4044808f482 upstream.
    
    One of the possible ways to enable the input MTU auto-selection for L2CAP
    connections is supposed to be through passing a special "0" value for it
    as a socket option. Commit [1] added one of those into avdtp. However, it
    simply wouldn't work because the kernel still treats the specified value
    as invalid and denies the setting attempt. Recorded BlueZ logs include the
    following:
    
      bluetoothd[496]: profiles/audio/avdtp.c:l2cap_connect() setsockopt(L2CAP_OPTIONS): Invalid argument (22)
    
    [1]: https://github.com/bluez/bluez/commit/ae5be371a9f53fed33d2b34748a95a5498fd4b77
    
    Found by Linux Verification Center (linuxtesting.org).
    
    Fixes: 4b6e228e297b ("Bluetooth: Auto tune if input MTU is set to 0")
    Cc: [email protected]
    Signed-off-by: Fedor Pchelkin <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Bluetooth: L2CAP: handle NULL sock pointer in l2cap_sock_alloc [+ + +]
Author: Fedor Pchelkin <[email protected]>
Date:   Wed Dec 18 00:19:59 2024 +0300

    Bluetooth: L2CAP: handle NULL sock pointer in l2cap_sock_alloc
    
    commit 5f397409f8ee5bc82901eeaf799e1cbc4f8edcf1 upstream.
    
    A NULL sock pointer is passed into l2cap_sock_alloc() when it is called
    from l2cap_sock_new_connection_cb() and the error handling paths should
    also be aware of it.
    
    Seemingly a more elegant solution would be to swap bt_sock_alloc() and
    l2cap_chan_create() calls since they are not interdependent to that moment
    but then l2cap_chan_create() adds the soon to be deallocated and still
    dummy-initialized channel to the global list accessible by many L2CAP
    paths. The channel would be removed from the list in short period of time
    but be a bit more straight-forward here and just check for NULL instead of
    changing the order of function calls.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE static
    analysis tool.
    
    Fixes: 7c4f78cdb8e7 ("Bluetooth: L2CAP: do not leave dangling sk pointer on error in l2cap_sock_create()")
    Cc: [email protected]
    Signed-off-by: Fedor Pchelkin <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Bluetooth: MGMT: Fix slab-use-after-free Read in mgmt_remove_adv_monitor_sync [+ + +]
Author: Mazin Al Haddad <[email protected]>
Date:   Tue Dec 24 05:06:16 2024 +0300

    Bluetooth: MGMT: Fix slab-use-after-free Read in mgmt_remove_adv_monitor_sync
    
    [ Upstream commit 26fbd3494a7dd26269cb0817c289267dbcfdec06 ]
    
    This fixes the following crash:
    
    ==================================================================
    BUG: KASAN: slab-use-after-free in mgmt_remove_adv_monitor_sync+0x3a/0xd0 net/bluetooth/mgmt.c:5543
    Read of size 8 at addr ffff88814128f898 by task kworker/u9:4/5961
    
    CPU: 1 UID: 0 PID: 5961 Comm: kworker/u9:4 Not tainted 6.12.0-syzkaller-10684-gf1cd565ce577 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    Workqueue: hci0 hci_cmd_sync_work
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
     print_address_description mm/kasan/report.c:378 [inline]
     print_report+0x169/0x550 mm/kasan/report.c:489
     kasan_report+0x143/0x180 mm/kasan/report.c:602
     mgmt_remove_adv_monitor_sync+0x3a/0xd0 net/bluetooth/mgmt.c:5543
     hci_cmd_sync_work+0x22b/0x400 net/bluetooth/hci_sync.c:332
     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>
    
    Allocated by task 16026:
     kasan_save_stack mm/kasan/common.c:47 [inline]
     kasan_save_track+0x3f/0x80 mm/kasan/common.c:68
     poison_kmalloc_redzone mm/kasan/common.c:377 [inline]
     __kasan_kmalloc+0x98/0xb0 mm/kasan/common.c:394
     kasan_kmalloc include/linux/kasan.h:260 [inline]
     __kmalloc_cache_noprof+0x243/0x390 mm/slub.c:4314
     kmalloc_noprof include/linux/slab.h:901 [inline]
     kzalloc_noprof include/linux/slab.h:1037 [inline]
     mgmt_pending_new+0x65/0x250 net/bluetooth/mgmt_util.c:269
     mgmt_pending_add+0x36/0x120 net/bluetooth/mgmt_util.c:296
     remove_adv_monitor+0x102/0x1b0 net/bluetooth/mgmt.c:5568
     hci_mgmt_cmd+0xc47/0x11d0 net/bluetooth/hci_sock.c:1712
     hci_sock_sendmsg+0x7b8/0x11c0 net/bluetooth/hci_sock.c:1832
     sock_sendmsg_nosec net/socket.c:711 [inline]
     __sock_sendmsg+0x221/0x270 net/socket.c:726
     sock_write_iter+0x2d7/0x3f0 net/socket.c:1147
     new_sync_write fs/read_write.c:586 [inline]
     vfs_write+0xaeb/0xd30 fs/read_write.c:679
     ksys_write+0x18f/0x2b0 fs/read_write.c:731
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Freed by task 16022:
     kasan_save_stack mm/kasan/common.c:47 [inline]
     kasan_save_track+0x3f/0x80 mm/kasan/common.c:68
     kasan_save_free_info+0x40/0x50 mm/kasan/generic.c:582
     poison_slab_object mm/kasan/common.c:247 [inline]
     __kasan_slab_free+0x59/0x70 mm/kasan/common.c:264
     kasan_slab_free include/linux/kasan.h:233 [inline]
     slab_free_hook mm/slub.c:2338 [inline]
     slab_free mm/slub.c:4598 [inline]
     kfree+0x196/0x420 mm/slub.c:4746
     mgmt_pending_foreach+0xd1/0x130 net/bluetooth/mgmt_util.c:259
     __mgmt_power_off+0x183/0x430 net/bluetooth/mgmt.c:9550
     hci_dev_close_sync+0x6c4/0x11c0 net/bluetooth/hci_sync.c:5208
     hci_dev_do_close net/bluetooth/hci_core.c:483 [inline]
     hci_dev_close+0x112/0x210 net/bluetooth/hci_core.c:508
     sock_do_ioctl+0x158/0x460 net/socket.c:1209
     sock_ioctl+0x626/0x8e0 net/socket.c:1328
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:906 [inline]
     __se_sys_ioctl+0xf5/0x170 fs/ioctl.c:892
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=479aff51bb361ef5aa18
    Tested-by: [email protected]
    Signed-off-by: Mazin Al Haddad <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf: Send signals asynchronously if !preemptible [+ + +]
Author: Puranjay Mohan <[email protected]>
Date:   Wed Jan 15 10:36:47 2025 +0000

    bpf: Send signals asynchronously if !preemptible
    
    [ Upstream commit 87c544108b612512b254c8f79aa5c0a8546e2cc4 ]
    
    BPF programs can execute in all kinds of contexts and when a program
    running in a non-preemptible context uses the bpf_send_signal() kfunc,
    it will cause issues because this kfunc can sleep.
    Change `irqs_disabled()` to `!preemptible()`.
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/
    Fixes: 1bc7896e9ef4 ("bpf: Fix deadlock with rq_lock in bpf_send_signal()")
    Signed-off-by: Puranjay Mohan <[email protected]>
    Acked-by: Yonghong Song <[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: tcp: Mark bpf_load_hdr_opt() arg2 as read-write [+ + +]
Author: Daniel Xu <[email protected]>
Date:   Tue Jan 14 13:28:43 2025 -0700

    bpf: tcp: Mark bpf_load_hdr_opt() arg2 as read-write
    
    [ Upstream commit 8ac412a3361173e3000b16167af3d1f6f90af613 ]
    
    MEM_WRITE attribute is defined as: "Non-presence of MEM_WRITE means that
    MEM is only being read". bpf_load_hdr_opt() both reads and writes from
    its arg2 - void *search_res.
    
    This matters a lot for the next commit where we more precisely track
    stack accesses. Without this annotation, the verifier will make false
    assumptions about the contents of memory written to by helpers and
    possibly prune valid branches.
    
    Fixes: 6fad274f06f0 ("bpf: Add MEM_WRITE attribute")
    Acked-by: Martin KaFai Lau <[email protected]>
    Signed-off-by: Daniel Xu <[email protected]>
    Link: https://lore.kernel.org/r/730e45f8c39be2a5f3d8c4406cceca9d574cbf14.1736886479.git.dxu@dxuuu.xyz
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
btrfs: avoid monopolizing a core when activating a swap file [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Fri Feb 7 01:20:55 2025 +0900

    btrfs: avoid monopolizing a core when activating a swap file
    
    commit 2c8507c63f5498d4ee4af404a8e44ceae4345056 upstream.
    
    This commit re-attempts the backport of the change to the linux-6.1.y
    branch. Commit bb8e287f596b ("btrfs: avoid monopolizing a core when
    activating a swap file") on this branch was reverted.
    
    During swap activation we iterate over the extents of a file and we can
    have many thousands of them, so we can end up in a busy loop monopolizing
    a core. Avoid this by doing a voluntary reschedule after processing each
    extent.
    
    CC: [email protected] # 5.4+
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Koichiro Den <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

btrfs: convert BUG_ON in btrfs_reloc_cow_block() to proper error handling [+ + +]
Author: Josef Bacik <[email protected]>
Date:   Thu Oct 3 11:43:03 2024 -0400

    btrfs: convert BUG_ON in btrfs_reloc_cow_block() to proper error handling
    
    [ Upstream commit 6a4730b325aaa48f7a5d5ba97aff0a955e2d9cec ]
    
    This BUG_ON is meant to catch backref cache problems, but these can
    arise from either bugs in the backref cache or corruption in the extent
    tree.  Fix it to be a proper error.
    
    Reviewed-by: Boris Burkov <[email protected]>
    Signed-off-by: Josef Bacik <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: fix data race when accessing the inode's disk_i_size at btrfs_drop_extents() [+ + +]
Author: Hao-ran Zheng <[email protected]>
Date:   Tue Dec 3 15:56:51 2024 +0800

    btrfs: fix data race when accessing the inode's disk_i_size at btrfs_drop_extents()
    
    [ Upstream commit 5324c4e10e9c2ce307a037e904c0d9671d7137d9 ]
    
    A data race occurs when the function `insert_ordered_extent_file_extent()`
    and the function `btrfs_inode_safe_disk_i_size_write()` are executed
    concurrently. The function `insert_ordered_extent_file_extent()` is not
    locked when reading inode->disk_i_size, causing
    `btrfs_inode_safe_disk_i_size_write()` to cause data competition when
    writing inode->disk_i_size, thus affecting the value of `modify_tree`.
    
    The specific call stack that appears during testing is as follows:
    
      ============DATA_RACE============
       btrfs_drop_extents+0x89a/0xa060 [btrfs]
       insert_reserved_file_extent+0xb54/0x2960 [btrfs]
       insert_ordered_extent_file_extent+0xff5/0x1760 [btrfs]
       btrfs_finish_one_ordered+0x1b85/0x36a0 [btrfs]
       btrfs_finish_ordered_io+0x37/0x60 [btrfs]
       finish_ordered_fn+0x3e/0x50 [btrfs]
       btrfs_work_helper+0x9c9/0x27a0 [btrfs]
       process_scheduled_works+0x716/0xf10
       worker_thread+0xb6a/0x1190
       kthread+0x292/0x330
       ret_from_fork+0x4d/0x80
       ret_from_fork_asm+0x1a/0x30
      ============OTHER_INFO============
       btrfs_inode_safe_disk_i_size_write+0x4ec/0x600 [btrfs]
       btrfs_finish_one_ordered+0x24c7/0x36a0 [btrfs]
       btrfs_finish_ordered_io+0x37/0x60 [btrfs]
       finish_ordered_fn+0x3e/0x50 [btrfs]
       btrfs_work_helper+0x9c9/0x27a0 [btrfs]
       process_scheduled_works+0x716/0xf10
       worker_thread+0xb6a/0x1190
       kthread+0x292/0x330
       ret_from_fork+0x4d/0x80
       ret_from_fork_asm+0x1a/0x30
      =================================
    
    The main purpose of the check of the inode's disk_i_size is to avoid
    taking write locks on a btree path when we have a write at or beyond
    EOF, since in these cases we don't expect to find extent items in the
    root to drop. However if we end up taking write locks due to a data
    race on disk_i_size, everything is still correct, we only add extra
    lock contention on the tree in case there's concurrency from other tasks.
    If the race causes us to not take write locks when we actually need them,
    then everything is functionally correct as well, since if we find out we
    have extent items to drop and we took read locks (modify_tree set to 0),
    we release the path and retry again with write locks.
    
    Since this data race does not affect the correctness of the function,
    it is a harmless data race, use data_race() to check inode->disk_i_size.
    
    Reviewed-by: Filipe Manana <[email protected]>
    Signed-off-by: Hao-ran Zheng <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: fix hole expansion when writing at an offset beyond EOF [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Wed Feb 5 17:36:48 2025 +0000

    btrfs: fix hole expansion when writing at an offset beyond EOF
    
    commit da2dccd7451de62b175fb8f0808d644959e964c7 upstream.
    
    At btrfs_write_check() if our file's i_size is not sector size aligned and
    we have a write that starts at an offset larger than the i_size that falls
    within the same page of the i_size, then we end up not zeroing the file
    range [i_size, write_offset).
    
    The code is this:
    
        start_pos = round_down(pos, fs_info->sectorsize);
        oldsize = i_size_read(inode);
        if (start_pos > oldsize) {
            /* Expand hole size to cover write data, preventing empty gap */
            loff_t end_pos = round_up(pos + count, fs_info->sectorsize);
    
            ret = btrfs_cont_expand(BTRFS_I(inode), oldsize, end_pos);
            if (ret)
                return ret;
        }
    
    So if our file's i_size is 90269 bytes and a write at offset 90365 bytes
    comes in, we get 'start_pos' set to 90112 bytes, which is less than the
    i_size and therefore we don't zero out the range [90269, 90365) by
    calling btrfs_cont_expand().
    
    This is an old bug introduced in commit 9036c10208e1 ("Btrfs: update hole
    handling v2"), from 2008, and the buggy code got moved around over the
    years.
    
    Fix this by discarding 'start_pos' and comparing against the write offset
    ('pos') without any alignment.
    
    This bug was recently exposed by test case generic/363 which tests this
    scenario by polluting ranges beyond EOF with an mmap write and than verify
    that after a file increases we get zeroes for the range which is supposed
    to be a hole and not what we wrote with the previous mmaped write.
    
    We're only seeing this exposed now because generic/363 used to run only
    on xfs until last Sunday's fstests update.
    
    The test was failing like this:
    
       $ ./check generic/363
       FSTYP         -- btrfs
       PLATFORM      -- Linux/x86_64 debian0 6.13.0-rc7-btrfs-next-185+ #17 SMP PREEMPT_DYNAMIC Mon Feb  3 12:28:46 WET 2025
       MKFS_OPTIONS  -- /dev/sdc
       MOUNT_OPTIONS -- /dev/sdc /home/fdmanana/btrfs-tests/scratch_1
    
       generic/363 0s ... [failed, exit status 1]- output mismatch (see /home/fdmanana/git/hub/xfstests/results//generic/363.out.bad)
    #      --- tests/generic/363.out        2025-02-05 15:31:14.013646509 +0000
    #      +++ /home/fdmanana/git/hub/xfstests/results//generic/363.out.bad 2025-02-05 17:25:33.112630781 +0000
           @@ -1 +1,46 @@
            QA output created by 363
           +READ BAD DATA: offset = 0xdcad, size = 0xd921, fname = /home/fdmanana/btrfs-tests/dev/junk
           +OFFSET      GOOD    BAD     RANGE
           +0x1609d     0x0000  0x3104  0x0
           +operation# (mod 256) for the bad data may be 4
           +0x1609e     0x0000  0x0472  0x1
           +operation# (mod 256) for the bad data may be 4
           ...
           (Run 'diff -u /home/fdmanana/git/hub/xfstests/tests/generic/363.out /home/fdmanana/git/hub/xfstests/results//generic/363.out.bad'  to see the entire diff)
       Ran: generic/363
       Failures: generic/363
       Failed 1 of 1 tests
    
    Fixes: 9036c10208e1 ("Btrfs: update hole handling v2")
    CC: [email protected]
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

btrfs: fix use-after-free when attempting to join an aborted transaction [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Mon Jan 20 17:26:10 2025 +0000

    btrfs: fix use-after-free when attempting to join an aborted transaction
    
    [ Upstream commit e2f0943cf37305dbdeaf9846e3c941451bcdef63 ]
    
    When we are trying to join the current transaction and if it's aborted,
    we read its 'aborted' field after unlocking fs_info->trans_lock and
    without holding any extra reference count on it. This means that a
    concurrent task that is aborting the transaction may free the transaction
    before we read its 'aborted' field, leading to a use-after-free.
    
    Fix this by reading the 'aborted' field while holding fs_info->trans_lock
    since any freeing task must first acquire that lock and set
    fs_info->running_transaction to NULL before freeing the transaction.
    
    This was reported by syzbot and Dmitry with the following stack traces
    from KASAN:
    
       ==================================================================
       BUG: KASAN: slab-use-after-free in join_transaction+0xd9b/0xda0 fs/btrfs/transaction.c:278
       Read of size 4 at addr ffff888011839024 by task kworker/u4:9/1128
    
       CPU: 0 UID: 0 PID: 1128 Comm: kworker/u4:9 Not tainted 6.13.0-rc7-syzkaller-00019-gc45323b7560e #0
       Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
       Workqueue: events_unbound btrfs_async_reclaim_data_space
       Call Trace:
        <TASK>
        __dump_stack lib/dump_stack.c:94 [inline]
        dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
        print_address_description mm/kasan/report.c:378 [inline]
        print_report+0x169/0x550 mm/kasan/report.c:489
        kasan_report+0x143/0x180 mm/kasan/report.c:602
        join_transaction+0xd9b/0xda0 fs/btrfs/transaction.c:278
        start_transaction+0xaf8/0x1670 fs/btrfs/transaction.c:697
        flush_space+0x448/0xcf0 fs/btrfs/space-info.c:803
        btrfs_async_reclaim_data_space+0x159/0x510 fs/btrfs/space-info.c:1321
        process_one_work kernel/workqueue.c:3236 [inline]
        process_scheduled_works+0xa66/0x1840 kernel/workqueue.c:3317
        worker_thread+0x870/0xd30 kernel/workqueue.c:3398
        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>
    
       Allocated by task 5315:
        kasan_save_stack mm/kasan/common.c:47 [inline]
        kasan_save_track+0x3f/0x80 mm/kasan/common.c:68
        poison_kmalloc_redzone mm/kasan/common.c:377 [inline]
        __kasan_kmalloc+0x98/0xb0 mm/kasan/common.c:394
        kasan_kmalloc include/linux/kasan.h:260 [inline]
        __kmalloc_cache_noprof+0x243/0x390 mm/slub.c:4329
        kmalloc_noprof include/linux/slab.h:901 [inline]
        join_transaction+0x144/0xda0 fs/btrfs/transaction.c:308
        start_transaction+0xaf8/0x1670 fs/btrfs/transaction.c:697
        btrfs_create_common+0x1b2/0x2e0 fs/btrfs/inode.c:6572
        lookup_open fs/namei.c:3649 [inline]
        open_last_lookups fs/namei.c:3748 [inline]
        path_openat+0x1c03/0x3590 fs/namei.c:3984
        do_filp_open+0x27f/0x4e0 fs/namei.c:4014
        do_sys_openat2+0x13e/0x1d0 fs/open.c:1402
        do_sys_open fs/open.c:1417 [inline]
        __do_sys_creat fs/open.c:1495 [inline]
        __se_sys_creat fs/open.c:1489 [inline]
        __x64_sys_creat+0x123/0x170 fs/open.c:1489
        do_syscall_x64 arch/x86/entry/common.c:52 [inline]
        do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
        entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
       Freed by task 5336:
        kasan_save_stack mm/kasan/common.c:47 [inline]
        kasan_save_track+0x3f/0x80 mm/kasan/common.c:68
        kasan_save_free_info+0x40/0x50 mm/kasan/generic.c:582
        poison_slab_object mm/kasan/common.c:247 [inline]
        __kasan_slab_free+0x59/0x70 mm/kasan/common.c:264
        kasan_slab_free include/linux/kasan.h:233 [inline]
        slab_free_hook mm/slub.c:2353 [inline]
        slab_free mm/slub.c:4613 [inline]
        kfree+0x196/0x430 mm/slub.c:4761
        cleanup_transaction fs/btrfs/transaction.c:2063 [inline]
        btrfs_commit_transaction+0x2c97/0x3720 fs/btrfs/transaction.c:2598
        insert_balance_item+0x1284/0x20b0 fs/btrfs/volumes.c:3757
        btrfs_balance+0x992/0x10c0 fs/btrfs/volumes.c:4633
        btrfs_ioctl_balance+0x493/0x7c0 fs/btrfs/ioctl.c:3670
        vfs_ioctl fs/ioctl.c:51 [inline]
        __do_sys_ioctl fs/ioctl.c:906 [inline]
        __se_sys_ioctl+0xf5/0x170 fs/ioctl.c:892
        do_syscall_x64 arch/x86/entry/common.c:52 [inline]
        do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
        entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
       The buggy address belongs to the object at ffff888011839000
        which belongs to the cache kmalloc-2k of size 2048
       The buggy address is located 36 bytes inside of
        freed 2048-byte region [ffff888011839000, ffff888011839800)
    
       The buggy address belongs to the physical page:
       page: refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x11838
       head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
       flags: 0xfff00000000040(head|node=0|zone=1|lastcpupid=0x7ff)
       page_type: f5(slab)
       raw: 00fff00000000040 ffff88801ac42000 ffffea0000493400 dead000000000002
       raw: 0000000000000000 0000000000080008 00000001f5000000 0000000000000000
       head: 00fff00000000040 ffff88801ac42000 ffffea0000493400 dead000000000002
       head: 0000000000000000 0000000000080008 00000001f5000000 0000000000000000
       head: 00fff00000000003 ffffea0000460e01 ffffffffffffffff 0000000000000000
       head: 0000000000000008 0000000000000000 00000000ffffffff 0000000000000000
       page dumped because: kasan: bad access detected
       page_owner tracks the page as allocated
       page last allocated via order 3, migratetype Unmovable, gfp_mask 0xd20c0(__GFP_IO|__GFP_FS|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC), pid 57, tgid 57 (kworker/0:2), ts 67248182943, free_ts 67229742023
        set_page_owner include/linux/page_owner.h:32 [inline]
        post_alloc_hook+0x1f3/0x230 mm/page_alloc.c:1558
        prep_new_page mm/page_alloc.c:1566 [inline]
        get_page_from_freelist+0x365c/0x37a0 mm/page_alloc.c:3476
        __alloc_pages_noprof+0x292/0x710 mm/page_alloc.c:4753
        alloc_pages_mpol_noprof+0x3e1/0x780 mm/mempolicy.c:2269
        alloc_slab_page+0x6a/0x110 mm/slub.c:2423
        allocate_slab+0x5a/0x2b0 mm/slub.c:2589
        new_slab mm/slub.c:2642 [inline]
        ___slab_alloc+0xc27/0x14a0 mm/slub.c:3830
        __slab_alloc+0x58/0xa0 mm/slub.c:3920
        __slab_alloc_node mm/slub.c:3995 [inline]
        slab_alloc_node mm/slub.c:4156 [inline]
        __do_kmalloc_node mm/slub.c:4297 [inline]
        __kmalloc_node_track_caller_noprof+0x2e9/0x4c0 mm/slub.c:4317
        kmalloc_reserve+0x111/0x2a0 net/core/skbuff.c:609
        __alloc_skb+0x1f3/0x440 net/core/skbuff.c:678
        alloc_skb include/linux/skbuff.h:1323 [inline]
        alloc_skb_with_frags+0xc3/0x820 net/core/skbuff.c:6612
        sock_alloc_send_pskb+0x91a/0xa60 net/core/sock.c:2884
        sock_alloc_send_skb include/net/sock.h:1803 [inline]
        mld_newpack+0x1c3/0xaf0 net/ipv6/mcast.c:1747
        add_grhead net/ipv6/mcast.c:1850 [inline]
        add_grec+0x1492/0x19a0 net/ipv6/mcast.c:1988
        mld_send_cr net/ipv6/mcast.c:2114 [inline]
        mld_ifc_work+0x691/0xd90 net/ipv6/mcast.c:2651
       page last free pid 5300 tgid 5300 stack trace:
        reset_page_owner include/linux/page_owner.h:25 [inline]
        free_pages_prepare mm/page_alloc.c:1127 [inline]
        free_unref_page+0xd3f/0x1010 mm/page_alloc.c:2659
        __slab_free+0x2c2/0x380 mm/slub.c:4524
        qlink_free mm/kasan/quarantine.c:163 [inline]
        qlist_free_all+0x9a/0x140 mm/kasan/quarantine.c:179
        kasan_quarantine_reduce+0x14f/0x170 mm/kasan/quarantine.c:286
        __kasan_slab_alloc+0x23/0x80 mm/kasan/common.c:329
        kasan_slab_alloc include/linux/kasan.h:250 [inline]
        slab_post_alloc_hook mm/slub.c:4119 [inline]
        slab_alloc_node mm/slub.c:4168 [inline]
        __do_kmalloc_node mm/slub.c:4297 [inline]
        __kmalloc_noprof+0x236/0x4c0 mm/slub.c:4310
        kmalloc_noprof include/linux/slab.h:905 [inline]
        kzalloc_noprof include/linux/slab.h:1037 [inline]
        fib_create_info+0xc14/0x25b0 net/ipv4/fib_semantics.c:1435
        fib_table_insert+0x1f6/0x1f20 net/ipv4/fib_trie.c:1231
        fib_magic+0x3d8/0x620 net/ipv4/fib_frontend.c:1112
        fib_add_ifaddr+0x40c/0x5e0 net/ipv4/fib_frontend.c:1156
        fib_netdev_event+0x375/0x490 net/ipv4/fib_frontend.c:1494
        notifier_call_chain+0x1a5/0x3f0 kernel/notifier.c:85
        __dev_notify_flags+0x207/0x400
        dev_change_flags+0xf0/0x1a0 net/core/dev.c:9045
        do_setlink+0xc90/0x4210 net/core/rtnetlink.c:3109
        rtnl_changelink net/core/rtnetlink.c:3723 [inline]
        __rtnl_newlink net/core/rtnetlink.c:3875 [inline]
        rtnl_newlink+0x1bb6/0x2210 net/core/rtnetlink.c:4012
    
       Memory state around the buggy address:
        ffff888011838f00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
        ffff888011838f80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
       >ffff888011839000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                      ^
        ffff888011839080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
        ffff888011839100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
       ==================================================================
    
    Reported-by: [email protected]
    Link: https://lore.kernel.org/linux-btrfs/[email protected]/
    Reported-by: Dmitry Vyukov <[email protected]>
    Link: https://lore.kernel.org/linux-btrfs/CACT4Y+ZFBdo7pT8L2AzM=vegZwjp-wNkVJZQf0Ta3vZqtExaSw@mail.gmail.com/
    Fixes: 871383be592b ("btrfs: add missing unlocks to transaction abort paths")
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: output the reason for open_ctree() failure [+ + +]
Author: Qu Wenruo <[email protected]>
Date:   Tue Dec 10 15:23:06 2024 +1030

    btrfs: output the reason for open_ctree() failure
    
    commit d0f038104fa37380e2a725e669508e43d0c503e9 upstream.
    
    There is a recent ML report that mounting a large fs backed by hardware
    RAID56 controller (with one device missing) took too much time, and
    systemd seems to kill the mount attempt.
    
    In that case, the only error message is:
    
      BTRFS error (device sdj): open_ctree failed
    
    There is no reason on why the failure happened, making it very hard to
    understand the reason.
    
    At least output the error number (in the particular case it should be
    -EINTR) to provide some clue.
    
    Link: https://lore.kernel.org/linux-btrfs/[email protected]/
    Reported-by: Christoph Anton Mitterer <[email protected]>
    Cc: [email protected]
    Reviewed-by: Filipe Manana <[email protected]>
    Signed-off-by: Qu Wenruo <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
cachefiles: Fix NULL pointer dereference in object->file [+ + +]
Author: Zizhi Wo <[email protected]>
Date:   Thu Nov 7 19:06:48 2024 +0800

    cachefiles: Fix NULL pointer dereference in object->file
    
    commit 31ad74b20227ce6b40910ff78b1c604e42975cf1 upstream.
    
    At present, the object->file has the NULL pointer dereference problem in
    ondemand-mode. The root cause is that the allocated fd and object->file
    lifetime are inconsistent, and the user-space invocation to anon_fd uses
    object->file. Following is the process that triggers the issue:
    
              [write fd]                            [umount]
    cachefiles_ondemand_fd_write_iter
                                           fscache_cookie_state_machine
                                             cachefiles_withdraw_cookie
      if (!file) return -ENOBUFS
                                               cachefiles_clean_up_object
                                                 cachefiles_unmark_inode_in_use
                                                 fput(object->file)
                                                 object->file = NULL
      // file NULL pointer dereference!
      __cachefiles_write(..., file, ...)
    
    Fix this issue by add an additional reference count to the object->file
    before write/llseek, and decrement after it finished.
    
    Fixes: c8383054506c ("cachefiles: notify the user daemon when looking up cookie")
    Signed-off-by: Zizhi Wo <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: David Howells <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Bin Lan <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
can: c_can: fix unbalanced runtime PM disable in error path [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Sun Jan 12 13:41:52 2025 +0100

    can: c_can: fix unbalanced runtime PM disable in error path
    
    commit 257a2cd3eb578ee63d6bf90475dc4f4b16984139 upstream.
    
    Runtime PM is enabled as one of the last steps of probe(), so all
    earlier gotos to "exit_free_device" label were not correct and were
    leading to unbalanced runtime PM disable depth.
    
    Fixes: 6e2fe01dd6f9 ("can: c_can: move runtime PM enable/disable to c_can_platform")
    Cc: [email protected]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Reviewed-by: Vincent Mailhol <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: ctucanfd: handle skb allocation failure [+ + +]
Author: Fedor Pchelkin <[email protected]>
Date:   Tue Jan 14 18:21:38 2025 +0300

    can: ctucanfd: handle skb allocation failure
    
    commit 9bd24927e3eeb85642c7baa3b28be8bea6c2a078 upstream.
    
    If skb allocation fails, the pointer to struct can_frame is NULL. This
    is actually handled everywhere inside ctucan_err_interrupt() except for
    the only place.
    
    Add the missed NULL check.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE static
    analysis tool.
    
    Fixes: 2dcb8e8782d8 ("can: ctucanfd: add support for CTU CAN FD open-source IP core - bus independent part.")
    Cc: [email protected]
    Signed-off-by: Fedor Pchelkin <[email protected]>
    Acked-by: Pavel Pisa <[email protected]>
    Reviewed-by: Vincent Mailhol <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: ems_pci: move ASIX AX99100 ids to pci_ids.h [+ + +]
Author: Jiaqing Zhao <[email protected]>
Date:   Mon Jul 24 08:39:31 2023 +0000

    can: ems_pci: move ASIX AX99100 ids to pci_ids.h
    
    commit 3029ad91335353a70feb42acd24d580d70ab258b upstream.
    
    Move PCI Vendor and Device ID of ASIX AX99100 PCIe to Multi I/O
    Controller to pci_ids.h for its serial and parallel port driver
    support in subsequent patches.
    
    Signed-off-by: Jiaqing Zhao <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Acked-by: Bjorn Helgaas <[email protected]>
    Acked-by: Marc Kleine-Budde <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [Moeko: Drop changes in drivers/net/can/sja1000/ems_pci.c]
    Signed-off-by: Tomita Moeko <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: j1939: j1939_sk_send_loop(): fix unable to send messages with data length zero [+ + +]
Author: Alexander Hölzl <[email protected]>
Date:   Wed Feb 5 18:46:51 2025 +0100

    can: j1939: j1939_sk_send_loop(): fix unable to send messages with data length zero
    
    commit 44de577e61ed239db09f0da9d436866bef9b77dd upstream.
    
    The J1939 standard requires the transmission of messages of length 0.
    
    For example proprietary messages are specified with a data length of 0
    to 1785. The transmission of such messages is not possible. Sending
    results in no error being returned but no corresponding can frame
    being generated.
    
    Enable the transmission of zero length J1939 messages. In order to
    facilitate this two changes are necessary:
    
    1) If the transmission of a new message is requested from user space
    the message is segmented in j1939_sk_send_loop(). Let the segmentation
    take into account zero length messages, do not terminate immediately,
    queue the corresponding skb.
    
    2) j1939_session_skb_get_by_offset() selects the next skb to transmit
    for a session. Take into account that there might be zero length skbs
    in the queue.
    
    Signed-off-by: Alexander Hölzl <[email protected]>
    Acked-by: Oleksij Rempel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
    Cc: [email protected]
    [mkl: commit message rephrased]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
cgroup: fix race between fork and cgroup.kill [+ + +]
Author: Shakeel Butt <[email protected]>
Date:   Thu Jan 30 16:05:42 2025 -0800

    cgroup: fix race between fork and cgroup.kill
    
    commit b69bb476dee99d564d65d418e9a20acca6f32c3f upstream.
    
    Tejun reported the following race between fork() and cgroup.kill at [1].
    
    Tejun:
      I was looking at cgroup.kill implementation and wondering whether there
      could be a race window. So, __cgroup_kill() does the following:
    
       k1. Set CGRP_KILL.
       k2. Iterate tasks and deliver SIGKILL.
       k3. Clear CGRP_KILL.
    
      The copy_process() does the following:
    
       c1. Copy a bunch of stuff.
       c2. Grab siglock.
       c3. Check fatal_signal_pending().
       c4. Commit to forking.
       c5. Release siglock.
       c6. Call cgroup_post_fork() which puts the task on the css_set and tests
           CGRP_KILL.
    
      The intention seems to be that either a forking task gets SIGKILL and
      terminates on c3 or it sees CGRP_KILL on c6 and kills the child. However, I
      don't see what guarantees that k3 can't happen before c6. ie. After a
      forking task passes c5, k2 can take place and then before the forking task
      reaches c6, k3 can happen. Then, nobody would send SIGKILL to the child.
      What am I missing?
    
    This is indeed a race. One way to fix this race is by taking
    cgroup_threadgroup_rwsem in write mode in __cgroup_kill() as the fork()
    side takes cgroup_threadgroup_rwsem in read mode from cgroup_can_fork()
    to cgroup_post_fork(). However that would be heavy handed as this adds
    one more potential stall scenario for cgroup.kill which is usually
    called under extreme situation like memory pressure.
    
    To fix this race, let's maintain a sequence number per cgroup which gets
    incremented on __cgroup_kill() call. On the fork() side, the
    cgroup_can_fork() will cache the sequence number locally and recheck it
    against the cgroup's sequence number at cgroup_post_fork() site. If the
    sequence numbers mismatch, it means __cgroup_kill() can been called and
    we should send SIGKILL to the newly created task.
    
    Reported-by: Tejun Heo <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/ [1]
    Fixes: 661ee6280931 ("cgroup: introduce cgroup.kill")
    Cc: [email protected] # v5.14+
    Signed-off-by: Shakeel Butt <[email protected]>
    Reviewed-by: Michal Koutný <[email protected]>
    Signed-off-by: Tejun Heo <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

cgroup: Remove steal time from usage_usec [+ + +]
Author: Muhammad Adeel <[email protected]>
Date:   Fri Feb 7 14:24:32 2025 +0000

    cgroup: Remove steal time from usage_usec
    
    [ Upstream commit db5fd3cf8bf41b84b577b8ad5234ea95f327c9be ]
    
    The CPU usage time is the time when user, system or both are using the CPU.
    Steal time is the time when CPU is waiting to be run by the Hypervisor. It
    should not be added to the CPU usage time, hence removing it from the
    usage_usec entry.
    
    Fixes: 936f2a70f2077 ("cgroup: add cpu.stat file to root cgroup")
    Acked-by: Axel Busch <[email protected]>
    Acked-by: Michal Koutný <[email protected]>
    Signed-off-by: Muhammad Adeel <[email protected]>
    Signed-off-by: Tejun Heo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
clk: analogbits: Fix incorrect calculation of vco rate delta [+ + +]
Author: Bo Gan <[email protected]>
Date:   Thu Aug 29 23:16:39 2024 -0700

    clk: analogbits: Fix incorrect calculation of vco rate delta
    
    [ Upstream commit d7f12857f095ef38523399d47e68787b357232f6 ]
    
    In wrpll_configure_for_rate() we try to determine the best PLL
    configuration for a target rate. However, in the loop where we try
    values of R, we should compare the derived `vco` with `target_vco_rate`.
    However, we were in fact comparing it with `target_rate`, which is
    actually after Q shift. This is incorrect, and sometimes can result in
    suboptimal clock rates. Fix it.
    
    Fixes: 7b9487a9a5c4 ("clk: analogbits: add Wide-Range PLL library")
    Signed-off-by: Bo Gan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Stephen Boyd <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: imx8mp: Fix clkout1/2 support [+ + +]
Author: Marek Vasut <[email protected]>
Date:   Tue Nov 12 02:36:54 2024 +0100

    clk: imx8mp: Fix clkout1/2 support
    
    [ Upstream commit a9b7c84d22fb1687d63ca2a386773015cf59436b ]
    
    The CLKOUTn may be fed from PLL1/2/3, but the PLL1/2/3 has to be enabled
    first by setting PLL_CLKE bit 11 in CCM_ANALOG_SYS_PLLn_GEN_CTRL register.
    The CCM_ANALOG_SYS_PLLn_GEN_CTRL bit 11 is modeled by plln_out clock. Fix
    the clock tree and place the clkout1/2 under plln_sel instead of plain plln
    to let the clock subsystem correctly control the bit 11 and enable the PLL
    in case the CLKOUTn is supplied by PLL1/2/3.
    
    Fixes: 43896f56b59e ("clk: imx8mp: add clkout1/2 support")
    Signed-off-by: Marek Vasut <[email protected]>
    Reviewed-by: Peng Fan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Abel Vesa <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: clk-alpha-pll: fix alpha mode configuration [+ + +]
Author: Gabor Juhos <[email protected]>
Date:   Mon Oct 21 19:32:48 2024 +0200

    clk: qcom: clk-alpha-pll: fix alpha mode configuration
    
    commit 33f1722eb86e45320a3dd7b3d42f6593a1d595c2 upstream.
    
    Commit c45ae598fc16 ("clk: qcom: support for alpha mode configuration")
    added support for configuring alpha mode, but it seems that the feature
    was never working in practice.
    
    The value of the alpha_{en,mode}_mask members of the configuration gets
    added to the value parameter passed to the regmap_update_bits() function,
    however the same values are not getting applied to the bitmask. As the
    result, the respective bits in the USER_CTL register are never modifed
    which leads to improper configuration of several PLLs.
    
    The following table shows the PLL configurations where the 'alpha_en_mask'
    member is set and which are passed as a parameter for the
    clk_alpha_pll_configure() function. In the table the 'expected rate' column
    shows the rate the PLL should run at with the given configuration, and
    the 'real rate' column shows the rate the PLL runs at actually. The real
    rates has been verified on hardwareOn IPQ* platforms, on other platforms,
    those are computed values only.
    
          file                 pll         expected rate   real rate
      dispcc-qcm2290.c     disp_cc_pll0      768.0 MHz     768.0 MHz
      dispcc-sm6115.c      disp_cc_pll0      768.0 MHz     768.0 MHz
      gcc-ipq5018.c        ubi32_pll        1000.0 MHz !=  984.0 MHz
      gcc-ipq6018.c        nss_crypto_pll   1200.0 MHz    1200.0 MHz
      gcc-ipq6018.c        ubi32_pll        1497.6 MHz != 1488.0 MHz
      gcc-ipq8074.c        nss_crypto_pll   1200.0 MHz != 1190.4 MHz
      gcc-qcm2290.c        gpll11            532.0 MHz !=  518.4 MHz
      gcc-qcm2290.c        gpll8             533.2 MHz !=  518.4 MHz
      gcc-qcs404.c         gpll3             921.6 MHz     921.6 MHz
      gcc-sm6115.c         gpll11            600.0 MHz !=  595.2 MHz
      gcc-sm6115.c         gpll8             800.0 MHz !=  787.2 MHz
      gpucc-sdm660.c       gpu_cc_pll0       800.0 MHz !=  787.2 MHz
      gpucc-sdm660.c       gpu_cc_pll1       740.0 MHz !=  729.6 MHz
      gpucc-sm6115.c       gpu_cc_pll0      1200.0 MHz != 1190.4 MHz
      gpucc-sm6115.c       gpu_cc_pll1       640.0 MHz !=  633.6 MHz
      gpucc-sm6125.c       gpu_pll0         1020.0 MHz != 1017.6 MHz
      gpucc-sm6125.c       gpu_pll1          930.0 MHz !=  921.6 MHz
      mmcc-sdm660.c        mmpll8            930.0 MHz !=  921.6 MHz
      mmcc-sdm660.c        mmpll5            825.0 MHz !=  806.4 MHz
    
    As it can be seen from the above, there are several PLLs which are
    configured incorrectly.
    
    Change the code to apply both 'alpha_en_mask' and 'alpha_mode_mask'
    values to the bitmask in order to configure the alpha mode correctly.
    
    Applying the 'alpha_en_mask' fixes the initial rate of the PLLs showed
    in the table above. Since the 'alpha_mode_mask' is not used by any driver
    currently, that part of the change causes no functional changes.
    
    Cc: [email protected]
    Fixes: c45ae598fc16 ("clk: qcom: support for alpha mode configuration")
    Signed-off-by: Gabor Juhos <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Tested-by: Gabor Juhos <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

clk: qcom: clk-rpmh: prevent integer overflow in recalc_rate [+ + +]
Author: Anastasia Belova <[email protected]>
Date:   Tue Dec 3 11:42:31 2024 +0300

    clk: qcom: clk-rpmh: prevent integer overflow in recalc_rate
    
    commit 89aa5925d201b90a48416784831916ca203658f9 upstream.
    
    aggr_state and unit fields are u32. The result of their
    multiplication may not fit in this type.
    
    Add explicit casting to prevent overflow.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 04053f4d23a4 ("clk: qcom: clk-rpmh: Add IPA clock support")
    Cc: [email protected] # 5.4+
    Signed-off-by: Anastasia Belova <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

clk: qcom: dispcc-sm6350: Add missing parent_map for a clock [+ + +]
Author: Luca Weiss <[email protected]>
Date:   Fri Dec 20 10:03:31 2024 +0100

    clk: qcom: dispcc-sm6350: Add missing parent_map for a clock
    
    commit d4cdb196f182d2fbe336c968228be00d8c3fed05 upstream.
    
    If a clk_rcg2 has a parent, it should also have parent_map defined,
    otherwise we'll get a NULL pointer dereference when calling clk_set_rate
    like the following:
    
      [    3.388105] Call trace:
      [    3.390664]  qcom_find_src_index+0x3c/0x70 (P)
      [    3.395301]  qcom_find_src_index+0x1c/0x70 (L)
      [    3.399934]  _freq_tbl_determine_rate+0x48/0x100
      [    3.404753]  clk_rcg2_determine_rate+0x1c/0x28
      [    3.409387]  clk_core_determine_round_nolock+0x58/0xe4
      [    3.421414]  clk_core_round_rate_nolock+0x48/0xfc
      [    3.432974]  clk_core_round_rate_nolock+0xd0/0xfc
      [    3.444483]  clk_core_set_rate_nolock+0x8c/0x300
      [    3.455886]  clk_set_rate+0x38/0x14c
    
    Add the parent_map property for the clock where it's missing and also
    un-inline the parent_data as well to keep the matching parent_map and
    parent_data together.
    
    Fixes: 837519775f1d ("clk: qcom: Add display clock controller driver for SM6350")
    Cc: [email protected]
    Signed-off-by: Luca Weiss <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

clk: qcom: gcc-mdm9607: Fix cmd_rcgr offset for blsp1_uart6 rcg [+ + +]
Author: Satya Priya Kakitapalli <[email protected]>
Date:   Fri Dec 20 15:20:48 2024 +0530

    clk: qcom: gcc-mdm9607: Fix cmd_rcgr offset for blsp1_uart6 rcg
    
    commit 88d9dca36aac9659446be1e569d8fbe3462b5741 upstream.
    
    Fix cmd_rcgr offset for blsp1_uart6_apps_clk_src on mdm9607 platform.
    
    Fixes: 48b7253264ea ("clk: qcom: Add MDM9607 GCC driver")
    Cc: [email protected]
    Signed-off-by: Satya Priya Kakitapalli <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

clk: qcom: gcc-sdm845: Do not use shared clk_ops for QUPs [+ + +]
Author: Amit Pundir <[email protected]>
Date:   Mon Dec 9 23:19:12 2024 +0530

    clk: qcom: gcc-sdm845: Do not use shared clk_ops for QUPs
    
    [ Upstream commit f760a4bb5e927a133dcd75f7b69ccae2a331e42c ]
    
    Similar to the earlier fixes meant for sm8x50 and x1e platforms,
    we have to stop using the shared clk ops for sdm845 QUPs as well.
    
    As Stephen Boyd pointed out in earlier fixes, there wasn't a problem
    to mark QUP clks shared until we started parking shared RCGs at clk
    registration time in commit 01a0a6cc8cfd ("clk: qcom: Park shared RCGs
    upon registration"). Parking at init is actually harmful to the UART
    when earlycon is used. If the device is pumping out data while the
    frequency changes and we see garbage on the serial console until the
    driver can probe and actually set a proper frequency.
    
    This patch reverts the QUP clk sharing ops part of commit 06391eddb60a
    ("clk: qcom: Add Global Clock controller (GCC) driver for SDM845"), so
    that the QUPs on sdm845 don't get parked during clk registration and
    break UART operations.
    
    Fixes: 01a0a6cc8cfd ("clk: qcom: Park shared RCGs upon registration")
    Signed-off-by: Amit Pundir <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: gcc-sm6350: Add missing parent_map for two clocks [+ + +]
Author: Luca Weiss <[email protected]>
Date:   Fri Dec 20 10:03:30 2024 +0100

    clk: qcom: gcc-sm6350: Add missing parent_map for two clocks
    
    commit 96fe1a7ee477d701cfc98ab9d3c730c35d966861 upstream.
    
    If a clk_rcg2 has a parent, it should also have parent_map defined,
    otherwise we'll get a NULL pointer dereference when calling clk_set_rate
    like the following:
    
      [    3.388105] Call trace:
      [    3.390664]  qcom_find_src_index+0x3c/0x70 (P)
      [    3.395301]  qcom_find_src_index+0x1c/0x70 (L)
      [    3.399934]  _freq_tbl_determine_rate+0x48/0x100
      [    3.404753]  clk_rcg2_determine_rate+0x1c/0x28
      [    3.409387]  clk_core_determine_round_nolock+0x58/0xe4
      [    3.421414]  clk_core_round_rate_nolock+0x48/0xfc
      [    3.432974]  clk_core_round_rate_nolock+0xd0/0xfc
      [    3.444483]  clk_core_set_rate_nolock+0x8c/0x300
      [    3.455886]  clk_set_rate+0x38/0x14c
    
    Add the parent_map property for two clocks where it's missing and also
    un-inline the parent_data as well to keep the matching parent_map and
    parent_data together.
    
    Fixes: 131abae905df ("clk: qcom: Add SM6350 GCC driver")
    Cc: [email protected]
    Signed-off-by: Luca Weiss <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

clk: sunxi-ng: a100: enable MMC clock reparenting [+ + +]
Author: Cody Eksal <[email protected]>
Date:   Fri Nov 8 20:37:37 2024 -0400

    clk: sunxi-ng: a100: enable MMC clock reparenting
    
    commit 16414720045de30945b8d14b7907e0cbf81a4b49 upstream.
    
    While testing the MMC nodes proposed in [1], it was noted that mmc0/1
    would fail to initialize, with "mmc: fatal err update clk timeout" in
    the kernel logs. A closer look at the clock definitions showed that the MMC
    MPs had the "CLK_SET_RATE_NO_REPARENT" flag set. No reason was given for
    adding this flag in the first place, and its original purpose is unknown,
    but it doesn't seem to make sense and results in severe limitations to MMC
    speeds. Thus, remove this flag from the 3 MMC MPs.
    
    [1] https://msgid.link/[email protected]
    
    Fixes: fb038ce4db55 ("clk: sunxi-ng: add support for the Allwinner A100 CCU")
    Cc: [email protected]
    Signed-off-by: Cody Eksal <[email protected]>
    Reviewed-by: Andre Przywara <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
clocksource: Use migrate_disable() to avoid calling get_random_u32() in atomic context [+ + +]
Author: Waiman Long <[email protected]>
Date:   Fri Jan 31 12:33:23 2025 -0500

    clocksource: Use migrate_disable() to avoid calling get_random_u32() in atomic context
    
    [ Upstream commit 6bb05a33337b2c842373857b63de5c9bf1ae2a09 ]
    
    The following bug report happened with a PREEMPT_RT kernel:
    
      BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
      in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 2012, name: kwatchdog
      preempt_count: 1, expected: 0
      RCU nest depth: 0, expected: 0
      get_random_u32+0x4f/0x110
      clocksource_verify_choose_cpus+0xab/0x1a0
      clocksource_verify_percpu.part.0+0x6b/0x330
      clocksource_watchdog_kthread+0x193/0x1a0
    
    It is due to the fact that clocksource_verify_choose_cpus() is invoked with
    preemption disabled.  This function invokes get_random_u32() to obtain
    random numbers for choosing CPUs.  The batched_entropy_32 local lock and/or
    the base_crng.lock spinlock in driver/char/random.c will be acquired during
    the call. In PREEMPT_RT kernel, they are both sleeping locks and so cannot
    be acquired in atomic context.
    
    Fix this problem by using migrate_disable() to allow smp_processor_id() to
    be reliably used without introducing atomic context. preempt_disable() is
    then called after clocksource_verify_choose_cpus() but before the
    clocksource measurement is being run to avoid introducing unexpected
    latency.
    
    Fixes: 7560c02bdffb ("clocksource: Check per-CPU clock synchronization when marked unstable")
    Suggested-by: Sebastian Andrzej Siewior <[email protected]>
    Signed-off-by: Waiman Long <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Paul E. McKenney <[email protected]>
    Reviewed-by: Sebastian Andrzej Siewior <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

clocksource: Use pr_info() for "Checking clocksource synchronization" message [+ + +]
Author: Waiman Long <[email protected]>
Date:   Fri Jan 24 20:54:41 2025 -0500

    clocksource: Use pr_info() for "Checking clocksource synchronization" message
    
    [ Upstream commit 1f566840a82982141f94086061927a90e79440e5 ]
    
    The "Checking clocksource synchronization" message is normally printed
    when clocksource_verify_percpu() is called for a given clocksource if
    both the CLOCK_SOURCE_UNSTABLE and CLOCK_SOURCE_VERIFY_PERCPU flags
    are set.
    
    It is an informational message and so pr_info() is the correct choice.
    
    Signed-off-by: Waiman Long <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Paul E. McKenney <[email protected]>
    Acked-by: John Stultz <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Stable-dep-of: 6bb05a33337b ("clocksource: Use migrate_disable() to avoid calling get_random_u32() in atomic context")
    Signed-off-by: Sasha Levin <[email protected]>

 
cpufreq: ACPI: Fix max-frequency computation [+ + +]
Author: Gautham R. Shenoy <[email protected]>
Date:   Mon Jan 13 10:11:07 2025 +0530

    cpufreq: ACPI: Fix max-frequency computation
    
    [ Upstream commit 0834667545962ef1c5e8684ed32b45d9c574acd3 ]
    
    Commit 3c55e94c0ade ("cpufreq: ACPI: Extend frequency tables to cover
    boost frequencies") introduced an assumption in acpi_cpufreq_cpu_init()
    that the first entry in the P-state table was the nominal frequency.
    This assumption is incorrect. The frequency corresponding to the P0
    P-State need not be the same as the nominal frequency advertised via
    CPPC.
    
    Since the driver is using the CPPC.highest_perf and CPPC.nominal_perf
    to compute the boost-ratio, it makes sense to use CPPC.nominal_freq to
    compute the max-frequency. CPPC.nominal_freq is advertised on
    platforms supporting CPPC revisions 3 or higher.
    
    Hence, fallback to using the first entry in the P-State table only on
    platforms that do not advertise CPPC.nominal_freq.
    
    Fixes: 3c55e94c0ade ("cpufreq: ACPI: Extend frequency tables to cover boost frequencies")
    Tested-by: Dhananjay Ugwekar <[email protected]>
    Signed-off-by: Gautham R. Shenoy <[email protected]>
    Reviewed-by: Mario Limonciello <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Retain reverse X-mas tree ordering of local variable declarations ]
    [ rjw: Subject and changelog edits ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cpufreq: s3c64xx: Fix compilation warning [+ + +]
Author: Viresh Kumar <[email protected]>
Date:   Wed Jan 22 11:36:16 2025 +0530

    cpufreq: s3c64xx: Fix compilation warning
    
    commit 43855ac61483cb914f060851535ea753c094b3e0 upstream.
    
    The driver generates following warning when regulator support isn't
    enabled in the kernel. Fix it.
    
       drivers/cpufreq/s3c64xx-cpufreq.c: In function 's3c64xx_cpufreq_set_target':
    >> drivers/cpufreq/s3c64xx-cpufreq.c:55:22: warning: variable 'old_freq' set but not used [-Wunused-but-set-variable]
          55 |         unsigned int old_freq, new_freq;
             |                      ^~~~~~~~
    >> drivers/cpufreq/s3c64xx-cpufreq.c:54:30: warning: variable 'dvfs' set but not used [-Wunused-but-set-variable]
          54 |         struct s3c64xx_dvfs *dvfs;
             |                              ^~~~
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Cc: 5.4+ <[email protected]> # v5.4+
    Signed-off-by: Viresh Kumar <[email protected]>
    Link: https://patch.msgid.link/236b227e929e5adc04d1e9e7af6845a46c8e9432.1737525916.git.viresh.kumar@linaro.org
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

cpufreq: schedutil: Fix superfluous updates caused by need_freq_update [+ + +]
Author: Sultan Alsawaf (unemployed) <[email protected]>
Date:   Wed Dec 11 17:57:32 2024 -0800

    cpufreq: schedutil: Fix superfluous updates caused by need_freq_update
    
    [ Upstream commit 8e461a1cb43d69d2fc8a97e61916dce571e6bb31 ]
    
    A redundant frequency update is only truly needed when there is a policy
    limits change with a driver that specifies CPUFREQ_NEED_UPDATE_LIMITS.
    
    In spite of that, drivers specifying CPUFREQ_NEED_UPDATE_LIMITS receive a
    frequency update _all the time_, not just for a policy limits change,
    because need_freq_update is never cleared.
    
    Furthermore, ignore_dl_rate_limit()'s usage of need_freq_update also leads
    to a redundant frequency update, regardless of whether or not the driver
    specifies CPUFREQ_NEED_UPDATE_LIMITS, when the next chosen frequency is the
    same as the current one.
    
    Fix the superfluous updates by only honoring CPUFREQ_NEED_UPDATE_LIMITS
    when there's a policy limits change, and clearing need_freq_update when a
    requisite redundant update occurs.
    
    This is neatly achieved by moving up the CPUFREQ_NEED_UPDATE_LIMITS test
    and instead setting need_freq_update to false in sugov_update_next_freq().
    
    Fixes: 600f5badb78c ("cpufreq: schedutil: Don't skip freq update when limits change")
    Signed-off-by: Sultan Alsawaf (unemployed) <[email protected]>
    Reviewed-by: Christian Loehle <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
cpupower: fix TSC MHz calculation [+ + +]
Author: He Rongguang <[email protected]>
Date:   Thu Dec 12 10:14:59 2024 +0800

    cpupower: fix TSC MHz calculation
    
    [ Upstream commit 9d6c0e58514f8b57cd9c2c755e41623d6a966025 ]
    
    Commit 'cpupower: Make TSC read per CPU for Mperf monitor' (c2adb1877b7)
    changes TSC counter reads per cpu, but left time diff global (from start
    of all cpus to end of all cpus), thus diff(time) is too large for a
    cpu's tsc counting, resulting in far less than acutal TSC_Mhz and thus
    `cpupower monitor` showing far less than actual cpu realtime frequency.
    
    /proc/cpuinfo shows frequency:
    cat /proc/cpuinfo | egrep -e 'processor' -e 'MHz'
    ...
    processor : 171
    cpu MHz   : 4108.498
    ...
    
    before fix (System 100% busy):
        | Mperf              || Idle_Stats
     CPU| C0   | Cx   | Freq  || POLL | C1   | C2
     171|  0.77| 99.23|  2279||  0.00|  0.00|  0.00
    
    after fix (System 100% busy):
        | Mperf              || Idle_Stats
     CPU| C0   | Cx   | Freq  || POLL | C1   | C2
     171|  0.46| 99.54|  4095||  0.00|  0.00|  0.00
    
    Fixes: c2adb1877b76 ("cpupower: Make TSC read per CPU for Mperf monitor")
    Signed-off-by: He Rongguang <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
crypto: hisilicon/sec2 - fix for aead icv error [+ + +]
Author: Wenkai Lin <[email protected]>
Date:   Fri Dec 13 17:13:34 2024 +0800

    crypto: hisilicon/sec2 - fix for aead icv error
    
    [ Upstream commit fd337f852b2677b53d0859a47b58e6e6bd189f30 ]
    
    When the AEAD algorithm is used for encryption or decryption,
    the input authentication length varies, the hardware needs to
    obtain the input length to pass the integrity check verification.
    Currently, the driver uses a fixed authentication length,which
    causes decryption failure, so the length configuration is modified.
    In addition, the step of setting the auth length is unnecessary,
    so it was deleted from the setkey function.
    
    Fixes: 2f072d75d1ab ("crypto: hisilicon - Add aead support on SEC2")
    Signed-off-by: Wenkai Lin <[email protected]>
    Signed-off-by: Chenghai Huang <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: hisilicon/sec2 - fix for aead invalid authsize [+ + +]
Author: Wenkai Lin <[email protected]>
Date:   Fri Dec 13 17:13:35 2024 +0800

    crypto: hisilicon/sec2 - fix for aead invalid authsize
    
    [ Upstream commit a5a9d959936499a3106a1bf3b9070875d0d3dec4 ]
    
    When the digest alg is HMAC-SHAx or another, the authsize may be less
    than 4 bytes and mac_len of the BD is set to zero, the hardware considers
    it a BD configuration error and reports a ras error, so the sec driver
    needs to switch to software calculation in this case, this patch add a
    check for it and remove unnecessary check that has been done by crypto.
    
    Fixes: 2f072d75d1ab ("crypto: hisilicon - Add aead support on SEC2")
    Signed-off-by: Wenkai Lin <[email protected]>
    Signed-off-by: Chenghai Huang <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: hisilicon/sec2 - optimize the error return process [+ + +]
Author: Chenghai Huang <[email protected]>
Date:   Sat Dec 9 15:01:35 2023 +0800

    crypto: hisilicon/sec2 - optimize the error return process
    
    [ Upstream commit 1bed82257b1881b689ee41f14ecb4c20a273cac0 ]
    
    Add the printf of an error message and optimized the handling
    process of ret.
    
    Signed-off-by: Chenghai Huang <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Stable-dep-of: fd337f852b26 ("crypto: hisilicon/sec2 - fix for aead icv error")
    Signed-off-by: Sasha Levin <[email protected]>

crypto: ixp4xx - fix OF node reference leaks in init_ixp_crypto() [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Sun Dec 15 16:27:20 2024 +0900

    crypto: ixp4xx - fix OF node reference leaks in init_ixp_crypto()
    
    [ Upstream commit 472a989029aac2b78ef2f0b18b27c568bf76d104 ]
    
    init_ixp_crypto() calls of_parse_phandle_with_fixed_args() multiple
    times, but does not release all the obtained refcounts. Fix it by adding
    of_node_put() calls.
    
    This bug was found by an experimental static analysis tool that I am
    developing.
    
    Fixes: 76f24b4f46b8 ("crypto: ixp4xx - Add device tree support")
    Signed-off-by: Joe Hattori <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: qce - fix goto jump in error path [+ + +]
Author: Bartosz Golaszewski <[email protected]>
Date:   Tue Dec 3 10:19:29 2024 +0100

    crypto: qce - fix goto jump in error path
    
    commit 5278275c1758a38199b43530adfc50098f4b41c7 upstream.
    
    If qce_check_version() fails, we should jump to err_dma as we already
    called qce_dma_request() a couple lines before.
    
    Cc: [email protected]
    Fixes: ec8f5d8f6f76 ("crypto: qce - Qualcomm crypto engine driver")
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

crypto: qce - fix priority to be less than ARMv8 CE [+ + +]
Author: Eric Biggers <[email protected]>
Date:   Tue Dec 3 10:05:53 2024 -0800

    crypto: qce - fix priority to be less than ARMv8 CE
    
    commit 49b9258b05b97c6464e1964b6a2fddb3ddb65d17 upstream.
    
    As QCE is an order of magnitude slower than the ARMv8 Crypto Extensions
    on the CPU, and is also less well tested, give it a lower priority.
    Previously the QCE SHA algorithms had higher priority than the ARMv8 CE
    equivalents, and the ciphers such as AES-XTS had the same priority which
    meant the QCE versions were chosen if they happened to be loaded later.
    
    Fixes: ec8f5d8f6f76 ("crypto: qce - Qualcomm crypto engine driver")
    Cc: [email protected]
    Cc: Bartosz Golaszewski <[email protected]>
    Cc: Neil Armstrong <[email protected]>
    Cc: Thara Gopinath <[email protected]>
    Signed-off-by: Eric Biggers <[email protected]>
    Reviewed-by: Bartosz Golaszewski <[email protected]>
    Reviewed-by: Ard Biesheuvel <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

crypto: qce - unregister previously registered algos in error path [+ + +]
Author: Bartosz Golaszewski <[email protected]>
Date:   Tue Dec 3 10:19:30 2024 +0100

    crypto: qce - unregister previously registered algos in error path
    
    commit e80cf84b608725303113d6fe98bb727bf7b7a40d upstream.
    
    If we encounter an error when registering alorithms with the crypto
    framework, we just bail out and don't unregister the ones we
    successfully registered in prior iterations of the loop.
    
    Add code that goes back over the algos and unregisters them before
    returning an error from qce_register_algs().
    
    Cc: [email protected]
    Fixes: ec8f5d8f6f76 ("crypto: qce - Qualcomm crypto engine driver")
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
dm-crypt: don't update io->sector after kcryptd_crypt_write_io_submit() [+ + +]
Author: Hou Tao <[email protected]>
Date:   Mon Jan 20 16:29:49 2025 +0800

    dm-crypt: don't update io->sector after kcryptd_crypt_write_io_submit()
    
    commit 9fdbbdbbc92b1474a87b89f8b964892a63734492 upstream.
    
    The updates of io->sector are the leftovers when dm-crypt allocated
    pages for partial write request. However, since commit cf2f1abfbd0db
    ("dm crypt: don't allocate pages for a partial request"), there is no
    partial request anymore.
    
    After the introduction of write request rb-tree, the updates of
    io->sectors may interfere the insertion procedure, because ->sectors of
    these write requests which have already been added in the rb-tree may be
    changed during the insertion of new write request.
    
    Fix it by removing these buggy updates of io->sectors. Considering these
    updates only effect the write request rb-tree, the commit which
    introduces the write request rb-tree is used as the fix tag.
    
    Fixes: b3c5fd305249 ("dm crypt: sort writes")
    Cc: [email protected]
    Signed-off-by: Hou Tao <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dm-crypt: track tag_offset in convert_context [+ + +]
Author: Hou Tao <[email protected]>
Date:   Mon Jan 20 16:29:51 2025 +0800

    dm-crypt: track tag_offset in convert_context
    
    commit 8b8f8037765757861f899ed3a2bfb34525b5c065 upstream.
    
    dm-crypt uses tag_offset to index the integrity metadata for each crypt
    sector. When the initial crypt_convert() returns BLK_STS_DEV_RESOURCE,
    dm-crypt will try to continue the crypt/decrypt procedure in a kworker.
    However, it resets tag_offset as zero instead of using the tag_offset
    related with current sector. It may return unexpected data when using
    random IV or return unexpected integrity related error.
    
    Fix the problem by tracking tag_offset in per-IO convert_context.
    Therefore, when the crypt/decrypt procedure continues in a kworker, it
    could use the next tag_offset saved in convert_context.
    
    Fixes: 8abec36d1274 ("dm crypt: do not wait for backlogged crypto request completion in softirq")
    Cc: [email protected]
    Signed-off-by: Hou Tao <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
dmaengine: ti: edma: fix OF node reference leaks in edma_driver [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Thu Dec 19 11:05:07 2024 +0900

    dmaengine: ti: edma: fix OF node reference leaks in edma_driver
    
    [ Upstream commit e883c64778e5a9905fce955681f8ee38c7197e0f ]
    
    The .probe() of edma_driver calls of_parse_phandle_with_fixed_args() but
    does not release the obtained OF nodes. Thus add a of_node_put() call.
    
    This bug was found by an experimental verification tool that I am
    developing.
    
    Fixes: 1be5336bc7ba ("dmaengine: edma: New device tree binding")
    Signed-off-by: Joe Hattori <[email protected]>
    Reviewed-by: Dan Carpenter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drivers/card_reader/rtsx_usb: Restore interrupt based detection [+ + +]
Author: Sean Rhodes <[email protected]>
Date:   Tue Nov 19 08:58:15 2024 +0000

    drivers/card_reader/rtsx_usb: Restore interrupt based detection
    
    commit 235b630eda072d7e7b102ab346d6b8a2c028a772 upstream.
    
    This commit reintroduces interrupt-based card detection previously
    used in the rts5139 driver. This functionality was removed in commit
    00d8521dcd23 ("staging: remove rts5139 driver code").
    
    Reintroducing this mechanism fixes presence detection for certain card
    readers, which with the current driver, will taken approximately 20
    seconds to enter S3 as `mmc_rescan` has to be frozen.
    
    Fixes: 00d8521dcd23 ("staging: remove rts5139 driver code")
    Cc: [email protected]
    Cc: Arnd Bergmann <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sean Rhodes <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/amd/display: Add NULL pointer check for kzalloc [+ + +]
Author: Hersen Wu <[email protected]>
Date:   Mon Apr 22 12:27:34 2024 -0400

    drm/amd/display: Add NULL pointer check for kzalloc
    
    commit 8e65a1b7118acf6af96449e1e66b7adbc9396912 upstream.
    
    [Why & How]
    Check return pointer of kzalloc before using it.
    
    Reviewed-by: Alex Hung <[email protected]>
    Acked-by: Wayne Lin <[email protected]>
    Signed-off-by: Hersen Wu <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Wenshan Lan <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/amd/display: fix double free issue during amdgpu module unload [+ + +]
Author: Tim Huang <[email protected]>
Date:   Thu Aug 15 18:45:22 2024 -0400

    drm/amd/display: fix double free issue during amdgpu module unload
    
    commit 20b5a8f9f4670a8503aa9fa95ca632e77c6bf55d upstream.
    
    Flexible endpoints use DIGs from available inflexible endpoints,
    so only the encoders of inflexible links need to be freed.
    Otherwise, a double free issue may occur when unloading the
    amdgpu module.
    
    [  279.190523] RIP: 0010:__slab_free+0x152/0x2f0
    [  279.190577] Call Trace:
    [  279.190580]  <TASK>
    [  279.190582]  ? show_regs+0x69/0x80
    [  279.190590]  ? die+0x3b/0x90
    [  279.190595]  ? do_trap+0xc8/0xe0
    [  279.190601]  ? do_error_trap+0x73/0xa0
    [  279.190605]  ? __slab_free+0x152/0x2f0
    [  279.190609]  ? exc_invalid_op+0x56/0x70
    [  279.190616]  ? __slab_free+0x152/0x2f0
    [  279.190642]  ? asm_exc_invalid_op+0x1f/0x30
    [  279.190648]  ? dcn10_link_encoder_destroy+0x19/0x30 [amdgpu]
    [  279.191096]  ? __slab_free+0x152/0x2f0
    [  279.191102]  ? dcn10_link_encoder_destroy+0x19/0x30 [amdgpu]
    [  279.191469]  kfree+0x260/0x2b0
    [  279.191474]  dcn10_link_encoder_destroy+0x19/0x30 [amdgpu]
    [  279.191821]  link_destroy+0xd7/0x130 [amdgpu]
    [  279.192248]  dc_destruct+0x90/0x270 [amdgpu]
    [  279.192666]  dc_destroy+0x19/0x40 [amdgpu]
    [  279.193020]  amdgpu_dm_fini+0x16e/0x200 [amdgpu]
    [  279.193432]  dm_hw_fini+0x26/0x40 [amdgpu]
    [  279.193795]  amdgpu_device_fini_hw+0x24c/0x400 [amdgpu]
    [  279.194108]  amdgpu_driver_unload_kms+0x4f/0x70 [amdgpu]
    [  279.194436]  amdgpu_pci_remove+0x40/0x80 [amdgpu]
    [  279.194632]  pci_device_remove+0x3a/0xa0
    [  279.194638]  device_remove+0x40/0x70
    [  279.194642]  device_release_driver_internal+0x1ad/0x210
    [  279.194647]  driver_detach+0x4e/0xa0
    [  279.194650]  bus_remove_driver+0x6f/0xf0
    [  279.194653]  driver_unregister+0x33/0x60
    [  279.194657]  pci_unregister_driver+0x44/0x90
    [  279.194662]  amdgpu_exit+0x19/0x1f0 [amdgpu]
    [  279.194939]  __do_sys_delete_module.isra.0+0x198/0x2f0
    [  279.194946]  __x64_sys_delete_module+0x16/0x20
    [  279.194950]  do_syscall_64+0x58/0x120
    [  279.194954]  entry_SYSCALL_64_after_hwframe+0x6e/0x76
    [  279.194980]  </TASK>
    
    Reviewed-by: Rodrigo Siqueira <[email protected]>
    Signed-off-by: Tim Huang <[email protected]>
    Reviewed-by: Roman Li <[email protected]>
    Signed-off-by: Roman Li <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/amd/display: Fix Mode Cutoff in DSC Passthrough to DP2.1 Monitor [+ + +]
Author: Fangzhi Zuo <[email protected]>
Date:   Mon Dec 2 13:30:37 2024 -0500

    drm/amd/display: Fix Mode Cutoff in DSC Passthrough to DP2.1 Monitor
    
    [ Upstream commit e56ad45e991128bf4db160b75a1d9f647a341d8f ]
    
    Source --> DP2.1 MST hub --> DP1.4/2.1 monitor
    
    When change from DP1.4 to DP2.1 from monitor manual, modes higher than
    4k120 are all cutoff by mode validation. Switch back to DP1.4 gets all
    the modes up to 4k240 available to be enabled by dsc passthrough.
    
    [why]
    Compared to DP1.4 link from hub to monitor, DP2.1 link has larger
    full_pbn value that causes overflow in the process of doing conversion
    from pbn to kbps.
    
    [how]
    Change the data type accordingly to fit into the data limit during
    conversion calculation.
    
    Tested-by: Daniel Wheeler <[email protected]>
    Reviewed-by: Wayne Lin <[email protected]>
    Signed-off-by: Fangzhi Zuo <[email protected]>
    Signed-off-by: Rodrigo Siqueira <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/pm: Mark MM activity as unsupported [+ + +]
Author: Lijo Lazar <[email protected]>
Date:   Wed Jan 22 09:12:41 2025 +0530

    drm/amd/pm: Mark MM activity as unsupported
    
    commit 819bf6662b93a5a8b0c396d2c7e7fab6264c9808 upstream.
    
    Aldebaran doesn't support querying MM activity percentage. Keep the
    field as 0xFFs to mark it as unsupported.
    
    Signed-off-by: Lijo Lazar <[email protected]>
    Reviewed-by: Hawking Zhang <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/amdgpu: avoid buffer overflow attach in smu_sys_set_pp_table() [+ + +]
Author: Jiang Liu <[email protected]>
Date:   Fri Feb 7 14:44:14 2025 +0800

    drm/amdgpu: avoid buffer overflow attach in smu_sys_set_pp_table()
    
    commit 1abb2648698bf10783d2236a6b4a7ca5e8021699 upstream.
    
    It malicious user provides a small pptable through sysfs and then
    a bigger pptable, it may cause buffer overflow attack in function
    smu_sys_set_pp_table().
    
    Reviewed-by: Lijo Lazar <[email protected]>
    Signed-off-by: Jiang Liu <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/amdgpu: Fix potential NULL pointer dereference in atomctrl_get_smc_sclk_range_table [+ + +]
Author: Ivan Stepchenko <[email protected]>
Date:   Mon Dec 2 11:00:43 2024 +0300

    drm/amdgpu: Fix potential NULL pointer dereference in atomctrl_get_smc_sclk_range_table
    
    [ Upstream commit 357445e28ff004d7f10967aa93ddb4bffa5c3688 ]
    
    The function atomctrl_get_smc_sclk_range_table() does not check the return
    value of smu_atom_get_data_table(). If smu_atom_get_data_table() fails to
    retrieve SMU_Info table, it returns NULL which is later dereferenced.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    In practice this should never happen as this code only gets called
    on polaris chips and the vbios data table will always be present on
    those chips.
    
    Fixes: a23eefa2f461 ("drm/amd/powerplay: enable dpm for baffin.")
    Signed-off-by: Ivan Stepchenko <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/bridge: it6505: Change definition MAX_HDCP_DOWN_STREAM_COUNT [+ + +]
Author: Hermes Wu <[email protected]>
Date:   Mon Dec 30 18:51:22 2024 +0800

    drm/bridge: it6505: Change definition MAX_HDCP_DOWN_STREAM_COUNT
    
    [ Upstream commit 85597bc0d70c287ba41f17d14d3d857a38a3d727 ]
    
    A HDCP source device shall support max downstream to 127 devices.
    Change definition MAX_HDCP_DOWN_STREAM_COUNT to 127
    
    KSVs shall save for DRM blocked devices check.
    This results in struct it6505 growth by ~0.5 KiB.
    
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Hermes Wu <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241230-v7-upstream-v7-4-e0fdd4844703@ite.corp-partner.google.com
    Signed-off-by: Sasha Levin <[email protected]>

drm/bridge: it6505: Change definition of AUX_FIFO_MAX_SIZE [+ + +]
Author: Hermes Wu <[email protected]>
Date:   Mon Dec 30 18:51:19 2024 +0800

    drm/bridge: it6505: Change definition of AUX_FIFO_MAX_SIZE
    
    [ Upstream commit c14870218c14532b0f0a7805b96a4d3c92d06fb2 ]
    
    The hardware AUX FIFO is 16 bytes
    Change definition of AUX_FIFO_MAX_SIZE to 16
    
    Fixes: b5c84a9edcd4 ("drm/bridge: add it6505 driver")
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Hermes Wu <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241230-v7-upstream-v7-1-e0fdd4844703@ite.corp-partner.google.com
    Signed-off-by: Sasha Levin <[email protected]>

drm/bridge: it6505: fix HDCP Bstatus check [+ + +]
Author: Hermes Wu <[email protected]>
Date:   Mon Dec 30 18:51:23 2024 +0800

    drm/bridge: it6505: fix HDCP Bstatus check
    
    [ Upstream commit 0fd2ff47d8c207fa3173661de04bb9e8201c0ad2 ]
    
    When HDCP is activated,
    a DisplayPort source receiving CP_IRQ from the sink
    shall check Bstatus from DPCD and process the corresponding value
    
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Hermes Wu <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241230-v7-upstream-v7-5-e0fdd4844703@ite.corp-partner.google.com
    Signed-off-by: Sasha Levin <[email protected]>

drm/bridge: it6505: fix HDCP CTS compare V matching [+ + +]
Author: Hermes Wu <[email protected]>
Date:   Mon Dec 30 18:51:26 2024 +0800

    drm/bridge: it6505: fix HDCP CTS compare V matching
    
    [ Upstream commit 0989c02c7a5c887c70afeae80c64d0291624e1a7 ]
    
    When HDCP negotiation with a repeater device.
    Checking SHA V' matching must retry 3 times before restarting HDCP.
    
    Signed-off-by: Hermes Wu <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241230-v7-upstream-v7-8-e0fdd4844703@ite.corp-partner.google.com
    Signed-off-by: Sasha Levin <[email protected]>

drm/bridge: it6505: fix HDCP encryption when R0 ready [+ + +]
Author: Hermes Wu <[email protected]>
Date:   Mon Dec 30 18:51:24 2024 +0800

    drm/bridge: it6505: fix HDCP encryption when R0 ready
    
    [ Upstream commit 8c01b0bae2f9e58f2fee0e811cb90d8331986554 ]
    
    When starting HDCP authentication, HDCP encryption should be enabled
    when R0'is checked.
    
    Change encryption enables time at R0' ready.
    The hardware HDCP engine trigger is changed and the repeater KSV fails
    will restart HDCP.
    
    Signed-off-by: Hermes Wu <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241230-v7-upstream-v7-6-e0fdd4844703@ite.corp-partner.google.com
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/etnaviv: Fix page property being used for non writecombine buffers [+ + +]
Author: Sui Jingfeng <[email protected]>
Date:   Mon Nov 4 08:41:56 2024 +0800

    drm/etnaviv: Fix page property being used for non writecombine buffers
    
    [ Upstream commit 834f304192834d6f0941954f3277ae0ba11a9a86 ]
    
    In the etnaviv_gem_vmap_impl() function, the driver vmap whatever buffers
    with write combine(WC) page property, this is incorrect. Cached buffers
    should be mapped with the cached page property and uncached buffers should
    be mapped with the uncached page property.
    
    Fixes: a0a5ab3e99b8 ("drm/etnaviv: call correct function when trying to vmap a DMABUF")
    Signed-off-by: Sui Jingfeng <[email protected]>
    Signed-off-by: Lucas Stach <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/i915/guc: Debug print LRC state entries only if the context is pinned [+ + +]
Author: Daniele Ceraolo Spurio <[email protected]>
Date:   Tue Jan 14 16:13:34 2025 -0800

    drm/i915/guc: Debug print LRC state entries only if the context is pinned
    
    commit 57965269896313e1629a518d3971ad55f599b792 upstream.
    
    After the context is unpinned the backing memory can also be unpinned,
    so any accesses via the lrc_reg_state pointer can end up in unmapped
    memory. To avoid that, make sure to only access that memory if the
    context is pinned when printing its info.
    
    v2: fix newline alignment
    
    Fixes: 28ff6520a34d ("drm/i915/guc: Update GuC debugfs to support new GuC")
    Signed-off-by: Daniele Ceraolo Spurio <[email protected]>
    Cc: John Harrison <[email protected]>
    Cc: Matthew Brost <[email protected]>
    Cc: <[email protected]> # v5.15+
    Reviewed-by: John Harrison <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    (cherry picked from commit 5bea40687c5cf2a33bf04e9110eb2e2b80222ef5)
    Signed-off-by: Rodrigo Vivi <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/i915/selftests: avoid using uninitialized context [+ + +]
Author: Krzysztof Karas <[email protected]>
Date:   Thu Jan 30 09:19:31 2025 +0000

    drm/i915/selftests: avoid using uninitialized context
    
    [ Upstream commit 53139b3f9998ea07289e7b70b909fea2264a0de9 ]
    
    There is an error path in igt_ppgtt_alloc(), which leads
    to ww object being passed down to i915_gem_ww_ctx_fini() without
    initialization. Correct that by only putting ppgtt->vm and
    returning early.
    
    Fixes: 480ae79537b2 ("drm/i915/selftests: Prepare gtt tests for obj->mm.lock removal")
    Signed-off-by: Krzysztof Karas <[email protected]>
    Reviewed-by: Mikolaj Wasiak <[email protected]>
    Reviewed-by: Andi Shyti <[email protected]>
    Signed-off-by: Andi Shyti <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/iuaonpjc3rywmvhna6umjlvzilocn2uqsrxfxfob24e2taocbi@lkaivvfp4777
    (cherry picked from commit 8d8334632ea62424233ac6529712868241d0f8df)
    Signed-off-by: Rodrigo Vivi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/i915: Drop 64bpp YUV formats from ICL+ SDR planes [+ + +]
Author: Ville Syrjälä <[email protected]>
Date:   Wed Dec 18 19:36:47 2024 +0200

    drm/i915: Drop 64bpp YUV formats from ICL+ SDR planes
    
    commit c7b49506b3ba7a62335e6f666a43f67d5cd9fd1e upstream.
    
    I'm seeing underruns with these 64bpp YUV formats on TGL.
    
    The weird details:
    - only happens on pipe B/C/D SDR planes, pipe A SDR planes
      seem fine, as do all HDR planes
    - somehow CDCLK related, higher CDCLK allows for bigger plane
      with these formats without underruns. With 300MHz CDCLK I
      can only go up to 1200 pixels wide or so, with 650MHz even
      a 3840 pixel wide plane was OK
    - ICL and ADL so far appear unaffected
    
    So not really sure what's the deal with this, but bspec does
    state "64-bit formats supported only on the HDR planes" so
    let's just drop these formats from the SDR planes. We already
    disallow 64bpp RGB formats.
    
    Cc: [email protected]
    Signed-off-by: Ville Syrjälä <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Reviewed-by: Juha-Pekka Heikkila <[email protected]>
    (cherry picked from commit 35e1aacfe536d6e8d8d440cd7155366da2541ad4)
    Signed-off-by: Rodrigo Vivi <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/komeda: Add check for komeda_get_layer_fourcc_list() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Thu Dec 19 17:02:56 2024 +0800

    drm/komeda: Add check for komeda_get_layer_fourcc_list()
    
    commit 79fc672a092d93a7eac24fe20a571d4efd8fa5a4 upstream.
    
    Add check for the return value of komeda_get_layer_fourcc_list()
    to catch the potential exception.
    
    Fixes: 5d51f6c0da1b ("drm/komeda: Add writeback support")
    Cc: [email protected]
    Signed-off-by: Haoxiang Li <[email protected]>
    Acked-by: Liviu Dudau <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Liviu Dudau <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/modeset: Handle tiled displays in pan_display_atomic. [+ + +]
Author: Maarten Lankhorst <[email protected]>
Date:   Thu Jan 16 15:28:24 2025 +0100

    drm/modeset: Handle tiled displays in pan_display_atomic.
    
    commit f4a9dd57e549a17a7dac1c1defec26abd7e5c2d4 upstream.
    
    Tiled displays have a different x/y offset to begin with. Instead of
    attempting to remember this, just apply a delta instead.
    
    This fixes the first tile being duplicated on other tiles when vt
    switching.
    
    Acked-by: Thomas Zimmermann <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Maarten Lankhorst <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/msm/dp: set safe_to_exit_level before printing it [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Mon Dec 2 12:06:31 2024 +0200

    drm/msm/dp: set safe_to_exit_level before printing it
    
    [ Upstream commit 7dee35d79bb046bfd425aa9e58a82414f67c1cec ]
    
    Rather than printing random garbage from stack and pretending that it is
    the default safe_to_exit_level, set the variable beforehand.
    
    Fixes: d13e36d7d222 ("drm/msm/dp: add audio support for Display Port on MSM")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: Abhinav Kumar <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/626804/
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Abhinav Kumar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/rockchip: cdn-dp: Use drm_connector_helper_hpd_irq_event() [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Tue Nov 5 14:38:16 2024 +0100

    drm/rockchip: cdn-dp: Use drm_connector_helper_hpd_irq_event()
    
    commit 666e1960464140cc4bc9203c203097e70b54c95a upstream.
    
    The code for detecting and updating the connector status in
    cdn_dp_pd_event_work() has a number of problems.
    
    - It does not aquire the locks to call the detect helper and update
    the connector status. These are struct drm_mode_config.connection_mutex
    and struct drm_mode_config.mutex.
    
    - It does not use drm_helper_probe_detect(), which helps with the
    details of locking and detection.
    
    - It uses the connector's status field to determine a change to
    the connector status. The epoch_counter field is the correct one. The
    field signals a change even if the connector status' value did not
    change.
    
    Replace the code with a call to drm_connector_helper_hpd_irq_event(),
    which fixes all these problems.
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Fixes: 81632df69772 ("drm/rockchip: cdn-dp: do not use drm_helper_hpd_irq_event")
    Cc: Chris Zhong <[email protected]>
    Cc: Guenter Roeck <[email protected]>
    Cc: Sandy Huang <[email protected]>
    Cc: "Heiko Stübner" <[email protected]>
    Cc: Andy Yan <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Cc: <[email protected]> # v4.11+
    Signed-off-by: Heiko Stuebner <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/rockchip: vop2: Check linear format for Cluster windows on rk3566/8 [+ + +]
Author: Andy Yan <[email protected]>
Date:   Sat Dec 14 16:17:04 2024 +0800

    drm/rockchip: vop2: Check linear format for Cluster windows on rk3566/8
    
    [ Upstream commit df063c0b8ffbdca486ab2f802e716973985d8f86 ]
    
    The Cluster windows on rk3566/8 only support afbc mode.
    
    Fixes: 604be85547ce ("drm/rockchip: Add VOP2 driver")
    Signed-off-by: Andy Yan <[email protected]>
    Signed-off-by: Heiko Stuebner <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/rockchip: vop2: Fix cluster windows alpha ctrl regsiters offset [+ + +]
Author: Andy Yan <[email protected]>
Date:   Mon Dec 9 20:29:15 2024 +0800

    drm/rockchip: vop2: Fix cluster windows alpha ctrl regsiters offset
    
    [ Upstream commit 17b4b10a0df1a1421d5fbdc03bad0bd3799bc966 ]
    
    The phy_id of cluster windws are not increase one for each window.
    
    Fixes: 604be85547ce ("drm/rockchip: Add VOP2 driver")
    Tested-by: Derek Foreman <[email protected]>
    Signed-off-by: Andy Yan <[email protected]>
    Signed-off-by: Heiko Stuebner <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/rockchip: vop2: Fix the mixer alpha setup for layer 0 [+ + +]
Author: Andy Yan <[email protected]>
Date:   Mon Dec 9 20:29:16 2024 +0800

    drm/rockchip: vop2: Fix the mixer alpha setup for layer 0
    
    [ Upstream commit 6b4dfdcde3573a12b72d2869dabd4ca37ad7e9c7 ]
    
    The alpha setup should start from the second layer, the current calculation
    starts incorrectly from the first layer, a negative offset will be obtained
    in the following formula:
    
    offset = (mixer_id + zpos - 1) * 0x10
    
    Fixes: 604be85547ce ("drm/rockchip: Add VOP2 driver")
    Tested-by: Derek Foreman <[email protected]>
    Signed-off-by: Andy Yan <[email protected]>
    Signed-off-by: Heiko Stuebner <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/rockchip: vop2: Fix the windows switch between different layers [+ + +]
Author: Andy Yan <[email protected]>
Date:   Sat Dec 14 16:17:01 2024 +0800

    drm/rockchip: vop2: Fix the windows switch between different layers
    
    [ Upstream commit 0ca953ac226eaffbe1a795f5e517095a8d494921 ]
    
    Every layer of vop2 should bind a window, and we also need to make
    sure that this window is not used by other layer.
    
    0x5 is a reserved layer sel value on rk3568, but it will select
    Cluster3 on rk3588, configure unused layers to 0x5  will lead
    alpha blending error on rk3588.
    
    When we bind a window from layerM to layerN, we move the old window
    on layerN to layerM.
    
    Fixes: 604be85547ce ("drm/rockchip: Add VOP2 driver")
    Tested-by: Derek Foreman <[email protected]>
    Signed-off-by: Andy Yan <[email protected]>
    Signed-off-by: Heiko Stuebner <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/rockchip: vop2: set bg dly and prescan dly at vop2_post_config [+ + +]
Author: Andy Yan <[email protected]>
Date:   Mon Dec 11 19:58:15 2023 +0800

    drm/rockchip: vop2: set bg dly and prescan dly at vop2_post_config
    
    [ Upstream commit 075a5b3969becb1ebc2f1d4fa1a1fe9163679273 ]
    
    We need to setup background delay cycle and prescan
    delay cycle when a mode is enable to avoid trigger
    POST_BUF_EMPTY irq on rk3588.
    
    Note: RK356x has no such requirement.
    
    Signed-off-by: Andy Yan <[email protected]>
    Signed-off-by: Heiko Stuebner <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Stable-dep-of: 0ca953ac226e ("drm/rockchip: vop2: Fix the windows switch between different layers")
    Signed-off-by: Sasha Levin <[email protected]>

drm/rockchip: vop2: Set YUV/RGB overlay mode [+ + +]
Author: Andy Yan <[email protected]>
Date:   Mon Dec 11 19:58:05 2023 +0800

    drm/rockchip: vop2: Set YUV/RGB overlay mode
    
    [ Upstream commit dd49ee4614cfb0b1f627c4353b60cecfe998a374 ]
    
    Set overlay mode register according to the
    output mode is yuv or rgb.
    
    Signed-off-by: Andy Yan <[email protected]>
    Signed-off-by: Heiko Stuebner <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Stable-dep-of: 0ca953ac226e ("drm/rockchip: vop2: Fix the windows switch between different layers")
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/tidss: Clear the interrupt status for interrupts being disabled [+ + +]
Author: Devarsh Thakkar <[email protected]>
Date:   Mon Oct 21 17:07:49 2024 +0300

    drm/tidss: Clear the interrupt status for interrupts being disabled
    
    commit 361a2ebb5cad211732ec3c5d962de49b21895590 upstream.
    
    The driver does not touch the irqstatus register when it is disabling
    interrupts.  This might cause an interrupt to trigger for an interrupt
    that was just disabled.
    
    To fix the issue, clear the irqstatus registers right after disabling
    the interrupts.
    
    Fixes: 32a1795f57ee ("drm/tidss: New driver for TI Keystone platform Display SubSystem")
    Cc: [email protected]
    Reported-by: Jonathan Cormier <[email protected]>
    Closes: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1394222/am625-issue-about-tidss-rcu_preempt-self-detected-stall-on-cpu/5424479#5424479
    Signed-off-by: Devarsh Thakkar <[email protected]>
    [Tomi: mostly rewrote the patch]
    Reviewed-by: Jonathan Cormier <[email protected]>
    Tested-by: Jonathan Cormier <[email protected]>
    Reviewed-by: Aradhya Bhatia <[email protected]>
    Signed-off-by: Tomi Valkeinen <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/tidss: Fix issue in irq handling causing irq-flood issue [+ + +]
Author: Tomi Valkeinen <[email protected]>
Date:   Mon Oct 21 17:07:45 2024 +0300

    drm/tidss: Fix issue in irq handling causing irq-flood issue
    
    commit 44b6730ab53ef04944fbaf6da0e77397531517b7 upstream.
    
    It has been observed that sometimes DSS will trigger an interrupt and
    the top level interrupt (DISPC_IRQSTATUS) is not zero, but the VP and
    VID level interrupt-statuses are zero.
    
    As the top level irqstatus is supposed to tell whether we have VP/VID
    interrupts, the thinking of the driver authors was that this particular
    case could never happen. Thus the driver only clears the DISPC_IRQSTATUS
    bits which has corresponding interrupts in VP/VID status. So when this
    issue happens, the driver will not clear DISPC_IRQSTATUS, and we get an
    interrupt flood.
    
    It is unclear why the issue happens. It could be a race issue in the
    driver, but no such race has been found. It could also be an issue with
    the HW. However a similar case can be easily triggered by manually
    writing to DISPC_IRQSTATUS_RAW. This will forcibly set a bit in the
    DISPC_IRQSTATUS and trigger an interrupt, and as the driver never clears
    the bit, we get an interrupt flood.
    
    To fix the issue, always clear DISPC_IRQSTATUS. The concern with this
    solution is that if the top level irqstatus is the one that triggers the
    interrupt, always clearing DISPC_IRQSTATUS might leave some interrupts
    unhandled if VP/VID interrupt statuses have bits set. However, testing
    shows that if any of the irqstatuses is set (i.e. even if
    DISPC_IRQSTATUS == 0, but a VID irqstatus has a bit set), we will get an
    interrupt.
    
    Co-developed-by: Bin Liu <[email protected]>
    Signed-off-by: Bin Liu <[email protected]>
    Co-developed-by: Devarsh Thakkar <[email protected]>
    Signed-off-by: Devarsh Thakkar <[email protected]>
    Co-developed-by: Jonathan Cormier <[email protected]>
    Signed-off-by: Jonathan Cormier <[email protected]>
    Fixes: 32a1795f57ee ("drm/tidss: New driver for TI Keystone platform Display SubSystem")
    Cc: [email protected]
    Tested-by: Jonathan Cormier <[email protected]>
    Reviewed-by: Aradhya Bhatia <[email protected]>
    Signed-off-by: Tomi Valkeinen <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/v3d: Stop active perfmon if it is being destroyed [+ + +]
Author: Christian Gmeiner <[email protected]>
Date:   Mon Nov 18 23:19:47 2024 +0100

    drm/v3d: Stop active perfmon if it is being destroyed
    
    commit 21f1435b1e6b012a07c42f36b206d2b66fc8f13b upstream.
    
    If the active performance monitor (`v3d->active_perfmon`) is being
    destroyed, stop it first. Currently, the active perfmon is not
    stopped during destruction, leaving the `v3d->active_perfmon` pointer
    stale. This can lead to undefined behavior and instability.
    
    This patch ensures that the active perfmon is stopped before being
    destroyed, aligning with the behavior introduced in commit
    7d1fd3638ee3 ("drm/v3d: Stop the active perfmon before being destroyed").
    
    Cc: [email protected] # v5.15+
    Fixes: 26a4dc29b74a ("drm/v3d: Expose performance counters to userspace")
    Signed-off-by: Christian Gmeiner <[email protected]>
    Signed-off-by: Maíra Canal <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/virtio: New fence for every plane update [+ + +]
Author: Dongwon Kim <[email protected]>
Date:   Mon Oct 21 02:08:03 2024 +0300

    drm/virtio: New fence for every plane update
    
    [ Upstream commit d3c55b8ab6fe5fa2e7ab02efd36d09c39ee5022f ]
    
    Having a fence linked to a virtio_gpu_framebuffer in the plane update
    sequence would cause conflict when several planes referencing the same
    framebuffer (e.g. Xorg screen covering multi-displays configured for an
    extended mode) and those planes are updated concurrently. So it is needed
    to allocate a fence for every plane state instead of the framebuffer.
    
    Signed-off-by: Dongwon Kim <[email protected]>
    [[email protected]: rebase, fix up, edit commit message]
    Signed-off-by: Dmitry Osipenko <[email protected]>
    Acked-by: Vivek Kasireddy <[email protected]>
    Reviewed-by: Rob Clark <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
dt-bindings: leds: class-multicolor: Fix path to color definitions [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Thu Nov 14 13:44:29 2024 +0100

    dt-bindings: leds: class-multicolor: Fix path to color definitions
    
    [ Upstream commit 609bc99a4452ffbce82d10f024a85d911c42e6cd ]
    
    The LED color definitions have always been in
    include/dt-bindings/leds/common.h in upstream.
    
    Fixes: 5c7f8ffe741daae7 ("dt: bindings: Add multicolor class dt bindings documention")
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Acked-by: Conor Dooley <[email protected]>
    Link: https://lore.kernel.org/r/a3c7ea92e90b77032f2e480d46418b087709286d.1731588129.git.geert+renesas@glider.be
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dt-bindings: mfd: bd71815: Fix rsense and typos [+ + +]
Author: Matti Vaittinen <[email protected]>
Date:   Tue Nov 12 19:01:06 2024 +0200

    dt-bindings: mfd: bd71815: Fix rsense and typos
    
    [ Upstream commit 6856edf7ead8c54803216a38a7b227bcb3dadff7 ]
    
    The sense resistor used for measuring currents is typically some tens of
    milli Ohms. It has accidentally been documented to be tens of mega Ohms.
    Fix the size of this resistor and a few copy-paste errors while at it.
    
    Drop the unsuitable 'rohm,charger-sense-resistor-ohms' property (which
    can't represent resistors smaller than one Ohm), and introduce a new
    'rohm,charger-sense-resistor-micro-ohms' property with appropriate
    minimum, maximum and default values instead.
    
    Fixes: 4238dc1e6490 ("dt_bindings: mfd: Add ROHM BD71815 PMIC")
    Signed-off-by: Matti Vaittinen <[email protected]>
    Acked-by: Conor Dooley <[email protected]>
    Link: https://lore.kernel.org/r/0efd8e9de0ae8d62ee4c6b78cc565b04007a245d.1731430700.git.mazziesaccount@gmail.com
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dt-bindings: mmc: controller: clarify the address-cells description [+ + +]
Author: Neil Armstrong <[email protected]>
Date:   Thu Nov 28 16:16:41 2024 +0100

    dt-bindings: mmc: controller: clarify the address-cells description
    
    [ Upstream commit b2b8e93ec00b8110cb37cbde5400d5abfdaed6a7 ]
    
    The term "slot ID" has nothing to do with the SDIO function number
    which is specified in the reg property of the subnodes, rephrase
    the description to be more accurate.
    
    Fixes: f9b7989859dd ("dt-bindings: mmc: Add YAML schemas for the generic MMC options")
    Signed-off-by: Neil Armstrong <[email protected]>
    Acked-by: Rob Herring (Arm) <[email protected]>
    Message-ID: <20241128-topic-amlogic-arm32-upstream-bindings-fixes-convert-meson-mx-sdio-v4-1-11d9f9200a59@linaro.org>
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dts: arm64: mediatek: mt8195: Remove MT8183 compatible for OVL [+ + +]
Author: Jason-JH.Lin <[email protected]>
Date:   Fri Dec 20 02:15:31 2024 +0800

    dts: arm64: mediatek: mt8195: Remove MT8183 compatible for OVL
    
    [ Upstream commit ce3dbc46d7e30a84b8e99c730e3172dd5efbf094 ]
    
    The OVL hardware capabilities have changed starting from MT8195,
    making the MT8183 compatible no longer applicable.
    Therefore, it is necessary to remove the MT8183 compatible for OVL.
    
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Jason-JH.Lin <[email protected]>
    Fixes: b852ee68fd72 ("arm64: dts: mt8195: Add display node for vdosys0")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
efi: Avoid cold plugged memory for placing the kernel [+ + +]
Author: Ard Biesheuvel <[email protected]>
Date:   Sat Feb 1 18:21:35 2025 +0100

    efi: Avoid cold plugged memory for placing the kernel
    
    commit ba69e0750b0362870294adab09339a0c39c3beaf upstream.
    
    UEFI 2.11 introduced EFI_MEMORY_HOT_PLUGGABLE to annotate system memory
    regions that are 'cold plugged' at boot, i.e., hot pluggable memory that
    is available from early boot, and described as system RAM by the
    firmware.
    
    Existing loaders and EFI applications running in the boot context will
    happily use this memory for allocating data structures that cannot be
    freed or moved at runtime, and this prevents the memory from being
    unplugged. Going forward, the new EFI_MEMORY_HOT_PLUGGABLE attribute
    should be tested, and memory annotated as such should be avoided for
    such allocations.
    
    In the EFI stub, there are a couple of occurrences where, instead of the
    high-level AllocatePages() UEFI boot service, a low-level code sequence
    is used that traverses the EFI memory map and carves out the requested
    number of pages from a free region. This is needed, e.g., for allocating
    as low as possible, or for allocating pages at random.
    
    While AllocatePages() should presumably avoid special purpose memory and
    cold plugged regions, this manual approach needs to incorporate this
    logic itself, in order to prevent the kernel itself from ending up in a
    hot unpluggable region, preventing it from being unplugged.
    
    So add the EFI_MEMORY_HOTPLUGGABLE macro definition, and check for it
    where appropriate.
    
    Cc: [email protected]
    Signed-off-by: Ard Biesheuvel <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

efi: libstub: Use '-std=gnu11' to fix build with GCC 15 [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Tue Jan 21 18:11:34 2025 -0700

    efi: libstub: Use '-std=gnu11' to fix build with GCC 15
    
    commit 8ba14d9f490aef9fd535c04e9e62e1169eb7a055 upstream.
    
    GCC 15 changed the default C standard version to C23, which should not
    have impacted the kernel because it requests the gnu11 standard via
    '-std=' in the main Makefile. However, the EFI libstub Makefile uses its
    own set of KBUILD_CFLAGS for x86 without a '-std=' value (i.e., using
    the default), resulting in errors from the kernel's definitions of bool,
    true, and false in stddef.h, which are reserved keywords under C23.
    
      ./include/linux/stddef.h:11:9: error: expected identifier before ‘false’
         11 |         false   = 0,
      ./include/linux/types.h:35:33: error: two or more data types in declaration specifiers
         35 | typedef _Bool                   bool;
    
    Set '-std=gnu11' in the x86 cflags to resolve the error and consistently
    use the same C standard version for the entire kernel. All other
    architectures reuse KBUILD_CFLAGS from the rest of the kernel, so this
    issue is not visible for them.
    
    Cc: [email protected]
    Reported-by: Kostadin Shishmanov <[email protected]>
    Closes: https://lore.kernel.org/4OAhbllK7x4QJGpZjkYjtBYNLd_2whHx9oFiuZcGwtVR4hIzvduultkgfAIRZI3vQpZylu7Gl929HaYFRGeMEalWCpeMzCIIhLxxRhq4U-Y=@protonmail.com/
    Reported-by: Jakub Jelinek <[email protected]>
    Closes: https://lore.kernel.org/Z4467umXR2PZ0M1H@tucnak/
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Ard Biesheuvel <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

efi: sysfb_efi: fix W=1 warnings when EFI is not set [+ + +]
Author: Randy Dunlap <[email protected]>
Date:   Tue Jan 7 15:53:09 2025 -0800

    efi: sysfb_efi: fix W=1 warnings when EFI is not set
    
    [ Upstream commit 19fdc68aa7b90b1d3d600e873a3e050a39e7663d ]
    
    A build with W=1 fails because there are code and data that are not
    needed or used when CONFIG_EFI is not set. Move the "#ifdef CONFIG_EFI"
    block to earlier in the source file so that the unused code/data are
    not built.
    
    drivers/firmware/efi/sysfb_efi.c:345:39: warning: ‘efifb_fwnode_ops’ defined but not used [-Wunused-const-variable=]
      345 | static const struct fwnode_operations efifb_fwnode_ops = {
          |                                       ^~~~~~~~~~~~~~~~
    drivers/firmware/efi/sysfb_efi.c:238:35: warning: ‘efifb_dmi_swap_width_height’ defined but not used [-Wunused-const-variable=]
      238 | static const struct dmi_system_id efifb_dmi_swap_width_height[] __initconst = {
          |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/firmware/efi/sysfb_efi.c:188:35: warning: ‘efifb_dmi_system_table’ defined but not used [-Wunused-const-variable=]
      188 | static const struct dmi_system_id efifb_dmi_system_table[] __initconst = {
          |                                   ^~~~~~~~~~~~~~~~~~~~~~
    
    Fixes: 15d27b15de96 ("efi: sysfb_efi: fix build when EFI is not set")
    Signed-off-by: Randy Dunlap <[email protected]>
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Cc: David Rheinsberg <[email protected]>
    Cc: Hans de Goede <[email protected]>
    Cc: Javier Martinez Canillas <[email protected]>
    Cc: Peter Jones <[email protected]>
    Cc: Simona Vetter <[email protected]>
    Cc: [email protected]
    Cc: Ard Biesheuvel <[email protected]>
    Cc: [email protected]
    Reviewed-by: Thomas Zimmermann <[email protected]>
    Reviewed-by: Javier Martinez Canillas <[email protected]>
    Signed-off-by: Ard Biesheuvel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
exec: fix up /proc/pid/comm in the execveat(AT_EMPTY_PATH) case [+ + +]
Author: Kees Cook <[email protected]>
Date:   Thu Nov 21 07:07:05 2024 -0800

    exec: fix up /proc/pid/comm in the execveat(AT_EMPTY_PATH) case
    
    [ Upstream commit 543841d1806029889c2f69f040e88b247aba8e22 ]
    
    Zbigniew mentioned at Linux Plumber's that systemd is interested in
    switching to execveat() for service execution, but can't, because the
    contents of /proc/pid/comm are the file descriptor which was used,
    instead of the path to the binary[1]. This makes the output of tools like
    top and ps useless, especially in a world where most fds are opened
    CLOEXEC so the number is truly meaningless.
    
    When the filename passed in is empty (e.g. with AT_EMPTY_PATH), use the
    dentry's filename for "comm" instead of using the useless numeral from
    the synthetic fdpath construction. This way the actual exec machinery
    is unchanged, but cosmetically the comm looks reasonable to admins
    investigating things.
    
    Instead of adding TASK_COMM_LEN more bytes to bprm, use one of the unused
    flag bits to indicate that we need to set "comm" from the dentry.
    
    Suggested-by: Zbigniew Jędrzejewski-Szmek <[email protected]>
    Suggested-by: Tycho Andersen <[email protected]>
    Suggested-by: Al Viro <[email protected]>
    Suggested-by: Linus Torvalds <[email protected]>
    Link: https://github.com/uapi-group/kernel-features#set-comm-field-before-exec [1]
    Reviewed-by: Aleksa Sarai <[email protected]>
    Tested-by: Zbigniew Jędrzejewski-Szmek <[email protected]>
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
f2fs: fix to wait dio completion [+ + +]
Author: Chao Yu <[email protected]>
Date:   Thu Jun 27 15:17:11 2024 +0800

    f2fs: fix to wait dio completion
    
    commit 96cfeb0389530ae32ade8a48ae3ae1ac3b6c009d upstream.
    
    It should wait all existing dio write IOs before block removal,
    otherwise, previous direct write IO may overwrite data in the
    block which may be reused by other inode.
    
    Cc: [email protected]
    Signed-off-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Alva Lan <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

f2fs: Introduce linear search for dentries [+ + +]
Author: Daniel Lee <[email protected]>
Date:   Fri Dec 20 15:41:31 2024 -0800

    f2fs: Introduce linear search for dentries
    
    commit 91b587ba79e1b68bb718d12b0758dbcdab4e9cb7 upstream.
    
    This patch addresses an issue where some files in case-insensitive
    directories become inaccessible due to changes in how the kernel function,
    utf8_casefold(), generates case-folded strings from the commit 5c26d2f1d3f5
    ("unicode: Don't special case ignorable code points").
    
    F2FS uses these case-folded names to calculate hash values for locating
    dentries and stores them on disk. Since utf8_casefold() can produce
    different output across kernel versions, stored hash values and newly
    calculated hash values may differ. This results in affected files no
    longer being found via the hash-based lookup.
    
    To resolve this, the patch introduces a linear search fallback.
    If the initial hash-based search fails, F2FS will sequentially scan the
    directory entries.
    
    Fixes: 5c26d2f1d3f5 ("unicode: Don't special case ignorable code points")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=219586
    Signed-off-by: Daniel Lee <[email protected]>
    Reviewed-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Cc: Daniel Rosenberg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
fbdev: omap: use threaded IRQ for LCD DMA [+ + +]
Author: Aaro Koskinen <[email protected]>
Date:   Thu Jan 2 20:19:51 2025 +0200

    fbdev: omap: use threaded IRQ for LCD DMA
    
    [ Upstream commit e4b6b665df815b4841e71b72f06446884e8aad40 ]
    
    When using touchscreen and framebuffer, Nokia 770 crashes easily with:
    
        BUG: scheduling while atomic: irq/144-ads7846/82/0x00010000
        Modules linked in: usb_f_ecm g_ether usb_f_rndis u_ether libcomposite configfs omap_udc ohci_omap ohci_hcd
        CPU: 0 UID: 0 PID: 82 Comm: irq/144-ads7846 Not tainted 6.12.7-770 #2
        Hardware name: Nokia 770
        Call trace:
         unwind_backtrace from show_stack+0x10/0x14
         show_stack from dump_stack_lvl+0x54/0x5c
         dump_stack_lvl from __schedule_bug+0x50/0x70
         __schedule_bug from __schedule+0x4d4/0x5bc
         __schedule from schedule+0x34/0xa0
         schedule from schedule_preempt_disabled+0xc/0x10
         schedule_preempt_disabled from __mutex_lock.constprop.0+0x218/0x3b4
         __mutex_lock.constprop.0 from clk_prepare_lock+0x38/0xe4
         clk_prepare_lock from clk_set_rate+0x18/0x154
         clk_set_rate from sossi_read_data+0x4c/0x168
         sossi_read_data from hwa742_read_reg+0x5c/0x8c
         hwa742_read_reg from send_frame_handler+0xfc/0x300
         send_frame_handler from process_pending_requests+0x74/0xd0
         process_pending_requests from lcd_dma_irq_handler+0x50/0x74
         lcd_dma_irq_handler from __handle_irq_event_percpu+0x44/0x130
         __handle_irq_event_percpu from handle_irq_event+0x28/0x68
         handle_irq_event from handle_level_irq+0x9c/0x170
         handle_level_irq from generic_handle_domain_irq+0x2c/0x3c
         generic_handle_domain_irq from omap1_handle_irq+0x40/0x8c
         omap1_handle_irq from generic_handle_arch_irq+0x28/0x3c
         generic_handle_arch_irq from call_with_stack+0x1c/0x24
         call_with_stack from __irq_svc+0x94/0xa8
        Exception stack(0xc5255da0 to 0xc5255de8)
        5da0: 00000001 c22fc620 00000000 00000000 c08384a8 c106fc00 00000000 c240c248
        5dc0: c113a600 c3f6ec30 00000001 00000000 c22fc620 c5255df0 c22fc620 c0279a94
        5de0: 60000013 ffffffff
         __irq_svc from clk_prepare_lock+0x4c/0xe4
         clk_prepare_lock from clk_get_rate+0x10/0x74
         clk_get_rate from uwire_setup_transfer+0x40/0x180
         uwire_setup_transfer from spi_bitbang_transfer_one+0x2c/0x9c
         spi_bitbang_transfer_one from spi_transfer_one_message+0x2d0/0x664
         spi_transfer_one_message from __spi_pump_transfer_message+0x29c/0x498
         __spi_pump_transfer_message from __spi_sync+0x1f8/0x2e8
         __spi_sync from spi_sync+0x24/0x40
         spi_sync from ads7846_halfd_read_state+0x5c/0x1c0
         ads7846_halfd_read_state from ads7846_irq+0x58/0x348
         ads7846_irq from irq_thread_fn+0x1c/0x78
         irq_thread_fn from irq_thread+0x120/0x228
         irq_thread from kthread+0xc8/0xe8
         kthread from ret_from_fork+0x14/0x28
    
    As a quick fix, switch to a threaded IRQ which provides a stable system.
    
    Signed-off-by: Aaro Koskinen <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fbdev: omapfb: Fix an OF node leak in dss_of_port_get_parent_device() [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Wed Jan 8 10:15:37 2025 +0900

    fbdev: omapfb: Fix an OF node leak in dss_of_port_get_parent_device()
    
    [ Upstream commit de124b61e179e690277116e6be512e4f422b5dd8 ]
    
    dss_of_port_get_parent_device() leaks an OF node reference when i >= 2
    and struct device_node *np is present. Since of_get_next_parent()
    obtains a reference of the returned OF node, call of_node_put() before
    returning NULL.
    
    This was found by an experimental verifier that I am developing, and no
    runtime test was able to be performed due to that lack of actual
    devices.
    
    Fixes: f76ee892a99e ("omapfb: copy omapdss & displays for omapfb")
    Signed-off-by: Joe Hattori <[email protected]>
    Reviewed-by: Laurent Pinchart <[email protected]>
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
firmware: iscsi_ibft: fix ISCSI_IBFT Kconfig entry [+ + +]
Author: Prasad Pandit <[email protected]>
Date:   Mon Mar 11 16:21:22 2024 +0530

    firmware: iscsi_ibft: fix ISCSI_IBFT Kconfig entry
    
    [ Upstream commit e1e17a1715982201034024863efbf238bee2bdf9 ]
    
    Fix ISCSI_IBFT Kconfig entry, replace tab with a space character.
    
    Fixes: 138fe4e0697 ("Firmware: add iSCSI iBFT Support")
    Signed-off-by: Prasad Pandit <[email protected]>
    Signed-off-by: Konrad Rzeszutek Wilk <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
flow_dissector: use RCU protection to fetch dev_net() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Feb 5 15:51:17 2025 +0000

    flow_dissector: use RCU protection to fetch dev_net()
    
    [ Upstream commit afec62cd0a4191cde6dd3a75382be4d51a38ce9b ]
    
    __skb_flow_dissect() can be called from arbitrary contexts.
    
    It must extend its RCU protection section to include
    the call to dev_net(), which can become dev_net_rcu().
    
    This makes sure the net structure can not disappear under us.
    
    Fixes: 9b52e3f267a6 ("flow_dissector: handle no-skb use case")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs/proc: do_task_stat: Fix ESP not readable during coredump [+ + +]
Author: Nam Cao <[email protected]>
Date:   Thu Jan 2 09:22:56 2025 +0100

    fs/proc: do_task_stat: Fix ESP not readable during coredump
    
    commit ab251dacfbae28772c897f068a4184f478189ff2 upstream.
    
    The field "eip" (instruction pointer) and "esp" (stack pointer) of a task
    can be read from /proc/PID/stat. These fields can be interesting for
    coredump.
    
    However, these fields were disabled by commit 0a1eb2d474ed ("fs/proc: Stop
    reporting eip and esp in /proc/PID/stat"), because it is generally unsafe
    to do so. But it is safe for a coredumping process, and therefore
    exceptions were made:
    
      - for a coredumping thread by commit fd7d56270b52 ("fs/proc: Report
        eip/esp in /prod/PID/stat for coredumping").
    
      - for all other threads in a coredumping process by commit cb8f381f1613
        ("fs/proc/array.c: allow reporting eip/esp for all coredumping
        threads").
    
    The above two commits check the PF_DUMPCORE flag to determine a coredump thread
    and the PF_EXITING flag for the other threads.
    
    Unfortunately, commit 92307383082d ("coredump:  Don't perform any cleanups
    before dumping core") moved coredump to happen earlier and before PF_EXITING is
    set. Thus, checking PF_EXITING is no longer the correct way to determine
    threads in a coredumping process.
    
    Instead of PF_EXITING, use PF_POSTCOREDUMP to determine the other threads.
    
    Checking of PF_EXITING was added for coredumping, so it probably can now be
    removed. But it doesn't hurt to keep.
    
    Fixes: 92307383082d ("coredump:  Don't perform any cleanups before dumping core")
    Cc: [email protected]
    Cc: Eric W. Biederman <[email protected]>
    Acked-by: Oleg Nesterov <[email protected]>
    Acked-by: Kees Cook <[email protected]>
    Signed-off-by: Nam Cao <[email protected]>
    Link: https://lore.kernel.org/r/d89af63d478d6c64cc46a01420b46fd6eb147d6f.1735805772.git.namcao@linutronix.de
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
fs: fix proc_handler for sysctl_nr_open [+ + +]
Author: Jinliang Zheng <[email protected]>
Date:   Sun Nov 24 11:46:36 2024 +0800

    fs: fix proc_handler for sysctl_nr_open
    
    [ Upstream commit d727935cad9f6f52c8d184968f9720fdc966c669 ]
    
    Use proc_douintvec_minmax() instead of proc_dointvec_minmax() to handle
    sysctl_nr_open, because its data type is unsigned int, not int.
    
    Fixes: 9b80a184eaad ("fs/file: more unsigned file descriptors")
    Signed-off-by: Jinliang Zheng <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
genirq: Make handle_enforce_irqctx() unconditionally available [+ + +]
Author: Thomas Gleixner <[email protected]>
Date:   Tue Dec 10 11:20:43 2024 +0100

    genirq: Make handle_enforce_irqctx() unconditionally available
    
    [ Upstream commit 8d187a77f04c14fb459a5301d69f733a5a1396bc ]
    
    Commit 1b57d91b969c ("irqchip/gic-v2, v3: Prevent SW resends entirely")
    sett the flag which enforces interrupt handling in interrupt context and
    prevents software base resends for ARM GIC v2/v3.
    
    But it missed that the helper function which checks the flag was hidden
    behind CONFIG_GENERIC_PENDING_IRQ, which is not set by ARM[64].
    
    Make the helper unconditionally available so that the enforcement actually
    works.
    
    Fixes: 1b57d91b969c ("irqchip/gic-v2, v3: Prevent SW resends entirely")
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
genksyms: fix memory leak when the same symbol is added from source [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Fri Jan 3 16:30:38 2025 +0900

    genksyms: fix memory leak when the same symbol is added from source
    
    [ Upstream commit 45c9c4101d3d2fdfa00852274bbebba65fcc3cf2 ]
    
    When a symbol that is already registered is added again, __add_symbol()
    returns without freeing the symbol definition, making it unreachable.
    
    The following test cases demonstrate different memory leak points.
    
    [Test Case 1]
    
    Forward declaration with exactly the same definition
    
      $ cat foo.c
      #include <linux/export.h>
      void foo(void);
      void foo(void) {}
      EXPORT_SYMBOL(foo);
    
    [Test Case 2]
    
    Forward declaration with a different definition (e.g. attribute)
    
      $ cat foo.c
      #include <linux/export.h>
      void foo(void);
      __attribute__((__section__(".ref.text"))) void foo(void) {}
      EXPORT_SYMBOL(foo);
    
    [Test Case 3]
    
    Preserving an overridden symbol (compile with KBUILD_PRESERVE=1)
    
      $ cat foo.c
      #include <linux/export.h>
      void foo(void);
      void foo(void) { }
      EXPORT_SYMBOL(foo);
    
      $ cat foo.symref
      override foo void foo ( int )
    
    The memory leaks in Test Case 1 and 2 have existed since the introduction
    of genksyms into the kernel tree. [1]
    
    The memory leak in Test Case 3 was introduced by commit 5dae9a550a74
    ("genksyms: allow to ignore symbol checksum changes").
    
    When multiple init_declarators are reduced to an init_declarator_list,
    the decl_spec must be duplicated. Otherwise, the following Test Case 4
    would result in a double-free bug.
    
    [Test Case 4]
    
      $ cat foo.c
      #include <linux/export.h>
    
      extern int foo, bar;
    
      int foo, bar;
      EXPORT_SYMBOL(foo);
    
    In this case, 'foo' and 'bar' share the same decl_spec, 'int'. It must
    be unshared before being passed to add_symbol().
    
    [1]: https://git.kernel.org/pub/scm/linux/kernel/git/history/history.git/commit/?id=46bd1da672d66ccd8a639d3c1f8a166048cca608
    
    Fixes: 5dae9a550a74 ("genksyms: allow to ignore symbol checksum changes")
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

genksyms: fix memory leak when the same symbol is read from *.symref file [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Fri Jan 3 16:30:39 2025 +0900

    genksyms: fix memory leak when the same symbol is read from *.symref file
    
    [ Upstream commit be2fa44b5180a1f021efb40c55fdf63c249c3209 ]
    
    When a symbol that is already registered is read again from *.symref
    file, __add_symbol() removes the previous one from the hash table without
    freeing it.
    
    [Test Case]
    
      $ cat foo.c
      #include <linux/export.h>
      void foo(void);
      void foo(void) {}
      EXPORT_SYMBOL(foo);
    
      $ cat foo.symref
      foo void foo ( void )
      foo void foo ( void )
    
    When a symbol is removed from the hash table, it must be freed along
    with its ->name and ->defn members. However, sym->name cannot be freed
    because it is sometimes shared with node->string, but not always. If
    sym->name and node->string share the same memory, free(sym->name) could
    lead to a double-free bug.
    
    To resolve this issue, always assign a strdup'ed string to sym->name.
    
    Fixes: 64e6c1e12372 ("genksyms: track symbol checksum changes")
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
gpio: bcm-kona: Add missing newline to dev_err format string [+ + +]
Author: Artur Weber <[email protected]>
Date:   Thu Feb 6 18:46:02 2025 +0100

    gpio: bcm-kona: Add missing newline to dev_err format string
    
    [ Upstream commit 615279db222c3ac56d5c93716efd72b843295c1f ]
    
    Add a missing newline to the format string of the "Couldn't get IRQ
    for bank..." error message.
    
    Fixes: 757651e3d60e ("gpio: bcm281xx: Add GPIO driver")
    Reviewed-by: Florian Fainelli <[email protected]>
    Reviewed-by: Markus Mayer <[email protected]>
    Signed-off-by: Artur Weber <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

gpio: bcm-kona: Fix GPIO lock/unlock for banks above bank 0 [+ + +]
Author: Artur Weber <[email protected]>
Date:   Thu Feb 6 18:46:00 2025 +0100

    gpio: bcm-kona: Fix GPIO lock/unlock for banks above bank 0
    
    [ Upstream commit de1d0d160f64ee76df1d364d521b2faf465a091c ]
    
    The GPIO lock/unlock functions clear/write a bit to the relevant
    register for each bank. However, due to an oversight the bit that
    was being written was based on the total GPIO number, not the index
    of the GPIO within the relevant bank, causing it to fail for any
    GPIO above 32 (thus any GPIO for banks above bank 0).
    
    Fix lock/unlock for these banks by using the correct bit.
    
    Fixes: bdb93c03c550 ("gpio: bcm281xx: Centralize register locking")
    Reviewed-by: Florian Fainelli <[email protected]>
    Reviewed-by: Markus Mayer <[email protected]>
    Signed-off-by: Artur Weber <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

gpio: bcm-kona: Make sure GPIO bits are unlocked when requesting IRQ [+ + +]
Author: Artur Weber <[email protected]>
Date:   Thu Feb 6 18:46:01 2025 +0100

    gpio: bcm-kona: Make sure GPIO bits are unlocked when requesting IRQ
    
    [ Upstream commit 57f5db77a915cc29461a679a6bcae7097967be1a ]
    
    The settings for all GPIOs are locked by default in bcm_kona_gpio_reset.
    The settings for a GPIO are unlocked when requesting it as a GPIO, but
    not when requesting it as an interrupt, causing the IRQ settings to not
    get applied.
    
    Fix this by making sure to unlock the right bits when an IRQ is requested.
    To avoid a situation where an IRQ being released causes a lock despite
    the same GPIO being used by a GPIO request or vice versa, add an unlock
    counter and only lock if it reaches 0.
    
    Fixes: 757651e3d60e ("gpio: bcm281xx: Add GPIO driver")
    Reviewed-by: Florian Fainelli <[email protected]>
    Reviewed-by: Markus Mayer <[email protected]>
    Signed-off-by: Artur Weber <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

gpio: mxc: remove dead code after switch to DT-only [+ + +]
Author: Ahmad Fatoum <[email protected]>
Date:   Mon Jan 13 23:19:11 2025 +0100

    gpio: mxc: remove dead code after switch to DT-only
    
    [ Upstream commit b049e7abe9001a780d58e78e3833dcceee22f396 ]
    
    struct platform_device::id was only set by board code, but since i.MX
    became a devicetree-only platform, this will always be -1
    (PLATFORM_DEVID_NONE).
    
    Note: of_alias_get_id() returns a negative number on error and base
    treats all negative errors the same, so we need not add any additional
    error handling.
    
    Fixes: 0f2c7af45d7e ("gpio: mxc: Convert the driver to DT-only")
    Signed-off-by: Ahmad Fatoum <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Link: https://lore.kernel.org/r/20250113-b4-imx-gpio-base-warning-v1-3-0a28731a5cf6@pengutronix.de
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

gpio: pca953x: Improve interrupt support [+ + +]
Author: Mark Tomlinson <[email protected]>
Date:   Thu Jun 6 15:31:02 2024 +1200

    gpio: pca953x: Improve interrupt support
    
    [ Upstream commit d6179f6c6204f9932aed3a7a2100b4a295dfed9d ]
    
    The GPIO drivers with latch interrupt support (typically types starting
    with PCAL) have interrupt status registers to determine which particular
    inputs have caused an interrupt. Unfortunately there is no atomic
    operation to read these registers and clear the interrupt. Clearing the
    interrupt is done by reading the input registers.
    
    The code was reading the interrupt status registers, and then reading
    the input registers. If an input changed between these two events it was
    lost.
    
    The solution in this patch is to revert to the non-latch version of
    code, i.e. remembering the previous input status, and looking for the
    changes. This system results in no more I2C transfers, so is no slower.
    The latch property of the device still means interrupts will still be
    noticed if the input changes back to its initial state.
    
    Fixes: 44896beae605 ("gpio: pca953x: add PCAL9535 interrupt support for Galileo Gen2")
    Signed-off-by: Mark Tomlinson <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

gpio: stmpe: Check return value of stmpe_reg_read in stmpe_gpio_irq_sync_unlock [+ + +]
Author: Wentao Liang <[email protected]>
Date:   Wed Feb 12 10:18:49 2025 +0800

    gpio: stmpe: Check return value of stmpe_reg_read in stmpe_gpio_irq_sync_unlock
    
    commit b9644fbfbcab13da7f8b37bef7c51e5b8407d031 upstream.
    
    The stmpe_reg_read function can fail, but its return value is not checked
    in stmpe_gpio_irq_sync_unlock. This can lead to silent failures and
    incorrect behavior if the hardware access fails.
    
    This patch adds checks for the return value of stmpe_reg_read. If the
    function fails, an error message is logged and the function returns
    early to avoid further issues.
    
    Fixes: b888fb6f2a27 ("gpio: stmpe: i2c transfer are forbiden in atomic context")
    Cc: [email protected] # 4.16+
    Signed-off-by: Wentao Liang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

gpio: xilinx: Convert gpio_lock to raw spinlock [+ + +]
Author: Sean Anderson <[email protected]>
Date:   Fri Jan 10 11:33:54 2025 -0500

    gpio: xilinx: Convert gpio_lock to raw spinlock
    
    [ Upstream commit 9860370c2172704b6b4f0075a0c2a29fd84af96a ]
    
    irq_chip functions may be called in raw spinlock context. Therefore, we
    must also use a raw spinlock for our own internal locking.
    
    This fixes the following lockdep splat:
    
    [    5.349336] =============================
    [    5.353349] [ BUG: Invalid wait context ]
    [    5.357361] 6.13.0-rc5+ #69 Tainted: G        W
    [    5.363031] -----------------------------
    [    5.367045] kworker/u17:1/44 is trying to lock:
    [    5.371587] ffffff88018b02c0 (&chip->gpio_lock){....}-{3:3}, at: xgpio_irq_unmask (drivers/gpio/gpio-xilinx.c:433 (discriminator 8))
    [    5.380079] other info that might help us debug this:
    [    5.385138] context-{5:5}
    [    5.387762] 5 locks held by kworker/u17:1/44:
    [    5.392123] #0: ffffff8800014958 ((wq_completion)events_unbound){+.+.}-{0:0}, at: process_one_work (kernel/workqueue.c:3204)
    [    5.402260] #1: ffffffc082fcbdd8 (deferred_probe_work){+.+.}-{0:0}, at: process_one_work (kernel/workqueue.c:3205)
    [    5.411528] #2: ffffff880172c900 (&dev->mutex){....}-{4:4}, at: __device_attach (drivers/base/dd.c:1006)
    [    5.419929] #3: ffffff88039c8268 (request_class#2){+.+.}-{4:4}, at: __setup_irq (kernel/irq/internals.h:156 kernel/irq/manage.c:1596)
    [    5.428331] #4: ffffff88039c80c8 (lock_class#2){....}-{2:2}, at: __setup_irq (kernel/irq/manage.c:1614)
    [    5.436472] stack backtrace:
    [    5.439359] CPU: 2 UID: 0 PID: 44 Comm: kworker/u17:1 Tainted: G        W          6.13.0-rc5+ #69
    [    5.448690] Tainted: [W]=WARN
    [    5.451656] Hardware name: xlnx,zynqmp (DT)
    [    5.455845] Workqueue: events_unbound deferred_probe_work_func
    [    5.461699] Call trace:
    [    5.464147] show_stack+0x18/0x24 C
    [    5.467821] dump_stack_lvl (lib/dump_stack.c:123)
    [    5.471501] dump_stack (lib/dump_stack.c:130)
    [    5.474824] __lock_acquire (kernel/locking/lockdep.c:4828 kernel/locking/lockdep.c:4898 kernel/locking/lockdep.c:5176)
    [    5.478758] lock_acquire (arch/arm64/include/asm/percpu.h:40 kernel/locking/lockdep.c:467 kernel/locking/lockdep.c:5851 kernel/locking/lockdep.c:5814)
    [    5.482429] _raw_spin_lock_irqsave (include/linux/spinlock_api_smp.h:111 kernel/locking/spinlock.c:162)
    [    5.486797] xgpio_irq_unmask (drivers/gpio/gpio-xilinx.c:433 (discriminator 8))
    [    5.490737] irq_enable (kernel/irq/internals.h:236 kernel/irq/chip.c:170 kernel/irq/chip.c:439 kernel/irq/chip.c:432 kernel/irq/chip.c:345)
    [    5.494060] __irq_startup (kernel/irq/internals.h:241 kernel/irq/chip.c:180 kernel/irq/chip.c:250)
    [    5.497645] irq_startup (kernel/irq/chip.c:270)
    [    5.501143] __setup_irq (kernel/irq/manage.c:1807)
    [    5.504728] request_threaded_irq (kernel/irq/manage.c:2208)
    
    Fixes: a32c7caea292 ("gpio: gpio-xilinx: Add interrupt support")
    Signed-off-by: Sean Anderson <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

gpio: xilinx: Convert to immutable irq_chip [+ + +]
Author: Linus Walleij <[email protected]>
Date:   Mon Mar 20 10:55:15 2023 +0100

    gpio: xilinx: Convert to immutable irq_chip
    
    [ Upstream commit b4510f8fd5d0e9afa777f115871f5d522540c417 ]
    
    Convert the driver to immutable irq-chip with a bit of
    intuition.
    
    Cc: Marc Zyngier <[email protected]>
    Signed-off-by: Linus Walleij <[email protected]>
    Reviewed-by: Marc Zyngier <[email protected]>
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Stable-dep-of: 9860370c2172 ("gpio: xilinx: Convert gpio_lock to raw spinlock")
    Signed-off-by: Sasha Levin <[email protected]>

gpio: xilinx: remove excess kernel doc [+ + +]
Author: Bartosz Golaszewski <[email protected]>
Date:   Fri Dec 15 10:09:43 2023 +0100

    gpio: xilinx: remove excess kernel doc
    
    commit 4c7fcbf5077532b80bc233c83d56e09a6bfa16b0 upstream.
    
    The irqchip field has been removed from struct xgpio_instance so remove
    the doc as well.
    
    Fixes: b4510f8fd5d0 ("gpio: xilinx: Convert to immutable irq_chip")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Reviewed-by: Michal Simek <[email protected]>
    Reviewed-by: Randy Dunlap <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
gpiolib: acpi: Add a quirk for Acer Nitro ANV14 [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Tue Feb 11 14:32:01 2025 -0600

    gpiolib: acpi: Add a quirk for Acer Nitro ANV14
    
    commit 8743d66979e494c5378563e6b5a32e913380abd8 upstream.
    
    Spurious immediate wake up events are reported on Acer Nitro ANV14. GPIO 11 is
    specified as an edge triggered input and also a wake source but this pin is
    supposed to be an output pin for an LED, so it's effectively floating.
    
    Block the interrupt from getting set up for this GPIO on this device.
    
    Cc: [email protected]
    Reported-by: Delgan <[email protected]>
    Tested-by: Delgan <[email protected]>
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3954
    Signed-off-by: Mario Limonciello <[email protected]>
    Acked-by: Mika Westerberg <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
gpu: drm_dp_cec: fix broken CEC adapter properties check [+ + +]
Author: Hans Verkuil <[email protected]>
Date:   Wed Jan 29 10:51:48 2025 +0100

    gpu: drm_dp_cec: fix broken CEC adapter properties check
    
    [ Upstream commit 6daaae5ff7f3b23a2dacc9c387ff3d4f95b67cad ]
    
    If the hotplug detect of a display is low for longer than one second
    (configurable through drm_dp_cec_unregister_delay), then the CEC adapter
    is unregistered since we assume the display was disconnected. If the
    HPD went low for less than one second, then we check if the properties
    of the CEC adapter have changed, since that indicates that we actually
    switch to new hardware and we have to unregister the old CEC device and
    register a new one.
    
    Unfortunately, the test for changed properties was written poorly, and
    after a new CEC capability was added to the CEC core code the test always
    returned true (i.e. the properties had changed).
    
    As a result the CEC device was unregistered and re-registered for every
    HPD toggle. If the CEC remote controller integration was also enabled
    (CONFIG_MEDIA_CEC_RC was set), then the corresponding input device was
    also unregistered and re-registered. As a result the input device in
    /sys would keep incrementing its number, e.g.:
    
    /sys/devices/pci0000:00/0000:00:08.1/0000:e7:00.0/rc/rc0/input20
    
    Since short HPD toggles are common, the number could over time get into
    the thousands.
    
    While not a serious issue (i.e. nothing crashes), it is not intended
    to work that way.
    
    This patch changes the test so that it only checks for the single CEC
    capability that can actually change, and it ignores any other
    capabilities, so this is now safe as well if new caps are added in
    the future.
    
    With the changed test the bit under #ifndef CONFIG_MEDIA_CEC_RC can be
    dropped as well, so that's a nice cleanup.
    
    Signed-off-by: Hans Verkuil <[email protected]>
    Reported-by: Farblos <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Fixes: 2c6d1fffa1d9 ("drm: add support for DisplayPort CEC-Tunneling-over-AUX")
    Tested-by: Farblos <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Grab mm lock before grabbing pt lock [+ + +]
Author: Maksym Planeta <[email protected]>
Date:   Wed Dec 4 11:35:15 2024 +0100

    Grab mm lock before grabbing pt lock
    
    [ Upstream commit 6d002348789bc16e9203e9818b7a3688787e3b29 ]
    
    Function xen_pin_page calls xen_pte_lock, which in turn grab page
    table lock (ptlock). When locking, xen_pte_lock expect mm->page_table_lock
    to be held before grabbing ptlock, but this does not happen when pinning
    is caused by xen_mm_pin_all.
    
    This commit addresses lockdep warning below, which shows up when
    suspending a Xen VM.
    
    [ 3680.658422] Freezing user space processes
    [ 3680.660156] Freezing user space processes completed (elapsed 0.001 seconds)
    [ 3680.660182] OOM killer disabled.
    [ 3680.660192] Freezing remaining freezable tasks
    [ 3680.661485] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
    [ 3680.685254]
    [ 3680.685265] ==================================
    [ 3680.685269] WARNING: Nested lock was not taken
    [ 3680.685274] 6.12.0+ #16 Tainted: G        W
    [ 3680.685279] ----------------------------------
    [ 3680.685283] migration/0/19 is trying to lock:
    [ 3680.685288] ffff88800bac33c0 (ptlock_ptr(ptdesc)#2){+.+.}-{3:3}, at: xen_pin_page+0x175/0x1d0
    [ 3680.685303]
    [ 3680.685303] but this task is not holding:
    [ 3680.685308] init_mm.page_table_lock
    [ 3680.685311]
    [ 3680.685311] stack backtrace:
    [ 3680.685316] CPU: 0 UID: 0 PID: 19 Comm: migration/0 Tainted: G        W          6.12.0+ #16
    [ 3680.685324] Tainted: [W]=WARN
    [ 3680.685328] Stopper: multi_cpu_stop+0x0/0x120 <- __stop_cpus.constprop.0+0x8c/0xd0
    [ 3680.685339] Call Trace:
    [ 3680.685344]  <TASK>
    [ 3680.685347]  dump_stack_lvl+0x77/0xb0
    [ 3680.685356]  __lock_acquire+0x917/0x2310
    [ 3680.685364]  lock_acquire+0xce/0x2c0
    [ 3680.685369]  ? xen_pin_page+0x175/0x1d0
    [ 3680.685373]  _raw_spin_lock_nest_lock+0x2f/0x70
    [ 3680.685381]  ? xen_pin_page+0x175/0x1d0
    [ 3680.685386]  xen_pin_page+0x175/0x1d0
    [ 3680.685390]  ? __pfx_xen_pin_page+0x10/0x10
    [ 3680.685394]  __xen_pgd_walk+0x233/0x2c0
    [ 3680.685401]  ? stop_one_cpu+0x91/0x100
    [ 3680.685405]  __xen_pgd_pin+0x5d/0x250
    [ 3680.685410]  xen_mm_pin_all+0x70/0xa0
    [ 3680.685415]  xen_pv_pre_suspend+0xf/0x280
    [ 3680.685420]  xen_suspend+0x57/0x1a0
    [ 3680.685428]  multi_cpu_stop+0x6b/0x120
    [ 3680.685432]  ? update_cpumasks_hier+0x7c/0xa60
    [ 3680.685439]  ? __pfx_multi_cpu_stop+0x10/0x10
    [ 3680.685443]  cpu_stopper_thread+0x8c/0x140
    [ 3680.685448]  ? smpboot_thread_fn+0x20/0x1f0
    [ 3680.685454]  ? __pfx_smpboot_thread_fn+0x10/0x10
    [ 3680.685458]  smpboot_thread_fn+0xed/0x1f0
    [ 3680.685462]  kthread+0xde/0x110
    [ 3680.685467]  ? __pfx_kthread+0x10/0x10
    [ 3680.685471]  ret_from_fork+0x2f/0x50
    [ 3680.685478]  ? __pfx_kthread+0x10/0x10
    [ 3680.685482]  ret_from_fork_asm+0x1a/0x30
    [ 3680.685489]  </TASK>
    [ 3680.685491]
    [ 3680.685491] other info that might help us debug this:
    [ 3680.685497] 1 lock held by migration/0/19:
    [ 3680.685500]  #0: ffffffff8284df38 (pgd_lock){+.+.}-{3:3}, at: xen_mm_pin_all+0x14/0xa0
    [ 3680.685512]
    [ 3680.685512] stack backtrace:
    [ 3680.685518] CPU: 0 UID: 0 PID: 19 Comm: migration/0 Tainted: G        W          6.12.0+ #16
    [ 3680.685528] Tainted: [W]=WARN
    [ 3680.685531] Stopper: multi_cpu_stop+0x0/0x120 <- __stop_cpus.constprop.0+0x8c/0xd0
    [ 3680.685538] Call Trace:
    [ 3680.685541]  <TASK>
    [ 3680.685544]  dump_stack_lvl+0x77/0xb0
    [ 3680.685549]  __lock_acquire+0x93c/0x2310
    [ 3680.685554]  lock_acquire+0xce/0x2c0
    [ 3680.685558]  ? xen_pin_page+0x175/0x1d0
    [ 3680.685562]  _raw_spin_lock_nest_lock+0x2f/0x70
    [ 3680.685568]  ? xen_pin_page+0x175/0x1d0
    [ 3680.685572]  xen_pin_page+0x175/0x1d0
    [ 3680.685578]  ? __pfx_xen_pin_page+0x10/0x10
    [ 3680.685582]  __xen_pgd_walk+0x233/0x2c0
    [ 3680.685588]  ? stop_one_cpu+0x91/0x100
    [ 3680.685592]  __xen_pgd_pin+0x5d/0x250
    [ 3680.685596]  xen_mm_pin_all+0x70/0xa0
    [ 3680.685600]  xen_pv_pre_suspend+0xf/0x280
    [ 3680.685607]  xen_suspend+0x57/0x1a0
    [ 3680.685611]  multi_cpu_stop+0x6b/0x120
    [ 3680.685615]  ? update_cpumasks_hier+0x7c/0xa60
    [ 3680.685620]  ? __pfx_multi_cpu_stop+0x10/0x10
    [ 3680.685625]  cpu_stopper_thread+0x8c/0x140
    [ 3680.685629]  ? smpboot_thread_fn+0x20/0x1f0
    [ 3680.685634]  ? __pfx_smpboot_thread_fn+0x10/0x10
    [ 3680.685638]  smpboot_thread_fn+0xed/0x1f0
    [ 3680.685642]  kthread+0xde/0x110
    [ 3680.685645]  ? __pfx_kthread+0x10/0x10
    [ 3680.685649]  ret_from_fork+0x2f/0x50
    [ 3680.685654]  ? __pfx_kthread+0x10/0x10
    [ 3680.685657]  ret_from_fork_asm+0x1a/0x30
    [ 3680.685662]  </TASK>
    [ 3680.685267] xen:grant_table: Grant tables using version 1 layout
    [ 3680.685921] OOM killer enabled.
    [ 3680.685934] Restarting tasks ... done.
    
    Signed-off-by: Maksym Planeta <[email protected]>
    Reviewed-by: Juergen Gross <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
hexagon: Fix unbalanced spinlock in die() [+ + +]
Author: Lin Yujun <[email protected]>
Date:   Mon May 22 02:56:08 2023 +0000

    hexagon: Fix unbalanced spinlock in die()
    
    [ Upstream commit 03410e87563a122075c3721acc7d5510e41d8332 ]
    
    die executes holding the spinlock of &die.lock and unlock
    it after printing the oops message.
    However in the code if the notify_die() returns NOTIFY_STOP
    , die() exit with returning 1 but never unlocked the spinlock.
    
    Fix this by adding spin_unlock_irq(&die.lock) before returning.
    
    Fixes: cf9750bae262 ("Hexagon: Provide basic debugging and system trap support.")
    Signed-off-by: Lin Yujun <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Brian Cain <[email protected]>
    Signed-off-by: Brian Cain <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hexagon: fix using plain integer as NULL pointer warning in cmpxchg [+ + +]
Author: Willem de Bruijn <[email protected]>
Date:   Tue Dec 3 17:17:34 2024 -0500

    hexagon: fix using plain integer as NULL pointer warning in cmpxchg
    
    [ Upstream commit 8a20030038742b9915c6d811a4e6c14b126cafb4 ]
    
    Sparse reports
    
        net/ipv4/inet_diag.c:1511:17: sparse: sparse: Using plain integer as NULL pointer
    
    Due to this code calling cmpxchg on a non-integer type
    struct inet_diag_handler *
    
        return !cmpxchg((const struct inet_diag_handler**)&inet_diag_table[type],
                        NULL, h) ? 0 : -EEXIST;
    
    While hexagon's cmpxchg assigns an integer value to a variable of this
    type.
    
        __typeof__(*(ptr)) __oldval = 0;
    
    Update this assignment to cast 0 to the correct type.
    
    The original issue is easily reproduced at head with the below block,
    and is absent after this change.
    
        make LLVM=1 ARCH=hexagon defconfig
        make C=1 LLVM=1 ARCH=hexagon net/ipv4/inet_diag.o
    
    Fixes: 99a70aa051d2 ("Hexagon: Add processor and system headers")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Willem de Bruijn <[email protected]>
    Tested-by: Christian Gmeiner <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Brian Cain <[email protected]>
    Signed-off-by: Brian Cain <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
HID: core: Fix assumption that Resolution Multipliers must be in Logical Collections [+ + +]
Author: Alan Stern <[email protected]>
Date:   Tue Dec 31 14:23:12 2024 -0500

    HID: core: Fix assumption that Resolution Multipliers must be in Logical Collections
    
    commit 64f2657b579343cf923aa933f08074e6258eb07b upstream.
    
    A report in 2019 by the syzbot fuzzer was found to be connected to two
    errors in the HID core associated with Resolution Multipliers.  One of
    the errors was fixed by commit ea427a222d8b ("HID: core: Fix deadloop
    in hid_apply_multiplier."), but the other has not been fixed.
    
    This error arises because hid_apply_multipler() assumes that every
    Resolution Multiplier control is contained in a Logical Collection,
    i.e., there's no way the routine can ever set multiplier_collection to
    NULL.  This is in spite of the fact that the function starts with a
    big comment saying:
    
             * "The Resolution Multiplier control must be contained in the same
             * Logical Collection as the control(s) to which it is to be applied.
               ...
             *  If no Logical Collection is
             * defined, the Resolution Multiplier is associated with all
             * controls in the report."
             * HID Usage Table, v1.12, Section 4.3.1, p30
             *
             * Thus, search from the current collection upwards until we find a
             * logical collection...
    
    The comment and the code overlook the possibility that none of the
    collections found may be a Logical Collection.
    
    The fix is to set the multiplier_collection pointer to NULL if the
    collection found isn't a Logical Collection.
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Alan Stern <[email protected]>
    Cc: Peter Hutterer <[email protected]>
    Fixes: 5a4abb36f312 ("HID: core: process the Resolution Multiplier")
    Cc: [email protected]
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

HID: hid-sensor-hub: don't use stale platform-data on remove [+ + +]
Author: Heiko Stuebner <[email protected]>
Date:   Thu Nov 7 12:47:04 2024 +0100

    HID: hid-sensor-hub: don't use stale platform-data on remove
    
    commit 8a5b38c3fd709e8acd2bfdedf66c25e6af759576 upstream.
    
    The hid-sensor-hub creates the individual device structs and transfers them
    to the created mfd platform-devices via the platform_data in the mfd_cell.
    
    Before e651a1da442a ("HID: hid-sensor-hub: Allow parallel synchronous reads")
    the sensor-hub was managing access centrally, with one "completion" in the
    hub's data structure, which needed to be finished on removal at the latest.
    
    The mentioned commit then moved this central management to each hid sensor
    device, resulting on a completion in each struct hid_sensor_hub_device.
    The remove procedure was adapted to go through all sensor devices and
    finish any pending "completion".
    
    What this didn't take into account was, platform_device_add_data() that is
    used by mfd_add{_hotplug}_devices() does a kmemdup on the submitted
    platform-data. So the data the platform-device gets is a copy of the
    original data, meaning that the device worked on a different completion
    than what sensor_hub_remove() currently wants to access.
    
    To fix that, use device_for_each_child() to go through each child-device
    similar to how mfd_remove_devices() unregisters the devices later and
    with that get the live platform_data to finalize the correct completion.
    
    Fixes: e651a1da442a ("HID: hid-sensor-hub: Allow parallel synchronous reads")
    Cc: [email protected]
    Signed-off-by: Heiko Stuebner <[email protected]>
    Acked-by: Benjamin Tissoires <[email protected]>
    Acked-by: Srinivas Pandruvada <[email protected]>
    Acked-by: Jiri Kosina <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

HID: hid-thrustmaster: fix stack-out-of-bounds read in usb_check_int_endpoints() [+ + +]
Author: Tulio Fernandes <[email protected]>
Date:   Wed Feb 5 18:50:34 2025 -0300

    HID: hid-thrustmaster: fix stack-out-of-bounds read in usb_check_int_endpoints()
    
    [ Upstream commit 0b43d98ff29be3144e86294486b1373b5df74c0e ]
    
    Syzbot[1] has detected a stack-out-of-bounds read of the ep_addr array from
    hid-thrustmaster driver. This array is passed to usb_check_int_endpoints
    function from usb.c core driver, which executes a for loop that iterates
    over the elements of the passed array. Not finding a null element at the end of
    the array, it tries to read the next, non-existent element, crashing the kernel.
    
    To fix this, a 0 element was added at the end of the array to break the for
    loop.
    
    [1] https://syzkaller.appspot.com/bug?extid=9c9179ac46169c56c1ad
    
    Reported-by: [email protected]
    Fixes: 50420d7c79c3 ("HID: hid-thrustmaster: Fix warning in thrustmaster_probe by adding endpoint check")
    Signed-off-by: Túlio Fernandes <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: hid-thrustmaster: Fix warning in thrustmaster_probe by adding endpoint check [+ + +]
Author: Karol Przybylski <[email protected]>
Date:   Thu Dec 5 23:22:21 2024 +0100

    HID: hid-thrustmaster: Fix warning in thrustmaster_probe by adding endpoint check
    
    [ Upstream commit 50420d7c79c37a3efe4010ff9b1bb14bc61ebccf ]
    
    syzbot has found a type mismatch between a USB pipe and the transfer
    endpoint, which is triggered by the hid-thrustmaster driver[1].
    There is a number of similar, already fixed issues [2].
    In this case as in others, implementing check for endpoint type fixes the issue.
    
    [1] https://syzkaller.appspot.com/bug?extid=040e8b3db6a96908d470
    [2] https://syzkaller.appspot.com/bug?extid=348331f63b034f89b622
    
    Fixes: c49c33637802 ("HID: support for initialization of some Thrustmaster wheels")
    Reported-by: [email protected]
    Tested-by: [email protected]
    Signed-off-by: Karol Przybylski <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: multitouch: Add NULL check in mt_input_configured [+ + +]
Author: Charles Han <[email protected]>
Date:   Fri Nov 15 14:26:21 2024 +0800

    HID: multitouch: Add NULL check in mt_input_configured
    
    [ Upstream commit 9b8e2220d3a052a690b1d1b23019673e612494c5 ]
    
    devm_kasprintf() can return a NULL pointer on failure,but this
    returned value in mt_input_configured() is not checked.
    Add NULL check in mt_input_configured(), to handle kernel NULL
    pointer dereference error.
    
    Fixes: 479439463529 ("HID: multitouch: Correct devm device reference for hidinput input_dev name")
    Signed-off-by: Charles Han <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: multitouch: fix support for Goodix PID 0x01e9 [+ + +]
Author: Jiri Kosina <[email protected]>
Date:   Thu Dec 12 10:19:32 2024 +0100

    HID: multitouch: fix support for Goodix PID 0x01e9
    
    [ Upstream commit 8ade5e05bd094485ce370fad66a6a3fb6f50bfbc ]
    
    Commit c8000deb68365b ("HID: multitouch: Add support for GT7868Q") added
    support for 0x01e8 and 0x01e9, but the mt_device[] entries were added
    twice for 0x01e8 and there was none added for 0x01e9. Fix that.
    
    Fixes: c8000deb68365b ("HID: multitouch: Add support for GT7868Q")
    Reported-by: He Lugang <[email protected]>
    Reported-by: WangYuli <[email protected]>
    Reported-by: Ulrich Müller <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: Wacom: Add PCI Wacom device support [+ + +]
Author: Even Xu <[email protected]>
Date:   Thu Dec 26 09:35:27 2024 +0800

    HID: Wacom: Add PCI Wacom device support
    
    [ Upstream commit c4c123504a65583e3689b3de04a61dc5272e453a ]
    
    Add PCI device ID of wacom device into driver support list.
    
    Signed-off-by: Even Xu <[email protected]>
    Tested-by: Tatsunosuke Tobita <[email protected]>
    Reviewed-by: Ping Cheng <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
i2c: Force ELAN06FA touchpad I2C bus freq to 100KHz [+ + +]
Author: Randolph Ha <[email protected]>
Date:   Mon Jan 13 14:52:37 2025 -0500

    i2c: Force ELAN06FA touchpad I2C bus freq to 100KHz
    
    [ Upstream commit bfd74cd1fbc026f04446e67d6915c7e199c2bffd ]
    
    When a 400KHz freq is used on this model of ELAN touchpad in Linux,
    excessive smoothing (similar to when the touchpad's firmware detects
    a noisy signal) is sometimes applied. As some devices' (e.g, Lenovo
    V15 G4) ACPI tables specify a 400KHz frequency for this device and
    some I2C busses (e.g, Designware I2C) default to a 400KHz freq,
    force the speed to 100KHz as a workaround.
    
    For future investigation: This problem may be related to the default
    HCNT/LCNT values given by some busses' drivers, because they are not
    specified in the aforementioned devices' ACPI tables, and because
    the device works without issues on Windows at what is expected to be
    a 400KHz frequency. The root cause of the issue is not known.
    
    Signed-off-by: Randolph Ha <[email protected]>
    Reviewed-by: Mika Westerberg <[email protected]>
    Signed-off-by: Wolfram Sang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
i3c: master: cdns: Fix use after free vulnerability in cdns_i3c_master Driver Due to Race Condition [+ + +]
Author: Kaixin Wang <[email protected]>
Date:   Wed Sep 11 23:35:44 2024 +0800

    i3c: master: cdns: Fix use after free vulnerability in cdns_i3c_master Driver Due to Race Condition
    
    commit 609366e7a06d035990df78f1562291c3bf0d4a12 upstream.
    
    In the cdns_i3c_master_probe function, &master->hj_work is bound with
    cdns_i3c_master_hj. And cdns_i3c_master_interrupt can call
    cnds_i3c_master_demux_ibis function to start the work.
    
    If we remove the module which will call cdns_i3c_master_remove to
    make cleanup, it will free master->base through i3c_master_unregister
    while the work mentioned above will be used. The sequence of operations
    that may lead to a UAF bug is as follows:
    
    CPU0                                      CPU1
    
                                         | cdns_i3c_master_hj
    cdns_i3c_master_remove               |
    i3c_master_unregister(&master->base) |
    device_unregister(&master->dev)      |
    device_release                       |
    //free master->base                  |
                                         | i3c_master_do_daa(&master->base)
                                         | //use master->base
    
    Fix it by ensuring that the work is canceled before proceeding with
    the cleanup in cdns_i3c_master_remove.
    
    Signed-off-by: Kaixin Wang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

i3c: master: Fix missing 'ret' assignment in set_speed() [+ + +]
Author: Frank Li <[email protected]>
Date:   Wed Jan 8 17:55:33 2025 -0500

    i3c: master: Fix missing 'ret' assignment in set_speed()
    
    commit b266e0d4dac00eecdfaf50ec3f708fd0c3b39637 upstream.
    
    Fix a probe failure in the i3c master driver that occurs when no i3c
    devices are connected to the bus.
    
    The issue arises in `i3c_master_bus_init()` where the `ret` value is not
    updated after calling `master->ops->set_speed()`. If no devices are
    present, `ret` remains set to `I3C_ERROR_M2`, causing the code to
    incorrectly proceed to `err_bus_cleanup`.
    
    Cc: [email protected]
    Fixes: aef79e189ba2 ("i3c: master: support to adjust first broadcast address speed")
    Signed-off-by: Frank Li <[email protected]>
    Reviewed-by: Wolfram Sang <[email protected]>
    Tested-by: Wolfram Sang <[email protected]>
    Acked-by: Mukesh Kumar Savaliya <[email protected]>
    Reviewed-by: Miquel Raynal <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
iavf: allow changing VLAN state without calling PF [+ + +]
Author: Michal Swiatkowski <[email protected]>
Date:   Thu Sep 5 11:14:10 2024 +0200

    iavf: allow changing VLAN state without calling PF
    
    [ Upstream commit ee7d79433d783346430ee32f28c9df44a88b3bb6 ]
    
    First case:
    > ip l a l $VF name vlanx type vlan id 100
    > ip l d vlanx
    > ip l a l $VF name vlanx type vlan id 100
    
    As workqueue can be execute after sometime, there is a window to have
    call trace like that:
    - iavf_del_vlan
    - iavf_add_vlan
    - iavf_del_vlans (wq)
    
    It means that our VLAN 100 will change the state from IAVF_VLAN_ACTIVE
    to IAVF_VLAN_REMOVE (iavf_del_vlan). After that in iavf_add_vlan state
    won't be changed because VLAN 100 is on the filter list. The final
    result is that the VLAN 100 filter isn't added in hardware (no
    iavf_add_vlans call).
    
    To fix that change the state if the filter wasn't removed yet directly
    to active. It is save as IAVF_VLAN_REMOVE means that virtchnl message
    wasn't sent yet.
    
    Second case:
    > ip l a l $VF name vlanx type vlan id 100
    Any type of VF reset ex. change trust
    > ip l s $PF vf $VF_NUM trust on
    > ip l d vlanx
    > ip l a l $VF name vlanx type vlan id 100
    
    In case of reset iavf driver is responsible for readding all filters
    that are being used. To do that all VLAN filters state are changed to
    IAVF_VLAN_ADD. Here is even longer window for changing VLAN state from
    kernel side, as workqueue isn't called immediately. We can have call
    trace like that:
    
    - changing to IAVF_VLAN_ADD (after reset)
    - iavf_del_vlan (called from kernel ops)
    - iavf_del_vlans (wq)
    
    Not exsisitng VLAN filters will be removed from hardware. It isn't a
    bug, ice driver will handle it fine. However, we can have call trace
    like that:
    
    - changing to IAVF_VLAN_ADD (after reset)
    - iavf_del_vlan (called from kernel ops)
    - iavf_add_vlan (called from kernel ops)
    - iavf_del_vlans (wq)
    
    With fix for previous case we end up with no VLAN filters in hardware.
    We have to remove VLAN filters if the state is IAVF_VLAN_ADD and delete
    VLAN was called. It is save as IAVF_VLAN_ADD means that virtchnl message
    wasn't sent yet.
    
    Fixes: 0c0da0e95105 ("iavf: refactor VLAN filter states")
    Signed-off-by: Michal Swiatkowski <[email protected]>
    Reviewed-by: Przemek Kitszel <[email protected]>
    Tested-by: Rafal Romanowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iio: light: as73211: fix channel handling in only-color triggered buffer [+ + +]
Author: Javier Carrasco <[email protected]>
Date:   Sat Dec 14 23:55:50 2024 +0100

    iio: light: as73211: fix channel handling in only-color triggered buffer
    
    commit ab09c6cfe01b317f515bcd944668697241a54b9d upstream.
    
    The channel index is off by one unit if AS73211_SCAN_MASK_ALL is not
    set (optimized path for color channel readings), and it must be shifted
    instead of leaving an empty channel for the temperature when it is off.
    
    Once the channel index is fixed, the uninitialized channel must be set
    to zero to avoid pushing uninitialized data.
    
    Add available_scan_masks for all channels and only-color channels to let
    the IIO core demux and repack the enabled channels.
    
    Cc: [email protected]
    Fixes: 403e5586b52e ("iio: light: as73211: New driver")
    Tested-by: Christian Eggers <[email protected]>
    Signed-off-by: Javier Carrasco <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
inetpeer: do not get a refcount in inet_getpeer() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Sun Dec 15 17:56:29 2024 +0000

    inetpeer: do not get a refcount in inet_getpeer()
    
    [ Upstream commit a853c609504e2d1d83e71285e3622fda1f1451d8 ]
    
    All inet_getpeer() callers except ip4_frag_init() don't need
    to acquire a permanent refcount on the inetpeer.
    
    They can switch to full RCU protection.
    
    Move the refcount_inc_not_zero() into ip4_frag_init(),
    so that all the other callers no longer have to
    perform a pair of expensive atomic operations on
    a possibly contended cache line.
    
    inet_putpeer() no longer needs to be exported.
    
    After this patch, my DUT can receive 8,400,000 UDP packets
    per second targeting closed ports, using 50% less cpu cycles
    than before.
    
    Also change two calls to l3mdev_master_ifindex() by
    l3mdev_master_ifindex_rcu() (Ido ideas)
    
    Fixes: 8c2bd38b95f7 ("icmp: change the order of rate limits")
    Signed-off-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

inetpeer: remove create argument of inet_getpeer() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Sun Dec 15 17:56:27 2024 +0000

    inetpeer: remove create argument of inet_getpeer()
    
    [ Upstream commit 7a596a50c4a4eab946aec149171c72321b4934aa ]
    
    All callers of inet_getpeer() want to create an inetpeer.
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: a853c609504e ("inetpeer: do not get a refcount in inet_getpeer()")
    Signed-off-by: Sasha Levin <[email protected]>

inetpeer: remove create argument of inet_getpeer_v[46]() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Sun Dec 15 17:56:26 2024 +0000

    inetpeer: remove create argument of inet_getpeer_v[46]()
    
    [ Upstream commit 661cd8fc8e9039819ca0c22e0add52b632240a9e ]
    
    All callers of inet_getpeer_v4() and inet_getpeer_v6()
    want to create an inetpeer.
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: a853c609504e ("inetpeer: do not get a refcount in inet_getpeer()")
    Signed-off-by: Sasha Levin <[email protected]>

inetpeer: update inetpeer timestamp in inet_getpeer() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Sun Dec 15 17:56:28 2024 +0000

    inetpeer: update inetpeer timestamp in inet_getpeer()
    
    [ Upstream commit 50b362f21d6c10b0f7939c1482c6a1b43da82f1a ]
    
    inet_putpeer() will be removed in the following patch,
    because we will no longer use refcounts.
    
    Update inetpeer timestamp (p->dtime) at lookup time.
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: a853c609504e ("inetpeer: do not get a refcount in inet_getpeer()")
    Signed-off-by: Sasha Levin <[email protected]>

 
Input: allocate keycode for phone linking [+ + +]
Author: Illia Ostapyshyn <[email protected]>
Date:   Thu Nov 14 18:39:29 2024 +0100

    Input: allocate keycode for phone linking
    
    [ Upstream commit 1bebc7869c99d466f819dd2cffaef0edf7d7a035 ]
    
    The F11 key on the new Lenovo Thinkpad T14 Gen 5, T16 Gen 3, and P14s
    Gen 5 laptops includes a symbol showing a smartphone and a laptop
    chained together.  According to the user manual, it starts the Microsoft
    Phone Link software used to connect to Android/iOS devices and relay
    messages/calls or sync data.
    
    As there are no suitable keycodes for this action, introduce a new one.
    
    Signed-off-by: Illia Ostapyshyn <[email protected]>
    Acked-by: Dmitry Torokhov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
io_uring/net: don't retry connect operation on EPOLLERR [+ + +]
Author: Jens Axboe <[email protected]>
Date:   Thu Jan 30 08:40:29 2025 -0700

    io_uring/net: don't retry connect operation on EPOLLERR
    
    commit 8c8492ca64e79c6e0f433e8c9d2bcbd039ef83d0 upstream.
    
    If a socket is shutdown before the connection completes, POLLERR is set
    in the poll mask. However, connect ignores this as it doesn't know, and
    attempts the connection again. This may lead to a bogus -ETIMEDOUT
    result, where it should have noticed the POLLERR and just returned
    -ECONNRESET instead.
    
    Have the poll logic check for whether or not POLLERR is set in the mask,
    and if so, mark the request as failed. Then connect can appropriately
    fail the request rather than retry it.
    
    Reported-by: Sergey Galas <[email protected]>
    Cc: [email protected]
    Link: https://github.com/axboe/liburing/discussions/1335
    Fixes: 3fb1bd688172 ("io_uring/net: handle -EINPROGRESS correct for IORING_OP_CONNECT")
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
io_uring/rw: commit provided buffer state on async [+ + +]
Author: Pavel Begunkov <[email protected]>
Date:   Mon Feb 10 17:27:56 2025 +0000

    io_uring/rw: commit provided buffer state on async
    
    When we get -EIOCBQUEUED, we need to ensure that the buffer is consumed
    from the provided buffer ring, which can be done with io_kbuf_recycle()
    + REQ_F_PARTIAL_IO.
    
    Reported-by: Muhammad Ramdhan <[email protected]>
    Reported-by: Bing-Jhong Billy Jheng <[email protected]>
    Reported-by: Jacob Soo <[email protected]>
    Fixes: c7fb19428d67d ("io_uring: add support for ring mapped supplied buffers")
    Signed-off-by: Pavel Begunkov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
io_uring: fix io_req_prep_async with provided buffers [+ + +]
Author: Pavel Begunkov <[email protected]>
Date:   Mon Feb 10 17:27:55 2025 +0000

    io_uring: fix io_req_prep_async with provided buffers
    
    io_req_prep_async() can import provided buffers, commit the ring state
    by giving up on that before, it'll be reimported later if needed.
    
    Reported-by: Muhammad Ramdhan <[email protected]>
    Reported-by: Bing-Jhong Billy Jheng <[email protected]>
    Reported-by: Jacob Soo <[email protected]>
    Fixes: c7fb19428d67d ("io_uring: add support for ring mapped supplied buffers")
    Signed-off-by: Pavel Begunkov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

io_uring: fix multishots with selected buffers [+ + +]
Author: Pavel Begunkov <[email protected]>
Date:   Mon Feb 10 17:27:54 2025 +0000

    io_uring: fix multishots with selected buffers
    
    [ upstream commit d63b0e8a628e62ca85a0f7915230186bb92f8bb4 ]
    
    We do io_kbuf_recycle() when arming a poll but every iteration of a
    multishot can grab more buffers, which is why we need to flush the kbuf
    ring state before continuing with waiting.
    
    Cc: [email protected]
    Fixes: b3fdea6ecb55c ("io_uring: multishot recv")
    Reported-by: Muhammad Ramdhan <[email protected]>
    Reported-by: Bing-Jhong Billy Jheng <[email protected]>
    Reported-by: Jacob Soo <[email protected]>
    Signed-off-by: Pavel Begunkov <[email protected]>
    Link: https://lore.kernel.org/r/1bfc9990fe435f1fc6152ca9efeba5eb3e68339c.1738025570.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
iommu/arm-smmu-v3: Clean up more on probe failure [+ + +]
Author: Robin Murphy <[email protected]>
Date:   Thu Dec 5 16:33:57 2024 +0000

    iommu/arm-smmu-v3: Clean up more on probe failure
    
    [ Upstream commit fcbd621567420b3a2f21f49bbc056de8b273c625 ]
    
    kmemleak noticed that the iopf queue allocated deep down within
    arm_smmu_init_structures() can be leaked by a subsequent error return
    from arm_smmu_device_probe(). Furthermore, after arm_smmu_device_reset()
    we will also leave the SMMU enabled with an empty Stream Table, silently
    blocking all DMA. This proves rather annoying for debugging said probe
    failure, so let's handle it a bit better by putting the SMMU back into
    (more or less) the same state as if it hadn't probed at all.
    
    Signed-off-by: Robin Murphy <[email protected]>
    Link: https://lore.kernel.org/r/5137901958471cf67f2fad5c2229f8a8f1ae901a.1733406914.git.robin.murphy@arm.com
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iommu: Return right value in iommu_sva_bind_device() [+ + +]
Author: Lu Baolu <[email protected]>
Date:   Tue May 28 12:25:28 2024 +0800

    iommu: Return right value in iommu_sva_bind_device()
    
    commit 89e8a2366e3bce584b6c01549d5019c5cda1205e upstream.
    
    iommu_sva_bind_device() should return either a sva bond handle or an
    ERR_PTR value in error cases. Existing drivers (idxd and uacce) only
    check the return value with IS_ERR(). This could potentially lead to
    a kernel NULL pointer dereference issue if the function returns NULL
    instead of an error pointer.
    
    In reality, this doesn't cause any problems because iommu_sva_bind_device()
    only returns NULL when the kernel is not configured with CONFIG_IOMMU_SVA.
    In this case, iommu_dev_enable_feature(dev, IOMMU_DEV_FEAT_SVA) will
    return an error, and the device drivers won't call iommu_sva_bind_device()
    at all.
    
    Fixes: 26b25a2b98e4 ("iommu: Bind process address spaces to devices")
    Signed-off-by: Lu Baolu <[email protected]>
    Reviewed-by: Jean-Philippe Brucker <[email protected]>
    Reviewed-by: Kevin Tian <[email protected]>
    Reviewed-by: Vasant Hegde <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Joerg Roedel <[email protected]>
    Signed-off-by: Bin Lan <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
iommufd/iova_bitmap: Fix shift-out-of-bounds in iova_bitmap_offset_to_index() [+ + +]
Author: Qasim Ijaz <[email protected]>
Date:   Mon Jan 13 22:38:20 2025 +0000

    iommufd/iova_bitmap: Fix shift-out-of-bounds in iova_bitmap_offset_to_index()
    
    [ Upstream commit e24c1551059268b37f6f40639883eafb281b8b9c ]
    
    Resolve a UBSAN shift-out-of-bounds issue in iova_bitmap_offset_to_index()
    where shifting the constant "1" (of type int) by bitmap->mapped.pgshift
    (an unsigned long value) could result in undefined behavior.
    
    The constant "1" defaults to a 32-bit "int", and when "pgshift" exceeds
    31 (e.g., pgshift = 63) the shift operation overflows, as the result
    cannot be represented in a 32-bit type.
    
    To resolve this, the constant is updated to "1UL", promoting it to an
    unsigned long type to match the operand's type.
    
    Fixes: 58ccf0190d19 ("vfio: Add an IOVA bitmap support")
    Link: https://patch.msgid.link/r/[email protected]
    Reported-by: syzbot <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=85992ace37d5b7b51635
    Signed-off-by: Qasim Ijaz <[email protected]>
    Reviewed-by: Joao Martins <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ipmi: ipmb: Add check devm_kasprintf() returned value [+ + +]
Author: Charles Han <[email protected]>
Date:   Thu Sep 26 17:44:19 2024 +0800

    ipmi: ipmb: Add check devm_kasprintf() returned value
    
    [ Upstream commit 2378bd0b264ad3a1f76bd957caf33ee0c7945351 ]
    
    devm_kasprintf() can return a NULL pointer on failure but this
    returned value is not checked.
    
    Fixes: 51bd6f291583 ("Add support for IPMB driver")
    Signed-off-by: Charles Han <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Corey Minyard <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ipmr: do not call mr_mfc_uses_dev() for unres entries [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Tue Jan 21 18:12:41 2025 +0000

    ipmr: do not call mr_mfc_uses_dev() for unres entries
    
    [ Upstream commit 15a901361ec3fb1c393f91880e1cbf24ec0a88bd ]
    
    syzbot found that calling mr_mfc_uses_dev() for unres entries
    would crash [1], because c->mfc_un.res.minvif / c->mfc_un.res.maxvif
    alias to "struct sk_buff_head unresolved", which contain two pointers.
    
    This code never worked, lets remove it.
    
    [1]
    Unable to handle kernel paging request at virtual address ffff5fff2d536613
    KASAN: maybe wild-memory-access in range [0xfffefff96a9b3098-0xfffefff96a9b309f]
    Modules linked in:
    CPU: 1 UID: 0 PID: 7321 Comm: syz.0.16 Not tainted 6.13.0-rc7-syzkaller-g1950a0af2d55 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
     pc : mr_mfc_uses_dev net/ipv4/ipmr_base.c:290 [inline]
     pc : mr_table_dump+0x5a4/0x8b0 net/ipv4/ipmr_base.c:334
     lr : mr_mfc_uses_dev net/ipv4/ipmr_base.c:289 [inline]
     lr : mr_table_dump+0x694/0x8b0 net/ipv4/ipmr_base.c:334
    Call trace:
      mr_mfc_uses_dev net/ipv4/ipmr_base.c:290 [inline] (P)
      mr_table_dump+0x5a4/0x8b0 net/ipv4/ipmr_base.c:334 (P)
      mr_rtm_dumproute+0x254/0x454 net/ipv4/ipmr_base.c:382
      ipmr_rtm_dumproute+0x248/0x4b4 net/ipv4/ipmr.c:2648
      rtnl_dump_all+0x2e4/0x4e8 net/core/rtnetlink.c:4327
      rtnl_dumpit+0x98/0x1d0 net/core/rtnetlink.c:6791
      netlink_dump+0x4f0/0xbc0 net/netlink/af_netlink.c:2317
      netlink_recvmsg+0x56c/0xe64 net/netlink/af_netlink.c:1973
      sock_recvmsg_nosec net/socket.c:1033 [inline]
      sock_recvmsg net/socket.c:1055 [inline]
      sock_read_iter+0x2d8/0x40c net/socket.c:1125
      new_sync_read fs/read_write.c:484 [inline]
      vfs_read+0x740/0x970 fs/read_write.c:565
      ksys_read+0x15c/0x26c fs/read_write.c:708
    
    Fixes: cb167893f41e ("net: Plumb support for filtering ipv4 and ipv6 multicast route dumps")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ipv4: add RCU protection to ip4_dst_hoplimit() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Feb 5 15:51:10 2025 +0000

    ipv4: add RCU protection to ip4_dst_hoplimit()
    
    [ Upstream commit 469308552ca4560176cfc100e7ca84add1bebd7c ]
    
    ip4_dst_hoplimit() must use RCU protection to make
    sure the net structure it reads does not disappear.
    
    Fixes: fa50d974d104 ("ipv4: Namespaceify ip_default_ttl sysctl knob")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ipv4: icmp: convert to dev_net_rcu() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Feb 5 15:51:16 2025 +0000

    ipv4: icmp: convert to dev_net_rcu()
    
    [ Upstream commit 4b8474a0951e605d2a27a2c483da4eb4b8c63760 ]
    
    __icmp_send() must ensure rcu_read_lock() is held, as spotted
    by Jakub.
    
    Other ICMP uses of dev_net() seem safe, change them to dev_net_rcu()
    to get LOCKDEP support.
    
    Fixes: dde1bc0e6f86 ("[NETNS]: Add namespace for ICMP replying code.")
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Reported-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ipv4: use RCU protection in __ip_rt_update_pmtu() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Feb 5 15:51:15 2025 +0000

    ipv4: use RCU protection in __ip_rt_update_pmtu()
    
    [ Upstream commit 139512191bd06f1b496117c76372b2ce372c9a41 ]
    
    __ip_rt_update_pmtu() must use RCU protection to make
    sure the net structure it reads does not disappear.
    
    Fixes: 2fbc6e89b2f1 ("ipv4: Update exception handling for multipath routes via same device")
    Fixes: 1de6b15a434c ("Namespaceify min_pmtu sysctl")
    Signed-off-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ipv4: use RCU protection in inet_select_addr() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Feb 5 15:51:14 2025 +0000

    ipv4: use RCU protection in inet_select_addr()
    
    [ Upstream commit 719817cd293e4fa389e1f69c396f3f816ed5aa41 ]
    
    inet_select_addr() must use RCU protection to make
    sure the net structure it reads does not disappear.
    
    Fixes: c4544c724322 ("[NETNS]: Process inet_select_addr inside a namespace.")
    Signed-off-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ipv4: use RCU protection in ipv4_default_advmss() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Feb 5 15:51:12 2025 +0000

    ipv4: use RCU protection in ipv4_default_advmss()
    
    [ Upstream commit 71b8471c93fa0bcab911fcb65da1eb6c4f5f735f ]
    
    ipv4_default_advmss() must use RCU protection to make
    sure the net structure it reads does not disappear.
    
    Fixes: 2e9589ff809e ("ipv4: Namespaceify min_adv_mss sysctl knob")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ipv4: use RCU protection in rt_is_expired() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Feb 5 15:51:13 2025 +0000

    ipv4: use RCU protection in rt_is_expired()
    
    [ Upstream commit dd205fcc33d92d54eee4d7f21bb073af9bd5ce2b ]
    
    rt_is_expired() must use RCU protection to make
    sure the net structure it reads does not disappear.
    
    Fixes: e84f84f27647 ("netns: place rt_genid into struct net")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ipv6: mcast: add RCU protection to mld_newpack() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Feb 12 14:10:21 2025 +0000

    ipv6: mcast: add RCU protection to mld_newpack()
    
    [ Upstream commit a527750d877fd334de87eef81f1cb5f0f0ca3373 ]
    
    mld_newpack() can be called without RTNL or RCU being held.
    
    Note that we no longer can use sock_alloc_send_skb() because
    ipv6.igmp_sk uses GFP_KERNEL allocations which can sleep.
    
    Instead use alloc_skb() and charge the net->ipv6.igmp_sk
    socket under RCU protection.
    
    Fixes: b8ad0cbc58f7 ("[NETNS][IPV6] mcast - handle several network namespace")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ipv6: use RCU protection in ip6_default_advmss() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Feb 5 15:51:18 2025 +0000

    ipv6: use RCU protection in ip6_default_advmss()
    
    [ Upstream commit 3c8ffcd248da34fc41e52a46e51505900115fc2a ]
    
    ip6_default_advmss() needs rcu protection to make
    sure the net structure it reads does not disappear.
    
    Fixes: 5578689a4e3c ("[NETNS][IPV6] route6 - make route6 per namespace")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
irqchip/apple-aic: Only handle PMC interrupt as FIQ when configured so [+ + +]
Author: Nick Chan <[email protected]>
Date:   Sun Jan 19 00:31:42 2025 +0800

    irqchip/apple-aic: Only handle PMC interrupt as FIQ when configured so
    
    commit 698244bbb3bfd32ddf9a0b70a12b1c7d69056497 upstream.
    
    The CPU PMU in Apple SoCs can be configured to fire its interrupt in one of
    several ways, and since Apple A11 one of the methods is FIQ, but the check
    of the configuration register fails to test explicitely for FIQ mode. It
    tests whether the IMODE bitfield is zero or not and the PMCRO_IACT bit is
    set. That results in false positives when the IMODE bitfield is not zero,
    but does not have the mode PMCR0_IMODE_FIQ.
    
    Only handle the PMC interrupt as a FIQ when the CPU PMU has been configured
    to fire FIQs, i.e. the IMODE bitfield value is PMCR0_IMODE_FIQ and
    PMCR0_IACT is set.
    
    Fixes: c7708816c944 ("irqchip/apple-aic: Wire PMU interrupts")
    Signed-off-by: Nick Chan <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
kbuild: Move -Wenum-enum-conversion to W=2 [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Thu Oct 17 10:09:22 2024 -0700

    kbuild: Move -Wenum-enum-conversion to W=2
    
    commit 8f6629c004b193d23612641c3607e785819e97ab upstream.
    
    -Wenum-enum-conversion was strengthened in clang-19 to warn for C, which
    caused the kernel to move it to W=1 in commit 75b5ab134bb5 ("kbuild:
    Move -Wenum-{compare-conditional,enum-conversion} into W=1") because
    there were numerous instances that would break builds with -Werror.
    Unfortunately, this is not a full solution, as more and more developers,
    subsystems, and distributors are building with W=1 as well, so they
    continue to see the numerous instances of this warning.
    
    Since the move to W=1, there have not been many new instances that have
    appeared through various build reports and the ones that have appeared
    seem to be following similar existing patterns, suggesting that most
    instances of this warning will not be real issues. The only alternatives
    for silencing this warning are adding casts (which is generally seen as
    an ugly practice) or refactoring the enums to macro defines or a unified
    enum (which may be undesirable because of type safety in other parts of
    the code).
    
    Move the warning to W=2, where warnings that occur frequently but may be
    relevant should reside.
    
    Cc: [email protected]
    Fixes: 75b5ab134bb5 ("kbuild: Move -Wenum-{compare-conditional,enum-conversion} into W=1")
    Link: https://lore.kernel.org/[email protected]/
    Signed-off-by: Nathan Chancellor <[email protected]>
    Acked-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

kbuild: switch from lz4c to lz4 for compression [+ + +]
Author: Parth Pancholi <[email protected]>
Date:   Thu Nov 14 15:56:44 2024 +0100

    kbuild: switch from lz4c to lz4 for compression
    
    commit e397a603e49cc7c7c113fad9f55a09637f290c34 upstream.
    
    Replace lz4c with lz4 for kernel image compression.
    Although lz4 and lz4c are functionally similar, lz4c has been deprecated
    upstream since 2018. Since as early as Ubuntu 16.04 and Fedora 25, lz4
    and lz4c have been packaged together, making it safe to update the
    requirement from lz4c to lz4.
    
    Consequently, some distributions and build systems, such as OpenEmbedded,
    have fully transitioned to using lz4. OpenEmbedded core adopted this
    change in commit fe167e082cbd ("bitbake.conf: require lz4 instead of
    lz4c"), causing compatibility issues when building the mainline kernel
    in the latest OpenEmbedded environment, as seen in the errors below.
    
    This change also updates the LZ4 compression commands to make it backward
    compatible by replacing stdin and stdout with the '-' option, due to some
    unclear reason, the stdout keyword does not work for lz4 and '-' works for
    both. In addition, this modifies the legacy '-c1' with '-9' which is also
    compatible with both. This fixes the mainline kernel build failures with
    the latest master OpenEmbedded builds associated with the mentioned
    compatibility issues.
    
    LZ4     arch/arm/boot/compressed/piggy_data
    /bin/sh: 1: lz4c: not found
    ...
    ...
    ERROR: oe_runmake failed
    
    Link: https://github.com/lz4/lz4/pull/553
    Suggested-by: Francesco Dolcini <[email protected]>
    Signed-off-by: Parth Pancholi <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Cc: Salvatore Bonaccorso <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
kconfig: add warn-unknown-symbols sanity check [+ + +]
Author: Sergey Senozhatsky <[email protected]>
Date:   Wed Aug 30 09:49:36 2023 +0900

    kconfig: add warn-unknown-symbols sanity check
    
    [ Upstream commit 7cd343008b967423b06af8f6d3236749c67d12e8 ]
    
    Introduce KCONFIG_WARN_UNKNOWN_SYMBOLS environment variable,
    which makes Kconfig warn about unknown config symbols.
    
    This is especially useful for continuous kernel uprevs when
    some symbols can be either removed or renamed between kernel
    releases (which can go unnoticed otherwise).
    
    By default KCONFIG_WARN_UNKNOWN_SYMBOLS generates warnings,
    which are non-terminal. There is an additional environment
    variable KCONFIG_WERROR that overrides this behaviour and
    turns warnings into errors.
    
    Signed-off-by: Sergey Senozhatsky <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Stable-dep-of: a409fc1463d6 ("kconfig: fix memory leak in sym_warn_unmet_dep()")
    Signed-off-by: Sasha Levin <[email protected]>

kconfig: deduplicate code in conf_read_simple() [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Sat Nov 18 16:59:09 2023 +0900

    kconfig: deduplicate code in conf_read_simple()
    
    [ Upstream commit d854b4b21de684a16a7d6163c7b0e9c5ff8a09d3 ]
    
    Kconfig accepts both "# CONFIG_FOO is not set" and "CONFIG_FOO=n" as
    a valid input, but conf_read_simple() duplicates similar code to handle
    them. Factor out the common code.
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Stable-dep-of: a409fc1463d6 ("kconfig: fix memory leak in sym_warn_unmet_dep()")
    Signed-off-by: Sasha Levin <[email protected]>

kconfig: fix file name in warnings when loading KCONFIG_DEFCONFIG_LIST [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Mon Jan 20 16:59:14 2025 +0900

    kconfig: fix file name in warnings when loading KCONFIG_DEFCONFIG_LIST
    
    [ Upstream commit a314f52a0210730d0d556de76bb7388e76d4597d ]
    
    Most 'make *config' commands use .config as the base configuration file.
    
    When .config does not exist, Kconfig tries to load a file listed in
    KCONFIG_DEFCONFIG_LIST instead.
    
    However, since commit b75b0a819af9 ("kconfig: change defconfig_list
    option to environment variable"), warning messages have displayed an
    incorrect file name in such cases.
    
    Below is a demonstration using Debian Trixie. While loading
    /boot/config-6.12.9-amd64, the warning messages incorrectly show .config
    as the file name.
    
    With this commit, the correct file name is displayed in warnings.
    
    [Before]
    
      $ rm -f .config
      $ make config
      #
      # using defaults found in /boot/config-6.12.9-amd64
      #
      .config:6804:warning: symbol value 'm' invalid for FB_BACKLIGHT
      .config:9895:warning: symbol value 'm' invalid for ANDROID_BINDER_IPC
    
    [After]
    
      $ rm -f .config
      $ make config
      #
      # using defaults found in /boot/config-6.12.9-amd64
      #
      /boot/config-6.12.9-amd64:6804:warning: symbol value 'm' invalid for FB_BACKLIGHT
      /boot/config-6.12.9-amd64:9895:warning: symbol value 'm' invalid for ANDROID_BINDER_IPC
    
    Fixes: b75b0a819af9 ("kconfig: change defconfig_list option to environment variable")
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

kconfig: fix memory leak in sym_warn_unmet_dep() [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Mon Jan 20 17:10:31 2025 +0900

    kconfig: fix memory leak in sym_warn_unmet_dep()
    
    [ Upstream commit a409fc1463d664002ea9bf700ae4674df03de111 ]
    
    The string allocated in sym_warn_unmet_dep() is never freed, leading
    to a memory leak when an unmet dependency is detected.
    
    Fixes: f8f69dc0b4e0 ("kconfig: make unmet dependency warnings readable")
    Signed-off-by: Masahiro Yamada <[email protected]>
    Reviewed-by: Petr Vorel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

kconfig: remove unused code for S_DEF_AUTO in conf_read_simple() [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Sat Nov 18 16:59:08 2023 +0900

    kconfig: remove unused code for S_DEF_AUTO in conf_read_simple()
    
    [ Upstream commit 92d4fe0a48f1ab6cf20143dd0b376f4fe842854b ]
    
    The 'else' arm here is unreachable in practical use cases.
    
    include/config/auto.conf does not include "# CONFIG_... is not set"
    line unless it is manually hacked.
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Stable-dep-of: a409fc1463d6 ("kconfig: fix memory leak in sym_warn_unmet_dep()")
    Signed-off-by: Sasha Levin <[email protected]>

kconfig: require a space after '#' for valid input [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Sat Nov 18 16:59:07 2023 +0900

    kconfig: require a space after '#' for valid input
    
    [ Upstream commit 4d137ab0107ead0f2590fc0314e627431e3b9e3f ]
    
    Currently, when an input line starts with '#', (line + 2) is passed to
    memcmp() without checking line[1].
    
    It means that line[1] can be any arbitrary character. For example,
    "#KCONFIG_FOO is not set" is accepted as valid input, functioning the
    same as "# CONFIG_FOO is not set".
    
    More importantly, this can potentially lead to a buffer overrun if
    line[1] == '\0'. It occurs if the input only contains '#', as
    (line + 2) points to an uninitialized buffer.
    
    Check line[1], and skip the line if it is not a space.
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Stable-dep-of: a409fc1463d6 ("kconfig: fix memory leak in sym_warn_unmet_dep()")
    Signed-off-by: Sasha Levin <[email protected]>

kconfig: WERROR unmet symbol dependency [+ + +]
Author: Sergey Senozhatsky <[email protected]>
Date:   Wed Nov 22 12:47:45 2023 +0900

    kconfig: WERROR unmet symbol dependency
    
    [ Upstream commit 15d3f7664d2776c086f813f1efbfe2ae20a85e89 ]
    
    When KCONFIG_WERROR env variable is set treat unmet direct
    symbol dependency as a terminal condition (error).
    
    Suggested-by: Stefan Reinauer <[email protected]>
    Signed-off-by: Sergey Senozhatsky <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Stable-dep-of: a409fc1463d6 ("kconfig: fix memory leak in sym_warn_unmet_dep()")
    Signed-off-by: Sasha Levin <[email protected]>

 
kdb: Do not assume write() callback available [+ + +]
Author: John Ogness <[email protected]>
Date:   Mon Jul 17 21:52:01 2023 +0206

    kdb: Do not assume write() callback available
    
    commit 6d3e0d8cc63221dec670d0ee92ac57961581e975 upstream.
    
    It is allowed for consoles to not provide a write() callback. For
    example ttynull does this.
    
    Check if a write() callback is available before using it.
    
    Signed-off-by: John Ogness <[email protected]>
    Reviewed-by: Petr Mladek <[email protected]>
    Reviewed-by: Douglas Anderson <[email protected]>
    Reviewed-by: Daniel Thompson <[email protected]>
    Acked-by: Daniel Thompson <[email protected]>
    Reviewed-by: Sergey Senozhatsky <[email protected]>
    Signed-off-by: Petr Mladek <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: Brian Norris <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
kfence: skip __GFP_THISNODE allocations on NUMA systems [+ + +]
Author: Marco Elver <[email protected]>
Date:   Fri Jan 24 13:01:38 2025 +0100

    kfence: skip __GFP_THISNODE allocations on NUMA systems
    
    commit e64f81946adf68cd75e2207dd9a51668348a4af8 upstream.
    
    On NUMA systems, __GFP_THISNODE indicates that an allocation _must_ be on
    a particular node, and failure to allocate on the desired node will result
    in a failed allocation.
    
    Skip __GFP_THISNODE allocations if we are running on a NUMA system, since
    KFENCE can't guarantee which node its pool pages are allocated on.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 236e9f153852 ("kfence: skip all GFP_ZONEMASK allocations")
    Signed-off-by: Marco Elver <[email protected]>
    Reported-by: Vlastimil Babka <[email protected]>
    Acked-by: Vlastimil Babka <[email protected]>
    Cc: Christoph Lameter <[email protected]>
    Cc: Alexander Potapenko <[email protected]>
    Cc: Chistoph Lameter <[email protected]>
    Cc: Dmitriy Vyukov <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ksmbd: fix integer overflows on 32 bit systems [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Wed Jan 15 09:28:35 2025 +0900

    ksmbd: fix integer overflows on 32 bit systems
    
    commit aab98e2dbd648510f8f51b83fbf4721206ccae45 upstream.
    
    On 32bit systems the addition operations in ipc_msg_alloc() can
    potentially overflow leading to memory corruption.
    Add bounds checking using KSMBD_IPC_MAX_PAYLOAD to avoid overflow.
    
    Fixes: 0626e6641f6b ("cifsd: add server handler for central processing and tranport layers")
    Cc: [email protected]
    Signed-off-by: Dan Carpenter <[email protected]>
    Signed-off-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ktest.pl: Check kernelrelease return in get_version [+ + +]
Author: Ricardo B. Marliere <[email protected]>
Date:   Thu Dec 5 17:50:35 2024 -0300

    ktest.pl: Check kernelrelease return in get_version
    
    commit a4e17a8f239a545c463f8ec27db4ed6e74b31841 upstream.
    
    In the case of a test that uses the special option ${KERNEL_VERSION} in one
    of its settings but has no configuration available in ${OUTPUT_DIR}, for
    example if it's a new empty directory, then the `make kernelrelease` call
    will fail and the subroutine will chomp an empty string, silently. Fix that
    by adding an empty configuration and retrying.
    
    Cc: [email protected]
    Cc: John Hawley <[email protected]>
    Fixes: 5f9b6ced04a4e ("ktest: Bisecting, install modules, add logging")
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Ricardo B. Marliere <[email protected]>
    Signed-off-by: Steven Rostedt <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ktest.pl: Remove unused declarations in run_bisect_test function [+ + +]
Author: Ba Jing <[email protected]>
Date:   Mon Sep 2 21:07:35 2024 +0800

    ktest.pl: Remove unused declarations in run_bisect_test function
    
    [ Upstream commit 776735b954f49f85fd19e1198efa421fae2ad77c ]
    
    Since $output and $ret are not used in the subsequent code, the declarations
    should be removed.
    
    Fixes: a75fececff3c ("ktest: Added sample.conf, new %default option format")
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Ba Jing <[email protected]>
    Signed-off-by: Steven Rostedt <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
KVM: e500: always restore irqs [+ + +]
Author: Paolo Bonzini <[email protected]>
Date:   Sun Jan 12 10:34:44 2025 +0100

    KVM: e500: always restore irqs
    
    [ Upstream commit 87ecfdbc699cc95fac73291b52650283ddcf929d ]
    
    If find_linux_pte fails, IRQs will not be restored.  This is unlikely
    to happen in practice since it would have been reported as hanging
    hosts, but it should of course be fixed anyway.
    
    Cc: [email protected]
    Reported-by: Sean Christopherson <[email protected]>
    Signed-off-by: Paolo Bonzini <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

KVM: Explicitly verify target vCPU is online in kvm_get_vcpu() [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Wed Oct 9 08:04:50 2024 -0700

    KVM: Explicitly verify target vCPU is online in kvm_get_vcpu()
    
    commit 1e7381f3617d14b3c11da80ff5f8a93ab14cfc46 upstream.
    
    Explicitly verify the target vCPU is fully online _prior_ to clamping the
    index in kvm_get_vcpu().  If the index is "bad", the nospec clamping will
    generate '0', i.e. KVM will return vCPU0 instead of NULL.
    
    In practice, the bug is unlikely to cause problems, as it will only come
    into play if userspace or the guest is buggy or misbehaving, e.g. KVM may
    send interrupts to vCPU0 instead of dropping them on the floor.
    
    However, returning vCPU0 when it shouldn't exist per online_vcpus is
    problematic now that KVM uses an xarray for the vCPUs array, as KVM needs
    to insert into the xarray before publishing the vCPU to userspace (see
    commit c5b077549136 ("KVM: Convert the kvm->vcpus array to a xarray")),
    i.e. before vCPU creation is guaranteed to succeed.
    
    As a result, incorrectly providing access to vCPU0 will trigger a
    use-after-free if vCPU0 is dereferenced and kvm_vm_ioctl_create_vcpu()
    bails out of vCPU creation due to an error and frees vCPU0.  Commit
    afb2acb2e3a3 ("KVM: Fix vcpu_array[0] races") papered over that issue, but
    in doing so introduced an unsolvable teardown conundrum.  Preventing
    accesses to vCPU0 before it's fully online will allow reverting commit
    afb2acb2e3a3, without re-introducing the vcpu_array[0] UAF race.
    
    Fixes: 1d487e9bf8ba ("KVM: fix spectrev1 gadgets")
    Cc: [email protected]
    Cc: Will Deacon <[email protected]>
    Cc: Michal Luczaj <[email protected]>
    Reviewed-by: Pankaj Gupta <[email protected]>
    Acked-by: Will Deacon <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

KVM: nSVM: Enter guest mode before initializing nested NPT MMU [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Wed Jan 29 17:08:25 2025 -0800

    KVM: nSVM: Enter guest mode before initializing nested NPT MMU
    
    commit 46d6c6f3ef0eaff71c2db6d77d4e2ebb7adac34f upstream.
    
    When preparing vmcb02 for nested VMRUN (or state restore), "enter" guest
    mode prior to initializing the MMU for nested NPT so that guest_mode is
    set in the MMU's role.  KVM's model is that all L2 MMUs are tagged with
    guest_mode, as the behavior of hypervisor MMUs tends to be significantly
    different than kernel MMUs.
    
    Practically speaking, the bug is relatively benign, as KVM only directly
    queries role.guest_mode in kvm_mmu_free_guest_mode_roots() and
    kvm_mmu_page_ad_need_write_protect(), which SVM doesn't use, and in paths
    that are optimizations (mmu_page_zap_pte() and
    shadow_mmu_try_split_huge_pages()).
    
    And while the role is incorprated into shadow page usage, because nested
    NPT requires KVM to be using NPT for L1, reusing shadow pages across L1
    and L2 is impossible as L1 MMUs will always have direct=1, while L2 MMUs
    will have direct=0.
    
    Hoist the TLB processing and setting of HF_GUEST_MASK to the beginning
    of the flow instead of forcing guest_mode in the MMU, as nothing in
    nested_vmcb02_prepare_control() between the old and new locations touches
    TLB flush requests or HF_GUEST_MASK, i.e. there's no reason to present
    inconsistent vCPU state to the MMU.
    
    Fixes: 69cb877487de ("KVM: nSVM: move MMU setup to nested_prepare_vmcb_control")
    Cc: [email protected]
    Reported-by: Yosry Ahmed <[email protected]>
    Reviewed-by: Yosry Ahmed <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

KVM: PPC: e500: Mark "struct page" dirty in kvmppc_e500_shadow_map() [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Thu Oct 10 11:23:54 2024 -0700

    KVM: PPC: e500: Mark "struct page" dirty in kvmppc_e500_shadow_map()
    
    [ Upstream commit c9be85dabb376299504e0d391d15662c0edf8273 ]
    
    Mark the underlying page as dirty in kvmppc_e500_ref_setup()'s sole
    caller, kvmppc_e500_shadow_map(), which will allow converting e500 to
    __kvm_faultin_pfn() + kvm_release_faultin_page() without having to do
    a weird dance between ref_setup() and shadow_map().
    
    Opportunistically drop the redundant kvm_set_pfn_accessed(), as
    shadow_map() puts the page via kvm_release_pfn_clean().
    
    Signed-off-by: Sean Christopherson <[email protected]>
    Tested-by: Dmitry Osipenko <[email protected]>
    Signed-off-by: Paolo Bonzini <[email protected]>
    Message-ID: <[email protected]>
    Stable-dep-of: 87ecfdbc699c ("KVM: e500: always restore irqs")
    Signed-off-by: Sasha Levin <[email protected]>

KVM: PPC: e500: Mark "struct page" pfn accessed before dropping mmu_lock [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Thu Oct 10 11:23:55 2024 -0700

    KVM: PPC: e500: Mark "struct page" pfn accessed before dropping mmu_lock
    
    [ Upstream commit 84cf78dcd9d65c45ab73998d4ad50f433d53fb93 ]
    
    Mark pages accessed before dropping mmu_lock when faulting in guest memory
    so that shadow_map() can convert to kvm_release_faultin_page() without
    tripping its lockdep assertion on mmu_lock being held.  Marking pages
    accessed outside of mmu_lock is ok (not great, but safe), but marking
    pages _dirty_ outside of mmu_lock can make filesystems unhappy.
    
    Signed-off-by: Sean Christopherson <[email protected]>
    Tested-by: Dmitry Osipenko <[email protected]>
    Signed-off-by: Paolo Bonzini <[email protected]>
    Message-ID: <[email protected]>
    Stable-dep-of: 87ecfdbc699c ("KVM: e500: always restore irqs")
    Signed-off-by: Sasha Levin <[email protected]>

KVM: PPC: e500: Use __kvm_faultin_pfn() to handle page faults [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Thu Oct 10 11:23:56 2024 -0700

    KVM: PPC: e500: Use __kvm_faultin_pfn() to handle page faults
    
    [ Upstream commit 419cfb983ca93e75e905794521afefcfa07988bb ]
    
    Convert PPC e500 to use __kvm_faultin_pfn()+kvm_release_faultin_page(),
    and continue the inexorable march towards the demise of
    kvm_pfn_to_refcounted_page().
    
    Signed-off-by: Sean Christopherson <[email protected]>
    Tested-by: Dmitry Osipenko <[email protected]>
    Signed-off-by: Paolo Bonzini <[email protected]>
    Message-ID: <[email protected]>
    Stable-dep-of: 87ecfdbc699c ("KVM: e500: always restore irqs")
    Signed-off-by: Sasha Levin <[email protected]>

KVM: s390: vsie: fix some corner-cases when grabbing vsie pages [+ + +]
Author: David Hildenbrand <[email protected]>
Date:   Tue Jan 7 16:43:41 2025 +0100

    KVM: s390: vsie: fix some corner-cases when grabbing vsie pages
    
    commit 5f230f41fdd9e799f43a699348dc572bca7159aa upstream.
    
    We try to reuse the same vsie page when re-executing the vsie with a
    given SCB address. The result is that we use the same shadow SCB --
    residing in the vsie page -- and can avoid flushing the TLB when
    re-running the vsie on a CPU.
    
    So, when we allocate a fresh vsie page, or when we reuse a vsie page for
    a different SCB address -- reusing the shadow SCB in different context --
    we set ihcpu=0xffff to trigger the flush.
    
    However, after we looked up the SCB address in the radix tree, but before
    we grabbed the vsie page by raising the refcount to 2, someone could reuse
    the vsie page for a different SCB address, adjusting page->index and the
    radix tree. In that case, we would be reusing the vsie page with a
    wrong page->index.
    
    Another corner case is that we might set the SCB address for a vsie
    page, but fail the insertion into the radix tree. Whoever would reuse
    that page would remove the corresponding radix tree entry -- which might
    now be a valid entry pointing at another page, resulting in the wrong
    vsie page getting removed from the radix tree.
    
    Let's handle such races better, by validating that the SCB address of a
    vsie page didn't change after we grabbed it (not reuse for a different
    SCB; the alternative would be performing another tree lookup), and by
    setting the SCB address to invalid until the insertion in the tree
    succeeded (SCB addresses are aligned to 512, so ULONG_MAX is invalid).
    
    These scenarios are rare, the effects a bit unclear, and these issues were
    only found by code inspection. Let's CC stable to be safe.
    
    Fixes: a3508fbe9dc6 ("KVM: s390: vsie: initial support for nested virtualization")
    Cc: [email protected]
    Signed-off-by: David Hildenbrand <[email protected]>
    Reviewed-by: Claudio Imbrenda <[email protected]>
    Reviewed-by: Christoph Schlameuss <[email protected]>
    Tested-by: Christoph Schlameuss <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Claudio Imbrenda <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

KVM: x86: Reject Hyper-V's SEND_IPI hypercalls if local APIC isn't in-kernel [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Fri Jan 17 16:34:51 2025 -0800

    KVM: x86: Reject Hyper-V's SEND_IPI hypercalls if local APIC isn't in-kernel
    
    commit a8de7f100bb5989d9c3627d3a223ee1c863f3b69 upstream.
    
    Advertise support for Hyper-V's SEND_IPI and SEND_IPI_EX hypercalls if and
    only if the local API is emulated/virtualized by KVM, and explicitly reject
    said hypercalls if the local APIC is emulated in userspace, i.e. don't rely
    on userspace to opt-in to KVM_CAP_HYPERV_ENFORCE_CPUID.
    
    Rejecting SEND_IPI and SEND_IPI_EX fixes a NULL-pointer dereference if
    Hyper-V enlightenments are exposed to the guest without an in-kernel local
    APIC:
    
      dump_stack+0xbe/0xfd
      __kasan_report.cold+0x34/0x84
      kasan_report+0x3a/0x50
      __apic_accept_irq+0x3a/0x5c0
      kvm_hv_send_ipi.isra.0+0x34e/0x820
      kvm_hv_hypercall+0x8d9/0x9d0
      kvm_emulate_hypercall+0x506/0x7e0
      __vmx_handle_exit+0x283/0xb60
      vmx_handle_exit+0x1d/0xd0
      vcpu_enter_guest+0x16b0/0x24c0
      vcpu_run+0xc0/0x550
      kvm_arch_vcpu_ioctl_run+0x170/0x6d0
      kvm_vcpu_ioctl+0x413/0xb20
      __se_sys_ioctl+0x111/0x160
      do_syscal1_64+0x30/0x40
      entry_SYSCALL_64_after_hwframe+0x67/0xd1
    
    Note, checking the sending vCPU is sufficient, as the per-VM irqchip_mode
    can't be modified after vCPUs are created, i.e. if one vCPU has an
    in-kernel local APIC, then all vCPUs have an in-kernel local APIC.
    
    Reported-by: Dongjie Zou <[email protected]>
    Fixes: 214ff83d4473 ("KVM: x86: hyperv: implement PV IPI send hypercalls")
    Fixes: 2bc39970e932 ("x86/kvm/hyper-v: Introduce KVM_GET_SUPPORTED_HV_CPUID")
    Cc: [email protected]
    Reviewed-by: Vitaly Kuznetsov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
landlock: Handle weird files [+ + +]
Author: Mickaël Salaün <[email protected]>
Date:   Fri Jan 10 16:39:13 2025 +0100

    landlock: Handle weird files
    
    [ Upstream commit 49440290a0935f428a1e43a5ac8dc275a647ff80 ]
    
    A corrupted filesystem (e.g. bcachefs) might return weird files.
    Instead of throwing a warning and allowing access to such file, treat
    them as regular files.
    
    Cc: Dave Chinner <[email protected]>
    Cc: Kent Overstreet <[email protected]>
    Cc: Paul Moore <[email protected]>
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/r/[email protected]
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/r/[email protected]
    Reported-by: Ubisectech Sirius <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]
    Fixes: cb2c7d1a1776 ("landlock: Support filesystem access-control")
    Reviewed-by: Günther Noack <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mickaël Salaün <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
leds: lp8860: Write full EEPROM, not only half of it [+ + +]
Author: Alexander Sverdlin <[email protected]>
Date:   Thu Nov 14 11:13:59 2024 +0100

    leds: lp8860: Write full EEPROM, not only half of it
    
    commit 0d2e820a86793595e2a776855d04701109e46663 upstream.
    
    I struggle to explain dividing an ARRAY_SIZE() by the size of an element
    once again. As the latter equals to 2, only the half of EEPROM was ever
    written. Drop the unexplainable division and write full ARRAY_SIZE().
    
    Cc: [email protected]
    Fixes: 7a8685accb95 ("leds: lp8860: Introduce TI lp8860 4 channel LED driver")
    Signed-off-by: Alexander Sverdlin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

leds: netxbig: Fix an OF node reference leak in netxbig_leds_get_of_pdata() [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Mon Dec 16 16:49:23 2024 +0900

    leds: netxbig: Fix an OF node reference leak in netxbig_leds_get_of_pdata()
    
    [ Upstream commit 0508316be63bb735f59bdc8fe4527cadb62210ca ]
    
    netxbig_leds_get_of_pdata() does not release the OF node obtained by
    of_parse_phandle() when of_find_device_by_node() fails. Add an
    of_node_put() call to fix the leak.
    
    This bug was found by an experimental static analysis tool that I am
    developing.
    
    Fixes: 9af512e81964 ("leds: netxbig: Convert to use GPIO descriptors")
    Signed-off-by: Joe Hattori <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
libbpf: don't adjust USDT semaphore address if .stapsdt.base addr is missing [+ + +]
Author: Andrii Nakryiko <[email protected]>
Date:   Thu Nov 21 14:45:58 2024 -0800

    libbpf: don't adjust USDT semaphore address if .stapsdt.base addr is missing
    
    [ Upstream commit 98ebe5ef6f5c4517ba92fb3e56f95827ebea83fd ]
    
    USDT ELF note optionally can record an offset of .stapsdt.base, which is
    used to make adjustments to USDT target attach address. Currently,
    libbpf will do this address adjustment unconditionally if it finds
    .stapsdt.base ELF section in target binary. But there is a corner case
    where .stapsdt.base ELF section is present, but specific USDT note
    doesn't reference it. In such case, libbpf will basically just add base
    address and end up with absolutely incorrect USDT target address.
    
    This adjustment has to be done only if both .stapsdt.sema section is
    present and USDT note is recording a reference to it.
    
    Fixes: 74cc6311cec9 ("libbpf: Add USDT notes parsing and resolution logic")
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Acked-by: Jiri Olsa <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

libbpf: Fix segfault due to libelf functions not setting errno [+ + +]
Author: Quentin Monnet <[email protected]>
Date:   Thu Dec 5 13:59:42 2024 +0000

    libbpf: Fix segfault due to libelf functions not setting errno
    
    [ Upstream commit e10500b69c3f3378f3dcfc8c2fe4cdb74fc844f5 ]
    
    Libelf functions do not set errno on failure. Instead, it relies on its
    internal _elf_errno value, that can be retrieved via elf_errno (or the
    corresponding message via elf_errmsg()). From "man libelf":
    
        If a libelf function encounters an error it will set an internal
        error code that can be retrieved with elf_errno. Each thread
        maintains its own separate error code. The meaning of each error
        code can be determined with elf_errmsg, which returns a string
        describing the error.
    
    As a consequence, libbpf should not return -errno when a function from
    libelf fails, because an empty value will not be interpreted as an error
    and won't prevent the program to stop. This is visible in
    bpf_linker__add_file(), for example, where we call a succession of
    functions that rely on libelf:
    
        err = err ?: linker_load_obj_file(linker, filename, opts, &obj);
        err = err ?: linker_append_sec_data(linker, &obj);
        err = err ?: linker_append_elf_syms(linker, &obj);
        err = err ?: linker_append_elf_relos(linker, &obj);
        err = err ?: linker_append_btf(linker, &obj);
        err = err ?: linker_append_btf_ext(linker, &obj);
    
    If the object file that we try to process is not, in fact, a correct
    object file, linker_load_obj_file() may fail with errno not being set,
    and return 0. In this case we attempt to run linker_append_elf_sysms()
    and may segfault.
    
    This can happen (and was discovered) with bpftool:
    
        $ bpftool gen object output.o sample_ret0.bpf.c
        libbpf: failed to get ELF header for sample_ret0.bpf.c: invalid `Elf' handle
        zsh: segmentation fault (core dumped)  bpftool gen object output.o sample_ret0.bpf.c
    
    Fix the issue by returning a non-null error code (-EINVAL) when libelf
    functions fail.
    
    Fixes: faf6ed321cf6 ("libbpf: Add BPF static linker APIs")
    Signed-off-by: Quentin Monnet <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 6.1.129 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Fri Feb 21 13:50:12 2025 +0100

    Linux 6.1.129
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Pavel Machek (CIP) <[email protected]>
    Tested-by: Salvatore Bonaccorso <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Tested-by: Hardik Garg <[email protected]>
    Tested-by: Slade Watkins <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Reviewed-by: Mark Brown <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Mark Brown <[email protected]>
    Tested-by: Hardik Garg <[email protected]>
    Tested-by: Pavel Machek (CIP) <[email protected]>
    Tested-by: Slade Watkins <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
lockdep: Fix upper limit for LOCKDEP_*_BITS configs [+ + +]
Author: Carlos Llamas <[email protected]>
Date:   Thu Oct 24 18:36:26 2024 +0000

    lockdep: Fix upper limit for LOCKDEP_*_BITS configs
    
    [ Upstream commit e638072e61726cae363d48812815197a2a0e097f ]
    
    Lockdep has a set of configs used to determine the size of the static
    arrays that it uses. However, the upper limit that was initially setup
    for these configs is too high (30 bit shift). This equates to several
    GiB of static memory for individual symbols. Using such high values
    leads to linker errors:
    
      $ make defconfig
      $ ./scripts/config -e PROVE_LOCKING --set-val LOCKDEP_BITS 30
      $ make olddefconfig all
      [...]
      ld: kernel image bigger than KERNEL_IMAGE_SIZE
      ld: section .bss VMA wraps around address space
    
    Adjust the upper limits to the maximum values that avoid these issues.
    The need for anything more, likely points to a problem elsewhere. Note
    that LOCKDEP_CHAINS_BITS was intentionally left out as its upper limit
    had a different symptom and has already been fixed [1].
    
    Reported-by: J. R. Okajima <[email protected]>
    Closes: https://lore.kernel.org/all/30795.1620913191@jrobl/ [1]
    Cc: Peter Zijlstra <[email protected]>
    Cc: Boqun Feng <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Waiman Long <[email protected]>
    Cc: Will Deacon <[email protected]>
    Acked-by: Waiman Long <[email protected]>
    Signed-off-by: Carlos Llamas <[email protected]>
    Signed-off-by: Boqun Feng <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
m68k: vga: Fix I/O defines [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Tue Jan 7 10:58:56 2025 +0100

    m68k: vga: Fix I/O defines
    
    commit 53036937a101b5faeaf98e7438555fa854a1a844 upstream.
    
    Including m68k's <asm/raw_io.h> in vga.h on nommu platforms results
    in conflicting defines with io_no.h for various I/O macros from the
    __raw_read and __raw_write families. An example error is
    
       In file included from arch/m68k/include/asm/vga.h:12,
                     from include/video/vga.h:22,
                     from include/linux/vgaarb.h:34,
                     from drivers/video/aperture.c:12:
    >> arch/m68k/include/asm/raw_io.h:39: warning: "__raw_readb" redefined
          39 | #define __raw_readb in_8
             |
       In file included from arch/m68k/include/asm/io.h:6,
                        from include/linux/io.h:13,
                        from include/linux/irq.h:20,
                        from include/asm-generic/hardirq.h:17,
                        from ./arch/m68k/include/generated/asm/hardirq.h:1,
                        from include/linux/hardirq.h:11,
                        from include/linux/interrupt.h:11,
                        from include/linux/trace_recursion.h:5,
                        from include/linux/ftrace.h:10,
                        from include/linux/kprobes.h:28,
                        from include/linux/kgdb.h:19,
                        from include/linux/fb.h:6,
                        from drivers/video/aperture.c:5:
       arch/m68k/include/asm/io_no.h:16: note: this is the location of the previous definition
          16 | #define __raw_readb(addr) \
             |
    
    Include <asm/io.h>, which avoids raw_io.h on nommu platforms.
    Also change the defined values of some of the read/write symbols in
    vga.h to __raw_read/__raw_write as the raw_in/raw_out symbols are not
    generally available.
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Fixes: 5c3f968712ce ("m68k/video: Create <asm/vga.h>")
    Cc: Geert Uytterhoeven <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: Helge Deller <[email protected]>
    Cc: [email protected] # v3.5+
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mailbox: tegra-hsp: Clear mailbox before using message [+ + +]
Author: Pekka Pessi <[email protected]>
Date:   Mon Dec 2 15:35:59 2024 +0530

    mailbox: tegra-hsp: Clear mailbox before using message
    
    commit 0b7f8328f988178b55ee11d772a6e1238c04d29d upstream.
    
    The Tegra RCE (Camera) driver expects the mailbox to be empty before
    processing the IVC messages. On RT kernel, the threads processing the
    IVC messages (which are invoked after `mbox_chan_received_data()` is
    called) may be on a different CPU or running with a higher priority
    than the HSP interrupt handler thread. This can cause it to act on the
    message before the mailbox gets cleared in the HSP interrupt handler
    resulting in a loss of IVC notification.
    
    Fix this by clearing the mailbox data register before calling
    `mbox_chan_received_data()`.
    
    Fixes: 8f585d14030d ("mailbox: tegra-hsp: Add tegra_hsp_sm_ops")
    Fixes: 74c20dd0f892 ("mailbox: tegra-hsp: Add 128-bit shared mailbox support")
    Cc: [email protected]
    Signed-off-by: Pekka Pessi <[email protected]>
    Signed-off-by: Kartik Rajput <[email protected]>
    Acked-by: Thierry Reding <[email protected]>
    Signed-off-by: Jassi Brar <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
maple_tree: fix static analyser cppcheck issue [+ + +]
Author: Liam R. Howlett <[email protected]>
Date:   Thu May 18 10:55:10 2023 -0400

    maple_tree: fix static analyser cppcheck issue
    
    commit 5729e06c819184b7ba40869c1ad53e1a463040b2 upstream.
    
    Patch series "Maple tree mas_{next,prev}_range() and cleanup", v4.
    
    This patchset contains a number of clean ups to the code to make it more
    usable (next/prev range), the addition of debug output formatting, the
    addition of printing the maple state information in the WARN_ON/BUG_ON
    code.
    
    There is also work done here to keep nodes active during iterations to
    reduce the necessity of re-walking the tree.
    
    Finally, there is a new interface added to move to the next or previous
    range in the tree, even if it is empty.
    
    The organisation of the patches is as follows:
    
    0001-0004 - Small clean ups
    0005-0018 - Additional debug options and WARN_ON/BUG_ON changes
    0019      - Test module __init and __exit addition
    0020-0021 - More functional clean ups
    0022-0026 - Changes to keep nodes active
    0027-0034 - Add new mas_{prev,next}_range()
    0035      - Use new mas_{prev,next}_range() in mmap_region()
    
    
    This patch (of 35):
    
    Static analyser of the maple tree code noticed that the split variable is
    being used to dereference into an array prior to checking the variable
    itself.  Fix this issue by changing the order of the statement to check
    the variable first.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Liam R. Howlett <[email protected]>
    Reported-by: David Binderman <[email protected]>
    Reviewed-by: Peng Zhang<[email protected]>
    Cc: Sergey Senozhatsky <[email protected]>
    Cc: Vernon Yang <[email protected]>
    Cc: Wei Yang <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

maple_tree: simplify split calculation [+ + +]
Author: Wei Yang <[email protected]>
Date:   Wed Nov 13 03:16:14 2024 +0000

    maple_tree: simplify split calculation
    
    commit 4f6a6bed0bfef4b966f076f33eb4f5547226056a upstream.
    
    Patch series "simplify split calculation", v3.
    
    
    This patch (of 3):
    
    The current calculation for splitting nodes tries to enforce a minimum
    span on the leaf nodes.  This code is complex and never worked correctly
    to begin with, due to the min value being passed as 0 for all leaves.
    
    The calculation should just split the data as equally as possible
    between the new nodes.  Note that b_end will be one more than the data,
    so the left side is still favoured in the calculation.
    
    The current code may also lead to a deficient node by not leaving enough
    data for the right side of the split. This issue is also addressed with
    the split calculation change.
    
    [[email protected]: rephrase the change log]
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 54a611b60590 ("Maple Tree: add new data structure")
    Signed-off-by: Wei Yang <[email protected]>
    Reviewed-by: Liam R. Howlett <[email protected]>
    Cc: Sidhartha Kumar <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
media: camif-core: Add check for clk_enable() [+ + +]
Author: Jiasheng Jiang <[email protected]>
Date:   Mon Nov 25 19:18:17 2024 +0000

    media: camif-core: Add check for clk_enable()
    
    [ Upstream commit 77ed2470ac09c2b0a33cf3f98cc51d18ba9ed976 ]
    
    Add check for the return value of clk_enable() to gurantee the success.
    
    Fixes: babde1c243b2 ("[media] V4L: Add driver for S3C24XX/S3C64XX SoC series camera interface")
    Signed-off-by: Jiasheng Jiang <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: ccs: Clean up parsed CCS static data on parse failure [+ + +]
Author: Sakari Ailus <[email protected]>
Date:   Tue Dec 3 12:23:01 2024 +0200

    media: ccs: Clean up parsed CCS static data on parse failure
    
    commit da73efa8e675a2b58f1c7ae61201acfe57714bf7 upstream.
    
    ccs_data_parse() releases the allocated in-memory data structure when the
    parser fails, but it does not clean up parsed metadata that is there to
    help access the actual data. Do that, in order to return the data
    structure in a sane state.
    
    Fixes: a6b396f410b1 ("media: ccs: Add CCS static data parser library")
    Cc: [email protected]
    Signed-off-by: Sakari Ailus <[email protected]>
    Reviewed-by: Mehdi Djait <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: ccs: Fix CCS static data parsing for large block sizes [+ + +]
Author: Sakari Ailus <[email protected]>
Date:   Tue Dec 3 10:10:23 2024 +0200

    media: ccs: Fix CCS static data parsing for large block sizes
    
    commit 82b696750f0b60e7513082a10ad42786854f59f8 upstream.
    
    The length field of the CCS static data blocks was mishandled, leading to
    wrong interpretation of the length header for blocks that are 16 kiB in
    size. Such large blocks are very, very rare and so this wasn't found
    earlier.
    
    As the length is used as part of input validation, the issue has no
    security implications.
    
    Fixes: a6b396f410b1 ("media: ccs: Add CCS static data parser library")
    Cc: [email protected]
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: ccs: Fix cleanup order in ccs_probe() [+ + +]
Author: Mehdi Djait <[email protected]>
Date:   Wed Dec 11 14:30:45 2024 +0100

    media: ccs: Fix cleanup order in ccs_probe()
    
    commit 6fdbff0f54786e94f0f630ff200ec1d666b1633e upstream.
    
    ccs_limits is allocated in ccs_read_all_limits() after the allocation of
    mdata.backing. Ensure that resources are freed in the reverse order of
    their allocation by moving out_free_ccs_limits up.
    
    Fixes: a11d3d6891f0 ("media: ccs: Read CCS static data from firmware binaries")
    Cc: [email protected]
    Signed-off-by: Mehdi Djait <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: cxd2841er: fix 64-bit division on gcc-9 [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Mon Nov 11 11:41:42 2024 +0100

    media: cxd2841er: fix 64-bit division on gcc-9
    
    [ Upstream commit 8d46603eeeb4c6abff1d2e49f2a6ae289dac765e ]
    
    It appears that do_div() once more gets confused by a complex
    expression that ends up not quite being constant despite
    __builtin_constant_p() thinking it is:
    
    ERROR: modpost: "__aeabi_uldivmod" [drivers/media/dvb-frontends/cxd2841er.ko] undefined!
    
    Use div_u64() instead, forcing the expression to be evaluated
    first, and making it a bit more readable.
    
    Cc: Dan Carpenter <[email protected]>
    Reported-by: Naresh Kamboju <[email protected]>
    Closes: https://lore.kernel.org/linux-media/CA+G9fYvvNm-aYodLaAwwTjEGtX0YxR-1R14FOA5aHKt0sSVsYg@mail.gmail.com/
    Reported-by: Linux Kernel Functional Testing <[email protected]>
    Closes: https://lore.kernel.org/linux-media/CA+G9fYvvNm-aYodLaAwwTjEGtX0YxR-1R14FOA5aHKt0sSVsYg@mail.gmail.com/
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    [hverkuil: added Closes tags]
    Signed-off-by: Sasha Levin <[email protected]>

media: i2c: imx412: Add missing newline to prints [+ + +]
Author: Luca Weiss <[email protected]>
Date:   Mon Nov 18 22:45:46 2024 +0100

    media: i2c: imx412: Add missing newline to prints
    
    [ Upstream commit 33f4a7fba7229232e294f4794503283e44cd03f2 ]
    
    Add trailing \n to dev_dbg and dev_err prints where missing.
    
    Signed-off-by: Luca Weiss <[email protected]>
    Fixes: 9214e86c0cc1 ("media: i2c: Add imx412 camera sensor driver")
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: i2c: ov9282: Correct the exposure offset [+ + +]
Author: Dave Stevenson <[email protected]>
Date:   Mon Dec 9 14:55:45 2024 +0000

    media: i2c: ov9282: Correct the exposure offset
    
    [ Upstream commit feaf4154d69657af2bf96e6e66cca794f88b1a61 ]
    
    The datasheet lists that "Maximum exposure time is frame
    length -25 row periods, where frame length is set by
    registers {0x380E, 0x380F}".
    However this driver had OV9282_EXPOSURE_OFFSET set to 12
    which allowed that restriction to be violated, and would
    result in very under-exposed images.
    
    Correct the offset.
    
    Fixes: 14ea315bbeb7 ("media: i2c: Add ov9282 camera sensor driver")
    Signed-off-by: Dave Stevenson <[email protected]>
    Reviewed-by: Kieran Bingham <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: imx-jpeg: Fix potential error pointer dereference in detach_pm() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Thu Oct 17 23:34:16 2024 +0300

    media: imx-jpeg: Fix potential error pointer dereference in detach_pm()
    
    commit 1378ffec30367233152b7dbf4fa6a25ee98585d1 upstream.
    
    The proble is on the first line:
    
            if (jpeg->pd_dev[i] && !pm_runtime_suspended(jpeg->pd_dev[i]))
    
    If jpeg->pd_dev[i] is an error pointer, then passing it to
    pm_runtime_suspended() will lead to an Oops.  The other conditions
    check for both error pointers and NULL, but it would be more clear to
    use the IS_ERR_OR_NULL() check for that.
    
    Fixes: fd0af4cd35da ("media: imx-jpeg: Ensure power suppliers be suspended before detach them")
    Cc: <[email protected]>
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Ming Qian <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: lmedm04: Handle errors for lme2510_int_read [+ + +]
Author: Chen Ni <[email protected]>
Date:   Tue May 21 17:10:42 2024 +0800

    media: lmedm04: Handle errors for lme2510_int_read
    
    [ Upstream commit a2836d3fe220220ff8c495ca9722f89cea8a67e7 ]
    
    Add check for the return value of usb_pipe_endpoint() and
    usb_submit_urb() in order to catch the errors.
    
    Fixes: 15e1ce33182d ("[media] lmedm04: Fix usb_submit_urb BOGUS urb xfer, pipe 1 != type 3 in interrupt urb")
    Signed-off-by: Chen Ni <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: marvell: Add check for clk_enable() [+ + +]
Author: Jiasheng Jiang <[email protected]>
Date:   Tue Dec 3 21:29:02 2024 +0000

    media: marvell: Add check for clk_enable()
    
    [ Upstream commit 11f68d2ba2e1521a608af773bf788e8cfa260f68 ]
    
    Add check for the return value of clk_enable() to guarantee the success.
    
    Fixes: 81a409bfd551 ("media: marvell-ccic: provide a clock for the sensor")
    Signed-off-by: Jiasheng Jiang <[email protected]>
    [Sakari Ailus: Fix spelling in commit message.]
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: mc: fix endpoint iteration [+ + +]
Author: Cosmin Tanislav <[email protected]>
Date:   Fri Nov 22 16:55:24 2024 +0200

    media: mc: fix endpoint iteration
    
    commit fb2bd86270cd0ad004f4c614ba4f8c63a5720e25 upstream.
    
    When creating links from a subdev to a sink, the current logic tries to
    iterate over the endpoints of dev's fwnode.
    
    This might not be correct when the subdev uses a different fwnode
    compared to the dev's fwnode.
    
    If, when registering, the subdev's fwnode is not set, the code inside
    v4l2_async_register_subdev will set it to the dev's fwnode.
    
    To fix this, just use the subdev's fwnode.
    
    Signed-off-by: Cosmin Tanislav <[email protected]>
    Fixes: 0d3c81e82da9 ("media: v4l2-mc: add v4l2_create_fwnode_links helpers")
    Cc: [email protected]
    Reviewed-by: Laurent Pinchart <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: mipi-csis: Add check for clk_enable() [+ + +]
Author: Jiasheng Jiang <[email protected]>
Date:   Mon Nov 25 19:18:18 2024 +0000

    media: mipi-csis: Add check for clk_enable()
    
    [ Upstream commit 125ad1aeec77eb55273b420be6894b284a01e4b6 ]
    
    Add check for the return value of clk_enable() to gurantee the success.
    
    Fixes: b5f1220d587d ("[media] v4l: Add v4l2 subdev driver for S5P/EXYNOS4 MIPI-CSI receivers")
    Signed-off-by: Jiasheng Jiang <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: ov5640: fix get_light_freq on auto [+ + +]
Author: Sam Bobrowicz <[email protected]>
Date:   Fri Nov 22 09:28:01 2024 +0100

    media: ov5640: fix get_light_freq on auto
    
    commit 001d3753538d26ddcbef011f5643cfff58a7f672 upstream.
    
    Light frequency was not properly returned when in auto
    mode and the detected frequency was 60Hz.
    
    Fixes: 19a81c1426c1 ("[media] add Omnivision OV5640 sensor driver")
    Cc: [email protected]
    Signed-off-by: Sam Bobrowicz <[email protected]>
    Signed-off-by: Michal Simek <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: rc: iguanair: handle timeouts [+ + +]
Author: Oliver Neukum <[email protected]>
Date:   Tue Nov 26 14:17:22 2024 +0100

    media: rc: iguanair: handle timeouts
    
    [ Upstream commit b98d5000c50544f14bacb248c34e5219fbe81287 ]
    
    In case of a timeout the IO must be cancelled or
    the next IO using the URB will fail and/or overwrite
    an operational URB.
    
    The automatic bisection fails because it arrives
    at a commit that correctly lets the test case run
    without an error.
    
    Signed-off-by: Oliver Neukum <[email protected]>
    Fixes: e99a7cfe93fd ("[media] iguanair: reuse existing urb callback for command responses")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/
    Tested-by: [email protected]
    Signed-off-by: Sean Young <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: uvcvideo: Fix double free in error path [+ + +]
Author: Laurent Pinchart <[email protected]>
Date:   Fri Nov 8 01:51:30 2024 +0200

    media: uvcvideo: Fix double free in error path
    
    commit c6ef3a7fa97ec823a1e1af9085cf13db9f7b3bac upstream.
    
    If the uvc_status_init() function fails to allocate the int_urb, it will
    free the dev->status pointer but doesn't reset the pointer to NULL. This
    results in the kfree() call in uvc_status_cleanup() trying to
    double-free the memory. Fix it by resetting the dev->status pointer to
    NULL after freeing it.
    
    Fixes: a31a4055473b ("V4L/DVB:usbvideo:don't use part of buffer for USB transfer #4")
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Laurent Pinchart <[email protected]>
    Reviewed by: Ricardo Ribalda <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: uvcvideo: Fix event flags in uvc_ctrl_send_events [+ + +]
Author: Ricardo Ribalda <[email protected]>
Date:   Thu Nov 14 19:10:30 2024 +0000

    media: uvcvideo: Fix event flags in uvc_ctrl_send_events
    
    commit c31cffd5ae2c3d7ef21d9008977a9d117ce7a64e upstream.
    
    If there is an event that needs the V4L2_EVENT_CTRL_CH_FLAGS flag, all
    the following events will have that flag, regardless if they need it or
    not.
    
    This is because we keep using the same variable all the time and we do
    not reset its original value.
    
    Cc: [email protected]
    Fixes: 805e9b4a06bf ("[media] uvcvideo: Send control change events for slave ctrls when the master changes")
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Reviewed-by: Laurent Pinchart <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Laurent Pinchart <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: uvcvideo: Propagate buf->error to userspace [+ + +]
Author: Ricardo Ribalda <[email protected]>
Date:   Wed Dec 18 21:39:08 2024 +0000

    media: uvcvideo: Propagate buf->error to userspace
    
    [ Upstream commit 87ce177654e388451850905a1d376658aebe8699 ]
    
    Now we return VB2_BUF_STATE_DONE for valid and invalid frames. Propagate
    the correct value, so the user can know if the frame is valid or not via
    struct v4l2_buffer->flags.
    
    Reported-by: Hans de Goede <[email protected]>
    Closes: https://lore.kernel.org/linux-media/[email protected]
    Fixes: 6998b6fb4b1c ("[media] uvcvideo: Use videobuf2-vmalloc")
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Reviewed-by: Laurent Pinchart <[email protected]>
    Reviewed-by: Hans de Goede <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Laurent Pinchart <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: uvcvideo: Remove redundant NULL assignment [+ + +]
Author: Ricardo Ribalda <[email protected]>
Date:   Tue Dec 3 21:20:09 2024 +0000

    media: uvcvideo: Remove redundant NULL assignment
    
    commit 04d3398f66d2d31c4b8caea88f051a4257b7a161 upstream.
    
    ctrl->handle will only be different than NULL for controls that have
    mappings. This is because that assignment is only done inside
    uvc_ctrl_set() for mapped controls.
    
    Cc: [email protected]
    Fixes: e5225c820c05 ("media: uvcvideo: Send a control event when a Control Change interrupt arrives")
    Reviewed-by: Laurent Pinchart <[email protected]>
    Reviewed-by: Hans de Goede <[email protected]>
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Laurent Pinchart <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: vidtv: Fix a null-ptr-deref in vidtv_mux_stop_thread [+ + +]
Author: Edward Adam Davis <[email protected]>
Date:   Sun Dec 29 18:50:39 2024 +0800

    media: vidtv: Fix a null-ptr-deref in vidtv_mux_stop_thread
    
    [ Upstream commit 1221989555db711578a327a9367f1be46500cb48 ]
    
    syzbot report a null-ptr-deref in vidtv_mux_stop_thread. [1]
    
    If dvb->mux is not initialized successfully by vidtv_mux_init() in the
    vidtv_start_streaming(), it will trigger null pointer dereference about mux
    in vidtv_mux_stop_thread().
    
    Adjust the timing of streaming initialization and check it before
    stopping it.
    
    [1]
    KASAN: null-ptr-deref in range [0x0000000000000128-0x000000000000012f]
    CPU: 0 UID: 0 PID: 5842 Comm: syz-executor248 Not tainted 6.13.0-rc4-syzkaller-00012-g9b2ffa6148b1 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    RIP: 0010:vidtv_mux_stop_thread+0x26/0x80 drivers/media/test-drivers/vidtv/vidtv_mux.c:471
    Code: 90 90 90 90 66 0f 1f 00 55 53 48 89 fb e8 82 2e c8 f9 48 8d bb 28 01 00 00 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <0f> b6 04 02 84 c0 74 02 7e 3b 0f b6 ab 28 01 00 00 31 ff 89 ee e8
    RSP: 0018:ffffc90003f2faa8 EFLAGS: 00010202
    RAX: dffffc0000000000 RBX: 0000000000000000 RCX: ffffffff87cfb125
    RDX: 0000000000000025 RSI: ffffffff87d120ce RDI: 0000000000000128
    RBP: ffff888029b8d220 R08: 0000000000000005 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000003 R12: ffff888029b8d188
    R13: ffffffff8f590aa0 R14: ffffc9000581c5c8 R15: ffff888029a17710
    FS:  00007f7eef5156c0(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f7eef5e635c CR3: 0000000076ca6000 CR4: 00000000003526f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     vidtv_stop_streaming drivers/media/test-drivers/vidtv/vidtv_bridge.c:209 [inline]
     vidtv_stop_feed+0x151/0x250 drivers/media/test-drivers/vidtv/vidtv_bridge.c:252
     dmx_section_feed_stop_filtering+0x90/0x160 drivers/media/dvb-core/dvb_demux.c:1000
     dvb_dmxdev_feed_stop.isra.0+0x1ee/0x270 drivers/media/dvb-core/dmxdev.c:486
     dvb_dmxdev_filter_stop+0x22a/0x3a0 drivers/media/dvb-core/dmxdev.c:559
     dvb_dmxdev_filter_free drivers/media/dvb-core/dmxdev.c:840 [inline]
     dvb_demux_release+0x92/0x550 drivers/media/dvb-core/dmxdev.c:1246
     __fput+0x3f8/0xb60 fs/file_table.c:450
     task_work_run+0x14e/0x250 kernel/task_work.c:239
     get_signal+0x1d3/0x2610 kernel/signal.c:2790
     arch_do_signal_or_restart+0x90/0x7e0 arch/x86/kernel/signal.c:337
     exit_to_user_mode_loop kernel/entry/common.c:111 [inline]
     exit_to_user_mode_prepare include/linux/entry-common.h:329 [inline]
     __syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline]
     syscall_exit_to_user_mode+0x150/0x2a0 kernel/entry/common.c:218
     do_syscall_64+0xda/0x250 arch/x86/entry/common.c:89
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=5e248227c80a3be8e96a
    Signed-off-by: Edward Adam Davis <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
memory: tegra20-emc: fix an OF node reference bug in tegra_emc_find_node_by_ram_code() [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Tue Dec 17 18:14:34 2024 +0900

    memory: tegra20-emc: fix an OF node reference bug in tegra_emc_find_node_by_ram_code()
    
    [ Upstream commit b9784e5cde1f9fb83661a70e580e381ae1264d12 ]
    
    As of_find_node_by_name() release the reference of the argument device
    node, tegra_emc_find_node_by_ram_code() releases some device nodes while
    still in use, resulting in possible UAFs. According to the bindings and
    the in-tree DTS files, the "emc-tables" node is always device's child
    node with the property "nvidia,use-ram-code", and the "lpddr2" node is a
    child of the "emc-tables" node. Thus utilize the
    for_each_child_of_node() macro and of_get_child_by_name() instead of
    of_find_node_by_name() to simplify the code.
    
    This bug was found by an experimental verification tool that I am
    developing.
    
    Fixes: 96e5da7c8424 ("memory: tegra: Introduce Tegra20 EMC driver")
    Signed-off-by: Joe Hattori <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Link: https://lore.kernel.org/r/[email protected]
    [krzysztof: applied v1, adjust the commit msg to incorporate v2 parts]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mfd: lpc_ich: Add another Gemini Lake ISA bridge PCI device-id [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Thu Nov 14 20:38:08 2024 +0100

    mfd: lpc_ich: Add another Gemini Lake ISA bridge PCI device-id
    
    [ Upstream commit 1e89d21f8189d286f80b900e1b7cf57cb1f3037e ]
    
    On N4100 / N4120 Gemini Lake SoCs the ISA bridge PCI device-id is 31e8
    rather the 3197 found on e.g. the N4000 / N4020.
    
    While at fix the existing GLK PCI-id table entry breaking the table
    being sorted by device-id.
    
    Signed-off-by: Hans de Goede <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mfd: syscon: Add of_syscon_register_regmap() API [+ + +]
Author: Peter Griffin <[email protected]>
Date:   Fri Jun 21 12:55:43 2024 +0100

    mfd: syscon: Add of_syscon_register_regmap() API
    
    [ Upstream commit 769cb63166d90f1fadafa4352f180cbd96b6cb77 ]
    
    The of_syscon_register_regmap() API allows an externally created regmap
    to be registered with syscon. This regmap can then be returned to client
    drivers using the syscon_regmap_lookup_by_phandle() APIs.
    
    The API is used by platforms where mmio access to the syscon registers is
    not possible, and a underlying soc driver like exynos-pmu provides a SoC
    specific regmap that can issue a SMC or hypervisor call to write the
    register.
    
    This approach keeps the SoC complexities out of syscon, but allows common
    drivers such as  syscon-poweroff, syscon-reboot and friends that are used
    by many SoCs already to be re-used.
    
    Signed-off-by: Peter Griffin <[email protected]>
    Reviewed-by: Arnd Bergmann <[email protected]>
    Reviewed-by: Sam Protsenko <[email protected]>
    Tested-by: Will McVicker <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Stable-dep-of: 805f7aaf7fee ("mfd: syscon: Fix race in device_node_get_regmap()")
    Signed-off-by: Sasha Levin <[email protected]>

mfd: syscon: Fix race in device_node_get_regmap() [+ + +]
Author: Rob Herring (Arm) <[email protected]>
Date:   Tue Dec 17 12:11:40 2024 -0600

    mfd: syscon: Fix race in device_node_get_regmap()
    
    [ Upstream commit 805f7aaf7fee14a57b56af01d270edf6c10765e8 ]
    
    It is possible for multiple, simultaneous callers calling
    device_node_get_regmap() with the same node to fail to find an entry in
    the syscon_list. There is a period of time while the first caller is
    calling of_syscon_register() that subsequent callers also fail to find
    an entry in the syscon_list and then call of_syscon_register() a second
    time.
    
    Fix this by keeping the lock held until after of_syscon_register()
    completes and adds the node to syscon_list. Convert the spinlock to a
    mutex as many of the functions called in of_syscon_register() such as
    kzalloc() and of_clk_get() may sleep.
    
    Fixes: bdb0066df96e ("mfd: syscon: Decouple syscon interface from platform devices")
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Tested-by: Krzysztof Kozlowski <[email protected]>
    Tested-by: Will McVicker <[email protected]>
    Tested-by: Pankaj Dubey <[email protected]>
    Reviewed-by: Pankaj Dubey <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mfd: syscon: Remove extern from function prototypes [+ + +]
Author: Peter Griffin <[email protected]>
Date:   Tue Feb 20 11:50:11 2024 +0000

    mfd: syscon: Remove extern from function prototypes
    
    [ Upstream commit 0db017f8edd9b9af818bc1d68ba578df1b4c4628 ]
    
    The kernel coding style does not require 'extern' in function prototypes
    in .h files, so remove them as they are not needed.
    
    To avoid checkpatch warnings such as
    CHECK: Lines should not end with a '('
    +struct regmap *syscon_regmap_lookup_by_phandle(
    
    The indentation is also updated. No functional changes in this patch.
    
    Signed-off-by: Peter Griffin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Stable-dep-of: 805f7aaf7fee ("mfd: syscon: Fix race in device_node_get_regmap()")
    Signed-off-by: Sasha Levin <[email protected]>

mfd: syscon: Use scoped variables with memory allocators to simplify error paths [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Sun Jul 7 13:48:23 2024 +0200

    mfd: syscon: Use scoped variables with memory allocators to simplify error paths
    
    [ Upstream commit 82f898f47112bc7b787cb9ce8803c4e2f9f60c89 ]
    
    Allocate the memory with scoped/cleanup.h to reduce error handling and
    make the code a bit simpler.
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Stable-dep-of: 805f7aaf7fee ("mfd: syscon: Fix race in device_node_get_regmap()")
    Signed-off-by: Sasha Levin <[email protected]>

 
mips/math-emu: fix emulation of the prefx instruction [+ + +]
Author: Mateusz Jończyk <[email protected]>
Date:   Sun Jan 5 22:18:06 2025 +0100

    mips/math-emu: fix emulation of the prefx instruction
    
    commit 42a39e4aa59a10aa4afdc14194f3ee63d2db94e1 upstream.
    
    Currently, installation of Debian 12.8 for mipsel fails on machines
    without an FPU [1]. This is caused by the fact that zstd (which is used
    for initramfs compression) executes the prefx instruction, which is not
    emulated properly by the kernel.
    
    The prefx (Prefetch Indexed) instruction fetches data from memory into
    the cache without any side effects. Though functionally unrelated, it
    requires an FPU [2].
    
    Bytecode format of this instruction ends on "001111" binary:
    
            (prefx instruction format) & 0x0000003f = 0x0000000f
    
    The code in fpux_emu() runs like so:
    
            #define MIPSInst(x) x
            #define MIPSInst_FMA_FFMT(x) (MIPSInst(x) & 0x00000007)
            #define MIPSInst_FUNC(x) (MIPSInst(x) & 0x0000003f)
            enum cop1x_func { ..., pfetch_op = 0x0f, ... };
    
            ...
    
            switch (MIPSInst_FMA_FFMT(ir)) {
            ...
    
            case 0x3:
                    if (MIPSInst_FUNC(ir) != pfetch_op)
                            return SIGILL;
    
                    /* ignore prefx operation */
                    break;
    
            default:
                    return SIGILL;
            }
    
    That snippet above contains a logic error and the
            if (MIPSInst_FUNC(ir) != pfetch_op)
    comparison always fires.
    
    When MIPSInst_FUNC(ir) is equal to pfetch_op, ir must end on 001111
    binary. In this case, MIPSInst_FMA_FFMT(ir) must be equal to 0x7, which
    does not match that case label.
    
    This causes emulation failure for the prefx instruction. Fix it.
    
    This has been broken by
    commit 919af8b96c89 ("MIPS: Make definitions of MIPSInst_FMA_{FUNC,FMTM} consistent with MIPS64 manual")
    which modified the MIPSInst_FMA_FFMT macro without updating the users.
    
    Signed-off-by: Mateusz Jończyk <[email protected]>
    Cc: [email protected] # after 3 weeks
    Cc: Dengcheng Zhu <[email protected]>
    Cc: Thomas Bogendoerfer <[email protected]>
    Cc: Ming Wang <[email protected]>
    Cc: Tiezhu Yang <[email protected]>
    Fixes: 919af8b96c89 ("MIPS: Make definitions of MIPSInst_FMA_{FUNC,FMTM} consistent with MIPS64 manual")
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    
    [1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1091858
    [2] MIPS Architecture For Programmers Volume II-A: The MIPS32 Instruction Set
    
    Signed-off-by: Thomas Bogendoerfer <[email protected]>

 
MIPS: ftrace: Declare ftrace_get_parent_ra_addr() as static [+ + +]
Author: WangYuli <[email protected]>
Date:   Sat Jan 4 22:47:08 2025 +0800

    MIPS: ftrace: Declare ftrace_get_parent_ra_addr() as static
    
    commit ddd068d81445b17ac0bed084dfeb9e58b4df3ddd upstream.
    
    Declare ftrace_get_parent_ra_addr() as static to suppress clang
    compiler warning that 'no previous prototype'. This function is
    not intended to be called from other parts.
    
    Fix follow error with clang-19:
    
    arch/mips/kernel/ftrace.c:251:15: error: no previous prototype for function 'ftrace_get_parent_ra_addr' [-Werror,-Wmissing-prototypes]
      251 | unsigned long ftrace_get_parent_ra_addr(unsigned long self_ra, unsigned long
          |               ^
    arch/mips/kernel/ftrace.c:251:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
      251 | unsigned long ftrace_get_parent_ra_addr(unsigned long self_ra, unsigned long
          | ^
          | static
    1 error generated.
    
    Signed-off-by: WangYuli <[email protected]>
    Acked-by: Masami Hiramatsu (Google) <[email protected]>
    Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

MIPS: Loongson64: remove ROM Size unit in boardinfo [+ + +]
Author: Kexy Biscuit <[email protected]>
Date:   Sat Jan 11 01:22:08 2025 +0800

    MIPS: Loongson64: remove ROM Size unit in boardinfo
    
    commit bd2212d658d7659b9d83c7e2f3a06789d4db1e90 upstream.
    
    Per Appendix A.7 in Q/LS 0013-2014 (龙芯CPU开发系统固件与内核接口规范 V2.2,
    lit. Loongson DevSys Firmware Kernel Interface Specification V2.2),
    interface_info.size is size of this interface, not size of the LEFI BIOS
    ROM.
    
    In any case, the BIOS ROM Size just cannot be several kilobytes (KB) on
    Loongson64 LEFI platforms.
    
    Reported-by: Mingcong Bai <[email protected]>
    Suggested-by: Icenowy Zheng <[email protected]>
    Fixes: 6c1bfbd9df8c ("MIPS: Loongson64: Add /sys/firmware/lefi/boardinfo")
    Cc: [email protected]
    Signed-off-by: Kexy Biscuit <[email protected]>
    Acked-by: Jiaxun Yang <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
misc: fastrpc: Deregister device nodes properly in error scenarios [+ + +]
Author: Anandu Krishnan E <[email protected]>
Date:   Fri Jan 10 13:42:37 2025 +0000

    misc: fastrpc: Deregister device nodes properly in error scenarios
    
    commit 637c20002dc8c347001292664055bfbf56544ec6 upstream.
    
    During fastrpc_rpmsg_probe, if secure device node registration
    succeeds but non-secure device node registration fails, the secure
    device node deregister is not called during error cleanup. Add proper
    exit paths to ensure proper cleanup in case of error.
    
    Fixes: 3abe3ab3cdab ("misc: fastrpc: add secure domain support")
    Cc: [email protected]
    Signed-off-by: Anandu Krishnan E <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

misc: fastrpc: Fix copy buffer page size [+ + +]
Author: Ekansh Gupta <[email protected]>
Date:   Fri Jan 10 13:42:39 2025 +0000

    misc: fastrpc: Fix copy buffer page size
    
    commit e966eae72762ecfdbdb82627e2cda48845b9dd66 upstream.
    
    For non-registered buffer, fastrpc driver copies the buffer and
    pass it to the remote subsystem. There is a problem with current
    implementation of page size calculation which is not considering
    the offset in the calculation. This might lead to passing of
    improper and out-of-bounds page size which could result in
    memory issue. Calculate page start and page end using the offset
    adjusted address instead of absolute address.
    
    Fixes: 02b45b47fbe8 ("misc: fastrpc: fix remote page size calculation")
    Cc: [email protected]
    Signed-off-by: Ekansh Gupta <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

misc: fastrpc: Fix registered buffer page address [+ + +]
Author: Ekansh Gupta <[email protected]>
Date:   Fri Jan 10 13:42:38 2025 +0000

    misc: fastrpc: Fix registered buffer page address
    
    commit 6ca4ea1f88a06a04ed7b2c9c6bf9f00833b68214 upstream.
    
    For registered  buffers, fastrpc driver sends the buffer information
    to remote subsystem. There is a problem with current implementation
    where the page address is being sent with an offset leading to
    improper buffer address on DSP. This is leads to functional failures
    as DSP expects base address in page information and extracts offset
    information from remote arguments. Mask the offset and pass the base
    page address to DSP.
    
    This issue is observed is a corner case when some buffer which is registered
    with fastrpc framework is passed with some offset by user and then the DSP
    implementation tried to read the data. As DSP expects base address and takes
    care of offsetting with remote arguments, passing an offsetted address will
    result in some unexpected data read in DSP.
    
    All generic usecases usually pass the buffer as it is hence is problem is
    not usually observed. If someone tries to pass offsetted buffer and then
    tries to compare data at HLOS and DSP end, then the ambiguity will be observed.
    
    Fixes: 80f3afd72bd4 ("misc: fastrpc: consider address offset before sending to DSP")
    Cc: [email protected]
    Signed-off-by: Ekansh Gupta <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mlxsw: Add return value check for mlxsw_sp_port_get_stats_raw() [+ + +]
Author: Wentao Liang <[email protected]>
Date:   Wed Feb 12 23:23:11 2025 +0800

    mlxsw: Add return value check for mlxsw_sp_port_get_stats_raw()
    
    commit fee5d688940690cc845937459e340e4e02598e90 upstream.
    
    Add a check for the return value of mlxsw_sp_port_get_stats_raw()
    in __mlxsw_sp_port_get_stats(). If mlxsw_sp_port_get_stats_raw()
    returns an error, exit the function to prevent further processing
    with potentially invalid data.
    
    Fixes: 614d509aa1e7 ("mlxsw: Move ethtool_ops to spectrum_ethtool.c")
    Cc: [email protected] # 5.9+
    Signed-off-by: Wentao Liang <[email protected]>
    Reviewed-by: Petr Machata <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm: gup: fix infinite loop within __get_longterm_locked [+ + +]
Author: Zhaoyang Huang <[email protected]>
Date:   Tue Jan 21 10:01:59 2025 +0800

    mm: gup: fix infinite loop within __get_longterm_locked
    
    commit 1aaf8c122918aa8897605a9aa1e8ed6600d6f930 upstream.
    
    We can run into an infinite loop in __get_longterm_locked() when
    collect_longterm_unpinnable_folios() finds only folios that are isolated
    from the LRU or were never added to the LRU.  This can happen when all
    folios to be pinned are never added to the LRU, for example when
    vm_ops->fault allocated pages using cma_alloc() and never added them to
    the LRU.
    
    Fix it by simply taking a look at the list in the single caller, to see if
    anything was added.
    
    [[email protected]: move definition of local]
      Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 67e139b02d99 ("mm/gup.c: refactor check_and_migrate_movable_pages()")
    Signed-off-by: Zhaoyang Huang <[email protected]>
    Reviewed-by: John Hubbard <[email protected]>
    Reviewed-by: David Hildenbrand <[email protected]>
    Suggested-by: David Hildenbrand <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Cc: Aijun Sun <[email protected]>
    Cc: Alistair Popple <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Wentao Guan <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm: kmemleak: fix upper boundary check for physical address objects [+ + +]
Author: Catalin Marinas <[email protected]>
Date:   Mon Jan 27 18:42:33 2025 +0000

    mm: kmemleak: fix upper boundary check for physical address objects
    
    commit 488b5b9eca68497b533ced059be5eff19578bbca upstream.
    
    Memblock allocations are registered by kmemleak separately, based on their
    physical address.  During the scanning stage, it checks whether an object
    is within the min_low_pfn and max_low_pfn boundaries and ignores it
    otherwise.
    
    With the recent addition of __percpu pointer leak detection (commit
    6c99d4eb7c5e ("kmemleak: enable tracking for percpu pointers")), kmemleak
    started reporting leaks in setup_zone_pageset() and
    setup_per_cpu_pageset().  These were caused by the node_data[0] object
    (initialised in alloc_node_data()) ending on the PFN_PHYS(max_low_pfn)
    boundary.  The non-strict upper boundary check introduced by commit
    84c326299191 ("mm: kmemleak: check physical address when scan") causes the
    pg_data_t object to be ignored (not scanned) and the __percpu pointers it
    contains to be reported as leaks.
    
    Make the max_low_pfn upper boundary check strict when deciding whether to
    ignore a physical address object and not scan it.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 84c326299191 ("mm: kmemleak: check physical address when scan")
    Signed-off-by: Catalin Marinas <[email protected]>
    Reported-by: Jakub Kicinski <[email protected]>
    Tested-by: Matthieu Baerts (NGI0) <[email protected]>
    Cc: Patrick Wang <[email protected]>
    Cc: <[email protected]>    [6.0.x]
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mmc: core: Respect quirk_max_rate for non-UHS SDIO card [+ + +]
Author: Shawn Lin <[email protected]>
Date:   Fri Nov 22 17:37:22 2024 +0800

    mmc: core: Respect quirk_max_rate for non-UHS SDIO card
    
    [ Upstream commit a2a44f8da29352f76c99c6904ee652911b8dc7dd ]
    
    The card-quirk was added to limit the clock-rate for a card with UHS-mode
    support, although let's respect the quirk for non-UHS mode too, to make the
    behaviour consistent.
    
    Signed-off-by: Shawn Lin <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mmc: mtk-sd: Fix register settings for hs400(es) mode [+ + +]
Author: Andy-ld Lu <[email protected]>
Date:   Thu Jan 23 17:26:01 2025 +0800

    mmc: mtk-sd: Fix register settings for hs400(es) mode
    
    commit 3e68abf2b9cebe76c6cd4b1aca8e95cd671035a3 upstream.
    
    For hs400(es) mode, the 'hs400-ds-delay' is typically configured in the
    dts. However, some projects may only define 'mediatek,hs400-ds-dly3',
    which can lead to initialization failures in hs400es mode. CMD13 reported
    response crc error in the mmc_switch_status() just after switching to
    hs400es mode.
    
    [    1.914038][   T82] mmc0: mmc_select_hs400es failed, error -84
    [    1.914954][   T82] mmc0: error -84 whilst initialising MMC card
    
    Currently, the hs400_ds_dly3 value is set within the tuning function. This
    means that the PAD_DS_DLY3 field is not configured before tuning process,
    which is the reason for the above-mentioned CMD13 response crc error.
    
    Move the PAD_DS_DLY3 field configuration into msdc_prepare_hs400_tuning(),
    and add a value check of hs400_ds_delay to prevent overwriting by zero when
    the 'hs400-ds-delay' is not set in the dts. In addition, since hs400(es)
    only tune the PAD_DS_DLY1, the PAD_DS_DLY2_SEL bit should be cleared to
    bypass it.
    
    Fixes: c4ac38c6539b ("mmc: mtk-sd: Add HS400 online tuning support")
    Signed-off-by: Andy-ld Lu <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mmc: sdhci-msm: Correctly set the load for the regulator [+ + +]
Author: Yuanjie Yang <[email protected]>
Date:   Tue Jan 14 16:35:14 2025 +0800

    mmc: sdhci-msm: Correctly set the load for the regulator
    
    [ Upstream commit 20a0c37e44063997391430c4ae09973e9cbc3911 ]
    
    Qualcomm regulator supports two power supply modes: HPM and LPM.
    Currently, the sdhci-msm.c driver does not set the load to adjust
    the current for eMMC and SD. If the regulator dont't set correct
    load in LPM state, it will lead to the inability to properly
    initialize eMMC and SD.
    
    Set the correct regulator current for eMMC and SD to ensure that the
    device can work normally even when the regulator is in LPM.
    
    Signed-off-by: Yuanjie Yang <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
module: Extend the preempt disabled section in dereference_symbol_descriptor(). [+ + +]
Author: Sebastian Andrzej Siewior <[email protected]>
Date:   Wed Jan 8 10:04:30 2025 +0100

    module: Extend the preempt disabled section in dereference_symbol_descriptor().
    
    [ Upstream commit a145c848d69f9c6f32008d8319edaa133360dd74 ]
    
    dereference_symbol_descriptor() needs to obtain the module pointer
    belonging to pointer in order to resolve that pointer.
    The returned mod pointer is obtained under RCU-sched/ preempt_disable()
    guarantees and needs to be used within this section to ensure that the
    module is not removed in the meantime.
    
    Extend the preempt_disable() section to also cover
    dereference_module_function_descriptor().
    
    Fixes: 04b8eb7a4ccd9 ("symbol lookup: introduce dereference_symbol_descriptor()")
    Cc: James E.J. Bottomley <[email protected]>
    Cc: Christophe Leroy <[email protected]>
    Cc: Helge Deller <[email protected]>
    Cc: Madhavan Srinivasan <[email protected]>
    Cc: Michael Ellerman <[email protected]>
    Cc: Naveen N Rao <[email protected]>
    Cc: Nicholas Piggin <[email protected]>
    Cc: Sergey Senozhatsky <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Reviewed-by: Sergey Senozhatsky <[email protected]>
    Acked-by: Peter Zijlstra (Intel) <[email protected]>
    Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Petr Pavlu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mptcp: consolidate suboption status [+ + +]
Author: Paolo Abeni <[email protected]>
Date:   Thu Jan 23 19:05:54 2025 +0100

    mptcp: consolidate suboption status
    
    commit c86b000782daba926c627d2fa00c3f60a75e7472 upstream.
    
    MPTCP maintains the received sub-options status is the bitmask carrying
    the received suboptions and in several bitfields carrying per suboption
    additional info.
    
    Zeroing the bitmask before parsing is not enough to ensure a consistent
    status, and the MPTCP code has to additionally clear some bitfiled
    depending on the actually parsed suboption.
    
    The above schema is fragile, and syzbot managed to trigger a path where
    a relevant bitfield is not cleared/initialized:
    
      BUG: KMSAN: uninit-value in __mptcp_expand_seq net/mptcp/options.c:1030 [inline]
      BUG: KMSAN: uninit-value in mptcp_expand_seq net/mptcp/protocol.h:864 [inline]
      BUG: KMSAN: uninit-value in ack_update_msk net/mptcp/options.c:1060 [inline]
      BUG: KMSAN: uninit-value in mptcp_incoming_options+0x2036/0x3d30 net/mptcp/options.c:1209
       __mptcp_expand_seq net/mptcp/options.c:1030 [inline]
       mptcp_expand_seq net/mptcp/protocol.h:864 [inline]
       ack_update_msk net/mptcp/options.c:1060 [inline]
       mptcp_incoming_options+0x2036/0x3d30 net/mptcp/options.c:1209
       tcp_data_queue+0xb4/0x7be0 net/ipv4/tcp_input.c:5233
       tcp_rcv_established+0x1061/0x2510 net/ipv4/tcp_input.c:6264
       tcp_v4_do_rcv+0x7f3/0x11a0 net/ipv4/tcp_ipv4.c:1916
       tcp_v4_rcv+0x51df/0x5750 net/ipv4/tcp_ipv4.c:2351
       ip_protocol_deliver_rcu+0x2a3/0x13d0 net/ipv4/ip_input.c:205
       ip_local_deliver_finish+0x336/0x500 net/ipv4/ip_input.c:233
       NF_HOOK include/linux/netfilter.h:314 [inline]
       ip_local_deliver+0x21f/0x490 net/ipv4/ip_input.c:254
       dst_input include/net/dst.h:460 [inline]
       ip_rcv_finish+0x4a2/0x520 net/ipv4/ip_input.c:447
       NF_HOOK include/linux/netfilter.h:314 [inline]
       ip_rcv+0xcd/0x380 net/ipv4/ip_input.c:567
       __netif_receive_skb_one_core net/core/dev.c:5704 [inline]
       __netif_receive_skb+0x319/0xa00 net/core/dev.c:5817
       process_backlog+0x4ad/0xa50 net/core/dev.c:6149
       __napi_poll+0xe7/0x980 net/core/dev.c:6902
       napi_poll net/core/dev.c:6971 [inline]
       net_rx_action+0xa5a/0x19b0 net/core/dev.c:7093
       handle_softirqs+0x1a0/0x7c0 kernel/softirq.c:561
       __do_softirq+0x14/0x1a kernel/softirq.c:595
       do_softirq+0x9a/0x100 kernel/softirq.c:462
       __local_bh_enable_ip+0x9f/0xb0 kernel/softirq.c:389
       local_bh_enable include/linux/bottom_half.h:33 [inline]
       rcu_read_unlock_bh include/linux/rcupdate.h:919 [inline]
       __dev_queue_xmit+0x2758/0x57d0 net/core/dev.c:4493
       dev_queue_xmit include/linux/netdevice.h:3168 [inline]
       neigh_hh_output include/net/neighbour.h:523 [inline]
       neigh_output include/net/neighbour.h:537 [inline]
       ip_finish_output2+0x187c/0x1b70 net/ipv4/ip_output.c:236
       __ip_finish_output+0x287/0x810
       ip_finish_output+0x4b/0x600 net/ipv4/ip_output.c:324
       NF_HOOK_COND include/linux/netfilter.h:303 [inline]
       ip_output+0x15f/0x3f0 net/ipv4/ip_output.c:434
       dst_output include/net/dst.h:450 [inline]
       ip_local_out net/ipv4/ip_output.c:130 [inline]
       __ip_queue_xmit+0x1f2a/0x20d0 net/ipv4/ip_output.c:536
       ip_queue_xmit+0x60/0x80 net/ipv4/ip_output.c:550
       __tcp_transmit_skb+0x3cea/0x4900 net/ipv4/tcp_output.c:1468
       tcp_transmit_skb net/ipv4/tcp_output.c:1486 [inline]
       tcp_write_xmit+0x3b90/0x9070 net/ipv4/tcp_output.c:2829
       __tcp_push_pending_frames+0xc4/0x380 net/ipv4/tcp_output.c:3012
       tcp_send_fin+0x9f6/0xf50 net/ipv4/tcp_output.c:3618
       __tcp_close+0x140c/0x1550 net/ipv4/tcp.c:3130
       __mptcp_close_ssk+0x74e/0x16f0 net/mptcp/protocol.c:2496
       mptcp_close_ssk+0x26b/0x2c0 net/mptcp/protocol.c:2550
       mptcp_pm_nl_rm_addr_or_subflow+0x635/0xd10 net/mptcp/pm_netlink.c:889
       mptcp_pm_nl_rm_subflow_received net/mptcp/pm_netlink.c:924 [inline]
       mptcp_pm_flush_addrs_and_subflows net/mptcp/pm_netlink.c:1688 [inline]
       mptcp_nl_flush_addrs_list net/mptcp/pm_netlink.c:1709 [inline]
       mptcp_pm_nl_flush_addrs_doit+0xe10/0x1630 net/mptcp/pm_netlink.c:1750
       genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
       genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
       genl_rcv_msg+0x1214/0x12c0 net/netlink/genetlink.c:1210
       netlink_rcv_skb+0x375/0x650 net/netlink/af_netlink.c:2542
       genl_rcv+0x40/0x60 net/netlink/genetlink.c:1219
       netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
       netlink_unicast+0xf52/0x1260 net/netlink/af_netlink.c:1347
       netlink_sendmsg+0x10da/0x11e0 net/netlink/af_netlink.c:1891
       sock_sendmsg_nosec net/socket.c:711 [inline]
       __sock_sendmsg+0x30f/0x380 net/socket.c:726
       ____sys_sendmsg+0x877/0xb60 net/socket.c:2583
       ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2637
       __sys_sendmsg net/socket.c:2669 [inline]
       __do_sys_sendmsg net/socket.c:2674 [inline]
       __se_sys_sendmsg net/socket.c:2672 [inline]
       __x64_sys_sendmsg+0x212/0x3c0 net/socket.c:2672
       x64_sys_call+0x2ed6/0x3c30 arch/x86/include/generated/asm/syscalls_64.h:47
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
      Uninit was stored to memory at:
       mptcp_get_options+0x2c0f/0x2f20 net/mptcp/options.c:397
       mptcp_incoming_options+0x19a/0x3d30 net/mptcp/options.c:1150
       tcp_data_queue+0xb4/0x7be0 net/ipv4/tcp_input.c:5233
       tcp_rcv_established+0x1061/0x2510 net/ipv4/tcp_input.c:6264
       tcp_v4_do_rcv+0x7f3/0x11a0 net/ipv4/tcp_ipv4.c:1916
       tcp_v4_rcv+0x51df/0x5750 net/ipv4/tcp_ipv4.c:2351
       ip_protocol_deliver_rcu+0x2a3/0x13d0 net/ipv4/ip_input.c:205
       ip_local_deliver_finish+0x336/0x500 net/ipv4/ip_input.c:233
       NF_HOOK include/linux/netfilter.h:314 [inline]
       ip_local_deliver+0x21f/0x490 net/ipv4/ip_input.c:254
       dst_input include/net/dst.h:460 [inline]
       ip_rcv_finish+0x4a2/0x520 net/ipv4/ip_input.c:447
       NF_HOOK include/linux/netfilter.h:314 [inline]
       ip_rcv+0xcd/0x380 net/ipv4/ip_input.c:567
       __netif_receive_skb_one_core net/core/dev.c:5704 [inline]
       __netif_receive_skb+0x319/0xa00 net/core/dev.c:5817
       process_backlog+0x4ad/0xa50 net/core/dev.c:6149
       __napi_poll+0xe7/0x980 net/core/dev.c:6902
       napi_poll net/core/dev.c:6971 [inline]
       net_rx_action+0xa5a/0x19b0 net/core/dev.c:7093
       handle_softirqs+0x1a0/0x7c0 kernel/softirq.c:561
       __do_softirq+0x14/0x1a kernel/softirq.c:595
    
      Uninit was stored to memory at:
       put_unaligned_be32 include/linux/unaligned.h:68 [inline]
       mptcp_write_options+0x17f9/0x3100 net/mptcp/options.c:1417
       mptcp_options_write net/ipv4/tcp_output.c:465 [inline]
       tcp_options_write+0x6d9/0xe90 net/ipv4/tcp_output.c:759
       __tcp_transmit_skb+0x294b/0x4900 net/ipv4/tcp_output.c:1414
       tcp_transmit_skb net/ipv4/tcp_output.c:1486 [inline]
       tcp_write_xmit+0x3b90/0x9070 net/ipv4/tcp_output.c:2829
       __tcp_push_pending_frames+0xc4/0x380 net/ipv4/tcp_output.c:3012
       tcp_send_fin+0x9f6/0xf50 net/ipv4/tcp_output.c:3618
       __tcp_close+0x140c/0x1550 net/ipv4/tcp.c:3130
       __mptcp_close_ssk+0x74e/0x16f0 net/mptcp/protocol.c:2496
       mptcp_close_ssk+0x26b/0x2c0 net/mptcp/protocol.c:2550
       mptcp_pm_nl_rm_addr_or_subflow+0x635/0xd10 net/mptcp/pm_netlink.c:889
       mptcp_pm_nl_rm_subflow_received net/mptcp/pm_netlink.c:924 [inline]
       mptcp_pm_flush_addrs_and_subflows net/mptcp/pm_netlink.c:1688 [inline]
       mptcp_nl_flush_addrs_list net/mptcp/pm_netlink.c:1709 [inline]
       mptcp_pm_nl_flush_addrs_doit+0xe10/0x1630 net/mptcp/pm_netlink.c:1750
       genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
       genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
       genl_rcv_msg+0x1214/0x12c0 net/netlink/genetlink.c:1210
       netlink_rcv_skb+0x375/0x650 net/netlink/af_netlink.c:2542
       genl_rcv+0x40/0x60 net/netlink/genetlink.c:1219
       netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
       netlink_unicast+0xf52/0x1260 net/netlink/af_netlink.c:1347
       netlink_sendmsg+0x10da/0x11e0 net/netlink/af_netlink.c:1891
       sock_sendmsg_nosec net/socket.c:711 [inline]
       __sock_sendmsg+0x30f/0x380 net/socket.c:726
       ____sys_sendmsg+0x877/0xb60 net/socket.c:2583
       ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2637
       __sys_sendmsg net/socket.c:2669 [inline]
       __do_sys_sendmsg net/socket.c:2674 [inline]
       __se_sys_sendmsg net/socket.c:2672 [inline]
       __x64_sys_sendmsg+0x212/0x3c0 net/socket.c:2672
       x64_sys_call+0x2ed6/0x3c30 arch/x86/include/generated/asm/syscalls_64.h:47
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
      Uninit was stored to memory at:
       mptcp_pm_add_addr_signal+0x3d7/0x4c0
       mptcp_established_options_add_addr net/mptcp/options.c:666 [inline]
       mptcp_established_options+0x1b9b/0x3a00 net/mptcp/options.c:884
       tcp_established_options+0x2c4/0x7d0 net/ipv4/tcp_output.c:1012
       __tcp_transmit_skb+0x5b7/0x4900 net/ipv4/tcp_output.c:1333
       tcp_transmit_skb net/ipv4/tcp_output.c:1486 [inline]
       tcp_write_xmit+0x3b90/0x9070 net/ipv4/tcp_output.c:2829
       __tcp_push_pending_frames+0xc4/0x380 net/ipv4/tcp_output.c:3012
       tcp_send_fin+0x9f6/0xf50 net/ipv4/tcp_output.c:3618
       __tcp_close+0x140c/0x1550 net/ipv4/tcp.c:3130
       __mptcp_close_ssk+0x74e/0x16f0 net/mptcp/protocol.c:2496
       mptcp_close_ssk+0x26b/0x2c0 net/mptcp/protocol.c:2550
       mptcp_pm_nl_rm_addr_or_subflow+0x635/0xd10 net/mptcp/pm_netlink.c:889
       mptcp_pm_nl_rm_subflow_received net/mptcp/pm_netlink.c:924 [inline]
       mptcp_pm_flush_addrs_and_subflows net/mptcp/pm_netlink.c:1688 [inline]
       mptcp_nl_flush_addrs_list net/mptcp/pm_netlink.c:1709 [inline]
       mptcp_pm_nl_flush_addrs_doit+0xe10/0x1630 net/mptcp/pm_netlink.c:1750
       genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
       genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
       genl_rcv_msg+0x1214/0x12c0 net/netlink/genetlink.c:1210
       netlink_rcv_skb+0x375/0x650 net/netlink/af_netlink.c:2542
       genl_rcv+0x40/0x60 net/netlink/genetlink.c:1219
       netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
       netlink_unicast+0xf52/0x1260 net/netlink/af_netlink.c:1347
       netlink_sendmsg+0x10da/0x11e0 net/netlink/af_netlink.c:1891
       sock_sendmsg_nosec net/socket.c:711 [inline]
       __sock_sendmsg+0x30f/0x380 net/socket.c:726
       ____sys_sendmsg+0x877/0xb60 net/socket.c:2583
       ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2637
       __sys_sendmsg net/socket.c:2669 [inline]
       __do_sys_sendmsg net/socket.c:2674 [inline]
       __se_sys_sendmsg net/socket.c:2672 [inline]
       __x64_sys_sendmsg+0x212/0x3c0 net/socket.c:2672
       x64_sys_call+0x2ed6/0x3c30 arch/x86/include/generated/asm/syscalls_64.h:47
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
      Uninit was stored to memory at:
       mptcp_pm_add_addr_received+0x95f/0xdd0 net/mptcp/pm.c:235
       mptcp_incoming_options+0x2983/0x3d30 net/mptcp/options.c:1169
       tcp_data_queue+0xb4/0x7be0 net/ipv4/tcp_input.c:5233
       tcp_rcv_state_process+0x2a38/0x49d0 net/ipv4/tcp_input.c:6972
       tcp_v4_do_rcv+0xbf9/0x11a0 net/ipv4/tcp_ipv4.c:1939
       tcp_v4_rcv+0x51df/0x5750 net/ipv4/tcp_ipv4.c:2351
       ip_protocol_deliver_rcu+0x2a3/0x13d0 net/ipv4/ip_input.c:205
       ip_local_deliver_finish+0x336/0x500 net/ipv4/ip_input.c:233
       NF_HOOK include/linux/netfilter.h:314 [inline]
       ip_local_deliver+0x21f/0x490 net/ipv4/ip_input.c:254
       dst_input include/net/dst.h:460 [inline]
       ip_rcv_finish+0x4a2/0x520 net/ipv4/ip_input.c:447
       NF_HOOK include/linux/netfilter.h:314 [inline]
       ip_rcv+0xcd/0x380 net/ipv4/ip_input.c:567
       __netif_receive_skb_one_core net/core/dev.c:5704 [inline]
       __netif_receive_skb+0x319/0xa00 net/core/dev.c:5817
       process_backlog+0x4ad/0xa50 net/core/dev.c:6149
       __napi_poll+0xe7/0x980 net/core/dev.c:6902
       napi_poll net/core/dev.c:6971 [inline]
       net_rx_action+0xa5a/0x19b0 net/core/dev.c:7093
       handle_softirqs+0x1a0/0x7c0 kernel/softirq.c:561
       __do_softirq+0x14/0x1a kernel/softirq.c:595
    
      Local variable mp_opt created at:
       mptcp_incoming_options+0x119/0x3d30 net/mptcp/options.c:1127
       tcp_data_queue+0xb4/0x7be0 net/ipv4/tcp_input.c:5233
    
    The current schema is too fragile; address the issue grouping all the
    state-related data together and clearing the whole group instead of
    just the bitmask. This also cleans-up the code a bit, as there is no
    need to individually clear "random" bitfield in a couple of places
    any more.
    
    Fixes: 84dfe3677a6f ("mptcp: send out dedicated ADD_ADDR packet")
    Cc: [email protected]
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/[email protected]
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/541
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: handle fastopen disconnect correctly [+ + +]
Author: Paolo Abeni <[email protected]>
Date:   Thu Jan 23 19:05:56 2025 +0100

    mptcp: handle fastopen disconnect correctly
    
    commit 619af16b3b57a3a4ee50b9a30add9ff155541e71 upstream.
    
    Syzbot was able to trigger a data stream corruption:
    
      WARNING: CPU: 0 PID: 9846 at net/mptcp/protocol.c:1024 __mptcp_clean_una+0xddb/0xff0 net/mptcp/protocol.c:1024
      Modules linked in:
      CPU: 0 UID: 0 PID: 9846 Comm: syz-executor351 Not tainted 6.13.0-rc2-syzkaller-00059-g00a5acdbf398 #0
      Hardware name: Google Compute Engine/Google Compute Engine, BIOS Google 11/25/2024
      RIP: 0010:__mptcp_clean_una+0xddb/0xff0 net/mptcp/protocol.c:1024
      Code: fa ff ff 48 8b 4c 24 18 80 e1 07 fe c1 38 c1 0f 8c 8e fa ff ff 48 8b 7c 24 18 e8 e0 db 54 f6 e9 7f fa ff ff e8 e6 80 ee f5 90 <0f> 0b 90 4c 8b 6c 24 40 4d 89 f4 e9 04 f5 ff ff 44 89 f1 80 e1 07
      RSP: 0018:ffffc9000c0cf400 EFLAGS: 00010293
      RAX: ffffffff8bb0dd5a RBX: ffff888033f5d230 RCX: ffff888059ce8000
      RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
      RBP: ffffc9000c0cf518 R08: ffffffff8bb0d1dd R09: 1ffff110170c8928
      R10: dffffc0000000000 R11: ffffed10170c8929 R12: 0000000000000000
      R13: ffff888033f5d220 R14: dffffc0000000000 R15: ffff8880592b8000
      FS:  00007f6e866496c0(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f6e86f491a0 CR3: 00000000310e6000 CR4: 00000000003526f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       <TASK>
       __mptcp_clean_una_wakeup+0x7f/0x2d0 net/mptcp/protocol.c:1074
       mptcp_release_cb+0x7cb/0xb30 net/mptcp/protocol.c:3493
       release_sock+0x1aa/0x1f0 net/core/sock.c:3640
       inet_wait_for_connect net/ipv4/af_inet.c:609 [inline]
       __inet_stream_connect+0x8bd/0xf30 net/ipv4/af_inet.c:703
       mptcp_sendmsg_fastopen+0x2a2/0x530 net/mptcp/protocol.c:1755
       mptcp_sendmsg+0x1884/0x1b10 net/mptcp/protocol.c:1830
       sock_sendmsg_nosec net/socket.c:711 [inline]
       __sock_sendmsg+0x1a6/0x270 net/socket.c:726
       ____sys_sendmsg+0x52a/0x7e0 net/socket.c:2583
       ___sys_sendmsg net/socket.c:2637 [inline]
       __sys_sendmsg+0x269/0x350 net/socket.c:2669
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
      RIP: 0033:0x7f6e86ebfe69
      Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 b1 1f 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
      RSP: 002b:00007f6e86649168 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
      RAX: ffffffffffffffda RBX: 00007f6e86f491b8 RCX: 00007f6e86ebfe69
      RDX: 0000000030004001 RSI: 0000000020000080 RDI: 0000000000000003
      RBP: 00007f6e86f491b0 R08: 00007f6e866496c0 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000246 R12: 00007f6e86f491bc
      R13: 000000000000006e R14: 00007ffe445d9420 R15: 00007ffe445d9508
       </TASK>
    
    The root cause is the bad handling of disconnect() generated internally
    by the MPTCP protocol in case of connect FASTOPEN errors.
    
    Address the issue increasing the socket disconnect counter even on such
    a case, to allow other threads waiting on the same socket lock to
    properly error out.
    
    Fixes: c2b2ae3925b6 ("mptcp: handle correctly disconnect() failures")
    Cc: [email protected]
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/[email protected]
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/537
    Tested-by: [email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: pm: only set fullmesh for subflow endp [+ + +]
Author: Matthieu Baerts (NGI0) <[email protected]>
Date:   Sun Feb 9 18:48:30 2025 +0100

    mptcp: pm: only set fullmesh for subflow endp
    
    commit 1bb0d1348546ad059f55c93def34e67cb2a034a6 upstream.
    
    With the in-kernel path-manager, it is possible to change the 'fullmesh'
    flag. The code in mptcp_pm_nl_fullmesh() expects to change it only on
    'subflow' endpoints, to recreate more or less subflows using the linked
    address.
    
    Unfortunately, the set_flags() hook was a bit more permissive, and
    allowed 'implicit' endpoints to get the 'fullmesh' flag while it is not
    allowed before.
    
    That's what syzbot found, triggering the following warning:
    
      WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 __mark_subflow_endp_available net/mptcp/pm_netlink.c:1496 [inline]
      WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 mptcp_pm_nl_fullmesh net/mptcp/pm_netlink.c:1980 [inline]
      WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 mptcp_nl_set_flags net/mptcp/pm_netlink.c:2003 [inline]
      WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 mptcp_pm_nl_set_flags+0x974/0xdc0 net/mptcp/pm_netlink.c:2064
      Modules linked in:
      CPU: 0 UID: 0 PID: 6499 Comm: syz.1.413 Not tainted 6.13.0-rc5-syzkaller-00172-gd1bf27c4e176 #0
      Hardware name: Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
      RIP: 0010:__mark_subflow_endp_available net/mptcp/pm_netlink.c:1496 [inline]
      RIP: 0010:mptcp_pm_nl_fullmesh net/mptcp/pm_netlink.c:1980 [inline]
      RIP: 0010:mptcp_nl_set_flags net/mptcp/pm_netlink.c:2003 [inline]
      RIP: 0010:mptcp_pm_nl_set_flags+0x974/0xdc0 net/mptcp/pm_netlink.c:2064
      Code: 01 00 00 49 89 c5 e8 fb 45 e8 f5 e9 b8 fc ff ff e8 f1 45 e8 f5 4c 89 f7 be 03 00 00 00 e8 44 1d 0b f9 eb a0 e8 dd 45 e8 f5 90 <0f> 0b 90 e9 17 ff ff ff 89 d9 80 e1 07 38 c1 0f 8c c9 fc ff ff 48
      RSP: 0018:ffffc9000d307240 EFLAGS: 00010293
      RAX: ffffffff8bb72e03 RBX: 0000000000000000 RCX: ffff88807da88000
      RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
      RBP: ffffc9000d307430 R08: ffffffff8bb72cf0 R09: 1ffff1100b842a5e
      R10: dffffc0000000000 R11: ffffed100b842a5f R12: ffff88801e2e5ac0
      R13: ffff88805c214800 R14: ffff88805c2152e8 R15: 1ffff1100b842a5d
      FS:  00005555619f6500(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000020002840 CR3: 00000000247e6000 CR4: 00000000003526f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       <TASK>
       genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
       genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
       genl_rcv_msg+0xb14/0xec0 net/netlink/genetlink.c:1210
       netlink_rcv_skb+0x1e3/0x430 net/netlink/af_netlink.c:2542
       genl_rcv+0x28/0x40 net/netlink/genetlink.c:1219
       netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
       netlink_unicast+0x7f6/0x990 net/netlink/af_netlink.c:1347
       netlink_sendmsg+0x8e4/0xcb0 net/netlink/af_netlink.c:1891
       sock_sendmsg_nosec net/socket.c:711 [inline]
       __sock_sendmsg+0x221/0x270 net/socket.c:726
       ____sys_sendmsg+0x52a/0x7e0 net/socket.c:2583
       ___sys_sendmsg net/socket.c:2637 [inline]
       __sys_sendmsg+0x269/0x350 net/socket.c:2669
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
      RIP: 0033:0x7f5fe8785d29
      Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
      RSP: 002b:00007fff571f5558 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
      RAX: ffffffffffffffda RBX: 00007f5fe8975fa0 RCX: 00007f5fe8785d29
      RDX: 0000000000000000 RSI: 0000000020000480 RDI: 0000000000000007
      RBP: 00007f5fe8801b08 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
      R13: 00007f5fe8975fa0 R14: 00007f5fe8975fa0 R15: 00000000000011f4
       </TASK>
    
    Here, syzbot managed to set the 'fullmesh' flag on an 'implicit' and
    used -- according to 'id_avail_bitmap' -- endpoint, causing the PM to
    try decrement the local_addr_used counter which is only incremented for
    the 'subflow' endpoint.
    
    Note that 'no type' endpoints -- not 'subflow', 'signal', 'implicit' --
    are fine, because their ID will not be marked as used in the 'id_avail'
    bitmap, and setting 'fullmesh' can help forcing the creation of subflow
    when receiving an ADD_ADDR.
    
    Fixes: 73c762c1f07d ("mptcp: set fullmesh flag in pm_netlink")
    Cc: [email protected]
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/[email protected]
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/540
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    [ Conflicts in pm_netlink.c, because the code has been moved around in
      commit 6a42477fe449 ("mptcp: update set_flags interfaces"), but the
      same fix can still be applied at the original place. ]
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: prevent excessive coalescing on receive [+ + +]
Author: Paolo Abeni <[email protected]>
Date:   Sun Feb 9 18:48:31 2025 +0100

    mptcp: prevent excessive coalescing on receive
    
    commit 56b824eb49d6258aa0bad09a406ceac3f643cdae upstream.
    
    Currently the skb size after coalescing is only limited by the skb
    layout (the skb must not carry frag_list). A single coalesced skb
    covering several MSS can potentially fill completely the receive
    buffer. In such a case, the snd win will zero until the receive buffer
    will be empty again, affecting tput badly.
    
    Fixes: 8268ed4c9d19 ("mptcp: introduce and use mptcp_try_coalesce()")
    Cc: [email protected] # please delay 2 weeks after 6.13-final release
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mtd: hyperbus: hbmc-am654: Convert to platform remove callback returning void [+ + +]
Author: Uwe Kleine-König <[email protected]>
Date:   Sun Oct 8 22:01:32 2023 +0200

    mtd: hyperbus: hbmc-am654: Convert to platform remove callback returning void
    
    [ Upstream commit 59bd56760df17506bc2f828f19b40a2243edd0d0 ]
    
    The .remove() callback for a platform driver returns an int which makes
    many driver authors wrongly assume it's possible to do error handling by
    returning an error code. However the value returned is ignored (apart
    from emitting a warning) and this typically results in resource leaks.
    
    To improve here there is a quest to make the remove callback return
    void. In the first step of this quest all drivers are converted to
    .remove_new(), which already returns void. Eventually after all drivers
    are converted, .remove_new() will be renamed to .remove().
    
    Trivially convert this driver from always returning zero in the remove
    callback to the void returning variant.
    
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Signed-off-by: Miquel Raynal <[email protected]>
    Acked-by: Tudor Ambarus <[email protected]>
    Link: https://lore.kernel.org/linux-mtd/[email protected]
    Stable-dep-of: bf5821909eb9 ("mtd: hyperbus: hbmc-am654: fix an OF node reference leak")
    Signed-off-by: Sasha Levin <[email protected]>

mtd: hyperbus: hbmc-am654: fix an OF node reference leak [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Fri Dec 6 22:38:09 2024 +0900

    mtd: hyperbus: hbmc-am654: fix an OF node reference leak
    
    [ Upstream commit bf5821909eb9c7f5d07d5c6e852ead2c373c94a0 ]
    
    In am654_hbmc_platform_driver, .remove() and the error path of .probe()
    do not decrement the refcount of an OF node obtained by
      of_get_next_child(). Fix this by adding of_node_put() calls.
    
    Fixes: aca31ce96814 ("mtd: hyperbus: hbmc-am654: Fix direct mapping setup flash access")
    Signed-off-by: Joe Hattori <[email protected]>
    Signed-off-by: Miquel Raynal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mtd: onenand: Fix uninitialized retlen in do_otp_read() [+ + +]
Author: Ivan Stepchenko <[email protected]>
Date:   Thu Nov 14 16:29:51 2024 +0300

    mtd: onenand: Fix uninitialized retlen in do_otp_read()
    
    commit 70a71f8151b9879b0950668ce3ad76263261fee0 upstream.
    
    The function do_otp_read() does not set the output parameter *retlen,
    which is expected to contain the number of bytes actually read.
    As a result, in onenand_otp_walk(), the tmp_retlen variable remains
    uninitialized after calling do_otp_walk() and used to change
    the values of the buf, len and retlen variables.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 49dc08eeda70 ("[MTD] [OneNAND] fix numerous races")
    Cc: [email protected]
    Signed-off-by: Ivan Stepchenko <[email protected]>
    Signed-off-by: Miquel Raynal <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nbd: don't allow reconnect after disconnect [+ + +]
Author: Yu Kuai <[email protected]>
Date:   Fri Jan 3 17:28:59 2025 +0800

    nbd: don't allow reconnect after disconnect
    
    [ Upstream commit 844b8cdc681612ff24df62cdefddeab5772fadf1 ]
    
    Following process can cause nbd_config UAF:
    
    1) grab nbd_config temporarily;
    
    2) nbd_genl_disconnect() flush all recv_work() and release the
    initial reference:
    
      nbd_genl_disconnect
       nbd_disconnect_and_put
        nbd_disconnect
         flush_workqueue(nbd->recv_workq)
        if (test_and_clear_bit(NBD_RT_HAS_CONFIG_REF, ...))
         nbd_config_put
         -> due to step 1), reference is still not zero
    
    3) nbd_genl_reconfigure() queue recv_work() again;
    
      nbd_genl_reconfigure
       config = nbd_get_config_unlocked(nbd)
       if (!config)
       -> succeed
       if (!test_bit(NBD_RT_BOUND, ...))
       -> succeed
       nbd_reconnect_socket
        queue_work(nbd->recv_workq, &args->work)
    
    4) step 1) release the reference;
    
    5) Finially, recv_work() will trigger UAF:
    
      recv_work
       nbd_config_put(nbd)
       -> nbd_config is freed
       atomic_dec(&config->recv_threads)
       -> UAF
    
    Fix the problem by clearing NBD_RT_BOUND in nbd_genl_disconnect(), so
    that nbd_genl_reconfigure() will fail.
    
    Fixes: b7aa3d39385d ("nbd: add a reconfigure netlink command")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Yu Kuai <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ndisc: extend RCU protection in ndisc_send_skb() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Feb 7 13:58:39 2025 +0000

    ndisc: extend RCU protection in ndisc_send_skb()
    
    [ Upstream commit ed6ae1f325d3c43966ec1b62ac1459e2b8e45640 ]
    
    ndisc_send_skb() can be called without RTNL or RCU held.
    
    Acquire rcu_read_lock() earlier, so that we can use dev_net_rcu()
    and avoid a potential UAF.
    
    Fixes: 1762f7e88eb3 ("[NETNS][IPV6] ndisc - make socket control per namespace")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ndisc: ndisc_send_redirect() must use dev_get_by_index_rcu() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Feb 7 13:58:33 2025 +0000

    ndisc: ndisc_send_redirect() must use dev_get_by_index_rcu()
    
    [ Upstream commit 48145a57d4bbe3496e8e4880b23ea6b511e6e519 ]
    
    ndisc_send_redirect() is called under RCU protection, not RTNL.
    
    It must use dev_get_by_index_rcu() instead of __dev_get_by_index()
    
    Fixes: 2f17becfbea5 ("vrf: check the original netdevice for generating redirect")
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Stephen Suryaputra <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ndisc: use RCU protection in ndisc_alloc_skb() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Feb 7 13:58:34 2025 +0000

    ndisc: use RCU protection in ndisc_alloc_skb()
    
    [ Upstream commit 628e6d18930bbd21f2d4562228afe27694f66da9 ]
    
    ndisc_alloc_skb() can be called without RTNL or RCU being held.
    
    Add RCU protection to avoid possible UAF.
    
    Fixes: de09334b9326 ("ndisc: Introduce ndisc_alloc_skb() helper.")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
neighbour: delete redundant judgment statements [+ + +]
Author: Li Zetao <[email protected]>
Date:   Thu Aug 22 12:32:45 2024 +0800

    neighbour: delete redundant judgment statements
    
    [ Upstream commit c25bdd2ac8cf7da70a226f1a66cdce7af15ff86f ]
    
    The initial value of err is -ENOBUFS, and err is guaranteed to be
    less than 0 before all goto errout. Therefore, on the error path
    of errout, there is no need to repeatedly judge that err is less than 0,
    and delete redundant judgments to make the code more concise.
    
    Signed-off-by: Li Zetao <[email protected]>
    Reviewed-by: Petr Machata <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: becbd5850c03 ("neighbour: use RCU protection in __neigh_notify()")
    Signed-off-by: Sasha Levin <[email protected]>

neighbour: use RCU protection in __neigh_notify() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Feb 7 13:58:35 2025 +0000

    neighbour: use RCU protection in __neigh_notify()
    
    [ Upstream commit becbd5850c03ed33b232083dd66c6e38c0c0e569 ]
    
    __neigh_notify() can be called without RTNL or RCU protection.
    
    Use RCU protection to avoid potential UAF.
    
    Fixes: 426b5303eb43 ("[NETNS]: Modify the neighbour table code so it handles multiple network namespaces")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5: use do_aux_work for PHC overflow checks [+ + +]
Author: Vadim Fedorenko <[email protected]>
Date:   Tue Jan 7 02:48:12 2025 -0800

    net/mlx5: use do_aux_work for PHC overflow checks
    
    [ Upstream commit e61e6c415ba9ff2b32bb6780ce1b17d1d76238f1 ]
    
    The overflow_work is using system wq to do overflow checks and updates
    for PHC device timecounter, which might be overhelmed by other tasks.
    But there is dedicated kthread in PTP subsystem designed for such
    things. This patch changes the work queue to proper align with PTP
    subsystem and to avoid overloading system work queue.
    The adjfine() function acts the same way as overflow check worker,
    we can postpone ptp aux worker till the next overflow period after
    adjfine() was called.
    
    Reviewed-by: Dragos Tatulea <[email protected]>
    Signed-off-by: Vadim Fedorenko <[email protected]>
    Acked-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlxfw: Drop hard coded max FW flash image size [+ + +]
Author: Maher Sanalla <[email protected]>
Date:   Thu Jan 16 14:33:16 2025 +0200

    net/mlxfw: Drop hard coded max FW flash image size
    
    [ Upstream commit 70d81f25cc92cc4e914516c9935ae752f27d78ad ]
    
    Currently, mlxfw kernel module limits FW flash image size to be
    10MB at most, preventing the ability to burn recent BlueField-3
    FW that exceeds the said size limit.
    
    Thus, drop the hard coded limit. Instead, rely on FW's
    max_component_size threshold that is reported in MCQI register
    as the size limit for FW image.
    
    Fixes: 410ed13cae39 ("Add the mlxfw module for Mellanox firmware flash process")
    Signed-off-by: Maher Sanalla <[email protected]>
    Signed-off-by: Moshe Shemesh <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Tested-by: Ido Schimmel <[email protected]>
    Reviewed-by: Michal Swiatkowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/ncsi: Add NC-SI 1.2 Get MC MAC Address command [+ + +]
Author: Peter Delevoryas <[email protected]>
Date:   Tue Nov 14 10:07:35 2023 -0600

    net/ncsi: Add NC-SI 1.2 Get MC MAC Address command
    
    [ Upstream commit b8291cf3d1180b5b61299922f17c9441616a805a ]
    
    This change adds support for the NC-SI 1.2 Get MC MAC Address command,
    specified here:
    
    https://www.dmtf.org/sites/default/files/standards/documents/DSP0222_1.2.0.pdf
    
    It serves the exact same function as the existing OEM Get MAC Address
    commands, so if a channel reports that it supports NC-SI 1.2, we prefer
    to use the standard command rather than the OEM command.
    
    Verified with an invalid MAC address and 2 valid ones:
    
    [   55.137072] ftgmac100 1e690000.ftgmac eth0: NCSI: Received 3 provisioned MAC addresses
    [   55.137614] ftgmac100 1e690000.ftgmac eth0: NCSI: MAC address 0: 00:00:00:00:00:00
    [   55.138026] ftgmac100 1e690000.ftgmac eth0: NCSI: MAC address 1: fa:ce:b0:0c:20:22
    [   55.138528] ftgmac100 1e690000.ftgmac eth0: NCSI: MAC address 2: fa:ce:b0:0c:20:23
    [   55.139241] ftgmac100 1e690000.ftgmac eth0: NCSI: Unable to assign 00:00:00:00:00:00 to device
    [   55.140098] ftgmac100 1e690000.ftgmac eth0: NCSI: Set MAC address to fa:ce:b0:0c:20:22
    
    Signed-off-by: Peter Delevoryas <[email protected]>
    Signed-off-by: Patrick Williams <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: 9e2bbab94b88 ("net/ncsi: fix locking in Get MAC Address handling")
    Signed-off-by: Sasha Levin <[email protected]>

net/ncsi: fix locking in Get MAC Address handling [+ + +]
Author: Paul Fertser <[email protected]>
Date:   Thu Jan 9 17:50:54 2025 +0300

    net/ncsi: fix locking in Get MAC Address handling
    
    [ Upstream commit 9e2bbab94b88295dcc57c7580393c9ee08d7314d ]
    
    Obtaining RTNL lock in a response handler is not allowed since it runs
    in an atomic softirq context. Postpone setting the MAC address by adding
    a dedicated step to the configuration FSM.
    
    Fixes: 790071347a0a ("net/ncsi: change from ndo_set_mac_address to dev_set_mac_address")
    Cc: [email protected]
    Link: https://lore.kernel.org/20241129-potin-revert-ncsi-set-mac-addr-v1-1-94ea2cb596af@gmail.com
    Signed-off-by: Paul Fertser <[email protected]>
    Tested-by: Potin Lai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/ncsi: use dev_set_mac_address() for Get MC MAC Address handling [+ + +]
Author: Paul Fertser <[email protected]>
Date:   Mon Jan 20 16:35:36 2025 +0300

    net/ncsi: use dev_set_mac_address() for Get MC MAC Address handling
    
    commit 05d91cdb1f9108426b14975ef4eeddf15875ca05 upstream.
    
    Copy of the rationale from 790071347a0a1a89e618eedcd51c687ea783aeb3:
    
    Change ndo_set_mac_address to dev_set_mac_address because
    dev_set_mac_address provides a way to notify network layer about MAC
    change. In other case, services may not aware about MAC change and keep
    using old one which set from network adapter driver.
    
    As example, DHCP client from systemd do not update MAC address without
    notification from net subsystem which leads to the problem with acquiring
    the right address from DHCP server.
    
    Since dev_set_mac_address requires RTNL lock the operation can not be
    performed directly in the response handler, see
    9e2bbab94b88295dcc57c7580393c9ee08d7314d.
    
    The way of selecting the first suitable MAC address from the list is
    changed, instead of having the driver check it this patch just assumes
    any valid MAC should be good.
    
    Fixes: b8291cf3d118 ("net/ncsi: Add NC-SI 1.2 Get MC MAC Address command")
    Signed-off-by: Paul Fertser <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net/ncsi: wait for the last response to Deselect Package before configuring channel [+ + +]
Author: Paul Fertser <[email protected]>
Date:   Thu Jan 16 18:29:00 2025 +0300

    net/ncsi: wait for the last response to Deselect Package before configuring channel
    
    commit 6bb194d036c6e1b329dcdff459338cdd9a54802a upstream.
    
    The NCSI state machine as it's currently implemented assumes that
    transition to the next logical state is performed either explicitly by
    calling `schedule_work(&ndp->work)` to re-queue itself or implicitly
    after processing the predefined (ndp->pending_req_num) number of
    replies. Thus to avoid the configuration FSM from advancing prematurely
    and getting out of sync with the process it's essential to not skip
    waiting for a reply.
    
    This patch makes the code wait for reception of the Deselect Package
    response for the last package probed before proceeding to channel
    configuration.
    
    Thanks go to Potin Lai and Cosmo Chou for the initial investigation and
    testing.
    
    Fixes: 8e13f70be05e ("net/ncsi: Probe single packages to avoid conflict")
    Cc: [email protected]
    Signed-off-by: Paul Fertser <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net/rose: prevent integer overflows in rose_setsockopt() [+ + +]
Author: Nikita Zhandarovich <[email protected]>
Date:   Wed Jan 15 08:42:20 2025 -0800

    net/rose: prevent integer overflows in rose_setsockopt()
    
    [ Upstream commit d640627663bfe7d8963c7615316d7d4ef60f3b0b ]
    
    In case of possible unpredictably large arguments passed to
    rose_setsockopt() and multiplied by extra values on top of that,
    integer overflows may occur.
    
    Do the safest minimum and fix these issues by checking the
    contents of 'opt' and returning -EINVAL if they are too large. Also,
    switch to unsigned int and remove useless check for negative 'opt'
    in ROSE_IDLE case.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Nikita Zhandarovich <[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 data error when recvmsg with MSG_PEEK flag [+ + +]
Author: Guangguan Wang <[email protected]>
Date:   Sat Jan 4 22:32:01 2025 +0800

    net/smc: fix data error when recvmsg with MSG_PEEK flag
    
    [ Upstream commit a4b6539038c1aa1ae871aacf6e41b566c3613993 ]
    
    When recvmsg with MSG_PEEK flag, the data will be copied to
    user's buffer without advancing consume cursor and without
    reducing the length of rx available data. Once the expected
    peek length is larger than the value of bytes_to_rcv, in the
    loop of do while in smc_rx_recvmsg, the first loop will copy
    bytes_to_rcv bytes of data from the position local_tx_ctrl.cons,
    the second loop will copy the min(bytes_to_rcv, read_remaining)
    bytes from the position local_tx_ctrl.cons again because of the
    lacking of process with advancing consume cursor and reducing
    the length of available data. So do the subsequent loops. The
    data copied in the second loop and the subsequent loops will
    result in data error, as it should not be copied if no more data
    arrives and it should be copied from the position advancing
    bytes_to_rcv bytes from the local_tx_ctrl.cons if more data arrives.
    
    This issue can be reproduce by the following python script:
    server.py:
    import socket
    import time
    server_ip = '0.0.0.0'
    server_port = 12346
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind((server_ip, server_port))
    server_socket.listen(1)
    print('Server is running and listening for connections...')
    conn, addr = server_socket.accept()
    print('Connected by', addr)
    while True:
        data = conn.recv(1024)
        if not data:
            break
        print('Received request:', data.decode())
        conn.sendall(b'Hello, client!\n')
        time.sleep(5)
        conn.sendall(b'Hello, again!\n')
    conn.close()
    
    client.py:
    import socket
    server_ip = '<server ip>'
    server_port = 12346
    resp=b'Hello, client!\nHello, again!\n'
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect((server_ip, server_port))
    request = 'Hello, server!'
    client_socket.sendall(request.encode())
    peek_data = client_socket.recv(len(resp),
        socket.MSG_PEEK | socket.MSG_WAITALL)
    print('Peeked data:', peek_data.decode())
    client_socket.close()
    
    Fixes: 952310ccf2d8 ("smc: receive data from RMBE")
    Reported-by: D. Wythe <[email protected]>
    Signed-off-by: Guangguan Wang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net: add dev_net_rcu() helper [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Feb 5 15:51:09 2025 +0000

    net: add dev_net_rcu() helper
    
    [ Upstream commit 482ad2a4ace2740ca0ff1cbc8f3c7f862f3ab507 ]
    
    dev->nd_net can change, readers should either
    use rcu_read_lock() or RTNL.
    
    We currently use a generic helper, dev_net() with
    no debugging support. We probably have many hidden bugs.
    
    Add dev_net_rcu() helper for callers using rcu_read_lock()
    protection.
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 71b8471c93fa ("ipv4: use RCU protection in ipv4_default_advmss()")
    Signed-off-by: Sasha Levin <[email protected]>

net: atlantic: fix warning during hot unplug [+ + +]
Author: Jacob Moroni <[email protected]>
Date:   Mon Feb 3 09:36:05 2025 -0500

    net: atlantic: fix warning during hot unplug
    
    [ Upstream commit 028676bb189ed6d1b550a0fc570a9d695b6acfd3 ]
    
    Firmware deinitialization performs MMIO accesses which are not
    necessary if the device has already been removed. In some cases,
    these accesses happen via readx_poll_timeout_atomic which ends up
    timing out, resulting in a warning at hw_atl2_utils_fw.c:112:
    
    [  104.595913] Call Trace:
    [  104.595915]  <TASK>
    [  104.595918]  ? show_regs+0x6c/0x80
    [  104.595923]  ? __warn+0x8d/0x150
    [  104.595925]  ? aq_a2_fw_deinit+0xcf/0xe0 [atlantic]
    [  104.595934]  ? report_bug+0x182/0x1b0
    [  104.595938]  ? handle_bug+0x6e/0xb0
    [  104.595940]  ? exc_invalid_op+0x18/0x80
    [  104.595942]  ? asm_exc_invalid_op+0x1b/0x20
    [  104.595944]  ? aq_a2_fw_deinit+0xcf/0xe0 [atlantic]
    [  104.595952]  ? aq_a2_fw_deinit+0xcf/0xe0 [atlantic]
    [  104.595959]  aq_nic_deinit.part.0+0xbd/0xf0 [atlantic]
    [  104.595964]  aq_nic_deinit+0x17/0x30 [atlantic]
    [  104.595970]  aq_ndev_close+0x2b/0x40 [atlantic]
    [  104.595975]  __dev_close_many+0xad/0x160
    [  104.595978]  dev_close_many+0x99/0x170
    [  104.595979]  unregister_netdevice_many_notify+0x18b/0xb20
    [  104.595981]  ? __call_rcu_common+0xcd/0x700
    [  104.595984]  unregister_netdevice_queue+0xc6/0x110
    [  104.595986]  unregister_netdev+0x1c/0x30
    [  104.595988]  aq_pci_remove+0xb1/0xc0 [atlantic]
    
    Fix this by skipping firmware deinitialization altogether if the
    PCI device is no longer present.
    
    Tested with an AQC113 attached via Thunderbolt by performing
    repeated unplug cycles while traffic was running via iperf.
    
    Fixes: 97bde5c4f909 ("net: ethernet: aquantia: Support for NIC-specific code")
    Signed-off-by: Jacob Moroni <[email protected]>
    Reviewed-by: Igor Russkikh <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: avoid race between device unregistration and ethnl ops [+ + +]
Author: Antoine Tenart <[email protected]>
Date:   Thu Jan 16 10:21:57 2025 +0100

    net: avoid race between device unregistration and ethnl ops
    
    [ Upstream commit 12e070eb6964b341b41677fd260af5a305316a1f ]
    
    The following trace can be seen if a device is being unregistered while
    its number of channels are being modified.
    
      DEBUG_LOCKS_WARN_ON(lock->magic != lock)
      WARNING: CPU: 3 PID: 3754 at kernel/locking/mutex.c:564 __mutex_lock+0xc8a/0x1120
      CPU: 3 UID: 0 PID: 3754 Comm: ethtool Not tainted 6.13.0-rc6+ #771
      RIP: 0010:__mutex_lock+0xc8a/0x1120
      Call Trace:
       <TASK>
       ethtool_check_max_channel+0x1ea/0x880
       ethnl_set_channels+0x3c3/0xb10
       ethnl_default_set_doit+0x306/0x650
       genl_family_rcv_msg_doit+0x1e3/0x2c0
       genl_rcv_msg+0x432/0x6f0
       netlink_rcv_skb+0x13d/0x3b0
       genl_rcv+0x28/0x40
       netlink_unicast+0x42e/0x720
       netlink_sendmsg+0x765/0xc20
       __sys_sendto+0x3ac/0x420
       __x64_sys_sendto+0xe0/0x1c0
       do_syscall_64+0x95/0x180
       entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    This is because unregister_netdevice_many_notify might run before the
    rtnl lock section of ethnl operations, eg. set_channels in the above
    example. In this example the rss lock would be destroyed by the device
    unregistration path before being used again, but in general running
    ethnl operations while dismantle has started is not a good idea.
    
    Fix this by denying any operation on devices being unregistered. A check
    was already there in ethnl_ops_begin, but not wide enough.
    
    Note that the same issue cannot be seen on the ioctl version
    (__dev_ethtool) because the device reference is retrieved from within
    the rtnl lock section there. Once dismantle started, the net device is
    unlisted and no reference will be found.
    
    Fixes: dde91ccfa25f ("ethtool: do not perform operations on net devices being unregistered")
    Signed-off-by: Antoine Tenart <[email protected]>
    Reviewed-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Edward Cree <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: davicom: fix UAF in dm9000_drv_remove [+ + +]
Author: Chenyuan Yang <[email protected]>
Date:   Thu Jan 23 15:42:13 2025 -0600

    net: davicom: fix UAF in dm9000_drv_remove
    
    [ Upstream commit 19e65c45a1507a1a2926649d2db3583ed9d55fd9 ]
    
    dm is netdev private data and it cannot be
    used after free_netdev() call. Using dm after free_netdev()
    can cause UAF bug. Fix it by moving free_netdev() at the end of the
    function.
    
    This is similar to the issue fixed in commit
    ad297cd2db89 ("net: qcom/emac: fix UAF in emac_remove").
    
    This bug is detected by our static analysis tool.
    
    Fixes: cf9e60aa69ae ("net: davicom: Fix regulator not turned off on driver removal")
    Signed-off-by: Chenyuan Yang <[email protected]>
    CC: Uwe Kleine-König <[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: fix netdev_priv() dereference before check on non-DSA netdevice events [+ + +]
Author: Vladimir Oltean <[email protected]>
Date:   Wed Jan 10 02:33:54 2024 +0200

    net: dsa: fix netdev_priv() dereference before check on non-DSA netdevice events
    
    commit 844f104790bd69c2e4dbb9ee3eba46fde1fcea7b upstream.
    
    After the blamed commit, we started doing this dereference for every
    NETDEV_CHANGEUPPER and NETDEV_PRECHANGEUPPER event in the system.
    
    static inline struct dsa_port *dsa_user_to_port(const struct net_device *dev)
    {
            struct dsa_user_priv *p = netdev_priv(dev);
    
            return p->dp;
    }
    
    Which is obviously bogus, because not all net_devices have a netdev_priv()
    of type struct dsa_user_priv. But struct dsa_user_priv is fairly small,
    and p->dp means dereferencing 8 bytes starting with offset 16. Most
    drivers allocate that much private memory anyway, making our access not
    fault, and we discard the bogus data quickly afterwards, so this wasn't
    caught.
    
    But the dummy interface is somewhat special in that it calls
    alloc_netdev() with a priv size of 0. So every netdev_priv() dereference
    is invalid, and we get this when we emit a NETDEV_PRECHANGEUPPER event
    with a VLAN as its new upper:
    
    $ ip link add dummy1 type dummy
    $ ip link add link dummy1 name dummy1.100 type vlan id 100
    [   43.309174] ==================================================================
    [   43.316456] BUG: KASAN: slab-out-of-bounds in dsa_user_prechangeupper+0x30/0xe8
    [   43.323835] Read of size 8 at addr ffff3f86481d2990 by task ip/374
    [   43.330058]
    [   43.342436] Call trace:
    [   43.366542]  dsa_user_prechangeupper+0x30/0xe8
    [   43.371024]  dsa_user_netdevice_event+0xb38/0xee8
    [   43.375768]  notifier_call_chain+0xa4/0x210
    [   43.379985]  raw_notifier_call_chain+0x24/0x38
    [   43.384464]  __netdev_upper_dev_link+0x3ec/0x5d8
    [   43.389120]  netdev_upper_dev_link+0x70/0xa8
    [   43.393424]  register_vlan_dev+0x1bc/0x310
    [   43.397554]  vlan_newlink+0x210/0x248
    [   43.401247]  rtnl_newlink+0x9fc/0xe30
    [   43.404942]  rtnetlink_rcv_msg+0x378/0x580
    
    Avoid the kernel oops by dereferencing after the type check, as customary.
    
    Fixes: 4c3f80d22b2e ("net: dsa: walk through all changeupper notifier functions")
    Reported-and-tested-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Signed-off-by: Vladimir Oltean <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Wenshan Lan <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: ethernet: ti: am65-cpsw: fix freeing IRQ in am65_cpsw_nuss_remove_tx_chns() [+ + +]
Author: Roger Quadros <[email protected]>
Date:   Thu Jan 16 15:54:49 2025 +0200

    net: ethernet: ti: am65-cpsw: fix freeing IRQ in am65_cpsw_nuss_remove_tx_chns()
    
    [ Upstream commit 4395a44acb15850e492dd1de9ec4b6479d96bc80 ]
    
    When getting the IRQ we use k3_udma_glue_tx_get_irq() which returns
    negative error value on error. So not NULL check is not sufficient
    to deteremine if IRQ is valid. Check that IRQ is greater then zero
    to ensure it is valid.
    
    There is no issue at probe time but at runtime user can invoke
    .set_channels which results in the following call chain.
    am65_cpsw_set_channels()
     am65_cpsw_nuss_update_tx_rx_chns()
      am65_cpsw_nuss_remove_tx_chns()
      am65_cpsw_nuss_init_tx_chns()
    
    At this point if am65_cpsw_nuss_init_tx_chns() fails due to
    k3_udma_glue_tx_get_irq() then tx_chn->irq will be set to a
    negative value.
    
    Then, at subsequent .set_channels with higher channel count we
    will attempt to free an invalid IRQ in am65_cpsw_nuss_remove_tx_chns()
    leading to a kernel warning.
    
    The issue is present in the original commit that introduced this driver,
    although there, am65_cpsw_nuss_update_tx_rx_chns() existed as
    am65_cpsw_nuss_update_tx_chns().
    
    Fixes: 93a76530316a ("net: ethernet: ti: introduce am65x/j721e gigabit eth subsystem driver")
    Signed-off-by: Roger Quadros <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Reviewed-by: Siddharth Vadapalli <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: fec: implement TSO descriptor cleanup [+ + +]
Author: Dheeraj Reddy Jonnalagadda <[email protected]>
Date:   Mon Jan 20 14:24:30 2025 +0530

    net: fec: implement TSO descriptor cleanup
    
    [ Upstream commit 61dc1fd9205bc9d9918aa933a847b08e80b4dc20 ]
    
    Implement cleanup of descriptors in the TSO error path of
    fec_enet_txq_submit_tso(). The cleanup
    
    - Unmaps DMA buffers for data descriptors skipping TSO header
    - Clears all buffer descriptors
    - Handles extended descriptors by clearing cbd_esc when enabled
    
    Fixes: 79f339125ea3 ("net: fec: Add software TSO support")
    Signed-off-by: Dheeraj Reddy Jonnalagadda <[email protected]>
    Reviewed-by: Wei Fang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: hns3: fix oops when unload drivers paralleling [+ + +]
Author: Jian Shen <[email protected]>
Date:   Sat Jan 18 17:47:41 2025 +0800

    net: hns3: fix oops when unload drivers paralleling
    
    [ Upstream commit 92e5995773774a3e70257e9c95ea03518268bea5 ]
    
    When unload hclge driver, it tries to disable sriov first for each
    ae_dev node from hnae3_ae_dev_list. If user unloads hns3 driver at
    the time, because it removes all the ae_dev nodes, and it may cause
    oops.
    
    But we can't simply use hnae3_common_lock for this. Because in the
    process flow of pci_disable_sriov(), it will trigger the remove flow
    of VF, which will also take hnae3_common_lock.
    
    To fixes it, introduce a new mutex to protect the unload process.
    
    Fixes: 0dd8a25f355b ("net: hns3: disable sriov before unload hclge layer")
    Signed-off-by: Jian Shen <[email protected]>
    Signed-off-by: Jijie Shao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: hsr: fix fill_frame_info() regression vs VLAN packets [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Jan 29 13:00:07 2025 +0000

    net: hsr: fix fill_frame_info() regression vs VLAN packets
    
    [ Upstream commit 0f5697f1a3f99bc2b674b8aa3c5da822c5673c11 ]
    
    Stephan Wurm reported that my recent patch broke VLAN support.
    
    Apparently skb->mac_len is not correct for VLAN traffic as
    shown by debug traces [1].
    
    Use instead pskb_may_pull() to make sure the expected header
    is present in skb->head.
    
    Many thanks to Stephan for his help.
    
    [1]
    kernel: skb len=170 headroom=2 headlen=170 tailroom=20
            mac=(2,14) mac_len=14 net=(16,-1) trans=-1
            shinfo(txflags=0 nr_frags=0 gso(size=0 type=0 segs=0))
            csum(0x0 start=0 offset=0 ip_summed=0 complete_sw=0 valid=0 level=0)
            hash(0x0 sw=0 l4=0) proto=0x0000 pkttype=0 iif=0
            priority=0x0 mark=0x0 alloc_cpu=0 vlan_all=0x0
            encapsulation=0 inner(proto=0x0000, mac=0, net=0, trans=0)
    kernel: dev name=prp0 feat=0x0000000000007000
    kernel: sk family=17 type=3 proto=0
    kernel: skb headroom: 00000000: 74 00
    kernel: skb linear:   00000000: 01 0c cd 01 00 01 00 d0 93 53 9c cb 81 00 80 00
    kernel: skb linear:   00000010: 88 b8 00 01 00 98 00 00 00 00 61 81 8d 80 16 52
    kernel: skb linear:   00000020: 45 47 44 4e 43 54 52 4c 2f 4c 4c 4e 30 24 47 4f
    kernel: skb linear:   00000030: 24 47 6f 43 62 81 01 14 82 16 52 45 47 44 4e 43
    kernel: skb linear:   00000040: 54 52 4c 2f 4c 4c 4e 30 24 44 73 47 6f 6f 73 65
    kernel: skb linear:   00000050: 83 07 47 6f 49 64 65 6e 74 84 08 67 8d f5 93 7e
    kernel: skb linear:   00000060: 76 c8 00 85 01 01 86 01 00 87 01 00 88 01 01 89
    kernel: skb linear:   00000070: 01 00 8a 01 02 ab 33 a2 15 83 01 00 84 03 03 00
    kernel: skb linear:   00000080: 00 91 08 67 8d f5 92 77 4b c6 1f 83 01 00 a2 1a
    kernel: skb linear:   00000090: a2 06 85 01 00 83 01 00 84 03 03 00 00 91 08 67
    kernel: skb linear:   000000a0: 8d f5 92 77 4b c6 1f 83 01 00
    kernel: skb tailroom: 00000000: 80 18 02 00 fe 4e 00 00 01 01 08 0a 4f fd 5e d1
    kernel: skb tailroom: 00000010: 4f fd 5e cd
    
    Fixes: b9653d19e556 ("net: hsr: avoid potential out-of-bound access in fill_frame_info()")
    Reported-by: Stephan Wurm <[email protected]>
    Tested-by: Stephan Wurm <[email protected]>
    Closes: https://lore.kernel.org/netdev/Z4o_UC0HweBHJ_cw@PC-LX-SteWu/
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ipv4: Cache pmtu for all packet paths if multipath enabled [+ + +]
Author: Vladimir Vdovin <[email protected]>
Date:   Fri Nov 8 09:34:24 2024 +0000

    net: ipv4: Cache pmtu for all packet paths if multipath enabled
    
    [ Upstream commit 7d3f3b4367f315a61fc615e3138f3d320da8c466 ]
    
    Check number of paths by fib_info_num_path(),
    and update_or_create_fnhe() for every path.
    Problem is that pmtu is cached only for the oif
    that has received icmp message "need to frag",
    other oifs will still try to use "default" iface mtu.
    
    An example topology showing the problem:
    
                        |  host1
                    +---------+
                    |  dummy0 | 10.179.20.18/32  mtu9000
                    +---------+
            +-----------+----------------+
        +---------+                     +---------+
        | ens17f0 |  10.179.2.141/31    | ens17f1 |  10.179.2.13/31
        +---------+                     +---------+
            |    (all here have mtu 9000)    |
        +------+                         +------+
        | ro1  |  10.179.2.140/31        | ro2  |  10.179.2.12/31
        +------+                         +------+
            |                                |
    ---------+------------+-------------------+------
                            |
                        +-----+
                        | ro3 | 10.10.10.10  mtu1500
                        +-----+
                            |
        ========================================
                    some networks
        ========================================
                            |
                        +-----+
                        | eth0| 10.10.30.30  mtu9000
                        +-----+
                            |  host2
    
    host1 have enabled multipath and
    sysctl net.ipv4.fib_multipath_hash_policy = 1:
    
    default proto static src 10.179.20.18
            nexthop via 10.179.2.12 dev ens17f1 weight 1
            nexthop via 10.179.2.140 dev ens17f0 weight 1
    
    When host1 tries to do pmtud from 10.179.20.18/32 to host2,
    host1 receives at ens17f1 iface an icmp packet from ro3 that ro3 mtu=1500.
    And host1 caches it in nexthop exceptions cache.
    
    Problem is that it is cached only for the iface that has received icmp,
    and there is no way that ro3 will send icmp msg to host1 via another path.
    
    Host1 now have this routes to host2:
    
    ip r g 10.10.30.30 sport 30000 dport 443
    10.10.30.30 via 10.179.2.12 dev ens17f1 src 10.179.20.18 uid 0
        cache expires 521sec mtu 1500
    
    ip r g 10.10.30.30 sport 30033 dport 443
    10.10.30.30 via 10.179.2.140 dev ens17f0 src 10.179.20.18 uid 0
        cache
    
    So when host1 tries again to reach host2 with mtu>1500,
    if packet flow is lucky enough to be hashed with oif=ens17f1 its ok,
    if oif=ens17f0 it blackholes and still gets icmp msgs from ro3 to ens17f1,
    until lucky day when ro3 will send it through another flow to ens17f0.
    
    Signed-off-by: Vladimir Vdovin <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 139512191bd0 ("ipv4: use RCU protection in __ip_rt_update_pmtu()")
    Signed-off-by: Sasha Levin <[email protected]>

net: let net.core.dev_weight always be non-zero [+ + +]
Author: Liu Jian <[email protected]>
Date:   Thu Jan 16 22:30:53 2025 +0800

    net: let net.core.dev_weight always be non-zero
    
    [ Upstream commit d1f9f79fa2af8e3b45cffdeef66e05833480148a ]
    
    The following problem was encountered during stability test:
    
    (NULL net_device): NAPI poll function process_backlog+0x0/0x530 \
            returned 1, exceeding its budget of 0.
    ------------[ cut here ]------------
    list_add double add: new=ffff88905f746f48, prev=ffff88905f746f48, \
            next=ffff88905f746e40.
    WARNING: CPU: 18 PID: 5462 at lib/list_debug.c:35 \
            __list_add_valid_or_report+0xf3/0x130
    CPU: 18 UID: 0 PID: 5462 Comm: ping Kdump: loaded Not tainted 6.13.0-rc7+
    RIP: 0010:__list_add_valid_or_report+0xf3/0x130
    Call Trace:
    ? __warn+0xcd/0x250
    ? __list_add_valid_or_report+0xf3/0x130
    enqueue_to_backlog+0x923/0x1070
    netif_rx_internal+0x92/0x2b0
    __netif_rx+0x15/0x170
    loopback_xmit+0x2ef/0x450
    dev_hard_start_xmit+0x103/0x490
    __dev_queue_xmit+0xeac/0x1950
    ip_finish_output2+0x6cc/0x1620
    ip_output+0x161/0x270
    ip_push_pending_frames+0x155/0x1a0
    raw_sendmsg+0xe13/0x1550
    __sys_sendto+0x3bf/0x4e0
    __x64_sys_sendto+0xdc/0x1b0
    do_syscall_64+0x5b/0x170
    entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    The reproduction command is as follows:
      sysctl -w net.core.dev_weight=0
      ping 127.0.0.1
    
    This is because when the napi's weight is set to 0, process_backlog() may
    return 0 and clear the NAPI_STATE_SCHED bit of napi->state, causing this
    napi to be re-polled in net_rx_action() until __do_softirq() times out.
    Since the NAPI_STATE_SCHED bit has been cleared, napi_schedule_rps() can
    be retriggered in enqueue_to_backlog(), causing this issue.
    
    Making the napi's weight always non-zero solves this problem.
    
    Triggering this issue requires system-wide admin (setting is
    not namespaced).
    
    Fixes: e38766054509 ("[NET]: Fix sysctl net.core.dev_weight")
    Fixes: 3d48b53fb2ae ("net: dev_weight: TX/RX orthogonality")
    Signed-off-by: Liu Jian <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: netdevsim: try to close UDP port harness races [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Wed Jan 22 14:45:03 2025 -0800

    net: netdevsim: try to close UDP port harness races
    
    [ Upstream commit 50bf398e1ceacb9a7f85bd3bdca065ebe5cb6159 ]
    
    syzbot discovered that we remove the debugfs files after we free
    the netdev. Try to clean up the relevant dir while the device
    is still around.
    
    Reported-by: [email protected]
    Fixes: 424be63ad831 ("netdevsim: add UDP tunnel port offload support")
    Reviewed-by: Michal Swiatkowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: c45-tjaxx: add delay between MDIO write and read in soft_reset [+ + +]
Author: Milos Reljin <[email protected]>
Date:   Fri Jan 24 10:41:02 2025 +0000

    net: phy: c45-tjaxx: add delay between MDIO write and read in soft_reset
    
    commit bd1bbab717608757cccbbe08b0d46e6c3ed0ced5 upstream.
    
    In application note (AN13663) for TJA1120, on page 30, there's a figure
    with average PHY startup timing values following software reset.
    The time it takes for SMI to become operational after software reset
    ranges roughly from 500 us to 1500 us.
    
    This commit adds 2000 us delay after MDIO write which triggers software
    reset. Without this delay, soft_reset function returns an error and
    prevents successful PHY init.
    
    Cc: [email protected]
    Fixes: b050f2f15e04 ("phy: nxp-c45: add driver for tja1103")
    Signed-off-by: Milos Reljin <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/AM8P250MB0124D258E5A71041AF2CC322E1E32@AM8P250MB0124.EURP250.PROD.OUTLOOK.COM
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: rose: fix timer races against user threads [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Jan 22 18:02:44 2025 +0000

    net: rose: fix timer races against user threads
    
    [ Upstream commit 5de7665e0a0746b5ad7943554b34db8f8614a196 ]
    
    Rose timers only acquire the socket spinlock, without
    checking if the socket is owned by one user thread.
    
    Add a check and rearm the timers if needed.
    
    BUG: KASAN: slab-use-after-free in rose_timer_expiry+0x31d/0x360 net/rose/rose_timer.c:174
    Read of size 2 at addr ffff88802f09b82a by task swapper/0/0
    
    CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.13.0-rc5-syzkaller-00172-gd1bf27c4e176 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    Call Trace:
     <IRQ>
      __dump_stack lib/dump_stack.c:94 [inline]
      dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
      print_address_description mm/kasan/report.c:378 [inline]
      print_report+0x169/0x550 mm/kasan/report.c:489
      kasan_report+0x143/0x180 mm/kasan/report.c:602
      rose_timer_expiry+0x31d/0x360 net/rose/rose_timer.c:174
      call_timer_fn+0x187/0x650 kernel/time/timer.c:1793
      expire_timers kernel/time/timer.c:1844 [inline]
      __run_timers kernel/time/timer.c:2418 [inline]
      __run_timer_base+0x66a/0x8e0 kernel/time/timer.c:2430
      run_timer_base kernel/time/timer.c:2439 [inline]
      run_timer_softirq+0xb7/0x170 kernel/time/timer.c:2449
      handle_softirqs+0x2d4/0x9b0 kernel/softirq.c:561
      __do_softirq kernel/softirq.c:595 [inline]
      invoke_softirq kernel/softirq.c:435 [inline]
      __irq_exit_rcu+0xf7/0x220 kernel/softirq.c:662
      irq_exit_rcu+0x9/0x30 kernel/softirq.c:678
      instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1049 [inline]
      sysvec_apic_timer_interrupt+0xa6/0xc0 arch/x86/kernel/apic/apic.c:1049
     </IRQ>
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: syzbot <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: rose: lock the socket in rose_bind() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Mon Feb 3 17:08:38 2025 +0000

    net: rose: lock the socket in rose_bind()
    
    [ Upstream commit a1300691aed9ee852b0a9192e29e2bdc2411a7e6 ]
    
    syzbot reported a soft lockup in rose_loopback_timer(),
    with a repro calling bind() from multiple threads.
    
    rose_bind() must lock the socket to avoid this issue.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Acked-by: Paolo Abeni <[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: Disallow replacing of child qdisc from one parent to another [+ + +]
Author: Jamal Hadi Salim <[email protected]>
Date:   Wed Jan 15 17:37:13 2025 -0800

    net: sched: Disallow replacing of child qdisc from one parent to another
    
    [ Upstream commit bc50835e83f60f56e9bec2b392fb5544f250fb6f ]
    
    Lion Ackermann was able to create a UAF which can be abused for privilege
    escalation with the following script
    
    Step 1. create root qdisc
    tc qdisc add dev lo root handle 1:0 drr
    
    step2. a class for packet aggregation do demonstrate uaf
    tc class add dev lo classid 1:1 drr
    
    step3. a class for nesting
    tc class add dev lo classid 1:2 drr
    
    step4. a class to graft qdisc to
    tc class add dev lo classid 1:3 drr
    
    step5.
    tc qdisc add dev lo parent 1:1 handle 2:0 plug limit 1024
    
    step6.
    tc qdisc add dev lo parent 1:2 handle 3:0 drr
    
    step7.
    tc class add dev lo classid 3:1 drr
    
    step 8.
    tc qdisc add dev lo parent 3:1 handle 4:0 pfifo
    
    step 9. Display the class/qdisc layout
    
    tc class ls dev lo
     class drr 1:1 root leaf 2: quantum 64Kb
     class drr 1:2 root leaf 3: quantum 64Kb
     class drr 3:1 root leaf 4: quantum 64Kb
    
    tc qdisc ls
     qdisc drr 1: dev lo root refcnt 2
     qdisc plug 2: dev lo parent 1:1
     qdisc pfifo 4: dev lo parent 3:1 limit 1000p
     qdisc drr 3: dev lo parent 1:2
    
    step10. trigger the bug <=== prevented by this patch
    tc qdisc replace dev lo parent 1:3 handle 4:0
    
    step 11. Redisplay again the qdiscs/classes
    
    tc class ls dev lo
     class drr 1:1 root leaf 2: quantum 64Kb
     class drr 1:2 root leaf 3: quantum 64Kb
     class drr 1:3 root leaf 4: quantum 64Kb
     class drr 3:1 root leaf 4: quantum 64Kb
    
    tc qdisc ls
     qdisc drr 1: dev lo root refcnt 2
     qdisc plug 2: dev lo parent 1:1
     qdisc pfifo 4: dev lo parent 3:1 refcnt 2 limit 1000p
     qdisc drr 3: dev lo parent 1:2
    
    Observe that a) parent for 4:0 does not change despite the replace request.
    There can only be one parent.  b) refcount has gone up by two for 4:0 and
    c) both class 1:3 and 3:1 are pointing to it.
    
    Step 12.  send one packet to plug
    echo "" | socat -u STDIN UDP4-DATAGRAM:127.0.0.1:8888,priority=$((0x10001))
    step13.  send one packet to the grafted fifo
    echo "" | socat -u STDIN UDP4-DATAGRAM:127.0.0.1:8888,priority=$((0x10003))
    
    step14. lets trigger the uaf
    tc class delete dev lo classid 1:3
    tc class delete dev lo classid 1:1
    
    The semantics of "replace" is for a del/add _on the same node_ and not
    a delete from one node(3:1) and add to another node (1:3) as in step10.
    While we could "fix" with a more complex approach there could be
    consequences to expectations so the patch takes the preventive approach of
    "disallow such config".
    
    Joint work with Lion Ackermann <[email protected]>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Jamal Hadi Salim <[email protected]>
    Reviewed-by: Simon Horman <[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 truncation of offloaded action statistics [+ + +]
Author: Ido Schimmel <[email protected]>
Date:   Tue Feb 4 14:38:39 2025 +0200

    net: sched: Fix truncation of offloaded action statistics
    
    [ Upstream commit 811b8f534fd85e17077bd2ac0413bcd16cc8fb9b ]
    
    In case of tc offload, when user space queries the kernel for tc action
    statistics, tc will query the offloaded statistics from device drivers.
    Among other statistics, drivers are expected to pass the number of
    packets that hit the action since the last query as a 64-bit number.
    
    Unfortunately, tc treats the number of packets as a 32-bit number,
    leading to truncation and incorrect statistics when the number of
    packets since the last query exceeds 0xffffffff:
    
    $ tc -s filter show dev swp2 ingress
    filter protocol all pref 1 flower chain 0
    filter protocol all pref 1 flower chain 0 handle 0x1
      skip_sw
      in_hw in_hw_count 1
            action order 1: mirred (Egress Redirect to device swp1) stolen
            index 1 ref 1 bind 1 installed 58 sec used 0 sec
            Action statistics:
            Sent 1133877034176 bytes 536959475 pkt (dropped 0, overlimits 0 requeues 0)
    [...]
    
    According to the above, 2111-byte packets were redirected which is
    impossible as only 64-byte packets were transmitted and the MTU was
    1500.
    
    Fix by treating packets as a 64-bit number:
    
    $ tc -s filter show dev swp2 ingress
    filter protocol all pref 1 flower chain 0
    filter protocol all pref 1 flower chain 0 handle 0x1
      skip_sw
      in_hw in_hw_count 1
            action order 1: mirred (Egress Redirect to device swp1) stolen
            index 1 ref 1 bind 1 installed 61 sec used 0 sec
            Action statistics:
            Sent 1370624380864 bytes 21416005951 pkt (dropped 0, overlimits 0 requeues 0)
    [...]
    
    Which shows that only 64-byte packets were redirected (1370624380864 /
    21416005951 = 64).
    
    Fixes: 380407023526 ("net/sched: Enable netdev drivers to update statistics of offloaded actions")
    Reported-by: Joe Botha <[email protected]>
    Signed-off-by: Ido Schimmel <[email protected]>
    Reviewed-by: Petr Machata <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: sh_eth: Fix missing rtnl lock in suspend/resume path [+ + +]
Author: Kory Maincent <[email protected]>
Date:   Wed Jan 29 10:50:47 2025 +0100

    net: sh_eth: Fix missing rtnl lock in suspend/resume path
    
    [ Upstream commit b95102215a8d0987789715ce11c0d4ec031cbfbe ]
    
    Fix the suspend/resume path by ensuring the rtnl lock is held where
    required. Calls to sh_eth_close, sh_eth_open and wol operations must be
    performed under the rtnl lock to prevent conflicts with ongoing ndo
    operations.
    
    Fixes: b71af04676e9 ("sh_eth: add more PM methods")
    Tested-by: Niklas Söderlund <[email protected]>
    Reviewed-by: Sergey Shtylyov <[email protected]>
    Signed-off-by: Kory Maincent <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: treat possible_net_t net pointer as an RCU one and add read_pnet_rcu() [+ + +]
Author: Jiri Pirko <[email protected]>
Date:   Fri Oct 13 14:10:23 2023 +0200

    net: treat possible_net_t net pointer as an RCU one and add read_pnet_rcu()
    
    [ Upstream commit 2034d90ae41ae93e30d492ebcf1f06f97a9cfba6 ]
    
    Make the net pointer stored in possible_net_t structure annotated as
    an RCU pointer. Change the access helpers to treat it as such.
    Introduce read_pnet_rcu() helper to allow caller to dereference
    the net pointer under RCU read lock.
    
    Signed-off-by: Jiri Pirko <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: 71b8471c93fa ("ipv4: use RCU protection in ipv4_default_advmss()")
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: rtl8150: enable basic endpoint checking [+ + +]
Author: Nikita Zhandarovich <[email protected]>
Date:   Fri Jan 24 01:30:20 2025 -0800

    net: usb: rtl8150: enable basic endpoint checking
    
    commit 90b7f2961798793275b4844348619b622f983907 upstream.
    
    Syzkaller reports [1] encountering a common issue of utilizing a wrong
    usb endpoint type during URB submitting stage. This, in turn, triggers
    a warning shown below.
    
    For now, enable simple endpoint checking (specifically, bulk and
    interrupt eps, testing control one is not essential) to mitigate
    the issue with a view to do other related cosmetic changes later,
    if they are necessary.
    
    [1] Syzkaller report:
    usb 1-1: BOGUS urb xfer, pipe 3 != type 1
    WARNING: CPU: 1 PID: 2586 at drivers/usb/core/urb.c:503 usb_submit_urb+0xe4b/0x1730 driv>
    Modules linked in:
    CPU: 1 UID: 0 PID: 2586 Comm: dhcpcd Not tainted 6.11.0-rc4-syzkaller-00069-gfc88bb11617>
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/06/2024
    RIP: 0010:usb_submit_urb+0xe4b/0x1730 drivers/usb/core/urb.c:503
    Code: 84 3c 02 00 00 e8 05 e4 fc fc 4c 89 ef e8 fd 25 d7 fe 45 89 e0 89 e9 4c 89 f2 48 8>
    RSP: 0018:ffffc9000441f740 EFLAGS: 00010282
    RAX: 0000000000000000 RBX: ffff888112487a00 RCX: ffffffff811a99a9
    RDX: ffff88810df6ba80 RSI: ffffffff811a99b6 RDI: 0000000000000001
    RBP: 0000000000000003 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000001
    R13: ffff8881023bf0a8 R14: ffff888112452a20 R15: ffff888112487a7c
    FS:  00007fc04eea5740(0000) GS:ffff8881f6300000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f0a1de9f870 CR3: 000000010dbd0000 CR4: 00000000003506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     rtl8150_open+0x300/0xe30 drivers/net/usb/rtl8150.c:733
     __dev_open+0x2d4/0x4e0 net/core/dev.c:1474
     __dev_change_flags+0x561/0x720 net/core/dev.c:8838
     dev_change_flags+0x8f/0x160 net/core/dev.c:8910
     devinet_ioctl+0x127a/0x1f10 net/ipv4/devinet.c:1177
     inet_ioctl+0x3aa/0x3f0 net/ipv4/af_inet.c:1003
     sock_do_ioctl+0x116/0x280 net/socket.c:1222
     sock_ioctl+0x22e/0x6c0 net/socket.c:1341
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:907 [inline]
     __se_sys_ioctl fs/ioctl.c:893 [inline]
     __x64_sys_ioctl+0x193/0x220 fs/ioctl.c:893
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7fc04ef73d49
    ...
    
    This change has not been tested on real hardware.
    
    Reported-and-tested-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=d7e968426f644b567e31
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: [email protected]
    Signed-off-by: Nikita Zhandarovich <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: wwan: iosm: Fix hibernation by re-binding the driver around it [+ + +]
Author: Maciej S. Szmigiero <[email protected]>
Date:   Thu Jan 9 00:33:50 2025 +0100

    net: wwan: iosm: Fix hibernation by re-binding the driver around it
    
    [ Upstream commit 0b6f6593aa8c3a05f155c12fd0e7ad33a5149c31 ]
    
    Currently, the driver is seriously broken with respect to the
    hibernation (S4): after image restore the device is back into
    IPC_MEM_EXEC_STAGE_BOOT (which AFAIK means bootloader stage) and needs
    full re-launch of the rest of its firmware, but the driver restore
    handler treats the device as merely sleeping and just sends it a
    wake-up command.
    
    This wake-up command times out but device nodes (/dev/wwan*) remain
    accessible.
    However attempting to use them causes the bootloader to crash and
    enter IPC_MEM_EXEC_STAGE_CD_READY stage (which apparently means "a crash
    dump is ready").
    
    It seems that the device cannot be re-initialized from this crashed
    stage without toggling some reset pin (on my test platform that's
    apparently what the device _RST ACPI method does).
    
    While it would theoretically be possible to rewrite the driver to tear
    down the whole MUX / IPC layers on hibernation (so the bootloader does
    not crash from improper access) and then re-launch the device on
    restore this would require significant refactoring of the driver
    (believe me, I've tried), since there are quite a few assumptions
    hard-coded in the driver about the device never being partially
    de-initialized (like channels other than devlink cannot be closed,
    for example).
    Probably this would also need some programming guide for this hardware.
    
    Considering that the driver seems orphaned [1] and other people are
    hitting this issue too [2] fix it by simply unbinding the PCI driver
    before hibernation and re-binding it after restore, much like
    USB_QUIRK_RESET_RESUME does for USB devices that exhibit a similar
    problem.
    
    Tested on XMM7360 in HP EliteBook 855 G7 both with s2idle (which uses
    the existing suspend / resume handlers) and S4 (which uses the new code).
    
    [1]: https://lore.kernel.org/all/[email protected]/
    [2]:
    https://github.com/xmm7360/xmm7360-pci/issues/211#issuecomment-1804139413
    
    Reviewed-by: Sergey Ryazanov <[email protected]>
    Signed-off-by: Maciej S. Szmigiero <[email protected]>
    Link: https://patch.msgid.link/e60287ebdb0ab54c4075071b72568a40a75d0205.1736372610.git.mail@maciej.szmigiero.name
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net_sched: sch_sfq: annotate data-races around q->perturb_period [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Tue Apr 30 18:00:15 2024 +0000

    net_sched: sch_sfq: annotate data-races around q->perturb_period
    
    [ Upstream commit a17ef9e6c2c1cf0fc6cd6ca6a9ce525c67d1da7f ]
    
    sfq_perturbation() reads q->perturb_period locklessly.
    Add annotations to fix potential issues.
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 10685681bafc ("net_sched: sch_sfq: don't allow 1 packet limit")
    Signed-off-by: Sasha Levin <[email protected]>

net_sched: sch_sfq: don't allow 1 packet limit [+ + +]
Author: Octavian Purdila <[email protected]>
Date:   Tue Dec 3 19:05:19 2024 -0800

    net_sched: sch_sfq: don't allow 1 packet limit
    
    [ Upstream commit 10685681bafce6febb39770f3387621bf5d67d0b ]
    
    The current implementation does not work correctly with a limit of
    1. iproute2 actually checks for this and this patch adds the check in
    kernel as well.
    
    This fixes the following syzkaller reported crash:
    
    UBSAN: array-index-out-of-bounds in net/sched/sch_sfq.c:210:6
    index 65535 is out of range for type 'struct sfq_head[128]'
    CPU: 0 PID: 2569 Comm: syz-executor101 Not tainted 5.10.0-smp-DEV #1
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    Call Trace:
      __dump_stack lib/dump_stack.c:79 [inline]
      dump_stack+0x125/0x19f lib/dump_stack.c:120
      ubsan_epilogue lib/ubsan.c:148 [inline]
      __ubsan_handle_out_of_bounds+0xed/0x120 lib/ubsan.c:347
      sfq_link net/sched/sch_sfq.c:210 [inline]
      sfq_dec+0x528/0x600 net/sched/sch_sfq.c:238
      sfq_dequeue+0x39b/0x9d0 net/sched/sch_sfq.c:500
      sfq_reset+0x13/0x50 net/sched/sch_sfq.c:525
      qdisc_reset+0xfe/0x510 net/sched/sch_generic.c:1026
      tbf_reset+0x3d/0x100 net/sched/sch_tbf.c:319
      qdisc_reset+0xfe/0x510 net/sched/sch_generic.c:1026
      dev_reset_queue+0x8c/0x140 net/sched/sch_generic.c:1296
      netdev_for_each_tx_queue include/linux/netdevice.h:2350 [inline]
      dev_deactivate_many+0x6dc/0xc20 net/sched/sch_generic.c:1362
      __dev_close_many+0x214/0x350 net/core/dev.c:1468
      dev_close_many+0x207/0x510 net/core/dev.c:1506
      unregister_netdevice_many+0x40f/0x16b0 net/core/dev.c:10738
      unregister_netdevice_queue+0x2be/0x310 net/core/dev.c:10695
      unregister_netdevice include/linux/netdevice.h:2893 [inline]
      __tun_detach+0x6b6/0x1600 drivers/net/tun.c:689
      tun_detach drivers/net/tun.c:705 [inline]
      tun_chr_close+0x104/0x1b0 drivers/net/tun.c:3640
      __fput+0x203/0x840 fs/file_table.c:280
      task_work_run+0x129/0x1b0 kernel/task_work.c:185
      exit_task_work include/linux/task_work.h:33 [inline]
      do_exit+0x5ce/0x2200 kernel/exit.c:931
      do_group_exit+0x144/0x310 kernel/exit.c:1046
      __do_sys_exit_group kernel/exit.c:1057 [inline]
      __se_sys_exit_group kernel/exit.c:1055 [inline]
      __x64_sys_exit_group+0x3b/0x40 kernel/exit.c:1055
     do_syscall_64+0x6c/0xd0
     entry_SYSCALL_64_after_hwframe+0x61/0xcb
    RIP: 0033:0x7fe5e7b52479
    Code: Unable to access opcode bytes at RIP 0x7fe5e7b5244f.
    RSP: 002b:00007ffd3c800398 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fe5e7b52479
    RDX: 000000000000003c RSI: 00000000000000e7 RDI: 0000000000000000
    RBP: 00007fe5e7bcd2d0 R08: ffffffffffffffb8 R09: 0000000000000014
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007fe5e7bcd2d0
    R13: 0000000000000000 R14: 00007fe5e7bcdd20 R15: 00007fe5e7b24270
    
    The crash can be also be reproduced with the following (with a tc
    recompiled to allow for sfq limits of 1):
    
    tc qdisc add dev dummy0 handle 1: root tbf rate 1Kbit burst 100b lat 1s
    ../iproute2-6.9.0/tc/tc qdisc add dev dummy0 handle 2: parent 1:10 sfq limit 1
    ifconfig dummy0 up
    ping -I dummy0 -f -c2 -W0.1 8.8.8.8
    sleep 1
    
    Scenario that triggers the crash:
    
    * the first packet is sent and queued in TBF and SFQ; qdisc qlen is 1
    
    * TBF dequeues: it peeks from SFQ which moves the packet to the
      gso_skb list and keeps qdisc qlen set to 1. TBF is out of tokens so
      it schedules itself for later.
    
    * the second packet is sent and TBF tries to queues it to SFQ. qdisc
      qlen is now 2 and because the SFQ limit is 1 the packet is dropped
      by SFQ. At this point qlen is 1, and all of the SFQ slots are empty,
      however q->tail is not NULL.
    
    At this point, assuming no more packets are queued, when sch_dequeue
    runs again it will decrement the qlen for the current empty slot
    causing an underflow and the subsequent out of bounds access.
    
    Reported-by: syzbot <[email protected]>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Octavian Purdila <[email protected]>
    Reviewed-by: Eric Dumazet <[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: sch_sfq: handle bigger packets [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Tue Oct 8 11:16:03 2024 +0000

    net_sched: sch_sfq: handle bigger packets
    
    [ Upstream commit e4650d7ae4252f67e997a632adfae0dd74d3a99a ]
    
    SFQ has an assumption on dealing with packets smaller than 64KB.
    
    Even before BIG TCP, TCA_STAB can provide arbitrary big values
    in qdisc_pkt_len(skb)
    
    It is time to switch (struct sfq_slot)->allot to a 32bit field.
    
    sizeof(struct sfq_slot) is now 64 bytes, giving better cache locality.
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Toke Høiland-Jørgensen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 10685681bafc ("net_sched: sch_sfq: don't allow 1 packet limit")
    Signed-off-by: Sasha Levin <[email protected]>

 
netdevsim: print human readable IP address [+ + +]
Author: Hangbin Liu <[email protected]>
Date:   Thu Oct 10 04:00:25 2024 +0000

    netdevsim: print human readable IP address
    
    commit c71bc6da6198a6d88df86094f1052bb581951d65 upstream.
    
    Currently, IPSec addresses are printed in hexadecimal format, which is
    not user-friendly. e.g.
    
      # cat /sys/kernel/debug/netdevsim/netdevsim0/ports/0/ipsec
      SA count=2 tx=20
      sa[0] rx ipaddr=0x00000000 00000000 00000000 0100a8c0
      sa[0]    spi=0x00000101 proto=0x32 salt=0x0adecc3a crypt=1
      sa[0]    key=0x3167608a ca4f1397 43565909 941fa627
      sa[1] tx ipaddr=0x00000000 00000000 00000000 00000000
      sa[1]    spi=0x00000100 proto=0x32 salt=0x0adecc3a crypt=1
      sa[1]    key=0x3167608a ca4f1397 43565909 941fa627
    
    This patch updates the code to print the IPSec address in a human-readable
    format for easier debug. e.g.
    
     # cat /sys/kernel/debug/netdevsim/netdevsim0/ports/0/ipsec
     SA count=4 tx=40
     sa[0] tx ipaddr=0.0.0.0
     sa[0]    spi=0x00000100 proto=0x32 salt=0x0adecc3a crypt=1
     sa[0]    key=0x3167608a ca4f1397 43565909 941fa627
     sa[1] rx ipaddr=192.168.0.1
     sa[1]    spi=0x00000101 proto=0x32 salt=0x0adecc3a crypt=1
     sa[1]    key=0x3167608a ca4f1397 43565909 941fa627
     sa[2] tx ipaddr=::
     sa[2]    spi=0x00000100 proto=0x32 salt=0x0adecc3a crypt=1
     sa[2]    key=0x3167608a ca4f1397 43565909 941fa627
     sa[3] rx ipaddr=2000::1
     sa[3]    spi=0x00000101 proto=0x32 salt=0x0adecc3a crypt=1
     sa[3]    key=0x3167608a ca4f1397 43565909 941fa627
    
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: Hangbin Liu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Harshit Mogalapalli <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
netem: Update sch->q.qlen before qdisc_tree_reduce_backlog() [+ + +]
Author: Cong Wang <[email protected]>
Date:   Mon Feb 3 16:58:40 2025 -0800

    netem: Update sch->q.qlen before qdisc_tree_reduce_backlog()
    
    [ Upstream commit 638ba5089324796c2ee49af10427459c2de35f71 ]
    
    qdisc_tree_reduce_backlog() notifies parent qdisc only if child
    qdisc becomes empty, therefore we need to reduce the backlog of the
    child qdisc before calling it. Otherwise it would miss the opportunity
    to call cops->qlen_notify(), in the case of DRR, it resulted in UAF
    since DRR uses ->qlen_notify() to maintain its active list.
    
    Fixes: f8d4bc455047 ("net/sched: netem: account for backlog updates from child qdisc")
    Cc: Martin Ottens <[email protected]>
    Reported-by: Mingi Cho <[email protected]>
    Signed-off-by: Cong Wang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netfilter: nf_tables: reject mismatching sum of field_len with set key length [+ + +]
Author: Pablo Neira Ayuso <[email protected]>
Date:   Tue Jan 28 12:26:33 2025 +0100

    netfilter: nf_tables: reject mismatching sum of field_len with set key length
    
    commit 1b9335a8000fb70742f7db10af314104b6ace220 upstream.
    
    The field length description provides the length of each separated key
    field in the concatenation, each field gets rounded up to 32-bits to
    calculate the pipapo rule width from pipapo_init(). The set key length
    provides the total size of the key aligned to 32-bits.
    
    Register-based arithmetics still allows for combining mismatching set
    key length and field length description, eg. set key length 10 and field
    description [ 5, 4 ] leading to pipapo width of 12.
    
    Cc: [email protected]
    Fixes: 3ce67e3793f4 ("netfilter: nf_tables: do not allow mismatch field size and set key length")
    Reported-by: Noam Rathaus <[email protected]>
    Reviewed-by: Florian Westphal <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

netfilter: nft_flow_offload: update tcp state flags under lock [+ + +]
Author: Florian Westphal <[email protected]>
Date:   Tue Jan 14 00:50:34 2025 +0100

    netfilter: nft_flow_offload: update tcp state flags under lock
    
    [ Upstream commit 7a4b61406395291ffb7220a10e8951a9a8684819 ]
    
    The conntrack entry is already public, there is a small chance that another
    CPU is handling a packet in reply direction and racing with the tcp state
    update.
    
    Move this under ct spinlock.
    
    This is done once, when ct is about to be offloaded, so this should
    not result in a noticeable performance hit.
    
    Fixes: 8437a6209f76 ("netfilter: nft_flow_offload: set liberal tracking mode for tcp")
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
NFC: nci: Add bounds checking in nci_hci_create_pipe() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Fri Jan 17 12:38:41 2025 +0300

    NFC: nci: Add bounds checking in nci_hci_create_pipe()
    
    commit 110b43ef05342d5a11284cc8b21582b698b4ef1c upstream.
    
    The "pipe" variable is a u8 which comes from the network.  If it's more
    than 127, then it results in memory corruption in the caller,
    nci_hci_connect_gate().
    
    Cc: [email protected]
    Fixes: a1b0b9415817 ("NFC: nci: Create pipe on specific gate in nci_hci_connect_gate")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nfsd: clear acl_access/acl_default after releasing them [+ + +]
Author: Li Lingfeng <[email protected]>
Date:   Sun Jan 26 17:47:22 2025 +0800

    nfsd: clear acl_access/acl_default after releasing them
    
    commit 7faf14a7b0366f153284db0ad3347c457ea70136 upstream.
    
    If getting acl_default fails, acl_access and acl_default will be released
    simultaneously. However, acl_access will still retain a pointer pointing
    to the released posix_acl, which will trigger a WARNING in
    nfs3svc_release_getacl like this:
    
    ------------[ cut here ]------------
    refcount_t: underflow; use-after-free.
    WARNING: CPU: 26 PID: 3199 at lib/refcount.c:28
    refcount_warn_saturate+0xb5/0x170
    Modules linked in:
    CPU: 26 UID: 0 PID: 3199 Comm: nfsd Not tainted
    6.12.0-rc6-00079-g04ae226af01f-dirty #8
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    1.16.1-2.fc37 04/01/2014
    RIP: 0010:refcount_warn_saturate+0xb5/0x170
    Code: cc cc 0f b6 1d b3 20 a5 03 80 fb 01 0f 87 65 48 d8 00 83 e3 01 75
    e4 48 c7 c7 c0 3b 9b 85 c6 05 97 20 a5 03 01 e8 fb 3e 30 ff <0f> 0b eb
    cd 0f b6 1d 8a3
    RSP: 0018:ffffc90008637cd8 EFLAGS: 00010282
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff83904fde
    RDX: dffffc0000000000 RSI: 0000000000000008 RDI: ffff88871ed36380
    RBP: ffff888158beeb40 R08: 0000000000000001 R09: fffff520010c6f56
    R10: ffffc90008637ab7 R11: 0000000000000001 R12: 0000000000000001
    R13: ffff888140e77400 R14: ffff888140e77408 R15: ffffffff858b42c0
    FS:  0000000000000000(0000) GS:ffff88871ed00000(0000)
    knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000562384d32158 CR3: 000000055cc6a000 CR4: 00000000000006f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     ? refcount_warn_saturate+0xb5/0x170
     ? __warn+0xa5/0x140
     ? refcount_warn_saturate+0xb5/0x170
     ? report_bug+0x1b1/0x1e0
     ? handle_bug+0x53/0xa0
     ? exc_invalid_op+0x17/0x40
     ? asm_exc_invalid_op+0x1a/0x20
     ? tick_nohz_tick_stopped+0x1e/0x40
     ? refcount_warn_saturate+0xb5/0x170
     ? refcount_warn_saturate+0xb5/0x170
     nfs3svc_release_getacl+0xc9/0xe0
     svc_process_common+0x5db/0xb60
     ? __pfx_svc_process_common+0x10/0x10
     ? __rcu_read_unlock+0x69/0xa0
     ? __pfx_nfsd_dispatch+0x10/0x10
     ? svc_xprt_received+0xa1/0x120
     ? xdr_init_decode+0x11d/0x190
     svc_process+0x2a7/0x330
     svc_handle_xprt+0x69d/0x940
     svc_recv+0x180/0x2d0
     nfsd+0x168/0x200
     ? __pfx_nfsd+0x10/0x10
     kthread+0x1a2/0x1e0
     ? kthread+0xf4/0x1e0
     ? __pfx_kthread+0x10/0x10
     ret_from_fork+0x34/0x60
     ? __pfx_kthread+0x10/0x10
     ret_from_fork_asm+0x1a/0x30
     </TASK>
    Kernel panic - not syncing: kernel: panic_on_warn set ...
    
    Clear acl_access/acl_default after posix_acl_release is called to prevent
    UAF from being triggered.
    
    Fixes: a257cdd0e217 ("[PATCH] NFSD: Add server support for NFSv3 ACLs.")
    Cc: [email protected]
    Link: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Li Lingfeng <[email protected]>
    Reviewed-by: Rick Macklem <[email protected]>
    Reviewed-by: Jeff Layton <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
NFSD: fix hang in nfsd4_shutdown_callback [+ + +]
Author: Dai Ngo <[email protected]>
Date:   Thu Jan 30 11:01:27 2025 -0800

    NFSD: fix hang in nfsd4_shutdown_callback
    
    commit 036ac2778f7b28885814c6fbc07e156ad1624d03 upstream.
    
    If nfs4_client is in courtesy state then there is no point to send
    the callback. This causes nfsd4_shutdown_callback to hang since
    cl_cb_inflight is not 0. This hang lasts about 15 minutes until TCP
    notifies NFSD that the connection was dropped.
    
    This patch modifies nfsd4_run_cb_work to skip the RPC call if
    nfs4_client is in courtesy state.
    
    Signed-off-by: Dai Ngo <[email protected]>
    Fixes: 66af25799940 ("NFSD: add courteous server support for thread with only delegation")
    Cc: [email protected]
    Reviewed-by: Jeff Layton <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

NFSD: Reset cb_seq_status after NFS4ERR_DELAY [+ + +]
Author: Chuck Lever <[email protected]>
Date:   Fri Jan 26 12:45:17 2024 -0500

    NFSD: Reset cb_seq_status after NFS4ERR_DELAY
    
    commit 961b4b5e86bf56a2e4b567f81682defa5cba957e upstream.
    
    I noticed that once an NFSv4.1 callback operation gets a
    NFS4ERR_DELAY status on CB_SEQUENCE and then the connection is lost,
    the callback client loops, resending it indefinitely.
    
    The switch arm in nfsd4_cb_sequence_done() that handles
    NFS4ERR_DELAY uses rpc_restart_call() to rearm the RPC state machine
    for the retransmit, but that path does not call the rpc_prepare_call
    callback again. Thus cb_seq_status is set to -10008 by the first
    NFS4ERR_DELAY result, but is never set back to 1 for the retransmits.
    
    nfsd4_cb_sequence_done() thinks it's getting nothing but a
    long series of CB_SEQUENCE NFS4ERR_DELAY replies.
    
    Fixes: 7ba6cad6c88f ("nfsd: New helper nfsd4_cb_sequence_done() for processing more cb errors")
    Reviewed-by: Jeff Layton <[email protected]>
    Reviewed-by: Benjamin Coddington <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
NFSv4.2: fix COPY_NOTIFY xdr buf size calculation [+ + +]
Author: Olga Kornievskaia <[email protected]>
Date:   Fri Dec 13 11:52:00 2024 -0500

    NFSv4.2: fix COPY_NOTIFY xdr buf size calculation
    
    [ Upstream commit e8380c2d06055665b3df6c03964911375d7f9290 ]
    
    We need to include sequence size in the compound.
    
    Fixes: 0491567b51ef ("NFS: add COPY_NOTIFY operation")
    Signed-off-by: Olga Kornievskaia <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

NFSv4.2: mark OFFLOAD_CANCEL MOVEABLE [+ + +]
Author: Olga Kornievskaia <[email protected]>
Date:   Fri Dec 13 11:52:01 2024 -0500

    NFSv4.2: mark OFFLOAD_CANCEL MOVEABLE
    
    [ Upstream commit 668135b9348c53fd205f5e07d11e82b10f31b55b ]
    
    OFFLOAD_CANCEL should be marked MOVEABLE for when we need to move
    tasks off a non-functional transport.
    
    Fixes: c975c2092657 ("NFS send OFFLOAD_CANCEL when COPY killed")
    Signed-off-by: Olga Kornievskaia <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nilfs2: do not force clear folio if buffer is referenced [+ + +]
Author: Ryusuke Konishi <[email protected]>
Date:   Fri Feb 7 03:14:31 2025 +0900

    nilfs2: do not force clear folio if buffer is referenced
    
    commit ca76bb226bf47ff04c782cacbd299f12ddee1ec1 upstream.
    
    Patch series "nilfs2: protect busy buffer heads from being force-cleared".
    
    This series fixes the buffer head state inconsistency issues reported by
    syzbot that occurs when the filesystem is corrupted and falls back to
    read-only, and the associated buffer head use-after-free issue.
    
    This patch (of 2):
    
    Syzbot has reported that after nilfs2 detects filesystem corruption and
    falls back to read-only, inconsistencies in the buffer state may occur.
    
    One of the inconsistencies is that when nilfs2 calls mark_buffer_dirty()
    to set a data or metadata buffer as dirty, but it detects that the buffer
    is not in the uptodate state:
    
     WARNING: CPU: 0 PID: 6049 at fs/buffer.c:1177 mark_buffer_dirty+0x2e5/0x520
      fs/buffer.c:1177
     ...
     Call Trace:
      <TASK>
      nilfs_palloc_commit_alloc_entry+0x4b/0x160 fs/nilfs2/alloc.c:598
      nilfs_ifile_create_inode+0x1dd/0x3a0 fs/nilfs2/ifile.c:73
      nilfs_new_inode+0x254/0x830 fs/nilfs2/inode.c:344
      nilfs_mkdir+0x10d/0x340 fs/nilfs2/namei.c:218
      vfs_mkdir+0x2f9/0x4f0 fs/namei.c:4257
      do_mkdirat+0x264/0x3a0 fs/namei.c:4280
      __do_sys_mkdirat fs/namei.c:4295 [inline]
      __se_sys_mkdirat fs/namei.c:4293 [inline]
      __x64_sys_mkdirat+0x87/0xa0 fs/namei.c:4293
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
      entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    The other is when nilfs_btree_propagate(), which propagates the dirty
    state to the ancestor nodes of a b-tree that point to a dirty buffer,
    detects that the origin buffer is not dirty, even though it should be:
    
     WARNING: CPU: 0 PID: 5245 at fs/nilfs2/btree.c:2089
      nilfs_btree_propagate+0xc79/0xdf0 fs/nilfs2/btree.c:2089
     ...
     Call Trace:
      <TASK>
      nilfs_bmap_propagate+0x75/0x120 fs/nilfs2/bmap.c:345
      nilfs_collect_file_data+0x4d/0xd0 fs/nilfs2/segment.c:587
      nilfs_segctor_apply_buffers+0x184/0x340 fs/nilfs2/segment.c:1006
      nilfs_segctor_scan_file+0x28c/0xa50 fs/nilfs2/segment.c:1045
      nilfs_segctor_collect_blocks fs/nilfs2/segment.c:1216 [inline]
      nilfs_segctor_collect fs/nilfs2/segment.c:1540 [inline]
      nilfs_segctor_do_construct+0x1c28/0x6b90 fs/nilfs2/segment.c:2115
      nilfs_segctor_construct+0x181/0x6b0 fs/nilfs2/segment.c:2479
      nilfs_segctor_thread_construct fs/nilfs2/segment.c:2587 [inline]
      nilfs_segctor_thread+0x69e/0xe80 fs/nilfs2/segment.c:2701
      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>
    
    Both of these issues are caused by the callbacks that handle the
    page/folio write requests, forcibly clear various states, including the
    working state of the buffers they hold, at unexpected times when they
    detect read-only fallback.
    
    Fix these issues by checking if the buffer is referenced before clearing
    the page/folio state, and skipping the clear if it is.
    
    [[email protected]: adjusted for page/folio conversion]
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Ryusuke Konishi <[email protected]>
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=b2b14916b77acf8626d7
    Reported-by: [email protected]
    Link: https://syzkaller.appspot.com/bug?extid=d98fd19acd08b36ff422
    Fixes: 8c26c4e2694a ("nilfs2: fix issue with flush kernel thread after remount in RO mode because of driver's internal error or metadata corruption")
    Tested-by: [email protected]
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

nilfs2: do not output warnings when clearing dirty buffers [+ + +]
Author: Ryusuke Konishi <[email protected]>
Date:   Fri Feb 7 03:14:30 2025 +0900

    nilfs2: do not output warnings when clearing dirty buffers
    
    commit 299910dcb4525ac0274f3efa9527876315ba4f67 upstream.
    
    After detecting file system corruption and degrading to a read-only mount,
    dirty folios and buffers in the page cache are cleared, and a large number
    of warnings are output at that time, often filling up the kernel log.
    
    In this case, since the degrading to a read-only mount is output to the
    kernel log, these warnings are not very meaningful, and are rather a
    nuisance in system management and debugging.
    
    The related nilfs2-specific page/folio routines have a silent argument
    that suppresses the warning output, but since it is not currently used
    meaningfully, remove both the silent argument and the warning output.
    
    [[email protected]: adjusted for page/folio conversion]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Ryusuke Konishi <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: ca76bb226bf4 ("nilfs2: do not force clear folio if buffer is referenced")
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

nilfs2: fix possible int overflows in nilfs_fiemap() [+ + +]
Author: Nikita Zhandarovich <[email protected]>
Date:   Sat Jan 25 07:20:53 2025 +0900

    nilfs2: fix possible int overflows in nilfs_fiemap()
    
    commit 6438ef381c183444f7f9d1de18f22661cba1e946 upstream.
    
    Since nilfs_bmap_lookup_contig() in nilfs_fiemap() calculates its result
    by being prepared to go through potentially maxblocks == INT_MAX blocks,
    the value in n may experience an overflow caused by left shift of blkbits.
    
    While it is extremely unlikely to occur, play it safe and cast right hand
    expression to wider type to mitigate the issue.
    
    Found by Linux Verification Center (linuxtesting.org) with static analysis
    tool SVACE.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 622daaff0a89 ("nilfs2: fiemap support")
    Signed-off-by: Nikita Zhandarovich <[email protected]>
    Signed-off-by: Ryusuke Konishi <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

nilfs2: protect access to buffers with no active references [+ + +]
Author: Ryusuke Konishi <[email protected]>
Date:   Fri Feb 7 03:14:32 2025 +0900

    nilfs2: protect access to buffers with no active references
    
    commit 367a9bffabe08c04f6d725032cce3d891b2b9e1a upstream.
    
    nilfs_lookup_dirty_data_buffers(), which iterates through the buffers
    attached to dirty data folios/pages, accesses the attached buffers without
    locking the folios/pages.
    
    For data cache, nilfs_clear_folio_dirty() may be called asynchronously
    when the file system degenerates to read only, so
    nilfs_lookup_dirty_data_buffers() still has the potential to cause use
    after free issues when buffers lose the protection of their dirty state
    midway due to this asynchronous clearing and are unintentionally freed by
    try_to_free_buffers().
    
    Eliminate this race issue by adjusting the lock section in this function.
    
    [[email protected]: adjusted for page/folio conversion]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Ryusuke Konishi <[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")
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nvme-pci: Add TUXEDO IBP Gen9 to Samsung sleep quirk [+ + +]
Author: Georg Gottleuber <[email protected]>
Date:   Mon Dec 16 23:28:04 2024 +0100

    nvme-pci: Add TUXEDO IBP Gen9 to Samsung sleep quirk
    
    commit 11cb3529d18514f7d28ad2190533192aedefd761 upstream.
    
    On the TUXEDO InfinityBook Pro Gen9 Intel, a Samsung 990 Evo NVMe leads to
    a high power consumption in s2idle sleep (4 watts).
    
    This patch applies 'Force No Simple Suspend' quirk to achieve a sleep with
    a lower power consumption, typically around 1.2 watts.
    
    Signed-off-by: Georg Gottleuber <[email protected]>
    Cc: [email protected]
    Signed-off-by: Werner Sembach <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

nvme-pci: Add TUXEDO InfinityFlex to Samsung sleep quirk [+ + +]
Author: Georg Gottleuber <[email protected]>
Date:   Mon Dec 16 23:28:03 2024 +0100

    nvme-pci: Add TUXEDO InfinityFlex to Samsung sleep quirk
    
    commit dbf2bb1a1319b7c7d8828905378a6696cca6b0f2 upstream.
    
    On the TUXEDO InfinityFlex, a Samsung 990 Evo NVMe leads to a high power
    consumption in s2idle sleep (4 watts).
    
    This patch applies 'Force No Simple Suspend' quirk to achieve a sleep with
    a lower power consumption, typically around 1.4 watts.
    
    Signed-off-by: Georg Gottleuber <[email protected]>
    Cc: [email protected]
    Signed-off-by: Werner Sembach <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nvme: Add error check for xa_store in nvme_get_effects_log [+ + +]
Author: Keisuke Nishimura <[email protected]>
Date:   Fri Dec 20 13:00:47 2024 +0100

    nvme: Add error check for xa_store in nvme_get_effects_log
    
    [ Upstream commit ac32057acc7f3d7a238dafaa9b2aa2bc9750080e ]
    
    The xa_store() may fail due to memory allocation failure because there
    is no guarantee that the index csi is already used. This fix adds an
    error check of the return value of xa_store() in nvme_get_effects_log().
    
    Fixes: 1cf7a12e09aa ("nvme: use an xarray to lookup the Commands Supported and Effects log")
    Signed-off-by: Keisuke Nishimura <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Sagi Grimberg <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nvme: fix metadata handling in nvme-passthrough [+ + +]
Author: Puranjay Mohan <[email protected]>
Date:   Thu Aug 29 13:32:17 2024 +0000

    nvme: fix metadata handling in nvme-passthrough
    
    commit 7c2fd76048e95dd267055b5f5e0a48e6e7c81fd9 upstream.
    
    On an NVMe namespace that does not support metadata, it is possible to
    send an IO command with metadata through io-passthru. This allows issues
    like [1] to trigger in the completion code path.
    nvme_map_user_request() doesn't check if the namespace supports metadata
    before sending it forward. It also allows admin commands with metadata to
    be processed as it ignores metadata when bdev == NULL and may report
    success.
    
    Reject an IO command with metadata when the NVMe namespace doesn't
    support it and reject an admin command if it has metadata.
    
    [1] https://lore.kernel.org/all/[email protected]/
    
    Suggested-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Puranjay Mohan <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Sagi Grimberg <[email protected]>
    Reviewed-by: Anuj Gupta <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    [ Minor changes to make it work on 6.1 ]
    Signed-off-by: Puranjay Mohan <[email protected]>
    Signed-off-by: Hagar Hemdan <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

nvme: handle connectivity loss in nvme_set_queue_count [+ + +]
Author: Daniel Wagner <[email protected]>
Date:   Thu Jan 9 14:30:48 2025 +0100

    nvme: handle connectivity loss in nvme_set_queue_count
    
    [ Upstream commit 294b2b7516fd06a8dd82e4a6118f318ec521e706 ]
    
    When the set feature attempts fails with any NVME status code set in
    nvme_set_queue_count, the function still report success. Though the
    numbers of queues set to 0. This is done to support controllers in
    degraded state (the admin queue is still up and running but no IO
    queues).
    
    Though there is an exception. When nvme_set_features reports an host
    path error, nvme_set_queue_count should propagate this error as the
    connectivity is lost, which means also the admin queue is not working
    anymore.
    
    Fixes: 9a0be7abb62f ("nvme: refactor set_queue_count")
    Reviewed-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Hannes Reinecke <[email protected]>
    Reviewed-by: Sagi Grimberg <[email protected]>
    Signed-off-by: Daniel Wagner <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvmem: core: improve range check for nvmem_cell_write() [+ + +]
Author: Jennifer Berringer <[email protected]>
Date:   Mon Dec 30 14:19:01 2024 +0000

    nvmem: core: improve range check for nvmem_cell_write()
    
    commit 31507fc2ad36e0071751a710449db19c85d82a7f upstream.
    
    When __nvmem_cell_entry_write() is called for an nvmem cell that does
    not need bit shifting, it requires that the len parameter exactly
    matches the nvmem cell size. However, when the nvmem cell has a nonzero
    bit_offset, it was skipping this check.
    
    Accepting values of len larger than the cell size results in
    nvmem_cell_prepare_write_buffer() trying to write past the end of a heap
    buffer that it allocates. Add a check to avoid that problem and instead
    return -EINVAL when len doesn't match the number of bits expected by the
    nvmem cell when bit_offset is nonzero.
    
    This check uses cell->nbits in order to allow providing the smaller size
    to cells that are shifted into another byte by bit_offset. For example,
    a cell with nbits=8 and nonzero bit_offset would have bytes=2 but should
    accept a 1-byte write here, although no current callers depend on this.
    
    Fixes: 69aba7948cbe ("nvmem: Add a simple NVMEM framework for consumers")
    Cc: [email protected]
    Signed-off-by: Jennifer Berringer <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

nvmem: qcom-spmi-sdam: Set size in struct nvmem_config [+ + +]
Author: Luca Weiss <[email protected]>
Date:   Mon Dec 30 14:19:00 2024 +0000

    nvmem: qcom-spmi-sdam: Set size in struct nvmem_config
    
    commit e88f516ea417c71bb3702603ac6af9e95338cfa6 upstream.
    
    Let the nvmem core know what size the SDAM is, most notably this fixes
    the size of /sys/bus/nvmem/devices/spmi_sdam*/nvmem being '0' and makes
    user space work with that file.
    
      ~ # hexdump -C -s 64 /sys/bus/nvmem/devices/spmi_sdam2/nvmem
      00000040  02 01 00 00 04 00 00 00  00 00 00 00 00 00 00 00  |................|
      00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
      *
      00000080
    
    Fixes: 40ce9798794f ("nvmem: add QTI SDAM driver")
    Cc: [email protected]
    Signed-off-by: Luca Weiss <[email protected]>
    Reviewed-by: Vladimir Zapolskiy <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ocfs2: check dir i_size in ocfs2_find_entry [+ + +]
Author: Su Yue <[email protected]>
Date:   Mon Jan 6 22:06:40 2025 +0800

    ocfs2: check dir i_size in ocfs2_find_entry
    
    commit b0fce54b8c0d8e5f2b4c243c803c5996e73baee8 upstream.
    
    syz reports an out of bounds read:
    
    ==================================================================
    BUG: KASAN: slab-out-of-bounds in ocfs2_match fs/ocfs2/dir.c:334
    [inline]
    BUG: KASAN: slab-out-of-bounds in ocfs2_search_dirblock+0x283/0x6e0
    fs/ocfs2/dir.c:367
    Read of size 1 at addr ffff88804d8b9982 by task syz-executor.2/14802
    
    CPU: 0 UID: 0 PID: 14802 Comm: syz-executor.2 Not tainted 6.13.0-rc4 #2
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1
    04/01/2014
    Sched_ext: serialise (enabled+all), task: runnable_at=-10ms
    Call Trace:
    <TASK>
    __dump_stack lib/dump_stack.c:94 [inline]
    dump_stack_lvl+0x229/0x350 lib/dump_stack.c:120
    print_address_description mm/kasan/report.c:378 [inline]
    print_report+0x164/0x530 mm/kasan/report.c:489
    kasan_report+0x147/0x180 mm/kasan/report.c:602
    ocfs2_match fs/ocfs2/dir.c:334 [inline]
    ocfs2_search_dirblock+0x283/0x6e0 fs/ocfs2/dir.c:367
    ocfs2_find_entry_id fs/ocfs2/dir.c:414 [inline]
    ocfs2_find_entry+0x1143/0x2db0 fs/ocfs2/dir.c:1078
    ocfs2_find_files_on_disk+0x18e/0x530 fs/ocfs2/dir.c:1981
    ocfs2_lookup_ino_from_name+0xb6/0x110 fs/ocfs2/dir.c:2003
    ocfs2_lookup+0x30a/0xd40 fs/ocfs2/namei.c:122
    lookup_open fs/namei.c:3627 [inline]
    open_last_lookups fs/namei.c:3748 [inline]
    path_openat+0x145a/0x3870 fs/namei.c:3984
    do_filp_open+0xe9/0x1c0 fs/namei.c:4014
    do_sys_openat2+0x135/0x1d0 fs/open.c:1402
    do_sys_open fs/open.c:1417 [inline]
    __do_sys_openat fs/open.c:1433 [inline]
    __se_sys_openat fs/open.c:1428 [inline]
    __x64_sys_openat+0x15d/0x1c0 fs/open.c:1428
    do_syscall_x64 arch/x86/entry/common.c:52 [inline]
    do_syscall_64+0xf6/0x210 arch/x86/entry/common.c:83
    entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f01076903ad
    Code: c3 e8 a7 2b 00 00 0f 1f 80 00 00 00 00 f3 0f 1e fa 48 89 f8 48 89
    f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01
    f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f01084acfc8 EFLAGS: 00000246 ORIG_RAX: 0000000000000101
    RAX: ffffffffffffffda RBX: 00007f01077cbf80 RCX: 00007f01076903ad
    RDX: 0000000000105042 RSI: 0000000020000080 RDI: ffffffffffffff9c
    RBP: 00007f01077cbf80 R08: 0000000000000000 R09: 0000000000000000
    R10: 00000000000001ff R11: 0000000000000246 R12: 0000000000000000
    R13: 00007f01077cbf80 R14: 00007f010764fc90 R15: 00007f010848d000
    </TASK>
    ==================================================================
    
    And a general protection fault in ocfs2_prepare_dir_for_insert:
    
    ==================================================================
    loop0: detected capacity change from 0 to 32768
    JBD2: Ignoring recovery information on journal
    ocfs2: Mounting device (7,0) on (node local, slot 0) with ordered data
    mode.
    Oops: general protection fault, probably for non-canonical address
    0xdffffc0000000001: 0000 [#1] PREEMPT SMP KASAN NOPTI
    KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f]
    CPU: 0 UID: 0 PID: 5096 Comm: syz-executor792 Not tainted
    6.11.0-rc4-syzkaller-00002-gb0da640826ba #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
    1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    RIP: 0010:ocfs2_find_dir_space_id fs/ocfs2/dir.c:3406 [inline]
    RIP: 0010:ocfs2_prepare_dir_for_insert+0x3309/0x5c70 fs/ocfs2/dir.c:4280
    Code: 00 00 e8 2a 25 13 fe e9 ba 06 00 00 e8 20 25 13 fe e9 4f 01 00 00
    e8 16 25 13 fe 49 8d 7f 08 49 8d 5f 09 48 89 f8 48 c1 e8 03 <42> 0f b6
    04 20 84 c0 0f 85 bd 23 00 00 48 89 d8 48 c1 e8 03 42 0f
    RSP: 0018:ffffc9000af9f020 EFLAGS: 00010202
    RAX: 0000000000000001 RBX: 0000000000000009 RCX: ffff88801e27a440
    RDX: 0000000000000000 RSI: 0000000000000400 RDI: 0000000000000008
    RBP: ffffc9000af9f830 R08: ffffffff8380395b R09: ffffffff838090a7
    R10: 0000000000000002 R11: ffff88801e27a440 R12: dffffc0000000000
    R13: ffff88803c660878 R14: f700000000000088 R15: 0000000000000000
    FS:  000055555a677380(0000) GS:ffff888020800000(0000)
    knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000560bce569178 CR3: 000000001de5a000 CR4: 0000000000350ef0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
    <TASK>
    ocfs2_mknod+0xcaf/0x2b40 fs/ocfs2/namei.c:292
    vfs_mknod+0x36d/0x3b0 fs/namei.c:4088
    do_mknodat+0x3ec/0x5b0
    __do_sys_mknodat fs/namei.c:4166 [inline]
    __se_sys_mknodat fs/namei.c:4163 [inline]
    __x64_sys_mknodat+0xa7/0xc0 fs/namei.c:4163
    do_syscall_x64 arch/x86/entry/common.c:52 [inline]
    do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
    entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f2dafda3a99
    Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 f1 17 00 00 90 48 89
    f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08
    0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8
    64 89 01 48
    RSP: 002b:00007ffe336a6658 EFLAGS: 00000246 ORIG_RAX:
    0000000000000103
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX:
    00007f2dafda3a99
    RDX: 00000000000021c0 RSI: 0000000020000040 RDI:
    00000000ffffff9c
    RBP: 00007f2dafe1b5f0 R08: 0000000000004480 R09:
    000055555a6784c0
    R10: 0000000000000103 R11: 0000000000000246 R12:
    00007ffe336a6680
    R13: 00007ffe336a68a8 R14: 431bde82d7b634db R15:
    00007f2dafdec03b
    </TASK>
    ==================================================================
    
    The two reports are all caused invalid negative i_size of dir inode.  For
    ocfs2, dir_inode can't be negative or zero.
    
    Here add a check in which is called by ocfs2_check_dir_for_entry().  It
    fixes the second report as ocfs2_check_dir_for_entry() must be called
    before ocfs2_prepare_dir_for_insert().  Also set a up limit for dir with
    OCFS2_INLINE_DATA_FL.  The i_size can't be great than blocksize.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Reported-by: Jiacheng Xu <[email protected]>
    Link: https://lore.kernel.org/ocfs2-devel/[email protected]/T/#u
    Reported-by: [email protected]
    Link: https://lore.kernel.org/all/[email protected]/T/
    Signed-off-by: Su Yue <[email protected]>
    Reviewed-by: Heming Zhao <[email protected]>
    Reviewed-by: Joseph Qi <[email protected]>
    Cc: Mark Fasheh <[email protected]>
    Cc: Joel Becker <[email protected]>
    Cc: Junxiao Bi <[email protected]>
    Cc: Changwei Ge <[email protected]>
    Cc: Jun Piao <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ocfs2: fix incorrect CPU endianness conversion causing mount failure [+ + +]
Author: Heming Zhao <[email protected]>
Date:   Tue Jan 21 19:22:03 2025 +0800

    ocfs2: fix incorrect CPU endianness conversion causing mount failure
    
    commit f921da2c34692dfec5f72b5ae347b1bea22bb369 upstream.
    
    Commit 23aab037106d ("ocfs2: fix UBSAN warning in ocfs2_verify_volume()")
    introduced a regression bug.  The blksz_bits value is already converted to
    CPU endian in the previous code; therefore, the code shouldn't use
    le32_to_cpu() anymore.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 23aab037106d ("ocfs2: fix UBSAN warning in ocfs2_verify_volume()")
    Signed-off-by: Heming Zhao <[email protected]>
    Reviewed-by: Joseph Qi <[email protected]>
    Cc: Mark Fasheh <[email protected]>
    Cc: Joel Becker <[email protected]>
    Cc: Junxiao Bi <[email protected]>
    Cc: Changwei Ge <[email protected]>
    Cc: Jun Piao <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ocfs2: handle a symlink read error correctly [+ + +]
Author: Matthew Wilcox (Oracle) <[email protected]>
Date:   Thu Dec 5 17:16:29 2024 +0000

    ocfs2: handle a symlink read error correctly
    
    commit 2b4c2094da6d84e69b843dd3317902e977bf64bd upstream.
    
    Patch series "Convert ocfs2 to use folios".
    
    Mark did a conversion of ocfs2 to use folios and sent it to me as a
    giant patch for review ;-)
    
    So I've redone it as individual patches, and credited Mark for the patches
    where his code is substantially the same.  It's not a bad way to do it;
    his patch had some bugs and my patches had some bugs.  Hopefully all our
    bugs were different from each other.  And hopefully Mark likes all the
    changes I made to his code!
    
    
    This patch (of 23):
    
    If we can't read the buffer, be sure to unlock the page before returning.
    
    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: Joseph Qi <[email protected]>
    Cc: Mark Fasheh <[email protected]>
    Cc: Joel Becker <[email protected]>
    Cc: Junxiao Bi <[email protected]>
    Cc: Changwei Ge <[email protected]>
    Cc: Jun Piao <[email protected]>
    Cc: Mark Tinguely <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ocfs2: mark dquot as inactive if failed to start trans while releasing dquot [+ + +]
Author: Su Yue <[email protected]>
Date:   Mon Jan 6 22:06:53 2025 +0800

    ocfs2: mark dquot as inactive if failed to start trans while releasing dquot
    
    [ Upstream commit 276c61385f6bc3223a5ecd307cf4aba2dfbb9a31 ]
    
    While running fstests generic/329, the kernel workqueue
    quota_release_workfn is dead looping in calling ocfs2_release_dquot().
    The ocfs2 state is already readonly but ocfs2_release_dquot wants to
    start a transaction but fails and returns.
    
    =====================================================================
    [ 2918.123602 ][  T275 ] On-disk corruption discovered. Please run
    fsck.ocfs2 once the filesystem is unmounted.
    [ 2918.124034 ][  T275 ] (kworker/u135:1,275,11):ocfs2_release_dquot:765
    ERROR: status = -30
    [ 2918.124452 ][  T275 ] (kworker/u135:1,275,11):ocfs2_release_dquot:795
    ERROR: status = -30
    [ 2918.124883 ][  T275 ] (kworker/u135:1,275,11):ocfs2_start_trans:357
    ERROR: status = -30
    [ 2918.125276 ][  T275 ] OCFS2: abort (device dm-0): ocfs2_start_trans:
    Detected aborted journal
    [ 2918.125710 ][  T275 ] On-disk corruption discovered. Please run
    fsck.ocfs2 once the filesystem is unmounted.
    =====================================================================
    
    ocfs2_release_dquot() is much like dquot_release(), which is called by
    ext4 to handle similar situation.  So here fix it by marking the dquot as
    inactive like what dquot_release() does.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 9e33d69f553a ("ocfs2: Implementation of local and global quota file handling")
    Signed-off-by: Su Yue <[email protected]>
    Reviewed-by: Joseph Qi <[email protected]>
    Cc: Mark Fasheh <[email protected]>
    Cc: Joel Becker <[email protected]>
    Cc: Junxiao Bi <[email protected]>
    Cc: Changwei Ge <[email protected]>
    Cc: Jun Piao <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
of: Correct child specifier used as input of the 2nd nexus node [+ + +]
Author: Zijun Hu <[email protected]>
Date:   Thu Jan 9 21:26:52 2025 +0800

    of: Correct child specifier used as input of the 2nd nexus node
    
    commit e4c00c9b1f70cd11792ff5b825899a6ee0234a62 upstream.
    
    API of_parse_phandle_with_args_map() will use wrong input for nexus node
    Nexus_2 as shown below:
    
        Node_1              Nexus_1                              Nexus_2
    &Nexus_1,arg_1 -> arg_1,&Nexus_2,arg_2' -> &Nexus_2,arg_2 -> arg_2,...
                      map-pass-thru=<...>
    
    Nexus_1's output arg_2 should be used as input of Nexus_2, but the API
    wrongly uses arg_2' instead which != arg_2 due to Nexus_1's map-pass-thru.
    
    Fix by always making @match_array point to @initial_match_array into
    which to store nexus output.
    
    Fixes: bd6f2fd5a1d5 ("of: Support parsing phandle argument lists through a nexus node")
    Cc: [email protected]
    Signed-off-by: Zijun Hu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

of: Fix of_find_node_opts_by_path() handling of alias+path+options [+ + +]
Author: Zijun Hu <[email protected]>
Date:   Mon Dec 16 08:40:40 2024 +0800

    of: Fix of_find_node_opts_by_path() handling of alias+path+options
    
    commit b9e58c934c56aa35b0fb436d9afd86ef326bae0e upstream.
    
    of_find_node_opts_by_path() fails to find OF device node when its
    @path parameter have pattern below:
    
    "alias-name/node-name-1/.../node-name-N:options".
    
    The reason is that alias name length calculated by the API is wrong, as
    explained by example below:
    
    "testcase-alias/phandle-tests/consumer-a:testaliasoption".
     ^             ^                        ^
     0             14                       39
    
    The right length of alias 'testcase-alias' is 14, but the result worked
    out by the API is 39 which is obvious wrong.
    
    Fix by using index of either '/' or ':' as the length who comes earlier.
    
    Fixes: 75c28c09af99 ("of: add optional options parameter to of_find_node_by_path()")
    Cc: [email protected]
    Signed-off-by: Zijun Hu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

of: reserved-memory: Do not make kmemleak ignore freed address [+ + +]
Author: Zijun Hu <[email protected]>
Date:   Thu Jan 9 21:27:01 2025 +0800

    of: reserved-memory: Do not make kmemleak ignore freed address
    
    [ Upstream commit 29091a52562bca4d6e678dd8f0085dac119d6a21 ]
    
    early_init_dt_alloc_reserved_memory_arch() will free address @base when
    suffers memblock_mark_nomap() error, but it still makes kmemleak ignore
    the freed address @base via kmemleak_ignore_phys().
    
    That is unnecessary, besides, also causes unnecessary warning messages:
    
    kmemleak_ignore_phys()
     -> make_black_object()
        -> paint_ptr()
           -> kmemleak_warn() // warning message here.
    
    Fix by avoiding kmemleak_ignore_phys() when suffer the error.
    
    Fixes: 658aafc8139c ("memblock: exclude MEMBLOCK_NOMAP regions from kmemleak")
    Signed-off-by: Zijun Hu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

of: reserved-memory: Fix using wrong number of cells to get property 'alignment' [+ + +]
Author: Zijun Hu <[email protected]>
Date:   Thu Jan 9 21:27:00 2025 +0800

    of: reserved-memory: Fix using wrong number of cells to get property 'alignment'
    
    commit 267b21d0bef8e67dbe6c591c9991444e58237ec9 upstream.
    
    According to DT spec, size of property 'alignment' is based on parent
    node’s #size-cells property.
    
    But __reserved_mem_alloc_size() wrongly uses @dt_root_addr_cells to get
    the property obviously.
    
    Fix by using @dt_root_size_cells instead of @dt_root_addr_cells.
    
    Fixes: 3f0c82066448 ("drivers: of: add initialization code for dynamic reserved memory")
    Cc: [email protected]
    Signed-off-by: Zijun Hu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
openvswitch: use RCU protection in ovs_vport_cmd_fill_info() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Feb 7 13:58:37 2025 +0000

    openvswitch: use RCU protection in ovs_vport_cmd_fill_info()
    
    [ Upstream commit 90b2f49a502fa71090d9f4fe29a2f51fe5dff76d ]
    
    ovs_vport_cmd_fill_info() can be called without RTNL or RCU.
    
    Use RCU protection and dev_net_rcu() to avoid potential UAF.
    
    Fixes: 9354d4520342 ("openvswitch: reliable interface indentification in port dumps")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
OPP: Add dev_pm_opp_find_freq_exact_indexed() [+ + +]
Author: Viresh Kumar <[email protected]>
Date:   Fri Jul 21 13:41:20 2023 +0530

    OPP: Add dev_pm_opp_find_freq_exact_indexed()
    
    [ Upstream commit a5893928bb179d67ca1d44a8f66c990480ba541d ]
    
    The indexed version of the API is added for other floor and ceil, add
    the same for exact as well for completeness.
    
    Signed-off-by: Viresh Kumar <[email protected]>
    Stable-dep-of: b44b9bc7cab2 ("OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized")
    Signed-off-by: Sasha Levin <[email protected]>

OPP: add index check to assert to avoid buffer overflow in _read_freq() [+ + +]
Author: Neil Armstrong <[email protected]>
Date:   Tue Dec 3 09:12:59 2024 +0100

    OPP: add index check to assert to avoid buffer overflow in _read_freq()
    
    [ Upstream commit d659bc68ed489022ea33342cfbda2911a81e7a0d ]
    
    Pass the freq index to the assert function to make sure
    we do not read a freq out of the opp->rates[] table when called
    from the indexed variants:
    dev_pm_opp_find_freq_exact_indexed() or
    dev_pm_opp_find_freq_ceil/floor_indexed().
    
    Add a secondary parameter to the assert function, unused
    for assert_single_clk() then add assert_clk_index() which
    will check for the clock index when called from the _indexed()
    find functions.
    
    Fixes: 142e17c1c2b4 ("OPP: Introduce dev_pm_opp_find_freq_{ceil/floor}_indexed() APIs")
    Fixes: a5893928bb17 ("OPP: Add dev_pm_opp_find_freq_exact_indexed()")
    Signed-off-by: Neil Armstrong <[email protected]>
    Signed-off-by: Viresh Kumar <[email protected]>
    Stable-dep-of: b44b9bc7cab2 ("OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized")
    Signed-off-by: Sasha Levin <[email protected]>

OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized [+ + +]
Author: Neil Armstrong <[email protected]>
Date:   Tue Dec 3 09:13:00 2024 +0100

    OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized
    
    [ Upstream commit b44b9bc7cab2967c3d6a791b1cd542c89fc07f0e ]
    
    If a driver calls dev_pm_opp_find_bw_ceil/floor() the retrieve bandwidth
    from the OPP table but the bandwidth table was not created because the
    interconnect properties were missing in the OPP consumer node, the
    kernel will crash with:
    
    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000004
    ...
    pc : _read_bw+0x8/0x10
    lr : _opp_table_find_key+0x9c/0x174
    ...
    Call trace:
      _read_bw+0x8/0x10 (P)
      _opp_table_find_key+0x9c/0x174 (L)
      _find_key+0x98/0x168
      dev_pm_opp_find_bw_ceil+0x50/0x88
    ...
    
    In order to fix the crash, create an assert function to check
    if the bandwidth table was created before trying to get a
    bandwidth with _read_bw().
    
    Fixes: add1dc094a74 ("OPP: Use generic key finding helpers for bandwidth key")
    Signed-off-by: Neil Armstrong <[email protected]>
    Signed-off-by: Viresh Kumar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

OPP: Introduce dev_pm_opp_find_freq_{ceil/floor}_indexed() APIs [+ + +]
Author: Manivannan Sadhasivam <[email protected]>
Date:   Thu Jul 20 11:10:52 2023 +0530

    OPP: Introduce dev_pm_opp_find_freq_{ceil/floor}_indexed() APIs
    
    [ Upstream commit 142e17c1c2b48e3fb4f024e62ab6dee18f268694 ]
    
    In the case of devices with multiple clocks, drivers need to specify the
    clock index for the OPP framework to find the OPP corresponding to the
    floor/ceil of the supplied frequency. So let's introduce the two new APIs
    accepting the clock index as an argument.
    
    These APIs use the exising _find_key_ceil() helper by supplying the clock
    index to it.
    
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    [ Viresh: Rearranged definitions in pm_opp.h ]
    Signed-off-by: Viresh Kumar <[email protected]>
    Stable-dep-of: b44b9bc7cab2 ("OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized")
    Signed-off-by: Sasha Levin <[email protected]>

OPP: Introduce dev_pm_opp_get_freq_indexed() API [+ + +]
Author: Manivannan Sadhasivam <[email protected]>
Date:   Thu Jul 20 11:10:53 2023 +0530

    OPP: Introduce dev_pm_opp_get_freq_indexed() API
    
    [ Upstream commit 5f756d03e2c7db63c1df7148d7b1739f29ff1532 ]
    
    In the case of devices with multiple clocks, drivers need to specify the
    frequency index for the OPP framework to get the specific frequency within
    the required OPP. So let's introduce the dev_pm_opp_get_freq_indexed() API
    accepting the frequency index as an argument.
    
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    [ Viresh: Fixed potential access to NULL opp pointer ]
    Signed-off-by: Viresh Kumar <[email protected]>
    Stable-dep-of: b44b9bc7cab2 ("OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized")
    Signed-off-by: Sasha Levin <[email protected]>

OPP: OF: Fix an OF node leak in _opp_add_static_v2() [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Tue Jan 7 14:44:53 2025 +0900

    OPP: OF: Fix an OF node leak in _opp_add_static_v2()
    
    [ Upstream commit 1d38eb7f7b26261a0b642f6e0923269c7c000a97 ]
    
    _opp_add_static_v2() leaks the obtained OF node reference when
    _of_opp_alloc_required_opps() fails. Add an of_node_put() call in the
    error path.
    
    Fixes: 3466ea2cd6b6 ("OPP: Don't drop opp->np reference while it is still in use")
    Signed-off-by: Joe Hattori <[email protected]>
    Signed-off-by: Viresh Kumar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

OPP: Rearrange entries in pm_opp.h [+ + +]
Author: Viresh Kumar <[email protected]>
Date:   Fri Jul 21 13:34:54 2023 +0530

    OPP: Rearrange entries in pm_opp.h
    
    [ Upstream commit 754833b3194c30dad5af0145e25192a8e29521ab ]
    
    Rearrange the helper function declarations / definitions to keep them in
    order of freq, level and then bw.
    
    Signed-off-by: Viresh Kumar <[email protected]>
    Stable-dep-of: b44b9bc7cab2 ("OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized")
    Signed-off-by: Sasha Levin <[email protected]>

OPP: Reuse dev_pm_opp_get_freq_indexed() [+ + +]
Author: Viresh Kumar <[email protected]>
Date:   Fri Jul 21 14:55:07 2023 +0530

    OPP: Reuse dev_pm_opp_get_freq_indexed()
    
    [ Upstream commit 746de8255076c9924ffa51baad9822adddccb94e ]
    
    Reuse dev_pm_opp_get_freq_indexed() from dev_pm_opp_get_freq().
    
    Signed-off-by: Viresh Kumar <[email protected]>
    Acked-by: Manivannan Sadhasivam <[email protected]>
    Stable-dep-of: b44b9bc7cab2 ("OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized")
    Signed-off-by: Sasha Levin <[email protected]>

 
orangefs: fix a oob in orangefs_debug_write [+ + +]
Author: Mike Marshall <[email protected]>
Date:   Wed Jan 8 14:21:08 2025 -0500

    orangefs: fix a oob in orangefs_debug_write
    
    [ Upstream commit f7c848431632598ff9bce57a659db6af60d75b39 ]
    
    I got a syzbot report: slab-out-of-bounds Read in
    orangefs_debug_write... several people suggested fixes,
    I tested Al Viro's suggestion and made this patch.
    
    Signed-off-by: Mike Marshall <[email protected]>
    Reported-by: [email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
padata: add pd get/put refcnt helper [+ + +]
Author: Chen Ridong <[email protected]>
Date:   Fri Jan 10 06:16:37 2025 +0000

    padata: add pd get/put refcnt helper
    
    [ Upstream commit ae154202cc6a189b035359f3c4e143d5c24d5352 ]
    
    Add helpers for pd to get/put refcnt to make code consice.
    
    Signed-off-by: Chen Ridong <[email protected]>
    Acked-by: Daniel Jordan <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Stable-dep-of: dd7d37ccf6b1 ("padata: avoid UAF for reorder_work")
    Signed-off-by: Sasha Levin <[email protected]>

padata: avoid UAF for reorder_work [+ + +]
Author: Chen Ridong <[email protected]>
Date:   Fri Jan 10 06:16:39 2025 +0000

    padata: avoid UAF for reorder_work
    
    [ Upstream commit dd7d37ccf6b11f3d95e797ebe4e9e886d0332600 ]
    
    Although the previous patch can avoid ps and ps UAF for _do_serial, it
    can not avoid potential UAF issue for reorder_work. This issue can
    happen just as below:
    
    crypto_request                  crypto_request          crypto_del_alg
    padata_do_serial
      ...
      padata_reorder
        // processes all remaining
        // requests then breaks
        while (1) {
          if (!padata)
            break;
          ...
        }
    
                                    padata_do_serial
                                      // new request added
                                      list_add
        // sees the new request
        queue_work(reorder_work)
                                      padata_reorder
                                        queue_work_on(squeue->work)
    ...
    
                                    <kworker context>
                                    padata_serial_worker
                                    // completes new request,
                                    // no more outstanding
                                    // requests
    
                                                            crypto_del_alg
                                                              // free pd
    
    <kworker context>
    invoke_padata_reorder
      // UAF of pd
    
    To avoid UAF for 'reorder_work', get 'pd' ref before put 'reorder_work'
    into the 'serial_wq' and put 'pd' ref until the 'serial_wq' finish.
    
    Fixes: bbefa1dd6a6d ("crypto: pcrypt - Avoid deadlock by using per-instance padata queues")
    Signed-off-by: Chen Ridong <[email protected]>
    Acked-by: Daniel Jordan <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

padata: fix sysfs store callback check [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Fri Dec 27 23:32:01 2024 +0100

    padata: fix sysfs store callback check
    
    [ Upstream commit 9ff6e943bce67d125781fe4780a5d6f072dc44c0 ]
    
    padata_sysfs_store() was copied from padata_sysfs_show() but this check
    was not adapted. Today there is no attribute which can fail this
    check, but if there is one it may as well be correct.
    
    Fixes: 5e017dc3f8bc ("padata: Added sysfs primitives to padata subsystem")
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

padata: fix UAF in padata_reorder [+ + +]
Author: Chen Ridong <[email protected]>
Date:   Fri Jan 10 06:16:38 2025 +0000

    padata: fix UAF in padata_reorder
    
    [ Upstream commit e01780ea4661172734118d2a5f41bc9720765668 ]
    
    A bug was found when run ltp test:
    
    BUG: KASAN: slab-use-after-free in padata_find_next+0x29/0x1a0
    Read of size 4 at addr ffff88bbfe003524 by task kworker/u113:2/3039206
    
    CPU: 0 PID: 3039206 Comm: kworker/u113:2 Kdump: loaded Not tainted 6.6.0+
    Workqueue: pdecrypt_parallel padata_parallel_worker
    Call Trace:
    <TASK>
    dump_stack_lvl+0x32/0x50
    print_address_description.constprop.0+0x6b/0x3d0
    print_report+0xdd/0x2c0
    kasan_report+0xa5/0xd0
    padata_find_next+0x29/0x1a0
    padata_reorder+0x131/0x220
    padata_parallel_worker+0x3d/0xc0
    process_one_work+0x2ec/0x5a0
    
    If 'mdelay(10)' is added before calling 'padata_find_next' in the
    'padata_reorder' function, this issue could be reproduced easily with
    ltp test (pcrypt_aead01).
    
    This can be explained as bellow:
    
    pcrypt_aead_encrypt
    ...
    padata_do_parallel
    refcount_inc(&pd->refcnt); // add refcnt
    ...
    padata_do_serial
    padata_reorder // pd
    while (1) {
    padata_find_next(pd, true); // using pd
    queue_work_on
    ...
    padata_serial_worker                            crypto_del_alg
    padata_put_pd_cnt // sub refcnt
                                                    padata_free_shell
                                                    padata_put_pd(ps->pd);
                                                    // pd is freed
    // loop again, but pd is freed
    // call padata_find_next, UAF
    }
    
    In the padata_reorder function, when it loops in 'while', if the alg is
    deleted, the refcnt may be decreased to 0 before entering
    'padata_find_next', which leads to UAF.
    
    As mentioned in [1], do_serial is supposed to be called with BHs disabled
    and always happen under RCU protection, to address this issue, add
    synchronize_rcu() in 'padata_free_shell' wait for all _do_serial calls
    to finish.
    
    [1] https://lore.kernel.org/all/[email protected]/
    [2] https://lore.kernel.org/linux-kernel/jfjz5d7zwbytztackem7ibzalm5lnxldi2eofeiczqmqs2m7o6@fq426cwnjtkm/
    Fixes: b128a3040935 ("padata: allocate workqueue internally")
    Signed-off-by: Chen Ridong <[email protected]>
    Signed-off-by: Qu Zicheng <[email protected]>
    Acked-by: Daniel Jordan <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
parport_pc: add support for ASIX AX99100 [+ + +]
Author: Jiaqing Zhao <[email protected]>
Date:   Mon Jul 24 08:39:33 2023 +0000

    parport_pc: add support for ASIX AX99100
    
    commit 16aae4c64600a6319a6f10dbff833fa198bf9599 upstream.
    
    The PCI function 2 on ASIX AX99100 PCIe to Multi I/O Controller can be
    configured as a single-port parallel port controller. The subvendor id
    is 0x2000 when configured as parallel port. It supports IEEE-1284 EPP /
    ECP with its ECR on BAR1.
    
    Signed-off-by: Jiaqing Zhao <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Acked-by: Sudip Mukherjee <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Tomita Moeko <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
partitions: ldm: remove the initial kernel-doc notation [+ + +]
Author: Randy Dunlap <[email protected]>
Date:   Fri Jan 10 22:27:58 2025 -0800

    partitions: ldm: remove the initial kernel-doc notation
    
    [ Upstream commit e494e451611a3de6ae95f99e8339210c157d70fb ]
    
    Remove the file's first comment describing what the file is.
    This comment is not in kernel-doc format so it causes a kernel-doc
    warning.
    
    ldm.h:13: warning: expecting prototype for ldm(). Prototype was for _FS_PT_LDM_H_() instead
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Randy Dunlap <[email protected]>
    Cc: Richard Russon (FlatCap) <[email protected]>
    Cc: [email protected]
    Cc: Jens Axboe <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

partitions: mac: fix handling of bogus partition table [+ + +]
Author: Jann Horn <[email protected]>
Date:   Fri Feb 14 02:39:50 2025 +0100

    partitions: mac: fix handling of bogus partition table
    
    commit 80e648042e512d5a767da251d44132553fe04ae0 upstream.
    
    Fix several issues in partition probing:
    
     - The bailout for a bad partoffset must use put_dev_sector(), since the
       preceding read_part_sector() succeeded.
     - If the partition table claims a silly sector size like 0xfff bytes
       (which results in partition table entries straddling sector boundaries),
       bail out instead of accessing out-of-bounds memory.
     - We must not assume that the partition table contains proper NUL
       termination - use strnlen() and strncmp() instead of strlen() and
       strcmp().
    
    Cc: [email protected]
    Signed-off-by: Jann Horn <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
PCI/DPC: Quirk PIO log size for Intel Raptor Lake-P [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Thu Jan 2 17:43:13 2025 +0100

    PCI/DPC: Quirk PIO log size for Intel Raptor Lake-P
    
    [ Upstream commit b198499c7d2508a76243b98e7cca992f6fd2b7f7 ]
    
    Apparently the Raptor Lake-P reference firmware configures the PIO log size
    correctly, but some vendor BIOSes, including at least ASUSTeK COMPUTER INC.
    Zenbook UX3402VA_UX3402VA, do not.
    
    Apply the quirk for Raptor Lake-P.  This prevents kernel complaints like:
    
      DPC: RP PIO log size 0 is invalid
    
    and also enables the DPC driver to dump the RP PIO Log registers when DPC
    is triggered.
    
    Note that the bug report also mentions 8086:a76e, which has been already
    added by 627c6db20703 ("PCI/DPC: Quirk PIO log size for Intel Raptor Lake
    Root Ports").
    
    Link: https://lore.kernel.org/r/[email protected]
    Link: https://bugzilla.suse.com/show_bug.cgi?id=1234623
    Signed-off-by: Takashi Iwai <[email protected]>
    [bhelgaas: commit log]
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Signed-off-by: Krzysztof Wilczyński <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
PCI: endpoint: Destroy the EPC device in devm_pci_epc_destroy() [+ + +]
Author: Zijun Hu <[email protected]>
Date:   Tue Dec 10 22:00:18 2024 +0800

    PCI: endpoint: Destroy the EPC device in devm_pci_epc_destroy()
    
    [ Upstream commit d4929755e4d02bd3de3ae5569dab69cb9502c54f ]
    
    The devm_pci_epc_destroy() comment says destroys the EPC device, but it
    does not actually do that since devres_destroy() does not call
    devm_pci_epc_release(), and it also can not fully undo what the API
    devm_pci_epc_create() does, so it is faulty.
    
    Fortunately, the faulty API has not been used by current kernel tree.  Use
    devres_release() instead of devres_destroy() so the EPC device will be
    released.
    
    Link: https://lore.kernel.org/r/[email protected]
    Fixes: 5e8cb4033807 ("PCI: endpoint: Add EP core layer to enable EP controller and EP functions")
    Signed-off-by: Zijun Hu <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: endpoint: Finish virtual EP removal in pci_epf_remove_vepf() [+ + +]
Author: Zijun Hu <[email protected]>
Date:   Tue Dec 10 22:00:20 2024 +0800

    PCI: endpoint: Finish virtual EP removal in pci_epf_remove_vepf()
    
    commit 3b9f942eb21c92041905e3943a8d5177c9a9d89d upstream.
    
    When removing a virtual Endpoint, pci_epf_remove_vepf() failed to clear
    epf_vf->epf_pf, which caused a subsequent pci_epf_add_vepf() to incorrectly
    return -EBUSY:
    
      pci_epf_add_vepf(epf_pf, epf_vf)      // add
      pci_epf_remove_vepf(epf_pf, epf_vf)   // remove
      pci_epf_add_vepf(epf_pf, epf_vf)      // add again, -EBUSY error
    
    Fix by clearing epf_vf->epf_pf in pci_epf_remove_vepf().
    
    Link: https://lore.kernel.org/r/[email protected]
    Fixes: 1cf362e907f3 ("PCI: endpoint: Add support to add virtual function in endpoint core")
    Signed-off-by: Zijun Hu <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

PCI: endpoint: pci-epf-test: Fix check for DMA MEMCPY test [+ + +]
Author: Manivannan Sadhasivam <[email protected]>
Date:   Thu Jan 16 22:46:47 2025 +0530

    PCI: endpoint: pci-epf-test: Fix check for DMA MEMCPY test
    
    [ Upstream commit 235c2b197a8de2887f13990094a3343d2392155b ]
    
    Currently, if DMA MEMCPY test is requested by the host, and if the endpoint
    DMA controller supports DMA_PRIVATE, the test will fail. This is not
    correct since there is no check for DMA_MEMCPY capability and the DMA
    controller can support both DMA_PRIVATE and DMA_MEMCPY.
    
    Fix the check and also reword the error message.
    
    Link: https://lore.kernel.org/r/[email protected]
    Fixes: 8353813c88ef ("PCI: endpoint: Enable DMA tests for endpoints with DMA capabilities")
    Reported-by: Niklas Cassel <[email protected]>
    Closes: https://lore.kernel.org/linux-pci/Z3QtEihbiKIGogWA@ryzen
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Tested-by: Niklas Cassel <[email protected]>
    Reviewed-by: Niklas Cassel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: endpoint: pci-epf-test: Set dma_chan_rx pointer to NULL on error [+ + +]
Author: Mohamed Khalfella <[email protected]>
Date:   Fri Dec 27 08:08:41 2024 -0800

    PCI: endpoint: pci-epf-test: Set dma_chan_rx pointer to NULL on error
    
    [ Upstream commit b1b1f4b12969130c0a6ec0cf0299460cb01e799c ]
    
    If dma_chan_tx allocation fails, set dma_chan_rx to NULL after it is
    freed.
    
    Link: https://lore.kernel.org/r/[email protected]
    Fixes: 8353813c88ef ("PCI: endpoint: Enable DMA tests for endpoints with DMA capabilities")
    Signed-off-by: Mohamed Khalfella <[email protected]>
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Niklas Cassel <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: epf-test: Simplify DMA support checks [+ + +]
Author: Damien Le Moal <[email protected]>
Date:   Sat Apr 15 11:35:37 2023 +0900

    PCI: epf-test: Simplify DMA support checks
    
    [ Upstream commit 2566cbea69ab8dad4996ab4b4840fd952e62e5b4 ]
    
    There is no need to have each read, write and copy test functions check
    for the FLAG_USE_DMA flag against the DMA support status indicated by
    epf_test->dma_supported. Move this test to the command handler function
    pci_epf_test_cmd_handler() to check once for all cases.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Damien Le Moal <[email protected]>
    Signed-off-by: Lorenzo Pieralisi <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Stable-dep-of: 235c2b197a8d ("PCI: endpoint: pci-epf-test: Fix check for DMA MEMCPY test")
    Signed-off-by: Sasha Levin <[email protected]>

PCI: rcar-ep: Fix incorrect variable used when calling devm_request_mem_region() [+ + +]
Author: King Dix <[email protected]>
Date:   Thu Jan 9 08:50:18 2025 +0800

    PCI: rcar-ep: Fix incorrect variable used when calling devm_request_mem_region()
    
    [ Upstream commit 2d2da5a4c1b4509f6f7e5a8db015cd420144beb4 ]
    
    The rcar_pcie_parse_outbound_ranges() uses the devm_request_mem_region()
    macro to request a needed resource. A string variable that lives on the
    stack is then used to store a dynamically computed resource name, which
    is then passed on as one of the macro arguments. This can lead to
    undefined behavior.
    
    Depending on the current contents of the memory, the manifestations of
    errors may vary. One possible output may be as follows:
    
      $ cat /proc/iomem
      30000000-37ffffff :
      38000000-3fffffff :
    
    Sometimes, garbage may appear after the colon.
    
    In very rare cases, if no NULL-terminator is found in memory, the system
    might crash because the string iterator will overrun which can lead to
    access of unmapped memory above the stack.
    
    Thus, fix this by replacing outbound_name with the name of the previously
    requested resource. With the changes applied, the output will be as
    follows:
    
      $ cat /proc/iomem
      30000000-37ffffff : memory2
      38000000-3fffffff : memory3
    
    Fixes: 2a6d0d63d999 ("PCI: rcar: Add endpoint mode support")
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Lad Prabhakar <[email protected]>
    Signed-off-by: King Dix <[email protected]>
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <[email protected]>
    Reviewed-by: Lad Prabhakar <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: switchtec: Add Microchip PCI100X device IDs [+ + +]
Author: Rakesh Babu Saladi <[email protected]>
Date:   Mon Jan 20 15:25:24 2025 +0530

    PCI: switchtec: Add Microchip PCI100X device IDs
    
    [ Upstream commit a3282f84b2151d254dc4abf24d1255c6382be774 ]
    
    Add Microchip parts to the Device ID table so the driver supports PCI100x
    devices.
    
    Add a new macro to quirk the Microchip Switchtec PCI100x parts to allow DMA
    access via NTB to work when the IOMMU is turned on.
    
    PCI100x family has 6 variants; each variant is designed for different
    application usages, different port counts and lane counts:
    
      PCI1001 has 1 x4 upstream port and 3 x4 downstream ports
      PCI1002 has 1 x4 upstream port and 4 x2 downstream ports
      PCI1003 has 2 x4 upstream ports, 2 x2 upstream ports, and 2 x2
        downstream ports
      PCI1004 has 4 x4 upstream ports
      PCI1005 has 1 x4 upstream port and 6 x2 downstream ports
      PCI1006 has 6 x2 upstream ports and 2 x2 downstream ports
    
    [Historical note: these parts use PCI_VENDOR_ID_EFAR (0x1055), from EFAR
    Microsystems, which was acquired in 1996 by Standard Microsystems Corp,
    which was acquired by Microchip Technology in 2012.  The PCI-SIG confirms
    that Vendor ID 0x1055 is assigned to Microchip even though it's not
    visible via https://pcisig.com/membership/member-companies]
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rakesh Babu Saladi <[email protected]>
    [bhelgaas: Vendor ID history]
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Acked-By: Logan Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
perf/x86/intel: Ensure LBRs are disabled when a CPU is starting [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Thu Jan 30 17:07:21 2025 -0800

    perf/x86/intel: Ensure LBRs are disabled when a CPU is starting
    
    commit c631a2de7ae48d50434bdc205d901423f8577c65 upstream.
    
    Explicitly clear DEBUGCTL.LBR when a CPU is starting, prior to purging the
    LBR MSRs themselves, as at least one system has been found to transfer
    control to the kernel with LBRs enabled (it's unclear whether it's a BIOS
    flaw or a CPU goof).  Because the kernel preserves the original DEBUGCTL,
    even when toggling LBRs, leaving DEBUGCTL.LBR as is results in running
    with LBRs enabled at all times.
    
    Closes: https://lore.kernel.org/all/[email protected]
    Reported-by: Maxim Levitsky <[email protected]>
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Reviewed-by: Maxim Levitsky <[email protected]>
    Cc: [email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
pinctrl: cy8c95x0: Respect IRQ trigger settings from firmware [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Fri Jan 17 16:21:45 2025 +0200

    pinctrl: cy8c95x0: Respect IRQ trigger settings from firmware
    
    [ Upstream commit 1ddee69108d305bbc059cbf31c0b47626796be77 ]
    
    Some of the platforms may connect the INT pin via inversion logic
    effectively make the triggering to be active-low.
    Remove explicit trigger flag to respect the settings from firmware.
    
    Without this change even idling chip produces spurious interrupts
    and kernel disables the line in the result:
    
      irq 33: nobody cared (try booting with the "irqpoll" option)
      CPU: 0 UID: 0 PID: 125 Comm: irq/33-i2c-INT3 Not tainted 6.12.0-00236-g8b874ed11dae #64
      Hardware name: Intel Corp. QUARK/Galileo, BIOS 0x01000900 01/01/2014
      ...
      handlers:
      [<86e86bea>] irq_default_primary_handler threaded [<d153e44a>] cy8c95x0_irq_handler [pinctrl_cy8c95x0]
      Disabling IRQ #33
    
    Fixes: e6cbbe42944d ("pinctrl: Add Cypress cy8c95x0 support")
    Signed-off-by: Andy Shevchenko <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: samsung: fix fwnode refcount cleanup if platform_get_irq_optional() fails [+ + +]
Author: Javier Carrasco <[email protected]>
Date:   Wed Nov 6 23:04:39 2024 +0100

    pinctrl: samsung: fix fwnode refcount cleanup if platform_get_irq_optional() fails
    
    commit 459915f55509f4bfd6076daa1428e28490ddee3b upstream.
    
    Commit 50ebd19e3585 ("pinctrl: samsung: drop pin banks references on
    error paths") fixed the pin bank references on the error paths of the
    probe function, but there is still an error path where this is not done.
    
    If samsung_pinctrl_get_soc_data() does not fail, the child references
    will have acquired, and they will need to be released in the error path
    of platform_get_irq_optional(), as it is done in the following error
    paths within the probe function.
    
    Replace the direct return in the error path with a goto instruction to
    the cleanup function.
    
    Cc: [email protected]
    Fixes: a382d568f144 ("pinctrl: samsung: Use platform_get_irq_optional() to get the interrupt")
    Signed-off-by: Javier Carrasco <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [krzysztof: change Fixes SHA to point to commit introducing the return
     leading to OF node leak]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

pinctrl: stm32: Add check for clk_enable() [+ + +]
Author: Mingwei Zheng <[email protected]>
Date:   Mon Jan 6 17:06:59 2025 -0500

    pinctrl: stm32: Add check for clk_enable()
    
    [ Upstream commit 451bc9aea9a1a6fe53969e81a5cb1bd785c0d989 ]
    
    Convert the driver to clk_bulk*() API.
    Add check for the return value of clk_bulk_enable() to catch
    the potential error.
    
    Fixes: 05d8af449d93 ("pinctrl: stm32: Keep pinctrl block clock enabled when LEVEL IRQ requested")
    Signed-off-by: Mingwei Zheng <[email protected]>
    Signed-off-by: Jiasheng Jiang <[email protected]>
    Reviewed-by: Antonio Borneo <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: stm32: Add check for devm_kcalloc [+ + +]
Author: Chen Ni <[email protected]>
Date:   Tue Oct 31 08:08:07 2023 +0000

    pinctrl: stm32: Add check for devm_kcalloc
    
    [ Upstream commit b0eeba527e704d6023a6cd9103f929226e326b03 ]
    
    Add check for the return value of devm_kcalloc() and return the error
    if it fails in order to avoid NULL pointer dereference.
    
    Fixes: 32c170ff15b0 ("pinctrl: stm32: set default gpio line names using pin names")
    Signed-off-by: Chen Ni <[email protected]>
    Acked-by: Valentin Caron <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Stable-dep-of: 451bc9aea9a1 ("pinctrl: stm32: Add check for clk_enable()")
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: stm32: check devm_kasprintf() returned value [+ + +]
Author: Ma Ke <[email protected]>
Date:   Fri Sep 6 18:03:26 2024 +0800

    pinctrl: stm32: check devm_kasprintf() returned value
    
    [ Upstream commit b0f0e3f0552a566def55c844b0d44250c58e4df6 ]
    
    devm_kasprintf() can return a NULL pointer on failure but this returned
    value is not checked. Fix this lack and check the returned value.
    
    Found by code review.
    
    Cc: [email protected]
    Fixes: 32c170ff15b0 ("pinctrl: stm32: set default gpio line names using pin names")
    Signed-off-by: Ma Ke <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Stable-dep-of: 451bc9aea9a1 ("pinctrl: stm32: Add check for clk_enable()")
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: stm32: fix array read out of bound [+ + +]
Author: Antonio Borneo <[email protected]>
Date:   Tue Nov 7 12:05:20 2023 +0100

    pinctrl: stm32: fix array read out of bound
    
    commit edd48fd9d45370d6c8ba0dd834fcc51ff688cc87 upstream.
    
    The existing code does not verify if the "tentative" index exceeds
    the size of the array, causing out of bound read.
    Issue identified with kasan.
    
    Check the index before using it.
    
    Signed-off-by: Antonio Borneo <[email protected]>
    Fixes: 32c170ff15b0 ("pinctrl: stm32: set default gpio line names using pin names")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

pinctrl: stm32: set default gpio line names using pin names [+ + +]
Author: Valentin Caron <[email protected]>
Date:   Tue Jun 20 12:43:49 2023 +0200

    pinctrl: stm32: set default gpio line names using pin names
    
    [ Upstream commit 32c170ff15b044579b1f8b8cdabf543406dde9da ]
    
    Add stm32_pctrl_get_desc_pin_from_gpio function to find a stm32 pin
    descriptor which is matching with a gpio.
    Most of the time pin number is equal to pin index in array. So the first
    part of the function is useful to speed up.
    
    And during gpio bank register, we set default gpio names with pin names.
    
    Signed-off-by: Valentin Caron <[email protected]>
    Acked-by: Alexandre TORGUE <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Stable-dep-of: 451bc9aea9a1 ("pinctrl: stm32: Add check for clk_enable()")
    Signed-off-by: Sasha Levin <[email protected]>

 
platform/x86: acer-wmi: Ignore AC events [+ + +]
Author: Armin Wolf <[email protected]>
Date:   Sun Jan 19 21:17:22 2025 +0100

    platform/x86: acer-wmi: Ignore AC events
    
    [ Upstream commit f6bfa25c6665f8721421ea94fe506cc22f1d4b43 ]
    
    On the Acer Swift SFG14-41, the events 8 - 1 and 8 - 0 are printed on
    AC connect/disconnect. Ignore those events to avoid spamming the
    kernel log with error messages.
    
    Reported-by: Farhan Anwar <[email protected]>
    Closes: https://lore.kernel.org/platform-driver-x86/[email protected]
    Tested-by: Rayan Margham <[email protected]>
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Armin Wolf <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

platform/x86: int3472: Check for adev == NULL [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Mon Dec 9 23:05:19 2024 +0100

    platform/x86: int3472: Check for adev == NULL
    
    [ Upstream commit cd2fd6eab480dfc247b737cf7a3d6b009c4d0f1c ]
    
    Not all devices have an ACPI companion fwnode, so adev might be NULL. This
    can e.g. (theoretically) happen when a user manually binds one of
    the int3472 drivers to another i2c/platform device through sysfs.
    
    Add a check for adev not being set and return -ENODEV in that case to
    avoid a possible NULL pointer deref in skl_int3472_get_acpi_buffer().
    
    Signed-off-by: Hans de Goede <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
PM: hibernate: Add error handling for syscore_suspend() [+ + +]
Author: Wentao Liang <[email protected]>
Date:   Sun Jan 19 22:32:05 2025 +0800

    PM: hibernate: Add error handling for syscore_suspend()
    
    [ Upstream commit e20a70c572539a486dbd91b225fa6a194a5e2122 ]
    
    In hibernation_platform_enter(), the code did not check the
    return value of syscore_suspend(), potentially leading to a
    situation where syscore_resume() would be called even if
    syscore_suspend() failed. This could cause unpredictable
    behavior or system instability.
    
    Modify the code sequence in question to properly handle errors returned
    by syscore_suspend(). If an error occurs in the suspend path, the code
    now jumps to label 'Enable_irqs' skipping the syscore_resume() call and
    only enabling interrupts after setting the system state to SYSTEM_RUNNING.
    
    Fixes: 40dc166cb5dd ("PM / Core: Introduce struct syscore_ops for core subsystems PM")
    Signed-off-by: Wentao Liang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Changelog edits ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pnfs/flexfiles: retry getting layout segment for reads [+ + +]
Author: Mike Snitzer <[email protected]>
Date:   Thu Jan 16 20:05:39 2025 -0500

    pnfs/flexfiles: retry getting layout segment for reads
    
    commit eb3fabde15bccdf34f1c9b35a83aa4c0dacbb4ca upstream.
    
    If ff_layout_pg_get_read()'s attempt to get a layout segment results
    in -EAGAIN have ff_layout_pg_init_read() retry it after sleeping.
    
    If "softerr" mount is used, use 'io_maxretrans' to limit the number of
    attempts to get a layout segment.
    
    This fixes a long-standing issue of O_DIRECT reads failing with
    -EAGAIN (11) when using flexfiles Client Side Mirroring (CSM).
    
    Cc: [email protected]
    Signed-off-by: Mike Snitzer <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
powerpc/book3s64/hugetlb: Fix disabling hugetlb when fadump is active [+ + +]
Author: Sourabh Jain <[email protected]>
Date:   Tue Dec 17 13:16:40 2024 +0530

    powerpc/book3s64/hugetlb: Fix disabling hugetlb when fadump is active
    
    [ Upstream commit d629d7a8efc33d05d62f4805c0ffb44727e3d99f ]
    
    Commit 8597538712eb ("powerpc/fadump: Do not use hugepages when fadump
    is active") disabled hugetlb support when fadump is active by returning
    early from hugetlbpage_init():arch/powerpc/mm/hugetlbpage.c and not
    populating hpage_shift/HPAGE_SHIFT.
    
    Later, commit 2354ad252b66 ("powerpc/mm: Update default hugetlb size
    early") moved the allocation of hpage_shift/HPAGE_SHIFT to early boot,
    which inadvertently re-enabled hugetlb support when fadump is active.
    
    Fix this by implementing hugepages_supported() on powerpc. This ensures
    that disabling hugetlb for the fadump kernel is independent of
    hpage_shift/HPAGE_SHIFT.
    
    Fixes: 2354ad252b66 ("powerpc/mm: Update default hugetlb size early")
    Reviewed-by: Ritesh Harjani (IBM) <[email protected]>
    Signed-off-by: Sourabh Jain <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
 
powerpc/pseries/eeh: Fix get PE state translation [+ + +]
Author: Narayana Murty N <[email protected]>
Date:   Thu Jan 16 04:39:54 2025 -0600

    powerpc/pseries/eeh: Fix get PE state translation
    
    commit 11b93559000c686ad7e5ab0547e76f21cc143844 upstream.
    
    The PE Reset State "0" returned by RTAS calls
    "ibm_read_slot_reset_[state|state2]" indicates that the reset is
    deactivated and the PE is in a state where MMIO and DMA are allowed.
    However, the current implementation of "pseries_eeh_get_state()" does
    not reflect this, causing drivers to incorrectly assume that MMIO and
    DMA operations cannot be resumed.
    
    The userspace drivers as a part of EEH recovery using VFIO ioctls fail
    to detect when the recovery process is complete. The VFIO_EEH_PE_GET_STATE
    ioctl does not report the expected EEH_PE_STATE_NORMAL state, preventing
    userspace drivers from functioning properly on pseries systems.
    
    The patch addresses this issue by updating 'pseries_eeh_get_state()'
    to include "EEH_STATE_MMIO_ENABLED" and "EEH_STATE_DMA_ENABLED" in
    the result mask for PE Reset State "0". This ensures correct state
    reporting to the callers, aligning the behavior with the PAPR specification
    and fixing the bug in EEH recovery for VFIO user workflows.
    
    Fixes: 00ba05a12b3c ("powerpc/pseries: Cleanup on pseries_eeh_get_state()")
    Cc: [email protected]
    Reviewed-by: Ritesh Harjani (IBM) <[email protected]>
    Signed-off-by: Narayana Murty N <[email protected]>
    Link: https://lore.kernel.org/stable/20241212075044.10563-1-nnmlinux%40linux.ibm.com
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
pps: Fix a use-after-free [+ + +]
Author: Calvin Owens <[email protected]>
Date:   Mon Nov 11 20:13:29 2024 -0800

    pps: Fix a use-after-free
    
    commit c79a39dc8d060b9e64e8b0fa9d245d44befeefbe upstream.
    
    On a board running ntpd and gpsd, I'm seeing a consistent use-after-free
    in sys_exit() from gpsd when rebooting:
    
        pps pps1: removed
        ------------[ cut here ]------------
        kobject: '(null)' (00000000db4bec24): is not initialized, yet kobject_put() is being called.
        WARNING: CPU: 2 PID: 440 at lib/kobject.c:734 kobject_put+0x120/0x150
        CPU: 2 UID: 299 PID: 440 Comm: gpsd Not tainted 6.11.0-rc6-00308-gb31c44928842 #1
        Hardware name: Raspberry Pi 4 Model B Rev 1.1 (DT)
        pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
        pc : kobject_put+0x120/0x150
        lr : kobject_put+0x120/0x150
        sp : ffffffc0803d3ae0
        x29: ffffffc0803d3ae0 x28: ffffff8042dc9738 x27: 0000000000000001
        x26: 0000000000000000 x25: ffffff8042dc9040 x24: ffffff8042dc9440
        x23: ffffff80402a4620 x22: ffffff8042ef4bd0 x21: ffffff80405cb600
        x20: 000000000008001b x19: ffffff8040b3b6e0 x18: 0000000000000000
        x17: 0000000000000000 x16: 0000000000000000 x15: 696e6920746f6e20
        x14: 7369203a29343263 x13: 205d303434542020 x12: 0000000000000000
        x11: 0000000000000000 x10: 0000000000000000 x9 : 0000000000000000
        x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000000000
        x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000
        x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000
        Call trace:
         kobject_put+0x120/0x150
         cdev_put+0x20/0x3c
         __fput+0x2c4/0x2d8
         ____fput+0x1c/0x38
         task_work_run+0x70/0xfc
         do_exit+0x2a0/0x924
         do_group_exit+0x34/0x90
         get_signal+0x7fc/0x8c0
         do_signal+0x128/0x13b4
         do_notify_resume+0xdc/0x160
         el0_svc+0xd4/0xf8
         el0t_64_sync_handler+0x140/0x14c
         el0t_64_sync+0x190/0x194
        ---[ end trace 0000000000000000 ]---
    
    ...followed by more symptoms of corruption, with similar stacks:
    
        refcount_t: underflow; use-after-free.
        kernel BUG at lib/list_debug.c:62!
        Kernel panic - not syncing: Oops - BUG: Fatal exception
    
    This happens because pps_device_destruct() frees the pps_device with the
    embedded cdev immediately after calling cdev_del(), but, as the comment
    above cdev_del() notes, fops for previously opened cdevs are still
    callable even after cdev_del() returns. I think this bug has always
    been there: I can't explain why it suddenly started happening every time
    I reboot this particular board.
    
    In commit d953e0e837e6 ("pps: Fix a use-after free bug when
    unregistering a source."), George Spelvin suggested removing the
    embedded cdev. That seems like the simplest way to fix this, so I've
    implemented his suggestion, using __register_chrdev() with pps_idr
    becoming the source of truth for which minor corresponds to which
    device.
    
    But now that pps_idr defines userspace visibility instead of cdev_add(),
    we need to be sure the pps->dev refcount can't reach zero while
    userspace can still find it again. So, the idr_remove() call moves to
    pps_unregister_cdev(), and pps_idr now holds a reference to pps->dev.
    
        pps_core: source serial1 got cdev (251:1)
        <...>
        pps pps1: removed
        pps_core: unregistering pps1
        pps_core: deallocating pps1
    
    Fixes: d953e0e837e6 ("pps: Fix a use-after free bug when unregistering a source.")
    Cc: [email protected]
    Signed-off-by: Calvin Owens <[email protected]>
    Reviewed-by: Michal Schmidt <[email protected]>
    Link: https://lore.kernel.org/r/a17975fd5ae99385791929e563f72564edbcf28f.1731383727.git.calvin@wbinvd.org
    Signed-off-by: Calvin Owens <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
printk: Fix signed integer overflow when defining LOG_BUF_LEN_MAX [+ + +]
Author: Kuan-Wei Chiu <[email protected]>
Date:   Sat Sep 28 19:36:08 2024 +0800

    printk: Fix signed integer overflow when defining LOG_BUF_LEN_MAX
    
    [ Upstream commit 3d6f83df8ff2d5de84b50377e4f0d45e25311c7a ]
    
    Shifting 1 << 31 on a 32-bit int causes signed integer overflow, which
    leads to undefined behavior. To prevent this, cast 1 to u32 before
    performing the shift, ensuring well-defined behavior.
    
    This change explicitly avoids any potential overflow by ensuring that
    the shift occurs on an unsigned 32-bit integer.
    
    Signed-off-by: Kuan-Wei Chiu <[email protected]>
    Acked-by: Petr Mladek <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Petr Mladek <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pstore/blk: trivial typo fixes [+ + +]
Author: Eugen Hristev <[email protected]>
Date:   Wed Jan 1 13:19:21 2025 +0200

    pstore/blk: trivial typo fixes
    
    [ Upstream commit 542243af7182efaeaf6d0f4643f7de437541a9af ]
    
    Fix trivial typos in comments.
    
    Fixes: 2a03ddbde1e1 ("pstore/blk: Move verify_size() macro out of function")
    Fixes: 17639f67c1d6 ("pstore/blk: Introduce backend for block devices")
    Signed-off-by: Eugen Hristev <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ptp: Ensure info->enable callback is always set [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Thu Jan 23 08:22:40 2025 +0100

    ptp: Ensure info->enable callback is always set
    
    commit fd53aa40e65f518453115b6f56183b0c201db26b upstream.
    
    The ioctl and sysfs handlers unconditionally call the ->enable callback.
    Not all drivers implement that callback, leading to NULL dereferences.
    Example of affected drivers: ptp_s390.c, ptp_vclock.c and ptp_mock.c.
    
    Instead use a dummy callback if no better was specified by the driver.
    
    Fixes: d94ba80ebbea ("ptp: Added a brand new class driver for ptp clocks.")
    Cc: [email protected]
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Acked-by: Richard Cochran <[email protected]>
    Reviewed-by: Michal Swiatkowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ptp: Properly handle compat ioctls [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Sat Jan 25 10:28:38 2025 +0100

    ptp: Properly handle compat ioctls
    
    [ Upstream commit 19ae40f572a9ce1ade9954990af709a03fd37010 ]
    
    Pointer arguments passed to ioctls need to pass through compat_ptr() to
    work correctly on s390; as explained in Documentation/driver-api/ioctl.rst.
    Detect compat mode at runtime and call compat_ptr() for those commands
    which do take pointer arguments.
    
    Suggested-by: Arnd Bergmann <[email protected]>
    Link: https://lore.kernel.org/lkml/[email protected]/
    Fixes: d94ba80ebbea ("ptp: Added a brand new class driver for ptp clocks.")
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Reviewed-by: Cyrill Gorcunov <[email protected]>
    Reviewed-by: Arnd Bergmann <[email protected]>
    Acked-by: Richard Cochran <[email protected]>
    Link: https://patch.msgid.link/20250125-posix-clock-compat_ioctl-v2-1-11c865c500eb@weissschuh.net
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
pwm: stm32-lp: Add check for clk_enable() [+ + +]
Author: Mingwei Zheng <[email protected]>
Date:   Fri Dec 6 16:53:18 2024 -0500

    pwm: stm32-lp: Add check for clk_enable()
    
    [ Upstream commit cce16e7f6216227964cda25f5f23634bce2c500f ]
    
    Add check for the return value of clk_enable() to catch the potential
    error.
    We used APP-Miner to find it.
    
    Fixes: e70a540b4e02 ("pwm: Add STM32 LPTimer PWM driver")
    Signed-off-by: Mingwei Zheng <[email protected]>
    Signed-off-by: Jiasheng Jiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pwm: stm32: Add check for clk_enable() [+ + +]
Author: Mingwei Zheng <[email protected]>
Date:   Sun Dec 15 17:47:52 2024 -0500

    pwm: stm32: Add check for clk_enable()
    
    [ Upstream commit e8c59791ebb60790c74b2c3ab520f04a8a57219a ]
    
    Add check for the return value of clk_enable() to catch the potential
    error.
    
    Fixes: 19f1016ea960 ("pwm: stm32: Fix enable count for clk in .probe()")
    Signed-off-by: Mingwei Zheng <[email protected]>
    Signed-off-by: Jiasheng Jiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rdma/cxgb4: Prevent potential integer overflow on 32bit [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Sat Nov 30 13:01:37 2024 +0300

    rdma/cxgb4: Prevent potential integer overflow on 32bit
    
    [ Upstream commit bd96a3935e89486304461a21752f824fc25e0f0b ]
    
    The "gl->tot_len" variable is controlled by the user.  It comes from
    process_responses().  On 32bit systems, the "gl->tot_len + sizeof(struct
    cpl_pass_accept_req) + sizeof(struct rss_header)" addition could have an
    integer wrapping bug.  Use size_add() to prevent this.
    
    Fixes: 1cab775c3e75 ("RDMA/cxgb4: Fix LE hash collision bug for passive open connection")
    Link: https://patch.msgid.link/r/[email protected]
    Signed-off-by: Dan Carpenter <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/efa: Reset device on probe failure [+ + +]
Author: Michael Margolin <[email protected]>
Date:   Wed Dec 25 13:15:48 2024 +0000

    RDMA/efa: Reset device on probe failure
    
    [ Upstream commit 123c13f10ed3627ba112172d8bd122a72cae226d ]
    
    Make sure the device is being reset on driver exit whatever the reason
    is, to keep the device aligned and allow it to close shared resources
    (e.g. admin queue).
    
    Reviewed-by: Firas Jahjah <[email protected]>
    Reviewed-by: Yonatan Nachum <[email protected]>
    Signed-off-by: Michael Margolin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Gal Pressman <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/mlx4: Avoid false error about access to uninitialized gids array [+ + +]
Author: Leon Romanovsky <[email protected]>
Date:   Tue Dec 3 15:44:25 2024 +0200

    RDMA/mlx4: Avoid false error about access to uninitialized gids array
    
    [ Upstream commit 1f53d88cbb0dcc7df235bf6611ae632b254fccd8 ]
    
    Smatch generates the following false error report:
    drivers/infiniband/hw/mlx4/main.c:393 mlx4_ib_del_gid() error: uninitialized symbol 'gids'.
    
    Traditionally, we are not changing kernel code and asking people to fix
    the tools. However in this case, the fix can be done by simply rearranging
    the code to be more clear.
    
    Fixes: e26be1bfef81 ("IB/mlx4: Implement ib_device callbacks")
    Link: https://patch.msgid.link/6a3a1577463da16962463fcf62883a87506e9b62.1733233426.git.leonro@nvidia.com
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/mlx5: Fix indirect mkey ODP page count [+ + +]
Author: Michael Guralnik <[email protected]>
Date:   Mon Jan 6 20:27:10 2025 +0200

    RDMA/mlx5: Fix indirect mkey ODP page count
    
    [ Upstream commit 235f238402194a78ac5fb882a46717eac817e5d1 ]
    
    Restrict the check for the number of pages handled during an ODP page
    fault to direct mkeys.
    Perform the check right after handling the page fault and don't
    propagate the number of handled pages to callers.
    
    Indirect mkeys and their associated direct mkeys can have different
    start addresses. As a result, the calculation of the number of pages to
    handle for an indirect mkey may not match the actual page fault
    handling done on the direct mkey.
    
    For example:
    A 4K sized page fault on a KSM mkey that has a start address that is not
    aligned to a page will result a calculation that assumes the number of
    pages required to handle are 2.
    While the underlying MTT might be aligned will require fetching only a
    single page.
    Thus, do the calculation and compare number of pages handled only per
    direct mkey.
    
    Fixes: db570d7deafb ("IB/mlx5: Add ODP support to MW")
    Signed-off-by: Michael Guralnik <[email protected]>
    Reviewed-by: Artemy Kovalyov <[email protected]>
    Link: https://patch.msgid.link/86c483d9e75ce8fe14e9ff85b62df72b779f8ab1.1736187990.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/rxe: Fix the warning "__rxe_cleanup+0x12c/0x170 [rdma_rxe]" [+ + +]
Author: Zhu Yanjun <[email protected]>
Date:   Fri Jan 10 17:09:27 2025 +0100

    RDMA/rxe: Fix the warning "__rxe_cleanup+0x12c/0x170 [rdma_rxe]"
    
    [ Upstream commit edc4ef0e0154096d6c0cf5e06af6fc330dbad9d1 ]
    
    The Call Trace is as below:
    "
      <TASK>
      ? show_regs.cold+0x1a/0x1f
      ? __rxe_cleanup+0x12c/0x170 [rdma_rxe]
      ? __warn+0x84/0xd0
      ? __rxe_cleanup+0x12c/0x170 [rdma_rxe]
      ? report_bug+0x105/0x180
      ? handle_bug+0x46/0x80
      ? exc_invalid_op+0x19/0x70
      ? asm_exc_invalid_op+0x1b/0x20
      ? __rxe_cleanup+0x12c/0x170 [rdma_rxe]
      ? __rxe_cleanup+0x124/0x170 [rdma_rxe]
      rxe_destroy_qp.cold+0x24/0x29 [rdma_rxe]
      ib_destroy_qp_user+0x118/0x190 [ib_core]
      rdma_destroy_qp.cold+0x43/0x5e [rdma_cm]
      rtrs_cq_qp_destroy.cold+0x1d/0x2b [rtrs_core]
      rtrs_srv_close_work.cold+0x1b/0x31 [rtrs_server]
      process_one_work+0x21d/0x3f0
      worker_thread+0x4a/0x3c0
      ? process_one_work+0x3f0/0x3f0
      kthread+0xf0/0x120
      ? kthread_complete_and_exit+0x20/0x20
      ret_from_fork+0x22/0x30
      </TASK>
    "
    When too many rdma resources are allocated, rxe needs more time to
    handle these rdma resources. Sometimes with the current timeout, rxe
    can not release the rdma resources correctly.
    
    Compared with other rdma drivers, a bigger timeout is used.
    
    Fixes: 215d0a755e1b ("RDMA/rxe: Stop lookup of partially built objects")
    Signed-off-by: Zhu Yanjun <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Tested-by: Joe Klein <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/srp: Fix error handling in srp_add_port [+ + +]
Author: Ma Ke <[email protected]>
Date:   Tue Dec 17 15:55:38 2024 +0800

    RDMA/srp: Fix error handling in srp_add_port
    
    [ Upstream commit a3cbf68c69611188cd304229e346bffdabfd4277 ]
    
    As comment of device_add() says, if device_add() succeeds, you should
    call device_del() when you want to get rid of it. If device_add() has
    not succeeded, use only put_device() to drop the reference count.
    
    Add a put_device() call before returning from the function to decrement
    reference count for cleanup.
    
    Found by code review.
    
    Fixes: c8e4c2397655 ("RDMA/srp: Rework the srp_add_port() error path")
    Signed-off-by: Ma Ke <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Bart Van Assche <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
regmap-irq: Add missing kfree() [+ + +]
Author: Jiasheng Jiang <[email protected]>
Date:   Wed Feb 5 00:43:43 2025 +0000

    regmap-irq: Add missing kfree()
    
    commit 32ffed055dcee17f6705f545b069e44a66067808 upstream.
    
    Add kfree() for "d->main_status_buf" to the error-handling path to prevent
    a memory leak.
    
    Fixes: a2d21848d921 ("regmap: regmap-irq: Add main status register support")
    Cc: [email protected]  # v5.1+
    Signed-off-by: Jiasheng Jiang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
regulator: core: Add missing newline character [+ + +]
Author: Alexander Stein <[email protected]>
Date:   Wed Jan 22 08:20:19 2025 +0100

    regulator: core: Add missing newline character
    
    [ Upstream commit 155c569fa4c3b340fbf8571a0e42dd415c025377 ]
    
    dev_err_probe() error messages need newline character.
    
    Fixes: 6eabfc018e8d ("regulator: core: Allow specifying an initial load w/ the bulk API")
    Signed-off-by: Alexander Stein <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

regulator: dt-bindings: mt6315: Drop regulator-compatible property [+ + +]
Author: Chen-Yu Tsai <[email protected]>
Date:   Wed Dec 11 13:24:19 2024 +0800

    regulator: dt-bindings: mt6315: Drop regulator-compatible property
    
    [ Upstream commit 08242719a8af603db54a2a79234a8fe600680105 ]
    
    The "regulator-compatible" property has been deprecated since 2012 in
    commit 13511def87b9 ("regulator: deprecate regulator-compatible DT
    property"), which is so old it's not even mentioned in the converted
    regulator bindings YAML file. It should not have been used for new
    submissions such as the MT6315.
    
    Drop the property from the MT6315 regulator binding and its examples.
    
    Fixes: 977fb5b58469 ("regulator: document binding for MT6315 regulator")
    Fixes: 6d435a94ba5b ("regulator: mt6315: Enforce regulator-compatible, not name")
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

regulator: of: Implement the unwind path of of_regulator_match() [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Sat Jan 4 17:04:53 2025 +0900

    regulator: of: Implement the unwind path of of_regulator_match()
    
    [ Upstream commit dddca3b2fc676113c58b04aaefe84bfb958ac83e ]
    
    of_regulator_match() does not release the OF node reference in the error
    path, resulting in an OF node leak. Therefore, call of_node_put() on the
    obtained nodes before returning the EINVAL error.
    
    Since it is possible that some drivers call this function and do not
    exit on failure, such as s2mps11_pmic_driver, clear the init_data and
    of_node in the error path.
    
    This was reported by an experimental verification tool that I am
    developing. As I do not have access to actual devices nor the QEMU board
    configuration to test drivers that call this function, no runtime test
    was able to be performed.
    
    Fixes: 1c8fa58f4750 ("regulator: Add generic DT parsing for regulators")
    Signed-off-by: Joe Hattori <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
remoteproc: core: Fix ida_free call while not allocated [+ + +]
Author: Arnaud Pouliquen <[email protected]>
Date:   Fri Nov 22 18:51:27 2024 +0100

    remoteproc: core: Fix ida_free call while not allocated
    
    commit 7378aeb664e5ebc396950b36a1f2dedf5aabec20 upstream.
    
    In the rproc_alloc() function, on error, put_device(&rproc->dev) is
    called, leading to the call of the rproc_type_release() function.
    An error can occurs before ida_alloc is called.
    
    In such case in rproc_type_release(), the condition (rproc->index >= 0) is
    true as rproc->index has been  initialized to 0.
    ida_free() is called reporting a warning:
    [    4.181906] WARNING: CPU: 1 PID: 24 at lib/idr.c:525 ida_free+0x100/0x164
    [    4.186378] stm32-display-dsi 5a000000.dsi: Fixed dependency cycle(s) with /soc/dsi@5a000000/panel@0
    [    4.188854] ida_free called for id=0 which is not allocated.
    [    4.198256] mipi-dsi 5a000000.dsi.0: Fixed dependency cycle(s) with /soc/dsi@5a000000
    [    4.203556] Modules linked in: panel_orisetech_otm8009a dw_mipi_dsi_stm(+) gpu_sched dw_mipi_dsi stm32_rproc stm32_crc32 stm32_ipcc(+) optee(+)
    [    4.224307] CPU: 1 UID: 0 PID: 24 Comm: kworker/u10:0 Not tainted 6.12.0 #442
    [    4.231481] Hardware name: STM32 (Device Tree Support)
    [    4.236627] Workqueue: events_unbound deferred_probe_work_func
    [    4.242504] Call trace:
    [    4.242522]  unwind_backtrace from show_stack+0x10/0x14
    [    4.250218]  show_stack from dump_stack_lvl+0x50/0x64
    [    4.255274]  dump_stack_lvl from __warn+0x80/0x12c
    [    4.260134]  __warn from warn_slowpath_fmt+0x114/0x188
    [    4.265199]  warn_slowpath_fmt from ida_free+0x100/0x164
    [    4.270565]  ida_free from rproc_type_release+0x38/0x60
    [    4.275832]  rproc_type_release from device_release+0x30/0xa0
    [    4.281601]  device_release from kobject_put+0xc4/0x294
    [    4.286762]  kobject_put from rproc_alloc.part.0+0x208/0x28c
    [    4.292430]  rproc_alloc.part.0 from devm_rproc_alloc+0x80/0xc4
    [    4.298393]  devm_rproc_alloc from stm32_rproc_probe+0xd0/0x844 [stm32_rproc]
    [    4.305575]  stm32_rproc_probe [stm32_rproc] from platform_probe+0x5c/0xbc
    
    Calling ida_alloc earlier in rproc_alloc ensures that the rproc->index is
    properly set.
    
    Fixes: 08333b911f01 ("remoteproc: Directly use ida_alloc()/free()")
    Signed-off-by: Arnaud Pouliquen <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mathieu Poirier <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Revert "btrfs: avoid monopolizing a core when activating a swap file" [+ + +]
Author: Koichiro Den <[email protected]>
Date:   Fri Feb 7 01:20:54 2025 +0900

    Revert "btrfs: avoid monopolizing a core when activating a swap file"
    
    This reverts commit bb8e287f596b62fac18ed84cc03a9f1752f6b3b8.
    
    The backport for linux-6.1.y, commit bb8e287f596b ("btrfs: avoid
    monopolizing a core when activating a swap file"), inserted
    cond_resched() in the wrong location.
    
    Revert it now; a subsequent commit will re-backport the original patch.
    
    Fixes: bb8e287f596b ("btrfs: avoid monopolizing a core when activating a swap file") # linux-6.1.y
    Signed-off-by: Koichiro Den <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Revert "drm/amd/display: Use HW lock mgr for PSR1" [+ + +]
Author: Tom Chung <[email protected]>
Date:   Tue Feb 4 15:07:44 2025 +0800

    Revert "drm/amd/display: Use HW lock mgr for PSR1"
    
    commit f245b400a223a71d6d5f4c72a2cb9b573a7fc2b6 upstream.
    
    This reverts commit
    a2b5a9956269 ("drm/amd/display: Use HW lock mgr for PSR1")
    
    Because it may cause system hang while connect with two edp panel.
    
    Acked-by: Wayne Lin <[email protected]>
    Signed-off-by: Tom Chung <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Revert "media: uvcvideo: Require entities to have a non-zero unique ID" [+ + +]
Author: Thadeu Lima de Souza Cascardo <[email protected]>
Date:   Tue Jan 14 17:00:45 2025 -0300

    Revert "media: uvcvideo: Require entities to have a non-zero unique ID"
    
    commit 8004d635f27bbccaa5c083c50d4d5302a6ffa00e upstream.
    
    This reverts commit 3dd075fe8ebbc6fcbf998f81a75b8c4b159a6195.
    
    Tomasz has reported that his device, Generalplus Technology Inc. 808 Camera,
    with ID 1b3f:2002, stopped being detected:
    
    $ ls -l /dev/video*
    zsh: no matches found: /dev/video*
    [    7.230599] usb 3-2: Found multiple Units with ID 5
    
    This particular device is non-compliant, having both the Output Terminal
    and Processing Unit with ID 5. uvc_scan_fallback, though, is able to build
    a chain. However, when media elements are added and uvc_mc_create_links
    call uvc_entity_by_id, it will get the incorrect entity,
    media_create_pad_link will WARN, and it will fail to register the entities.
    
    In order to reinstate support for such devices in a timely fashion,
    reverting the fix for these warnings is appropriate. A proper fix that
    considers the existence of such non-compliant devices will be submitted in
    a later development cycle.
    
    Reported-by: Tomasz Sikora <[email protected]>
    Fixes: 3dd075fe8ebb ("media: uvcvideo: Require entities to have a non-zero unique ID")
    Cc: [email protected]
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Reviewed-by: Laurent Pinchart <[email protected]>
    Reviewed-by: Hans de Goede <[email protected]>
    Reviewed-by: Ricardo Ribalda <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
rtc: pcf85063: fix potential OOB write in PCF85063 NVMEM read [+ + +]
Author: Oleksij Rempel <[email protected]>
Date:   Wed Dec 18 20:34:58 2024 +0100

    rtc: pcf85063: fix potential OOB write in PCF85063 NVMEM read
    
    [ Upstream commit 3ab8c5ed4f84fa20cd16794fe8dc31f633fbc70c ]
    
    The nvmem interface supports variable buffer sizes, while the regmap
    interface operates with fixed-size storage. If an nvmem client uses a
    buffer size less than 4 bytes, regmap_read will write out of bounds
    as it expects the buffer to point at an unsigned int.
    
    Fix this by using an intermediary unsigned int to hold the value.
    
    Fixes: fadfd092ee91 ("rtc: pcf85063: add nvram support")
    Signed-off-by: Oleksij Rempel <[email protected]>
    Signed-off-by: Ahmad Fatoum <[email protected]>
    Link: https://lore.kernel.org/r/20241218-rtc-pcf85063-stack-corruption-v1-1-12fd0ee0f046@pengutronix.de
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

rtc: zynqmp: Fix optional clock name property [+ + +]
Author: Michal Simek <[email protected]>
Date:   Wed Nov 27 17:01:22 2024 +0100

    rtc: zynqmp: Fix optional clock name property
    
    commit 2a388ff22d2cbfc5cbd628ef085bdcd3b7dc64f5 upstream.
    
    Clock description in DT binding introduced by commit f69060c14431
    ("dt-bindings: rtc: zynqmp: Add clock information") is talking about "rtc"
    clock name but driver is checking "rtc_clk" name instead.
    Because clock is optional property likely in was never handled properly by
    the driver.
    
    Fixes: 07dcc6f9c762 ("rtc: zynqmp: Add calibration set and get support")
    Signed-off-by: Michal Simek <[email protected]>
    Cc: [email protected]
    Reviewed-by: Peter Korsgaard <[email protected]>
    Link: https://lore.kernel.org/r/cd5f0c9d01ec1f5a240e37a7e0d85b8dacb3a869.1732723280.git.michal.simek@amd.com
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
rtla/osnoise: Distinguish missing workload option [+ + +]
Author: Tomas Glozar <[email protected]>
Date:   Tue Jan 7 15:48:21 2025 +0100

    rtla/osnoise: Distinguish missing workload option
    
    commit 80d3ba1cf51bfbbb3b098434f2b2c95cd7c0ae5c upstream.
    
    osnoise_set_workload returns -1 for both missing OSNOISE_WORKLOAD option
    and failure in setting the option.
    
    Return -1 for missing and -2 for failure to distinguish them.
    
    Cc: [email protected]
    Cc: John Kacur <[email protected]>
    Cc: Luis Goncalves <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Tomas Glozar <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
rtla/timerlat_hist: Abort event processing on second signal [+ + +]
Author: Tomas Glozar <[email protected]>
Date:   Thu Jan 16 15:49:30 2025 +0100

    rtla/timerlat_hist: Abort event processing on second signal
    
    [ Upstream commit d6899e560366e10141189697502bc5521940c588 ]
    
    If either SIGINT is received twice, or after a SIGALRM (that is, after
    timerlat was supposed to stop), abort processing events currently left
    in the tracefs buffer and exit immediately.
    
    This allows the user to exit rtla without waiting for processing all
    events, should that take longer than wanted, at the cost of not
    processing all samples.
    
    Cc: John Kacur <[email protected]>
    Cc: Luis Goncalves <[email protected]>
    Cc: Gabriele Monaco <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Tomas Glozar <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

rtla/timerlat_hist: Stop timerlat tracer on signal [+ + +]
Author: Tomas Glozar <[email protected]>
Date:   Thu Jan 16 15:49:28 2025 +0100

    rtla/timerlat_hist: Stop timerlat tracer on signal
    
    commit c73cab9dbed04d8f65ca69177b4b21ed3e09dfa7 upstream.
    
    Currently, when either SIGINT from the user or SIGALRM from the duration
    timer is caught by rtla-timerlat, stop_tracing is set to break out of
    the main loop. This is not sufficient for cases where the timerlat
    tracer is producing more data than rtla can consume, since in that case,
    rtla is looping indefinitely inside tracefs_iterate_raw_events, never
    reaches the check of stop_tracing and hangs.
    
    In addition to setting stop_tracing, also stop the timerlat tracer on
    received signal (SIGINT or SIGALRM). This will stop new samples so that
    the existing samples may be processed and tracefs_iterate_raw_events
    eventually exits.
    
    Cc: [email protected]
    Cc: John Kacur <[email protected]>
    Cc: Luis Goncalves <[email protected]>
    Cc: Gabriele Monaco <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Fixes: 1eeb6328e8b3 ("rtla/timerlat: Add timerlat hist mode")
    Signed-off-by: Tomas Glozar <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
rtla/timerlat_top: Abort event processing on second signal [+ + +]
Author: Tomas Glozar <[email protected]>
Date:   Thu Jan 16 15:49:31 2025 +0100

    rtla/timerlat_top: Abort event processing on second signal
    
    [ Upstream commit 80967b354a76b360943af384c10d807d98bea5c4 ]
    
    If either SIGINT is received twice, or after a SIGALRM (that is, after
    timerlat was supposed to stop), abort processing events currently left
    in the tracefs buffer and exit immediately.
    
    This allows the user to exit rtla without waiting for processing all
    events, should that take longer than wanted, at the cost of not
    processing all samples.
    
    Cc: John Kacur <[email protected]>
    Cc: Luis Goncalves <[email protected]>
    Cc: Gabriele Monaco <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Tomas Glozar <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

rtla/timerlat_top: Stop timerlat tracer on signal [+ + +]
Author: Tomas Glozar <[email protected]>
Date:   Thu Jan 16 15:49:29 2025 +0100

    rtla/timerlat_top: Stop timerlat tracer on signal
    
    commit a4dfce7559d75430c464294ddee554be2a413c4a upstream.
    
    Currently, when either SIGINT from the user or SIGALRM from the duration
    timer is caught by rtla-timerlat, stop_tracing is set to break out of
    the main loop. This is not sufficient for cases where the timerlat
    tracer is producing more data than rtla can consume, since in that case,
    rtla is looping indefinitely inside tracefs_iterate_raw_events, never
    reaches the check of stop_tracing and hangs.
    
    In addition to setting stop_tracing, also stop the timerlat tracer on
    received signal (SIGINT or SIGALRM). This will stop new samples so that
    the existing samples may be processed and tracefs_iterate_raw_events
    eventually exits.
    
    Cc: [email protected]
    Cc: John Kacur <[email protected]>
    Cc: Luis Goncalves <[email protected]>
    Cc: Gabriele Monaco <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Fixes: a828cd18bc4a ("rtla: Add timerlat tool and timelart top mode")
    Signed-off-by: Tomas Glozar <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
rtla: Add trace_instance_stop [+ + +]
Author: Tomas Glozar <[email protected]>
Date:   Thu Jan 16 15:49:27 2025 +0100

    rtla: Add trace_instance_stop
    
    commit e879b5dcf8d044f3865a32d95cc5b213f314c54f upstream.
    
    Support not only turning trace on for the timerlat tracer, but also
    turning it off.
    
    This will be used in subsequent patches to stop the timerlat tracer
    without also wiping the trace buffer.
    
    Cc: [email protected]
    Cc: John Kacur <[email protected]>
    Cc: Luis Goncalves <[email protected]>
    Cc: Gabriele Monaco <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Tomas Glozar <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
rv: Reset per-task monitors also for idle tasks [+ + +]
Author: Gabriele Monaco <[email protected]>
Date:   Wed Jan 15 16:15:48 2025 +0100

    rv: Reset per-task monitors also for idle tasks
    
    commit 8259cb14a70680553d5e82d65d1302fe589e9b39 upstream.
    
    RV per-task monitors are implemented through a monitor structure
    available for each task_struct. This structure is reset every time the
    monitor is (re-)started, to avoid inconsistencies if the monitor was
    activated previously.
    To do so, we reset the monitor on all threads using the macro
    for_each_process_thread. However, this macro excludes the idle tasks on
    each CPU. Idle tasks could be considered tasks on their own right and it
    should be up to the model whether to ignore them or not.
    
    Reset monitors also on the idle tasks for each present CPU whenever we
    reset all per-task monitors.
    
    Cc: [email protected]
    Cc: Juri Lelli <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: John Kacur <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Fixes: 792575348ff7 ("rv/include: Add deterministic automata monitor definition via C macros")
    Signed-off-by: Gabriele Monaco <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
s390/futex: Fix FUTEX_OP_ANDN implementation [+ + +]
Author: Heiko Carstens <[email protected]>
Date:   Tue Jan 7 11:28:58 2025 +0100

    s390/futex: Fix FUTEX_OP_ANDN implementation
    
    commit 26701574cee6777f867f89b4a5c667817e1ee0dd upstream.
    
    The futex operation FUTEX_OP_ANDN is supposed to implement
    
    *(int *)UADDR2 &= ~OPARG;
    
    The s390 implementation just implements an AND instead of ANDN.
    Add the missing bitwise not operation to oparg to fix this.
    
    This is broken since nearly 19 years, so it looks like user space is
    not making use of this operation.
    
    Fixes: 3363fbdd6fb4 ("[PATCH] s390: futex atomic operations")
    Cc: [email protected]
    Signed-off-by: Heiko Carstens <[email protected]>
    Acked-by: Alexander Gordeev <[email protected]>
    Signed-off-by: Alexander Gordeev <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
s390: Add '-std=gnu11' to decompressor and purgatory CFLAGS [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Wed Jan 22 19:54:27 2025 -0700

    s390: Add '-std=gnu11' to decompressor and purgatory CFLAGS
    
    commit 3b8b80e993766dc96d1a1c01c62f5d15fafc79b9 upstream.
    
    GCC changed the default C standard dialect from gnu17 to gnu23,
    which should not have impacted the kernel because it explicitly requests
    the gnu11 standard in the main Makefile. However, there are certain
    places in the s390 code that use their own CFLAGS without a '-std='
    value, which break with this dialect change because of the kernel's own
    definitions of bool, false, and true conflicting with the C23 reserved
    keywords.
    
      include/linux/stddef.h:11:9: error: cannot use keyword 'false' as enumeration constant
         11 |         false   = 0,
            |         ^~~~~
      include/linux/stddef.h:11:9: note: 'false' is a keyword with '-std=c23' onwards
      include/linux/types.h:35:33: error: 'bool' cannot be defined via 'typedef'
         35 | typedef _Bool                   bool;
            |                                 ^~~~
      include/linux/types.h:35:33: note: 'bool' is a keyword with '-std=c23' onwards
    
    Add '-std=gnu11' to the decompressor and purgatory CFLAGS to eliminate
    these errors and make the C standard version of these areas match the
    rest of the kernel.
    
    Cc: [email protected]
    Signed-off-by: Nathan Chancellor <[email protected]>
    Tested-by: Heiko Carstens <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexander Gordeev <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
safesetid: check size of policy writes [+ + +]
Author: Leo Stone <[email protected]>
Date:   Tue Dec 17 10:26:57 2024 -0800

    safesetid: check size of policy writes
    
    [ Upstream commit f09ff307c7299392f1c88f763299e24bc99811c7 ]
    
    syzbot attempts to write a buffer with a large size to a sysfs entry
    with writes handled by handle_policy_update(), triggering a warning
    in kmalloc.
    
    Check the size specified for write buffers before allocating.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=4eb7a741b3216020043a
    Signed-off-by: Leo Stone <[email protected]>
    [PM: subject tweak]
    Signed-off-by: Paul Moore <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
samples/landlock: Fix possible NULL dereference in parse_path() [+ + +]
Author: Zichen Xie <[email protected]>
Date:   Wed Nov 27 21:29:56 2024 -0600

    samples/landlock: Fix possible NULL dereference in parse_path()
    
    [ Upstream commit 078bf9438a31567e2c0587159ccefde835fb1ced ]
    
    malloc() may return NULL, leading to NULL dereference.  Add a NULL
    check.
    
    Fixes: ba84b0bf5a16 ("samples/landlock: Add a sandbox manager example")
    Signed-off-by: Zichen Xie <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [mic: Simplify fix]
    Signed-off-by: Mickaël Salaün <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
sched/fair: Fix value reported by hot tasks pulled in /proc/schedstat [+ + +]
Author: Peter Zijlstra <[email protected]>
Date:   Fri Dec 20 06:32:19 2024 +0000

    sched/fair: Fix value reported by hot tasks pulled in /proc/schedstat
    
    [ Upstream commit a430d99e349026d53e2557b7b22bd2ebd61fe12a ]
    
    In /proc/schedstat, lb_hot_gained reports the number hot tasks pulled
    during load balance. This value is incremented in can_migrate_task()
    if the task is migratable and hot. After incrementing the value,
    load balancer can still decide not to migrate this task leading to wrong
    accounting. Fix this by incrementing stats when hot tasks are detached.
    This issue only exists in detach_tasks() where we can decide to not
    migrate hot task even if it is migratable. However, in detach_one_task(),
    we migrate it unconditionally.
    
    [Swapnil: Handled the case where nr_failed_migrations_hot was not accounted properly and wrote commit log]
    
    Fixes: d31980846f96 ("sched: Move up affinity check to mitigate useless redoing overhead")
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Reported-by: "Gautham R. Shenoy" <[email protected]>
    Not-yet-signed-off-by: Peter Zijlstra <[email protected]>
    Signed-off-by: Swapnil Sapkal <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
sched/psi: Use task->psi_flags to clear in CPU migration [+ + +]
Author: Chengming Zhou <[email protected]>
Date:   Mon Sep 26 16:19:31 2022 +0800

    sched/psi: Use task->psi_flags to clear in CPU migration
    
    [ Upstream commit 52b33d87b9197c51e8ffdc61873739d90dd0a16f ]
    
    The commit d583d360a620 ("psi: Fix psi state corruption when schedule()
    races with cgroup move") fixed a race problem by making cgroup_move_task()
    use task->psi_flags instead of looking at the scheduler state.
    
    We can extend task->psi_flags usage to CPU migration, which should be
    a minor optimization for performance and code simplicity.
    
    Signed-off-by: Chengming Zhou <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Acked-by: Johannes Weiner <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: a430d99e3490 ("sched/fair: Fix value reported by hot tasks pulled in /proc/schedstat")
    Signed-off-by: Sasha Levin <[email protected]>

 
sched: Don't try to catch up excess steal time. [+ + +]
Author: Suleiman Souhlal <[email protected]>
Date:   Mon Nov 18 13:37:45 2024 +0900

    sched: Don't try to catch up excess steal time.
    
    [ Upstream commit 108ad0999085df2366dd9ef437573955cb3f5586 ]
    
    When steal time exceeds the measured delta when updating clock_task, we
    currently try to catch up the excess in future updates.
    However, this results in inaccurate run times for the future things using
    clock_task, in some situations, as they end up getting additional steal
    time that did not actually happen.
    This is because there is a window between reading the elapsed time in
    update_rq_clock() and sampling the steal time in update_rq_clock_task().
    If the VCPU gets preempted between those two points, any additional
    steal time is accounted to the outgoing task even though the calculated
    delta did not actually contain any of that "stolen" time.
    When this race happens, we can end up with steal time that exceeds the
    calculated delta, and the previous code would try to catch up that excess
    steal time in future clock updates, which is given to the next,
    incoming task, even though it did not actually have any time stolen.
    
    This behavior is particularly bad when steal time can be very long,
    which we've seen when trying to extend steal time to contain the duration
    that the host was suspended [0]. When this happens, clock_task stays
    frozen, during which the running task stays running for the whole
    duration, since its run time doesn't increase.
    However the race can happen even under normal operation.
    
    Ideally we would read the elapsed cpu time and the steal time atomically,
    to prevent this race from happening in the first place, but doing so
    is non-trivial.
    
    Since the time between those two points isn't otherwise accounted anywhere,
    neither to the outgoing task nor the incoming task (because the "end of
    outgoing task" and "start of incoming task" timestamps are the same),
    I would argue that the right thing to do is to simply drop any excess steal
    time, in order to prevent these issues.
    
    [0] https://lore.kernel.org/kvm/[email protected]/
    
    Signed-off-by: Suleiman Souhlal <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
scsi: mpt3sas: Set ioc->manu_pg11.EEDPTagMode directly to 1 [+ + +]
Author: Paul Menzel <[email protected]>
Date:   Thu Dec 12 23:18:12 2024 +0100

    scsi: mpt3sas: Set ioc->manu_pg11.EEDPTagMode directly to 1
    
    [ Upstream commit ad7c3c0cb8f61d6d5a48b83e62ca4a9fd2f26153 ]
    
    Currently, the code does:
    
        if (x == 0) {
            x &= ~0x3;
            x |= 0x1;
        }
    
    Zeroing bits 0 and 1 of a variable that is 0 is not necessary. So directly
    set the variable to 1.
    
    Cc: Sreekanth Reddy <[email protected]>
    Fixes: f92363d12359 ("[SCSI] mpt3sas: add new driver supporting 12GB SAS")
    Signed-off-by: Paul Menzel <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: qla2xxx: Move FCE Trace buffer allocation to user control [+ + +]
Author: Quinn Tran <[email protected]>
Date:   Fri Nov 15 18:33:09 2024 +0530

    scsi: qla2xxx: Move FCE Trace buffer allocation to user control
    
    commit 841df27d619ee1f5ca6473e15227b39d6136562d upstream.
    
    Currently FCE Tracing is enabled to log additional ELS events. Instead,
    user will enable or disable this feature through debugfs.
    
    Modify existing DFS knob to allow user to enable or disable this
    feature.
    
    echo [1 | 0] > /sys/kernel/debug/qla2xxx/qla2xxx_??/fce
    cat  /sys/kernel/debug/qla2xxx/qla2xxx_??/fce
    
    Cc: [email protected]
    Fixes: df613b96077c ("[SCSI] qla2xxx: Add Fibre Channel Event (FCE) tracing support.")
    Signed-off-by: Quinn Tran <[email protected]>
    Signed-off-by: Nilesh Javali <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Himanshu Madhani <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

scsi: storvsc: Set correct data length for sending SCSI command without payload [+ + +]
Author: Long Li <[email protected]>
Date:   Wed Jan 22 19:07:22 2025 -0800

    scsi: storvsc: Set correct data length for sending SCSI command without payload
    
    commit 87c4b5e8a6b65189abd9ea5010ab308941f964a4 upstream.
    
    In StorVSC, payload->range.len is used to indicate if this SCSI command
    carries payload. This data is allocated as part of the private driver data
    by the upper layer and may get passed to lower driver uninitialized.
    
    For example, the SCSI error handling mid layer may send TEST_UNIT_READY or
    REQUEST_SENSE while reusing the buffer from a failed command. The private
    data section may have stale data from the previous command.
    
    If the SCSI command doesn't carry payload, the driver may use this value as
    is for communicating with host, resulting in possible corruption.
    
    Fix this by always initializing this value.
    
    Fixes: be0cf6ca301c ("scsi: storvsc: Set the tablesize based on the information given by the host")
    Cc: [email protected]
    Tested-by: Roman Kisel <[email protected]>
    Reviewed-by: Roman Kisel <[email protected]>
    Reviewed-by: Michael Kelley <[email protected]>
    Signed-off-by: Long Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

scsi: ufs: bsg: Delete bsg_dev when setting up bsg fails [+ + +]
Author: Guixin Liu <[email protected]>
Date:   Wed Dec 18 09:42:13 2024 +0800

    scsi: ufs: bsg: Delete bsg_dev when setting up bsg fails
    
    [ Upstream commit fcf247deb3c3e1c6be5774e3fa03bbd018eff1a9 ]
    
    We should remove the bsg device when bsg_setup_queue() fails to release the
    resources.
    
    Fixes: df032bf27a41 ("scsi: ufs: Add a bsg endpoint that supports UPIUs")
    Signed-off-by: Guixin Liu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Avri Altman <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: ufs: bsg: Set bsg_queue to NULL after removal [+ + +]
Author: Guixin Liu <[email protected]>
Date:   Wed Dec 18 09:42:14 2024 +0800

    scsi: ufs: bsg: Set bsg_queue to NULL after removal
    
    [ Upstream commit 1e95c798d8a7f70965f0f88d4657b682ff0ec75f ]
    
    Currently, this does not cause any issues, but I believe it is necessary to
    set bsg_queue to NULL after removing it to prevent potential use-after-free
    (UAF) access.
    
    Signed-off-by: Guixin Liu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Avri Altman <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: ufs: core: Fix the HIGH/LOW_TEMP Bit Definitions [+ + +]
Author: Bao D. Nguyen <[email protected]>
Date:   Mon Jan 13 10:32:07 2025 -0800

    scsi: ufs: core: Fix the HIGH/LOW_TEMP Bit Definitions
    
    commit 1b3e2d4ec0c5848776cc56d2624998aa5b2f0d27 upstream.
    
    According to the UFS Device Specification, the dExtendedUFSFeaturesSupport
    defines the support for TOO_HIGH_TEMPERATURE as bit[4] and the
    TOO_LOW_TEMPERATURE as bit[5]. Correct the code to match with
    the UFS device specification definition.
    
    Cc: [email protected]
    Fixes: e88e2d32200a ("scsi: ufs: core: Probe for temperature notification support")
    Signed-off-by: Bao D. Nguyen <[email protected]>
    Link: https://lore.kernel.org/r/69992b3e3e3434a5c7643be5a64de48be892ca46.1736793068.git.quic_nguyenb@quicinc.com
    Reviewed-by: Avri Altman <[email protected]>
    Reviewed-by: Peter Wang <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
select: Fix unbalanced user_access_end() [+ + +]
Author: Christophe Leroy <[email protected]>
Date:   Mon Jan 13 09:37:24 2025 +0100

    select: Fix unbalanced user_access_end()
    
    [ Upstream commit 344af27715ddbf357cf76978d674428b88f8e92d ]
    
    While working on implementing user access validation on powerpc
    I got the following warnings on a pmac32_defconfig build:
    
              CC      fs/select.o
            fs/select.o: warning: objtool: sys_pselect6+0x1bc: redundant UACCESS disable
            fs/select.o: warning: objtool: sys_pselect6_time32+0x1bc: redundant UACCESS disable
    
    On powerpc/32s, user_read_access_begin/end() are no-ops, but the
    failure path has a user_access_end() instead of user_read_access_end()
    which means an access end without any prior access begin.
    
    Replace that user_access_end() by user_read_access_end().
    
    Fixes: 7e71609f64ec ("pselect6() and friends: take handling the combined 6th/7th args into helper")
    Signed-off-by: Christophe Leroy <[email protected]>
    Link: https://lore.kernel.org/r/a7139e28d767a13e667ee3c79599a8047222ef36.1736751221.git.christophe.leroy@csgroup.eu
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/landlock: Fix error message [+ + +]
Author: Mickaël Salaün <[email protected]>
Date:   Wed Jan 8 16:43:28 2025 +0100

    selftests/landlock: Fix error message
    
    [ Upstream commit 2107c35128ad751b201eb92fe91443450d9e5c37 ]
    
    The global variable errno may not be set in test_execute().  Do not use
    it in related error message.
    
    Cc: Günther Noack <[email protected]>
    Fixes: e1199815b47b ("selftests/landlock: Add user space tests")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mickaël Salaün <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/net/ipsec: Fix Null pointer dereference in rtattr_pack() [+ + +]
Author: Liu Ye <[email protected]>
Date:   Thu Jan 16 09:30:37 2025 +0800

    selftests/net/ipsec: Fix Null pointer dereference in rtattr_pack()
    
    [ Upstream commit 3a0b7fa095212b51ed63892540c4f249991a2d74 ]
    
    Address Null pointer dereference / undefined behavior in rtattr_pack
    (note that size is 0 in the bad case).
    
    Flagged by cppcheck as:
        tools/testing/selftests/net/ipsec.c:230:25: warning: Possible null pointer
        dereference: payload [nullPointer]
        memcpy(RTA_DATA(attr), payload, size);
                               ^
        tools/testing/selftests/net/ipsec.c:1618:54: note: Calling function 'rtattr_pack',
        4th argument 'NULL' value is 0
        if (rtattr_pack(&req.nh, sizeof(req), XFRMA_IF_ID, NULL, 0)) {
                                                           ^
        tools/testing/selftests/net/ipsec.c:230:25: note: Null pointer dereference
        memcpy(RTA_DATA(attr), payload, size);
                               ^
    Signed-off-by: Liu Ye <[email protected]>
    
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/powerpc: Fix argument order to timer_sub() [+ + +]
Author: Michael Ellerman <[email protected]>
Date:   Wed Dec 18 22:43:47 2024 +1100

    selftests/powerpc: Fix argument order to timer_sub()
    
    [ Upstream commit 2bf66e66d2e6feece6175ec09ec590a0a8563bdd ]
    
    Commit c814bf958926 ("powerpc/selftests: Use timersub() for
    gettimeofday()"), got the order of arguments to timersub() wrong,
    leading to a negative time delta being reported, eg:
    
      test: gettimeofday
      tags: git_version:v6.12-rc5-409-gdddf291c3030
      time = -3.297781
      success: gettimeofday
    
    The correct order is minuend, subtrahend, which in this case is end,
    start. Which gives:
    
      test: gettimeofday
      tags: git_version:v6.12-rc5-409-gdddf291c3030-dirty
      time = 3.300650
      success: gettimeofday
    
    Fixes: c814bf958926 ("powerpc/selftests: Use timersub() for gettimeofday()")
    Signed-off-by: Michael Ellerman <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests: gpio: gpio-sim: Fix missing chip disablements [+ + +]
Author: Koichiro Den <[email protected]>
Date:   Wed Jan 22 13:33:09 2025 +0900

    selftests: gpio: gpio-sim: Fix missing chip disablements
    
    [ Upstream commit f8524ac33cd452aef5384504b3264db6039a455e ]
    
    Since upstream commit 8bd76b3d3f3a ("gpio: sim: lock up configfs that an
    instantiated device depends on"), rmdir for an active virtual devices
    been prohibited.
    
    Update gpio-sim selftest to align with the change.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-lkp/[email protected]
    Signed-off-by: Koichiro Den <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

selftests: harness: fix printing of mismatch values in __EXPECT() [+ + +]
Author: Dmitry V. Levin <[email protected]>
Date:   Wed Jan 8 19:07:57 2025 +0200

    selftests: harness: fix printing of mismatch values in __EXPECT()
    
    [ Upstream commit 02bc220dc6dc7c56edc4859bc5dd2c08b95d5fb5 ]
    
    intptr_t and uintptr_t are not big enough types on 32-bit architectures
    when printing 64-bit values, resulting to the following incorrect
    diagnostic output:
    
      # get_syscall_info.c:209:get_syscall_info:Expected exp_args[2] (3134324433) == info.entry.args[1] (3134324433)
    
    Replace intptr_t and uintptr_t with intmax_t and uintmax_t, respectively.
    With this fix, the same test produces more usable diagnostic output:
    
      # get_syscall_info.c:209:get_syscall_info:Expected exp_args[2] (3134324433) == info.entry.args[1] (18446744072548908753)
    
    Link: https://lore.kernel.org/r/[email protected]
    Fixes: b5bb6d3068ea ("selftests/seccomp: fix 32-bit build warnings")
    Signed-off-by: Dmitry V. Levin <[email protected]>
    Reviewed-by: Kees Cook <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

selftests: mptcp: connect: -f: no reconnect [+ + +]
Author: Matthieu Baerts (NGI0) <[email protected]>
Date:   Tue Feb 4 23:19:53 2025 +0100

    selftests: mptcp: connect: -f: no reconnect
    
    commit 5368a67307b3b2c347dc8965ac55b888be665934 upstream.
    
    The '-f' parameter is there to force the kernel to emit MPTCP FASTCLOSE
    by closing the connection with unread bytes in the receive queue.
    
    The xdisconnect() helper was used to stop the connection, but it does
    more than that: it will shut it down, then wait before reconnecting to
    the same address. This causes the mptcp_join's "fastclose test" to fail
    all the time.
    
    This failure is due to a recent change, with commit 218cc166321f
    ("selftests: mptcp: avoid spurious errors on disconnect"), but that went
    unnoticed because the test is currently ignored. The recent modification
    only shown an existing issue: xdisconnect() doesn't need to be used
    here, only the shutdown() part is needed.
    
    Fixes: 6bf41020b72b ("selftests: mptcp: update and extend fastclose test-cases")
    Cc: [email protected]
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

selftests: rtnetlink: update netdevsim ipsec output format [+ + +]
Author: Hangbin Liu <[email protected]>
Date:   Thu Oct 10 04:00:27 2024 +0000

    selftests: rtnetlink: update netdevsim ipsec output format
    
    commit 3ec920bb978ccdc68a7dfb304d303d598d038cb1 upstream.
    
    After the netdevsim update to use human-readable IP address formats for
    IPsec, we can now use the source and destination IPs directly in testing.
    Here is the result:
      # ./rtnetlink.sh -t kci_test_ipsec_offload
      PASS: ipsec_offload
    
    Signed-off-by: Hangbin Liu <[email protected]>
    Acked-by: Stanislav Fomichev <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Harshit Mogalapalli <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

selftests: timers: clocksource-switch: Adapt progress to kselftest framework [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Thu Dec 12 10:02:56 2024 +0100

    selftests: timers: clocksource-switch: Adapt progress to kselftest framework
    
    [ Upstream commit 8694e6a7f7dba23d3abd9f5a96f64d161704c7b1 ]
    
    When adapting the test to the kselftest framework, a few printf() calls
    indicating test progress were not updated.
    
    Fix this by replacing these printf() calls by ksft_print_msg() calls.
    
    Link: https://lore.kernel.org/r/7dd4b9ab6e43268846e250878ebf25ae6d3d01ce.1733994134.git.geert+renesas@glider.be
    Fixes: ce7d101750ff ("selftests: timers: clocksource-switch: adapt to kselftest framework")
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Reviewed-by: Thomas Gleixner <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
serial: 8250: Adjust the timeout for FIFO mode [+ + +]
Author: John Ogness <[email protected]>
Date:   Tue Jan 7 22:32:57 2025 +0106

    serial: 8250: Adjust the timeout for FIFO mode
    
    [ Upstream commit d91f98be26510f5f81ec66425bb0306d1ccd571a ]
    
    After a console has written a record into UART_TX, it uses
    wait_for_xmitr() to wait until the data has been sent out before
    returning. However, wait_for_xmitr() will timeout after 10ms,
    regardless if the data has been transmitted or not.
    
    For single bytes, this timeout is sufficient even at very slow
    baud rates, such as 1200bps. However, when FIFO mode is used,
    there may be 64 bytes pushed into the FIFO at once. At a baud
    rate of 115200bps, the 10ms timeout is still sufficient. But
    when using lower baud rates (such as 57600bps), the timeout
    is _not_ sufficient. This causes longer lines to be cut off,
    resulting in lost and horribly misformatted output on the
    console.
    
    When using FIFO mode, take the number of bytes into account to
    determine an appropriate maximum timeout. Increasing the timeout
    does not affect performance since ideally the timeout never
    occurs.
    
    Fixes: 8f3631f0f6eb ("serial/8250: Use fifo in 8250 console driver")
    Signed-off-by: John Ogness <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Reviewed-by: Wander Lairson Costa <[email protected]>
    Reviewed-by: Petr Mladek <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

serial: 8250: Fix fifo underflow on flush [+ + +]
Author: John Keeping <[email protected]>
Date:   Sat Feb 8 12:41:44 2025 +0000

    serial: 8250: Fix fifo underflow on flush
    
    commit 9e512eaaf8f4008c44ede3dfc0fbc9d9c5118583 upstream.
    
    When flushing the serial port's buffer, uart_flush_buffer() calls
    kfifo_reset() but if there is an outstanding DMA transfer then the
    completion function will consume data from the kfifo via
    uart_xmit_advance(), underflowing and leading to ongoing DMA as the
    driver tries to transmit another 2^32 bytes.
    
    This is readily reproduced with serial-generic and amidi sending even
    short messages as closing the device on exit will wait for the fifo to
    drain and in the underflow case amidi hangs for 30 seconds on exit in
    tty_wait_until_sent().  A trace of that gives:
    
         kworker/1:1-84    [001]    51.769423: bprint:               serial8250_tx_dma: tx_size=3 fifo_len=3
               amidi-763   [001]    51.769460: bprint:               uart_flush_buffer: resetting fifo
     irq/21-fe530000-76    [000]    51.769474: bprint:               __dma_tx_complete: tx_size=3
     irq/21-fe530000-76    [000]    51.769479: bprint:               serial8250_tx_dma: tx_size=4096 fifo_len=4294967293
     irq/21-fe530000-76    [000]    51.781295: bprint:               __dma_tx_complete: tx_size=4096
     irq/21-fe530000-76    [000]    51.781301: bprint:               serial8250_tx_dma: tx_size=4096 fifo_len=4294963197
     irq/21-fe530000-76    [000]    51.793131: bprint:               __dma_tx_complete: tx_size=4096
     irq/21-fe530000-76    [000]    51.793135: bprint:               serial8250_tx_dma: tx_size=4096 fifo_len=4294959101
     irq/21-fe530000-76    [000]    51.804949: bprint:               __dma_tx_complete: tx_size=4096
    
    Since the port lock is held in when the kfifo is reset in
    uart_flush_buffer() and in __dma_tx_complete(), adding a flush_buffer
    hook to adjust the outstanding DMA byte count is sufficient to avoid the
    kfifo underflow.
    
    Fixes: 9ee4b83e51f74 ("serial: 8250: Add support for dmaengine")
    Cc: stable <[email protected]>
    Signed-off-by: John Keeping <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

serial: 8250_pci: add support for ASIX AX99100 [+ + +]
Author: Jiaqing Zhao <[email protected]>
Date:   Mon Jul 24 08:39:32 2023 +0000

    serial: 8250_pci: add support for ASIX AX99100
    
    commit 0b32216557ce3b2a468d1282d99b428bf72ff532 upstream.
    
    Each of the 4 PCI functions on ASIX AX99100 PCIe to Multi I/O
    Controller can be configured as a single-port serial port controller.
    The subvendor id is 0x1000 when configured as serial port and MSI
    interrupts are supported.
    
    Signed-off-by: Jiaqing Zhao <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Tomita Moeko <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

serial: sh-sci: Do not probe the serial port if its slot in sci_ports[] is in use [+ + +]
Author: Claudiu Beznea <[email protected]>
Date:   Thu Jan 16 20:22:47 2025 +0200

    serial: sh-sci: Do not probe the serial port if its slot in sci_ports[] is in use
    
    commit 9f7dea875cc7f9c1a56a5c688290634a59cd1420 upstream.
    
    In the sh-sci driver, sci_ports[0] is used by earlycon. If the earlycon is
    still active when sci_probe() is called and the new serial port is supposed
    to map to sci_ports[0], return -EBUSY to prevent breaking the earlycon.
    
    This situation should occurs in debug scenarios, and users should be
    aware of the potential conflict.
    
    Fixes: 0b0cced19ab1 ("serial: sh-sci: Add CONFIG_SERIAL_EARLYCON support")
    Cc: [email protected]
    Signed-off-by: Claudiu Beznea <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

serial: sh-sci: Drop __initdata macro for port_cfg [+ + +]
Author: Claudiu Beznea <[email protected]>
Date:   Thu Jan 16 20:22:45 2025 +0200

    serial: sh-sci: Drop __initdata macro for port_cfg
    
    commit eaeee4225dba30bef4d424bdf134a07b7f423e8b upstream.
    
    The port_cfg object is used by serial_console_write(), which serves as
    the write function for the earlycon device. Marking port_cfg as __initdata
    causes it to be freed after kernel initialization, resulting in earlycon
    becoming unavailable thereafter. Remove the __initdata macro from port_cfg
    to resolve this issue.
    
    Fixes: 0b0cced19ab1 ("serial: sh-sci: Add CONFIG_SERIAL_EARLYCON support")
    Cc: [email protected]
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Claudiu Beznea <[email protected]>
    Fixes: 0b0cced19ab15c9e ("serial: sh-sci: Add CONFIG_SERIAL_EARLYCON support")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
smb: client: change lease epoch type from unsigned int to __u16 [+ + +]
Author: Meetakshi Setiya <[email protected]>
Date:   Thu Feb 6 01:50:41 2025 -0500

    smb: client: change lease epoch type from unsigned int to __u16
    
    commit 57e4a9bd61c308f607bc3e55e8fa02257b06b552 upstream.
    
    MS-SMB2 section 2.2.13.2.10 specifies that 'epoch' should be a 16-bit
    unsigned integer used to track lease state changes. Change the data
    type of all instances of 'epoch' from unsigned int to __u16. This
    simplifies the epoch change comparisons and makes the code more
    compliant with the protocol spec.
    
    Cc: [email protected]
    Signed-off-by: Meetakshi Setiya <[email protected]>
    Reviewed-by: Shyam Prasad N <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

smb: client: fix oops due to unset link speed [+ + +]
Author: Paulo Alcantara <[email protected]>
Date:   Thu Jan 16 14:29:03 2025 -0300

    smb: client: fix oops due to unset link speed
    
    [ Upstream commit be7a6a77669588bfa5022a470989702bbbb11e7f ]
    
    It isn't guaranteed that NETWORK_INTERFACE_INFO::LinkSpeed will always
    be set by the server, so the client must handle any values and then
    prevent oopses like below from happening:
    
    Oops: divide error: 0000 [#1] PREEMPT SMP KASAN NOPTI
    CPU: 0 UID: 0 PID: 1323 Comm: cat Not tainted 6.13.0-rc7 #2
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-3.fc41
    04/01/2014
    RIP: 0010:cifs_debug_data_proc_show+0xa45/0x1460 [cifs] Code: 00 00 48
    89 df e8 3b cd 1b c1 41 f6 44 24 2c 04 0f 84 50 01 00 00 48 89 ef e8
    e7 d0 1b c1 49 8b 44 24 18 31 d2 49 8d 7c 24 28 <48> f7 74 24 18 48 89
    c3 e8 6e cf 1b c1 41 8b 6c 24 28 49 8d 7c 24
    RSP: 0018:ffffc90001817be0 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: ffff88811230022c RCX: ffffffffc041bd99
    RDX: 0000000000000000 RSI: 0000000000000567 RDI: ffff888112300228
    RBP: ffff888112300218 R08: fffff52000302f5f R09: ffffed1022fa58ac
    R10: ffff888117d2c566 R11: 00000000fffffffe R12: ffff888112300200
    R13: 000000012a15343f R14: 0000000000000001 R15: ffff888113f2db58
    FS: 00007fe27119e740(0000) GS:ffff888148600000(0000)
    knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fe2633c5000 CR3: 0000000124da0000 CR4: 0000000000750ef0
    PKRU: 55555554
    Call Trace:
     <TASK>
     ? __die_body.cold+0x19/0x27
     ? die+0x2e/0x50
     ? do_trap+0x159/0x1b0
     ? cifs_debug_data_proc_show+0xa45/0x1460 [cifs]
     ? do_error_trap+0x90/0x130
     ? cifs_debug_data_proc_show+0xa45/0x1460 [cifs]
     ? exc_divide_error+0x39/0x50
     ? cifs_debug_data_proc_show+0xa45/0x1460 [cifs]
     ? asm_exc_divide_error+0x1a/0x20
     ? cifs_debug_data_proc_show+0xa39/0x1460 [cifs]
     ? cifs_debug_data_proc_show+0xa45/0x1460 [cifs]
     ? seq_read_iter+0x42e/0x790
     seq_read_iter+0x19a/0x790
     proc_reg_read_iter+0xbe/0x110
     ? __pfx_proc_reg_read_iter+0x10/0x10
     vfs_read+0x469/0x570
     ? do_user_addr_fault+0x398/0x760
     ? __pfx_vfs_read+0x10/0x10
     ? find_held_lock+0x8a/0xa0
     ? __pfx_lock_release+0x10/0x10
     ksys_read+0xd3/0x170
     ? __pfx_ksys_read+0x10/0x10
     ? __rcu_read_unlock+0x50/0x270
     ? mark_held_locks+0x1a/0x90
     do_syscall_64+0xbb/0x1d0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7fe271288911
    Code: 00 48 8b 15 01 25 10 00 f7 d8 64 89 02 b8 ff ff ff ff eb bd e8
    20 ad 01 00 f3 0f 1e fa 80 3d b5 a7 10 00 00 74 13 31 c0 0f 05 <48> 3d
    00 f0 ff ff 77 4f c3 66 0f 1f 44 00 00 55 48 89 e5 48 83 ec
    RSP: 002b:00007ffe87c079d8 EFLAGS: 00000246 ORIG_RAX: 0000000000000000
    RAX: ffffffffffffffda RBX: 0000000000040000 RCX: 00007fe271288911
    RDX: 0000000000040000 RSI: 00007fe2633c6000 RDI: 0000000000000003
    RBP: 00007ffe87c07a00 R08: 0000000000000000 R09: 00007fe2713e6380
    R10: 0000000000000022 R11: 0000000000000246 R12: 0000000000040000
    R13: 00007fe2633c6000 R14: 0000000000000003 R15: 0000000000000000
     </TASK>
    
    Fix this by setting cifs_server_iface::speed to a sane value (1Gbps)
    by default when link speed is unset.
    
    Cc: Shyam Prasad N <[email protected]>
    Cc: Tom Talpey <[email protected]>
    Fixes: a6d8fb54a515 ("cifs: distribute channels across interfaces based on speed")
    Reported-by: Frank Sorenson <[email protected]>
    Reported-by: Jay Shin <[email protected]>
    Signed-off-by: Paulo Alcantara (Red Hat) <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
soc: atmel: fix device_node release in atmel_soc_device_init() [+ + +]
Author: Javier Carrasco <[email protected]>
Date:   Thu Oct 31 13:33:36 2024 +0100

    soc: atmel: fix device_node release in atmel_soc_device_init()
    
    [ Upstream commit d3455ab798100f40af77123e7c2443ec979c546b ]
    
    A device_node acquired via of_find_node_by_path() requires explicit
    calls to of_node_put() when it is no longer needed to avoid leaking the
    resource.
    
    Instead of adding the missing calls to of_node_put() in all execution
    paths, use the cleanup attribute for 'np' by means of the __free()
    macro, which automatically calls of_node_put() when the variable goes
    out of scope.
    
    Fixes: 960ddf70cc11 ("drivers: soc: atmel: Avoid calling at91_soc_init on non AT91 SoCs")
    Signed-off-by: Javier Carrasco <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Claudiu Beznea <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

soc: qcom: smem_state: fix missing of_node_put in error path [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Thu Aug 22 18:48:51 2024 +0200

    soc: qcom: smem_state: fix missing of_node_put in error path
    
    commit 70096b4990848229d0784c5e51dc3c7c072f1111 upstream.
    
    If of_parse_phandle_with_args() succeeds, the OF node reference should
    be dropped, regardless of number of phandle arguments.
    
    Cc: [email protected]
    Fixes: 9460ae2ff308 ("soc: qcom: Introduce common SMEM state machine code")
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

soc: qcom: socinfo: Avoid out of bounds read of serial number [+ + +]
Author: Stephan Gerhold <[email protected]>
Date:   Mon Dec 30 20:59:35 2024 +0100

    soc: qcom: socinfo: Avoid out of bounds read of serial number
    
    commit 22cf4fae6660b6e1a583a41cbf84e3046ca9ccd0 upstream.
    
    On MSM8916 devices, the serial number exposed in sysfs is constant and does
    not change across individual devices. It's always:
    
      db410c:/sys/devices/soc0$ cat serial_number
      2644893864
    
    The firmware used on MSM8916 exposes SOCINFO_VERSION(0, 8), which does not
    have support for the serial_num field in the socinfo struct. There is an
    existing check to avoid exposing the serial number in that case, but it's
    not correct: When checking the item_size returned by SMEM, we need to make
    sure the *end* of the serial_num is within bounds, instead of comparing
    with the *start* offset. The serial_number currently exposed on MSM8916
    devices is just an out of bounds read of whatever comes after the socinfo
    struct in SMEM.
    
    Fix this by changing offsetof() to offsetofend(), so that the size of the
    field is also taken into account.
    
    Cc: [email protected]
    Fixes: efb448d0a3fc ("soc: qcom: Add socinfo driver")
    Signed-off-by: Stephan Gerhold <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
spi: zynq-qspi: Add check for clk_enable() [+ + +]
Author: Mingwei Zheng <[email protected]>
Date:   Fri Dec 6 20:52:06 2024 -0500

    spi: zynq-qspi: Add check for clk_enable()
    
    [ Upstream commit 8332e667099712e05ec87ba2058af394b51ebdc9 ]
    
    Add check for the return value of clk_enable() to catch the potential
    error.
    
    Fixes: c618a90dcaf3 ("spi: zynq-qspi: Drop GPIO header")
    Signed-off-by: Mingwei Zheng <[email protected]>
    Signed-off-by: Jiasheng Jiang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
staging: media: imx: fix OF node leak in imx_media_add_of_subdevs() [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Tue Dec 24 12:54:11 2024 +0900

    staging: media: imx: fix OF node leak in imx_media_add_of_subdevs()
    
    [ Upstream commit 094f5c315f756b19198e6c401aa821ac0e868750 ]
    
    imx_media_add_of_subdevs() calls of_parse_phandle() and passes the
    obtained node to imx_media_of_add_csi(). The passed node is used in
    v4l2_async_nf_add_fwnode(), which increments the refcount of the node.
    Therefore, while the current implementation only releases the node when
    imx_media_of_add_csi() fails, but should always release it. Call
    of_node_put() right after imx_media_of_add_csi().
    
    Fixes: dee747f88167 ("media: imx: Don't register IPU subdevs/links if CSI port missing")
    Signed-off-by: Joe Hattori <[email protected]>
    Reviewed-by: Vladimir Zapolskiy <[email protected]>
    Reviewed-by: Philipp Zabel <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

staging: media: max96712: fix kernel oops when removing module [+ + +]
Author: Laurentiu Palcu <[email protected]>
Date:   Tue Dec 17 08:51:50 2024 +0200

    staging: media: max96712: fix kernel oops when removing module
    
    commit ee1b5046d5cd892a0754ab982aeaaad3702083a5 upstream.
    
    The following kernel oops is thrown when trying to remove the max96712
    module:
    
    Unable to handle kernel paging request at virtual address 00007375746174db
    Mem abort info:
      ESR = 0x0000000096000004
      EC = 0x25: DABT (current EL), IL = 32 bits
      SET = 0, FnV = 0
      EA = 0, S1PTW = 0
      FSC = 0x04: level 0 translation fault
    Data abort info:
      ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
      CM = 0, WnR = 0, TnD = 0, TagAccess = 0
      GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
    user pgtable: 4k pages, 48-bit VAs, pgdp=000000010af89000
    [00007375746174db] pgd=0000000000000000, p4d=0000000000000000
    Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP
    Modules linked in: crct10dif_ce polyval_ce mxc_jpeg_encdec flexcan
        snd_soc_fsl_sai snd_soc_fsl_asoc_card snd_soc_fsl_micfil dwc_mipi_csi2
        imx_csi_formatter polyval_generic v4l2_jpeg imx_pcm_dma can_dev
        snd_soc_imx_audmux snd_soc_wm8962 snd_soc_imx_card snd_soc_fsl_utils
        max96712(C-) rpmsg_ctrl rpmsg_char pwm_fan fuse
        [last unloaded: imx8_isi]
    CPU: 0 UID: 0 PID: 754 Comm: rmmod
                Tainted: G         C    6.12.0-rc6-06364-g327fec852c31 #17
    Tainted: [C]=CRAP
    Hardware name: NXP i.MX95 19X19 board (DT)
    pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : led_put+0x1c/0x40
    lr : v4l2_subdev_put_privacy_led+0x48/0x58
    sp : ffff80008699bbb0
    x29: ffff80008699bbb0 x28: ffff00008ac233c0 x27: 0000000000000000
    x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000000
    x23: ffff000080cf1170 x22: ffff00008b53bd00 x21: ffff8000822ad1c8
    x20: ffff000080ff5c00 x19: ffff00008b53be40 x18: 0000000000000000
    x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
    x14: 0000000000000004 x13: ffff0000800f8010 x12: 0000000000000000
    x11: ffff000082acf5c0 x10: ffff000082acf478 x9 : ffff0000800f8010
    x8 : 0101010101010101 x7 : 7f7f7f7f7f7f7f7f x6 : fefefeff6364626d
    x5 : 8080808000000000 x4 : 0000000000000020 x3 : 00000000553a3dc1
    x2 : ffff00008ac233c0 x1 : ffff00008ac233c0 x0 : ff00737574617473
    Call trace:
     led_put+0x1c/0x40
     v4l2_subdev_put_privacy_led+0x48/0x58
     v4l2_async_unregister_subdev+0x2c/0x1a4
     max96712_remove+0x1c/0x38 [max96712]
     i2c_device_remove+0x2c/0x9c
     device_remove+0x4c/0x80
     device_release_driver_internal+0x1cc/0x228
     driver_detach+0x4c/0x98
     bus_remove_driver+0x6c/0xbc
     driver_unregister+0x30/0x60
     i2c_del_driver+0x54/0x64
     max96712_i2c_driver_exit+0x18/0x1d0 [max96712]
     __arm64_sys_delete_module+0x1a4/0x290
     invoke_syscall+0x48/0x10c
     el0_svc_common.constprop.0+0xc0/0xe0
     do_el0_svc+0x1c/0x28
     el0_svc+0x34/0xd8
     el0t_64_sync_handler+0x120/0x12c
     el0t_64_sync+0x190/0x194
    Code: f9000bf3 aa0003f3 f9402800 f9402000 (f9403400)
    ---[ end trace 0000000000000000 ]---
    
    This happens because in v4l2_i2c_subdev_init(), the i2c_set_cliendata()
    is called again and the data is overwritten to point to sd, instead of
    priv. So, in remove(), the wrong pointer is passed to
    v4l2_async_unregister_subdev(), leading to a crash.
    
    Fixes: 5814f32fef13 ("media: staging: max96712: Add basic support for MAX96712 GMSL2 deserializer")
    Signed-off-by: Laurentiu Palcu <[email protected]>
    Cc: [email protected]
    Reviewed-by: Niklas Söderlund <[email protected]>
    Reviewed-by: Ricardo Ribalda <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
tcp_cubic: fix incorrect HyStart round start detection [+ + +]
Author: Mahdi Arghavani <[email protected]>
Date:   Fri Jan 17 21:37:51 2025 +0000

    tcp_cubic: fix incorrect HyStart round start detection
    
    [ Upstream commit 25c1a9ca53db5780757e7f53e688b8f916821baa ]
    
    I noticed that HyStart incorrectly marks the start of rounds,
    leading to inaccurate measurements of ACK train lengths and
    resetting the `ca->sample_cnt` variable. This inaccuracy can impact
    HyStart's functionality in terminating exponential cwnd growth during
    Slow-Start, potentially degrading TCP performance.
    
    The issue arises because the changes introduced in commit 4e1fddc98d25
    ("tcp_cubic: fix spurious Hystart ACK train detections for not-cwnd-limited flows")
    moved the caller of the `bictcp_hystart_reset` function inside the `hystart_update` function.
    This modification added an additional condition for triggering the caller,
    requiring that (tcp_snd_cwnd(tp) >= hystart_low_window) must also
    be satisfied before invoking `bictcp_hystart_reset`.
    
    This fix ensures that `bictcp_hystart_reset` is correctly called
    at the start of a new round, regardless of the congestion window size.
    This is achieved by moving the condition
    (tcp_snd_cwnd(tp) >= hystart_low_window)
    from before calling `bictcp_hystart_reset` to after it.
    
    I tested with a client and a server connected through two Linux software routers.
    In this setup, the minimum RTT was 150 ms, the bottleneck bandwidth was 50 Mbps,
    and the bottleneck buffer size was 1 BDP, calculated as (50M / 1514 / 8) * 0.150 = 619 packets.
    I conducted the test twice, transferring data from the server to the client for 1.5 seconds.
    Before the patch was applied, HYSTART-DELAY stopped the exponential growth of cwnd when
    cwnd = 516, and the bottleneck link was not yet saturated (516 < 619).
    After the patch was applied, HYSTART-ACK-TRAIN stopped the exponential growth of cwnd when
    cwnd = 632, and the bottleneck link was saturated (632 > 619).
    In this test, applying the patch resulted in 300 KB more data delivered.
    
    Fixes: 4e1fddc98d25 ("tcp_cubic: fix spurious Hystart ACK train detections for not-cwnd-limited flows")
    Signed-off-by: Mahdi Arghavani <[email protected]>
    Reviewed-by: Jason Xing <[email protected]>
    Cc: Neal Cardwell <[email protected]>
    Cc: Eric Dumazet <[email protected]>
    Cc: Haibo Zhang <[email protected]>
    Cc: David Eyers <[email protected]>
    Cc: Abbas Arghavani <[email protected]>
    Reviewed-by: Neal Cardwell <[email protected]>
    Tested-by: Neal Cardwell <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
team: better TEAM_OPTION_TYPE_STRING validation [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Feb 12 13:49:28 2025 +0000

    team: better TEAM_OPTION_TYPE_STRING validation
    
    [ Upstream commit 5bef3ac184b5626ea62385d6b82a1992b89d7940 ]
    
    syzbot reported following splat [1]
    
    Make sure user-provided data contains one nul byte.
    
    [1]
     BUG: KMSAN: uninit-value in string_nocheck lib/vsprintf.c:633 [inline]
     BUG: KMSAN: uninit-value in string+0x3ec/0x5f0 lib/vsprintf.c:714
      string_nocheck lib/vsprintf.c:633 [inline]
      string+0x3ec/0x5f0 lib/vsprintf.c:714
      vsnprintf+0xa5d/0x1960 lib/vsprintf.c:2843
      __request_module+0x252/0x9f0 kernel/module/kmod.c:149
      team_mode_get drivers/net/team/team_core.c:480 [inline]
      team_change_mode drivers/net/team/team_core.c:607 [inline]
      team_mode_option_set+0x437/0x970 drivers/net/team/team_core.c:1401
      team_option_set drivers/net/team/team_core.c:375 [inline]
      team_nl_options_set_doit+0x1339/0x1f90 drivers/net/team/team_core.c:2662
      genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
      genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
      genl_rcv_msg+0x1214/0x12c0 net/netlink/genetlink.c:1210
      netlink_rcv_skb+0x375/0x650 net/netlink/af_netlink.c:2543
      genl_rcv+0x40/0x60 net/netlink/genetlink.c:1219
      netlink_unicast_kernel net/netlink/af_netlink.c:1322 [inline]
      netlink_unicast+0xf52/0x1260 net/netlink/af_netlink.c:1348
      netlink_sendmsg+0x10da/0x11e0 net/netlink/af_netlink.c:1892
      sock_sendmsg_nosec net/socket.c:718 [inline]
      __sock_sendmsg+0x30f/0x380 net/socket.c:733
      ____sys_sendmsg+0x877/0xb60 net/socket.c:2573
      ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2627
      __sys_sendmsg net/socket.c:2659 [inline]
      __do_sys_sendmsg net/socket.c:2664 [inline]
      __se_sys_sendmsg net/socket.c:2662 [inline]
      __x64_sys_sendmsg+0x212/0x3c0 net/socket.c:2662
      x64_sys_call+0x2ed6/0x3c30 arch/x86/include/generated/asm/syscalls_64.h:47
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Fixes: 3d249d4ca7d0 ("net: introduce ethernet teaming device")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=1fcd957a82e3a1baa94d
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: 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]>

team: prevent adding a device which is already a team device lower [+ + +]
Author: Octavian Purdila <[email protected]>
Date:   Mon Dec 30 12:56:47 2024 -0800

    team: prevent adding a device which is already a team device lower
    
    [ Upstream commit 3fff5da4ca2164bb4d0f1e6cd33f6eb8a0e73e50 ]
    
    Prevent adding a device which is already a team device lower,
    e.g. adding veth0 if vlan1 was already added and veth0 is a lower of
    vlan1.
    
    This is not useful in practice and can lead to recursive locking:
    
    $ ip link add veth0 type veth peer name veth1
    $ ip link set veth0 up
    $ ip link set veth1 up
    $ ip link add link veth0 name veth0.1 type vlan protocol 802.1Q id 1
    $ ip link add team0 type team
    $ ip link set veth0.1 down
    $ ip link set veth0.1 master team0
    team0: Port device veth0.1 added
    $ ip link set veth0 down
    $ ip link set veth0 master team0
    
    ============================================
    WARNING: possible recursive locking detected
    6.13.0-rc2-virtme-00441-ga14a429069bb #46 Not tainted
    --------------------------------------------
    ip/7684 is trying to acquire lock:
    ffff888016848e00 (team->team_lock_key){+.+.}-{4:4}, at: team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    
    but task is already holding lock:
    ffff888016848e00 (team->team_lock_key){+.+.}-{4:4}, at: team_add_slave (drivers/net/team/team_core.c:1147 drivers/net/team/team_core.c:1977)
    
    other info that might help us debug this:
    Possible unsafe locking scenario:
    
    CPU0
    ----
    lock(team->team_lock_key);
    lock(team->team_lock_key);
    
    *** DEADLOCK ***
    
    May be due to missing lock nesting notation
    
    2 locks held by ip/7684:
    
    stack backtrace:
    CPU: 3 UID: 0 PID: 7684 Comm: ip Not tainted 6.13.0-rc2-virtme-00441-ga14a429069bb #46
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    Call Trace:
    <TASK>
    dump_stack_lvl (lib/dump_stack.c:122)
    print_deadlock_bug.cold (kernel/locking/lockdep.c:3040)
    __lock_acquire (kernel/locking/lockdep.c:3893 kernel/locking/lockdep.c:5226)
    ? netlink_broadcast_filtered (net/netlink/af_netlink.c:1548)
    lock_acquire.part.0 (kernel/locking/lockdep.c:467 kernel/locking/lockdep.c:5851)
    ? team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    ? trace_lock_acquire (./include/trace/events/lock.h:24 (discriminator 2))
    ? team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    ? lock_acquire (kernel/locking/lockdep.c:5822)
    ? team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    __mutex_lock (kernel/locking/mutex.c:587 kernel/locking/mutex.c:735)
    ? team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    ? team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    ? fib_sync_up (net/ipv4/fib_semantics.c:2167)
    ? team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    team_device_event (drivers/net/team/team_core.c:2928 drivers/net/team/team_core.c:2951 drivers/net/team/team_core.c:2973)
    notifier_call_chain (kernel/notifier.c:85)
    call_netdevice_notifiers_info (net/core/dev.c:1996)
    __dev_notify_flags (net/core/dev.c:8993)
    ? __dev_change_flags (net/core/dev.c:8975)
    dev_change_flags (net/core/dev.c:9027)
    vlan_device_event (net/8021q/vlan.c:85 net/8021q/vlan.c:470)
    ? br_device_event (net/bridge/br.c:143)
    notifier_call_chain (kernel/notifier.c:85)
    call_netdevice_notifiers_info (net/core/dev.c:1996)
    dev_open (net/core/dev.c:1519 net/core/dev.c:1505)
    team_add_slave (drivers/net/team/team_core.c:1219 drivers/net/team/team_core.c:1977)
    ? __pfx_team_add_slave (drivers/net/team/team_core.c:1972)
    do_set_master (net/core/rtnetlink.c:2917)
    do_setlink.isra.0 (net/core/rtnetlink.c:3117)
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=3c47b5843403a45aef57
    Fixes: 3d249d4ca7d0 ("net: introduce ethernet teaming device")
    Signed-off-by: Octavian Purdila <[email protected]>
    Reviewed-by: Hangbin Liu <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tg3: Disable tg3 PCIe AER on system reboot [+ + +]
Author: Lenny Szubowicz <[email protected]>
Date:   Thu Jan 30 16:57:54 2025 -0500

    tg3: Disable tg3 PCIe AER on system reboot
    
    [ Upstream commit e0efe83ed325277bb70f9435d4d9fc70bebdcca8 ]
    
    Disable PCIe AER on the tg3 device on system reboot on a limited
    list of Dell PowerEdge systems. This prevents a fatal PCIe AER event
    on the tg3 device during the ACPI _PTS (prepare to sleep) method for
    S5 on those systems. The _PTS is invoked by acpi_enter_sleep_state_prep()
    as part of the kernel's reboot sequence as a result of commit
    38f34dba806a ("PM: ACPI: reboot: Reinstate S5 for reboot").
    
    There was an earlier fix for this problem by commit 2ca1c94ce0b6
    ("tg3: Disable tg3 device on system reboot to avoid triggering AER").
    But it was discovered that this earlier fix caused a reboot hang
    when some Dell PowerEdge servers were booted via ipxe. To address
    this reboot hang, the earlier fix was essentially reverted by commit
    9fc3bc764334 ("tg3: power down device only on SYSTEM_POWER_OFF").
    This re-exposed the tg3 PCIe AER on reboot problem.
    
    This fix is not an ideal solution because the root cause of the AER
    is in system firmware. Instead, it's a targeted work-around in the
    tg3 driver.
    
    Note also that the PCIe AER must be disabled on the tg3 device even
    if the system is configured to use "firmware first" error handling.
    
    V3:
       - Fix sparse warning on improper comparison of pdev->current_state
       - Adhere to netdev comment style
    
    Fixes: 9fc3bc764334 ("tg3: power down device only on SYSTEM_POWER_OFF")
    Signed-off-by: Lenny Szubowicz <[email protected]>
    Reviewed-by: Pavan Chebbi <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tipc: re-order conditions in tipc_crypto_key_rcv() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Fri Jan 17 12:36:14 2025 +0300

    tipc: re-order conditions in tipc_crypto_key_rcv()
    
    [ Upstream commit 5fe71fda89745fc3cd95f70d06e9162b595c3702 ]
    
    On a 32bit system the "keylen + sizeof(struct tipc_aead_key)" math could
    have an integer wrapping issue.  It doesn't matter because the "keylen"
    is checked on the next line, but just to make life easier for static
    analysis tools, let's re-order these conditions and avoid the integer
    overflow.
    
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tomoyo: don't emit warning in tomoyo_write_control() [+ + +]
Author: Tetsuo Handa <[email protected]>
Date:   Mon Dec 16 19:38:40 2024 +0900

    tomoyo: don't emit warning in tomoyo_write_control()
    
    [ Upstream commit 3df7546fc03b8f004eee0b9e3256369f7d096685 ]
    
    syzbot is reporting too large allocation warning at tomoyo_write_control(),
    for one can write a very very long line without new line character. To fix
    this warning, I use __GFP_NOWARN rather than checking for KMALLOC_MAX_SIZE,
    for practically a valid line should be always shorter than 32KB where the
    "too small to fail" memory-allocation rule applies.
    
    One might try to write a valid line that is longer than 32KB, but such
    request will likely fail with -ENOMEM. Therefore, I feel that separately
    returning -EINVAL when a line is longer than KMALLOC_MAX_SIZE is redundant.
    There is no need to distinguish over-32KB and over-KMALLOC_MAX_SIZE.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=7536f77535e5210a5c76
    Reported-by: Leo Stone <[email protected]>
    Closes: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Tetsuo Handa <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tools/bootconfig: Fix the wrong format specifier [+ + +]
Author: Luo Yifan <[email protected]>
Date:   Tue Jan 28 23:27:01 2025 +0900

    tools/bootconfig: Fix the wrong format specifier
    
    [ Upstream commit f6ab7384d554ba80ff4793259d75535874b366f5 ]
    
    Use '%u' instead of '%d' for unsigned int.
    
    Link: https://lore.kernel.org/all/[email protected]/
    
    Fixes: 973780011106 ("tools/bootconfig: Suppress non-error messages")
    Signed-off-by: Luo Yifan <[email protected]>
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tools/testing/selftests/bpf/test_tc_tunnel.sh: Fix wait for server bind [+ + +]
Author: Marco Leogrande <[email protected]>
Date:   Mon Dec 2 12:45:30 2024 -0800

    tools/testing/selftests/bpf/test_tc_tunnel.sh: Fix wait for server bind
    
    [ Upstream commit e2f0791124a1b6ca8d570110cbd487969d9d41ef ]
    
    Commit f803bcf9208a ("selftests/bpf: Prevent client connect before
    server bind in test_tc_tunnel.sh") added code that waits for the
    netcat server to start before the netcat client attempts to connect to
    it. However, not all calls to 'server_listen' were guarded.
    
    This patch adds the existing 'wait_for_port' guard after the remaining
    call to 'server_listen'.
    
    Fixes: f803bcf9208a ("selftests/bpf: Prevent client connect before server bind in test_tc_tunnel.sh")
    Signed-off-by: Marco Leogrande <[email protected]>
    Acked-by: Stanislav Fomichev <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tty: xilinx_uartps: split sysrq handling [+ + +]
Author: Sean Anderson <[email protected]>
Date:   Fri Jan 10 16:38:22 2025 -0500

    tty: xilinx_uartps: split sysrq handling
    
    commit b06f388994500297bb91be60ffaf6825ecfd2afe upstream.
    
    lockdep detects the following circular locking dependency:
    
    CPU 0                      CPU 1
    ========================== ============================
    cdns_uart_isr()            printk()
      uart_port_lock(port)       console_lock()
                                 cdns_uart_console_write()
                                   if (!port->sysrq)
                                     uart_port_lock(port)
      uart_handle_break()
        port->sysrq = ...
      uart_handle_sysrq_char()
        printk()
          console_lock()
    
    The fixed commit attempts to avoid this situation by only taking the
    port lock in cdns_uart_console_write if port->sysrq unset. However, if
    (as shown above) cdns_uart_console_write runs before port->sysrq is set,
    then it will try to take the port lock anyway. This may result in a
    deadlock.
    
    Fix this by splitting sysrq handling into two parts. We use the prepare
    helper under the port lock and defer handling until we release the lock.
    
    Fixes: 74ea66d4ca06 ("tty: xuartps: Improve sysrq handling")
    Signed-off-by: Sean Anderson <[email protected]>
    Cc: [email protected] # c980248179d: serial: xilinx_uartps: Use port lock wrappers
    Acked-by: John Ogness <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Anderson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
tun: fix group permission check [+ + +]
Author: Stas Sergeev <[email protected]>
Date:   Thu Dec 5 10:36:14 2024 +0300

    tun: fix group permission check
    
    [ Upstream commit 3ca459eaba1bf96a8c7878de84fa8872259a01e3 ]
    
    Currently tun checks the group permission even if the user have matched.
    Besides going against the usual permission semantic, this has a
    very interesting implication: if the tun group is not among the
    supplementary groups of the tun user, then effectively no one can
    access the tun device. CAP_SYS_ADMIN still can, but its the same as
    not setting the tun ownership.
    
    This patch relaxes the group checking so that either the user match
    or the group match is enough. This avoids the situation when no one
    can access the device even though the ownership is properly set.
    
    Also I simplified the logic by removing the redundant inversions:
    tun_not_capable() --> !tun_capable()
    
    Signed-off-by: Stas Sergeev <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Acked-by: Jason Wang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tun: revert fix group permission check [+ + +]
Author: Willem de Bruijn <[email protected]>
Date:   Tue Feb 4 11:10:06 2025 -0500

    tun: revert fix group permission check
    
    [ Upstream commit a70c7b3cbc0688016810bb2e0b9b8a0d6a530045 ]
    
    This reverts commit 3ca459eaba1bf96a8c7878de84fa8872259a01e3.
    
    The blamed commit caused a regression when neither tun->owner nor
    tun->group is set. This is intended to be allowed, but now requires
    CAP_NET_ADMIN.
    
    Discussion in the referenced thread pointed out that the original
    issue that prompted this patch can be resolved in userspace.
    
    The relaxed access control may also make a device accessible when it
    previously wasn't, while existing users may depend on it to not be.
    
    This is a clean pure git revert, except for fixing the indentation on
    the gid_valid line that checkpatch correctly flagged.
    
    Fixes: 3ca459eaba1b ("tun: fix group permission check")
    Link: https://lore.kernel.org/netdev/CAFqZXNtkCBT4f+PwyVRmQGoT3p1eVa01fCG_aNtpt6dakXncUg@mail.gmail.com/
    Signed-off-by: Willem de Bruijn <[email protected]>
    Cc: Ondrej Mosnacek <[email protected]>
    Cc: Stas Sergeev <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ubifs: skip dumping tnc tree when zroot is null [+ + +]
Author: pangliyuan <[email protected]>
Date:   Tue Dec 24 16:18:23 2024 +0800

    ubifs: skip dumping tnc tree when zroot is null
    
    [ Upstream commit bdb0ca39e0acccf6771db49c3f94ed787d05f2d7 ]
    
    Clearing slab cache will free all znode in memory and make
    c->zroot.znode = NULL, then dumping tnc tree will access
    c->zroot.znode which cause null pointer dereference.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=219624#c0
    Fixes: 1e51764a3c2a ("UBIFS: add new flash file system")
    Signed-off-by: pangliyuan <[email protected]>
    Reviewed-by: Zhihao Cheng <[email protected]>
    Signed-off-by: Richard Weinberger <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
udp: gso: do not drop small packets when PMTU reduces [+ + +]
Author: Yan Zhai <[email protected]>
Date:   Fri Jan 31 00:31:39 2025 -0800

    udp: gso: do not drop small packets when PMTU reduces
    
    [ Upstream commit 235174b2bed88501fda689c113c55737f99332d8 ]
    
    Commit 4094871db1d6 ("udp: only do GSO if # of segs > 1") avoided GSO
    for small packets. But the kernel currently dismisses GSO requests only
    after checking MTU/PMTU on gso_size. This means any packets, regardless
    of their payload sizes, could be dropped when PMTU becomes smaller than
    requested gso_size. We encountered this issue in production and it
    caused a reliability problem that new QUIC connection cannot be
    established before PMTU cache expired, while non GSO sockets still
    worked fine at the same time.
    
    Ideally, do not check any GSO related constraints when payload size is
    smaller than requested gso_size, and return EMSGSIZE instead of EINVAL
    on MTU/PMTU check failure to be more specific on the error cause.
    
    Fixes: 4094871db1d6 ("udp: only do GSO if # of segs > 1")
    Signed-off-by: Yan Zhai <[email protected]>
    Suggested-by: Willem de Bruijn <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
USB: Add USB_QUIRK_NO_LPM quirk for sony xperia xz1 smartphone [+ + +]
Author: Mathias Nyman <[email protected]>
Date:   Thu Feb 6 17:18:36 2025 +0200

    USB: Add USB_QUIRK_NO_LPM quirk for sony xperia xz1 smartphone
    
    commit 159daf1258227f44b26b5d38f4aa8f37b8cca663 upstream.
    
    The fastboot tool for communicating with Android bootloaders does not
    work reliably with this device if USB 2 Link Power Management (LPM)
    is enabled.
    
    Various fastboot commands are affected, including the
    following, which usually reproduces the problem within two tries:
    
      fastboot getvar kernel
      getvar:kernel  FAILED (remote: 'GetVar Variable Not found')
    
    This issue was hidden on many systems up until commit 63a1f8454962
    ("xhci: stored cached port capability values in one place") as the xhci
    driver failed to detect USB 2 LPM support if USB 3 ports were listed
    before USB 2 ports in the "supported protocol capabilities".
    
    Adding the quirk resolves the issue. No drawbacks are expected since
    the device uses different USB product IDs outside of fastboot mode, and
    since fastboot commands worked before, until LPM was enabled on the
    tested system by the aforementioned commit.
    
    Based on a patch from Forest <[email protected]> from which most of the
    code and commit message is taken.
    
    Cc: stable <[email protected]>
    Reported-by: Forest <[email protected]>
    Closes: https://lore.kernel.org/[email protected]
    Tested-by: Forest <[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]>

 
usb: cdc-acm: Check control transfer buffer size before access [+ + +]
Author: Jann Horn <[email protected]>
Date:   Wed Feb 12 19:15:15 2025 +0100

    usb: cdc-acm: Check control transfer buffer size before access
    
    commit e563b01208f4d1f609bcab13333b6c0e24ce6a01 upstream.
    
    If the first fragment is shorter than struct usb_cdc_notification, we can't
    calculate an expected_size. Log an error and discard the notification
    instead of reading lengths from memory outside the received data, which can
    lead to memory corruption when the expected_size decreases between
    fragments, causing `expected_size - acm->nb_index` to wrap.
    
    This issue has been present since the beginning of git history; however,
    it only leads to memory corruption since commit ea2583529cd1
    ("cdc-acm: reassemble fragmented notifications").
    
    A mitigating factor is that acm_ctrl_irq() can only execute after userspace
    has opened /dev/ttyACM*; but if ModemManager is running, ModemManager will
    do that automatically depending on the USB device's vendor/product IDs and
    its other interfaces.
    
    Cc: stable <[email protected]>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Jann Horn <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
USB: cdc-acm: Fill in Renesas R-Car D3 USB Download mode quirk [+ + +]
Author: Marek Vasut <[email protected]>
Date:   Sun Feb 9 15:56:11 2025 +0100

    USB: cdc-acm: Fill in Renesas R-Car D3 USB Download mode quirk
    
    commit 7284922f3e4fa285dff1b8bb593aa9a0b8458f30 upstream.
    
    Add Renesas R-Car D3 USB Download mode quirk and update comments
    on all the other Renesas R-Car USB Download mode quirks to discern
    them from each other. This follows R-Car Series, 3rd Generation
    reference manual Rev.2.00 chapter 19.2.8 USB download mode .
    
    Fixes: 6d853c9e4104 ("usb: cdc-acm: Add DISABLE_ECHO for Renesas USB Download mode")
    Cc: stable <[email protected]>
    Signed-off-by: Marek Vasut <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
usb: cdc-acm: Fix handling of oversized fragments [+ + +]
Author: Jann Horn <[email protected]>
Date:   Wed Feb 12 19:15:16 2025 +0100

    usb: cdc-acm: Fix handling of oversized fragments
    
    commit 12e712964f41d05ae034989892de445781c46730 upstream.
    
    If we receive an initial fragment of size 8 bytes which specifies a wLength
    of 1 byte (so the reassembled message is supposed to be 9 bytes long), and
    we then receive a second fragment of size 9 bytes (which is not supposed to
    happen), we currently wrongly bypass the fragment reassembly code but still
    pass the pointer to the acm->notification_buffer to
    acm_process_notification().
    
    Make this less wrong by always going through fragment reassembly when we
    expect more fragments.
    
    Before this patch, receiving an overlong fragment could lead to `newctrl`
    in acm_process_notification() being uninitialized data (instead of data
    coming from the device).
    
    Cc: stable <[email protected]>
    Fixes: ea2583529cd1 ("cdc-acm: reassemble fragmented notifications")
    Signed-off-by: Jann Horn <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: chipidea/ci_hdrc_imx: Convert to platform remove callback returning void [+ + +]
Author: Uwe Kleine-König <[email protected]>
Date:   Thu May 18 01:01:07 2023 +0200

    usb: chipidea/ci_hdrc_imx: Convert to platform remove callback returning void
    
    [ Upstream commit ad593ed671feb49e93a77653886c042f68b6cdfd ]
    
    The .remove() callback for a platform driver returns an int which makes
    many driver authors wrongly assume it's possible to do error handling by
    returning an error code. However the value returned is ignored (apart from
    emitting a warning) and this typically results in resource leaks. To improve
    here there is a quest to make the remove callback return void. In the first
    step of this quest all drivers are converted to .remove_new() which already
    returns void. Eventually after all drivers are converted, .remove_new() is
    renamed to .remove().
    
    Trivially convert this driver from always returning zero in the remove
    callback to the void returning variant.
    
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 74adad500346 ("usb: chipidea: ci_hdrc_imx: decrement device's refcount in .remove() and in the error path of .probe()")
    Signed-off-by: Sasha Levin <[email protected]>

usb: chipidea: ci_hdrc_imx: decrement device's refcount in .remove() and in the error path of .probe() [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Mon Dec 16 10:55:39 2024 +0900

    usb: chipidea: ci_hdrc_imx: decrement device's refcount in .remove() and in the error path of .probe()
    
    [ Upstream commit 74adad500346fb07d69af2c79acbff4adb061134 ]
    
    Current implementation of ci_hdrc_imx_driver does not decrement the
    refcount of the device obtained in usbmisc_get_init_data(). Add a
    put_device() call in .remove() and in .probe() before returning an
    error.
    
    This bug was found by an experimental static analysis tool that I am
    developing.
    
    Cc: stable <[email protected]>
    Fixes: f40017e0f332 ("chipidea: usbmisc_imx: Add USB support for VF610 SoCs")
    Signed-off-by: Joe Hattori <[email protected]>
    Acked-by: Peter Chen <[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: core: fix pipe creation for get_bMaxPacketSize0 [+ + +]
Author: Stefan Eichenberger <[email protected]>
Date:   Mon Feb 3 11:58:24 2025 +0100

    usb: core: fix pipe creation for get_bMaxPacketSize0
    
    commit 4aac0db5a0ebc599d4ad9bf5ebab78afa1f33e10 upstream.
    
    When usb_control_msg is used in the get_bMaxPacketSize0 function, the
    USB pipe does not include the endpoint device number. This can cause
    failures when a usb hub port is reinitialized after encountering a bad
    cable connection. As a result, the system logs the following error
    messages:
    usb usb2-port1: cannot reset (err = -32)
    usb usb2-port1: Cannot enable. Maybe the USB cable is bad?
    usb usb2-port1: attempt power cycle
    usb 2-1: new high-speed USB device number 5 using ci_hdrc
    usb 2-1: device descriptor read/8, error -71
    
    The problem began after commit 85d07c556216 ("USB: core: Unite old
    scheme and new scheme descriptor reads"). There
    usb_get_device_descriptor was replaced with get_bMaxPacketSize0. Unlike
    usb_get_device_descriptor, the get_bMaxPacketSize0 function uses the
    macro usb_rcvaddr0pipe, which does not include the endpoint device
    number. usb_get_device_descriptor, on the other hand, used the macro
    usb_rcvctrlpipe, which includes the endpoint device number.
    
    By modifying the get_bMaxPacketSize0 function to use usb_rcvctrlpipe
    instead of usb_rcvaddr0pipe, the issue can be resolved. This change will
    ensure that the endpoint device number is included in the USB pipe,
    preventing reinitialization failures. If the endpoint has not set the
    device number yet, it will still work because the device number is 0 in
    udev.
    
    Cc: stable <[email protected]>
    Fixes: 85d07c556216 ("USB: core: Unite old scheme and new scheme descriptor reads")
    Signed-off-by: Stefan Eichenberger <[email protected]>
    Reviewed-by: Alan Stern <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: dwc2: gadget: remove of_node reference upon udc_stop [+ + +]
Author: Fabrice Gasnier <[email protected]>
Date:   Fri Jan 24 18:33:25 2025 +0100

    usb: dwc2: gadget: remove of_node reference upon udc_stop
    
    commit 58cd423820d5b5610977e55e4acdd06628829ede upstream.
    
    In dwc2_hsotg_udc_start(), e.g. when binding composite driver, "of_node"
    is set to hsotg->dev->of_node.
    
    It causes errors when binding the gadget driver several times, on
    stm32mp157c-ev1 board. Below error is seen:
    "pin PA10 already requested by 49000000.usb-otg; cannot claim for gadget.0"
    
    The first time, no issue is seen as when registering the driver, of_node
    isn't NULL:
    -> gadget_dev_desc_UDC_store
      -> usb_gadget_register_driver_owner
        -> driver_register
        ...
          -> really_probe -> pinctrl_bind_pins (no effect)
    
    Then dwc2_hsotg_udc_start() sets of_node.
    
    The second time (stop the gadget, reconfigure it, then start it again),
    of_node has been set, so the probing code tries to acquire pins for the
    gadget. These pins are hold by the controller, hence the error.
    
    So clear gadget.dev.of_node in udc_stop() routine to avoid the issue.
    
    Fixes: 7d7b22928b90 ("usb: gadget: s3c-hsotg: Propagate devicetree to gadget drivers")
    Cc: stable <[email protected]>
    Signed-off-by: Fabrice Gasnier <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: dwc3-am62: Fix an OF node leak in phy_syscon_pll_refclk() [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Thu Jan 9 09:16:38 2025 +0900

    usb: dwc3-am62: Fix an OF node leak in phy_syscon_pll_refclk()
    
    commit a266462b937beba065e934a563efe13dd246a164 upstream.
    
    phy_syscon_pll_refclk() leaks an OF node obtained by
    of_parse_phandle_with_fixed_args(), thus add an of_node_put() call.
    
    Cc: stable <[email protected]>
    Fixes: e8784c0aec03 ("drivers: usb: dwc3: Add AM62 USB wrapper driver")
    Signed-off-by: Joe Hattori <[email protected]>
    Acked-by: Thinh Nguyen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: dwc3: core: Defer the probe until USB power supply ready [+ + +]
Author: Kyle Tso <[email protected]>
Date:   Wed Jan 15 12:45:48 2025 +0800

    usb: dwc3: core: Defer the probe until USB power supply ready
    
    commit 66e0ea341a2a78d14336117f19763bd9be26d45d upstream.
    
    Currently, DWC3 driver attempts to acquire the USB power supply only
    once during the probe. If the USB power supply is not ready at that
    time, the driver simply ignores the failure and continues the probe,
    leading to permanent non-functioning of the gadget vbus_draw callback.
    
    Address this problem by delaying the dwc3 driver initialization until
    the USB power supply is registered.
    
    Fixes: 6f0764b5adea ("usb: dwc3: add a power supply for current control")
    Cc: stable <[email protected]>
    Signed-off-by: Kyle Tso <[email protected]>
    Acked-by: Thinh Nguyen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: dwc3: Fix timeout issue during controller enter/exit from halt state [+ + +]
Author: Selvarasu Ganesan <[email protected]>
Date:   Sat Feb 1 22:09:02 2025 +0530

    usb: dwc3: Fix timeout issue during controller enter/exit from halt state
    
    commit d3a8c28426fc1fb3252753a9f1db0d691ffc21b0 upstream.
    
    There is a frequent timeout during controller enter/exit from halt state
    after toggling the run_stop bit by SW. This timeout occurs when
    performing frequent role switches between host and device, causing
    device enumeration issues due to the timeout. This issue was not present
    when USB2 suspend PHY was disabled by passing the SNPS quirks
    (snps,dis_u2_susphy_quirk and snps,dis_enblslpm_quirk) from the DTS.
    However, there is a requirement to enable USB2 suspend PHY by setting of
    GUSB2PHYCFG.ENBLSLPM and GUSB2PHYCFG.SUSPHY bits when controller starts
    in gadget or host mode results in the timeout issue.
    
    This commit addresses this timeout issue by ensuring that the bits
    GUSB2PHYCFG.ENBLSLPM and GUSB2PHYCFG.SUSPHY are cleared before starting
    the dwc3_gadget_run_stop sequence and restoring them after the
    dwc3_gadget_run_stop sequence is completed.
    
    Fixes: 72246da40f37 ("usb: Introduce DesignWare USB3 DRD Driver")
    Cc: stable <[email protected]>
    Signed-off-by: Selvarasu Ganesan <[email protected]>
    Acked-by: Thinh Nguyen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: gadget: f_midi: fix MIDI Streaming descriptor lengths [+ + +]
Author: John Keeping <[email protected]>
Date:   Thu Jan 30 19:50:34 2025 +0000

    usb: gadget: f_midi: fix MIDI Streaming descriptor lengths
    
    commit da1668997052ed1cb00322e1f3b63702615c9429 upstream.
    
    While the MIDI jacks are configured correctly, and the MIDIStreaming
    endpoint descriptors are filled with the correct information,
    bNumEmbMIDIJack and bLength are set incorrectly in these descriptors.
    
    This does not matter when the numbers of in and out ports are equal, but
    when they differ the host will receive broken descriptors with
    uninitialized stack memory leaking into the descriptor for whichever
    value is smaller.
    
    The precise meaning of "in" and "out" in the port counts is not clearly
    defined and can be confusing.  But elsewhere the driver consistently
    uses this to match the USB meaning of IN and OUT viewed from the host,
    so that "in" ports send data to the host and "out" ports receive data
    from it.
    
    Cc: stable <[email protected]>
    Fixes: c8933c3f79568 ("USB: gadget: f_midi: allow a dynamic number of input and output ports")
    Signed-off-by: John Keeping <[email protected]>
    Reviewed-by: Takashi Iwai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: gadget: f_tcm: Decrement command ref count on cleanup [+ + +]
Author: Thinh Nguyen <[email protected]>
Date:   Wed Dec 11 00:31:48 2024 +0000

    usb: gadget: f_tcm: Decrement command ref count on cleanup
    
    commit 3b2a52e88ab0c9469eaadd4d4c8f57d072477820 upstream.
    
    We submitted the command with TARGET_SCF_ACK_KREF, which requires
    acknowledgment of command completion. If the command fails, make sure to
    decrement the ref count.
    
    Fixes: cff834c16d23 ("usb-gadget/tcm: Convert to TARGET_SCF_ACK_KREF I/O krefs")
    Cc: [email protected]
    Signed-off-by: Thinh Nguyen <[email protected]>
    Link: https://lore.kernel.org/r/3c667b4d9c8b0b580346a69ff53616b6a74cfea2.1733876548.git.Thinh.Nguyen@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: gadget: f_tcm: Don't free command immediately [+ + +]
Author: Thinh Nguyen <[email protected]>
Date:   Wed Dec 11 00:31:36 2024 +0000

    usb: gadget: f_tcm: Don't free command immediately
    
    commit c225d006a31949d673e646d585d9569bc28feeb9 upstream.
    
    Don't prematurely free the command. Wait for the status completion of
    the sense status. It can be freed then. Otherwise we will double-free
    the command.
    
    Fixes: cff834c16d23 ("usb-gadget/tcm: Convert to TARGET_SCF_ACK_KREF I/O krefs")
    Cc: [email protected]
    Signed-off-by: Thinh Nguyen <[email protected]>
    Link: https://lore.kernel.org/r/ae919ac431f16275e05ec819bdffb3ac5f44cbe1.1733876548.git.Thinh.Nguyen@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: gadget: f_tcm: Don't prepare BOT write request twice [+ + +]
Author: Thinh Nguyen <[email protected]>
Date:   Wed Dec 11 00:32:07 2024 +0000

    usb: gadget: f_tcm: Don't prepare BOT write request twice
    
    commit 94d9bf671ae314cacc2d7bf96bd233b4abc7cede upstream.
    
    The duplicate kmalloc here is causing memory leak. The request
    preparation in bot_send_write_request is also done in
    usbg_prepare_w_request. Remove the duplicate work.
    
    Fixes: c52661d60f63 ("usb-gadget: Initial merge of target module for UASP + BOT")
    Cc: [email protected]
    Signed-off-by: Thinh Nguyen <[email protected]>
    Link: https://lore.kernel.org/r/f4f26c3d586cde0d46f8c3bcb4e8ae32311b650d.1733876548.git.Thinh.Nguyen@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: gadget: f_tcm: ep_autoconfig with fullspeed endpoint [+ + +]
Author: Thinh Nguyen <[email protected]>
Date:   Wed Dec 11 00:32:01 2024 +0000

    usb: gadget: f_tcm: ep_autoconfig with fullspeed endpoint
    
    commit 25224c1f07d31c261d04dfbc705a7a0f314a825d upstream.
    
    Match usb endpoint using fullspeed endpoint descriptor to make sure the
    wMaxPacketSize for fullspeed descriptors is automatically configured.
    
    Fixes: c52661d60f63 ("usb-gadget: Initial merge of target module for UASP + BOT")
    Cc: [email protected]
    Signed-off-by: Thinh Nguyen <[email protected]>
    Link: https://lore.kernel.org/r/e4507bc824aed6e7c7f5a718392ab6a7c1480a7f.1733876548.git.Thinh.Nguyen@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: gadget: f_tcm: Fix Get/SetInterface return value [+ + +]
Author: Thinh Nguyen <[email protected]>
Date:   Wed Dec 11 00:31:55 2024 +0000

    usb: gadget: f_tcm: Fix Get/SetInterface return value
    
    commit 3b997089903b909684114aca6f79d683e5c64a0e upstream.
    
    Check to make sure that the GetInterface and SetInterface are for valid
    interface. Return proper alternate setting number on GetInterface.
    
    Fixes: 0b8b1a1fede0 ("usb: gadget: f_tcm: Provide support to get alternate setting in tcm function")
    Cc: [email protected]
    Signed-off-by: Thinh Nguyen <[email protected]>
    Link: https://lore.kernel.org/r/ffd91b4640945ea4d3b4f4091cf1abbdbd9cf4fc.1733876548.git.Thinh.Nguyen@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: gadget: f_tcm: Translate error to sense [+ + +]
Author: Thinh Nguyen <[email protected]>
Date:   Wed Dec 11 00:31:43 2024 +0000

    usb: gadget: f_tcm: Translate error to sense
    
    commit 98fa00fd3ae43b857b4976984a135483d89d9281 upstream.
    
    When respond with check_condition error status, clear from_transport
    input so the target layer can translate the sense reason reported by
    f_tcm.
    
    Fixes: c52661d60f63 ("usb-gadget: Initial merge of target module for UASP + BOT")
    Cc: [email protected]
    Signed-off-by: Thinh Nguyen <[email protected]>
    Link: https://lore.kernel.org/r/b2a5577efe7abd0af0051229622cf7d3be5cdcd0.1733876548.git.Thinh.Nguyen@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: gadget: udc: renesas_usb3: Fix compiler warning [+ + +]
Author: Guo Ren <[email protected]>
Date:   Wed Jan 22 03:12:31 2025 -0500

    usb: gadget: udc: renesas_usb3: Fix compiler warning
    
    commit 335a1fc1193481f8027f176649c72868172f6f8b upstream.
    
    drivers/usb/gadget/udc/renesas_usb3.c: In function 'renesas_usb3_probe':
    drivers/usb/gadget/udc/renesas_usb3.c:2638:73: warning: '%d'
    directive output may be truncated writing between 1 and 11 bytes into a
    region of size 6 [-Wformat-truncation=]
    2638 |   snprintf(usb3_ep->ep_name, sizeof(usb3_ep->ep_name), "ep%d", i);
                                        ^~~~~~~~~~~~~~~~~~~~~~~~     ^~   ^
    
    Fixes: 746bfe63bba3 ("usb: gadget: renesas_usb3: add support for Renesas USB3.0 peripheral controller")
    Cc: [email protected]
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Guo Ren <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
USB: hub: Ignore non-compliant devices with too many configs or interfaces [+ + +]
Author: Alan Stern <[email protected]>
Date:   Wed Jan 22 14:26:17 2025 -0500

    USB: hub: Ignore non-compliant devices with too many configs or interfaces
    
    commit 2240fed37afbcdb5e8b627bc7ad986891100e05d upstream.
    
    Robert Morris created a test program which can cause
    usb_hub_to_struct_hub() to dereference a NULL or inappropriate
    pointer:
    
    Oops: general protection fault, probably for non-canonical address
    0xcccccccccccccccc: 0000 [#1] SMP DEBUG_PAGEALLOC PTI
    CPU: 7 UID: 0 PID: 117 Comm: kworker/7:1 Not tainted 6.13.0-rc3-00017-gf44d154d6e3d #14
    Hardware name: FreeBSD BHYVE/BHYVE, BIOS 14.0 10/17/2021
    Workqueue: usb_hub_wq hub_event
    RIP: 0010:usb_hub_adjust_deviceremovable+0x78/0x110
    ...
    Call Trace:
     <TASK>
     ? die_addr+0x31/0x80
     ? exc_general_protection+0x1b4/0x3c0
     ? asm_exc_general_protection+0x26/0x30
     ? usb_hub_adjust_deviceremovable+0x78/0x110
     hub_probe+0x7c7/0xab0
     usb_probe_interface+0x14b/0x350
     really_probe+0xd0/0x2d0
     ? __pfx___device_attach_driver+0x10/0x10
     __driver_probe_device+0x6e/0x110
     driver_probe_device+0x1a/0x90
     __device_attach_driver+0x7e/0xc0
     bus_for_each_drv+0x7f/0xd0
     __device_attach+0xaa/0x1a0
     bus_probe_device+0x8b/0xa0
     device_add+0x62e/0x810
     usb_set_configuration+0x65d/0x990
     usb_generic_driver_probe+0x4b/0x70
     usb_probe_device+0x36/0xd0
    
    The cause of this error is that the device has two interfaces, and the
    hub driver binds to interface 1 instead of interface 0, which is where
    usb_hub_to_struct_hub() looks.
    
    We can prevent the problem from occurring by refusing to accept hub
    devices that violate the USB spec by having more than one
    configuration or interface.
    
    Reported-and-tested-by: Robert Morris <[email protected]>
    Cc: stable <[email protected]>
    Closes: https://lore.kernel.org/linux-usb/95564.1737394039@localhost/
    Signed-off-by: Alan Stern <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

USB: pci-quirks: Fix HCCPARAMS register error for LS7A EHCI [+ + +]
Author: Huacai Chen <[email protected]>
Date:   Sun Feb 2 20:49:35 2025 +0800

    USB: pci-quirks: Fix HCCPARAMS register error for LS7A EHCI
    
    commit e71f7f42e3c874ac3314b8f250e8416a706165af upstream.
    
    LS7A EHCI controller doesn't have extended capabilities, so the EECP
    (EHCI Extended Capabilities Pointer) field of HCCPARAMS register should
    be 0x0, but it reads as 0xa0 now. This is a hardware flaw and will be
    fixed in future, now just clear the EECP field to avoid error messages
    on boot:
    
    ......
    [    0.581675] pci 0000:00:04.1: EHCI: unrecognized capability ff
    [    0.581699] pci 0000:00:04.1: EHCI: unrecognized capability ff
    [    0.581716] pci 0000:00:04.1: EHCI: unrecognized capability ff
    [    0.581851] pci 0000:00:04.1: EHCI: unrecognized capability ff
    ......
    [    0.581916] pci 0000:00:05.1: EHCI: unrecognized capability ff
    [    0.581951] pci 0000:00:05.1: EHCI: unrecognized capability ff
    [    0.582704] pci 0000:00:05.1: EHCI: unrecognized capability ff
    [    0.582799] pci 0000:00:05.1: EHCI: unrecognized capability ff
    ......
    
    Cc: stable <[email protected]>
    Signed-off-by: Baoqi Zhang <[email protected]>
    Signed-off-by: Huacai Chen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

USB: quirks: add USB_QUIRK_NO_LPM quirk for Teclast dist [+ + +]
Author: Lei Huang <[email protected]>
Date:   Wed Feb 12 17:38:29 2025 +0800

    USB: quirks: add USB_QUIRK_NO_LPM quirk for Teclast dist
    
    commit e169d96eecd447ff7fd7542ca5fa0911f5622054 upstream.
    
    Teclast disk used on Huawei hisi platforms doesn't work well,
    losing connectivity intermittently if LPM is enabled.
    Add quirk disable LPM to resolve the issue.
    
    Signed-off-by: Lei Huang <[email protected]>
    Cc: stable <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
usb: roles: set switch registered flag early on [+ + +]
Author: Elson Roy Serrao <[email protected]>
Date:   Thu Feb 6 11:39:50 2025 -0800

    usb: roles: set switch registered flag early on
    
    commit 634775a752a86784511018a108f3b530cc3399a7 upstream.
    
    The role switch registration and set_role() can happen in parallel as they
    are invoked independent of each other. There is a possibility that a driver
    might spend significant amount of time in usb_role_switch_register() API
    due to the presence of time intensive operations like component_add()
    which operate under common mutex. This leads to a time window after
    allocating the switch and before setting the registered flag where the set
    role notifications are dropped. Below timeline summarizes this behavior
    
    Thread1                         |       Thread2
    usb_role_switch_register()      |
            |                       |
            ---> allocate switch    |
            |                       |
            ---> component_add()    |       usb_role_switch_set_role()
            |                       |       |
            |                       |       --> Drop role notifications
            |                       |           since sw->registered
            |                       |           flag is not set.
            |                       |
            --->Set registered flag.|
    
    To avoid this, set the registered flag early on in the switch register
    API.
    
    Fixes: b787a3e78175 ("usb: roles: don't get/set_role() when usb_role_switch is unregistered")
    Cc: stable <[email protected]>
    Signed-off-by: Elson Roy Serrao <[email protected]>
    Reviewed-by: Heikki Krogerus <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
USB: serial: option: add MeiG Smart SLM828 [+ + +]
Author: Chester A. Unal <[email protected]>
Date:   Fri Jan 24 10:28:00 2025 +0000

    USB: serial: option: add MeiG Smart SLM828
    
    commit db79e75460fc59b19f9c89d4b068e61cee59f37d upstream.
    
    MeiG Smart SLM828 is an LTE-A CAT6 modem with the mPCIe form factor. The
    "Cls=ff(vend.) Sub=10 Prot=02" and "Cls=ff(vend.) Sub=10 Prot=03"
    interfaces respond to AT commands. Add these interfaces.
    
    The product ID the modem uses is shared across multiple modems. Therefore,
    add comments to describe which interface is used for which modem.
    
    T:  Bus=01 Lev=01 Prnt=05 Port=01 Cnt=01 Dev#=  6 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2dee ProdID=4d22 Rev=05.04
    S:  Manufacturer=MEIG
    S:  Product=LTE-A Module
    S:  SerialNumber=4da7ec42
    C:  #Ifs= 6 Cfg#= 1 Atr=80 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=10 Prot=01 Driver=(none)
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=10 Prot=02 Driver=(none)
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=10 Prot=03 Driver=(none)
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=10 Prot=04 Driver=(none)
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 4 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E:  Ad=88(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
    I:  If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=10 Prot=05 Driver=qmi_wwan
    E:  Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=89(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Chester A. Unal <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Cc: [email protected]
    Signed-off-by: Johan Hovold <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

USB: serial: option: add Telit Cinterion FN990B compositions [+ + +]
Author: Fabio Porcedda <[email protected]>
Date:   Wed Feb 5 18:16:45 2025 +0100

    USB: serial: option: add Telit Cinterion FN990B compositions
    
    commit c979fb5ece2dc11cc9cc3d5c66f750e210bfdee2 upstream.
    
    Add the following Telit Cinterion FN990B40 compositions:
    
    0x10d0: rmnet + tty (AT/NMEA) + tty (AT) + tty (AT) + tty (AT) +
            tty (diag) + DPL + QDSS (Qualcomm Debug SubSystem) + adb
    T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 17 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=10d0 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN990
    S:  SerialNumber=43b38f19
    C:  #Ifs= 9 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=88(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8a(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8b(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 6 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=80 Driver=(none)
    E:  Ad=8c(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 7 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=70 Driver=(none)
    E:  Ad=8d(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
    E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x10d1: MBIM + tty (AT/NMEA) + tty (AT) + tty (AT) + tty (AT) +
            tty (diag) + DPL + QDSS (Qualcomm Debug SubSystem) + adb
    T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 16 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=10d1 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN990
    S:  SerialNumber=43b38f19
    C:  #Ifs=10 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
    E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=88(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8a(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8b(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 7 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=80 Driver=(none)
    E:  Ad=8c(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 8 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=70 Driver=(none)
    E:  Ad=8d(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 9 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
    E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x10d2: RNDIS + tty (AT/NMEA) + tty (AT) + tty (AT) + tty (AT) +
            tty (diag) + DPL + QDSS (Qualcomm Debug SubSystem) + adb
    T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 18 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=10d2 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN990
    S:  SerialNumber=43b38f19
    C:  #Ifs=10 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=rndis_host
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=88(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8a(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8b(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 7 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=80 Driver=(none)
    E:  Ad=8c(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 8 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=70 Driver=(none)
    E:  Ad=8d(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 9 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
    E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x10d3: ECM + tty (AT/NMEA) + tty (AT) + tty (AT) + tty (AT) +
            tty (diag) + DPL + QDSS (Qualcomm Debug SubSystem) + adb
    T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 20 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=10d3 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN990
    S:  SerialNumber=43b38f19
    C:  #Ifs=10 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
    E:  Ad=82(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=88(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8a(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8b(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 7 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=80 Driver=(none)
    E:  Ad=8c(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 8 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=70 Driver=(none)
    E:  Ad=8d(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 9 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
    E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Cc: [email protected]
    Signed-off-by: Fabio Porcedda <[email protected]>
    Reviewed-by: Daniele Palmas <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

USB: serial: option: drop MeiG Smart defines [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Tue Feb 11 15:45:16 2025 +0100

    USB: serial: option: drop MeiG Smart defines
    
    commit 6aa8a63c471eb6756aabd03f880feffe6a7af6c9 upstream.
    
    Several MeiG Smart modems apparently use the same product id, making the
    defines even less useful.
    
    Drop them in favour of using comments consistently to make the id table
    slightly less unwieldy.
    
    Cc: [email protected]
    Acked-by: Chester A. Unal <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

USB: serial: option: fix Telit Cinterion FN990A name [+ + +]
Author: Fabio Porcedda <[email protected]>
Date:   Wed Feb 5 18:16:47 2025 +0100

    USB: serial: option: fix Telit Cinterion FN990A name
    
    commit 12606fe73f33647c5e79bf666833bf0b225e649d upstream.
    
    The correct name for FN990 is FN990A so use it in order to avoid
    confusion with FN990B.
    
    Signed-off-by: Fabio Porcedda <[email protected]>
    Cc: [email protected]
    Signed-off-by: Johan Hovold <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
usb: typec: tcpci: Prevent Sink disconnection before vPpsShutdown in SPR PPS [+ + +]
Author: Kyle Tso <[email protected]>
Date:   Tue Jan 14 22:24:35 2025 +0800

    usb: typec: tcpci: Prevent Sink disconnection before vPpsShutdown in SPR PPS
    
    commit 4d27afbf256028a1f54363367f30efc8854433c3 upstream.
    
    The Source can drop its output voltage to the minimum of the requested
    PPS APDO voltage range when it is in Current Limit Mode. If this voltage
    falls within the range of vPpsShutdown, the Source initiates a Hard
    Reset and discharges Vbus. However, currently the Sink may disconnect
    before the voltage reaches vPpsShutdown, leading to unexpected behavior.
    
    Prevent premature disconnection by setting the Sink's disconnect
    threshold to the minimum vPpsShutdown value. Additionally, consider the
    voltage drop due to IR drop when calculating the appropriate threshold.
    This ensures a robust and reliable interaction between the Source and
    Sink during SPR PPS Current Limit Mode operation.
    
    Fixes: 4288debeaa4e ("usb: typec: tcpci: Fix up sink disconnect thresholds for PD")
    Cc: stable <[email protected]>
    Signed-off-by: Kyle Tso <[email protected]>
    Reviewed-by: Heikki Krogerus <[email protected]>
    Reviewed-by: Badhri Jagan Sridharan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: typec: tcpm: set SRC_SEND_CAPABILITIES timeout to PD_T_SENDER_RESPONSE [+ + +]
Author: Jos Wang <[email protected]>
Date:   Sun Jan 5 21:52:45 2025 +0800

    usb: typec: tcpm: set SRC_SEND_CAPABILITIES timeout to PD_T_SENDER_RESPONSE
    
    commit 2eb3da037c2c20fa30bc502bc092479b2a1aaae2 upstream.
    
    As PD2.0 spec ("8.3.3.2.3 PE_SRC_Send_Capabilities state"), after the
    Source receives the GoodCRC Message from the Sink in response to the
    Source_Capabilities message, it should start the SenderResponseTimer,
    after the timer times out, the state machine transitions to the
    HARD_RESET state.
    
    Fixes: f0690a25a140 ("staging: typec: USB Type-C Port Manager (tcpm)")
    Cc: [email protected]
    Signed-off-by: Jos Wang <[email protected]>
    Reviewed-by: Badhri Jagan Sridharan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: xhci: Fix NULL pointer dereference on certain command aborts [+ + +]
Author: Michal Pecio <[email protected]>
Date:   Fri Dec 27 14:01:40 2024 +0200

    usb: xhci: Fix NULL pointer dereference on certain command aborts
    
    commit 1e0a19912adb68a4b2b74fd77001c96cd83eb073 upstream.
    
    If a command is queued to the final usable TRB of a ring segment, the
    enqueue pointer is advanced to the subsequent link TRB and no further.
    If the command is later aborted, when the abort completion is handled
    the dequeue pointer is advanced to the first TRB of the next segment.
    
    If no further commands are queued, xhci_handle_stopped_cmd_ring() sees
    the ring pointers unequal and assumes that there is a pending command,
    so it calls xhci_mod_cmd_timer() which crashes if cur_cmd was NULL.
    
    Don't attempt timer setup if cur_cmd is NULL. The subsequent doorbell
    ring likely is unnecessary too, but it's harmless. Leave it alone.
    
    This is probably Bug 219532, but no confirmation has been received.
    
    The issue has been independently reproduced and confirmed fixed using
    a USB MCU programmed to NAK the Status stage of SET_ADDRESS forever.
    Everything continued working normally after several prevented crashes.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=219532
    Fixes: c311e391a7ef ("xhci: rework command timeout and cancellation,")
    CC: [email protected]
    Signed-off-by: Michal Pecio <[email protected]>
    Signed-off-by: Mathias Nyman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
vfio/pci: Enable iowrite64 and ioread64 for vfio pci [+ + +]
Author: Ramesh Thomas <[email protected]>
Date:   Tue Dec 10 05:19:37 2024 -0800

    vfio/pci: Enable iowrite64 and ioread64 for vfio pci
    
    [ Upstream commit 2b938e3db335e3670475e31a722c2bee34748c5a ]
    
    Definitions of ioread64 and iowrite64 macros in asm/io.h called by vfio
    pci implementations are enclosed inside check for CONFIG_GENERIC_IOMAP.
    They don't get defined if CONFIG_GENERIC_IOMAP is defined. Include
    linux/io-64-nonatomic-lo-hi.h to define iowrite64 and ioread64 macros
    when they are not defined. io-64-nonatomic-lo-hi.h maps the macros to
    generic implementation in lib/iomap.c. The generic implementation does
    64 bit rw if readq/writeq is defined for the architecture, otherwise it
    would do 32 bit back to back rw.
    
    Note that there are two versions of the generic implementation that
    differs in the order the 32 bit words are written if 64 bit support is
    not present. This is not the little/big endian ordering, which is
    handled separately. This patch uses the lo followed by hi word ordering
    which is consistent with current back to back implementation in the
    vfio/pci code.
    
    Signed-off-by: Ramesh Thomas <[email protected]>
    Reviewed-by: Jason Gunthorpe <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alex Williamson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vfio/platform: check the bounds of read/write syscalls [+ + +]
Author: Alex Williamson <[email protected]>
Date:   Wed Jan 22 10:38:30 2025 -0700

    vfio/platform: check the bounds of read/write syscalls
    
    commit ce9ff21ea89d191e477a02ad7eabf4f996b80a69 upstream.
    
    count and offset are passed from user space and not checked, only
    offset is capped to 40 bits, which can be used to read/write out of
    bounds of the device.
    
    Fixes: 6e3f26456009 (“vfio/platform: read and write support for the device fd”)
    Cc: [email protected]
    Reported-by: Mostafa Saleh <[email protected]>
    Reviewed-by: Eric Auger <[email protected]>
    Reviewed-by: Mostafa Saleh <[email protected]>
    Tested-by: Mostafa Saleh <[email protected]>
    Signed-off-by: Alex Williamson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
vrf: use RCU protection in l3mdev_l3_out() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Feb 7 13:58:38 2025 +0000

    vrf: use RCU protection in l3mdev_l3_out()
    
    [ Upstream commit 6d0ce46a93135d96b7fa075a94a88fe0da8e8773 ]
    
    l3mdev_l3_out() can be called without RCU being held:
    
    raw_sendmsg()
     ip_push_pending_frames()
      ip_send_skb()
       ip_local_out()
        __ip_local_out()
         l3mdev_ip_out()
    
    Add rcu_read_lock() / rcu_read_unlock() pair to avoid
    a potential UAF.
    
    Fixes: a8e3e1a9f020 ("net: l3mdev: Add hook to output path")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vxlan: check vxlan_vnigroup_init() return value [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Mon Feb 10 10:52:42 2025 +0000

    vxlan: check vxlan_vnigroup_init() return value
    
    [ Upstream commit 5805402dcc56241987bca674a1b4da79a249bab7 ]
    
    vxlan_init() must check vxlan_vnigroup_init() success
    otherwise a crash happens later, spotted by syzbot.
    
    Oops: general protection fault, probably for non-canonical address 0xdffffc000000002c: 0000 [#1] PREEMPT SMP KASAN NOPTI
    KASAN: null-ptr-deref in range [0x0000000000000160-0x0000000000000167]
    CPU: 0 UID: 0 PID: 7313 Comm: syz-executor147 Not tainted 6.14.0-rc1-syzkaller-00276-g69b54314c975 #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
     RIP: 0010:vxlan_vnigroup_uninit+0x89/0x500 drivers/net/vxlan/vxlan_vnifilter.c:912
    Code: 00 48 8b 44 24 08 4c 8b b0 98 41 00 00 49 8d 86 60 01 00 00 48 89 c2 48 89 44 24 10 48 b8 00 00 00 00 00 fc ff df 48 c1 ea 03 <80> 3c 02 00 0f 85 4d 04 00 00 49 8b 86 60 01 00 00 48 ba 00 00 00
    RSP: 0018:ffffc9000cc1eea8 EFLAGS: 00010202
    RAX: dffffc0000000000 RBX: 0000000000000001 RCX: ffffffff8672effb
    RDX: 000000000000002c RSI: ffffffff8672ecb9 RDI: ffff8880461b4f18
    RBP: ffff8880461b4ef4 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000020000
    R13: ffff8880461b0d80 R14: 0000000000000000 R15: dffffc0000000000
    FS:  00007fecfa95d6c0(0000) GS:ffff88806a600000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fecfa95cfb8 CR3: 000000004472c000 CR4: 0000000000352ef0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
      vxlan_uninit+0x1ab/0x200 drivers/net/vxlan/vxlan_core.c:2942
      unregister_netdevice_many_notify+0x12d6/0x1f30 net/core/dev.c:11824
      unregister_netdevice_many net/core/dev.c:11866 [inline]
      unregister_netdevice_queue+0x307/0x3f0 net/core/dev.c:11736
      register_netdevice+0x1829/0x1eb0 net/core/dev.c:10901
      __vxlan_dev_create+0x7c6/0xa30 drivers/net/vxlan/vxlan_core.c:3981
      vxlan_newlink+0xd1/0x130 drivers/net/vxlan/vxlan_core.c:4407
      rtnl_newlink_create net/core/rtnetlink.c:3795 [inline]
      __rtnl_newlink net/core/rtnetlink.c:3906 [inline]
    
    Fixes: f9c4bb0b245c ("vxlan: vni filtering support on collect metadata device")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Roopa Prabhu <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

vxlan: Fix uninit-value in vxlan_vnifilter_dump() [+ + +]
Author: Shigeru Yoshida <[email protected]>
Date:   Thu Jan 23 23:57:46 2025 +0900

    vxlan: Fix uninit-value in vxlan_vnifilter_dump()
    
    [ Upstream commit 5066293b9b7046a906eff60e3949a887ae185a43 ]
    
    KMSAN reported an uninit-value access in vxlan_vnifilter_dump() [1].
    
    If the length of the netlink message payload is less than
    sizeof(struct tunnel_msg), vxlan_vnifilter_dump() accesses bytes
    beyond the message. This can lead to uninit-value access. Fix this by
    returning an error in such situations.
    
    [1]
    BUG: KMSAN: uninit-value in vxlan_vnifilter_dump+0x328/0x920 drivers/net/vxlan/vxlan_vnifilter.c:422
     vxlan_vnifilter_dump+0x328/0x920 drivers/net/vxlan/vxlan_vnifilter.c:422
     rtnl_dumpit+0xd5/0x2f0 net/core/rtnetlink.c:6786
     netlink_dump+0x93e/0x15f0 net/netlink/af_netlink.c:2317
     __netlink_dump_start+0x716/0xd60 net/netlink/af_netlink.c:2432
     netlink_dump_start include/linux/netlink.h:340 [inline]
     rtnetlink_dump_start net/core/rtnetlink.c:6815 [inline]
     rtnetlink_rcv_msg+0x1256/0x14a0 net/core/rtnetlink.c:6882
     netlink_rcv_skb+0x467/0x660 net/netlink/af_netlink.c:2542
     rtnetlink_rcv+0x35/0x40 net/core/rtnetlink.c:6944
     netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
     netlink_unicast+0xed6/0x1290 net/netlink/af_netlink.c:1347
     netlink_sendmsg+0x1092/0x1230 net/netlink/af_netlink.c:1891
     sock_sendmsg_nosec net/socket.c:711 [inline]
     __sock_sendmsg+0x330/0x3d0 net/socket.c:726
     ____sys_sendmsg+0x7f4/0xb50 net/socket.c:2583
     ___sys_sendmsg+0x271/0x3b0 net/socket.c:2637
     __sys_sendmsg net/socket.c:2669 [inline]
     __do_sys_sendmsg net/socket.c:2674 [inline]
     __se_sys_sendmsg net/socket.c:2672 [inline]
     __x64_sys_sendmsg+0x211/0x3e0 net/socket.c:2672
     x64_sys_call+0x3878/0x3d90 arch/x86/include/generated/asm/syscalls_64.h:47
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xd9/0x1d0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Uninit was created at:
     slab_post_alloc_hook mm/slub.c:4110 [inline]
     slab_alloc_node mm/slub.c:4153 [inline]
     kmem_cache_alloc_node_noprof+0x800/0xe80 mm/slub.c:4205
     kmalloc_reserve+0x13b/0x4b0 net/core/skbuff.c:587
     __alloc_skb+0x347/0x7d0 net/core/skbuff.c:678
     alloc_skb include/linux/skbuff.h:1323 [inline]
     netlink_alloc_large_skb+0xa5/0x280 net/netlink/af_netlink.c:1196
     netlink_sendmsg+0xac9/0x1230 net/netlink/af_netlink.c:1866
     sock_sendmsg_nosec net/socket.c:711 [inline]
     __sock_sendmsg+0x330/0x3d0 net/socket.c:726
     ____sys_sendmsg+0x7f4/0xb50 net/socket.c:2583
     ___sys_sendmsg+0x271/0x3b0 net/socket.c:2637
     __sys_sendmsg net/socket.c:2669 [inline]
     __do_sys_sendmsg net/socket.c:2674 [inline]
     __se_sys_sendmsg net/socket.c:2672 [inline]
     __x64_sys_sendmsg+0x211/0x3e0 net/socket.c:2672
     x64_sys_call+0x3878/0x3d90 arch/x86/include/generated/asm/syscalls_64.h:47
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xd9/0x1d0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    CPU: 0 UID: 0 PID: 30991 Comm: syz.4.10630 Not tainted 6.12.0-10694-gc44daa7e3c73 #29
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
    
    Fixes: f9c4bb0b245c ("vxlan: vni filtering support on collect metadata device")
    Reported-by: syzkaller <[email protected]>
    Signed-off-by: Shigeru Yoshida <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
wifi: ath11k: Fix unexpected return buffer manager error for WCN6750/WCN6855 [+ + +]
Author: Balaji Pothunoori <[email protected]>
Date:   Wed Oct 30 17:16:25 2024 +0530

    wifi: ath11k: Fix unexpected return buffer manager error for WCN6750/WCN6855
    
    [ Upstream commit 78e154d42f2c72905fe66a400847e1b2b101b7b2 ]
    
    The following error messages were encountered while parsing fragmented RX
    packets for WCN6750/WCN6855:
    
    ath11k 17a10040.wifi: invalid return buffer manager 4
    
    This issue arose due to a hardcoded check for HAL_RX_BUF_RBM_SW3_BM
    introduced in 'commit 71c748b5e01e ("ath11k: Fix unexpected return buffer
    manager error for QCA6390")'
    
    For WCN6750 and WCN6855, the return buffer manager ID should be
    HAL_RX_BUF_RBM_SW1_BM. The incorrect conditional check caused fragmented
    packets to be dropped, resulting in the above error log.
    
    Fix this by adding a check for HAL_RX_BUF_RBM_SW1_BM.
    
    Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.2.0.c2-00258-QCAMSLSWPL-1
    Tested-on: WCN6855 hw2.1 WLAN.HSP.1.1-04479-QCAHSPSWPL_V1_V2_SILICONZ_IOE-1
    
    Fixes: 71c748b5e01e ("ath11k: Fix unexpected return buffer manager error for QCA6390")
    Signed-off-by: Balaji Pothunoori <[email protected]>
    Acked-by: Jeff Johnson <[email protected]>
    Acked-by: Kalle Valo <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: brcmfmac: Check the return value of of_property_read_string_index() [+ + +]
Author: Stefan Dösinger <[email protected]>
Date:   Mon Jan 6 20:09:58 2025 +0300

    wifi: brcmfmac: Check the return value of of_property_read_string_index()
    
    [ Upstream commit 082d9e263af8de68f0c34f67b251818205160f6e ]
    
    Somewhen between 6.10 and 6.11 the driver started to crash on my
    MacBookPro14,3. The property doesn't exist and 'tmp' remains
    uninitialized, so we pass a random pointer to devm_kstrdup().
    
    The crash I am getting looks like this:
    
    BUG: unable to handle page fault for address: 00007f033c669379
    PF: supervisor read access in kernel mode
    PF: error_code(0x0001) - permissions violation
    PGD 8000000101341067 P4D 8000000101341067 PUD 101340067 PMD 1013bb067 PTE 800000010aee9025
    Oops: Oops: 0001 [#1] SMP PTI
    CPU: 4 UID: 0 PID: 827 Comm: (udev-worker) Not tainted 6.11.8-gentoo #1
    Hardware name: Apple Inc. MacBookPro14,3/Mac-551B86E5744E2388, BIOS 529.140.2.0.0 06/23/2024
    RIP: 0010:strlen+0x4/0x30
    Code: f7 75 ec 31 c0 c3 cc cc cc cc 48 89 f8 c3 cc cc cc cc 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa <80> 3f 00 74 14 48 89 f8 48 83 c0 01 80 38 00 75 f7 48 29 f8 c3 cc
    RSP: 0018:ffffb4aac0683ad8 EFLAGS: 00010202
    RAX: 00000000ffffffea RBX: 00007f033c669379 RCX: 0000000000000001
    RDX: 0000000000000cc0 RSI: 00007f033c669379 RDI: 00007f033c669379
    RBP: 00000000ffffffea R08: 0000000000000000 R09: 00000000c0ba916a
    R10: ffffffffffffffff R11: ffffffffb61ea260 R12: ffff91f7815b50c8
    R13: 0000000000000cc0 R14: ffff91fafefffe30 R15: ffffb4aac0683b30
    FS:  00007f033ccbe8c0(0000) GS:ffff91faeed00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f033c669379 CR3: 0000000107b1e004 CR4: 00000000003706f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     ? __die+0x23/0x70
     ? page_fault_oops+0x149/0x4c0
     ? raw_spin_rq_lock_nested+0xe/0x20
     ? sched_balance_newidle+0x22b/0x3c0
     ? update_load_avg+0x78/0x770
     ? exc_page_fault+0x6f/0x150
     ? asm_exc_page_fault+0x26/0x30
     ? __pfx_pci_conf1_write+0x10/0x10
     ? strlen+0x4/0x30
     devm_kstrdup+0x25/0x70
     brcmf_of_probe+0x273/0x350 [brcmfmac]
    
    Signed-off-by: Stefan Dösinger <[email protected]>
    Acked-by: Arend van Spriel <[email protected]>
    Signed-off-by: Kalle Valo <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: brcmfmac: fix NULL pointer dereference in brcmf_txfinalize() [+ + +]
Author: Marcel Hamer <[email protected]>
Date:   Thu Jan 16 14:22:40 2025 +0100

    wifi: brcmfmac: fix NULL pointer dereference in brcmf_txfinalize()
    
    commit 68abd0c4ebf24cd499841a488b97a6873d5efabb upstream.
    
    On removal of the device or unloading of the kernel module a potential NULL
    pointer dereference occurs.
    
    The following sequence deletes the interface:
    
      brcmf_detach()
        brcmf_remove_interface()
          brcmf_del_if()
    
    Inside the brcmf_del_if() function the drvr->if2bss[ifidx] is updated to
    BRCMF_BSSIDX_INVALID (-1) if the bsscfgidx matches.
    
    After brcmf_remove_interface() call the brcmf_proto_detach() function is
    called providing the following sequence:
    
      brcmf_detach()
        brcmf_proto_detach()
          brcmf_proto_msgbuf_detach()
            brcmf_flowring_detach()
              brcmf_msgbuf_delete_flowring()
                brcmf_msgbuf_remove_flowring()
                  brcmf_flowring_delete()
                    brcmf_get_ifp()
                    brcmf_txfinalize()
    
    Since brcmf_get_ip() can and actually will return NULL in this case the
    call to brcmf_txfinalize() will result in a NULL pointer dereference inside
    brcmf_txfinalize() when trying to update ifp->ndev->stats.tx_errors.
    
    This will only happen if a flowring still has an skb.
    
    Although the NULL pointer dereference has only been seen when trying to
    update the tx statistic, all other uses of the ifp pointer have been
    guarded as well with an early return if ifp is NULL.
    
    Cc: [email protected]
    Signed-off-by: Marcel Hamer <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]/
    Acked-by: Arend van Spriel  <[email protected]>
    Signed-off-by: Kalle Valo <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: brcmsmac: add gain range check to wlc_phy_iqcal_gainparams_nphy() [+ + +]
Author: Dmitry Antipov <[email protected]>
Date:   Tue Dec 10 10:04:41 2024 +0300

    wifi: brcmsmac: add gain range check to wlc_phy_iqcal_gainparams_nphy()
    
    [ Upstream commit 3f4a0948c3524ae50f166dbc6572a3296b014e62 ]
    
    In 'wlc_phy_iqcal_gainparams_nphy()', add gain range check to WARN()
    instead of possible out-of-bounds 'tbl_iqcal_gainparams_nphy' access.
    Compile tested only.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Dmitry Antipov <[email protected]>
    Acked-by: Arend van Spriel <[email protected]>
    Signed-off-by: Kalle Valo <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: cfg80211: adjust allocation of colocated AP data [+ + +]
Author: Dmitry Antipov <[email protected]>
Date:   Mon Jan 13 18:54:17 2025 +0300

    wifi: cfg80211: adjust allocation of colocated AP data
    
    [ Upstream commit 1a0d24775cdee2b8dc14bfa4f4418c930ab1ac57 ]
    
    In 'cfg80211_scan_6ghz()', an instances of 'struct cfg80211_colocated_ap'
    are allocated as if they would have 'ssid' as trailing VLA member. Since
    this is not so, extra IEEE80211_MAX_SSID_LEN bytes are not needed.
    Briefly tested with KUnit.
    
    Fixes: c8cb5b854b40 ("nl80211/cfg80211: support 6 GHz scanning")
    Signed-off-by: Dmitry Antipov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: cfg80211: Handle specific BSSID in 6GHz scanning [+ + +]
Author: Ilan Peer <[email protected]>
Date:   Thu Sep 28 17:35:30 2023 +0300

    wifi: cfg80211: Handle specific BSSID in 6GHz scanning
    
    [ Upstream commit 0fca7784b7a14d4ede64f479662afb98876ec7f8 ]
    
    When the scan parameters for a 6GHz scan specify a unicast
    BSSID address, and the corresponding AP is found in the scan
    list, add a corresponding entry in the collocated AP list,
    so this AP would be directly probed even if it was not
    advertised as a collocated AP.
    
    This is needed for handling a scan request that is intended
    for a ML probe flow, where user space can requests a scan
    to retrieve information for other links in the AP MLD.
    
    Signed-off-by: Ilan Peer <[email protected]>
    Signed-off-by: Gregory Greenman <[email protected]>
    Link: https://lore.kernel.org/r/20230928172905.54b954bc02ad.I1c072793d3d77a4c8fbbc64b4db5cce1bbb00382@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Stable-dep-of: 1a0d24775cde ("wifi: cfg80211: adjust allocation of colocated AP data")
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: avoid memory leak [+ + +]
Author: Miri Korenblit <[email protected]>
Date:   Sat Dec 28 22:34:15 2024 +0200

    wifi: iwlwifi: avoid memory leak
    
    [ Upstream commit 80e96206a3ef348fbd658d98f2f43149c36df8bc ]
    
    A caller of iwl_acpi_get_dsm_object must free the returned object.
    iwl_acpi_get_dsm_integer returns immediately without freeing
    it if the expected size is more than 8 bytes. Fix that.
    
    Note that with the current code this will never happen, since the caller
    of iwl_acpi_get_dsm_integer already checks that the expected size if
    either 1 or 4 bytes, so it can't exceed 8 bytes.
    
    While at it, print the DSM value instead of the return value, as this
    was the intention in the first place.
    
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20241228223206.bf61eaab99f8.Ibdc5df02f885208c222456d42c889c43b7e3b2f7@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: Fix common size calculation for ML element [+ + +]
Author: Ilan Peer <[email protected]>
Date:   Thu Jan 2 16:20:00 2025 +0200

    wifi: mac80211: Fix common size calculation for ML element
    
    [ Upstream commit 19aa842dcbb5860509b7e1b7745dbae0b791f6c4 ]
    
    When the ML type is EPCS the control bitmap is reserved, the length
    is always 7 and is captured by the 1st octet after the control.
    
    Fixes: 0f48b8b88aa9 ("wifi: ieee80211: add definitions for multi-link element")
    Signed-off-by: Ilan Peer <[email protected]>
    Reviewed-by: Johannes Berg <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250102161730.5790376754a7.I381208cbb72b1be2a88239509294099e9337e254@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: prohibit deactivating all links [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Mon Dec 30 09:14:07 2024 +0100

    wifi: mac80211: prohibit deactivating all links
    
    [ Upstream commit 7553477cbfd784b128297f9ed43751688415bbaa ]
    
    In the internal API this calls this is a WARN_ON, but that
    should remain since internally we want to know about bugs
    that may cause this. Prevent deactivating all links in the
    debugfs write directly.
    
    Reported-by: [email protected]
    Fixes: 3d9011029227 ("wifi: mac80211: implement link switching")
    Signed-off-by: Johannes Berg <[email protected]>
    Link: https://patch.msgid.link/20241230091408.505bd125c35a.Ic3c1f9572b980a952a444cad62b09b9c6721732b@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt76u_vendor_request: Do not print error messages when -EPROTO [+ + +]
Author: WangYuli <[email protected]>
Date:   Mon Jan 13 15:02:41 2025 +0800

    wifi: mt76: mt76u_vendor_request: Do not print error messages when -EPROTO
    
    [ Upstream commit f1b1e133a770fcdbd89551651232b034d2f7a27a ]
    
    When initializing the network card, unplugging the device will
    trigger an -EPROTO error, resulting in a flood of error messages
    being printed frantically.
    
    The exception is printed as follows:
    
             mt76x2u 2-2.4:1.0: vendor request req:47 off:9018 failed:-71
             mt76x2u 2-2.4:1.0: vendor request req:47 off:9018 failed:-71
             ...
    
    It will continue to print more than 2000 times for about 5 minutes,
    causing the usb device to be unable to be disconnected. During this
    period, the usb port cannot recognize the new device because the old
    device has not disconnected.
    
    There may be other operating methods that cause -EPROTO, but -EPROTO is
    a low-level hardware error. It is unwise to repeat vendor requests
    expecting to read correct data. It is a better choice to treat -EPROTO
    and -ENODEV the same way.
    
    Similar to commit 9b0f100c1970 ("mt76: usb: process URBs with status
    EPROTO properly") do no schedule rx_worker for urb marked with status
    set  -EPROTO. I also reproduced this situation when plugging and
    unplugging the device, and this patch is effective.
    
    Just do not vendor request again for urb marked with status set -EPROTO.
    
    Link: https://lore.kernel.org/all/[email protected]/
    Link: https://lore.kernel.org/all/[email protected]/
    Fixes: b40b15e1521f ("mt76: add usb support to mt76 layer")
    Co-developed-by: Xu Rao <[email protected]>
    Signed-off-by: Xu Rao <[email protected]>
    Signed-off-by: WangYuli <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7915: fix register mapping [+ + +]
Author: Peter Chiu <[email protected]>
Date:   Thu Jan 9 19:04:35 2025 +0800

    wifi: mt76: mt7915: fix register mapping
    
    [ Upstream commit dd1649ef966bb87053c17385ea2cfd1758f5385b ]
    
    Bypass the entry when ofs is equal to dev->reg.map[i].size.
    Without this patch, it would get incorrect register mapping when the CR
    address is located at the boundary of an entry.
    
    Fixes: cd4c314a65d3 ("mt76: mt7915: refine register definition")
    Signed-off-by: Peter Chiu <[email protected]>
    Signed-off-by: Shengyu Qu <[email protected]>
    Link: https://patch.msgid.link/OSZPR01MB843401EAA1DA6BD7AEF356F298132@OSZPR01MB8434.jpnprd01.prod.outlook.com
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7921: fix using incorrect group cipher after disconnection. [+ + +]
Author: Michael Lo <[email protected]>
Date:   Thu Aug 1 10:43:35 2024 +0800

    wifi: mt76: mt7921: fix using incorrect group cipher after disconnection.
    
    [ Upstream commit aa566ac6b7272e7ea5359cb682bdca36d2fc7e73 ]
    
    To avoid incorrect cipher after disconnection, we should
    do the key deletion process in this case.
    
    Fixes: e6db67fa871d ("wifi: mt76: ignore key disable commands")
    Signed-off-by: Michael Lo <[email protected]>
    Signed-off-by: Ming Yen Hsieh <[email protected]>
    Tested-by: David Ruth <[email protected]>
    Reviewed-by: David Ruth <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtlwifi: destroy workqueue at rtl_deinit_core [+ + +]
Author: Thadeu Lima de Souza Cascardo <[email protected]>
Date:   Fri Dec 6 14:37:11 2024 -0300

    wifi: rtlwifi: destroy workqueue at rtl_deinit_core
    
    [ Upstream commit d8ece6fc3694657e4886191b32ca1690af11adda ]
    
    rtl_wq is allocated at rtl_init_core, so it makes more sense to destroy it
    at rtl_deinit_core. In the case of USB, where _rtl_usb_init does not
    require anything to be undone, that is fine. But for PCI, rtl_pci_init,
    which is called after rtl_init_core, needs to deallocate data, but only if
    it has been called.
    
    That means that destroying the workqueue needs to be done whether
    rtl_pci_init has been called or not. And since rtl_pci_deinit was doing it,
    it has to be moved out of there.
    
    It makes more sense to move it to rtl_deinit_core and have it done in both
    cases, USB and PCI.
    
    Since this is a requirement for a followup memory leak fix, mark this as
    fixing such memory leak.
    
    Fixes: 0c8173385e54 ("rtl8192ce: Add new driver")
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtlwifi: do not complete firmware loading needlessly [+ + +]
Author: Thadeu Lima de Souza Cascardo <[email protected]>
Date:   Thu Nov 7 10:33:18 2024 -0300

    wifi: rtlwifi: do not complete firmware loading needlessly
    
    [ Upstream commit e73e11d303940119e41850a0452a0deda2cc4eb5 ]
    
    The only code waiting for completion is driver removal, which will not be
    called when probe returns a failure. So this completion is unnecessary.
    
    Fixes: b0302aba812b ("rtlwifi: Convert to asynchronous firmware load")
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtlwifi: fix init_sw_vars leak when probe fails [+ + +]
Author: Thadeu Lima de Souza Cascardo <[email protected]>
Date:   Thu Nov 7 10:33:21 2024 -0300

    wifi: rtlwifi: fix init_sw_vars leak when probe fails
    
    [ Upstream commit 00260350aed80c002df270c805ca443ec9a719a6 ]
    
    If ieee80211_register_hw fails, the memory allocated for the firmware will
    not be released. Call deinit_sw_vars as the function that undoes the
    allocationes done by init_sw_vars.
    
    Fixes: cefe3dfdb9f5 ("rtl8192cu: Call ieee80211_register_hw from rtl_usb_probe")
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtlwifi: fix memory leaks and invalid access at probe error path [+ + +]
Author: Thadeu Lima de Souza Cascardo <[email protected]>
Date:   Fri Dec 6 14:37:12 2024 -0300

    wifi: rtlwifi: fix memory leaks and invalid access at probe error path
    
    [ Upstream commit e7ceefbfd8d447abc8aca8ab993a942803522c06 ]
    
    Deinitialize at reverse order when probe fails.
    
    When init_sw_vars fails, rtl_deinit_core should not be called, specially
    now that it destroys the rtl_wq workqueue.
    
    And call rtl_pci_deinit and deinit_sw_vars, otherwise, memory will be
    leaked.
    
    Remove pci_set_drvdata call as it will already be cleaned up by the core
    driver code and could lead to memory leaks too. cf. commit 8d450935ae7f
    ("wireless: rtlwifi: remove unnecessary pci_set_drvdata()") and
    commit 3d86b93064c7 ("rtlwifi: Fix PCI probe error path orphaned memory").
    
    Fixes: 0c8173385e54 ("rtl8192ce: Add new driver")
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtlwifi: pci: wait for firmware loading before releasing memory [+ + +]
Author: Thadeu Lima de Souza Cascardo <[email protected]>
Date:   Fri Dec 6 14:37:13 2024 -0300

    wifi: rtlwifi: pci: wait for firmware loading before releasing memory
    
    [ Upstream commit b59b86c5d08be7d761c04affcbcec8184738c200 ]
    
    At probe error path, the firmware loading work may have already been
    queued. In such a case, it will try to access memory allocated by the probe
    function, which is about to be released. In such paths, wait for the
    firmware worker to finish before releasing memory.
    
    Fixes: 3d86b93064c7 ("rtlwifi: Fix PCI probe error path orphaned memory")
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtlwifi: remove unused check_buddy_priv [+ + +]
Author: Thadeu Lima de Souza Cascardo <[email protected]>
Date:   Fri Dec 6 14:37:10 2024 -0300

    wifi: rtlwifi: remove unused check_buddy_priv
    
    [ Upstream commit 2fdac64c3c35858aa8ac5caa70b232e03456e120 ]
    
    Commit 2461c7d60f9f ("rtlwifi: Update header file") introduced a global
    list of private data structures.
    
    Later on, commit 26634c4b1868 ("rtlwifi Modify existing bits to match
    vendor version 2013.02.07") started adding the private data to that list at
    probe time and added a hook, check_buddy_priv to find the private data from
    a similar device.
    
    However, that function was never used.
    
    Besides, though there is a lock for that list, it is never used. And when
    the probe fails, the private data is never removed from the list. This
    would cause a second probe to access freed memory.
    
    Remove the unused hook, structures and members, which will prevent the
    potential race condition on the list and its corruption during a second
    probe when probe fails.
    
    Fixes: 26634c4b1868 ("rtlwifi Modify existing bits to match vendor version 2013.02.07")
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtlwifi: remove unused dualmac control leftovers [+ + +]
Author: Dmitry Antipov <[email protected]>
Date:   Fri Jun 2 09:59:40 2023 +0300

    wifi: rtlwifi: remove unused dualmac control leftovers
    
    [ Upstream commit 557123259200b30863e1b6a8f24a8c8060b6fc1d ]
    
    Remove 'struct rtl_dualmac_easy_concurrent_ctl' of 'struct rtl_priv'
    and related code in '_rtl_pci_tx_chk_waitq()'.
    
    Signed-off-by: Dmitry Antipov <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Kalle Valo <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: 2fdac64c3c35 ("wifi: rtlwifi: remove unused check_buddy_priv")
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtlwifi: remove unused timer and related code [+ + +]
Author: Dmitry Antipov <[email protected]>
Date:   Fri Jun 2 09:59:39 2023 +0300

    wifi: rtlwifi: remove unused timer and related code
    
    [ Upstream commit 358b94f0a7cadd2ec7824531d54dadaa8b71de04 ]
    
    Drop unused 'dualmac_easyconcurrent_retrytimer' of 'struct rtl_works',
    corresponding 'rtl_easy_concurrent_retrytimer_callback()' handler,
    'dualmac_easy_concurrent' function pointer of 'struct rtl_hal_ops'
    and related call to 'timer_setup()' in '_rtl_init_deferred_work()'.
    
    Signed-off-by: Dmitry Antipov <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Kalle Valo <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: 2fdac64c3c35 ("wifi: rtlwifi: remove unused check_buddy_priv")
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtlwifi: rtl8192se: rise completion of firmware loading as last step [+ + +]
Author: Thadeu Lima de Souza Cascardo <[email protected]>
Date:   Thu Nov 7 10:33:19 2024 -0300

    wifi: rtlwifi: rtl8192se: rise completion of firmware loading as last step
    
    [ Upstream commit 8559a9e0c457729fe3edb3176bbf7c7874f482b0 ]
    
    Just like in commit 4dfde294b979 ("rtlwifi: rise completion at the last
    step of firmware callback"), only signal completion once the function is
    finished. Otherwise, the module removal waiting for the completion could
    free the memory that the callback will still use before returning.
    
    Fixes: b0302aba812b ("rtlwifi: Convert to asynchronous firmware load")
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtlwifi: rtl8821ae: Fix media status report [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Wed Dec 18 00:53:11 2024 +0200

    wifi: rtlwifi: rtl8821ae: Fix media status report
    
    commit 66ef0289ac99e155d206ddaa0fdfad09ae3cd007 upstream.
    
    RTL8821AE is stuck transmitting at the lowest rate allowed by the rate
    mask. This is because the firmware doesn't know the device is connected
    to a network.
    
    Fix the macros SET_H2CCMD_MSRRPT_PARM_OPMODE and
    SET_H2CCMD_MSRRPT_PARM_MACID_IND to work on the first byte of __cmd,
    not the second. Now the firmware is correctly notified when the device
    is connected to a network and it activates the rate control.
    
    Before (MCS3):
    
    [  5]   0.00-1.00   sec  12.5 MBytes   105 Mbits/sec    0    339 KBytes
    [  5]   1.00-2.00   sec  10.6 MBytes  89.1 Mbits/sec    0    339 KBytes
    [  5]   2.00-3.00   sec  10.6 MBytes  89.1 Mbits/sec    0    386 KBytes
    [  5]   3.00-4.00   sec  10.6 MBytes  89.1 Mbits/sec    0    386 KBytes
    [  5]   4.00-5.00   sec  10.2 MBytes  86.0 Mbits/sec    0    427 KBytes
    
    After (MCS9):
    
    [  5]   0.00-1.00   sec  33.9 MBytes   284 Mbits/sec    0    771 KBytes
    [  5]   1.00-2.00   sec  31.6 MBytes   265 Mbits/sec    0    865 KBytes
    [  5]   2.00-3.00   sec  29.9 MBytes   251 Mbits/sec    0    963 KBytes
    [  5]   3.00-4.00   sec  28.2 MBytes   237 Mbits/sec    0    963 KBytes
    [  5]   4.00-5.00   sec  26.8 MBytes   224 Mbits/sec    0    963 KBytes
    
    Fixes: 39f40710d0b5 ("rtlwifi: rtl88821ae: Remove usage of private bit manipulation macros")
    Cc: [email protected]
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: rtlwifi: usb: fix workqueue leak when probe fails [+ + +]
Author: Thadeu Lima de Souza Cascardo <[email protected]>
Date:   Thu Nov 7 10:33:22 2024 -0300

    wifi: rtlwifi: usb: fix workqueue leak when probe fails
    
    [ Upstream commit f79bc5c67867c19ce2762e7934c20dbb835ed82c ]
    
    rtl_init_core creates a workqueue that is then assigned to rtl_wq.
    rtl_deinit_core does not destroy it. It is left to rtl_usb_deinit, which
    must be called in the probe error path.
    
    Fixes: 2ca20f79e0d8 ("rtlwifi: Add usb driver")
    Fixes: 851639fdaeac ("rtlwifi: Modify some USB de-initialize code.")
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtlwifi: wait for firmware loading before releasing memory [+ + +]
Author: Thadeu Lima de Souza Cascardo <[email protected]>
Date:   Thu Nov 7 10:33:20 2024 -0300

    wifi: rtlwifi: wait for firmware loading before releasing memory
    
    [ Upstream commit b4b26642b31ef282df6ff7ea8531985edfdef12a ]
    
    At probe error path, the firmware loading work may have already been
    queued. In such a case, it will try to access memory allocated by the probe
    function, which is about to be released. In such paths, wait for the
    firmware worker to finish before releasing memory.
    
    Fixes: a7f7c15e945a ("rtlwifi: rtl8192cu: Free ieee80211_hw if probing fails")
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: wcn36xx: fix channel survey memory allocation size [+ + +]
Author: Barnabás Czémán <[email protected]>
Date:   Mon Nov 4 21:00:35 2024 +0100

    wifi: wcn36xx: fix channel survey memory allocation size
    
    [ Upstream commit 6200d947f050efdba4090dfefd8a01981363d954 ]
    
    KASAN reported a memory allocation issue in wcn->chan_survey
    due to incorrect size calculation.
    This commit uses kcalloc to allocate memory for wcn->chan_survey,
    ensuring proper initialization and preventing the use of uninitialized
    values when there are no frames on the channel.
    
    Fixes: 29696e0aa413 ("wcn36xx: Track SNR and RSSI for each RX frame")
    Signed-off-by: Barnabás Czémán <[email protected]>
    Acked-by: Loic Poulain <[email protected]>
    Reviewed-by: Bryan O'Donoghue <[email protected]>
    Link: https://patch.msgid.link/20241104-wcn36xx-memory-allocation-v1-1-5ec901cf37b6@mainlining.org
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: wlcore: fix unbalanced pm_runtime calls [+ + +]
Author: Andreas Kemnade <[email protected]>
Date:   Sat Jan 4 20:55:07 2025 +0100

    wifi: wlcore: fix unbalanced pm_runtime calls
    
    [ Upstream commit 996c934c8c196144af386c4385f61fcd5349af28 ]
    
    If firmware boot failes, runtime pm is put too often:
    [12092.708099] wlcore: ERROR firmware boot failed despite 3 retries
    [12092.708099] wl18xx_driver wl18xx.1.auto: Runtime PM usage count underflow!
    Fix that by redirecting all error gotos before runtime_get so that runtime is
    not put.
    
    Fixes: c40aad28a3cf ("wlcore: Make sure firmware is initialized in wl1271_op_add_interface()")
    Signed-off-by: Andreas Kemnade <[email protected]>
    Reviewed-by: Michael Nemanov <[email protected]>
    Signed-off-by: Kalle Valo <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/amd_nb: Restrict init function to AMD-based systems [+ + +]
Author: Yazen Ghannam <[email protected]>
Date:   Fri Dec 6 16:11:55 2024 +0000

    x86/amd_nb: Restrict init function to AMD-based systems
    
    [ Upstream commit bee9e840609cc67d0a7d82f22a2130fb7a0a766d ]
    
    The code implicitly operates on AMD-based systems by matching on PCI
    IDs. However, the use of these IDs is going away.
    
    Add an explicit CPU vendor check instead of relying on PCI IDs.
    
    Signed-off-by: Yazen Ghannam <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/boot: Use '-std=gnu11' to fix build with GCC 15 [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Tue Jan 21 18:11:33 2025 -0700

    x86/boot: Use '-std=gnu11' to fix build with GCC 15
    
    commit ee2ab467bddfb2d7f68d996dbab94d7b88f8eaf7 upstream.
    
    GCC 15 changed the default C standard version to C23, which should not
    have impacted the kernel because it requests the gnu11 standard via
    '-std=' in the main Makefile. However, the x86 compressed boot Makefile
    uses its own set of KBUILD_CFLAGS without a '-std=' value (i.e., using
    the default), resulting in errors from the kernel's definitions of bool,
    true, and false in stddef.h, which are reserved keywords under C23.
    
      ./include/linux/stddef.h:11:9: error: expected identifier before ‘false’
         11 |         false   = 0,
      ./include/linux/types.h:35:33: error: two or more data types in declaration specifiers
         35 | typedef _Bool                   bool;
    
    Set '-std=gnu11' in the x86 compressed boot Makefile to resolve the
    error and consistently use the same C standard version for the entire
    kernel.
    
    Closes: https://lore.kernel.org/4OAhbllK7x4QJGpZjkYjtBYNLd_2whHx9oFiuZcGwtVR4hIzvduultkgfAIRZI3vQpZylu7Gl929HaYFRGeMEalWCpeMzCIIhLxxRhq4U-Y=@protonmail.com/
    Closes: https://lore.kernel.org/Z4467umXR2PZ0M1H@tucnak/
    Reported-by: Kostadin Shishmanov <[email protected]>
    Reported-by: Jakub Jelinek <[email protected]>
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Dave Hansen <[email protected]>
    Reviewed-by: Ard Biesheuvel <[email protected]>
    Cc:[email protected]
    Link: https://lore.kernel.org/all/20250121-x86-use-std-consistently-gcc-15-v1-1-8ab0acf645cb%40kernel.org
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/i8253: Disable PIT timer 0 when not in use [+ + +]
Author: David Woodhouse <[email protected]>
Date:   Fri Aug 2 14:55:54 2024 +0100

    x86/i8253: Disable PIT timer 0 when not in use
    
    commit 70e6b7d9ae3c63df90a7bba7700e8d5c300c3c60 upstream.
    
    Leaving the PIT interrupt running can cause noticeable steal time for
    virtual guests. The VMM generally has a timer which toggles the IRQ input
    to the PIC and I/O APIC, which takes CPU time away from the guest. Even
    on real hardware, running the counter may use power needlessly (albeit
    not much).
    
    Make sure it's turned off if it isn't going to be used.
    
    Signed-off-by: David Woodhouse <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Tested-by: Michael Kelley <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/kexec: Allocate PGD for x86_64 transition page tables separately [+ + +]
Author: David Woodhouse <[email protected]>
Date:   Thu Dec 5 15:05:11 2024 +0000

    x86/kexec: Allocate PGD for x86_64 transition page tables separately
    
    [ Upstream commit 4b5bc2ec9a239bce261ffeafdd63571134102323 ]
    
    Now that the following fix:
    
      d0ceea662d45 ("x86/mm: Add _PAGE_NOPTISHADOW bit to avoid updating userspace page tables")
    
    stops kernel_ident_mapping_init() from scribbling over the end of a
    4KiB PGD by assuming the following 4KiB will be a userspace PGD,
    there's no good reason for the kexec PGD to be part of a single
    8KiB allocation with the control_code_page.
    
    ( It's not clear that that was the reason for x86_64 kexec doing it that
      way in the first place either; there were no comments to that effect and
      it seems to have been the case even before PTI came along. It looks like
      it was just a happy accident which prevented memory corruption on kexec. )
    
    Either way, it definitely isn't needed now. Just allocate the PGD
    separately on x86_64, like i386 already does.
    
    Signed-off-by: David Woodhouse <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: Baoquan He <[email protected]>
    Cc: Vivek Goyal <[email protected]>
    Cc: Dave Young <[email protected]>
    Cc: Eric Biederman <[email protected]>
    Cc: Ard Biesheuvel <[email protected]>
    Cc: "H. Peter Anvin" <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/mm/tlb: Only trim the mm_cpumask once a second [+ + +]
Author: Rik van Riel <[email protected]>
Date:   Wed Dec 4 21:03:16 2024 -0500

    x86/mm/tlb: Only trim the mm_cpumask once a second
    
    [ Upstream commit 6db2526c1d694c91c6e05e2f186c085e9460f202 ]
    
    Setting and clearing CPU bits in the mm_cpumask is only ever done
    by the CPU itself, from the context switch code or the TLB flush
    code.
    
    Synchronization is handled by switch_mm_irqs_off() blocking interrupts.
    
    Sending TLB flush IPIs to CPUs that are in the mm_cpumask, but no
    longer running the program causes a regression in the will-it-scale
    tlbflush2 test. This test is contrived, but a large regression here
    might cause a small regression in some real world workload.
    
    Instead of always sending IPIs to CPUs that are in the mm_cpumask,
    but no longer running the program, send these IPIs only once a second.
    
    The rest of the time we can skip over CPUs where the loaded_mm is
    different from the target mm.
    
    Reported-by: kernel test roboto <[email protected]>
    Signed-off-by: Rik van Riel <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: Dave Hansen <[email protected]>
    Cc: Andy Lutomirski <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Link: https://lore.kernel.org/r/20241204210316.612ee573@fangorn
    Closes: https://lore.kernel.org/oe-lkp/[email protected]/
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/static-call: Remove early_boot_irqs_disabled check to fix Xen PVH dom0 [+ + +]
Author: Andrew Cooper <[email protected]>
Date:   Sat Dec 21 21:10:46 2024 +0000

    x86/static-call: Remove early_boot_irqs_disabled check to fix Xen PVH dom0
    
    commit 5cc2db37124bb33914996d6fdbb2ddb3811f2945 upstream.
    
    __static_call_update_early() has a check for early_boot_irqs_disabled, but
    is used before early_boot_irqs_disabled is set up in start_kernel().
    
    Xen PV has always special cased early_boot_irqs_disabled, but Xen PVH does
    not and falls over the BUG when booting as dom0.
    
    It is very suspect that early_boot_irqs_disabled starts as 0, becomes 1 for
    a time, then becomes 0 again, but as this needs backporting to fix a
    breakage in a security fix, dropping the BUG_ON() is the far safer option.
    
    Fixes: 0ef8047b737d ("x86/static-call: provide a way to do very early static-call updates")
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219620
    Reported-by: Alex Zenla <[email protected]>
    Suggested-by: Peter Zijlstra <[email protected]>
    Signed-off-by: Andrew Cooper <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Reviewed-by: Juergen Gross <[email protected]>
    Acked-by: Peter Zijlstra (Intel) <[email protected]>
    Tested-by: Alex Zenla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/xen: add FRAME_END to xen_hypercall_hvm() [+ + +]
Author: Juergen Gross <[email protected]>
Date:   Wed Feb 5 10:07:56 2025 +0100

    x86/xen: add FRAME_END to xen_hypercall_hvm()
    
    [ Upstream commit 0bd797b801bd8ee06c822844e20d73aaea0878dd ]
    
    xen_hypercall_hvm() is missing a FRAME_END at the end, add it.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Fixes: b4845bb63838 ("x86/xen: add central hypercall functions")
    Signed-off-by: Juergen Gross <[email protected]>
    Reviewed-by: Jan Beulich <[email protected]>
    Reviewed-by: Andrew Cooper <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

x86/xen: allow larger contiguous memory regions in PV guests [+ + +]
Author: Juergen Gross <[email protected]>
Date:   Tue Feb 11 11:16:28 2025 +0100

    x86/xen: allow larger contiguous memory regions in PV guests
    
    [ Upstream commit e93ec87286bd1fd30b7389e7a387cfb259f297e3 ]
    
    Today a PV guest (including dom0) can create 2MB contiguous memory
    regions for DMA buffers at max. This has led to problems at least
    with the megaraid_sas driver, which wants to allocate a 2.3MB DMA
    buffer.
    
    The limiting factor is the frame array used to do the hypercall for
    making the memory contiguous, which has 512 entries and is just a
    static array in mmu_pv.c.
    
    In order to not waste memory for non-PV guests, put the initial
    frame array into .init.data section and dynamically allocate an array
    from the .init_after_bootmem hook of PV guests.
    
    In case a contiguous memory area larger than the initially supported
    2MB is requested, allocate a larger buffer for the frame list. Note
    that such an allocation is tried only after memory management has been
    initialized properly, which is tested via a flag being set in the
    .init_after_bootmem hook.
    
    Fixes: 9f40ec84a797 ("xen/swiotlb: add alignment check for dma buffers")
    Signed-off-by: Juergen Gross <[email protected]>
    Tested-by: Alan Robinson <[email protected]>
    Reviewed-by: Jan Beulich <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

x86/xen: fix xen_hypercall_hvm() to not clobber %rbx [+ + +]
Author: Juergen Gross <[email protected]>
Date:   Wed Feb 5 09:43:31 2025 +0100

    x86/xen: fix xen_hypercall_hvm() to not clobber %rbx
    
    [ Upstream commit 98a5cfd2320966f40fe049a9855f8787f0126825 ]
    
    xen_hypercall_hvm(), which is used when running as a Xen PVH guest at
    most only once during early boot, is clobbering %rbx. Depending on
    whether the caller relies on %rbx to be preserved across the call or
    not, this clobbering might result in an early crash of the system.
    
    This can be avoided by using an already saved register instead of %rbx.
    
    Fixes: b4845bb63838 ("x86/xen: add central hypercall functions")
    Signed-off-by: Juergen Gross <[email protected]>
    Reviewed-by: Jan Beulich <[email protected]>
    Reviewed-by: Andrew Cooper <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xen/swiotlb: relax alignment requirements [+ + +]
Author: Juergen Gross <[email protected]>
Date:   Mon Feb 10 08:43:39 2025 +0100

    xen/swiotlb: relax alignment requirements
    
    [ Upstream commit 85fcb57c983f423180ba6ec5d0034242da05cc54 ]
    
    When mapping a buffer for DMA via .map_page or .map_sg DMA operations,
    there is no need to check the machine frames to be aligned according
    to the mapped areas size. All what is needed in these cases is that the
    buffer is contiguous at machine level.
    
    So carve out the alignment check from range_straddles_page_boundary()
    and move it to a helper called by xen_swiotlb_alloc_coherent() and
    xen_swiotlb_free_coherent() directly.
    
    Fixes: 9f40ec84a797 ("xen/swiotlb: add alignment check for dma buffers")
    Reported-by: Jan Vejvalka <[email protected]>
    Tested-by: Jan Vejvalka <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Reviewed-by: Stefano Stabellini <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xen: remove a confusing comment on auto-translated guest I/O [+ + +]
Author: Petr Tesarik <[email protected]>
Date:   Wed Aug 2 18:31:51 2023 +0200

    xen: remove a confusing comment on auto-translated guest I/O
    
    [ Upstream commit d826c9e61c99120f8996f8fed6417167e32eb922 ]
    
    After removing the conditional return from xen_create_contiguous_region(),
    the accompanying comment was left in place, but it now precedes an
    unrelated conditional and confuses readers.
    
    Fixes: 989513a735f5 ("xen: cleanup pvh leftovers from pv-only sources")
    Signed-off-by: Petr Tesarik <[email protected]>
    Reviewed-by: Boris Ostrovsky <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Juergen Gross <[email protected]>
    Stable-dep-of: e93ec87286bd ("x86/xen: allow larger contiguous memory regions in PV guests")
    Signed-off-by: Sasha Levin <[email protected]>

 
xfrm: replay: Fix the update of replay_esn->oseq_hi for GSO [+ + +]
Author: Jianbo Liu <[email protected]>
Date:   Tue Nov 12 14:10:31 2024 +0200

    xfrm: replay: Fix the update of replay_esn->oseq_hi for GSO
    
    [ Upstream commit c05c5e5aa163f4682ca97a2f0536575fc7dbdecb ]
    
    When skb needs GSO and wrap around happens, if xo->seq.low (seqno of
    the first skb segment) is before the last seq number but oseq (seqno
    of the last segment) is after it, xo->seq.low is still bigger than
    replay_esn->oseq while oseq is smaller than it, so the update of
    replay_esn->oseq_hi is missed for this case wrap around because of
    the change in the cited commit.
    
    For example, if sending a packet with gso_segs=3 while old
    replay_esn->oseq=0xfffffffe, we calculate:
        xo->seq.low = 0xfffffffe + 1 = 0x0xffffffff
        oseq = 0xfffffffe + 3 = 0x1
    (oseq < replay_esn->oseq) is true, but (xo->seq.low <
    replay_esn->oseq) is false, so replay_esn->oseq_hi is not incremented.
    
    To fix this issue, change the outer checking back for the update of
    replay_esn->oseq_hi. And add new checking inside for the update of
    packet's oseq_hi.
    
    Fixes: 4b549ccce941 ("xfrm: replay: Fix ESN wrap around for GSO")
    Signed-off-by: Jianbo Liu <[email protected]>
    Reviewed-by: Patrisious Haddad <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xfs: Add error handling for xfs_reflink_cancel_cow_range [+ + +]
Author: Wentao Liang <[email protected]>
Date:   Fri Jan 24 11:45:09 2025 +0800

    xfs: Add error handling for xfs_reflink_cancel_cow_range
    
    commit 26b63bee2f6e711c5a169997fd126fddcfb90848 upstream.
    
    In xfs_inactive(), xfs_reflink_cancel_cow_range() is called
    without error handling, risking unnoticed failures and
    inconsistent behavior compared to other parts of the code.
    
    Fix this issue by adding an error handling for the
    xfs_reflink_cancel_cow_range(), improving code robustness.
    
    Fixes: 6231848c3aa5 ("xfs: check for cow blocks before trying to clear them")
    Cc: [email protected] # v4.17
    Reviewed-by: Darrick J. Wong <[email protected]>
    Signed-off-by: Wentao Liang <[email protected]>
    Signed-off-by: Carlos Maiolino <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

xfs: don't over-report free space or inodes in statvfs [+ + +]
Author: Darrick J. Wong <[email protected]>
Date:   Thu Dec 12 14:37:56 2024 -0800

    xfs: don't over-report free space or inodes in statvfs
    
    [ Upstream commit 4b8d867ca6e2fc6d152f629fdaf027053b81765a ]
    
    Emmanual Florac reports a strange occurrence when project quota limits
    are enabled, free space is lower than the remaining quota, and someone
    runs statvfs:
    
      # mkfs.xfs -f /dev/sda
      # mount /dev/sda /mnt -o prjquota
      # xfs_quota  -x -c 'limit -p bhard=2G 55' /mnt
      # mkdir /mnt/dir
      # xfs_io -c 'chproj 55' -c 'chattr +P' -c 'stat -vvvv' /mnt/dir
      # fallocate -l 19g /mnt/a
      # df /mnt /mnt/dir
      Filesystem      Size  Used Avail Use% Mounted on
      /dev/sda         20G   20G  345M  99% /mnt
      /dev/sda        2.0G     0  2.0G   0% /mnt
    
    I think the bug here is that xfs_fill_statvfs_from_dquot unconditionally
    assigns to f_bfree without checking that the filesystem has enough free
    space to fill the remaining project quota.  However, this is a
    longstanding behavior of xfs so it's unclear what to do here.
    
    Cc: <[email protected]> # v2.6.18
    Fixes: 932f2c323196c2 ("[XFS] statvfs component of directory/project quota support, code originally by Glen.")
    Reported-by: Emmanuel Florac <[email protected]>
    Signed-off-by: "Darrick J. Wong" <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

xfs: report realtime block quota limits on realtime directories [+ + +]
Author: Darrick J. Wong <[email protected]>
Date:   Sun Nov 3 20:19:40 2024 -0800

    xfs: report realtime block quota limits on realtime directories
    
    [ Upstream commit 9a17ebfea9d0c7e0bb7409dcf655bf982a5d6e52 ]
    
    On the data device, calling statvfs on a projinherit directory results
    in the block and avail counts being curtailed to the project quota block
    limits, if any are set.  Do the same for realtime files or directories,
    only use the project quota rt block limits.
    
    Signed-off-by: Darrick J. Wong <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Stable-dep-of: 4b8d867ca6e2 ("xfs: don't over-report free space or inodes in statvfs")
    Signed-off-by: Sasha Levin <[email protected]>