Changelog in Linux kernel 4.19.319

 
ACPI: EC: Abort address space access upon error [+ + +]
Author: Armin Wolf <[email protected]>
Date:   Wed May 22 23:36:48 2024 +0200

    ACPI: EC: Abort address space access upon error
    
    [ Upstream commit f6f172dc6a6d7775b2df6adfd1350700e9a847ec ]
    
    When a multi-byte address space access is requested, acpi_ec_read()/
    acpi_ec_write() is being called multiple times.
    
    Abort such operations if a single call to acpi_ec_read() /
    acpi_ec_write() fails, as the data read from / written to the EC
    might be incomplete.
    
    Signed-off-by: Armin Wolf <[email protected]>
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ACPI: EC: Avoid returning AE_OK on errors in address space handler [+ + +]
Author: Armin Wolf <[email protected]>
Date:   Wed May 22 23:36:49 2024 +0200

    ACPI: EC: Avoid returning AE_OK on errors in address space handler
    
    [ Upstream commit c4bd7f1d78340e63de4d073fd3dbe5391e2996e5 ]
    
    If an error code other than EINVAL, ENODEV or ETIME is returned
    by acpi_ec_read() / acpi_ec_write(), then AE_OK is incorrectly
    returned by acpi_ec_space_handler().
    
    Fix this by only returning AE_OK on success, and return AE_ERROR
    otherwise.
    
    Signed-off-by: Armin Wolf <[email protected]>
    [ rjw: Subject and changelog edits ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ACPI: processor_idle: Fix invalid comparison with insertion sort for latency [+ + +]
Author: Kuan-Wei Chiu <[email protected]>
Date:   Tue Jul 2 04:56:39 2024 +0800

    ACPI: processor_idle: Fix invalid comparison with insertion sort for latency
    
    commit 233323f9b9f828cd7cd5145ad811c1990b692542 upstream.
    
    The acpi_cst_latency_cmp() comparison function currently used for
    sorting C-state latencies does not satisfy transitivity, causing
    incorrect sorting results.
    
    Specifically, if there are two valid acpi_processor_cx elements A and B
    and one invalid element C, it may occur that A < B, A = C, and B = C.
    Sorting algorithms assume that if A < B and A = C, then C < B, leading
    to incorrect ordering.
    
    Given the small size of the array (<=8), we replace the library sort
    function with a simple insertion sort that properly ignores invalid
    elements and sorts valid ones based on latency. This change ensures
    correct ordering of the C-state latencies.
    
    Fixes: 65ea8f2c6e23 ("ACPI: processor idle: Fix up C-state latency if not ordered")
    Reported-by: Julian Sikorski <[email protected]>
    Closes: https://lore.kernel.org/lkml/[email protected]
    Signed-off-by: Kuan-Wei Chiu <[email protected]>
    Tested-by: Julian Sikorski <[email protected]>
    Cc: All applicable <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Kuan-Wei Chiu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ALSA: dmaengine_pcm: terminate dmaengine before synchronize [+ + +]
Author: Shengjiu Wang <[email protected]>
Date:   Thu Jun 20 10:40:18 2024 +0800

    ALSA: dmaengine_pcm: terminate dmaengine before synchronize
    
    [ Upstream commit 6a7db25aad8ce6512b366d2ce1d0e60bac00a09d ]
    
    When dmaengine supports pause function, in suspend state,
    dmaengine_pause() is called instead of dmaengine_terminate_async(),
    
    In end of playback stream, the runtime->state will go to
    SNDRV_PCM_STATE_DRAINING, if system suspend & resume happen
    at this time, application will not resume playback stream, the
    stream will be closed directly, the dmaengine_terminate_async()
    will not be called before the dmaengine_synchronize(), which
    violates the call sequence for dmaengine_synchronize().
    
    This behavior also happens for capture streams, but there is no
    SNDRV_PCM_STATE_DRAINING state for capture. So use
    dmaengine_tx_status() to check the DMA status if the status is
    DMA_PAUSED, then call dmaengine_terminate_async() to terminate
    dmaengine before dmaengine_synchronize().
    
    Signed-off-by: Shengjiu Wang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ARM: 9324/1: fix get_user() broken with veneer [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Tue Sep 26 17:09:03 2023 +0100

    ARM: 9324/1: fix get_user() broken with veneer
    
    commit 24d3ba0a7b44c1617c27f5045eecc4f34752ab03 upstream.
    
    The 32-bit ARM kernel stops working if the kernel grows to the point
    where veneers for __get_user_* are created.
    
    AAPCS32 [1] states, "Register r12 (IP) may be used by a linker as a
    scratch register between a routine and any subroutine it calls. It
    can also be used within a routine to hold intermediate values between
    subroutine calls."
    
    However, bl instructions buried within the inline asm are unpredictable
    for compilers; hence, "ip" must be added to the clobber list.
    
    This becomes critical when veneers for __get_user_* are created because
    veneers use the ip register since commit 02e541db0540 ("ARM: 8323/1:
    force linker to use PIC veneers").
    
    [1]: https://github.com/ARM-software/abi-aa/blob/2023Q1/aapcs32/aapcs32.rst
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Reviewed-by: Ard Biesheuvel <[email protected]>
    Signed-off-by: Russell King (Oracle) <[email protected]>
    Cc: John Stultz <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Bluetooth: hci_core: cancel all works upon hci_unregister_dev() [+ + +]
Author: Tetsuo Handa <[email protected]>
Date:   Mon Jun 10 20:00:32 2024 +0900

    Bluetooth: hci_core: cancel all works upon hci_unregister_dev()
    
    [ Upstream commit 0d151a103775dd9645c78c97f77d6e2a5298d913 ]
    
    syzbot is reporting that calling hci_release_dev() from hci_error_reset()
    due to hci_dev_put() from hci_error_reset() can cause deadlock at
    destroy_workqueue(), for hci_error_reset() is called from
    hdev->req_workqueue which destroy_workqueue() needs to flush.
    
    We need to make sure that hdev->{rx_work,cmd_work,tx_work} which are
    queued into hdev->workqueue and hdev->{power_on,error_reset} which are
    queued into hdev->req_workqueue are no longer running by the moment
    
           destroy_workqueue(hdev->workqueue);
           destroy_workqueue(hdev->req_workqueue);
    
    are called from hci_release_dev().
    
    Call cancel_work_sync() on these work items from hci_unregister_dev()
    as soon as hdev->list is removed from hci_dev_list.
    
    Reported-by: syzbot <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=da0a9c9721e36db712e8
    Signed-off-by: Tetsuo Handa <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bytcr_rt5640 : inverse jack detect for Archos 101 cesium [+ + +]
Author: Thomas GENTY <[email protected]>
Date:   Sat Jun 8 19:02:51 2024 +0200

    bytcr_rt5640 : inverse jack detect for Archos 101 cesium
    
    [ Upstream commit e3209a1827646daaab744aa6a5767b1f57fb5385 ]
    
    When headphones are plugged in, they appear absent; when they are removed,
    they appear present.
    Add a specific entry in bytcr_rt5640 for this device
    
    Signed-off-by: Thomas GENTY <[email protected]>
    Reviewed-by: Hans de Goede <[email protected]>
    Acked-by: Pierre-Louis Bossart <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
can: kvaser_usb: fix return value for hif_usb_send_regout [+ + +]
Author: Chen Ni <[email protected]>
Date:   Tue May 21 12:10:20 2024 +0800

    can: kvaser_usb: fix return value for hif_usb_send_regout
    
    [ Upstream commit 0d34d8163fd87978a6abd792e2d8ad849f4c3d57 ]
    
    As the potential failure of usb_submit_urb(), it should be better to
    return the err variable to catch the error.
    
    Signed-off-by: Chen Ni <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
filelock: Fix fcntl/close race recovery compat path [+ + +]
Author: Jann Horn <[email protected]>
Date:   Tue Jul 23 17:03:56 2024 +0200

    filelock: Fix fcntl/close race recovery compat path
    
    commit f8138f2ad2f745b9a1c696a05b749eabe44337ea upstream.
    
    When I wrote commit 3cad1bc01041 ("filelock: Remove locks reliably when
    fcntl/close race is detected"), I missed that there are two copies of the
    code I was patching: The normal version, and the version for 64-bit offsets
    on 32-bit kernels.
    Thanks to Greg KH for stumbling over this while doing the stable
    backport...
    
    Apply exactly the same fix to the compat path for 32-bit kernels.
    
    Fixes: c293621bbf67 ("[PATCH] stale POSIX lock handling")
    Cc: [email protected]
    Link: https://bugs.chromium.org/p/project-zero/issues/detail?id=2563
    Signed-off-by: Jann Horn <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

filelock: Remove locks reliably when fcntl/close race is detected [+ + +]
Author: Jann Horn <[email protected]>
Date:   Tue Jul 2 18:26:52 2024 +0200

    filelock: Remove locks reliably when fcntl/close race is detected
    
    commit 3cad1bc010416c6dd780643476bc59ed742436b9 upstream.
    
    When fcntl_setlk() races with close(), it removes the created lock with
    do_lock_file_wait().
    However, LSMs can allow the first do_lock_file_wait() that created the lock
    while denying the second do_lock_file_wait() that tries to remove the lock.
    In theory (but AFAIK not in practice), posix_lock_file() could also fail to
    remove a lock due to GFP_KERNEL allocation failure (when splitting a range
    in the middle).
    
    After the bug has been triggered, use-after-free reads will occur in
    lock_get_status() when userspace reads /proc/locks. This can likely be used
    to read arbitrary kernel memory, but can't corrupt kernel memory.
    This only affects systems with SELinux / Smack / AppArmor / BPF-LSM in
    enforcing mode and only works from some security contexts.
    
    Fix it by calling locks_remove_posix() instead, which is designed to
    reliably get rid of POSIX locks associated with the given file and
    files_struct and is also used by filp_flush().
    
    Fixes: c293621bbf67 ("[PATCH] stale POSIX lock handling")
    Cc: [email protected]
    Link: https://bugs.chromium.org/p/project-zero/issues/detail?id=2563
    Signed-off-by: Jann Horn <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Jeff Layton <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    [stable fixup: ->c.flc_type was ->fl_type in older kernels]
    Signed-off-by: Jann Horn <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
fs/file: fix the check in find_next_fd() [+ + +]
Author: Yuntao Wang <[email protected]>
Date:   Thu May 30 00:06:56 2024 +0800

    fs/file: fix the check in find_next_fd()
    
    [ Upstream commit ed8c7fbdfe117abbef81f65428ba263118ef298a ]
    
    The maximum possible return value of find_next_zero_bit(fdt->full_fds_bits,
    maxbit, bitbit) is maxbit. This return value, multiplied by BITS_PER_LONG,
    gives the value of bitbit, which can never be greater than maxfd, it can
    only be equal to maxfd at most, so the following check 'if (bitbit > maxfd)'
    will never be true.
    
    Moreover, when bitbit equals maxfd, it indicates that there are no unused
    fds, and the function can directly return.
    
    Fix this check.
    
    Signed-off-by: Yuntao Wang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Jan Kara <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs: better handle deep ancestor chains in is_subdir() [+ + +]
Author: Christian Brauner <[email protected]>
Date:   Tue Jul 2 21:03:26 2024 +0200

    fs: better handle deep ancestor chains in is_subdir()
    
    [ Upstream commit 391b59b045004d5b985d033263ccba3e941a7740 ]
    
    Jan reported that 'cd ..' may take a long time in deep directory
    hierarchies under a bind-mount. If concurrent renames happen it is
    possible to livelock in is_subdir() because it will keep retrying.
    
    Change is_subdir() from simply retrying over and over to retry once and
    then acquire the rename lock to handle deep ancestor chains better. The
    list of alternatives to this approach were less then pleasant. Change
    the scope of rcu lock to cover the whole walk while at it.
    
    A big thanks to Jan and Linus. Both Jan and Linus had proposed
    effectively the same thing just that one version ended up being slightly
    more elegant.
    
    Reported-by: Jan Kara <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
gcc-plugins: Rename last_stmt() for GCC 14+ [+ + +]
Author: Kees Cook <[email protected]>
Date:   Mon Aug 7 09:41:19 2023 -0700

    gcc-plugins: Rename last_stmt() for GCC 14+
    
    commit 2e3f65ccfe6b0778b261ad69c9603ae85f210334 upstream.
    
    In GCC 14, last_stmt() was renamed to last_nondebug_stmt(). Add a helper
    macro to handle the renaming.
    
    Cc: [email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Cc: Thomas Meyer <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
 
hfsplus: fix uninit-value in copy_name [+ + +]
Author: Edward Adam Davis <[email protected]>
Date:   Tue May 21 13:21:46 2024 +0800

    hfsplus: fix uninit-value in copy_name
    
    [ Upstream commit 0570730c16307a72f8241df12363f76600baf57d ]
    
    [syzbot reported]
    BUG: KMSAN: uninit-value in sized_strscpy+0xc4/0x160
     sized_strscpy+0xc4/0x160
     copy_name+0x2af/0x320 fs/hfsplus/xattr.c:411
     hfsplus_listxattr+0x11e9/0x1a50 fs/hfsplus/xattr.c:750
     vfs_listxattr fs/xattr.c:493 [inline]
     listxattr+0x1f3/0x6b0 fs/xattr.c:840
     path_listxattr fs/xattr.c:864 [inline]
     __do_sys_listxattr fs/xattr.c:876 [inline]
     __se_sys_listxattr fs/xattr.c:873 [inline]
     __x64_sys_listxattr+0x16b/0x2f0 fs/xattr.c:873
     x64_sys_call+0x2ba0/0x3b50 arch/x86/include/generated/asm/syscalls_64.h:195
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcf/0x1e0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Uninit was created at:
     slab_post_alloc_hook mm/slub.c:3877 [inline]
     slab_alloc_node mm/slub.c:3918 [inline]
     kmalloc_trace+0x57b/0xbe0 mm/slub.c:4065
     kmalloc include/linux/slab.h:628 [inline]
     hfsplus_listxattr+0x4cc/0x1a50 fs/hfsplus/xattr.c:699
     vfs_listxattr fs/xattr.c:493 [inline]
     listxattr+0x1f3/0x6b0 fs/xattr.c:840
     path_listxattr fs/xattr.c:864 [inline]
     __do_sys_listxattr fs/xattr.c:876 [inline]
     __se_sys_listxattr fs/xattr.c:873 [inline]
     __x64_sys_listxattr+0x16b/0x2f0 fs/xattr.c:873
     x64_sys_call+0x2ba0/0x3b50 arch/x86/include/generated/asm/syscalls_64.h:195
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcf/0x1e0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [Fix]
    When allocating memory to strbuf, initialize memory to 0.
    
    Reported-and-tested-by: [email protected]
    Signed-off-by: Edward Adam Davis <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reported-and-tested-by: [email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ila: block BH in ila_output() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri May 31 13:26:35 2024 +0000

    ila: block BH in ila_output()
    
    [ Upstream commit cf28ff8e4c02e1ffa850755288ac954b6ff0db8c ]
    
    As explained in commit 1378817486d6 ("tipc: block BH
    before using dst_cache"), net/core/dst_cache.c
    helpers need to be called with BH disabled.
    
    ila_output() is called from lwtunnel_output()
    possibly from process context, and under rcu_read_lock().
    
    We might be interrupted by a softirq, re-enter ila_output()
    and corrupt dst_cache data structures.
    
    Fix the race by using local_bh_disable().
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Acked-by: Paolo Abeni <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Input: elantech - fix touchpad state on resume for Lenovo N24 [+ + +]
Author: Jonathan Denose <[email protected]>
Date:   Fri May 3 16:12:07 2024 +0000

    Input: elantech - fix touchpad state on resume for Lenovo N24
    
    [ Upstream commit a69ce592cbe0417664bc5a075205aa75c2ec1273 ]
    
    The Lenovo N24 on resume becomes stuck in a state where it
    sends incorrect packets, causing elantech_packet_check_v4 to fail.
    The only way for the device to resume sending the correct packets is for
    it to be disabled and then re-enabled.
    
    This change adds a dmi check to trigger this behavior on resume.
    
    Signed-off-by: Jonathan Denose <[email protected]>
    Link: https://lore.kernel.org/r/20240503155020.v2.1.Ifa0e25ebf968d8f307f58d678036944141ab17e6@changeid
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Input: silead - Always support 10 fingers [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Sat May 25 21:38:53 2024 +0200

    Input: silead - Always support 10 fingers
    
    [ Upstream commit 38a38f5a36da9820680d413972cb733349400532 ]
    
    When support for Silead touchscreens was orginal added some touchscreens
    with older firmware versions only supported 5 fingers and this was made
    the default requiring the setting of a "silead,max-fingers=10" uint32
    device-property for all touchscreen models which do support 10 fingers.
    
    There are very few models with the old 5 finger fw, so in practice the
    setting of the "silead,max-fingers=10" is boilerplate which needs to
    be copy and pasted to every touchscreen config.
    
    Reporting that 10 fingers are supported on devices which only support
    5 fingers doesn't cause any problems for userspace in practice, since
    at max 4 finger gestures are supported anyways. Drop the max_fingers
    configuration and simply always assume 10 fingers.
    
    Signed-off-by: Hans de Goede <[email protected]>
    Acked-by: Dmitry Torokhov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
jfs: don't walk off the end of ealist [+ + +]
Author: lei lu <[email protected]>
Date:   Wed May 29 02:30:40 2024 +0800

    jfs: don't walk off the end of ealist
    
    commit d0fa70aca54c8643248e89061da23752506ec0d4 upstream.
    
    Add a check before visiting the members of ea to
    make sure each ea stays within the ealist.
    
    Signed-off-by: lei lu <[email protected]>
    Signed-off-by: Dave Kleikamp <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
kconfig: gconf: give a proper initial state to the Save button [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Sun Jun 2 03:20:40 2024 +0900

    kconfig: gconf: give a proper initial state to the Save button
    
    [ Upstream commit 46edf4372e336ef3a61c3126e49518099d2e2e6d ]
    
    Currently, the initial state of the "Save" button is always active.
    
    If none of the CONFIG options are changed while loading the .config
    file, the "Save" button should be greyed out.
    
    This can be fixed by calling conf_read() after widget initialization.
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

kconfig: remove wrong expr_trans_bool() [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Tue Jun 4 01:19:04 2024 +0900

    kconfig: remove wrong expr_trans_bool()
    
    [ Upstream commit 77a92660d8fe8d29503fae768d9f5eb529c88b36 ]
    
    expr_trans_bool() performs an incorrect transformation.
    
    [Test Code]
    
        config MODULES
                def_bool y
                modules
    
        config A
                def_bool y
                select C if B != n
    
        config B
                def_tristate m
    
        config C
                tristate
    
    [Result]
    
        CONFIG_MODULES=y
        CONFIG_A=y
        CONFIG_B=m
        CONFIG_C=m
    
    This output is incorrect because CONFIG_C=y is expected.
    
    Documentation/kbuild/kconfig-language.rst clearly explains the function
    of the '!=' operator:
    
        If the values of both symbols are equal, it returns 'n',
        otherwise 'y'.
    
    Therefore, the statement:
    
        select C if B != n
    
    should be equivalent to:
    
        select C if y
    
    Or, more simply:
    
        select C
    
    Hence, the symbol C should be selected by the value of A, which is 'y'.
    
    However, expr_trans_bool() wrongly transforms it to:
    
        select C if B
    
    Therefore, the symbol C is selected by (A && B), which is 'm'.
    
    The comment block of expr_trans_bool() correctly explains its intention:
    
      * bool FOO!=n => FOO
        ^^^^
    
    If FOO is bool, FOO!=n can be simplified into FOO. This is correct.
    
    However, the actual code performs this transformation when FOO is
    tristate:
    
        if (e->left.sym->type == S_TRISTATE) {
                                 ^^^^^^^^^^
    
    While it can be fixed to S_BOOLEAN, there is no point in doing so
    because expr_tranform() already transforms FOO!=n to FOO when FOO is
    bool. (see the "case E_UNEQUAL" part)
    
    expr_trans_bool() is wrong and unnecessary.
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Acked-by: Randy Dunlap <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 4.19.319 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Sat Jul 27 10:33:44 2024 +0200

    Linux 4.19.319
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Harshit Mogalapalli <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Pavel Machek (CIP) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mei: demote client disconnect warning on suspend to debug [+ + +]
Author: Alexander Usyskin <[email protected]>
Date:   Thu May 30 12:14:15 2024 +0300

    mei: demote client disconnect warning on suspend to debug
    
    [ Upstream commit 1db5322b7e6b58e1b304ce69a50e9dca798ca95b ]
    
    Change level for the "not connected" client message in the write
    callback from error to debug.
    
    The MEI driver currently disconnects all clients upon system suspend.
    This behavior is by design and user-space applications with
    open connections before the suspend are expected to handle errors upon
    resume, by reopening their handles, reconnecting,
    and retrying their operations.
    
    However, the current driver implementation logs an error message every
    time a write operation is attempted on a disconnected client.
    Since this is a normal and expected flow after system resume
    logging this as an error can be misleading.
    
    Signed-off-by: Alexander Usyskin <[email protected]>
    Signed-off-by: Tomas Winkler <[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]>

 
net: mac802154: Fix racy device stats updates by DEV_STATS_INC() and DEV_STATS_ADD() [+ + +]
Author: Yunshui Jiang <[email protected]>
Date:   Fri May 31 16:07:39 2024 +0800

    net: mac802154: Fix racy device stats updates by DEV_STATS_INC() and DEV_STATS_ADD()
    
    [ Upstream commit b8ec0dc3845f6c9089573cb5c2c4b05f7fc10728 ]
    
    mac802154 devices update their dev->stats fields locklessly. Therefore
    these counters should be updated atomically. Adopt SMP safe DEV_STATS_INC()
    and DEV_STATS_ADD() to achieve this.
    
    Signed-off-by: Yunshui Jiang <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Stefan Schmidt <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: relax socket state check at accept time. [+ + +]
Author: Paolo Abeni <[email protected]>
Date:   Tue May 21 16:01:00 2024 +0200

    net: relax socket state check at accept time.
    
    commit 26afda78cda3da974fd4c287962c169e9462c495 upstream.
    
    Christoph reported the following splat:
    
    WARNING: CPU: 1 PID: 772 at net/ipv4/af_inet.c:761 __inet_accept+0x1f4/0x4a0
    Modules linked in:
    CPU: 1 PID: 772 Comm: syz-executor510 Not tainted 6.9.0-rc7-g7da7119fe22b #56
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.11.0-2.el7 04/01/2014
    RIP: 0010:__inet_accept+0x1f4/0x4a0 net/ipv4/af_inet.c:759
    Code: 04 38 84 c0 0f 85 87 00 00 00 41 c7 04 24 03 00 00 00 48 83 c4 10 5b 41 5c 41 5d 41 5e 41 5f 5d c3 cc cc cc cc e8 ec b7 da fd <0f> 0b e9 7f fe ff ff e8 e0 b7 da fd 0f 0b e9 fe fe ff ff 89 d9 80
    RSP: 0018:ffffc90000c2fc58 EFLAGS: 00010293
    RAX: ffffffff836bdd14 RBX: 0000000000000000 RCX: ffff888104668000
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: dffffc0000000000 R08: ffffffff836bdb89 R09: fffff52000185f64
    R10: dffffc0000000000 R11: fffff52000185f64 R12: dffffc0000000000
    R13: 1ffff92000185f98 R14: ffff88810754d880 R15: ffff8881007b7800
    FS:  000000001c772880(0000) GS:ffff88811b280000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fb9fcf2e178 CR3: 00000001045d2002 CR4: 0000000000770ef0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    PKRU: 55555554
    Call Trace:
     <TASK>
     inet_accept+0x138/0x1d0 net/ipv4/af_inet.c:786
     do_accept+0x435/0x620 net/socket.c:1929
     __sys_accept4_file net/socket.c:1969 [inline]
     __sys_accept4+0x9b/0x110 net/socket.c:1999
     __do_sys_accept net/socket.c:2016 [inline]
     __se_sys_accept net/socket.c:2013 [inline]
     __x64_sys_accept+0x7d/0x90 net/socket.c:2013
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0x58/0x100 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    RIP: 0033:0x4315f9
    Code: fd ff 48 81 c4 80 00 00 00 e9 f1 fe ff ff 0f 1f 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 0f 83 ab b4 fd ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007ffdb26d9c78 EFLAGS: 00000246 ORIG_RAX: 000000000000002b
    RAX: ffffffffffffffda RBX: 0000000000400300 RCX: 00000000004315f9
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000004
    RBP: 00000000006e1018 R08: 0000000000400300 R09: 0000000000400300
    R10: 0000000000400300 R11: 0000000000000246 R12: 0000000000000000
    R13: 000000000040cdf0 R14: 000000000040ce80 R15: 0000000000000055
     </TASK>
    
    The reproducer invokes shutdown() before entering the listener status.
    After commit 94062790aedb ("tcp: defer shutdown(SEND_SHUTDOWN) for
    TCP_SYN_RECV sockets"), the above causes the child to reach the accept
    syscall in FIN_WAIT1 status.
    
    Eric noted we can relax the existing assertion in __inet_accept()
    
    Reported-by: Christoph Paasch <[email protected]>
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/490
    Suggested-by: Eric Dumazet <[email protected]>
    Fixes: 94062790aedb ("tcp: defer shutdown(SEND_SHUTDOWN) for TCP_SYN_RECV sockets")
    Reviewed-by: Eric Dumazet <[email protected]>
    Link: https://lore.kernel.org/r/23ab880a44d8cfd967e84de8b93dbf48848e3d8c.1716299669.git.pabeni@redhat.com
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Nikolay Kuratov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: usb: qmi_wwan: add Telit FN912 compositions [+ + +]
Author: Daniele Palmas <[email protected]>
Date:   Tue Jun 25 12:22:36 2024 +0200

    net: usb: qmi_wwan: add Telit FN912 compositions
    
    [ Upstream commit 77453e2b015b5ced5b3f45364dd5a72dfc3bdecb ]
    
    Add the following Telit FN912 compositions:
    
    0x3000: rmnet + tty (AT/NMEA) + tty (AT) + tty (diag)
    T:  Bus=03 Lev=01 Prnt=03 Port=07 Cnt=01 Dev#=  8 Spd=480  MxCh= 0
    D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=3000 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN912
    S:  SerialNumber=92c4c4d8
    C:  #Ifs= 4 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= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x3001: rmnet + tty (AT) + tty (diag) + DPL (data packet logging) + adb
    T:  Bus=03 Lev=01 Prnt=03 Port=07 Cnt=01 Dev#=  7 Spd=480  MxCh= 0
    D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=3001 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN912
    S:  SerialNumber=92c4c4d8
    C:  #Ifs= 5 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=40 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= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 3 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=80 Driver=(none)
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Daniele Palmas <[email protected]>
    Acked-by: Bjørn Mork <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ocfs2: add bounds checking to ocfs2_check_dir_entry() [+ + +]
Author: lei lu <[email protected]>
Date:   Wed Jun 26 18:44:33 2024 +0800

    ocfs2: add bounds checking to ocfs2_check_dir_entry()
    
    commit 255547c6bb8940a97eea94ef9d464ea5967763fb upstream.
    
    This adds sanity checks for ocfs2_dir_entry to make sure all members of
    ocfs2_dir_entry don't stray beyond valid memory region.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: lei lu <[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: Gang He <[email protected]>
    Cc: Jun Piao <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
s390/sclp: Fix sclp_init() cleanup on failure [+ + +]
Author: Heiko Carstens <[email protected]>
Date:   Fri Jun 14 18:09:01 2024 +0200

    s390/sclp: Fix sclp_init() cleanup on failure
    
    [ Upstream commit 6434b33faaa063df500af355ee6c3942e0f8d982 ]
    
    If sclp_init() fails it only partially cleans up: if there are multiple
    failing calls to sclp_init() sclp_state_change_event will be added several
    times to sclp_reg_list, which results in the following warning:
    
    ------------[ cut here ]------------
    list_add double add: new=000003ffe1598c10, prev=000003ffe1598bf0, next=000003ffe1598c10.
    WARNING: CPU: 0 PID: 1 at lib/list_debug.c:35 __list_add_valid_or_report+0xde/0xf8
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.10.0-rc3
    Krnl PSW : 0404c00180000000 000003ffe0d6076a (__list_add_valid_or_report+0xe2/0xf8)
               R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:3 CC:0 PM:0 RI:0 EA:3
    ...
    Call Trace:
     [<000003ffe0d6076a>] __list_add_valid_or_report+0xe2/0xf8
    ([<000003ffe0d60766>] __list_add_valid_or_report+0xde/0xf8)
     [<000003ffe0a8d37e>] sclp_init+0x40e/0x450
     [<000003ffe00009f2>] do_one_initcall+0x42/0x1e0
     [<000003ffe15b77a6>] do_initcalls+0x126/0x150
     [<000003ffe15b7a0a>] kernel_init_freeable+0x1ba/0x1f8
     [<000003ffe0d6650e>] kernel_init+0x2e/0x180
     [<000003ffe000301c>] __ret_from_fork+0x3c/0x60
     [<000003ffe0d759ca>] ret_from_fork+0xa/0x30
    
    Fix this by removing sclp_state_change_event from sclp_reg_list when
    sclp_init() fails.
    
    Reviewed-by: Peter Oberparleiter <[email protected]>
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Alexander Gordeev <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
scsi: qedf: Set qed_slowpath_params to zero before use [+ + +]
Author: Saurav Kashyap <[email protected]>
Date:   Wed May 15 14:41:01 2024 +0530

    scsi: qedf: Set qed_slowpath_params to zero before use
    
    [ Upstream commit 6c3bb589debd763dc4b94803ddf3c13b4fcca776 ]
    
    Zero qed_slowpath_params before use.
    
    Signed-off-by: Saurav Kashyap <[email protected]>
    Signed-off-by: Nilesh Javali <[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]>

 
selftests/vDSO: fix clang build errors and warnings [+ + +]
Author: John Hubbard <[email protected]>
Date:   Fri Jul 5 09:57:34 2024 -1000

    selftests/vDSO: fix clang build errors and warnings
    
    [ Upstream commit 73810cd45b99c6c418e1c6a487b52c1e74edb20d ]
    
    When building with clang, via:
    
        make LLVM=1 -C tools/testing/selftests
    
    ...there are several warnings, and an error. This fixes all of those and
    allows these tests to run and pass.
    
    1. Fix linker error (undefined reference to memcpy) by providing a local
       version of memcpy.
    
    2. clang complains about using this form:
    
        if (g = h & 0xf0000000)
    
    ...so factor out the assignment into a separate step.
    
    3. The code is passing a signed const char* to elf_hash(), which expects
       a const unsigned char *. There are several callers, so fix this at
       the source by allowing the function to accept a signed argument, and
       then converting to unsigned operations, once inside the function.
    
    4. clang doesn't have __attribute__((externally_visible)) and generates
       a warning to that effect. Fortunately, gcc 12 and gcc 13 do not seem
       to require that attribute in order to build, run and pass tests here,
       so remove it.
    
    Reviewed-by: Carlos Llamas <[email protected]>
    Reviewed-by: Edward Liaw <[email protected]>
    Reviewed-by: Muhammad Usama Anjum <[email protected]>
    Tested-by: Muhammad Usama Anjum <[email protected]>
    Signed-off-by: John Hubbard <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
spi: imx: Don't expect DMA for i.MX{25,35,50,51,53} cspi devices [+ + +]
Author: Uwe Kleine-König <[email protected]>
Date:   Wed May 8 11:56:10 2024 +0200

    spi: imx: Don't expect DMA for i.MX{25,35,50,51,53} cspi devices
    
    [ Upstream commit ce1dac560a74220f2e53845ec0723b562288aed4 ]
    
    While in commit 2dd33f9cec90 ("spi: imx: support DMA for imx35") it was
    claimed that DMA works on i.MX25, i.MX31 and i.MX35 the respective
    device trees don't add DMA channels. The Reference manuals of i.MX31 and
    i.MX25 also don't mention the CSPI core being DMA capable. (I didn't
    check the others.)
    
    Since commit e267a5b3ec59 ("spi: spi-imx: Use dev_err_probe for failed
    DMA channel requests") this results in an error message
    
            spi_imx 43fa4000.spi: error -ENODEV: can't get the TX DMA channel!
    
    during boot. However that isn't fatal and the driver gets loaded just
    fine, just without using DMA.
    
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
wifi: cfg80211: wext: add extra SIOCSIWSCAN data check [+ + +]
Author: Dmitry Antipov <[email protected]>
Date:   Fri May 31 06:20:10 2024 +0300

    wifi: cfg80211: wext: add extra SIOCSIWSCAN data check
    
    [ Upstream commit 6ef09cdc5ba0f93826c09d810c141a8d103a80fc ]
    
    In 'cfg80211_wext_siwscan()', add extra check whether number of
    channels passed via 'ioctl(sock, SIOCSIWSCAN, ...)' doesn't exceed
    IW_MAX_FREQUENCIES and reject invalid request with -EINVAL otherwise.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=253cd2d2491df77c93ac
    Signed-off-by: Dmitry Antipov <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: fix UBSAN noise in ieee80211_prep_hw_scan() [+ + +]
Author: Dmitry Antipov <[email protected]>
Date:   Fri May 17 18:33:32 2024 +0300

    wifi: mac80211: fix UBSAN noise in ieee80211_prep_hw_scan()
    
    [ Upstream commit 92ecbb3ac6f3fe8ae9edf3226c76aa17b6800699 ]
    
    When testing the previous patch with CONFIG_UBSAN_BOUNDS, I've
    noticed the following:
    
    UBSAN: array-index-out-of-bounds in net/mac80211/scan.c:372:4
    index 0 is out of range for type 'struct ieee80211_channel *[]'
    CPU: 0 PID: 1435 Comm: wpa_supplicant Not tainted 6.9.0+ #1
    Hardware name: LENOVO 20UN005QRT/20UN005QRT <...BIOS details...>
    Call Trace:
     <TASK>
     dump_stack_lvl+0x2d/0x90
     __ubsan_handle_out_of_bounds+0xe7/0x140
     ? timerqueue_add+0x98/0xb0
     ieee80211_prep_hw_scan+0x2db/0x480 [mac80211]
     ? __kmalloc+0xe1/0x470
     __ieee80211_start_scan+0x541/0x760 [mac80211]
     rdev_scan+0x1f/0xe0 [cfg80211]
     nl80211_trigger_scan+0x9b6/0xae0 [cfg80211]
     ...<the rest is not too useful...>
    
    Since '__ieee80211_start_scan()' leaves 'hw_scan_req->req.n_channels'
    uninitialized, actual boundaries of 'hw_scan_req->req.channels' can't
    be checked in 'ieee80211_prep_hw_scan()'. Although an initialization
    of 'hw_scan_req->req.n_channels' introduces some confusion around
    allocated vs. used VLA members, this shouldn't be a problem since
    everything is correctly adjusted soon in 'ieee80211_prep_hw_scan()'.
    
    Cleanup 'kmalloc()' math in '__ieee80211_start_scan()' by using the
    convenient 'struct_size()' as well.
    
    Signed-off-by: Dmitry Antipov <[email protected]>
    Link: https://msgid.link/[email protected]
    [improve (imho) indentation a bit]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: mesh: init nonpeer_pm to active by default in mesh sdata [+ + +]
Author: Nicolas Escande <[email protected]>
Date:   Mon May 27 16:17:59 2024 +0200

    wifi: mac80211: mesh: init nonpeer_pm to active by default in mesh sdata
    
    [ Upstream commit 6f6291f09a322c1c1578badac8072d049363f4e6 ]
    
    With a ath9k device I can see that:
            iw phy phy0 interface add mesh0 type mp
            ip link set mesh0 up
            iw dev mesh0 scan
    
    Will start a scan with the Power Management bit set in the Frame Control Field.
    This is because we set this bit depending on the nonpeer_pm variable of the mesh
    iface sdata and when there are no active links on the interface it remains to
    NL80211_MESH_POWER_UNKNOWN.
    
    As soon as links starts to be established, it wil switch to
    NL80211_MESH_POWER_ACTIVE as it is the value set by befault on the per sta
    nonpeer_pm field.
    As we want no power save by default, (as expressed with the per sta ini values),
    lets init it to the expected default value of NL80211_MESH_POWER_ACTIVE.
    
    Also please note that we cannot change the default value from userspace prior to
    establishing a link as using NL80211_CMD_SET_MESH_CONFIG will not work before
    NL80211_CMD_JOIN_MESH has been issued. So too late for our initial scan.
    
    Signed-off-by: Nicolas Escande <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>