Changelog in Linux kernel 6.1.118

 
9p: Avoid creating multiple slab caches with the same name [+ + +]
Author: Pedro Falcato <[email protected]>
Date:   Wed Aug 7 10:47:25 2024 +0100

    9p: Avoid creating multiple slab caches with the same name
    
    [ Upstream commit 79efebae4afc2221fa814c3cae001bede66ab259 ]
    
    In the spirit of [1], avoid creating multiple slab caches with the same
    name. Instead, add the dev_name into the mix.
    
    [1]: https://lore.kernel.org/all/[email protected]/
    
    Signed-off-by: Pedro Falcato <[email protected]>
    Reported-by: [email protected]
    Message-ID: <[email protected]>
    Signed-off-by: Dominique Martinet <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

9p: fix slab cache name creation for real [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Mon Oct 21 11:57:38 2024 -0700

    9p: fix slab cache name creation for real
    
    commit a360f311f57a36e96d88fa8086b749159714dcd2 upstream.
    
    This was attempted by using the dev_name in the slab cache name, but as
    Omar Sandoval pointed out, that can be an arbitrary string, eg something
    like "/dev/root".  Which in turn trips verify_dirent_name(), which fails
    if a filename contains a slash.
    
    So just make it use a sequence counter, and make it an atomic_t to avoid
    any possible races or locking issues.
    
    Reported-and-tested-by: Omar Sandoval <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]/
    Fixes: 79efebae4afc ("9p: Avoid creating multiple slab caches with the same name")
    Acked-by: Vlastimil Babka <[email protected]>
    Cc: Dominique Martinet <[email protected]>
    Cc: Thorsten Leemhuis <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
block: Fix elevator_get_default() checking for NULL q->tag_set [+ + +]
Author: SurajSonawane2415 <[email protected]>
Date:   Mon Oct 7 16:44:16 2024 +0530

    block: Fix elevator_get_default() checking for NULL q->tag_set
    
    [ Upstream commit b402328a24ee7193a8ab84277c0c90ae16768126 ]
    
    elevator_get_default() and elv_support_iosched() both check for whether
    or not q->tag_set is non-NULL, however it's not possible for them to be
    NULL. This messes up some static checkers, as the checking of tag_set
    isn't consistent.
    
    Remove the checks, which both simplifies the logic and avoids checker
    errors.
    
    Signed-off-by: SurajSonawane2415 <[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: Fix uaf in l2cap_connect [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Mon Sep 23 12:47:39 2024 -0400

    Bluetooth: L2CAP: Fix uaf in l2cap_connect
    
    commit 333b4fd11e89b29c84c269123f871883a30be586 upstream.
    
    [Syzbot reported]
    BUG: KASAN: slab-use-after-free in l2cap_connect.constprop.0+0x10d8/0x1270 net/bluetooth/l2cap_core.c:3949
    Read of size 8 at addr ffff8880241e9800 by task kworker/u9:0/54
    
    CPU: 0 UID: 0 PID: 54 Comm: kworker/u9:0 Not tainted 6.11.0-rc6-syzkaller-00268-g788220eee30d #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/06/2024
    Workqueue: hci2 hci_rx_work
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:93 [inline]
     dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:119
     print_address_description mm/kasan/report.c:377 [inline]
     print_report+0xc3/0x620 mm/kasan/report.c:488
     kasan_report+0xd9/0x110 mm/kasan/report.c:601
     l2cap_connect.constprop.0+0x10d8/0x1270 net/bluetooth/l2cap_core.c:3949
     l2cap_connect_req net/bluetooth/l2cap_core.c:4080 [inline]
     l2cap_bredr_sig_cmd net/bluetooth/l2cap_core.c:4772 [inline]
     l2cap_sig_channel net/bluetooth/l2cap_core.c:5543 [inline]
     l2cap_recv_frame+0xf0b/0x8eb0 net/bluetooth/l2cap_core.c:6825
     l2cap_recv_acldata+0x9b4/0xb70 net/bluetooth/l2cap_core.c:7514
     hci_acldata_packet net/bluetooth/hci_core.c:3791 [inline]
     hci_rx_work+0xaab/0x1610 net/bluetooth/hci_core.c:4028
     process_one_work+0x9c5/0x1b40 kernel/workqueue.c:3231
     process_scheduled_works kernel/workqueue.c:3312 [inline]
     worker_thread+0x6c8/0xed0 kernel/workqueue.c:3389
     kthread+0x2c1/0x3a0 kernel/kthread.c:389
     ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
     ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
    ...
    
    Freed by task 5245:
     kasan_save_stack+0x33/0x60 mm/kasan/common.c:47
     kasan_save_track+0x14/0x30 mm/kasan/common.c:68
     kasan_save_free_info+0x3b/0x60 mm/kasan/generic.c:579
     poison_slab_object+0xf7/0x160 mm/kasan/common.c:240
     __kasan_slab_free+0x32/0x50 mm/kasan/common.c:256
     kasan_slab_free include/linux/kasan.h:184 [inline]
     slab_free_hook mm/slub.c:2256 [inline]
     slab_free mm/slub.c:4477 [inline]
     kfree+0x12a/0x3b0 mm/slub.c:4598
     l2cap_conn_free net/bluetooth/l2cap_core.c:1810 [inline]
     kref_put include/linux/kref.h:65 [inline]
     l2cap_conn_put net/bluetooth/l2cap_core.c:1822 [inline]
     l2cap_conn_del+0x59d/0x730 net/bluetooth/l2cap_core.c:1802
     l2cap_connect_cfm+0x9e6/0xf80 net/bluetooth/l2cap_core.c:7241
     hci_connect_cfm include/net/bluetooth/hci_core.h:1960 [inline]
     hci_conn_failed+0x1c3/0x370 net/bluetooth/hci_conn.c:1265
     hci_abort_conn_sync+0x75a/0xb50 net/bluetooth/hci_sync.c:5583
     abort_conn_sync+0x197/0x360 net/bluetooth/hci_conn.c:2917
     hci_cmd_sync_work+0x1a4/0x410 net/bluetooth/hci_sync.c:328
     process_one_work+0x9c5/0x1b40 kernel/workqueue.c:3231
     process_scheduled_works kernel/workqueue.c:3312 [inline]
     worker_thread+0x6c8/0xed0 kernel/workqueue.c:3389
     kthread+0x2c1/0x3a0 kernel/kthread.c:389
     ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
     ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
    
    Reported-by: [email protected]
    Tested-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=c12e2f941af1feb5632c
    Fixes: 7b064edae38d ("Bluetooth: Fix authentication if acl data comes before remote feature evt")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    [Xiangyu: Modified to bp this commit to fix CVE-2024-49950]
    Signed-off-by: Xiangyu Chen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
bpf: Fix mismatched RCU unlock flavour in bpf_out_neigh_v6 [+ + +]
Author: Jiawei Ye <[email protected]>
Date:   Fri Nov 8 08:18:52 2024 +0000

    bpf: Fix mismatched RCU unlock flavour in bpf_out_neigh_v6
    
    [ Upstream commit fb86c42a2a5d44e849ddfbc98b8d2f4f40d36ee3 ]
    
    In the bpf_out_neigh_v6 function, rcu_read_lock() is used to begin an RCU
    read-side critical section. However, when unlocking, one branch
    incorrectly uses a different RCU unlock flavour rcu_read_unlock_bh()
    instead of rcu_read_unlock(). This mismatch in RCU locking flavours can
    lead to unexpected behavior and potential concurrency issues.
    
    This possible bug was identified using a static analysis tool developed
    by myself, specifically designed to detect RCU-related issues.
    
    This patch corrects the mismatched unlock flavour by replacing the
    incorrect rcu_read_unlock_bh() with the appropriate rcu_read_unlock(),
    ensuring that the RCU critical section is properly exited. This change
    prevents potential synchronization issues and aligns with proper RCU
    usage patterns.
    
    Fixes: 09eed1192cec ("neighbour: switch to standard rcu, instead of rcu_bh")
    Signed-off-by: Jiawei Ye <[email protected]>
    Acked-by: Yonghong Song <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin KaFai Lau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: use kvzmalloc to allocate BPF verifier environment [+ + +]
Author: Rik van Riel <[email protected]>
Date:   Tue Oct 8 17:07:35 2024 -0400

    bpf: use kvzmalloc to allocate BPF verifier environment
    
    [ Upstream commit 434247637c66e1be2bc71a9987d4c3f0d8672387 ]
    
    The kzmalloc call in bpf_check can fail when memory is very fragmented,
    which in turn can lead to an OOM kill.
    
    Use kvzmalloc to fall back to vmalloc when memory is too fragmented to
    allocate an order 3 sized bpf verifier environment.
    
    Admittedly this is not a very common case, and only happens on systems
    where memory has already been squeezed close to the limit, but this does
    not seem like much of a hot path, and it's a simple enough fix.
    
    Signed-off-by: Rik van Riel <[email protected]>
    Reviewed-by: Shakeel Butt <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
crypto: api - Fix liveliness check in crypto_alg_tested [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Sun Oct 6 09:18:37 2024 +0800

    crypto: api - Fix liveliness check in crypto_alg_tested
    
    [ Upstream commit b81e286ba154a4e0f01a94d99179a97f4ba3e396 ]
    
    As algorithm testing is carried out without holding the main crypto
    lock, it is always possible for the algorithm to go away during the
    test.
    
    So before crypto_alg_tested updates the status of the tested alg,
    it checks whether it's still on the list of all algorithms.  This
    is inaccurate because it may be off the main list but still on the
    list of algorithms to be removed.
    
    Updating the algorithm status is safe per se as the larval still
    holds a reference to it.  However, killing spawns of other algorithms
    that are of lower priority is clearly a deficiency as it adds
    unnecessary churn.
    
    Fix the test by checking whether the algorithm is dead.
    
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: marvell/cesa - Disable hash algorithms [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Wed Oct 9 16:38:48 2024 +0800

    crypto: marvell/cesa - Disable hash algorithms
    
    [ Upstream commit e845d2399a00f866f287e0cefbd4fc7d8ef0d2f7 ]
    
    Disable cesa hash algorithms by lowering the priority because they
    appear to be broken when invoked in parallel.  This allows them to
    still be tested for debugging purposes.
    
    Reported-by: Klaus Kudielka <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdkfd: amdkfd_free_gtt_mem clear the correct pointer [+ + +]
Author: Philip Yang <[email protected]>
Date:   Sun Jul 14 11:11:05 2024 -0400

    drm/amdkfd: amdkfd_free_gtt_mem clear the correct pointer
    
    commit c86ad39140bbcb9dc75a10046c2221f657e8083b upstream.
    
    Pass pointer reference to amdgpu_bo_unref to clear the correct pointer,
    otherwise amdgpu_bo_unref clear the local variable, the original pointer
    not set to NULL, this could cause use-after-free bug.
    
    Signed-off-by: Philip Yang <[email protected]>
    Reviewed-by: Felix Kuehling <[email protected]>
    Acked-by: Christian König <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Vamsi Krishna Brahmajosyula <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/vmwgfx: Limit display layout ioctl array size to VMWGFX_NUM_DISPLAY_UNITS [+ + +]
Author: Ian Forbes <[email protected]>
Date:   Thu Aug 8 15:06:34 2024 -0500

    drm/vmwgfx: Limit display layout ioctl array size to VMWGFX_NUM_DISPLAY_UNITS
    
    [ Upstream commit 28a5dfd4f615539fb22fb6d5c219c199c14e6eb6 ]
    
    Currently the array size is only limited by the largest kmalloc size which
    is incorrect. This change will also return a more specific error message
    than ENOMEM to userspace.
    
    Signed-off-by: Ian Forbes <[email protected]>
    Reviewed-by: Zack Rusin <[email protected]>
    Reviewed-by: Martin Krastev <[email protected]>
    Signed-off-by: Zack Rusin <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
ext4: fix timer use-after-free on failed mount [+ + +]
Author: Xiaxi Shen <[email protected]>
Date:   Sun Jul 14 21:33:36 2024 -0700

    ext4: fix timer use-after-free on failed mount
    
    commit 0ce160c5bdb67081a62293028dc85758a8efb22a upstream.
    
    Syzbot has found an ODEBUG bug in ext4_fill_super
    
    The del_timer_sync function cancels the s_err_report timer,
    which reminds about filesystem errors daily. We should
    guarantee the timer is no longer active before kfree(sbi).
    
    When filesystem mounting fails, the flow goes to failed_mount3,
    where an error occurs when ext4_stop_mmpd is called, causing
    a read I/O failure. This triggers the ext4_handle_error function
    that ultimately re-arms the timer,
    leaving the s_err_report timer active before kfree(sbi) is called.
    
    Fix the issue by canceling the s_err_report timer after calling ext4_stop_mmpd.
    
    Signed-off-by: Xiaxi Shen <[email protected]>
    Reported-and-tested-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=59e0101c430934bc9a36
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Cc: [email protected]
    Signed-off-by: Xiangyu Chen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
fs/ntfs3: Fix general protection fault in run_is_mapped_full [+ + +]
Author: Konstantin Komarov <[email protected]>
Date:   Fri Aug 30 13:50:18 2024 +0300

    fs/ntfs3: Fix general protection fault in run_is_mapped_full
    
    commit a33fb016e49e37aafab18dc3c8314d6399cb4727 upstream.
    
    Fixed deleating of a non-resident attribute in ntfs_create_inode()
    rollback.
    
    Reported-by: [email protected]
    Signed-off-by: Konstantin Komarov <[email protected]>
    Signed-off-by: Bin Lan <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
fs: Fix uninitialized value issue in from_kuid and from_kgid [+ + +]
Author: Alessandro Zanni <[email protected]>
Date:   Thu Oct 17 14:05:51 2024 +0200

    fs: Fix uninitialized value issue in from_kuid and from_kgid
    
    [ Upstream commit 15f34347481648a567db67fb473c23befb796af5 ]
    
    ocfs2_setattr() uses attr->ia_mode, attr->ia_uid and attr->ia_gid in
    a trace point even though ATTR_MODE, ATTR_UID and ATTR_GID aren't set.
    
    Initialize all fields of newattrs to avoid uninitialized variables, by
    checking if ATTR_MODE, ATTR_UID, ATTR_GID are initialized, otherwise 0.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=6c55f725d1bdc8c52058
    Signed-off-by: Alessandro Zanni <[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]>

 
HID: lenovo: Add support for Thinkpad X1 Tablet Gen 3 keyboard [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Thu Oct 10 11:45:12 2024 +0200

    HID: lenovo: Add support for Thinkpad X1 Tablet Gen 3 keyboard
    
    [ Upstream commit 51268879eb2bfc563a91cdce69362d9dbf707e7e ]
    
    The Thinkpad X1 Tablet Gen 3 keyboard has the same Lenovo specific quirks
    as the original  Thinkpad X1 Tablet keyboard.
    
    Add the PID for the "Thinkpad X1 Tablet Gen 3 keyboard" to the hid-lenovo
    driver to fix the FnLock, Mute and media buttons not working.
    
    Suggested-by: Izhar Firdaus <[email protected]>
    Closes https://bugzilla.redhat.com/show_bug.cgi?id=2315395
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: multitouch: Add quirk for HONOR MagicBook Art 14 touchpad [+ + +]
Author: WangYuli <[email protected]>
Date:   Mon Oct 7 12:08:03 2024 +0800

    HID: multitouch: Add quirk for HONOR MagicBook Art 14 touchpad
    
    [ Upstream commit 7a5ab8071114344f62a8b1e64ed3452a77257d76 ]
    
    The behavior of HONOR MagicBook Art 14 touchpad is not consistent
    after reboots, as sometimes it reports itself as a touchpad, and
    sometimes as a mouse.
    
    Similarly to GLO-GXXX it is possible to call MT_QUIRK_FORCE_GET_FEATURE as a
    workaround to force set feature in mt_set_input_mode() for such special touchpad
    device.
    
    [[email protected]: reword changelog a little bit]
    Link: https://gitlab.freedesktop.org/libinput/libinput/-/issues/1040
    Signed-off-by: Wentao Guan <[email protected]>
    Signed-off-by: WangYuli <[email protected]>
    Reviewed-by: Benjamin Tissoires <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: multitouch: Add quirk for Logitech Bolt receiver w/ Casa touchpad [+ + +]
Author: Kenneth Albanowski <[email protected]>
Date:   Fri Oct 4 10:24:29 2024 -0700

    HID: multitouch: Add quirk for Logitech Bolt receiver w/ Casa touchpad
    
    [ Upstream commit 526748b925185e95f1415900ee13c2469d4b64cc ]
    
    The Logitech Casa Touchpad does not reliably send touch release signals
    when communicating through the Logitech Bolt wireless-to-USB receiver.
    
    Adjusting the device class to add MT_QUIRK_NOT_SEEN_MEANS_UP to make
    sure that no touches become stuck, MT_QUIRK_FORCE_MULTI_INPUT is not
    needed, but harmless.
    
    Linux does not have information on which devices are connected to the
    Bolt receiver, so we have to enable this for the entire device.
    
    Signed-off-by: Kenneth Albanowski <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: multitouch: Add support for B2402FVA track point [+ + +]
Author: Stefan Blum <[email protected]>
Date:   Sun Oct 6 10:12:23 2024 +0200

    HID: multitouch: Add support for B2402FVA track point
    
    [ Upstream commit 1a5cbb526ec4b885177d06a8bc04f38da7dbb1d9 ]
    
    By default the track point does not work on the Asus Expertbook B2402FVA.
    
    From libinput record i got the ID of the track point device:
      evdev:
        # Name: ASUE1201:00 04F3:32AE
        # ID: bus 0x18 vendor 0x4f3 product 0x32ae version 0x100
    
    I found that the track point is functional, when i set the
    MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU class for the reported device.
    
    Signed-off-by: Stefan Blum <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
io_uring: fix possible deadlock in io_register_iowq_max_workers() [+ + +]
Author: Hagar Hemdan <[email protected]>
Date:   Tue Jun 4 13:05:27 2024 +0000

    io_uring: fix possible deadlock in io_register_iowq_max_workers()
    
    commit 73254a297c2dd094abec7c9efee32455ae875bdf upstream.
    
    The io_register_iowq_max_workers() function calls io_put_sq_data(),
    which acquires the sqd->lock without releasing the uring_lock.
    Similar to the commit 009ad9f0c6ee ("io_uring: drop ctx->uring_lock
    before acquiring sqd->lock"), this can lead to a potential deadlock
    situation.
    
    To resolve this issue, the uring_lock is released before calling
    io_put_sq_data(), and then it is re-acquired after the function call.
    
    This change ensures that the locks are acquired in the correct
    order, preventing the possibility of a deadlock.
    
    Suggested-by: Maximilian Heyne <[email protected]>
    Signed-off-by: Hagar Hemdan <[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]>

 
irqchip/ocelot: Fix trigger register address [+ + +]
Author: Sergey Matsievskiy <[email protected]>
Date:   Wed Sep 25 21:44:15 2024 +0300

    irqchip/ocelot: Fix trigger register address
    
    [ Upstream commit 9e9c4666abb5bb444dac37e2d7eb5250c8d52a45 ]
    
    Controllers, supported by this driver, have two sets of registers:
    
     * (main) interrupt registers control peripheral interrupt sources.
    
     * device interrupt registers configure per-device (network interface)
       interrupts and act as an extra stage before the main interrupt
       registers.
    
    In the driver unmask code, device trigger registers are used in the mask
    calculation of the main interrupt sticky register, mixing two kinds of
    registers.
    
    Use the main interrupt trigger register instead.
    
    Signed-off-by: Sergey Matsievskiy <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 6.1.118 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Sun Nov 17 15:07:22 2024 +0100

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

 
LoongArch: Use "Exception return address" to comment ERA [+ + +]
Author: Yanteng Si <[email protected]>
Date:   Mon Oct 21 22:11:18 2024 +0800

    LoongArch: Use "Exception return address" to comment ERA
    
    [ Upstream commit b69269c870ece1bc7d2e3e39ca76f4602f2cb0dd ]
    
    The information contained in the comment for LOONGARCH_CSR_ERA is even
    less informative than the macro itself, which can cause confusion for
    junior developers. Let's use the full English term.
    
    Signed-off-by: Yanteng Si <[email protected]>
    Signed-off-by: Huacai Chen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
md/raid10: improve code of mrdev in raid10_sync_request [+ + +]
Author: Li Nan <[email protected]>
Date:   Sat May 27 15:22:16 2023 +0800

    md/raid10: improve code of mrdev in raid10_sync_request
    
    commit 59f8f0b54c8ffb4521f6bbd1cb6f4dfa5022e75e upstream.
    
    'need_recover' and 'mrdev' are equivalent in raid10_sync_request(), and
    inc mrdev->nr_pending is unreasonable if don't need recovery. Replace
    'need_recover' with 'mrdev', and only inc nr_pending when needed.
    
    Signed-off-by: Li Nan <[email protected]>
    Reviewed-by: Yu Kuai <[email protected]>
    Signed-off-by: Song Liu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: Hagar Gamal Halim <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm: krealloc: Fix MTE false alarm in __do_krealloc [+ + +]
Author: Qun-Wei Lin <[email protected]>
Date:   Fri Oct 25 16:58:11 2024 +0800

    mm: krealloc: Fix MTE false alarm in __do_krealloc
    
    commit 704573851b51808b45dae2d62059d1d8189138a2 upstream.
    
    This patch addresses an issue introduced by commit 1a83a716ec233 ("mm:
    krealloc: consider spare memory for __GFP_ZERO") which causes MTE
    (Memory Tagging Extension) to falsely report a slab-out-of-bounds error.
    
    The problem occurs when zeroing out spare memory in __do_krealloc. The
    original code only considered software-based KASAN and did not account
    for MTE. It does not reset the KASAN tag before calling memset, leading
    to a mismatch between the pointer tag and the memory tag, resulting
    in a false positive.
    
    Example of the error:
    ==================================================================
    swapper/0: BUG: KASAN: slab-out-of-bounds in __memset+0x84/0x188
    swapper/0: Write at addr f4ffff8005f0fdf0 by task swapper/0/1
    swapper/0: Pointer tag: [f4], memory tag: [fe]
    swapper/0:
    swapper/0: CPU: 4 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.12.
    swapper/0: Hardware name: MT6991(ENG) (DT)
    swapper/0: Call trace:
    swapper/0:  dump_backtrace+0xfc/0x17c
    swapper/0:  show_stack+0x18/0x28
    swapper/0:  dump_stack_lvl+0x40/0xa0
    swapper/0:  print_report+0x1b8/0x71c
    swapper/0:  kasan_report+0xec/0x14c
    swapper/0:  __do_kernel_fault+0x60/0x29c
    swapper/0:  do_bad_area+0x30/0xdc
    swapper/0:  do_tag_check_fault+0x20/0x34
    swapper/0:  do_mem_abort+0x58/0x104
    swapper/0:  el1_abort+0x3c/0x5c
    swapper/0:  el1h_64_sync_handler+0x80/0xcc
    swapper/0:  el1h_64_sync+0x68/0x6c
    swapper/0:  __memset+0x84/0x188
    swapper/0:  btf_populate_kfunc_set+0x280/0x3d8
    swapper/0:  __register_btf_kfunc_id_set+0x43c/0x468
    swapper/0:  register_btf_kfunc_id_set+0x48/0x60
    swapper/0:  register_nf_nat_bpf+0x1c/0x40
    swapper/0:  nf_nat_init+0xc0/0x128
    swapper/0:  do_one_initcall+0x184/0x464
    swapper/0:  do_initcall_level+0xdc/0x1b0
    swapper/0:  do_initcalls+0x70/0xc0
    swapper/0:  do_basic_setup+0x1c/0x28
    swapper/0:  kernel_init_freeable+0x144/0x1b8
    swapper/0:  kernel_init+0x20/0x1a8
    swapper/0:  ret_from_fork+0x10/0x20
    ==================================================================
    
    Fixes: 1a83a716ec233 ("mm: krealloc: consider spare memory for __GFP_ZERO")
    Signed-off-by: Qun-Wei Lin <[email protected]>
    Acked-by: David Rientjes <[email protected]>
    Signed-off-by: Vlastimil Babka <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net: usb: qmi_wwan: add Fibocom FG132 0x0112 composition [+ + +]
Author: Reinhard Speyerer <[email protected]>
Date:   Fri Oct 18 22:52:55 2024 +0200

    net: usb: qmi_wwan: add Fibocom FG132 0x0112 composition
    
    [ Upstream commit 64761c980cbf71fb7a532a8c7299907ea972a88c ]
    
    Add Fibocom FG132 0x0112 composition:
    
    T:  Bus=03 Lev=02 Prnt=06 Port=01 Cnt=02 Dev#= 10 Spd=12   MxCh= 0
    D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2cb7 ProdID=0112 Rev= 5.15
    S:  Manufacturer=Fibocom Wireless Inc.
    S:  Product=Fibocom Module
    S:  SerialNumber=xxxxxxxx
    C:* #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=86(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    
    Signed-off-by: Reinhard Speyerer <[email protected]>
    
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvme-multipath: defer partition scanning [+ + +]
Author: Keith Busch <[email protected]>
Date:   Tue Oct 15 07:30:17 2024 -0700

    nvme-multipath: defer partition scanning
    
    [ Upstream commit 1f021341eef41e77a633186e9be5223de2ce5d48 ]
    
    We need to suppress the partition scan from occuring within the
    controller's scan_work context. If a path error occurs here, the IO will
    wait until a path becomes available or all paths are torn down, but that
    action also occurs within scan_work, so it would deadlock. Defer the
    partion scan to a different context that does not block scan_work.
    
    Reported-by: Hannes Reinecke <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvme: disable CC.CRIME (NVME_CC_CRIME) [+ + +]
Author: Greg Joyce <[email protected]>
Date:   Mon Oct 7 14:33:24 2024 -0500

    nvme: disable CC.CRIME (NVME_CC_CRIME)
    
    [ Upstream commit 0ce96a6708f34280a536263ee5c67e20c433dcce ]
    
    Disable NVME_CC_CRIME so that CSTS.RDY indicates that the media
    is ready and able to handle commands without returning
    NVME_SC_ADMIN_COMMAND_MEDIA_NOT_READY.
    
    Signed-off-by: Greg Joyce <[email protected]>
    Reviewed-by: Nilay Shroff <[email protected]>
    Tested-by: Nilay Shroff <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nvme: make keep-alive synchronous operation [+ + +]
Author: Nilay Shroff <[email protected]>
Date:   Wed Oct 16 08:33:15 2024 +0530

    nvme: make keep-alive synchronous operation
    
    [ Upstream commit d06923670b5a5f609603d4a9fee4dec02d38de9c ]
    
    The nvme keep-alive operation, which executes at a periodic interval,
    could potentially sneak in while shutting down a fabric controller.
    This may lead to a race between the fabric controller admin queue
    destroy code path (invoked while shutting down controller) and hw/hctx
    queue dispatcher called from the nvme keep-alive async request queuing
    operation. This race could lead to the kernel crash shown below:
    
    Call Trace:
        autoremove_wake_function+0x0/0xbc (unreliable)
        __blk_mq_sched_dispatch_requests+0x114/0x24c
        blk_mq_sched_dispatch_requests+0x44/0x84
        blk_mq_run_hw_queue+0x140/0x220
        nvme_keep_alive_work+0xc8/0x19c [nvme_core]
        process_one_work+0x200/0x4e0
        worker_thread+0x340/0x504
        kthread+0x138/0x140
        start_kernel_thread+0x14/0x18
    
    While shutting down fabric controller, if nvme keep-alive request sneaks
    in then it would be flushed off. The nvme_keep_alive_end_io function is
    then invoked to handle the end of the keep-alive operation which
    decrements the admin->q_usage_counter and assuming this is the last/only
    request in the admin queue then the admin->q_usage_counter becomes zero.
    If that happens then blk-mq destroy queue operation (blk_mq_destroy_
    queue()) which could be potentially running simultaneously on another
    cpu (as this is the controller shutdown code path) would forward
    progress and deletes the admin queue. So, now from this point onward
    we are not supposed to access the admin queue resources. However the
    issue here's that the nvme keep-alive thread running hw/hctx queue
    dispatch operation hasn't yet finished its work and so it could still
    potentially access the admin queue resource while the admin queue had
    been already deleted and that causes the above crash.
    
    This fix helps avoid the observed crash by implementing keep-alive as a
    synchronous operation so that we decrement admin->q_usage_counter only
    after keep-alive command finished its execution and returns the command
    status back up to its caller (blk_execute_rq()). This would ensure that
    fabric shutdown code path doesn't destroy the fabric admin queue until
    keep-alive request finished execution and also keep-alive thread is not
    running hw/hctx queue dispatch operation.
    
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Nilay Shroff <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nvme: tcp: avoid race between queue_lock lock and destroy [+ + +]
Author: Hannes Reinecke <[email protected]>
Date:   Wed Oct 2 13:51:41 2024 +0900

    nvme: tcp: avoid race between queue_lock lock and destroy
    
    [ Upstream commit 782373ba27660ba7d330208cf5509ece6feb4545 ]
    
    Commit 76d54bf20cdc ("nvme-tcp: don't access released socket during
    error recovery") added a mutex_lock() call for the queue->queue_lock
    in nvme_tcp_get_address(). However, the mutex_lock() races with
    mutex_destroy() in nvme_tcp_free_queue(), and causes the WARN below.
    
    DEBUG_LOCKS_WARN_ON(lock->magic != lock)
    WARNING: CPU: 3 PID: 34077 at kernel/locking/mutex.c:587 __mutex_lock+0xcf0/0x1220
    Modules linked in: nvmet_tcp nvmet nvme_tcp nvme_fabrics iw_cm ib_cm ib_core pktcdvd nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ip_set nf_tables qrtr sunrpc ppdev 9pnet_virtio 9pnet pcspkr netfs parport_pc parport e1000 i2c_piix4 i2c_smbus loop fuse nfnetlink zram bochs drm_vram_helper drm_ttm_helper ttm drm_kms_helper xfs drm sym53c8xx floppy nvme scsi_transport_spi nvme_core nvme_auth serio_raw ata_generic pata_acpi dm_multipath qemu_fw_cfg [last unloaded: ib_uverbs]
    CPU: 3 UID: 0 PID: 34077 Comm: udisksd Not tainted 6.11.0-rc7 #319
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-2.fc40 04/01/2014
    RIP: 0010:__mutex_lock+0xcf0/0x1220
    Code: 08 84 d2 0f 85 c8 04 00 00 8b 15 ef b6 c8 01 85 d2 0f 85 78 f4 ff ff 48 c7 c6 20 93 ee af 48 c7 c7 60 91 ee af e8 f0 a7 6d fd <0f> 0b e9 5e f4 ff ff 48 b8 00 00 00 00 00 fc ff df 4c 89 f2 48 c1
    RSP: 0018:ffff88811305f760 EFLAGS: 00010286
    RAX: 0000000000000000 RBX: ffff88812c652058 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: 0000000000000004 RDI: 0000000000000001
    RBP: ffff88811305f8b0 R08: 0000000000000001 R09: ffffed1075c36341
    R10: ffff8883ae1b1a0b R11: 0000000000010498 R12: 0000000000000000
    R13: 0000000000000000 R14: dffffc0000000000 R15: ffff88812c652058
    FS:  00007f9713ae4980(0000) GS:ffff8883ae180000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fcd78483c7c CR3: 0000000122c38000 CR4: 00000000000006f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     ? __warn.cold+0x5b/0x1af
     ? __mutex_lock+0xcf0/0x1220
     ? report_bug+0x1ec/0x390
     ? handle_bug+0x3c/0x80
     ? exc_invalid_op+0x13/0x40
     ? asm_exc_invalid_op+0x16/0x20
     ? __mutex_lock+0xcf0/0x1220
     ? nvme_tcp_get_address+0xc2/0x1e0 [nvme_tcp]
     ? __pfx___mutex_lock+0x10/0x10
     ? __lock_acquire+0xd6a/0x59e0
     ? nvme_tcp_get_address+0xc2/0x1e0 [nvme_tcp]
     nvme_tcp_get_address+0xc2/0x1e0 [nvme_tcp]
     ? __pfx_nvme_tcp_get_address+0x10/0x10 [nvme_tcp]
     nvme_sysfs_show_address+0x81/0xc0 [nvme_core]
     dev_attr_show+0x42/0x80
     ? __asan_memset+0x1f/0x40
     sysfs_kf_seq_show+0x1f0/0x370
     seq_read_iter+0x2cb/0x1130
     ? rw_verify_area+0x3b1/0x590
     ? __mutex_lock+0x433/0x1220
     vfs_read+0x6a6/0xa20
     ? lockdep_hardirqs_on+0x78/0x100
     ? __pfx_vfs_read+0x10/0x10
     ksys_read+0xf7/0x1d0
     ? __pfx_ksys_read+0x10/0x10
     ? __x64_sys_openat+0x105/0x1d0
     do_syscall_64+0x93/0x180
     ? lockdep_hardirqs_on_prepare+0x16d/0x400
     ? do_syscall_64+0x9f/0x180
     ? lockdep_hardirqs_on+0x78/0x100
     ? do_syscall_64+0x9f/0x180
     ? __pfx_ksys_read+0x10/0x10
     ? lockdep_hardirqs_on_prepare+0x16d/0x400
     ? do_syscall_64+0x9f/0x180
     ? lockdep_hardirqs_on+0x78/0x100
     ? do_syscall_64+0x9f/0x180
     ? lockdep_hardirqs_on_prepare+0x16d/0x400
     ? do_syscall_64+0x9f/0x180
     ? lockdep_hardirqs_on+0x78/0x100
     ? do_syscall_64+0x9f/0x180
     ? lockdep_hardirqs_on_prepare+0x16d/0x400
     ? do_syscall_64+0x9f/0x180
     ? lockdep_hardirqs_on+0x78/0x100
     ? do_syscall_64+0x9f/0x180
     ? lockdep_hardirqs_on_prepare+0x16d/0x400
     ? do_syscall_64+0x9f/0x180
     ? lockdep_hardirqs_on+0x78/0x100
     ? do_syscall_64+0x9f/0x180
     ? do_syscall_64+0x9f/0x180
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    RIP: 0033:0x7f9713f55cfa
    Code: 55 48 89 e5 48 83 ec 20 48 89 55 e8 48 89 75 f0 89 7d f8 e8 e8 74 f8 ff 48 8b 55 e8 48 8b 75 f0 41 89 c0 8b 7d f8 31 c0 0f 05 <48> 3d 00 f0 ff ff 77 2e 44 89 c7 48 89 45 f8 e8 42 75 f8 ff 48 8b
    RSP: 002b:00007ffd7f512e70 EFLAGS: 00000246 ORIG_RAX: 0000000000000000
    RAX: ffffffffffffffda RBX: 000055c38f316859 RCX: 00007f9713f55cfa
    RDX: 0000000000000fff RSI: 00007ffd7f512eb0 RDI: 0000000000000011
    RBP: 00007ffd7f512e90 R08: 0000000000000000 R09: 00000000ffffffff
    R10: 0000000000000000 R11: 0000000000000246 R12: 000055c38f317148
    R13: 0000000000000000 R14: 00007f96f4004f30 R15: 000055c3b6b623c0
     </TASK>
    
    The WARN is observed when the blktests test case nvme/014 is repeated
    with tcp transport. It is rare, and 200 times repeat is required to
    recreate in some test environments.
    
    To avoid the WARN, check the NVME_TCP_Q_LIVE flag before locking
    queue->queue_lock. The flag is cleared long time before the lock gets
    destroyed.
    
    Signed-off-by: Hannes Reinecke <[email protected]>
    Signed-off-by: Shin'ichiro Kawasaki <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
platform/x86: x86-android-tablets: Fix use after free on platform_device_register() errors [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Sat Oct 5 15:05:45 2024 +0200

    platform/x86: x86-android-tablets: Fix use after free on platform_device_register() errors
    
    commit 2fae3129c0c08e72b1fe93e61fd8fd203252094a upstream.
    
    x86_android_tablet_remove() frees the pdevs[] array, so it should not
    be used after calling x86_android_tablet_remove().
    
    When platform_device_register() fails, store the pdevs[x] PTR_ERR() value
    into the local ret variable before calling x86_android_tablet_remove()
    to avoid using pdevs[] after it has been freed.
    
    Fixes: 5eba0141206e ("platform/x86: x86-android-tablets: Add support for instantiating platform-devs")
    Fixes: e2200d3f26da ("platform/x86: x86-android-tablets: Add gpio_keys support to x86_android_tablet_init()")
    Cc: [email protected]
    Reported-by: Aleksandr Burakov <[email protected]>
    Closes: https://lore.kernel.org/platform-driver-x86/[email protected]/
    Signed-off-by: Hans de Goede <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [Xiangyu: Modified file path to backport this commit to fix CVE: CVE-2024-49986]
    Signed-off-by: Xiangyu Chen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
powerpc/powernv: Free name on error in opal_event_init() [+ + +]
Author: Michael Ellerman <[email protected]>
Date:   Fri Sep 20 19:35:20 2024 +1000

    powerpc/powernv: Free name on error in opal_event_init()
    
    [ Upstream commit cf8989d20d64ad702a6210c11a0347ebf3852aa7 ]
    
    In opal_event_init() if request_irq() fails name is not freed, leading
    to a memory leak. The code only runs at boot time, there's no way for a
    user to trigger it, so there's no security impact.
    
    Fix the leak by freeing name in the error path.
    
    Reported-by: 2639161967 <[email protected]>
    Closes: https://lore.kernel.org/linuxppc-dev/[email protected]
    Signed-off-by: Michael Ellerman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "Bluetooth: af_bluetooth: Fix deadlock" [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Wed Nov 13 15:43:55 2024 +0100

    Revert "Bluetooth: af_bluetooth: Fix deadlock"
    
    This reverts commit cb8adca52f306563d958a863bb0cbae9c184d1ae which is
    commit f7b94bdc1ec107c92262716b073b3e816d4784fb upstream.
    
    It is reported to cause regressions in the 6.1.y tree, so revert it for
    now.
    
    Link: https://lore.kernel.org/all/CADRbXaDqx6S+7tzdDPPEpRu9eDLrHQkqoWTTGfKJSRxY=hT5MQ@mail.gmail.com/
    Reported-by: Jeremy Lainé <[email protected]>
    Cc: Salvatore Bonaccorso <[email protected]>
    Cc: Mike <[email protected]>
    Cc: Marcel Holtmann <[email protected]>
    Cc: Johan Hedberg <[email protected]>
    Cc: Paul Menzel <[email protected]>
    Cc: Pauli Virtanen <[email protected]>
    Cc: Luiz Augusto von Dentz <[email protected]>
    Cc: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Revert "Bluetooth: fix use-after-free in accessing skb after sending it" [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Wed Nov 13 15:42:18 2024 +0100

    Revert "Bluetooth: fix use-after-free in accessing skb after sending it"
    
    This reverts commit 715264ad09fd4004e347cdb79fa58a4f2344f13f which is
    commit 947ec0d002dce8577b655793dcc6fc78d67b7cb6 upstream.
    
    It is reported to cause regressions in the 6.1.y tree, so revert it for
    now.
    
    Link: https://lore.kernel.org/all/CADRbXaDqx6S+7tzdDPPEpRu9eDLrHQkqoWTTGfKJSRxY=hT5MQ@mail.gmail.com/
    Reported-by: Jeremy Lainé <[email protected]>
    Cc: Salvatore Bonaccorso <[email protected]>
    Cc: Mike <[email protected]>
    Cc: Marcel Holtmann <[email protected]>
    Cc: Johan Hedberg <[email protected]>
    Cc: Paul Menzel <[email protected]>
    Cc: Pauli Virtanen <[email protected]>
    Cc: Luiz Augusto von Dentz <[email protected]>
    Cc: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
Revert "Bluetooth: hci_conn: Consolidate code for aborting connections" [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Wed Nov 13 15:45:02 2024 +0100

    Revert "Bluetooth: hci_conn: Consolidate code for aborting connections"
    
    This reverts commit 6083089ab00631617f9eac678df3ab050a9d837a which is
    commit a13f316e90fdb1fb6df6582e845aa9b3270f3581 upstream.
    
    It is reported to cause regressions in the 6.1.y tree, so revert it for
    now.
    
    Link: https://lore.kernel.org/all/CADRbXaDqx6S+7tzdDPPEpRu9eDLrHQkqoWTTGfKJSRxY=hT5MQ@mail.gmail.com/
    Reported-by: Jeremy Lainé <[email protected]>
    Cc: Salvatore Bonaccorso <[email protected]>
    Cc: Mike <[email protected]>
    Cc: Marcel Holtmann <[email protected]>
    Cc: Johan Hedberg <[email protected]>
    Cc: Paul Menzel <[email protected]>
    Cc: Pauli Virtanen <[email protected]>
    Cc: Luiz Augusto von Dentz <[email protected]>
    Cc: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Revert "Bluetooth: hci_core: Fix possible buffer overflow" [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Wed Nov 13 15:44:07 2024 +0100

    Revert "Bluetooth: hci_core: Fix possible buffer overflow"
    
    This reverts commit 68644bf5ec6baaff40fc39b3529c874bfda709bd which is
    commit 81137162bfaa7278785b24c1fd2e9e74f082e8e4 upstream.
    
    It is reported to cause regressions in the 6.1.y tree, so revert it for
    now.
    
    Link: https://lore.kernel.org/all/CADRbXaDqx6S+7tzdDPPEpRu9eDLrHQkqoWTTGfKJSRxY=hT5MQ@mail.gmail.com/
    Reported-by: Jeremy Lainé <[email protected]>
    Cc: Salvatore Bonaccorso <[email protected]>
    Cc: Mike <[email protected]>
    Cc: Marcel Holtmann <[email protected]>
    Cc: Johan Hedberg <[email protected]>
    Cc: Paul Menzel <[email protected]>
    Cc: Pauli Virtanen <[email protected]>
    Cc: Luiz Augusto von Dentz <[email protected]>
    Cc: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Revert "Bluetooth: hci_sync: Fix overwriting request callback" [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Wed Nov 13 15:42:48 2024 +0100

    Revert "Bluetooth: hci_sync: Fix overwriting request callback"
    
    This reverts commit da77c1d39bc527b31890bfa0405763c82828defb which is
    commit 2615fd9a7c2507eb3be3fbe49dcec88a2f56454a upstream.
    
    It is reported to cause regressions in the 6.1.y tree, so revert it for
    now.
    
    Link: https://lore.kernel.org/all/CADRbXaDqx6S+7tzdDPPEpRu9eDLrHQkqoWTTGfKJSRxY=hT5MQ@mail.gmail.com/
    Reported-by: Jeremy Lainé <[email protected]>
    Cc: Salvatore Bonaccorso <[email protected]>
    Cc: Mike <[email protected]>
    Cc: Marcel Holtmann <[email protected]>
    Cc: Johan Hedberg <[email protected]>
    Cc: Paul Menzel <[email protected]>
    Cc: Pauli Virtanen <[email protected]>
    Cc: Luiz Augusto von Dentz <[email protected]>
    Cc: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
sound: Make CONFIG_SND depend on INDIRECT_IOMEM instead of UML [+ + +]
Author: Julian Vetter <[email protected]>
Date:   Thu Oct 10 14:46:01 2024 +0200

    sound: Make CONFIG_SND depend on INDIRECT_IOMEM instead of UML
    
    [ Upstream commit ad6639f143a0b42d7fb110ad14f5949f7c218890 ]
    
    When building for the UM arch and neither INDIRECT_IOMEM=y, nor
    HAS_IOMEM=y is selected, it will fall back to the implementations from
    asm-generic/io.h for IO memcpy. But these fall-back functions just do a
    memcpy. So, instead of depending on UML, add dependency on 'HAS_IOMEM ||
    INDIRECT_IOMEM'.
    
    Reviewed-by: Yann Sionneau <[email protected]>
    Signed-off-by: Julian Vetter <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

 
vDPA/ifcvf: Fix pci_read_config_byte() return code handling [+ + +]
Author: Yuan Can <[email protected]>
Date:   Thu Oct 17 09:38:12 2024 +0800

    vDPA/ifcvf: Fix pci_read_config_byte() return code handling
    
    [ Upstream commit 7f8825b2a78ac392d3fbb3a2e65e56d9e39d75e9 ]
    
    ifcvf_init_hw() uses pci_read_config_byte() that returns
    PCIBIOS_* codes. The error handling, however, assumes the codes are
    normal errnos because it checks for < 0.
    Convert the error check to plain non-zero check.
    
    Fixes: 5a2414bc454e ("virtio: Intel IFC VF driver for VDPA")
    Signed-off-by: Yuan Can <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Michael S. Tsirkin <[email protected]>
    Acked-by: Jason Wang <[email protected]>
    Acked-by: Zhu Lingshan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>