Commit graph

900,614 commits

Author SHA1 Message Date
Kuniyuki Iwashima
620d5b6bd8 UPSTREAM: af_unix: Fix null-ptr-deref in unix_stream_sendpage().
Bing-Jhong Billy Jheng reported null-ptr-deref in unix_stream_sendpage()
with detailed analysis and a nice repro.

unix_stream_sendpage() tries to add data to the last skb in the peer's
recv queue without locking the queue.

If the peer's FD is passed to another socket and the socket's FD is
passed to the peer, there is a loop between them.  If we close both
sockets without receiving FD, the sockets will be cleaned up by garbage
collection.

The garbage collection iterates such sockets and unlinks skb with
FD from the socket's receive queue under the queue's lock.

So, there is a race where unix_stream_sendpage() could access an skb
locklessly that is being released by garbage collection, resulting in
use-after-free.

To avoid the issue, unix_stream_sendpage() must lock the peer's recv
queue.

Note the issue does not exist in 6.5+ thanks to the recent sendpage()
refactoring.

This patch is originally written by Linus Torvalds.

BUG: unable to handle page fault for address: ffff988004dd6870
PF: supervisor read access in kernel mode
PF: error_code(0x0000) - not-present page
PGD 0 P4D 0
PREEMPT SMP PTI
CPU: 4 PID: 297 Comm: garbage_uaf Not tainted 6.1.46 #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
RIP: 0010:kmem_cache_alloc_node+0xa2/0x1e0
Code: c0 0f 84 32 01 00 00 41 83 fd ff 74 10 48 8b 00 48 c1 e8 3a 41 39 c5 0f 85 1c 01 00 00 41 8b 44 24 28 49 8b 3c 24 48 8d 4a 40 <49> 8b 1c 06 4c 89 f0 65 48 0f c7 0f 0f 94 c0 84 c0 74 a1 41 8b 44
RSP: 0018:ffffc9000079fac0 EFLAGS: 00000246
RAX: 0000000000000070 RBX: 0000000000000005 RCX: 000000000001a284
RDX: 000000000001a244 RSI: 0000000000400cc0 RDI: 000000000002eee0
RBP: 0000000000400cc0 R08: 0000000000400cc0 R09: 0000000000000003
R10: 0000000000000001 R11: 0000000000000000 R12: ffff888003970f00
R13: 00000000ffffffff R14: ffff988004dd6800 R15: 00000000000000e8
FS:  00007f174d6f3600(0000) GS:ffff88807db00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffff988004dd6870 CR3: 00000000092be000 CR4: 00000000007506e0
PKRU: 55555554
Call Trace:
 <TASK>
 ? __die_body.cold+0x1a/0x1f
 ? page_fault_oops+0xa9/0x1e0
 ? fixup_exception+0x1d/0x310
 ? exc_page_fault+0xa8/0x150
 ? asm_exc_page_fault+0x22/0x30
 ? kmem_cache_alloc_node+0xa2/0x1e0
 ? __alloc_skb+0x16c/0x1e0
 __alloc_skb+0x16c/0x1e0
 alloc_skb_with_frags+0x48/0x1e0
 sock_alloc_send_pskb+0x234/0x270
 unix_stream_sendmsg+0x1f5/0x690
 sock_sendmsg+0x5d/0x60
 ____sys_sendmsg+0x210/0x260
 ___sys_sendmsg+0x83/0xd0
 ? kmem_cache_alloc+0xc6/0x1c0
 ? avc_disable+0x20/0x20
 ? percpu_counter_add_batch+0x53/0xc0
 ? alloc_empty_file+0x5d/0xb0
 ? alloc_file+0x91/0x170
 ? alloc_file_pseudo+0x94/0x100
 ? __fget_light+0x9f/0x120
 __sys_sendmsg+0x54/0xa0
 do_syscall_64+0x3b/0x90
 entry_SYSCALL_64_after_hwframe+0x69/0xd3
RIP: 0033:0x7f174d639a7d
Code: 28 89 54 24 1c 48 89 74 24 10 89 7c 24 08 e8 8a c1 f4 ff 8b 54 24 1c 48 8b 74 24 10 41 89 c0 8b 7c 24 08 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 33 44 89 c7 48 89 44 24 08 e8 de c1 f4 ff 48
RSP: 002b:00007ffcb563ea50 EFLAGS: 00000293 ORIG_RAX: 000000000000002e
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f174d639a7d
RDX: 0000000000000000 RSI: 00007ffcb563eab0 RDI: 0000000000000007
RBP: 00007ffcb563eb10 R08: 0000000000000000 R09: 00000000ffffffff
R10: 00000000004040a0 R11: 0000000000000293 R12: 00007ffcb563ec28
R13: 0000000000401398 R14: 0000000000403e00 R15: 00007f174d72c000
 </TASK>

Bug: 299922588
Fixes: 869e7c6248 ("net: af_unix: implement stream sendpage support")
Reported-by: Bing-Jhong Billy Jheng <billy@starlabs.sg>
Reviewed-by: Bing-Jhong Billy Jheng <billy@starlabs.sg>
Co-developed-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 790c2f9d15b594350ae9bca7b236f2b1859de02c)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Ied4a40e6ae0e594ef84f36287bc6194602935585
2023-09-12 15:46:36 +01:00
Lin Ma
b91825e020 BACKPORT: net: nfc: Fix use-after-free caused by nfc_llcp_find_local
[ Upstream commit 6709d4b7bc2e079241fdef15d1160581c5261c10 ]

This commit fixes several use-after-free that caused by function
nfc_llcp_find_local(). For example, one UAF can happen when below buggy
time window occurs.

// nfc_genl_llc_get_params   | // nfc_unregister_device
                             |
dev = nfc_get_device(idx);   | device_lock(...)
if (!dev)                    | dev->shutting_down = true;
    return -ENODEV;          | device_unlock(...);
                             |
device_lock(...);            |   // nfc_llcp_unregister_device
                             |   nfc_llcp_find_local()
nfc_llcp_find_local(...);    |
                             |   local_cleanup()
if (!local) {                |
    rc = -ENODEV;            |     // nfc_llcp_local_put
    goto exit;               |     kref_put(.., local_release)
}                            |
                             |       // local_release
                             |       list_del(&local->list)
  // nfc_genl_send_params    |       kfree()
  local->dev->idx !!!UAF!!!  |
                             |

and the crash trace for the one of the discussed UAF like:

BUG: KASAN: slab-use-after-free in nfc_genl_llc_get_params+0x72f/0x780  net/nfc/netlink.c:1045
Read of size 8 at addr ffff888105b0e410 by task 20114

Call Trace:
 <TASK>
 __dump_stack  lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x72/0xa0  lib/dump_stack.c:106
 print_address_description  mm/kasan/report.c:319 [inline]
 print_report+0xcc/0x620  mm/kasan/report.c:430
 kasan_report+0xb2/0xe0  mm/kasan/report.c:536
 nfc_genl_send_params  net/nfc/netlink.c:999 [inline]
 nfc_genl_llc_get_params+0x72f/0x780  net/nfc/netlink.c:1045
 genl_family_rcv_msg_doit.isra.0+0x1ee/0x2e0  net/netlink/genetlink.c:968
 genl_family_rcv_msg  net/netlink/genetlink.c:1048 [inline]
 genl_rcv_msg+0x503/0x7d0  net/netlink/genetlink.c:1065
 netlink_rcv_skb+0x161/0x430  net/netlink/af_netlink.c:2548
 genl_rcv+0x28/0x40  net/netlink/genetlink.c:1076
 netlink_unicast_kernel  net/netlink/af_netlink.c:1339 [inline]
 netlink_unicast+0x644/0x900  net/netlink/af_netlink.c:1365
 netlink_sendmsg+0x934/0xe70  net/netlink/af_netlink.c:1913
 sock_sendmsg_nosec  net/socket.c:724 [inline]
 sock_sendmsg+0x1b6/0x200  net/socket.c:747
 ____sys_sendmsg+0x6e9/0x890  net/socket.c:2501
 ___sys_sendmsg+0x110/0x1b0  net/socket.c:2555
 __sys_sendmsg+0xf7/0x1d0  net/socket.c:2584
 do_syscall_x64  arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x3f/0x90  arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x72/0xdc
RIP: 0033:0x7f34640a2389
RSP: 002b:00007f3463415168 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
RAX: ffffffffffffffda RBX: 00007f34641c1f80 RCX: 00007f34640a2389
RDX: 0000000000000000 RSI: 0000000020000240 RDI: 0000000000000006
RBP: 00007f34640ed493 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 00007ffe38449ecf R14: 00007f3463415300 R15: 0000000000022000
 </TASK>

Allocated by task 20116:
 kasan_save_stack+0x22/0x50  mm/kasan/common.c:45
 kasan_set_track+0x25/0x30  mm/kasan/common.c:52
 ____kasan_kmalloc  mm/kasan/common.c:374 [inline]
 __kasan_kmalloc+0x7f/0x90  mm/kasan/common.c:383
 kmalloc  include/linux/slab.h:580 [inline]
 kzalloc  include/linux/slab.h:720 [inline]
 nfc_llcp_register_device+0x49/0xa40  net/nfc/llcp_core.c:1567
 nfc_register_device+0x61/0x260  net/nfc/core.c:1124
 nci_register_device+0x776/0xb20  net/nfc/nci/core.c:1257
 virtual_ncidev_open+0x147/0x230  drivers/nfc/virtual_ncidev.c:148
 misc_open+0x379/0x4a0  drivers/char/misc.c:165
 chrdev_open+0x26c/0x780  fs/char_dev.c:414
 do_dentry_open+0x6c4/0x12a0  fs/open.c:920
 do_open  fs/namei.c:3560 [inline]
 path_openat+0x24fe/0x37e0  fs/namei.c:3715
 do_filp_open+0x1ba/0x410  fs/namei.c:3742
 do_sys_openat2+0x171/0x4c0  fs/open.c:1356
 do_sys_open  fs/open.c:1372 [inline]
 __do_sys_openat  fs/open.c:1388 [inline]
 __se_sys_openat  fs/open.c:1383 [inline]
 __x64_sys_openat+0x143/0x200  fs/open.c:1383
 do_syscall_x64  arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x3f/0x90  arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x72/0xdc

Freed by task 20115:
 kasan_save_stack+0x22/0x50  mm/kasan/common.c:45
 kasan_set_track+0x25/0x30  mm/kasan/common.c:52
 kasan_save_free_info+0x2e/0x50  mm/kasan/generic.c:521
 ____kasan_slab_free  mm/kasan/common.c:236 [inline]
 ____kasan_slab_free  mm/kasan/common.c:200 [inline]
 __kasan_slab_free+0x10a/0x190  mm/kasan/common.c:244
 kasan_slab_free  include/linux/kasan.h:162 [inline]
 slab_free_hook  mm/slub.c:1781 [inline]
 slab_free_freelist_hook  mm/slub.c:1807 [inline]
 slab_free  mm/slub.c:3787 [inline]
 __kmem_cache_free+0x7a/0x190  mm/slub.c:3800
 local_release  net/nfc/llcp_core.c:174 [inline]
 kref_put  include/linux/kref.h:65 [inline]
 nfc_llcp_local_put  net/nfc/llcp_core.c:182 [inline]
 nfc_llcp_local_put  net/nfc/llcp_core.c:177 [inline]
 nfc_llcp_unregister_device+0x206/0x290  net/nfc/llcp_core.c:1620
 nfc_unregister_device+0x160/0x1d0  net/nfc/core.c:1179
 virtual_ncidev_close+0x52/0xa0  drivers/nfc/virtual_ncidev.c:163
 __fput+0x252/0xa20  fs/file_table.c:321
 task_work_run+0x174/0x270  kernel/task_work.c:179
 resume_user_mode_work  include/linux/resume_user_mode.h:49 [inline]
 exit_to_user_mode_loop  kernel/entry/common.c:171 [inline]
 exit_to_user_mode_prepare+0x108/0x110  kernel/entry/common.c:204
 __syscall_exit_to_user_mode_work  kernel/entry/common.c:286 [inline]
 syscall_exit_to_user_mode+0x21/0x50  kernel/entry/common.c:297
 do_syscall_64+0x4c/0x90  arch/x86/entry/common.c:86
 entry_SYSCALL_64_after_hwframe+0x72/0xdc

Last potentially related work creation:
 kasan_save_stack+0x22/0x50  mm/kasan/common.c:45
 __kasan_record_aux_stack+0x95/0xb0  mm/kasan/generic.c:491
 kvfree_call_rcu+0x29/0xa80  kernel/rcu/tree.c:3328
 drop_sysctl_table+0x3be/0x4e0  fs/proc/proc_sysctl.c:1735
 unregister_sysctl_table.part.0+0x9c/0x190  fs/proc/proc_sysctl.c:1773
 unregister_sysctl_table+0x24/0x30  fs/proc/proc_sysctl.c:1753
 neigh_sysctl_unregister+0x5f/0x80  net/core/neighbour.c:3895
 addrconf_notify+0x140/0x17b0  net/ipv6/addrconf.c:3684
 notifier_call_chain+0xbe/0x210  kernel/notifier.c:87
 call_netdevice_notifiers_info+0xb5/0x150  net/core/dev.c:1937
 call_netdevice_notifiers_extack  net/core/dev.c:1975 [inline]
 call_netdevice_notifiers  net/core/dev.c:1989 [inline]
 dev_change_name+0x3c3/0x870  net/core/dev.c:1211
 dev_ifsioc+0x800/0xf70  net/core/dev_ioctl.c:376
 dev_ioctl+0x3d9/0xf80  net/core/dev_ioctl.c:542
 sock_do_ioctl+0x160/0x260  net/socket.c:1213
 sock_ioctl+0x3f9/0x670  net/socket.c:1316
 vfs_ioctl  fs/ioctl.c:51 [inline]
 __do_sys_ioctl  fs/ioctl.c:870 [inline]
 __se_sys_ioctl  fs/ioctl.c:856 [inline]
 __x64_sys_ioctl+0x19e/0x210  fs/ioctl.c:856
 do_syscall_x64  arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x3f/0x90  arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x72/0xdc

The buggy address belongs to the object at ffff888105b0e400
 which belongs to the cache kmalloc-1k of size 1024
The buggy address is located 16 bytes inside of
 freed 1024-byte region [ffff888105b0e400, ffff888105b0e800)

The buggy address belongs to the physical page:
head:ffffea000416c200 order:3 entire_mapcount:0 nr_pages_mapped:0 pincount:0
flags: 0x200000000010200(slab|head|node=0|zone=2)
raw: 0200000000010200 ffff8881000430c0 ffffea00044c7010 ffffea0004510e10
raw: 0000000000000000 00000000000a000a 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff888105b0e300: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
 ffff888105b0e380: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
>ffff888105b0e400: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                         ^
 ffff888105b0e480: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff888105b0e500: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb

In summary, this patch solves those use-after-free by

1. Re-implement the nfc_llcp_find_local(). The current version does not
grab the reference when getting the local from the linked list.  For
example, the llcp_sock_bind() gets the reference like below:

// llcp_sock_bind()

    local = nfc_llcp_find_local(dev); // A
    ..... \
           | raceable
    ..... /
    llcp_sock->local = nfc_llcp_local_get(local); // B

There is an apparent race window that one can  drop the reference
and free the local object fetched in (A) before (B) gets the reference.

2. Some callers of the nfc_llcp_find_local() do not grab the reference
at all. For example, the nfc_genl_llc_{{get/set}_params/sdreq} functions.
We add the nfc_llcp_local_put() for them. Moreover, we add the necessary
error handling function to put the reference.

3. Add the nfc_llcp_remove_local() helper. The local object is removed
from the linked list in local_release() when all reference is gone. This
patch removes it when nfc_llcp_unregister_device() is called.

Therefore, every caller of nfc_llcp_find_local() will get a reference
even when the nfc_llcp_unregister_device() is called. This promises no
use-after-free for the local object is ever possible.

Bug: 294167961
Fixes: 52feb444a9 ("NFC: Extend netlink interface for LTO, RW, and MIUX parameters support")
Fixes: c7aa12252f ("NFC: Take a reference on the LLCP local pointer when creating a socket")
Signed-off-by: Lin Ma <linma@zju.edu.cn>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 425d9d3a92df7d96b3cfb7ee5c240293a21cbde3)
[Lee: Fix merge conflict - patch should render the same resulting diff added]
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I8e7e7101ce0d5c81da9b8febd4ad78dd1affc4a5
2023-09-04 12:45:18 +01:00
Duoming Zhou
d57e792d0b UPSTREAM: media: usb: siano: Fix warning due to null work_func_t function pointer
[ Upstream commit 6f489a966fbeb0da63d45c2c66a8957eab604bf6 ]

The previous commit ebad8e731c1c ("media: usb: siano: Fix use after
free bugs caused by do_submit_urb") adds cancel_work_sync() in
smsusb_stop_streaming(). But smsusb_stop_streaming() may be called,
even if the work_struct surb->wq has not been initialized. As a result,
the warning will occur. One of the processes that could lead to warning
is shown below:

smsusb_probe()
  smsusb_init_device()
    if (!dev->in_ep || !dev->out_ep || align < 0) {
         smsusb_term_device(intf);
           smsusb_stop_streaming()
             cancel_work_sync(&dev->surbs[i].wq);
               __cancel_work_timer()
                 __flush_work()
                   if (WARN_ON(!work->func)) // work->func is null

The log reported by syzbot is shown below:

WARNING: CPU: 0 PID: 897 at kernel/workqueue.c:3066 __flush_work+0x798/0xa80 kernel/workqueue.c:3063
Modules linked in:
CPU: 0 PID: 897 Comm: kworker/0:2 Not tainted 6.2.0-rc1-syzkaller #0
RIP: 0010:__flush_work+0x798/0xa80 kernel/workqueue.c:3066
...
RSP: 0018:ffffc9000464ebf8 EFLAGS: 00010246
RAX: 1ffff11002dbb420 RBX: 0000000000000021 RCX: 1ffffffff204fa4e
RDX: dffffc0000000000 RSI: 0000000000000001 RDI: ffff888016dda0e8
RBP: ffffc9000464ed98 R08: 0000000000000001 R09: ffffffff90253b2f
R10: 0000000000000001 R11: 0000000000000000 R12: ffff888016dda0e8
R13: ffff888016dda0e8 R14: ffff888016dda100 R15: 0000000000000001
FS:  0000000000000000(0000) GS:ffff8880b9a00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007ffd4331efe8 CR3: 000000000b48e000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 __cancel_work_timer+0x315/0x460 kernel/workqueue.c:3160
 smsusb_stop_streaming drivers/media/usb/siano/smsusb.c:182 [inline]
 smsusb_term_device+0xda/0x2d0 drivers/media/usb/siano/smsusb.c:344
 smsusb_init_device+0x400/0x9ce drivers/media/usb/siano/smsusb.c:419
 smsusb_probe+0xbbd/0xc55 drivers/media/usb/siano/smsusb.c:567
...

This patch adds check before cancel_work_sync(). If surb->wq has not
been initialized, the cancel_work_sync() will not be executed.

Bug: 295075980
Reported-by: syzbot+27b0b464864741b18b99@syzkaller.appspotmail.com
Fixes: ebad8e731c1c ("media: usb: siano: Fix use after free bugs caused by do_submit_urb")
Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 8abb53c5167cfb5bb275512a3da4ec2468478626)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Ie2946408cfde466d0138c23093ec6738b7e51161
2023-08-23 16:31:35 +00:00
Sungwoo Kim
118240f14b UPSTREAM: Bluetooth: L2CAP: Fix use-after-free in l2cap_sock_ready_cb
commit 1728137b33c00d5a2b5110ed7aafb42e7c32e4a1 upstream.

l2cap_sock_release(sk) frees sk. However, sk's children are still alive
and point to the already free'd sk's address.
To fix this, l2cap_sock_release(sk) also cleans sk's children.

==================================================================
BUG: KASAN: use-after-free in l2cap_sock_ready_cb+0xb7/0x100 net/bluetooth/l2cap_sock.c:1650
Read of size 8 at addr ffff888104617aa8 by task kworker/u3:0/276

CPU: 0 PID: 276 Comm: kworker/u3:0 Not tainted 6.2.0-00001-gef397bd4d5fb-dirty #59
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
Workqueue: hci2 hci_rx_work
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x72/0x95 lib/dump_stack.c:106
 print_address_description mm/kasan/report.c:306 [inline]
 print_report+0x175/0x478 mm/kasan/report.c:417
 kasan_report+0xb1/0x130 mm/kasan/report.c:517
 l2cap_sock_ready_cb+0xb7/0x100 net/bluetooth/l2cap_sock.c:1650
 l2cap_chan_ready+0x10e/0x1e0 net/bluetooth/l2cap_core.c:1386
 l2cap_config_req+0x753/0x9f0 net/bluetooth/l2cap_core.c:4480
 l2cap_bredr_sig_cmd net/bluetooth/l2cap_core.c:5739 [inline]
 l2cap_sig_channel net/bluetooth/l2cap_core.c:6509 [inline]
 l2cap_recv_frame+0xe2e/0x43c0 net/bluetooth/l2cap_core.c:7788
 l2cap_recv_acldata+0x6ed/0x7e0 net/bluetooth/l2cap_core.c:8506
 hci_acldata_packet net/bluetooth/hci_core.c:3813 [inline]
 hci_rx_work+0x66e/0xbc0 net/bluetooth/hci_core.c:4048
 process_one_work+0x4ea/0x8e0 kernel/workqueue.c:2289
 worker_thread+0x364/0x8e0 kernel/workqueue.c:2436
 kthread+0x1b9/0x200 kernel/kthread.c:376
 ret_from_fork+0x2c/0x50 arch/x86/entry/entry_64.S:308
 </TASK>

Allocated by task 288:
 kasan_save_stack+0x22/0x50 mm/kasan/common.c:45
 kasan_set_track+0x25/0x30 mm/kasan/common.c:52
 ____kasan_kmalloc mm/kasan/common.c:374 [inline]
 __kasan_kmalloc+0x82/0x90 mm/kasan/common.c:383
 kasan_kmalloc include/linux/kasan.h:211 [inline]
 __do_kmalloc_node mm/slab_common.c:968 [inline]
 __kmalloc+0x5a/0x140 mm/slab_common.c:981
 kmalloc include/linux/slab.h:584 [inline]
 sk_prot_alloc+0x113/0x1f0 net/core/sock.c:2040
 sk_alloc+0x36/0x3c0 net/core/sock.c:2093
 l2cap_sock_alloc.constprop.0+0x39/0x1c0 net/bluetooth/l2cap_sock.c:1852
 l2cap_sock_create+0x10d/0x220 net/bluetooth/l2cap_sock.c:1898
 bt_sock_create+0x183/0x290 net/bluetooth/af_bluetooth.c:132
 __sock_create+0x226/0x380 net/socket.c:1518
 sock_create net/socket.c:1569 [inline]
 __sys_socket_create net/socket.c:1606 [inline]
 __sys_socket_create net/socket.c:1591 [inline]
 __sys_socket+0x112/0x200 net/socket.c:1639
 __do_sys_socket net/socket.c:1652 [inline]
 __se_sys_socket net/socket.c:1650 [inline]
 __x64_sys_socket+0x40/0x50 net/socket.c:1650
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x3f/0x90 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x72/0xdc

Freed by task 288:
 kasan_save_stack+0x22/0x50 mm/kasan/common.c:45
 kasan_set_track+0x25/0x30 mm/kasan/common.c:52
 kasan_save_free_info+0x2e/0x50 mm/kasan/generic.c:523
 ____kasan_slab_free mm/kasan/common.c:236 [inline]
 ____kasan_slab_free mm/kasan/common.c:200 [inline]
 __kasan_slab_free+0x10a/0x190 mm/kasan/common.c:244
 kasan_slab_free include/linux/kasan.h:177 [inline]
 slab_free_hook mm/slub.c:1781 [inline]
 slab_free_freelist_hook mm/slub.c:1807 [inline]
 slab_free mm/slub.c:3787 [inline]
 __kmem_cache_free+0x88/0x1f0 mm/slub.c:3800
 sk_prot_free net/core/sock.c:2076 [inline]
 __sk_destruct+0x347/0x430 net/core/sock.c:2168
 sk_destruct+0x9c/0xb0 net/core/sock.c:2183
 __sk_free+0x82/0x220 net/core/sock.c:2194
 sk_free+0x7c/0xa0 net/core/sock.c:2205
 sock_put include/net/sock.h:1991 [inline]
 l2cap_sock_kill+0x256/0x2b0 net/bluetooth/l2cap_sock.c:1257
 l2cap_sock_release+0x1a7/0x220 net/bluetooth/l2cap_sock.c:1428
 __sock_release+0x80/0x150 net/socket.c:650
 sock_close+0x19/0x30 net/socket.c:1368
 __fput+0x17a/0x5c0 fs/file_table.c:320
 task_work_run+0x132/0x1c0 kernel/task_work.c:179
 resume_user_mode_work include/linux/resume_user_mode.h:49 [inline]
 exit_to_user_mode_loop kernel/entry/common.c:171 [inline]
 exit_to_user_mode_prepare+0x113/0x120 kernel/entry/common.c:203
 __syscall_exit_to_user_mode_work kernel/entry/common.c:285 [inline]
 syscall_exit_to_user_mode+0x21/0x50 kernel/entry/common.c:296
 do_syscall_64+0x4c/0x90 arch/x86/entry/common.c:86
 entry_SYSCALL_64_after_hwframe+0x72/0xdc

The buggy address belongs to the object at ffff888104617800
 which belongs to the cache kmalloc-1k of size 1024
The buggy address is located 680 bytes inside of
 1024-byte region [ffff888104617800, ffff888104617c00)

The buggy address belongs to the physical page:
page:00000000dbca6a80 refcount:1 mapcount:0 mapping:0000000000000000 index:0xffff888104614000 pfn:0x104614
head:00000000dbca6a80 order:2 compound_mapcount:0 subpages_mapcount:0 compound_pincount:0
flags: 0x200000000010200(slab|head|node=0|zone=2)
raw: 0200000000010200 ffff888100041dc0 ffffea0004212c10 ffffea0004234b10
raw: ffff888104614000 0000000000080002 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff888104617980: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff888104617a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff888104617a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                  ^
 ffff888104617b00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff888104617b80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================

Bug: 297025149
Ack: This bug is found by FuzzBT with a modified Syzkaller. Other
contributors are Ruoyu Wu and Hui Peng.
Signed-off-by: Sungwoo Kim <iam@sung-woo.kim>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 29fac18499332211b2615ade356e2bd8b3269f98)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I1f4cf5a928b4825c63488bde0d5589517cc84ef8
2023-08-23 14:42:32 +01:00
Srinivasarao Pathipati
28e9ee34f7 ANDROID: ABI: Update allowed list for QCOM
Leaf changes summary: 1 artifact changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

1 Added function:

  [A] 'function int sysfs_emit(char*, const char*, ...)'

Bug: 297153855
Change-Id: Ia8be1195062a8e64b3b8158c00196718e862b0aa
Signed-off-by: Srinivasarao Pathipati <quic_c_spathi@quicinc.com>
2023-08-23 16:02:46 +05:30
Laszlo Ersek
d62f1fc162 UPSTREAM: net: tap_open(): set sk_uid from current_fsuid()
commit 5c9241f3ceab3257abe2923a59950db0dc8bb737 upstream.

Commit 66b2c338adce initializes the "sk_uid" field in the protocol socket
(struct sock) from the "/dev/tapX" device node's owner UID. Per original
commit 86741ec254 ("net: core: Add a UID field to struct sock.",
2016-11-04), that's wrong: the idea is to cache the UID of the userspace
process that creates the socket. Commit 86741ec254 mentions socket() and
accept(); with "tap", the action that creates the socket is
open("/dev/tapX").

Therefore the device node's owner UID is irrelevant. In most cases,
"/dev/tapX" will be owned by root, so in practice, commit 66b2c338adce has
no observable effect:

- before, "sk_uid" would be zero, due to undefined behavior
  (CVE-2023-1076),

- after, "sk_uid" would be zero, due to "/dev/tapX" being owned by root.

What matters is the (fs)UID of the process performing the open(), so cache
that in "sk_uid".

Bug: 295995961
Cc: Eric Dumazet <edumazet@google.com>
Cc: Lorenzo Colitti <lorenzo@google.com>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: Pietro Borrello <borrello@diag.uniroma1.it>
Cc: netdev@vger.kernel.org
Cc: stable@vger.kernel.org
Fixes: 66b2c338adce ("tap: tap_open(): correctly initialize socket uid")
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2173435
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 767800fc402deac438c5aed9c82f0e71a70c86fd)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Ib5f80015e5c0280acf9f35124d3ff267ff0420f0
2023-08-22 15:26:00 +01:00
Laszlo Ersek
657abd3d2b UPSTREAM: net: tun_chr_open(): set sk_uid from current_fsuid()
commit 9bc3047374d5bec163e83e743709e23753376f0c upstream.

Commit a096ccca6e50 initializes the "sk_uid" field in the protocol socket
(struct sock) from the "/dev/net/tun" device node's owner UID. Per
original commit 86741ec254 ("net: core: Add a UID field to struct
sock.", 2016-11-04), that's wrong: the idea is to cache the UID of the
userspace process that creates the socket. Commit 86741ec254 mentions
socket() and accept(); with "tun", the action that creates the socket is
open("/dev/net/tun").

Therefore the device node's owner UID is irrelevant. In most cases,
"/dev/net/tun" will be owned by root, so in practice, commit a096ccca6e50
has no observable effect:

- before, "sk_uid" would be zero, due to undefined behavior
  (CVE-2023-1076),

- after, "sk_uid" would be zero, due to "/dev/net/tun" being owned by root.

What matters is the (fs)UID of the process performing the open(), so cache
that in "sk_uid".

Bug: 295995961
Cc: Eric Dumazet <edumazet@google.com>
Cc: Lorenzo Colitti <lorenzo@google.com>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: Pietro Borrello <borrello@diag.uniroma1.it>
Cc: netdev@vger.kernel.org
Cc: stable@vger.kernel.org
Fixes: a096ccca6e50 ("tun: tun_chr_open(): correctly initialize socket uid")
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2173435
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit b6846d7c408b33e4701f4f5ca28932e2a08e0a2e)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I2540ac5876ca7dad39e1b867a5e09a5c9c69bb86
2023-08-22 15:21:52 +01:00
valis
212a7aaded UPSTREAM: net/sched: cls_route: No longer copy tcf_result on update to avoid use-after-free
[ Upstream commit b80b829e9e2c1b3f7aae34855e04d8f6ecaf13c8 ]

When route4_change() is called on an existing filter, the whole
tcf_result struct is always copied into the new instance of the filter.

This causes a problem when updating a filter bound to a class,
as tcf_unbind_filter() is always called on the old instance in the
success path, decreasing filter_cnt of the still referenced class
and allowing it to be deleted, leading to a use-after-free.

Fix this by no longer copying the tcf_result struct from the old filter.

Bug: 296347075
Fixes: 1109c00547 ("net: sched: RCU cls_route")
Reported-by: valis <sec@valis.email>
Reported-by: Bing-Jhong Billy Jheng <billy@starlabs.sg>
Signed-off-by: valis <sec@valis.email>
Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Reviewed-by: Victor Nogueira <victor@mojatatu.com>
Reviewed-by: Pedro Tammela <pctammela@mojatatu.com>
Reviewed-by: M A Ramdhan <ramdhan@starlabs.sg>
Link: https://lore.kernel.org/r/20230729123202.72406-4-jhs@mojatatu.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit d4d3b53a4c66004e8e864fea744b3a2b86a73b62)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Iefbd201b92847ec1349f92c107d7ef5aec3fb359
2023-08-21 13:17:45 +01:00
valis
ac9e6cd126 UPSTREAM: net/sched: cls_fw: No longer copy tcf_result on update to avoid use-after-free
[ Upstream commit 76e42ae831991c828cffa8c37736ebfb831ad5ec ]

When fw_change() is called on an existing filter, the whole
tcf_result struct is always copied into the new instance of the filter.

This causes a problem when updating a filter bound to a class,
as tcf_unbind_filter() is always called on the old instance in the
success path, decreasing filter_cnt of the still referenced class
and allowing it to be deleted, leading to a use-after-free.

Fix this by no longer copying the tcf_result struct from the old filter.

Bug: 296347075
Fixes: e35a8ee599 ("net: sched: fw use RCU")
Reported-by: valis <sec@valis.email>
Reported-by: Bing-Jhong Billy Jheng <billy@starlabs.sg>
Signed-off-by: valis <sec@valis.email>
Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Reviewed-by: Victor Nogueira <victor@mojatatu.com>
Reviewed-by: Pedro Tammela <pctammela@mojatatu.com>
Reviewed-by: M A Ramdhan <ramdhan@starlabs.sg>
Link: https://lore.kernel.org/r/20230729123202.72406-3-jhs@mojatatu.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 7f691439b29be0aae68f83ad5eecfddc11007724)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I33c91c83d1cd8e889a7261adfa3779ca6c141088
2023-08-21 13:17:39 +01:00
valis
e4b912f612 UPSTREAM: net/sched: cls_u32: No longer copy tcf_result on update to avoid use-after-free
[ Upstream commit 3044b16e7c6fe5d24b1cdbcf1bd0a9d92d1ebd81 ]

When u32_change() is called on an existing filter, the whole
tcf_result struct is always copied into the new instance of the filter.

This causes a problem when updating a filter bound to a class,
as tcf_unbind_filter() is always called on the old instance in the
success path, decreasing filter_cnt of the still referenced class
and allowing it to be deleted, leading to a use-after-free.

Fix this by no longer copying the tcf_result struct from the old filter.

Bug: 296347075
Fixes: de5df63228 ("net: sched: cls_u32 changes to knode must appear atomic to readers")
Reported-by: valis <sec@valis.email>
Reported-by: M A Ramdhan <ramdhan@starlabs.sg>
Signed-off-by: valis <sec@valis.email>
Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Reviewed-by: Victor Nogueira <victor@mojatatu.com>
Reviewed-by: Pedro Tammela <pctammela@mojatatu.com>
Reviewed-by: M A Ramdhan <ramdhan@starlabs.sg>
Link: https://lore.kernel.org/r/20230729123202.72406-2-jhs@mojatatu.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit aab2d095ce4dd8d01ca484c0cc641fb497bf74db)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I1a8381c308cc97cf61d6f95a02992d2c553455c5
2023-08-21 13:09:12 +01:00
M A Ramdhan
f38754f733 UPSTREAM: net/sched: cls_fw: Fix improper refcount update leads to use-after-free
[ Upstream commit 0323bce598eea038714f941ce2b22541c46d488f ]

In the event of a failure in tcf_change_indev(), fw_set_parms() will
immediately return an error after incrementing or decrementing
reference counter in tcf_bind_filter().  If attacker can control
reference counter to zero and make reference freed, leading to
use after free.

In order to prevent this, move the point of possible failure above the
point where the TC_FW_CLASSID is handled.

Bug: 292252062
Bug: 290783303
Fixes: 1da177e4c3 ("Linux-2.6.12-rc2")
Reported-by: M A Ramdhan <ramdhan@starlabs.sg>
Signed-off-by: M A Ramdhan <ramdhan@starlabs.sg>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Reviewed-by: Pedro Tammela <pctammela@mojatatu.com>
Message-ID: <20230705161530.52003-1-ramdhan@starlabs.sg>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit c91fb29bb07ee4dd40aabd1e41f19c0f92ac3199)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I9bf6f540b4eb23ea5641fb3efe6f3e621d7b6151
2023-08-15 13:46:56 +01:00
Takashi Iwai
07452ef620 UPSTREAM: media: dvb-core: Fix kernel WARNING for blocking operation in wait_event*()
[ Upstream commit b8c75e4a1b325ea0a9433fa8834be97b5836b946 ]

Using a semaphore in the wait_event*() condition is no good idea.
It hits a kernel WARN_ON() at prepare_to_wait_event() like:
  do not call blocking ops when !TASK_RUNNING; state=1 set at
  prepare_to_wait_event+0x6d/0x690

For avoiding the potential deadlock, rewrite to an open-coded loop
instead.  Unlike the loop in wait_event*(), this uses wait_woken()
after the condition check, hence the task state stays consistent.

CVE-2023-31084 was assigned to this bug.

Link: https://lore.kernel.org/r/CA+UBctCu7fXn4q41O_3=id1+OdyQ85tZY1x+TkT-6OVBL6KAUw@mail.gmail.com/

Bug: 290204413
Link: https://lore.kernel.org/linux-media/20230512151800.1874-1-tiwai@suse.de
Reported-by: Yu Hao <yhao016@ucr.edu>
Closes: https://nvd.nist.gov/vuln/detail/CVE-2023-31084
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit d0088ea444e676a0c75551efe183bee4a3d2cfc8)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Id9420d5cf7676aec6c565013cc00f0cc6f05732d
2023-07-25 12:39:45 +00:00
Treehugger Robot
0eff73927d Merge "Merge tag 'android11-5.4.249_r00' into android11-5.4" into android11-5.4 2023-07-24 16:39:11 +00:00
kamasali Satyanarayan
6e8aefd6d5 ANDROID: ABI: Update allowed list for QCOM
Leaf changes summary: 2 artifacts changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable

1 Added function:

  [A] 'function int snd_card_free_when_closed(snd_card*)'

1 Added variable:

  [A] 'hid_ll_driver uhid_hid_driver'

Bug: 292212778
Change-Id: I82b33b9056da13971b04e5eda36a94992bfa1df2
Signed-off-by: kamasali Satyanarayan <quic_kamasali@quicinc.com>
2023-07-21 20:37:20 +05:30
Greg Kroah-Hartman
ef9d9e2c44 Merge tag 'android11-5.4.249_r00' into android11-5.4
This is the merge of the upstream LTS release of 5.4.249 into the
android11-5.4 branch.

It contains the following commits:

* 874e208e9b Merge branch 'android11-5.4' into android11-5.4-lts
*   c7f89f1b6b Merge 5.4.249 into android11-5.4-lts
|\
| * b30db4f7e4 Linux 5.4.249
| * c874390551 xfs: verify buffer contents when we skip log replay
| * 72ab3d39b4 mm: make wait_on_page_writeback() wait for multiple pending writebacks
| * 9ea42ba3e6 mm: fix VM_BUG_ON(PageTail) and BUG_ON(PageWriteback)
| * dffd25725e i2c: imx-lpi2c: fix type char overflow issue when calculating the clock cycle
| * f89bcf03e9 x86/apic: Fix kernel panic when booting with intremap=off and x2apic_phys
| * a43c763f9c drm/radeon: fix race condition UAF in radeon_gem_set_domain_ioctl
| * 45f574d8df drm/exynos: fix race condition UAF in exynos_g2d_exec_ioctl
| * c81a542e45 drm/exynos: vidi: fix a wrong error return
| * 948b8b5fd0 ARM: dts: Fix erroneous ADS touchscreen polarities
| * 8d6f9f5f3b ASoC: nau8824: Add quirk to active-high jack-detect
| * d6fd1b3f76 s390/cio: unregister device when the only path is gone
| * 0de32d3dd3 usb: gadget: udc: fix NULL dereference in remove()
| * 823dd7de82 nfcsim.c: Fix error checking for debugfs_create_dir
| * c32b39d070 media: cec: core: don't set last_initiator if tx in progress
| * a69a15a1e7 arm64: Add missing Set/Way CMO encodings
| * 99de9a18e6 HID: wacom: Add error check to wacom_parse_and_register()
| * 2af8d96372 scsi: target: iscsi: Prevent login threads from racing between each other
| * 321a81d26c sch_netem: acquire qdisc lock in netem_change()
| * 91274bbe78 Revert "net: phy: dp83867: perform soft reset and retain established link"
| * 25c8d38c75 netfilter: nfnetlink_osf: fix module autoload
| * 476c617e4d netfilter: nf_tables: disallow element updates of bound anonymous sets
| * d3b110395f be2net: Extend xmit workaround to BE3 chip
| * 789d528606 net: dsa: mt7530: fix trapping frames on non-MT7621 SoC MT7530 switch
| * 35373d602b ipvs: align inner_mac_header for encapsulation
| * ee155675bd mmc: usdhi60rol0: fix deferred probing
| * 0bd483fb95 mmc: sh_mmcif: fix deferred probing
| * 6160d37db1 mmc: sdhci-acpi: fix deferred probing
| * b25875cf5e mmc: omap_hsmmc: fix deferred probing
| * cbb0118f8a mmc: omap: fix deferred probing
| * e0d5053569 mmc: mvsdio: fix deferred probing
| * c2e675509f mmc: mvsdio: convert to devm_platform_ioremap_resource
| * 3ef787d619 mmc: mtk-sd: fix deferred probing
| * 3c01d64996 net: qca_spi: Avoid high load if QCA7000 is not available
| * bf7a4fd336 xfrm: Linearize the skb after offloading if needed.
| * d0fe8a733f ieee802154: hwsim: Fix possible memory leaks
| * dfcac203a3 rcu: Upgrade rcu_swap_protected() to rcu_replace_pointer()
| * 94199d4727 x86/mm: Avoid using set_pgd() outside of real PGD pages
| * be178a5eae cifs: Fix potential deadlock when updating vol in cifs_reconnect()
| * 8a5aaa4562 cifs: Merge is_path_valid() into get_normalized_path()
| * 339134c15c cifs: Introduce helpers for finding TCP connection
| * cf8c7aa906 cifs: Get rid of kstrdup_const()'d paths
| * 3fa4c08104 cifs: Clean up DFS referral cache
| * b73539b887 nilfs2: prevent general protection fault in nilfs_clear_dirty_page()
| * 1cc7dcfdeb writeback: fix dereferencing NULL mapping->host on writeback_page_template
| * 18a0202bec ip_tunnels: allow VXLAN/GENEVE to inherit TOS/TTL from VLAN
| * ab530c9bec mmc: meson-gx: remove redundant mmc_request_done() call from irq context
| * 88b373d1c5 cgroup: Do not corrupt task iteration when rebinding subsystem
| * c06c568e43 PCI: hv: Fix a race condition bug in hv_pci_query_relations()
| * f02a676907 Drivers: hv: vmbus: Fix vmbus_wait_for_unload() to scan present CPUs
| * 966708ed9d nilfs2: fix buffer corruption due to concurrent device reads
| * a93ae93e9f media: dvb-core: Fix use-after-free due to race at dvb_register_device()
| * 225bd8cc9c media: dvbdev: fix error logic at dvb_register_device()
| * 5bc971f043 media: dvbdev: Fix memleak in dvb_register_device
| * 40d7530bc7 tick/common: Align tick period during sched_timer setup
| * b9b61fd1f7 x86/purgatory: remove PGO flags
| * 4d02a166cb tracing: Add tracing_reset_all_online_cpus_unlocked() function
| * e14e9cc588 epoll: ep_autoremove_wake_function should use list_del_init_careful
| * e77e5481d5 list: add "list_del_init_careful()" to go with "list_empty_careful()"
| * c32ab1c195 mm: rewrite wait_on_page_bit_common() logic
| * 559cefc7c2 nilfs2: reject devices with insufficient block count
* | f4bff64ed2 Merge 5.4.248 into android11-5.4-lts
|\|
| * f2b499c27a Linux 5.4.248
| * 1cdc48aaff mmc: block: ensure error propagation for non-blk
| * de517032ee drm/nouveau/kms: Fix NULL pointer dereference in nouveau_connector_detect_depth
| * d3f7f557d8 neighbour: delete neigh_lookup_nodev as not used
| * a433b85d17 net: Remove unused inline function dst_hold_and_use()
| * fbc0209ae3 neighbour: Remove unused inline function neigh_key_eq16()
| * bc1ea55bf1 afs: Fix vlserver probe RTT handling
| * 98acd5f0ce selftests/ptp: Fix timestamp printf format for PTP_SYS_OFFSET
| * 1140f8bc29 net: tipc: resize nlattr array to correct size
| * b83f86ba41 net: lapbether: only support ethernet devices
| * ec694ad393 net/sched: cls_api: Fix lockup on flushing explicitly created chain
| * 0456f470fa drm/nouveau: add nv_encoder pointer check for NULL
| * b1d76d16af drm/nouveau/kms: Don't change EDID when it hasn't actually changed
| * f654b8a132 drm/nouveau/dp: check for NULL nv_connector->native_mode
| * 2ac7be7718 igb: fix nvm.ops.read() error handling
| * 44008337f8 sctp: fix an error code in sctp_sf_eat_auth()
| * edd3d3dc48 ipvlan: fix bound dev checking for IPv6 l3s mode
| * 6718478c18 IB/isert: Fix incorrect release of isert connection
| * f8a91a024a IB/isert: Fix possible list corruption in CMA handler
| * 8a867ab713 IB/isert: Fix dead lock in ib_isert
| * 22125be516 IB/uverbs: Fix to consider event queue closing also upon non-blocking mode
| * ea4cf04d3f iavf: remove mask from iavf_irq_enable_queues()
| * 19a500f530 RDMA/rxe: Fix the use-before-initialization error of resp_pkts
| * 42ab735345 RDMA/rxe: Removed unused name from rxe_task struct
| * f99b6de58b RDMA/rxe: Remove the unused variable obj
| * 46305daf80 net/sched: cls_u32: Fix reference counter leak leading to overflow
| * 88d6c1958b ping6: Fix send to link-local addresses with VRF.
| * 474e0adf29 netfilter: nfnetlink: skip error delivery on batch in case of ENOMEM
| * 67cafcd3e6 spi: fsl-dspi: avoid SCK glitches with continuous transfers
| * 8231594e21 spi: spi-fsl-dspi: Remove unused chip->void_write_data
| * 9d8b388a24 usb: dwc3: gadget: Reset num TRBs before giving back the request
| * 94e52fac15 serial: lantiq: add missing interrupt ack
| * b577b74f8f USB: serial: option: add Quectel EM061KGL series
| * 6b1203ae83 Remove DECnet support from kernel
| * aad6addc17 ALSA: hda/realtek: Add a quirk for Compaq N14JP6
| * def7e17c98 net: usb: qmi_wwan: add support for Compal RXM-G1
| * 74bd537373 RDMA/uverbs: Restrict usage of privileged QKEYs
| * a8997ffad3 nouveau: fix client work fence deletion race
| * 01fd784b07 powerpc/purgatory: remove PGO flags
| * b16bf76b38 kexec: support purgatories with .text.hot sections
| * b27a5fbe3c nilfs2: fix possible out-of-bounds segment allocation in resize ioctl
| * 0dd2d8331e nilfs2: fix incomplete buffer cleanup in nilfs_btnode_abort_change_key()
| * e1fb47f139 nios2: dts: Fix tse_mac "max-frame-size" property
| * 5e531f448e ocfs2: check new file size on fallocate call
| * f6878da39f ocfs2: fix use-after-free when unmounting read-only filesystem
| * 82173fde61 drm:amd:amdgpu: Fix missing buffer object unlock in failure path
| * 63afd76621 xen/blkfront: Only check REQ_FUA for writes
| * 27447dada0 mips: Move initrd_start check after initrd address sanitisation.
| * a365600bba MIPS: Alchemy: fix dbdma2
| * 6b39b06b8d parisc: Flush gatt writes and adjust gatt mask in parisc_agp_mask_memory()
| * de873bce06 parisc: Improve cache flushing for PCXL in arch_sync_dma_for_cpu()
| * 28850d25a6 btrfs: handle memory allocation failure in btrfs_csum_one_bio
| * b31586747b power: supply: Fix logic checking if system is running from battery
| * dd8804117d irqchip/meson-gpio: Mark OF related data as maybe unused
| * 30ade27dbe regulator: Fix error checking for debugfs_create_dir
| * a12155f0b1 platform/x86: asus-wmi: Ignore WMI events with codes 0x7B, 0xC0
| * d26edc403c power: supply: Ratelimit no data debug output
| * af44b2ddfc ARM: dts: vexpress: add missing cache properties
| * bd725832eb power: supply: bq27xxx: Use mod_delayed_work() instead of cancel() + schedule()
| * 82bfd14f13 power: supply: sc27xx: Fix external_power_changed race
| * 66d5882dcc power: supply: ab8500: Fix external_power_changed race
| * a8f286bfbc s390/dasd: Use correct lock while counting channel queue length
| * d60be47f43 dasd: refactor dasd_ioctl_information
| * 7f3bb75a04 KEYS: asymmetric: Copy sig and digest in public_key_verify_signature()
| * 75d9e00f65 test_firmware: fix a memory leak with reqs buffer
* | 3032bd084a Revert "neighbour: Replace zero-length array with flexible-array member"
* | 6635f9a873 Revert "neighbour: fix unaligned access to pneigh_entry"
* | 477bb53b3a Merge 5.4.247 into android11-5.4-lts
|\|
| * 61a2f83e47 Linux 5.4.247
| * 4b0199bc81 Revert "staging: rtl8192e: Replace macro RTL_PCI_DEVICE with PCI_DEVICE"
| * 85258ae307 mtd: spinand: macronix: Add support for MX35LFxGE4AD
| * 8e54667403 btrfs: unset reloc control if transaction commit fails in prepare_to_relocate()
| * 4223d91ca1 btrfs: check return value of btrfs_commit_transaction in relocation
| * a35d89d360 rbd: get snapshot context after exclusive lock is ensured to be held
| * 52a40eaa55 drm/atomic: Don't pollute crtc_state->mode_blob with error pointers
| * 2cc5d40e4d cifs: handle empty list of targets in cifs_reconnect()
| * 307ffb7162 cifs: get rid of unused parameter in reconn_setup_dfs_targets()
| * 73ed7996bb ext4: only check dquot_initialize_needed() when debugging
| * 7d0a29c74a eeprom: at24: also select REGMAP
| * 0360652bf6 i2c: sprd: Delete i2c adapter in .remove's error path
| * c73f1c2f68 bonding (gcc13): synchronize bond_{a,t}lb_xmit() types
| * ec94689803 usb: usbfs: Use consistent mmap functions
| * 0147952d15 usb: usbfs: Enforce page requirements for mmap
| * 090878903d pinctrl: meson-axg: add missing GPIOA_18 gpio group
| * c6e8425550 rbd: move RBD_OBJ_FLAG_COPYUP_ENABLED flag setting
| * 69653f9416 Bluetooth: Fix use-after-free in hci_remove_ltk/hci_remove_irk
| * 953335a377 ceph: fix use-after-free bug for inodes when flushing capsnaps
| * 2416bac0e7 can: j1939: avoid possible use-after-free when j1939_can_rx_register fails
| * bf0245bd44 can: j1939: change j1939_netdev_lock type to mutex
| * 9eed68d62e can: j1939: j1939_sk_send_loop_abort(): improved error queue handling in J1939 Socket
| * 2fc62d51d3 drm/amdgpu: fix xclk freq on CHIP_STONEY
| * e752bb1c03 ALSA: hda/realtek: Add Lenovo P3 Tower platform
| * ca599db7a5 ALSA: hda/realtek: Add a quirk for HP Slim Desktop S01
| * d5ca4799e6 Input: psmouse - fix OOB access in Elantech protocol
| * 282a96e3f8 Input: xpad - delete a Razer DeathAdder mouse VID/PID entry
| * a3a99a069e batman-adv: Broken sync while rescheduling delayed work
| * df7044fc09 bnxt_en: Query default VLAN before VNIC setup on a VF
| * a6ca812973 lib: cpu_rmap: Fix potential use-after-free in irq_cpu_rmap_release()
| * 198da74a4e net: sched: fix possible refcount leak in tc_chain_tmplt_add()
| * 8f7cbd6d5e net: sched: move rtm_tca_policy declaration to include file
| * b8b90f9244 rfs: annotate lockless accesses to RFS sock flow table
| * 28ac3cf2ac rfs: annotate lockless accesses to sk->sk_rxhash
| * a4c72805fd netfilter: ipset: Add schedule point in call_ad().
| * 0b705ed9d4 netfilter: conntrack: fix NULL pointer dereference in nf_confirm_cthelper
| * c2c6133eeb Bluetooth: L2CAP: Add missing checks for invalid DCID
| * 0f841f8039 Bluetooth: Fix l2cap_disconnect_req deadlock
| * b0b1b97702 net: dsa: lan9303: allow vid != 0 in port_fdb_{add|del} methods
| * 7e0da73ce5 neighbour: fix unaligned access to pneigh_entry
| * 314713ff4c neighbour: Replace zero-length array with flexible-array member
| * e96f52705a spi: qup: Request DMA before enabling clocks
| * 1cc6435cd7 i40e: fix build warnings in i40e_alloc.h
| * fc75b8973d i40iw: fix build warning in i40iw_manage_apbvt()
| * c425e71826 block/blk-iocost (gcc13): keep large values in a new enum
| * ec97af8e8a blk-iocost: avoid 64-bit division in ioc_timer_fn
* | de0a430e6c Revert "tcp: deny tcp_disconnect() when threads are waiting"
* | 6d6982b563 Merge 5.4.246 into android11-5.4-lts
|\|
| * f568a20f05 Linux 5.4.246
| * 6c0fc4725f drm/edid: fix objtool warning in drm_cvt_modes()
| * 914bf541c3 wifi: rtlwifi: 8192de: correct checking of IQK reload
| * 58bc9baaef drm/edid: Fix uninitialized variable in drm_cvt_modes()
| * 77e442733f RDMA/bnxt_re: Remove the qp from list only if the qp destroy succeeds
| * a616aa258e RDMA/bnxt_re: Remove set but not used variable 'dev_attr'
| * 4ffad598bf scsi: dpt_i2o: Do not process completions with invalid addresses
| * e2897f133a scsi: dpt_i2o: Remove broken pass-through ioctl (I2OUSERCMD)
| * 56a4a9dc5e regmap: Account for register length when chunking
| * 94f3bc7e84 test_firmware: fix the memory leak of the allocated firmware buffer
| * fb7dce686f fbcon: Fix null-ptr-deref in soft_cursor
| * 5ea6122caf ext4: add lockdep annotations for i_data_sem for ea_inode's
| * b06346ef57 ext4: disallow ea_inodes with extended attributes
| * ec2a04f8fc ext4: set lockdep subclass for the ea_inode in ext4_xattr_inode_cache_find()
| * 2e636c0c93 ext4: add EA_INODE checking to ext4_iget()
| * d9de088797 tracing/probe: trace_probe_primary_from_call(): checked list_first_entry
| * 7df474125c selinux: don't use make's grouped targets feature yet
| * b18bc3c9c2 tty: serial: fsl_lpuart: use UARTCTRL_TXINV to send break instead of UARTCTRL_SBK
| * ae7fb0c8bf mmc: vub300: fix invalid response handling
| * 9d8f5797d7 wifi: rtlwifi: remove always-true condition pointed out by GCC 12
| * 843f517667 lib/dynamic_debug.c: use address-of operator on section symbols
| * 0638dcc7e7 treewide: Remove uninitialized_var() usage
| * 1eb88dccb8 kernel/extable.c: use address-of operator on section symbols
| * d069c7ce39 eth: sun: cassini: remove dead code
| * d04adc383f gcc-12: disable '-Wdangling-pointer' warning for now
| * 253d702325 ACPI: thermal: drop an always true check
| * a010f8e646 x86/boot: Wrap literal addresses in absolute_pointer()
| * f0bb513555 flow_dissector: work around stack frame size warning
| * cd943425c6 ata: libata-scsi: Use correct device no in ata_find_dev()
| * 76c67ff783 scsi: stex: Fix gcc 13 warnings
| * cd91ead608 misc: fastrpc: reject new invocations during device removal
| * bf1d0b84df misc: fastrpc: return -EPIPE to invocations on device removal
| * d5f1838815 usb: gadget: f_fs: Add unbind event before functionfs_unbind
| * ac388cbbd9 net: usb: qmi_wwan: Set DTR quirk for BroadMobi BM818
| * e101e8160c iio: dac: build ad5758 driver when AD5758 is selected
| * a87236446a iio: dac: mcp4725: Fix i2c_master_send() return value handling
| * c3b25245e3 iio: light: vcnl4035: fixed chip ID check
| * 711049e31e HID: wacom: avoid integer overflow in wacom_intuos_inout()
| * 4251ff7fd4 HID: google: add jewel USB id
| * f3b4e2a636 iio: adc: mxs-lradc: fix the order of two cleanup operations
| * 030ca3f7b0 mailbox: mailbox-test: fix a locking issue in mbox_test_message_write()
| * 11b0844120 atm: hide unused procfs functions
| * cea581b385 ALSA: oss: avoid missing-prototype warnings
| * 384fd08858 netfilter: conntrack: define variables exp_nat_nla_policy and any_addr with CONFIG_NF_NAT
| * f7e62f1b72 wifi: b43: fix incorrect __packed annotation
| * 8a90351102 scsi: core: Decrease scsi_device's iorequest_cnt if dispatch failed
| * f1e6a10971 arm64/mm: mark private VM_FAULT_X defines as vm_fault_t
| * c87334f4e7 ARM: dts: stm32: add pin map for CAN controller on stm32f7
| * a39f24357f wifi: rtl8xxxu: fix authentication timeout due to incorrect RCR value
| * 353fd22693 media: dvb-core: Fix use-after-free due to race condition at dvb_ca_en50221
| * 66a6d704c2 media: dvb-core: Fix kernel WARNING for blocking operation in wait_event*()
| * ed47886a73 media: dvb-core: Fix use-after-free due on race condition at dvb_net
| * e9033a425a media: mn88443x: fix !CONFIG_OF error by drop of_match_ptr from ID table
| * 08b20cb8e5 media: ttusb-dec: fix memory leak in ttusb_dec_exit_dvb()
| * 46e8b0fe53 media: dvb_ca_en50221: fix a size write bug
| * b66849f354 media: netup_unidvb: fix irq init by register it at the end of probe
| * 88aef84eef media: dvb-usb: dw2102: fix uninit-value in su3000_read_mac_address
| * 6b9a534ec5 media: dvb-usb: digitv: fix null-ptr-deref in digitv_i2c_xfer()
| * f3c8ed7366 media: dvb-usb-v2: rtl28xxu: fix null-ptr-deref in rtl28xxu_i2c_xfer
| * 65033ab2f9 media: dvb-usb-v2: ce6230: fix null-ptr-deref in ce6230_i2c_master_xfer()
| * 37e36b4261 media: dvb-usb-v2: ec168: fix null-ptr-deref in ec168_i2c_xfer()
| * 64f1b8296b media: dvb-usb: az6027: fix three null-ptr-deref in az6027_i2c_xfer()
| * d16f5dc3aa media: dvb_demux: fix a bug for the continuity counter
| * a7c87057f2 ASoC: ssm2602: Add workaround for playback distortions
| * 619f008df1 xfrm: Check if_id in inbound policy/secpath match
| * 21ca817046 ASoC: dwc: limit the number of overrun messages
| * acd5f476c1 nbd: Fix debugfs_create_dir error checking
| * 19ce1e1f34 fbdev: stifb: Fix info entry in sti_struct on error path
| * aa32f2fadb fbdev: modedb: Add 1920x1080 at 60 Hz video mode
| * 199f9c5430 media: rcar-vin: Select correct interrupt mode for V4L2_FIELD_ALTERNATE
| * b950966b44 ARM: 9295/1: unwind:fix unwind abort for uleb128 case
| * a823d8e0bb mailbox: mailbox-test: Fix potential double-free in mbox_test_message_write()
| * 29bfbc8a63 watchdog: menz069_wdt: fix watchdog initialisation
| * 0018639be2 mtd: rawnand: marvell: don't set the NAND frequency select
| * 5f0043efdc mtd: rawnand: marvell: ensure timing values are written
| * 6c0aacf1b4 net: dsa: mv88e6xxx: Increase wait after reset deactivation
| * 94a00f1142 net/sched: flower: fix possible OOB write in fl_set_geneve_opt()
| * dd4b5a204d udp6: Fix race condition in udp6_sendmsg & connect
| * cd4a37f0dc net/netlink: fix NETLINK_LIST_MEMBERSHIPS length report
| * cec562fbf8 ocfs2/dlm: move BITS_TO_BYTES() to bitops.h for wider use
| * 9e6bb63e5e net: sched: fix NULL pointer dereference in mq_attach
| * 2188c0f095 net/sched: Prohibit regrafting ingress or clsact Qdiscs
| * 80b20d528a net/sched: Reserve TC_H_INGRESS (TC_H_CLSACT) for ingress (clsact) Qdiscs
| * 321f383755 net/sched: sch_clsact: Only create under TC_H_CLSACT
| * 5f67d33c01 net/sched: sch_ingress: Only create under TC_H_INGRESS
| * 381a703220 tcp: Return user_mss for TCP_MAXSEG in CLOSE/LISTEN state if user_mss set
| * 32e9a9ee28 tcp: deny tcp_disconnect() when threads are waiting
| * 26e830858a af_packet: do not use READ_ONCE() in packet_bind()
| * 43f1402dc2 mtd: rawnand: ingenic: fix empty stub helper definitions
| * dd3773e8c8 amd-xgbe: fix the false linkup in xgbe_phy_status
| * 603eec060d af_packet: Fix data-races of pkt_sk(sk)->num.
| * bab2f42d8d netrom: fix info-leak in nr_write_internal()
| * d7aeb591b1 net/mlx5: fw_tracer, Fix event handling
| * c7ac3ebf41 dmaengine: pl330: rename _start to prevent build error
| * 17d70de572 iommu/amd: Don't block updates to GATag if guest mode is on
| * fa961ad9ef iommu/rockchip: Fix unwind goto issue
| * 5abb81b4d7 RDMA/bnxt_re: Fix return value of bnxt_re_process_raw_qp_pkt_rx
| * 2bafc7f22d RDMA/bnxt_re: Refactor queue pair creation code
| * 56446791bc RDMA/bnxt_re: Enable SRIOV VF support on Broadcom's 57500 adapter series
| * cc5a673d85 RDMA/efa: Fix unsupported page sizes in device
* | acebb4758a Merge 5.4.245 into android11-5.4-lts
|\|
| * cf0b1e5482 Linux 5.4.245
| * ec14c6e0a2 netfilter: ctnetlink: Support offloaded conntrack entry deletion
| * 5b7d4d91c0 ipv{4,6}/raw: fix output xfrm lookup wrt protocol
| * 6c88024cab binder: fix UAF caused by faulty buffer cleanup
| * e6183912ee bluetooth: Add cmd validity checks at the start of hci_sock_ioctl()
| * 9ba28194ea io_uring: have io_kill_timeout() honor the request references
| * 6de3014d4b io_uring: don't drop completion lock before timer is fully initialized
| * b0bfceaa8c io_uring: always grab lock in io_cancel_async_work()
| * 00395fd7f9 cdc_ncm: Fix the build warning
| * 672e59995e net/mlx5: Devcom, serialize devcom registration
| * f42feb29ba net/mlx5: devcom only supports 2 ports
| * 67637a7ee6 fs: fix undefined behavior in bit shift for SB_NOUSER
| * 02281c23d0 power: supply: bq24190: Call power_supply_changed() after updating input current
| * f6518954c1 power: supply: core: Refactor power_supply_set_input_current_limit_from_supplier()
| * db00ef8fd6 power: supply: bq27xxx: After charger plug in/out wait 0.5s for things to stabilize
| * ff484163df net: cdc_ncm: Deal with too low values of dwNtbOutMaxSize
| * a270ca35a9 cdc_ncm: Implement the 32-bit version of NCM Transfer Block
* | b5d7df0c66 Revert "firmware: arm_sdei: Fix sleep from invalid context BUG"
* | fb4bb5a5f3 Merge 5.4.244 into android11-5.4-lts
|\|
| * 51d0ac4577 Linux 5.4.244
| * edec0d3999 3c589_cs: Fix an error handling path in tc589_probe()
| * 3dfc1004d9 net/mlx5: Devcom, fix error flow in mlx5_devcom_register_device
| * c59106f8bc net/mlx5: Fix error message when failing to allocate device memory
| * 8680d838c9 forcedeth: Fix an error handling path in nv_probe()
| * b8db4a4e20 ASoC: Intel: Skylake: Fix declaration of enum skl_ch_cfg
| * 0099a29bc5 x86/show_trace_log_lvl: Ensure stack pointer is aligned, again
| * c60f38c9bd xen/pvcalls-back: fix double frees with pvcalls_new_active_socket()
| * 9b13972e4f coresight: Fix signedness bug in tmc_etr_buf_insert_barrier_packet()
| * f6b610730e power: supply: sbs-charger: Fix INHIBITED bit for Status reg
| * 0c5f4cec75 power: supply: bq27xxx: Fix poll_interval handling and races on remove
| * dafe9136be power: supply: bq27xxx: Fix I2C IRQ race on remove
| * 7b3b119649 power: supply: bq27xxx: Fix bq27xxx_battery_update() race condition
| * 96bfafbc7d power: supply: leds: Fix blink to LED on transition
| * 011f47c8b8 ipv6: Fix out-of-bounds access in ipv6_find_tlv()
| * 120cdad8b2 bpf: Fix mask generation for 32-bit narrow loads of 64-bit fields
| * 9928ce5225 selftests: fib_tests: mute cleanup error message
| * 58766252f6 net: fix skb leak in __skb_tstamp_tx()
| * 2b580d0f03 media: radio-shark: Add endpoint checks
| * a730feb672 USB: sisusbvga: Add endpoint checks
| * 80100e0863 USB: core: Add routines for endpoint checks in old drivers
| * 7e3ae83371 udplite: Fix NULL pointer dereference in __sk_mem_raise_allocated().
| * 9ea0c5f90a net: fix stack overflow when LRO is disabled for virtual interfaces
| * 1522dc58bf fbdev: udlfb: Fix endpoint check
| * be646802b3 debugobjects: Don't wake up kswapd from fill_pool()
| * 4e5a7181a6 x86/topology: Fix erroneous smp_num_siblings on Intel Hybrid platforms
| * 6d091e0ddc parisc: Fix flush_dcache_page() for usage from irq context
| * b556618bac selftests/memfd: Fix unknown type name build failure
| * 04aee084a3 x86/mm: Avoid incomplete Global INVLPG flushes
| * a9f5423460 btrfs: use nofs when cleaning up aborted transactions
| * 4f92934d80 gpio: mockup: Fix mode of debugfs files
| * da8adda579 parisc: Allow to reboot machine after system halt
| * 43ffe982a3 parisc: Handle kgdb breakpoints only in kernel context
| * f7d19a366c m68k: Move signal frame following exception on 68020/030
| * 8facb9cc16 ALSA: hda/realtek: Enable headset onLenovo M70/M90
| * 5cc3e698c2 ALSA: hda/ca0132: add quirk for EVGA X299 DARK
| * 68e4c39017 mt76: mt7615: Fix build with older compilers
| * b558275c1b spi: fsl-cpm: Use 16 bit mode for large transfers with even size
| * d64a45c019 spi: fsl-spi: Re-organise transfer bits_per_word adaptation
| * aabe8ca791 watchdog: sp5100_tco: Immediately trigger upon starting.
| * aeff9e7e87 s390/qdio: fix do_sqbs() inline assembly constraint
| * ab196fe70a s390/qdio: get rid of register asm
| * a4e3c4c65a vc_screen: reload load of struct vc_data pointer in vcs_write() to avoid UAF
| * 74e644795d vc_screen: rewrite vcs_size to accept vc, not inode
| * e9399d4ea5 usb: gadget: u_ether: Fix host MAC address case
| * 939cafcdf7 usb: gadget: u_ether: Convert prints to device prints
| * c8489e0fab lib/string_helpers: Introduce string_upper() and string_lower() helpers
| * 7e15602c50 HID: wacom: add three styli to wacom_intuos_get_tool_type
| * 2a12339ce3 HID: wacom: Add new Intuos Pro Small (PTH-460) device IDs
| * b5185f1b11 HID: wacom: Force pen out of prox if no events have been received in a while
| * e0c1b35239 netfilter: nf_tables: hold mutex on netns pre_exit path
| * 6236af6936 netfilter: nf_tables: validate NFTA_SET_ELEM_OBJREF based on NFT_SET_OBJECT flag
| * 05b4105e68 netfilter: nf_tables: stricter validation of element data
| * e832e4bae5 netfilter: nf_tables: allow up to 64 bytes in the set element data area
| * 28fe10236a netfilter: nf_tables: add nft_setelem_parse_key()
| * eb5b579bd6 netfilter: nf_tables: validate registers coming from userspace.
| * cfe1b9719c netfilter: nftables: statify nft_parse_register()
| * 7c788393d4 netfilter: nftables: add nft_parse_register_store() and use it
| * 25336cd96b netfilter: nftables: add nft_parse_register_load() and use it
| * 116d53f09f nilfs2: fix use-after-free bug of nilfs_root in nilfs_evict_inode()
| * df89b1753e powerpc/64s/radix: Fix soft dirty tracking
| * 60b9a9c8f3 tpm/tpm_tis: Disable interrupts for more Lenovo devices
| * a33c172c1e ceph: force updating the msg pointer in non-split case
| * 6eb9ed0ab7 serial: Add support for Advantech PCI-1611U card
| * 21f107a959 statfs: enforce statfs[64] structure initialization
| * 1eb3e32de7 KVM: x86: do not report a vCPU as preempted outside instruction boundaries
| * a88638a954 can: kvaser_pciefd: Disable interrupts in probe error path
| * 4579e25567 can: kvaser_pciefd: Do not send EFLUSH command on TFD interrupt
| * 33d5a0a498 can: kvaser_pciefd: Clear listen-only bit if not explicitly requested
| * e5ac4f1207 can: kvaser_pciefd: Empty SRB buffer in probe
| * c0e9fb21b6 can: kvaser_pciefd: Call request_irq() before enabling interrupts
| * 36cd7601e6 can: kvaser_pciefd: Set CAN_STATE_STOPPED in kvaser_pciefd_stop()
| * e658112893 can: j1939: recvmsg(): allow MSG_CMSG_COMPAT flag
| * 8804825251 ALSA: hda/realtek: Add quirk for 2nd ASUS GU603
| * 57fd0d122e ALSA: hda/realtek: Add a quirk for HP EliteDesk 805
| * 739056188a ALSA: hda: Add NVIDIA codec IDs a3 through a7 to patch table
| * 4ef155ddf9 ALSA: hda: Fix Oops by 9.1 surround channel names
| * 4f9c0a7c27 usb: typec: altmodes/displayport: fix pin_assignment_show
| * 33b6648d27 usb: dwc3: debugfs: Resume dwc3 before accessing registers
| * 241491524a USB: UHCI: adjust zhaoxin UHCI controllers OverCurrent bit value
| * 1f36dc4161 usb-storage: fix deadlock when a scsi command timeouts more than once
| * 7cef7681aa USB: usbtmc: Fix direction for 0-length ioctl control messages
| * f662f856ac vlan: fix a potential uninit-value in vlan_dev_hard_start_xmit()
| * 53bf7cda16 igb: fix bit_shift to be in [1..8] range
| * e20105d967 cassini: Fix a memory leak in the error handling path of cas_init_one()
| * e519a404a5 wifi: iwlwifi: mvm: don't trust firmware n_channels
| * d0baaadd1c net: bcmgenet: Restore phy_stop() depending upon suspend/close
| * 2cca63d5bc net: bcmgenet: Remove phy_stop() from bcmgenet_netif_stop()
| * 435855b083 net: nsh: Use correct mac_offset to unwind gso skb in nsh_gso_segment()
| * ed50fcab14 drm/exynos: fix g2d_open/close helper function definitions
| * 1550bcf298 media: netup_unidvb: fix use-after-free at del_timer()
| * 69055f9990 net: hns3: fix reset delay time to avoid configuration timeout
| * 304e5cb77e net: hns3: fix sending pfc frames after reset issue
| * d1bcc60687 erspan: get the proto with the md version for collect_md
| * f185ede016 ip_gre, ip6_gre: Fix race condition on o_seqno in collect_md mode
| * 0eb3ec0a35 ip6_gre: Make o_seqno start from 0 in native mode
| * 3040962413 ip6_gre: Fix skb_under_panic in __gre6_xmit()
| * 7525aa2117 serial: arc_uart: fix of_iomap leak in `arc_serial_probe`
| * 5a90309002 vsock: avoid to close connected socket after the timeout
| * 5009aead17 ALSA: firewire-digi00x: prevent potential use after free
| * b22b514209 net: fec: Better handle pm_runtime_get() failing in .remove()
| * 033297ef3b af_key: Reject optional tunnel/BEET mode templates in outbound policies
| * 912a6cff0d cpupower: Make TSC read per CPU for Mperf monitor
| * 131eb9c9b1 ASoC: fsl_micfil: register platform component before registering cpu dai
| * a3714a47b4 btrfs: fix space cache inconsistency after error loading it from disk
| * 5968983037 btrfs: replace calls to btrfs_find_free_ino with btrfs_find_free_objectid
| * 1e453cb550 mfd: dln2: Fix memory leak in dln2_probe()
| * bdc33478d5 phy: st: miphy28lp: use _poll_timeout functions for waits
| * e6e917e82d Input: xpad - add constants for GIP interface numbers
| * 9fcef1e37d iommu/arm-smmu-v3: Acknowledge pri/event queue overflow if any
| * 4461f41ece clk: tegra20: fix gcc-7 constant overflow warning
| * c23e6383d7 RDMA/core: Fix multiple -Warray-bounds warnings
| * 3ed95a6f6c recordmcount: Fix memory leaks in the uwrite function
| * 38a118fd54 sched: Fix KCSAN noinstr violation
| * cbe3063a9b mcb-pci: Reallocate memory region to avoid memory overlapping
| * d5cd2928d3 serial: 8250: Reinit port->pm on port specific driver unbind
| * ccb12585a7 usb: typec: tcpm: fix multiple times discover svids error
| * c5405c7671 HID: wacom: generic: Set battery quirk only when we see battery data
| * d3f32dc2cc spi: spi-imx: fix MX51_ECSPI_* macros when cs > 3
| * bf80dbd528 HID: logitech-hidpp: Reconcile USB and Unifying serials
| * e28f9de2d4 HID: logitech-hidpp: Don't use the USB serial for USB devices
| * 8a65476dd1 staging: rtl8192e: Replace macro RTL_PCI_DEVICE with PCI_DEVICE
| * 2112c4c47d Bluetooth: L2CAP: fix "bad unlock balance" in l2cap_disconnect_rsp
| * fa57021262 wifi: iwlwifi: dvm: Fix memcpy: detected field-spanning write backtrace
| * 0ad8dd870a wifi: iwlwifi: pcie: Fix integer overflow in iwl_write_to_user_buf
| * f6f2d16c77 wifi: iwlwifi: pcie: fix possible NULL pointer dereference
| * a7ec2f424f samples/bpf: Fix fout leak in hbm's run_bpf_prog
| * 4ceedc2f8b f2fs: fix to drop all dirty pages during umount() if cp_error is set
| * 8659c5f4ff ext4: Fix best extent lstart adjustment logic in ext4_mb_new_inode_pa()
| * cee78217a7 ext4: set goal start correctly in ext4_mb_normalize_request
| * d43b1bdb10 gfs2: Fix inode height consistency check
| * 410e610a96 scsi: message: mptlan: Fix use after free bug in mptlan_remove() due to race condition
| * cc2d2b3dbf lib: cpu_rmap: Avoid use after free on rmap->obj array entries
| * 89f5055f9b scsi: target: iscsit: Free cmds before session free
| * 67236cf14d net: Catch invalid index in XPS mapping
| * 92af9cb86a net: pasemi: Fix return type of pasemi_mac_start_tx()
| * 644a9d5e22 scsi: lpfc: Prevent lpfc_debugfs_lockstat_write() buffer overflow
| * c4813f858e ext2: Check block size validity during mount
| * 56c7e9c39b wifi: brcmfmac: cfg80211: Pass the PMK in binary instead of hex
| * c409eb45f5 ACPICA: ACPICA: check null return of ACPI_ALLOCATE_ZEROED in acpi_db_display_objects
| * 710e09fd11 ACPICA: Avoid undefined behavior: applying zero offset to null pointer
| * 99c8f2e6f3 drm/tegra: Avoid potential 32-bit integer overflow
| * ccae2233e9 ACPI: EC: Fix oops when removing custom query handlers
| * 48ac727ea4 firmware: arm_sdei: Fix sleep from invalid context BUG
| * a2a5d3a584 memstick: r592: Fix UAF bug in r592_remove due to race condition
| * d73e8c4767 regmap: cache: Return error in cache sync operations for REGCACHE_NONE
| * 9b72cb394f drm/amd/display: Use DC_LOG_DC in the trasform pixel function
| * a75d9211a0 fs: hfsplus: remove WARN_ON() from hfsplus_cat_{read,write}_inode()
| * 196528ad48 af_unix: Fix data races around sk->sk_shutdown.
| * 7d17bc2d4e af_unix: Fix a data race of sk->sk_receive_queue->qlen.
| * 699c9e7c9f net: datagram: fix data-races in datagram_poll()
| * 1aa872e967 ipvlan:Fix out-of-bounds caused by unclear skb->cb
| * 4188c52694 net: add vlan_get_protocol_and_depth() helper
| * 57a269d82f net: tap: check vlan with eth_type_vlan() method
| * 1747aa98ab net: annotate sk->sk_err write from do_recvmmsg()
| * a507022c86 netlink: annotate accesses to nlk->cb_running
| * b47aae7038 netfilter: conntrack: fix possible bug_on with enable_hooks=1
| * d7343f8de0 net: Fix load-tearing on sk->sk_stamp in sock_recv_cmsgs().
| * 42e1dafa65 linux/dim: Do nothing if no time delta between samples
| * 7460ac5a66 ARM: 9296/1: HP Jornada 7XX: fix kernel-doc warnings
| * 22b8ac608a drm/mipi-dsi: Set the fwnode for mipi_dsi_device
| * d4992b2b5c driver core: add a helper to setup both the of_node and fwnode of a device
* | 4c85910ff8 Revert "PM: domains: Fix up terminology with parent/child"
* | cba632cb06 Revert "PM: domains: Restore comment indentation for generic_pm_domain.child_links"
* | 92cfb88602 Revert "scripts/gdb: bail early if there are no generic PD"
* | 2bd517d6bc Revert "uapi/linux/const.h: prefer ISO-friendly __typeof__"
* | 673a774ad6 Revert "netfilter: nf_tables: don't write table validation state without mutex"
* | 88ac2d9193 Merge 5.4.243 into android11-5.4-lts
|\|
| * f53660ec66 Linux 5.4.243
| * d60f15682a drm/amd/display: Fix hang when skipping modeset
| * 93ca0d7b88 mm/page_alloc: fix potential deadlock on zonelist_update_seq seqlock
| * 3f231e30cd drm/exynos: move to use request_irq by IRQF_NO_AUTOEN flag
| * 65a8b6d129 drm/msm/adreno: Fix null ptr access in adreno_gpu_cleanup()
| * 62ac943eb2 firmware: raspberrypi: fix possible memory leak in rpi_firmware_probe()
| * a781ea3437 drm/msm: Fix double pm_runtime_disable() call
| * e4e88f74eb PM: domains: Restore comment indentation for generic_pm_domain.child_links
| * ddcca7299d printk: declare printk_deferred_{enter,safe}() in include/linux/printk.h
| * c2c3ffc798 PCI: pciehp: Fix AB-BA deadlock between reset_lock and device_lock
| * 6a24285f64 PCI: pciehp: Use down_read/write_nested(reset_lock) to fix lockdep errors
| * dde34ef0bc drbd: correctly submit flush bio on barrier
| * 373720b928 serial: 8250: Fix serial8250_tx_empty() race with DMA Tx
| * f2a1071100 tty: Prevent writing chars during tcsetattr TCSADRAIN/FLUSH
| * ba04d6af5a ext4: fix invalid free tracking in ext4_xattr_move_to_block()
| * 185062a219 ext4: remove a BUG_ON in ext4_mb_release_group_pa()
| * d7ff83a71d ext4: bail out of ext4_xattr_ibody_get() fails for any reason
| * 486efbbc94 ext4: add bounds checking in get_max_inline_xattr_value_size()
| * b4fa4768c9 ext4: fix deadlock when converting an inline directory in nojournal mode
| * 2dda202906 ext4: improve error recovery code paths in __ext4_remount()
| * 525c802de3 ext4: fix data races when using cached status extents
| * 4f4fd982d9 ext4: avoid a potential slab-out-of-bounds in ext4_group_desc_csum
| * 1b90fbc759 ext4: fix WARNING in mb_find_extent
| * f9e27d4bdb HID: wacom: insert timestamp to packed Bluetooth (BT) events
| * d8b609e662 HID: wacom: Set a default resolution for older tablets
| * 3decf3a750 drm/amdgpu: disable sdma ecc irq only when sdma RAS is enabled in suspend
| * 625d4112ea drm/amdgpu/gfx: disable gfx9 cp_ecc_error_irq only when enabling legacy gfx ras
| * b1fabc3794 drm/amdgpu: fix an amdgpu_irq_put() issue in gmc_v9_0_hw_fini()
| * c6bb596624 drm/panel: otm8009a: Set backlight parent to panel device
| * 3e77036246 f2fs: fix potential corruption when moving a directory
| * dafc5a5c8f ARM: dts: s5pv210: correct MIPI CSIS clock name
| * ad751b896e ARM: dts: exynos: fix WM8960 clock name in Itop Elite
| * 8234964707 remoteproc: st: Call of_node_put() on iteration error
| * a1366ecb09 remoteproc: stm32: Call of_node_put() on iteration error
| * f16bc5111c sh: nmi_debug: fix return value of __setup handler
| * c9871a47f4 sh: init: use OF_EARLY_FLATTREE for early init
| * 111b08116d sh: math-emu: fix macro redefined warning
| * 8fb33166ae inotify: Avoid reporting event with invalid wd
| * 0ccea97abe platform/x86: touchscreen_dmi: Add info for the Dexp Ursus KX210i
| * 871641c7eb cifs: fix pcchunk length type in smb2_copychunk_range
| * 3e2b4bceaa btrfs: print-tree: parent bytenr must be aligned to sector size
| * 1e05bf5e80 btrfs: don't free qgroup space unless specified
| * b232f5e8cf btrfs: fix btrfs_prev_leaf() to not return the same key twice
| * 96f71f669b perf symbols: Fix return incorrect build_id size in elf_read_build_id()
| * 78190a6ebe perf map: Delete two variable initialisations before null pointer checks in sort__sym_from_cmp()
| * ffec80cc67 perf vendor events power9: Remove UTF-8 characters from JSON files
| * 62f1ebfe9a virtio_net: suppress cpu stall when free_unused_bufs
| * 1dc5faf30a virtio_net: split free_unused_bufs()
| * b15637e717 net: dsa: mt7530: fix corrupt frames using trgmii on 40 MHz XTAL MT7621
| * 544b0de2d7 ALSA: caiaq: input: Add error handling for unsupported input methods in `snd_usb_caiaq_input_init`
| * 35f2642f4a drm/amdgpu: add a missing lock for AMDGPU_SCHED
| * 5cfe3f910f af_packet: Don't send zero-byte data in packet_sendmsg_spkt().
| * fbcfa00386 ionic: remove noise from ethtool rxnfc error msg
| * 4a56f1f6fe rxrpc: Fix hard call timeout units
| * dfa36eb380 net/sched: act_mirred: Add carrier check
| * cc5ccfb7c0 writeback: fix call of incorrect macro
| * 9c1fcb97f9 net: dsa: mv88e6xxx: add mv88e6321 rsvd2cpu
| * e804124390 sit: update dev->needed_headroom in ipip6_tunnel_bind_dev()
| * cc5fe387c6 net/sched: cls_api: remove block_cb from driver_list before freeing
| * 8acd3a2887 net/ncsi: clear Tx enable mode when handling a Config required AEN
| * bc0905a765 relayfs: fix out-of-bounds access in relay_file_read
| * c038ae623a kernel/relay.c: fix read_pos error when multiple readers
| * 4f4de392f4 crypto: safexcel - Cleanup ring IRQ workqueues on load failure
| * b9878f485d crypto: inside-secure - irq balance
| * 439d3a7056 dm verity: fix error handling for check_at_most_once on FEC
| * 0156f7dbd8 dm verity: skip redundant verity_handle_err() on I/O errors
| * e4875d6e05 mailbox: zynqmp: Fix counts of child nodes
| * ff0d64f512 mailbox: zynq: Switch to flexible array to simplify code
| * 352b152905 tick/nohz: Fix cpu_is_hotpluggable() by checking with nohz subsystem
| * 9b2ed14431 nohz: Add TICK_DEP_BIT_RCU
| * c8b6063f13 netfilter: nf_tables: deactivate anonymous set from preparation phase
| * 29fb2a1a5f debugobject: Ensure pool refill (again)
| * cef1b8a4df perf intel-pt: Fix CYC timestamps after standalone CBR
| * 5ead86d575 perf auxtrace: Fix address filter entire kernel size
| * 29a1ef57c3 dm ioctl: fix nested locking in table_clear() to remove deadlock concern
| * 337b7af273 dm flakey: fix a crash with invalid table line
| * 6d126899b0 dm integrity: call kmem_cache_destroy() in dm_integrity_init() error path
| * cbe0a7ec67 dm clone: call kmem_cache_destroy() in dm_clone_init() error path
| * d8f66a19f8 s390/dasd: fix hanging blockdevice after request requeue
| * 5492d40812 btrfs: scrub: reject unsupported scrub flags
| * 946e067b4c scripts/gdb: fix lx-timerlist for Python3
| * 7cf5ce2857 clk: rockchip: rk3399: allow clk_cifout to force clk_cifout_src to reparent
| * 4379d5ce92 wifi: rtl8xxxu: RTL8192EU always needs full init
| * ecdcefd312 mailbox: zynqmp: Fix typo in IPI documentation
| * 38afc633d3 mailbox: zynqmp: Fix IPI isr handling
| * 14964127be md/raid10: fix null-ptr-deref in raid10_sync_request
| * fe1cbbcb1a nilfs2: fix infinite loop in nilfs_mdt_get_block()
| * 4569a292a8 nilfs2: do not write dirty data after degenerating to read-only
| * fd37a5c699 parisc: Fix argument pointer in real64_call_asm()
| * 736aeb17b6 afs: Fix updating of i_size with dv jump from server
| * 27263ff397 dmaengine: at_xdmac: do not enable all cyclic channels
| * 8c821199bc dmaengine: dw-edma: Fix to enable to issue dma request on DMA processing
| * 24c9c4ad23 dmaengine: dw-edma: Fix to change for continuous transfer
| * 2e900f3631 phy: tegra: xusb: Add missing tegra_xusb_port_unregister for usb2_port and ulpi_port
| * 58e0264658 pwm: mtk-disp: Disable shadow registers before setting backlight values
| * 33f00f0a73 pwm: mtk-disp: Adjust the clocks to avoid them mismatch
| * e5e9e59c45 pwm: mtk-disp: Don't check the return code of pwmchip_remove()
| * 8e238e8882 dmaengine: mv_xor_v2: Fix an error code.
| * 026df12f3c leds: TI_LMU_COMMON: select REGMAP instead of depending on it
| * a34f6dcb78 ext4: fix use-after-free read in ext4_find_extent for bigalloc + inline
| * 6dfd85ada8 openrisc: Properly store r31 to pt_regs on unhandled exceptions
| * 2fd44d2bde clocksource/drivers/davinci: Fix memory leak in davinci_timer_register when init fails
| * f2aaf41988 clocksource: davinci: axe a pointless __GFP_NOFAIL
| * fc051820d6 clocksource/drivers/davinci: Avoid trailing '\n' hidden in pr_fmt()
| * 945e989862 RDMA/mlx5: Use correct device num_ports when modify DC
| * 9bf843683a SUNRPC: remove the maximum number of retries in call_bind_status
| * 1dfa3c9dd2 Input: raspberrypi-ts - fix refcount leak in rpi_ts_probe
| * ce6c42f0b6 input: raspberrypi-ts: Release firmware handle when not needed
| * de85be00a8 firmware: raspberrypi: Introduce devm_rpi_firmware_get()
| * d537afa08e firmware: raspberrypi: Keep count of all consumers
| * 919f470337 NFSv4.1: Always send a RECLAIM_COMPLETE after establishing lease
| * fe60c3af70 IB/hfi1: Fix SDMA mmu_rb_node not being evicted in LRU order
| * b4f12e2402 RDMA/siw: Remove namespace check from siw_netdev_event()
| * 795d11e8ff clk: add missing of_node_put() in "assigned-clocks" property parsing
| * 0c770f95a2 power: supply: generic-adc-battery: fix unit scaling
| * 31ca78dc1f rtc: meson-vrtc: Use ktime_get_real_ts64() to get the current time
| * 8feca62590 RDMA/mlx4: Prevent shift wrapping in set_user_sq_size()
| * 683cd87041 rtc: omap: include header for omap_rtc_power_off_program prototype
| * a48403e8c3 RDMA/rdmavt: Delete unnecessary NULL check
| * b24e0e4612 RDMA/siw: Fix potential page_array out of range access
| * 318bc22dec perf/core: Fix hardlockup failure caused by perf throttle
| * ff3edfb3c8 powerpc/rtas: use memmove for potentially overlapping buffer copy
| * 333a2a9846 macintosh: via-pmu-led: requires ATA to be set
| * e2dd8bbab7 powerpc/sysdev/tsi108: fix resource printk format warnings
| * 770d583cd5 powerpc/wii: fix resource printk format warnings
| * f60c8d7c16 powerpc/mpc512x: fix resource printk format warning
| * 97cd970f8a macintosh/windfarm_smu_sat: Add missing of_node_put()
| * 54dda73222 spmi: Add a check for remove callback when removing a SPMI driver
| * af9bfe1c0a staging: rtl8192e: Fix W_DISABLE# does not work after stop/start
| * 572d48361a serial: 8250: Add missing wakeup event reporting
| * 488baa8038 tty: serial: fsl_lpuart: adjust buffer length to the intended size
| * 8fa80b452b firmware: stratix10-svc: Fix an NULL vs IS_ERR() bug in probe
| * 26ca30516b usb: mtu3: fix kernel panic at qmu transfer done irq handler
| * bd7a3e6416 usb: chipidea: fix missing goto in `ci_hdrc_probe`
| * f9e2abb6df sh: sq: Fix incorrect element size for allocating bitmap buffer
| * e1431faa89 uapi/linux/const.h: prefer ISO-friendly __typeof__
| * 6716203844 spi: cadence-quadspi: fix suspend-resume implementations
| * caaefbf823 mtd: spi-nor: cadence-quadspi: Handle probe deferral while requesting DMA channel
| * ee5ffe4cdf mtd: spi-nor: cadence-quadspi: Don't initialize rx_dma_complete on failure
| * 7c69aeca59 mtd: spi-nor: cadence-quadspi: Provide a way to disable DAC mode
| * df9708297b mtd: spi-nor: cadence-quadspi: Make driver independent of flash geometry
| * 30ac77e995 scripts/gdb: bail early if there are no generic PD
| * 35a2681e99 PM: domains: Fix up terminology with parent/child
| * 0fbc62db7e scripts/gdb: bail early if there are no clocks
| * 0988baae39 ia64: salinfo: placate defined-but-not-used warning
| * d6cb7b6868 ia64: mm/contig: fix section mismatch warning/error
| * d3c6d52148 of: Fix modalias string generation
| * ca0f4ad2b7 vmci_host: fix a race condition in vmci_host_poll() causing GPF
| * 170e223240 spi: fsl-spi: Fix CPM/QE mode Litte Endian
| * 8632384337 spi: qup: Don't skip cleanup in remove's error path
| * 814a9a6de1 linux/vt_buffer.h: allow either builtin or modular for macros
| * 3547e5bd0d ASoC: es8316: Handle optional IRQ assignment
| * 9650d5a1e7 ASoC: es8316: Use IRQF_NO_AUTOEN when requesting the IRQ
| * f5ce428e3e genirq: Add IRQF_NO_AUTOEN for request_irq/nmi()
| * 0f31993721 PCI: imx6: Install the fault handler only on compatible match
| * 0fee5030c0 usb: gadget: udc: renesas_usb3: Fix use after free bug in renesas_usb3_remove due to race condition
| * 7d2bc728cc iio: light: max44009: add missing OF device matching
| * ee0e2f7af0 fpga: bridge: fix kernel-doc parameter description
| * 3fb02404c1 usb: host: xhci-rcar: remove leftover quirk handling
| * 36fb7843f1 pstore: Revert pmsg_lock back to a normal mutex
| * 602fa8af44 tcp/udp: Fix memleaks of sk and zerocopy skbs with TX timestamp.
| * 638810f5d0 net: amd: Fix link leak when verifying config failed
| * 9ef809945e netlink: Use copy_to_user() for optval in netlink_getsockopt().
| * de0ffb5145 Revert "Bluetooth: btsdio: fix use after free bug in btsdio_remove due to unfinished work"
| * 27c468ec1a ipv4: Fix potential uninit variable access bug in __ip_make_skb()
| * 3b9960e21e netfilter: nf_tables: don't write table validation state without mutex
| * 64d2c1cfd0 bpf: Don't EFAULT for getsockopt with optval=NULL
| * 3bf918f90f ixgbe: Enable setting RSS table to default values
| * 053b36c50b ixgbe: Allow flow hash to be set via ethtool
| * ae23fc2b23 wifi: iwlwifi: mvm: check firmware response size
| * ffdfaf27eb wifi: iwlwifi: make the loop for card preparation effective
| * 3725b35fc0 md/raid10: fix memleak of md thread
| * fb3f2f2fa0 md: update the optimal I/O size on reshape
| * b6460f68c1 md/raid10: fix memleak for 'conf->bio_split'
| * 8c5d5d7ffd md/raid10: fix leak of 'r10bio->remaining' for recovery
| * 1fee7e391d bpf, sockmap: Revert buggy deadlock fix in the sockhash and sockmap
| * d5fdcd2384 nvme-fcloop: fix "inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage"
| * b1e6b3fd11 nvme: fix async event trace event
| * eaaa0c6b05 nvme: handle the persistent internal error AER
| * c229821510 bpf, sockmap: fix deadlocks in the sockhash and sockmap
| * 74d90f92ea scsi: lpfc: Fix ioremap issues in lpfc_sli4_pci_mem_setup()
| * 01993768b3 crypto: drbg - Only fail when jent is unavailable in FIPS mode
| * b21c7e28e8 crypto: drbg - make drbg_prepare_hrng() handle jent instantiation errors
| * 14efbe2499 bpftool: Fix bug for long instructions in program CFG dumps
| * 3e3533c56c wifi: rtlwifi: fix incorrect error codes in rtl_debugfs_set_write_reg()
| * 03109f1870 wifi: rtlwifi: fix incorrect error codes in rtl_debugfs_set_write_rfreg()
| * e163e64227 rtlwifi: Replace RT_TRACE with rtl_dbg
| * faec6b8654 rtlwifi: Start changing RT_TRACE into rtl_dbg
| * 7c5e804b6d f2fs: handle dqget error in f2fs_transfer_project_quota()
| * 7a2ae008a5 scsi: megaraid: Fix mega_cmd_done() CMDID_INT_CMDS
| * a4245323d2 scsi: target: iscsit: Fix TAS handling during conn cleanup
| * 8e402d5198 net/packet: convert po->auxdata to an atomic flag
| * f3ac72c7ab net/packet: convert po->origdev to an atomic flag
| * 4760229b82 net/packet: annotate accesses to po->xmit
| * 47464e0c65 vlan: partially enable SIOCSHWTSTAMP in container
| * 8f851a75bb scm: fix MSG_CTRUNC setting condition for SO_PASSSEC
| * 7160c6940a wifi: rtw88: mac: Return the original error from rtw_mac_power_switch()
| * 743ae09b28 wifi: rtw88: mac: Return the original error from rtw_pwr_seq_parser()
| * 72d5edceb2 tools: bpftool: Remove invalid \' json escape
| * 0d1792c983 wifi: ath6kl: reduce WARN to dev_dbg() in callback
| * 8d17563174 wifi: ath5k: fix an off by one check in ath5k_eeprom_read_freq_list()
| * d989931866 wifi: ath9k: hif_usb: fix memory leak of remain_skbs
| * 1286c4ce1f wifi: ath6kl: minor fix for allocation size
| * a3e7a3d472 tick/common: Align tick period with the HZ tick.
| * 04be737176 tick: Get rid of tick_period
| * 3df29117d8 tick/sched: Optimize tick_do_update_jiffies64() further
| * b6fe34d936 tick/sched: Reduce seqcount held scope in tick_do_update_jiffies64()
| * 746eac77e0 tick/sched: Use tick_next_period for lockless quick check
| * a23607579f timekeeping: Split jiffies seqlock
| * 22d7ec50ff debugobject: Prevent init race with static objects
| * a687da5004 arm64: kgdb: Set PSTATE.SS to 1 to re-enable single-step
| * 442470948c x86/ioapic: Don't return 0 from arch_dynirq_lower_bound()
| * 824683dbec regulator: stm32-pwr: fix of_iomap leak
| * 53adb408b1 media: rc: gpio-ir-recv: Fix support for wake-up
| * 9df630dafa media: rcar_fdp1: Fix refcount leak in probe and remove function
| * 6fd6e2f29c media: rcar_fdp1: Fix the correct variable assignments
| * 75b55a3cbb media: rcar_fdp1: Make use of the helper function devm_platform_ioremap_resource()
| * 03d2344592 media: rcar_fdp1: fix pm_runtime_get_sync() usage count
| * aebe8e43d8 media: rcar_fdp1: simplify error check logic at fdp_open()
| * a4b6ab360f media: saa7134: fix use after free bug in saa7134_finidev due to race condition
| * cd1583caed media: dm1105: Fix use after free bug in dm1105_remove due to race condition
| * 0c61a6897c x86/apic: Fix atomic update of offset in reserve_eilvt_offset()
| * 5224ea5751 regulator: core: Avoid lockdep reports when resolving supplies
| * 73b262115f regulator: core: Consistently set mutex_owner when using ww_mutex_lock_slow()
| * 9b53238b3b drm/lima/lima_drv: Add missing unwind goto in lima_pdev_probe()
| * 0a6d476d9c mmc: sdhci-of-esdhc: fix quirk to ignore command inhibit for data
| * f79421c360 drm/msm/adreno: drop bogus pm_runtime_set_active()
| * 438d00b18d drm/msm/adreno: Defer enabling runpm until hw_init()
| * 594726c938 drm/msm: fix unbalanced pm_runtime_enable in adreno_gpu_{init, cleanup}
| * 37c8085cf9 firmware: qcom_scm: Clear download bit during reboot
| * 620b983589 media: av7110: prevent underflow in write_ts_to_decoder()
| * 1205c52cf2 media: uapi: add MEDIA_BUS_FMT_METADATA_FIXED media bus format.
| * c6a315f0b1 media: bdisp: Add missing check for create_workqueue
| * 1a057b6895 ARM: dts: qcom: ipq8064: Fix the PCI I/O port range
| * 699bf5a793 ARM: dts: qcom: ipq8064: reduce pci IO size to 64K
| * 1d207fcdf6 ARM: dts: qcom: ipq4019: Fix the PCI I/O port range
| * e0162c9297 EDAC/skx: Fix overflows on the DRAM row address mapping arrays
| * acb6f45775 arm64: dts: renesas: r8a774c0: Remove bogus voltages from OPP table
| * 0524eb6882 arm64: dts: renesas: r8a77990: Remove bogus voltages from OPP table
| * a535b5d4a2 drm/probe-helper: Cancel previous job before starting new one
| * 4223f98d4d drm/vgem: add missing mutex_destroy
| * 8747cd580b drm/rockchip: Drop unbalanced obj unref
| * 9773c58594 erofs: fix potential overflow calculating xattr_isize
| * 880c79bdb0 erofs: stop parsing non-compact HEAD index if clusterofs is invalid
| * e998107daa tpm, tpm_tis: Do not skip reset of original interrupt vector
| * 1c131a32a9 selinux: ensure av_permissions.h is built when needed
| * 11458692eb selinux: fix Makefile dependencies of flask.h
| * 823f554747 ubifs: Free memory for tmpfile name
| * d3f1b113a5 ubi: Fix return value overwrite issue in try_write_vid_and_data()
| * 6f2eee5457 ubifs: Fix memleak when insert_old_idx() failed
| * 2c2a76b7c4 Revert "ubifs: dirty_cow_znode: Fix memleak in error handling path"
| * 5d1f14beab i2c: omap: Fix standard mode false ACK readings
| * d482617fa6 KVM: nVMX: Emulate NOPs in L2, and PAUSE if it's not intercepted
| * 67d33b8c56 reiserfs: Add security prefix to xattr name in reiserfs_security_write()
| * 2399b1fda0 ring-buffer: Sync IRQ works before buffer destruction
| * a7fa8c9dc8 pwm: meson: Fix g12a ao clk81 name
| * a3e0d3430f pwm: meson: Fix axg ao mux parents
| * 719459877d kheaders: Use array declaration instead of char
| * 4ec3be7003 ipmi: fix SSIF not responding under certain cond.
| * bead854bcc ipmi:ssif: Add send_retries increment
| * 0f91290774 MIPS: fw: Allow firmware to pass a empty env
| * 3092933b26 xhci: fix debugfs register accesses while suspended
| * 3c5a28658d debugfs: regset32: Add Runtime PM support
| * 2298b30010 staging: iio: resolver: ads1210: fix config mode
| * fbd11f086b perf sched: Cast PTHREAD_STACK_MIN to int as it may turn into sysconf(__SC_THREAD_STACK_MIN_VALUE)
| * 6525d2fd6f USB: dwc3: fix runtime pm imbalance on unbind
| * 2d5844aa6e USB: dwc3: fix runtime pm imbalance on probe errors
| * 0804f3715c asm-generic/io.h: suppress endianness warnings for readq() and writeq()
| * 944ff47a19 ASoC: Intel: bytcr_rt5640: Add quirk for the Acer Iconia One 7 B1-750
| * f00e4bfd7f iio: adc: palmas_gpadc: fix NULL dereference on rmmod
| * 85ed09c330 USB: serial: option: add UNISOC vendor and TOZED LT70C product
| * 48cdcb40d5 bluetooth: Perform careful capability checks in hci_sock_ioctl()
| * c8258fc827 drm/fb-helper: set x/yres_virtual in drm_fb_helper_check_var
| * 425eea395f wifi: brcmfmac: slab-out-of-bounds read in brcmf_get_assoc_ies()
| * 3b7509b6f5 counter: 104-quad-8: Fix race condition between FLAG and CNTR reads
* 05fe88d1c8 Merge "Merge tag 'android11-5.4.242_r00' into android11-5.4" into android11-5.4-lts

Change-Id: Ib877c272d1132e485256d651e8cd58b2e67a32c4
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-07-10 16:06:40 +00:00
Zheng Wang
12d0946b1c UPSTREAM: usb: gadget: udc: renesas_usb3: Fix use after free bug in renesas_usb3_remove due to race condition
[ Upstream commit 2b947f8769be8b8181dc795fd292d3e7120f5204 ]

In renesas_usb3_probe, role_work is bound with renesas_usb3_role_work.
renesas_usb3_start will be called to start the work.

If we remove the driver which will call usbhs_remove, there may be
an unfinished work. The possible sequence is as follows:

CPU0                  			CPU1

                    			 renesas_usb3_role_work
renesas_usb3_remove
usb_role_switch_unregister
device_unregister
kfree(sw)
//free usb3->role_sw
                    			 usb_role_switch_set_role
                    			 //use usb3->role_sw

The usb3->role_sw could be freed under such circumstance and then
used in usb_role_switch_set_role.

This bug was found by static analysis. And note that removing a
driver is a root-only operation, and should never happen in normal
case. But the root user may directly remove the device which
will also trigger the remove function.

Fix it by canceling the work before cleanup in the renesas_usb3_remove.

Bug: 289003615
Fixes: 39facfa01c ("usb: gadget: udc: renesas_usb3: Add register of usb role switch")
Signed-off-by: Zheng Wang <zyytlz.wz@163.com>
Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Link: https://lore.kernel.org/r/20230320062931.505170-1-zyytlz.wz@163.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit df2380520926bdbc264cffab0f45da9a21f304c8)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I79a1dbeba9a90ee5daf94648ef6a32207b283561
2023-07-10 13:23:08 +00:00
Lee Jones
58dbbc7e9e UPSTREAM: x86/mm: Avoid using set_pgd() outside of real PGD pages
commit d082d48737c75d2b3cc1f972b8c8674c25131534 upstream.

KPTI keeps around two PGDs: one for userspace and another for the
kernel. Among other things, set_pgd() contains infrastructure to
ensure that updates to the kernel PGD are reflected in the user PGD
as well.

One side-effect of this is that set_pgd() expects to be passed whole
pages.  Unfortunately, init_trampoline_kaslr() passes in a single entry:
'trampoline_pgd_entry'.

When KPTI is on, set_pgd() will update 'trampoline_pgd_entry' (an
8-Byte globally stored [.bss] variable) and will then proceed to
replicate that value into the non-existent neighboring user page
(located +4k away), leading to the corruption of other global [.bss]
stored variables.

Fix it by directly assigning 'trampoline_pgd_entry' and avoiding
set_pgd().

[ dhansen: tweak subject and changelog ]

Bug: 274115504
Fixes: 0925dda596 ("x86/mm/KASLR: Use only one PUD entry for real mode trampoline")
Suggested-by: Dave Hansen <dave.hansen@linux.intel.com>
Signed-off-by: Lee Jones <lee@kernel.org>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/all/20230614163859.924309-1-lee@kernel.org/g
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 364fdcbb035bb910e58a2814708de72481256466)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Idc1fc494d7ccb4a8a3765e1f46482583b528a584
2023-07-10 11:57:37 +00:00
Hangyu Hua
717aa7d60c UPSTREAM: net/sched: flower: fix possible OOB write in fl_set_geneve_opt()
[ Upstream commit 4d56304e5827c8cc8cc18c75343d283af7c4825c ]

If we send two TCA_FLOWER_KEY_ENC_OPTS_GENEVE packets and their total
size is 252 bytes(key->enc_opts.len = 252) then
key->enc_opts.len = opt->length = data_len / 4 = 0 when the third
TCA_FLOWER_KEY_ENC_OPTS_GENEVE packet enters fl_set_geneve_opt. This
bypasses the next bounds check and results in an out-of-bounds.

Bug: 288660424
Fixes: 0a6e77784f ("net/sched: allow flower to match tunnel options")
Signed-off-by: Hangyu Hua <hbh25y@gmail.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Reviewed-by: Pieter Jansen van Vuuren <pieter.jansen-van-vuuren@amd.com>
Link: https://lore.kernel.org/r/20230531102805.27090-1-hbh25y@gmail.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 45f47d2cf1142fbfe5d6fc39ad78f4aac058907c)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I53c534b7d43f4c7da5a9f63556c79d35797aa598
2023-07-03 17:09:28 +01:00
Greg Kroah-Hartman
874e208e9b Merge branch 'android11-5.4' into android11-5.4-lts
Sync up with android11-5.4 for the following commits:

f95ca5bb23 UPSTREAM: ipvlan:Fix out-of-bounds caused by unclear skb->cb
6e030b7606 UPSTREAM: net/sched: cls_u32: Fix reference counter leak leading to overflow
9de197d0e5 UPSTREAM: memstick: r592: Fix UAF bug in r592_remove due to race condition
bf85112393 BACKPORT: btrfs: unset reloc control if transaction commit fails in prepare_to_relocate()
6165e57aa0 ANDROID: HID: Only utilise UHID provided exports if UHID is enabled
60c1a0beb5 UPSTREAM: bluetooth: Perform careful capability checks in hci_sock_ioctl()
e699d543bb ANDROID: HID; Over-ride default maximum buffer size when using UHID
8047bf5f22 Revert "ANDROID: AVB error handler to invalidate vbmeta partition."
6841a56b34 UPSTREAM: mailbox: mailbox-test: fix a locking issue in mbox_test_message_write()
229c9edd62 UPSTREAM: mailbox: mailbox-test: Fix potential double-free in mbox_test_message_write()
431c9e5d6d UPSTREAM: efi: rt-wrapper: Add missing include
0c867c1589 BACKPORT: arm64: efi: Execute runtime services from a dedicated stack
bffea4e72d UPSTREAM: io_uring: have io_kill_timeout() honor the request references
87ed28db7d UPSTREAM: io_uring: don't drop completion lock before timer is fully initialized
ce6a504d69 UPSTREAM: io_uring: always grab lock in io_cancel_async_work()
d4fabc5cbb UPSTREAM: net: cdc_ncm: Deal with too low values of dwNtbOutMaxSize
a9515e06cb UPSTREAM: cdc_ncm: Fix the build warning
e8448852f1 UPSTREAM: cdc_ncm: Implement the 32-bit version of NCM Transfer Block
25dcbf92d4 Merge "Merge tag 'android11-5.4.242_r00' into android11-5.4" into android11-5.4

Change-Id: I7042914bcf95863ba444f5f395faac36dedd6af4
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-06-30 09:00:08 +00:00
t.feng
f95ca5bb23 UPSTREAM: ipvlan:Fix out-of-bounds caused by unclear skb->cb
[ Upstream commit 90cbed5247439a966b645b34eb0a2e037836ea8e ]

If skb enqueue the qdisc, fq_skb_cb(skb)->time_to_send is changed which
is actually skb->cb, and IPCB(skb_in)->opt will be used in
__ip_options_echo. It is possible that memcpy is out of bounds and lead
to stack overflow.
We should clear skb->cb before ip_local_out or ip6_local_out.

v2:
1. clean the stack info
2. use IPCB/IP6CB instead of skb->cb

crash on stable-5.10(reproduce in kasan kernel).
Stack info:
[ 2203.651571] BUG: KASAN: stack-out-of-bounds in
__ip_options_echo+0x589/0x800
[ 2203.653327] Write of size 4 at addr ffff88811a388f27 by task
swapper/3/0
[ 2203.655460] CPU: 3 PID: 0 Comm: swapper/3 Kdump: loaded Not tainted
5.10.0-60.18.0.50.h856.kasan.eulerosv2r11.x86_64 #1
[ 2203.655466] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
BIOS rel-1.10.2-0-g5f4c7b1-20181220_000000-szxrtosci10000 04/01/2014
[ 2203.655475] Call Trace:
[ 2203.655481]  <IRQ>
[ 2203.655501]  dump_stack+0x9c/0xd3
[ 2203.655514]  print_address_description.constprop.0+0x19/0x170
[ 2203.655530]  __kasan_report.cold+0x6c/0x84
[ 2203.655586]  kasan_report+0x3a/0x50
[ 2203.655594]  check_memory_region+0xfd/0x1f0
[ 2203.655601]  memcpy+0x39/0x60
[ 2203.655608]  __ip_options_echo+0x589/0x800
[ 2203.655654]  __icmp_send+0x59a/0x960
[ 2203.655755]  nf_send_unreach+0x129/0x3d0 [nf_reject_ipv4]
[ 2203.655763]  reject_tg+0x77/0x1bf [ipt_REJECT]
[ 2203.655772]  ipt_do_table+0x691/0xa40 [ip_tables]
[ 2203.655821]  nf_hook_slow+0x69/0x100
[ 2203.655828]  __ip_local_out+0x21e/0x2b0
[ 2203.655857]  ip_local_out+0x28/0x90
[ 2203.655868]  ipvlan_process_v4_outbound+0x21e/0x260 [ipvlan]
[ 2203.655931]  ipvlan_xmit_mode_l3+0x3bd/0x400 [ipvlan]
[ 2203.655967]  ipvlan_queue_xmit+0xb3/0x190 [ipvlan]
[ 2203.655977]  ipvlan_start_xmit+0x2e/0xb0 [ipvlan]
[ 2203.655984]  xmit_one.constprop.0+0xe1/0x280
[ 2203.655992]  dev_hard_start_xmit+0x62/0x100
[ 2203.656000]  sch_direct_xmit+0x215/0x640
[ 2203.656028]  __qdisc_run+0x153/0x1f0
[ 2203.656069]  __dev_queue_xmit+0x77f/0x1030
[ 2203.656173]  ip_finish_output2+0x59b/0xc20
[ 2203.656244]  __ip_finish_output.part.0+0x318/0x3d0
[ 2203.656312]  ip_finish_output+0x168/0x190
[ 2203.656320]  ip_output+0x12d/0x220
[ 2203.656357]  __ip_queue_xmit+0x392/0x880
[ 2203.656380]  __tcp_transmit_skb+0x1088/0x11c0
[ 2203.656436]  __tcp_retransmit_skb+0x475/0xa30
[ 2203.656505]  tcp_retransmit_skb+0x2d/0x190
[ 2203.656512]  tcp_retransmit_timer+0x3af/0x9a0
[ 2203.656519]  tcp_write_timer_handler+0x3ba/0x510
[ 2203.656529]  tcp_write_timer+0x55/0x180
[ 2203.656542]  call_timer_fn+0x3f/0x1d0
[ 2203.656555]  expire_timers+0x160/0x200
[ 2203.656562]  run_timer_softirq+0x1f4/0x480
[ 2203.656606]  __do_softirq+0xfd/0x402
[ 2203.656613]  asm_call_irq_on_stack+0x12/0x20
[ 2203.656617]  </IRQ>
[ 2203.656623]  do_softirq_own_stack+0x37/0x50
[ 2203.656631]  irq_exit_rcu+0x134/0x1a0
[ 2203.656639]  sysvec_apic_timer_interrupt+0x36/0x80
[ 2203.656646]  asm_sysvec_apic_timer_interrupt+0x12/0x20
[ 2203.656654] RIP: 0010:default_idle+0x13/0x20
[ 2203.656663] Code: 89 f0 5d 41 5c 41 5d 41 5e c3 cc cc cc cc cc cc cc
cc cc cc cc cc cc 0f 1f 44 00 00 0f 1f 44 00 00 0f 00 2d 9f 32 57 00 fb
f4 <c3> cc cc cc cc 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 41 54 be 08
[ 2203.656668] RSP: 0018:ffff88810036fe78 EFLAGS: 00000256
[ 2203.656676] RAX: ffffffffaf2a87f0 RBX: ffff888100360000 RCX:
ffffffffaf290191
[ 2203.656681] RDX: 0000000000098b5e RSI: 0000000000000004 RDI:
ffff88811a3c4f60
[ 2203.656686] RBP: 0000000000000000 R08: 0000000000000001 R09:
ffff88811a3c4f63
[ 2203.656690] R10: ffffed10234789ec R11: 0000000000000001 R12:
0000000000000003
[ 2203.656695] R13: ffff888100360000 R14: 0000000000000000 R15:
0000000000000000
[ 2203.656729]  default_idle_call+0x5a/0x150
[ 2203.656735]  cpuidle_idle_call+0x1c6/0x220
[ 2203.656780]  do_idle+0xab/0x100
[ 2203.656786]  cpu_startup_entry+0x19/0x20
[ 2203.656793]  secondary_startup_64_no_verify+0xc2/0xcb

[ 2203.657409] The buggy address belongs to the page:
[ 2203.658648] page:0000000027a9842f refcount:1 mapcount:0
mapping:0000000000000000 index:0x0 pfn:0x11a388
[ 2203.658665] flags:
0x17ffffc0001000(reserved|node=0|zone=2|lastcpupid=0x1fffff)
[ 2203.658675] raw: 0017ffffc0001000 ffffea000468e208 ffffea000468e208
0000000000000000
[ 2203.658682] raw: 0000000000000000 0000000000000000 00000001ffffffff
0000000000000000
[ 2203.658686] page dumped because: kasan: bad access detected

To reproduce(ipvlan with IPVLAN_MODE_L3):
Env setting:
=======================================================
modprobe ipvlan ipvlan_default_mode=1
sysctl net.ipv4.conf.eth0.forwarding=1
iptables -t nat -A POSTROUTING -s 20.0.0.0/255.255.255.0 -o eth0 -j
MASQUERADE
ip link add gw link eth0 type ipvlan
ip -4 addr add 20.0.0.254/24 dev gw
ip netns add net1
ip link add ipv1 link eth0 type ipvlan
ip link set ipv1 netns net1
ip netns exec net1 ip link set ipv1 up
ip netns exec net1 ip -4 addr add 20.0.0.4/24 dev ipv1
ip netns exec net1 route add default gw 20.0.0.254
ip netns exec net1 tc qdisc add dev ipv1 root netem loss 10%
ifconfig gw up
iptables -t filter -A OUTPUT -p tcp --dport 8888 -j REJECT --reject-with
icmp-port-unreachable
=======================================================
And then excute the shell(curl any address of eth0 can reach):

for((i=1;i<=100000;i++))
do
        ip netns exec net1 curl x.x.x.x:8888
done
=======================================================

Bug: 289225588
Fixes: 2ad7bf3638 ("ipvlan: Initial check-in of the IPVLAN driver.")
Signed-off-by: "t.feng" <fengtao40@huawei.com>
Suggested-by: Florian Westphal <fw@strlen.de>
Reviewed-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 610a433810b277b3b77389733c07d22e8af68de2)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I08a12f6e3b1614210867cd23e9071918dc380faf
2023-06-28 17:43:14 +01:00
Greg Kroah-Hartman
c7f89f1b6b This is the 5.4.249 stable release
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmSb7V4ACgkQONu9yGCS
 aT5vLxAA0yhg7h210wyMLrPNgQHrIItxkvcosoAG04WziImnvTT84XYpvthKlQrZ
 jzLGwdrH8ggdZIq+jPblmGvfvpGuM7MjKw1F8tgmviMnMyfKziGO/kIEzkNPaHSt
 sRFuGniXx2Q/m2IVblhC8pqJG6SRgkBbNgg3by7SpTRSEHBjpxaOVxvGC53Bdlkb
 ep90ox3iVbA4Q45rGCn5UfJM22wEnUYbzRv04085fzWaPDEZyHi5S6a3rHepVbrq
 7ElDQgUgHKlLm7rd1ngB8Ac+EdfavVcPok789pbEmQwf6jsAetl43yPUSEE6xFXb
 5FZAA7uUUa+E7P+140+iWBCZwQX9g+WglEkOxJV8gOMtWoiFZjpPcJxyWnvz/7ch
 XFz88WW/Ub4+bpg62TJ2F3dboeF0x1rN5kB8/ylb+Gf9vACT2gPLDbFaeG24DZEr
 s1hdsRx1Q3m8ffOYbsuTTn3bfGv8TfycV4Cwy+v+QPwJF/WPdMUnIDRY7VgWJ6fO
 scRdhkgMer9MLDrcSwxgS3tyn6JObQMp5A40H1Yb6ZVwN+q2BRC/B4Gqi6BmUNKr
 uU0BRMeyExyyQfKYCgvcf0M23qUf5L4PDpk1MX38pU+AHm8rPHlE36/pNFG4PG0g
 p6vBTlKzYeHKh12VAdPJjiWICloaz2ixf3K85xJ+vH56jXfjbSY=
 =3Pqk
 -----END PGP SIGNATURE-----

Merge 5.4.249 into android11-5.4-lts

Changes in 5.4.249
	nilfs2: reject devices with insufficient block count
	mm: rewrite wait_on_page_bit_common() logic
	list: add "list_del_init_careful()" to go with "list_empty_careful()"
	epoll: ep_autoremove_wake_function should use list_del_init_careful
	tracing: Add tracing_reset_all_online_cpus_unlocked() function
	x86/purgatory: remove PGO flags
	tick/common: Align tick period during sched_timer setup
	media: dvbdev: Fix memleak in dvb_register_device
	media: dvbdev: fix error logic at dvb_register_device()
	media: dvb-core: Fix use-after-free due to race at dvb_register_device()
	nilfs2: fix buffer corruption due to concurrent device reads
	Drivers: hv: vmbus: Fix vmbus_wait_for_unload() to scan present CPUs
	PCI: hv: Fix a race condition bug in hv_pci_query_relations()
	cgroup: Do not corrupt task iteration when rebinding subsystem
	mmc: meson-gx: remove redundant mmc_request_done() call from irq context
	ip_tunnels: allow VXLAN/GENEVE to inherit TOS/TTL from VLAN
	writeback: fix dereferencing NULL mapping->host on writeback_page_template
	nilfs2: prevent general protection fault in nilfs_clear_dirty_page()
	cifs: Clean up DFS referral cache
	cifs: Get rid of kstrdup_const()'d paths
	cifs: Introduce helpers for finding TCP connection
	cifs: Merge is_path_valid() into get_normalized_path()
	cifs: Fix potential deadlock when updating vol in cifs_reconnect()
	x86/mm: Avoid using set_pgd() outside of real PGD pages
	rcu: Upgrade rcu_swap_protected() to rcu_replace_pointer()
	ieee802154: hwsim: Fix possible memory leaks
	xfrm: Linearize the skb after offloading if needed.
	net: qca_spi: Avoid high load if QCA7000 is not available
	mmc: mtk-sd: fix deferred probing
	mmc: mvsdio: convert to devm_platform_ioremap_resource
	mmc: mvsdio: fix deferred probing
	mmc: omap: fix deferred probing
	mmc: omap_hsmmc: fix deferred probing
	mmc: sdhci-acpi: fix deferred probing
	mmc: sh_mmcif: fix deferred probing
	mmc: usdhi60rol0: fix deferred probing
	ipvs: align inner_mac_header for encapsulation
	net: dsa: mt7530: fix trapping frames on non-MT7621 SoC MT7530 switch
	be2net: Extend xmit workaround to BE3 chip
	netfilter: nf_tables: disallow element updates of bound anonymous sets
	netfilter: nfnetlink_osf: fix module autoload
	Revert "net: phy: dp83867: perform soft reset and retain established link"
	sch_netem: acquire qdisc lock in netem_change()
	scsi: target: iscsi: Prevent login threads from racing between each other
	HID: wacom: Add error check to wacom_parse_and_register()
	arm64: Add missing Set/Way CMO encodings
	media: cec: core: don't set last_initiator if tx in progress
	nfcsim.c: Fix error checking for debugfs_create_dir
	usb: gadget: udc: fix NULL dereference in remove()
	s390/cio: unregister device when the only path is gone
	ASoC: nau8824: Add quirk to active-high jack-detect
	ARM: dts: Fix erroneous ADS touchscreen polarities
	drm/exynos: vidi: fix a wrong error return
	drm/exynos: fix race condition UAF in exynos_g2d_exec_ioctl
	drm/radeon: fix race condition UAF in radeon_gem_set_domain_ioctl
	x86/apic: Fix kernel panic when booting with intremap=off and x2apic_phys
	i2c: imx-lpi2c: fix type char overflow issue when calculating the clock cycle
	mm: fix VM_BUG_ON(PageTail) and BUG_ON(PageWriteback)
	mm: make wait_on_page_writeback() wait for multiple pending writebacks
	xfs: verify buffer contents when we skip log replay
	Linux 5.4.249

Change-Id: I3f7cf3804fddac70b4c1accef1c7374b184b1ea3
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-06-28 09:54:38 +00:00
Greg Kroah-Hartman
b30db4f7e4 Linux 5.4.249
Link: https://lore.kernel.org/r/20230626180739.558575012@linuxfoundation.org
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Tested-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
Tested-by: Chris Paterson (CIP) <chris.paterson2@renesas.com>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-06-28 10:18:42 +02:00
Darrick J. Wong
c874390551 xfs: verify buffer contents when we skip log replay
commit 22ed903eee23a5b174e240f1cdfa9acf393a5210 upstream.

syzbot detected a crash during log recovery:

XFS (loop0): Mounting V5 Filesystem bfdc47fc-10d8-4eed-a562-11a831b3f791
XFS (loop0): Torn write (CRC failure) detected at log block 0x180. Truncating head block from 0x200.
XFS (loop0): Starting recovery (logdev: internal)
==================================================================
BUG: KASAN: slab-out-of-bounds in xfs_btree_lookup_get_block+0x15c/0x6d0 fs/xfs/libxfs/xfs_btree.c:1813
Read of size 8 at addr ffff88807e89f258 by task syz-executor132/5074

CPU: 0 PID: 5074 Comm: syz-executor132 Not tainted 6.2.0-rc1-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x1b1/0x290 lib/dump_stack.c:106
 print_address_description+0x74/0x340 mm/kasan/report.c:306
 print_report+0x107/0x1f0 mm/kasan/report.c:417
 kasan_report+0xcd/0x100 mm/kasan/report.c:517
 xfs_btree_lookup_get_block+0x15c/0x6d0 fs/xfs/libxfs/xfs_btree.c:1813
 xfs_btree_lookup+0x346/0x12c0 fs/xfs/libxfs/xfs_btree.c:1913
 xfs_btree_simple_query_range+0xde/0x6a0 fs/xfs/libxfs/xfs_btree.c:4713
 xfs_btree_query_range+0x2db/0x380 fs/xfs/libxfs/xfs_btree.c:4953
 xfs_refcount_recover_cow_leftovers+0x2d1/0xa60 fs/xfs/libxfs/xfs_refcount.c:1946
 xfs_reflink_recover_cow+0xab/0x1b0 fs/xfs/xfs_reflink.c:930
 xlog_recover_finish+0x824/0x920 fs/xfs/xfs_log_recover.c:3493
 xfs_log_mount_finish+0x1ec/0x3d0 fs/xfs/xfs_log.c:829
 xfs_mountfs+0x146a/0x1ef0 fs/xfs/xfs_mount.c:933
 xfs_fs_fill_super+0xf95/0x11f0 fs/xfs/xfs_super.c:1666
 get_tree_bdev+0x400/0x620 fs/super.c:1282
 vfs_get_tree+0x88/0x270 fs/super.c:1489
 do_new_mount+0x289/0xad0 fs/namespace.c:3145
 do_mount fs/namespace.c:3488 [inline]
 __do_sys_mount fs/namespace.c:3697 [inline]
 __se_sys_mount+0x2d3/0x3c0 fs/namespace.c:3674
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7f89fa3f4aca
Code: 83 c4 08 5b 5d c3 66 2e 0f 1f 84 00 00 00 00 00 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007fffd5fb5ef8 EFLAGS: 00000206 ORIG_RAX: 00000000000000a5
RAX: ffffffffffffffda RBX: 00646975756f6e2c RCX: 00007f89fa3f4aca
RDX: 0000000020000100 RSI: 0000000020009640 RDI: 00007fffd5fb5f10
RBP: 00007fffd5fb5f10 R08: 00007fffd5fb5f50 R09: 000000000000970d
R10: 0000000000200800 R11: 0000000000000206 R12: 0000000000000004
R13: 0000555556c6b2c0 R14: 0000000000200800 R15: 00007fffd5fb5f50
 </TASK>

The fuzzed image contains an AGF with an obviously garbage
agf_refcount_level value of 32, and a dirty log with a buffer log item
for that AGF.  The ondisk AGF has a higher LSN than the recovered log
item.  xlog_recover_buf_commit_pass2 reads the buffer, compares the
LSNs, and decides to skip replay because the ondisk buffer appears to be
newer.

Unfortunately, the ondisk buffer is corrupt, but recovery just read the
buffer with no buffer ops specified:

	error = xfs_buf_read(mp->m_ddev_targp, buf_f->blf_blkno,
			buf_f->blf_len, buf_flags, &bp, NULL);

Skipping the buffer leaves its contents in memory unverified.  This sets
us up for a kernel crash because xfs_refcount_recover_cow_leftovers
reads the buffer (which is still around in XBF_DONE state, so no read
verification) and creates a refcountbt cursor of height 32.  This is
impossible so we run off the end of the cursor object and crash.

Fix this by invoking the verifier on all skipped buffers and aborting
log recovery if the ondisk buffer is corrupt.  It might be smarter to
force replay the log item atop the buffer and then see if it'll pass the
write verifier (like ext4 does) but for now let's go with the
conservative option where we stop immediately.

Link: https://syzkaller.appspot.com/bug?extid=7e9494b8b399902e994e
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
Acked-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-06-28 10:18:42 +02:00
Linus Torvalds
72ab3d39b4 mm: make wait_on_page_writeback() wait for multiple pending writebacks
commit c2407cf7d22d0c0d94cf20342b3b8f06f1d904e7 upstream.

Ever since commit 2a9127fcf229 ("mm: rewrite wait_on_page_bit_common()
logic") we've had some very occasional reports of BUG_ON(PageWriteback)
in write_cache_pages(), which we thought we already fixed in commit
073861ed77b6 ("mm: fix VM_BUG_ON(PageTail) and BUG_ON(PageWriteback)").

But syzbot just reported another one, even with that commit in place.

And it turns out that there's a simpler way to trigger the BUG_ON() than
the one Hugh found with page re-use.  It all boils down to the fact that
the page writeback is ostensibly serialized by the page lock, but that
isn't actually really true.

Yes, the people _setting_ writeback all do so under the page lock, but
the actual clearing of the bit - and waking up any waiters - happens
without any page lock.

This gives us this fairly simple race condition:

  CPU1 = end previous writeback
  CPU2 = start new writeback under page lock
  CPU3 = write_cache_pages()

  CPU1          CPU2            CPU3
  ----          ----            ----

  end_page_writeback()
    test_clear_page_writeback(page)
    ... delayed...

                lock_page();
                set_page_writeback()
                unlock_page()

                                lock_page()
                                wait_on_page_writeback();

    wake_up_page(page, PG_writeback);
    .. wakes up CPU3 ..

                                BUG_ON(PageWriteback(page));

where the BUG_ON() happens because we woke up the PG_writeback bit
becasue of the _previous_ writeback, but a new one had already been
started because the clearing of the bit wasn't actually atomic wrt the
actual wakeup or serialized by the page lock.

The reason this didn't use to happen was that the old logic in waiting
on a page bit would just loop if it ever saw the bit set again.

The nice proper fix would probably be to get rid of the whole "wait for
writeback to clear, and then set it" logic in the writeback path, and
replace it with an atomic "wait-to-set" (ie the same as we have for page
locking: we set the page lock bit with a single "lock_page()", not with
"wait for lock bit to clear and then set it").

However, out current model for writeback is that the waiting for the
writeback bit is done by the generic VFS code (ie write_cache_pages()),
but the actual setting of the writeback bit is done much later by the
filesystem ".writepages()" function.

IOW, to make the writeback bit have that same kind of "wait-to-set"
behavior as we have for page locking, we'd have to change our roughly
~50 different writeback functions.  Painful.

Instead, just make "wait_on_page_writeback()" loop on the very unlikely
situation that the PG_writeback bit is still set, basically re-instating
the old behavior.  This is very non-optimal in case of contention, but
since we only ever set the bit under the page lock, that situation is
controlled.

Reported-by: syzbot+2fc0712f8f8b8b8fa0ef@syzkaller.appspotmail.com
Fixes: 2a9127fcf229 ("mm: rewrite wait_on_page_bit_common() logic")
Acked-by: Hugh Dickins <hughd@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-06-28 10:18:42 +02:00
Hugh Dickins
9ea42ba3e6 mm: fix VM_BUG_ON(PageTail) and BUG_ON(PageWriteback)
commit 073861ed77b6b957c3c8d54a11dc503f7d986ceb upstream.

Twice now, when exercising ext4 looped on shmem huge pages, I have crashed
on the PF_ONLY_HEAD check inside PageWaiters(): ext4_finish_bio() calling
end_page_writeback() calling wake_up_page() on tail of a shmem huge page,
no longer an ext4 page at all.

The problem is that PageWriteback is not accompanied by a page reference
(as the NOTE at the end of test_clear_page_writeback() acknowledges): as
soon as TestClearPageWriteback has been done, that page could be removed
from page cache, freed, and reused for something else by the time that
wake_up_page() is reached.

https://lore.kernel.org/linux-mm/20200827122019.GC14765@casper.infradead.org/
Matthew Wilcox suggested avoiding or weakening the PageWaiters() tail
check; but I'm paranoid about even looking at an unreferenced struct page,
lest its memory might itself have already been reused or hotremoved (and
wake_up_page_bit() may modify that memory with its ClearPageWaiters()).

Then on crashing a second time, realized there's a stronger reason against
that approach.  If my testing just occasionally crashes on that check,
when the page is reused for part of a compound page, wouldn't it be much
more common for the page to get reused as an order-0 page before reaching
wake_up_page()?  And on rare occasions, might that reused page already be
marked PageWriteback by its new user, and already be waited upon?  What
would that look like?

It would look like BUG_ON(PageWriteback) after wait_on_page_writeback()
in write_cache_pages() (though I have never seen that crash myself).

Matthew Wilcox explaining this to himself:
 "page is allocated, added to page cache, dirtied, writeback starts,

  --- thread A ---
  filesystem calls end_page_writeback()
        test_clear_page_writeback()
  --- context switch to thread B ---
  truncate_inode_pages_range() finds the page, it doesn't have writeback set,
  we delete it from the page cache.  Page gets reallocated, dirtied, writeback
  starts again.  Then we call write_cache_pages(), see
  PageWriteback() set, call wait_on_page_writeback()
  --- context switch back to thread A ---
  wake_up_page(page, PG_writeback);
  ... thread B is woken, but because the wakeup was for the old use of
  the page, PageWriteback is still set.

  Devious"

And prior to 2a9127fcf229 ("mm: rewrite wait_on_page_bit_common() logic")
this would have been much less likely: before that, wake_page_function()'s
non-exclusive case would stop walking and not wake if it found Writeback
already set again; whereas now the non-exclusive case proceeds to wake.

I have not thought of a fix that does not add a little overhead: the
simplest fix is for end_page_writeback() to get_page() before calling
test_clear_page_writeback(), then put_page() after wake_up_page().

Was there a chance of missed wakeups before, since a page freed before
reaching wake_up_page() would have PageWaiters cleared?  I think not,
because each waiter does hold a reference on the page.  This bug comes
when the old use of the page, the one we do TestClearPageWriteback on,
had *no* waiters, so no additional page reference beyond the page cache
(and whoever racily freed it).  The reuse of the page has a waiter
holding a reference, and its own PageWriteback set; but the belated
wake_up_page() has woken the reuse to hit that BUG_ON(PageWriteback).

Reported-by: syzbot+3622cea378100f45d59f@syzkaller.appspotmail.com
Reported-by: Qian Cai <cai@lca.pw>
Fixes: 2a9127fcf229 ("mm: rewrite wait_on_page_bit_common() logic")
Signed-off-by: Hugh Dickins <hughd@google.com>
Cc: stable@vger.kernel.org # v5.8+
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-06-28 10:18:42 +02:00
Clark Wang
dffd25725e i2c: imx-lpi2c: fix type char overflow issue when calculating the clock cycle
[ Upstream commit e69b9bc170c6d93ee375a5cbfd15f74c0fb59bdd ]

Claim clkhi and clklo as integer type to avoid possible calculation
errors caused by data overflow.

Fixes: a55fa9d0e4 ("i2c: imx-lpi2c: add low power i2c bus driver")
Signed-off-by: Clark Wang <xiaoning.wang@nxp.com>
Signed-off-by: Carlos Song <carlos.song@nxp.com>
Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:42 +02:00
Dheeraj Kumar Srivastava
f89bcf03e9 x86/apic: Fix kernel panic when booting with intremap=off and x2apic_phys
[ Upstream commit 85d38d5810e285d5aec7fb5283107d1da70c12a9 ]

When booting with "intremap=off" and "x2apic_phys" on the kernel command
line, the physical x2APIC driver ends up being used even when x2APIC
mode is disabled ("intremap=off" disables x2APIC mode). This happens
because the first compound condition check in x2apic_phys_probe() is
false due to x2apic_mode == 0 and so the following one returns true
after default_acpi_madt_oem_check() having already selected the physical
x2APIC driver.

This results in the following panic:

   kernel BUG at arch/x86/kernel/apic/io_apic.c:2409!
   invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
   CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.4.0-rc2-ver4.1rc2 #2
   Hardware name: Dell Inc. PowerEdge R6515/07PXPY, BIOS 2.3.6 07/06/2021
   RIP: 0010:setup_IO_APIC+0x9c/0xaf0
   Call Trace:
    <TASK>
    ? native_read_msr
    apic_intr_mode_init
    x86_late_time_init
    start_kernel
    x86_64_start_reservations
    x86_64_start_kernel
    secondary_startup_64_no_verify
    </TASK>

which is:

setup_IO_APIC:
  apic_printk(APIC_VERBOSE, "ENABLING IO-APIC IRQs\n");
  for_each_ioapic(ioapic)
  	BUG_ON(mp_irqdomain_create(ioapic));

Return 0 to denote that x2APIC has not been enabled when probing the
physical x2APIC driver.

  [ bp: Massage commit message heavily. ]

Fixes: 9ebd680bd0 ("x86, apic: Use probe routines to simplify apic selection")
Signed-off-by: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Kishon Vijay Abraham I <kvijayab@amd.com>
Reviewed-by: Vasant Hegde <vasant.hegde@amd.com>
Reviewed-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20230616212236.1389-1-dheerajkumar.srivastava@amd.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:42 +02:00
Min Li
a43c763f9c drm/radeon: fix race condition UAF in radeon_gem_set_domain_ioctl
[ Upstream commit 982b173a6c6d9472730c3116051977e05d17c8c5 ]

Userspace can race to free the gobj(robj converted from), robj should not
be accessed again after drm_gem_object_put, otherwith it will result in
use-after-free.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Min Li <lm0963hack@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:41 +02:00
Min Li
45f574d8df drm/exynos: fix race condition UAF in exynos_g2d_exec_ioctl
[ Upstream commit 48bfd02569f5db49cc033f259e66d57aa6efc9a3 ]

If it is async, runqueue_node is freed in g2d_runqueue_worker on another
worker thread. So in extreme cases, if g2d_runqueue_worker runs first, and
then executes the following if statement, there will be use-after-free.

Signed-off-by: Min Li <lm0963hack@gmail.com>
Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:41 +02:00
Inki Dae
c81a542e45 drm/exynos: vidi: fix a wrong error return
[ Upstream commit 4a059559809fd1ddbf16f847c4d2237309c08edf ]

Fix a wrong error return by dropping an error return.

When vidi driver is remvoed, if ctx->raw_edid isn't same as fake_edid_info
then only what we have to is to free ctx->raw_edid so that driver removing
can work correctly - it's not an error case.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:41 +02:00
Linus Walleij
948b8b5fd0 ARM: dts: Fix erroneous ADS touchscreen polarities
[ Upstream commit 4a672d500bfd6bb87092c33d5a2572c3d0a1cf83 ]

Several device tree files get the polarity of the pendown-gpios
wrong: this signal is active low. Fix up all incorrect flags, so
that operating systems can rely on the flag being correctly set.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20230510105156.1134320-1-linus.walleij@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:41 +02:00
Edson Juliano Drosdeck
8d6f9f5f3b ASoC: nau8824: Add quirk to active-high jack-detect
[ Upstream commit e384dba03e3294ce7ea69e4da558e9bf8f0e8946 ]

Add  entries for Positivo laptops: CW14Q01P, K1424G, N14ZP74G to the
DMI table, so that  active-high jack-detect will work properly on
these laptops.

Signed-off-by: Edson Juliano Drosdeck <edson.drosdeck@gmail.com>
Link: https://lore.kernel.org/r/20230529181911.632851-1-edson.drosdeck@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:41 +02:00
Vineeth Vijayan
d6fd1b3f76 s390/cio: unregister device when the only path is gone
[ Upstream commit 89c0c62e947a01e7a36b54582fd9c9e346170255 ]

Currently, if the device is offline and all the channel paths are
either configured or varied offline, the associated subchannel gets
unregistered. Don't unregister the subchannel, instead unregister
offline device.

Signed-off-by: Vineeth Vijayan <vneethv@linux.ibm.com>
Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:41 +02:00
Dan Carpenter
0de32d3dd3 usb: gadget: udc: fix NULL dereference in remove()
[ Upstream commit 016da9c65fec9f0e78c4909ed9a0f2d567af6775 ]

The "udc" pointer was never set in the probe() function so it will
lead to a NULL dereference in udc_pci_remove() when we do:

	usb_del_gadget_udc(&udc->gadget);

Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/r/ZG+A/dNpFWAlCChk@kili
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:41 +02:00
Osama Muhammad
823dd7de82 nfcsim.c: Fix error checking for debugfs_create_dir
[ Upstream commit 9b9e46aa07273ceb96866b2e812b46f1ee0b8d2f ]

This patch fixes the error checking in nfcsim.c.
The DebugFS kernel API is developed in
a way that the caller can safely ignore the errors that
occur during the creation of DebugFS nodes.

Signed-off-by: Osama Muhammad <osmtendev@gmail.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:41 +02:00
Hans Verkuil
c32b39d070 media: cec: core: don't set last_initiator if tx in progress
[ Upstream commit 73af6c7511038249cad3d5f3b44bf8d78ac0f499 ]

When a message was received the last_initiator is set to 0xff.
This will force the signal free time for the next transmit
to that for a new initiator. However, if a new transmit is
already in progress, then don't set last_initiator, since
that's the initiator of the current transmit. Overwriting
this would cause the signal free time of a following transmit
to be that of the new initiator instead of a next transmit.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:40 +02:00
Marc Zyngier
a69a15a1e7 arm64: Add missing Set/Way CMO encodings
[ Upstream commit 8d0f019e4c4f2ee2de81efd9bf1c27e9fb3c0460 ]

Add the missing Set/Way CMOs that apply to tagged memory.

Signed-off-by: Marc Zyngier <maz@kernel.org>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Steven Price <steven.price@arm.com>
Reviewed-by: Oliver Upton <oliver.upton@linux.dev>
Link: https://lore.kernel.org/r/20230515204601.1270428-2-maz@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:40 +02:00
Denis Arefev
99de9a18e6 HID: wacom: Add error check to wacom_parse_and_register()
[ Upstream commit 16a9c24f24fbe4564284eb575b18cc20586b9270 ]

   Added a variable check and
   transition in case of an error

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Signed-off-by: Denis Arefev <arefev@swemel.ru>
Reviewed-by: Ping Cheng <ping.cheng@wacom.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:40 +02:00
Maurizio Lombardi
2af8d96372 scsi: target: iscsi: Prevent login threads from racing between each other
[ Upstream commit 2a737d3b8c792400118d6cf94958f559de9c5e59 ]

The tpg->np_login_sem is a semaphore that is used to serialize the login
process when multiple login threads run concurrently against the same
target portal group.

The iscsi_target_locate_portal() function finds the tpg, calls
iscsit_access_np() against the np_login_sem semaphore and saves the tpg
pointer in conn->tpg;

If iscsi_target_locate_portal() fails, the caller will check for the
conn->tpg pointer and, if it's not NULL, then it will assume that
iscsi_target_locate_portal() called iscsit_access_np() on the semaphore.

Make sure that conn->tpg gets initialized only if iscsit_access_np() was
successful, otherwise iscsit_deaccess_np() may end up being called against
a semaphore we never took, allowing more than one thread to access the same
tpg.

Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
Link: https://lore.kernel.org/r/20230508162219.1731964-4-mlombard@redhat.com
Reviewed-by: Mike Christie <michael.christie@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:40 +02:00
Eric Dumazet
321a81d26c sch_netem: acquire qdisc lock in netem_change()
[ Upstream commit 2174a08db80d1efeea382e25ac41c4e7511eb6d6 ]

syzbot managed to trigger a divide error [1] in netem.

It could happen if q->rate changes while netem_enqueue()
is running, since q->rate is read twice.

It turns out netem_change() always lacked proper synchronization.

[1]
divide error: 0000 [#1] SMP KASAN
CPU: 1 PID: 7867 Comm: syz-executor.1 Not tainted 6.1.30-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/25/2023
RIP: 0010:div64_u64 include/linux/math64.h:69 [inline]
RIP: 0010:packet_time_ns net/sched/sch_netem.c:357 [inline]
RIP: 0010:netem_enqueue+0x2067/0x36d0 net/sched/sch_netem.c:576
Code: 89 e2 48 69 da 00 ca 9a 3b 42 80 3c 28 00 4c 8b a4 24 88 00 00 00 74 0d 4c 89 e7 e8 c3 4f 3b fd 48 8b 4c 24 18 48 89 d8 31 d2 <49> f7 34 24 49 01 c7 4c 8b 64 24 48 4d 01 f7 4c 89 e3 48 c1 eb 03
RSP: 0018:ffffc9000dccea60 EFLAGS: 00010246
RAX: 000001a442624200 RBX: 000001a442624200 RCX: ffff888108a4f000
RDX: 0000000000000000 RSI: 000000000000070d RDI: 000000000000070d
RBP: ffffc9000dcceb90 R08: ffffffff849c5e26 R09: fffffbfff10e1297
R10: 0000000000000000 R11: dffffc0000000001 R12: ffff888108a4f358
R13: dffffc0000000000 R14: 0000001a8cd9a7ec R15: 0000000000000000
FS: 00007fa73fe18700(0000) GS:ffff8881f6b00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fa73fdf7718 CR3: 000000011d36e000 CR4: 0000000000350ee0
Call Trace:
<TASK>
[<ffffffff84714385>] __dev_xmit_skb net/core/dev.c:3931 [inline]
[<ffffffff84714385>] __dev_queue_xmit+0xcf5/0x3370 net/core/dev.c:4290
[<ffffffff84d22df2>] dev_queue_xmit include/linux/netdevice.h:3030 [inline]
[<ffffffff84d22df2>] neigh_hh_output include/net/neighbour.h:531 [inline]
[<ffffffff84d22df2>] neigh_output include/net/neighbour.h:545 [inline]
[<ffffffff84d22df2>] ip_finish_output2+0xb92/0x10d0 net/ipv4/ip_output.c:235
[<ffffffff84d21e63>] __ip_finish_output+0xc3/0x2b0
[<ffffffff84d10a81>] ip_finish_output+0x31/0x2a0 net/ipv4/ip_output.c:323
[<ffffffff84d10f14>] NF_HOOK_COND include/linux/netfilter.h:298 [inline]
[<ffffffff84d10f14>] ip_output+0x224/0x2a0 net/ipv4/ip_output.c:437
[<ffffffff84d123b5>] dst_output include/net/dst.h:444 [inline]
[<ffffffff84d123b5>] ip_local_out net/ipv4/ip_output.c:127 [inline]
[<ffffffff84d123b5>] __ip_queue_xmit+0x1425/0x2000 net/ipv4/ip_output.c:542
[<ffffffff84d12fdc>] ip_queue_xmit+0x4c/0x70 net/ipv4/ip_output.c:556

Fixes: 1da177e4c3 ("Linux-2.6.12-rc2")
Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: Cong Wang <xiyou.wangcong@gmail.com>
Cc: Jiri Pirko <jiri@resnulli.us>
Reviewed-by: Jamal Hadi Salim <jhs@mojatatu.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Link: https://lore.kernel.org/r/20230620184425.1179809-1-edumazet@google.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:40 +02:00
Francesco Dolcini
91274bbe78 Revert "net: phy: dp83867: perform soft reset and retain established link"
[ Upstream commit a129b41fe0a8b4da828c46b10f5244ca07a3fec3 ]

This reverts commit da9ef50f545f86ffe6ff786174d26500c4db737a.

This fixes a regression in which the link would come up, but no
communication was possible.

The reverted commit was also removing a comment about
DP83867_PHYCR_FORCE_LINK_GOOD, this is not added back in this commits
since it seems that this is unrelated to the original code change.

Closes: https://lore.kernel.org/all/ZGuDJos8D7N0J6Z2@francesco-nb.int.toradex.com/
Fixes: da9ef50f545f ("net: phy: dp83867: perform soft reset and retain established link")
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Praneeth Bajjuri <praneeth@ti.com>
Link: https://lore.kernel.org/r/20230619154435.355485-1-francesco@dolcini.it
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:40 +02:00
Pablo Neira Ayuso
25c8d38c75 netfilter: nfnetlink_osf: fix module autoload
[ Upstream commit 62f9a68a36d4441a6c412b81faed102594bc6670 ]

Move the alias from xt_osf to nfnetlink_osf.

Fixes: f932495208 ("netfilter: nfnetlink_osf: extract nfnetlink_subsystem code from xt_osf.c")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:40 +02:00
Pablo Neira Ayuso
476c617e4d netfilter: nf_tables: disallow element updates of bound anonymous sets
[ Upstream commit c88c535b592d3baeee74009f3eceeeaf0fdd5e1b ]

Anonymous sets come with NFT_SET_CONSTANT from userspace. Although API
allows to create anonymous sets without NFT_SET_CONSTANT, it makes no
sense to allow to add and to delete elements for bound anonymous sets.

Fixes: 96518518cc ("netfilter: add nftables")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:40 +02:00
Ross Lagerwall
d3b110395f be2net: Extend xmit workaround to BE3 chip
[ Upstream commit 7580e0a78eb29e7bb1a772eba4088250bbb70d41 ]

We have seen a bug where the NIC incorrectly changes the length in the
IP header of a padded packet to include the padding bytes. The driver
already has a workaround for this so do the workaround for this NIC too.
This resolves the issue.

The NIC in question identifies itself as follows:

[    8.828494] be2net 0000:02:00.0: FW version is 10.7.110.31
[    8.834759] be2net 0000:02:00.0: Emulex OneConnect(be3): PF FLEX10 port 1

02:00.0 Ethernet controller: Emulex Corporation OneConnect 10Gb NIC (be3) (rev 01)

Fixes: ca34fe38f0 ("be2net: fix wrong usage of adapter->generation")
Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
Link: https://lore.kernel.org/r/20230616164549.2863037-1-ross.lagerwall@citrix.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:39 +02:00
Arınç ÜNAL
789d528606 net: dsa: mt7530: fix trapping frames on non-MT7621 SoC MT7530 switch
[ Upstream commit 4ae90f90e4909e3014e2dc6a0627964617a7b824 ]

All MT7530 switch IP variants share the MT7530_MFC register, but the
current driver only writes it for the switch variant that is integrated in
the MT7621 SoC. Modify the code to include all MT7530 derivatives.

Fixes: b8f126a8d5 ("net-next: dsa: add dsa support for Mediatek MT7530 switch")
Suggested-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:39 +02:00
Terin Stock
35373d602b ipvs: align inner_mac_header for encapsulation
[ Upstream commit d7fce52fdf96663ddc2eb21afecff3775588612a ]

When using encapsulation the original packet's headers are copied to the
inner headers. This preserves the space for an inner mac header, which
is not used by the inner payloads for the encapsulation types supported
by IPVS. If a packet is using GUE or GRE encapsulation and needs to be
segmented, flow can be passed to __skb_udp_tunnel_segment() which
calculates a negative tunnel header length. A negative tunnel header
length causes pskb_may_pull() to fail, dropping the packet.

This can be observed by attaching probes to ip_vs_in_hook(),
__dev_queue_xmit(), and __skb_udp_tunnel_segment():

    perf probe --add '__dev_queue_xmit skb->inner_mac_header \
    skb->inner_network_header skb->mac_header skb->network_header'
    perf probe --add '__skb_udp_tunnel_segment:7 tnl_hlen'
    perf probe -m ip_vs --add 'ip_vs_in_hook skb->inner_mac_header \
    skb->inner_network_header skb->mac_header skb->network_header'

These probes the headers and tunnel header length for packets which
traverse the IPVS encapsulation path. A TCP packet can be forced into
the segmentation path by being smaller than a calculated clamped MSS,
but larger than the advertised MSS.

    probe:ip_vs_in_hook: inner_mac_header=0x0 inner_network_header=0x0 mac_header=0x44 network_header=0x52
    probe:ip_vs_in_hook: inner_mac_header=0x44 inner_network_header=0x52 mac_header=0x44 network_header=0x32
    probe:dev_queue_xmit: inner_mac_header=0x44 inner_network_header=0x52 mac_header=0x44 network_header=0x32
    probe:__skb_udp_tunnel_segment_L7: tnl_hlen=-2

When using veth-based encapsulation, the interfaces are set to be
mac-less, which does not preserve space for an inner mac header. This
prevents this issue from occurring.

In our real-world testing of sending a 32KB file we observed operation
time increasing from ~75ms for veth-based encapsulation to over 1.5s
using IPVS encapsulation due to retries from dropped packets.

This changeset modifies the packet on the encapsulation path in
ip_vs_tunnel_xmit() and ip_vs_tunnel_xmit_v6() to remove the inner mac
header offset. This fixes UDP segmentation for both encapsulation types,
and corrects the inner headers for any IPIP flows that may use it.

Fixes: 84c0d5e96f ("ipvs: allow tunneling with gue encapsulation")
Signed-off-by: Terin Stock <terin@cloudflare.com>
Acked-by: Julian Anastasov <ja@ssi.bg>
Acked-by: Simon Horman <horms@kernel.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:39 +02:00
Sergey Shtylyov
ee155675bd mmc: usdhi60rol0: fix deferred probing
[ Upstream commit 413db499730248431c1005b392e8ed82c4fa19bf ]

The driver overrides the error codes returned by platform_get_irq_byname()
to -ENODEV, so if it returns -EPROBE_DEFER, the driver will fail the probe
permanently instead of the deferred probing.  Switch to propagating error
codes upstream.

Fixes: 9ec36cafe4 ("of/irq: do irq resolution in platform_get_irq")
Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Link: https://lore.kernel.org/r/20230617203622.6812-13-s.shtylyov@omp.ru
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:39 +02:00
Sergey Shtylyov
0bd483fb95 mmc: sh_mmcif: fix deferred probing
[ Upstream commit 5b067d7f855c61df7f8e2e8ccbcee133c282415e ]

The driver overrides the error codes returned by platform_get_irq() to
-ENXIO, so if it returns -EPROBE_DEFER, the driver will fail the probe
permanently instead of the deferred probing. Switch to propagating the
error codes upstream.

Fixes: 9ec36cafe4 ("of/irq: do irq resolution in platform_get_irq")
Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Link: https://lore.kernel.org/r/20230617203622.6812-11-s.shtylyov@omp.ru
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:39 +02:00
Sergey Shtylyov
6160d37db1 mmc: sdhci-acpi: fix deferred probing
[ Upstream commit b465dea5e1540c7d7b5211adaf94926980d3014b ]

The driver overrides the error codes returned by platform_get_irq() to
-EINVAL, so if it returns -EPROBE_DEFER, the driver will fail the probe
permanently instead of the deferred probing. Switch to propagating the
error codes upstream.

Fixes: 1b7ba57ecc ("mmc: sdhci-acpi: Handle return value of platform_get_irq")
Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Link: https://lore.kernel.org/r/20230617203622.6812-9-s.shtylyov@omp.ru
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:39 +02:00
Sergey Shtylyov
b25875cf5e mmc: omap_hsmmc: fix deferred probing
[ Upstream commit fb51b74a57859b707c3e8055ed0c25a7ca4f6a29 ]

The driver overrides the error codes returned by platform_get_irq() to
-ENXIO, so if it returns -EPROBE_DEFER, the driver will fail the probe
permanently instead of the deferred probing. Switch to propagating the
error codes upstream.

Fixes: 9ec36cafe4 ("of/irq: do irq resolution in platform_get_irq")
Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Link: https://lore.kernel.org/r/20230617203622.6812-7-s.shtylyov@omp.ru
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-28 10:18:39 +02:00