commit 67aefbfee14b1f29cb4529911aef7322899ecc8b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Mar 23 09:10:45 2022 +0100

    Linux 4.19.236
    
    Link: https://lore.kernel.org/r/20220321133221.984120927@linuxfoundation.org
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Hulk Robot <hulkrobot@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d12d3f6d9c4219ba3d0bcf6546802ef4e0fe289b
Author: Michael Petlan <mpetlan@redhat.com>
Date:   Thu Mar 17 14:55:36 2022 +0100

    perf symbols: Fix symbol size calculation condition
    
    commit 3cf6a32f3f2a45944dd5be5c6ac4deb46bcd3bee upstream.
    
    Before this patch, the symbol end address fixup to be called, needed two
    conditions being met:
    
      if (prev->end == prev->start && prev->end != curr->start)
    
    Where
      "prev->end == prev->start" means that prev is zero-long
                                 (and thus needs a fixup)
    and
      "prev->end != curr->start" means that fixup hasn't been applied yet
    
    However, this logic is incorrect in the following situation:
    
    *curr  = {rb_node = {__rb_parent_color = 278218928,
      rb_right = 0x0, rb_left = 0x0},
      start = 0xc000000000062354,
      end = 0xc000000000062354, namelen = 40, type = 2 '\002',
      binding = 0 '\000', idle = 0 '\000', ignore = 0 '\000',
      inlined = 0 '\000', arch_sym = 0 '\000', annotate2 = false,
      name = 0x1159739e "kprobe_optinsn_page\t[__builtin__kprobes]"}
    
    *prev = {rb_node = {__rb_parent_color = 278219041,
      rb_right = 0x109548b0, rb_left = 0x109547c0},
      start = 0xc000000000062354,
      end = 0xc000000000062354, namelen = 12, type = 2 '\002',
      binding = 1 '\001', idle = 0 '\000', ignore = 0 '\000',
      inlined = 0 '\000', arch_sym = 0 '\000', annotate2 = false,
      name = 0x1095486e "optinsn_slot"}
    
    In this case, prev->start == prev->end == curr->start == curr->end,
    thus the condition above thinks that "we need a fixup due to zero
    length of prev symbol, but it has been probably done, since the
    prev->end == curr->start", which is wrong.
    
    After the patch, the execution path proceeds to arch__symbols__fixup_end
    function which fixes up the size of prev symbol by adding page_size to
    its end offset.
    
    Fixes: 3b01a413c196c910 ("perf symbols: Improve kallsyms symbol end addr calculation")
    Signed-off-by: Michael Petlan <mpetlan@redhat.com>
    Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
    Link: http://lore.kernel.org/lkml/20220317135536.805-1-mpetlan@redhat.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6de20111cd0bb7da9b2294073ba00c7d2a6c1c4f
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Sun Mar 13 22:56:32 2022 -0700

    Input: aiptek - properly check endpoint type
    
    commit 5600f6986628dde8881734090588474f54a540a8 upstream.
    
    Syzbot reported warning in usb_submit_urb() which is caused by wrong
    endpoint type. There was a check for the number of endpoints, but not
    for the type of endpoint.
    
    Fix it by replacing old desc.bNumEndpoints check with
    usb_find_common_endpoints() helper for finding endpoints
    
    Fail log:
    
    usb 5-1: BOGUS urb xfer, pipe 1 != type 3
    WARNING: CPU: 2 PID: 48 at drivers/usb/core/urb.c:502 usb_submit_urb+0xed2/0x18a0 drivers/usb/core/urb.c:502
    Modules linked in:
    CPU: 2 PID: 48 Comm: kworker/2:2 Not tainted 5.17.0-rc6-syzkaller-00226-g07ebd38a0da2 #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
    Workqueue: usb_hub_wq hub_event
    ...
    Call Trace:
     <TASK>
     aiptek_open+0xd5/0x130 drivers/input/tablet/aiptek.c:830
     input_open_device+0x1bb/0x320 drivers/input/input.c:629
     kbd_connect+0xfe/0x160 drivers/tty/vt/keyboard.c:1593
    
    Fixes: 8e20cf2bce12 ("Input: aiptek - fix crash on detecting device without endpoints")
    Reported-and-tested-by: syzbot+75cccf2b7da87fb6f84b@syzkaller.appspotmail.com
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Link: https://lore.kernel.org/r/20220308194328.26220-1-paskripkin@gmail.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 609a7119bffe3ddd7c93f2fa65be8917e02a0b7e
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Sat Mar 5 21:47:22 2022 -0500

    usb: gadget: Fix use-after-free bug by not setting udc->dev.driver
    
    commit 16b1941eac2bd499f065a6739a40ce0011a3d740 upstream.
    
    The syzbot fuzzer found a use-after-free bug:
    
    BUG: KASAN: use-after-free in dev_uevent+0x712/0x780 drivers/base/core.c:2320
    Read of size 8 at addr ffff88802b934098 by task udevd/3689
    
    CPU: 2 PID: 3689 Comm: udevd Not tainted 5.17.0-rc4-syzkaller-00229-g4f12b742eb2b #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
     print_address_description.constprop.0.cold+0x8d/0x303 mm/kasan/report.c:255
     __kasan_report mm/kasan/report.c:442 [inline]
     kasan_report.cold+0x83/0xdf mm/kasan/report.c:459
     dev_uevent+0x712/0x780 drivers/base/core.c:2320
     uevent_show+0x1b8/0x380 drivers/base/core.c:2391
     dev_attr_show+0x4b/0x90 drivers/base/core.c:2094
    
    Although the bug manifested in the driver core, the real cause was a
    race with the gadget core.  dev_uevent() does:
    
            if (dev->driver)
                    add_uevent_var(env, "DRIVER=%s", dev->driver->name);
    
    and between the test and the dereference of dev->driver, the gadget
    core sets dev->driver to NULL.
    
    The race wouldn't occur if the gadget core registered its devices on
    a real bus, using the standard synchronization techniques of the
    driver core.  However, it's not necessary to make such a large change
    in order to fix this bug; all we need to do is make sure that
    udc->dev.driver is always NULL.
    
    In fact, there is no reason for udc->dev.driver ever to be set to
    anything, let alone to the value it currently gets: the address of the
    gadget's driver.  After all, a gadget driver only knows how to manage
    a gadget, not how to manage a UDC.
    
    This patch simply removes the statements in the gadget core that touch
    udc->dev.driver.
    
    Fixes: 2ccea03a8f7e ("usb: gadget: introduce UDC Class")
    CC: <stable@vger.kernel.org>
    Reported-and-tested-by: syzbot+348b571beb5eeb70a582@syzkaller.appspotmail.com
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/YiQgukfFFbBnwJ/9@rowland.harvard.edu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 138d4f739b35dfb40438a0d5d7054965763bfbe7
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Mar 1 11:04:24 2022 +0300

    usb: gadget: rndis: prevent integer overflow in rndis_set_response()
    
    commit 65f3324f4b6fed78b8761c3b74615ecf0ffa81fa upstream.
    
    If "BufOffset" is very large the "BufOffset + 8" operation can have an
    integer overflow.
    
    Cc: stable@kernel.org
    Fixes: 38ea1eac7d88 ("usb: gadget: rndis: check size of RNDIS_MSG_SET command")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20220301080424.GA17208@kili
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98f72cd198fac47f108fb37fe94275787368c34e
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Wed Mar 16 08:26:02 2022 +0000

    net: dsa: Add missing of_node_put() in dsa_port_parse_of
    
    [ Upstream commit cb0b430b4e3acc88c85e0ad2e25f2a25a5765262 ]
    
    The device_node pointer is returned by of_parse_phandle()  with refcount
    incremented. We should use of_node_put() on it when done.
    
    Fixes: 6d4e5c570c2d ("net: dsa: get port type at parse time")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Link: https://lore.kernel.org/r/20220316082602.10785-1-linmq006@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 274076251d72ab5b2de99e3a3f0b577cd251fcc2
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Tue Mar 15 10:20:08 2022 +0100

    net: handle ARPHRD_PIMREG in dev_is_mac_header_xmit()
    
    [ Upstream commit 4ee06de7729d795773145692e246a06448b1eb7a ]
    
    This kind of interface doesn't have a mac header. This patch fixes
    bpf_redirect() to a PIM interface.
    
    Fixes: 27b29f63058d ("bpf: add bpf_redirect() helper")
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Link: https://lore.kernel.org/r/20220315092008.31423-1-nicolas.dichtel@6wind.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 31ae13dbc7f3aff848cf5c1646cf74235195a3ad
Author: Marek Vasut <marex@denx.de>
Date:   Sun Feb 20 05:07:18 2022 +0100

    drm/panel: simple: Fix Innolux G070Y2-L01 BPP settings
    
    [ Upstream commit fc1b6ef7bfb3d1d4df868b1c3e0480cacda6cd81 ]
    
    The Innolux G070Y2-L01 supports two modes of operation:
    1) FRC=Low/NC ... MEDIA_BUS_FMT_RGB666_1X7X3_SPWG ... BPP=6
    2) FRC=High ..... MEDIA_BUS_FMT_RGB888_1X7X4_SPWG ... BPP=8
    
    Currently the panel description mixes both, BPP from 1) and bus
    format from 2), which triggers a warning at panel-simple.c:615.
    
    Pick the later, set bpp=8, fix the warning.
    
    Fixes: a5d2ade627dca ("drm/panel: simple: Add support for Innolux G070Y2-L01")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: Christoph Fritz <chf.fritz@googlemail.com>
    Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
    Cc: Maxime Ripard <maxime@cerno.tech>
    Cc: Sam Ravnborg <sam@ravnborg.org>
    Cc: Thomas Zimmermann <tzimmermann@suse.de>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220220040718.532866-1-marex@denx.de
    Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a30c7c81db60f7f7ad52f75a4f7de5f628063df4
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Mon Mar 14 10:01:25 2022 +0800

    hv_netvsc: Add check for kvmalloc_array
    
    [ Upstream commit 886e44c9298a6b428ae046e2fa092ca52e822e6a ]
    
    As the potential failure of the kvmalloc_array(),
    it should be better to check and restore the 'data'
    if fails in order to avoid the dereference of the
    NULL pointer.
    
    Fixes: 6ae746711263 ("hv_netvsc: Add per-cpu ethtool stats for netvsc")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Link: https://lore.kernel.org/r/20220314020125.2365084-1-jiasheng@iscas.ac.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3202d5384300aea56888eae11d0b1a7c69d42445
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Mon Mar 14 09:34:48 2022 +0800

    atm: eni: Add check for dma_map_single
    
    [ Upstream commit 0f74b29a4f53627376cf5a5fb7b0b3fa748a0b2b ]
    
    As the potential failure of the dma_map_single(),
    it should be better to check it and return error
    if fails.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a33dd1e6693f80d805155b3f69c18c2f642915da
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Mar 12 15:29:58 2022 -0800

    net/packet: fix slab-out-of-bounds access in packet_recvmsg()
    
    [ Upstream commit c700525fcc06b05adfea78039de02628af79e07a ]
    
    syzbot found that when an AF_PACKET socket is using PACKET_COPY_THRESH
    and mmap operations, tpacket_rcv() is queueing skbs with
    garbage in skb->cb[], triggering a too big copy [1]
    
    Presumably, users of af_packet using mmap() already gets correct
    metadata from the mapped buffer, we can simply make sure
    to clear 12 bytes that might be copied to user space later.
    
    BUG: KASAN: stack-out-of-bounds in memcpy include/linux/fortify-string.h:225 [inline]
    BUG: KASAN: stack-out-of-bounds in packet_recvmsg+0x56c/0x1150 net/packet/af_packet.c:3489
    Write of size 165 at addr ffffc9000385fb78 by task syz-executor233/3631
    
    CPU: 0 PID: 3631 Comm: syz-executor233 Not tainted 5.17.0-rc7-syzkaller-02396-g0b3660695e80 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
     print_address_description.constprop.0.cold+0xf/0x336 mm/kasan/report.c:255
     __kasan_report mm/kasan/report.c:442 [inline]
     kasan_report.cold+0x83/0xdf mm/kasan/report.c:459
     check_region_inline mm/kasan/generic.c:183 [inline]
     kasan_check_range+0x13d/0x180 mm/kasan/generic.c:189
     memcpy+0x39/0x60 mm/kasan/shadow.c:66
     memcpy include/linux/fortify-string.h:225 [inline]
     packet_recvmsg+0x56c/0x1150 net/packet/af_packet.c:3489
     sock_recvmsg_nosec net/socket.c:948 [inline]
     sock_recvmsg net/socket.c:966 [inline]
     sock_recvmsg net/socket.c:962 [inline]
     ____sys_recvmsg+0x2c4/0x600 net/socket.c:2632
     ___sys_recvmsg+0x127/0x200 net/socket.c:2674
     __sys_recvmsg+0xe2/0x1a0 net/socket.c:2704
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    RIP: 0033:0x7fdfd5954c29
    Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 41 15 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007ffcf8e71e48 EFLAGS: 00000246 ORIG_RAX: 000000000000002f
    RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007fdfd5954c29
    RDX: 0000000000000000 RSI: 0000000020000500 RDI: 0000000000000005
    RBP: 0000000000000000 R08: 000000000000000d R09: 000000000000000d
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007ffcf8e71e60
    R13: 00000000000f4240 R14: 000000000000c1ff R15: 00007ffcf8e71e54
     </TASK>
    
    addr ffffc9000385fb78 is located in stack of task syz-executor233/3631 at offset 32 in frame:
     ____sys_recvmsg+0x0/0x600 include/linux/uio.h:246
    
    this frame has 1 object:
     [32, 160) 'addr'
    
    Memory state around the buggy address:
     ffffc9000385fa80: 00 04 f3 f3 f3 f3 f3 00 00 00 00 00 00 00 00 00
     ffffc9000385fb00: 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1 00
    >ffffc9000385fb80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f3
                                                                    ^
     ffffc9000385fc00: f3 f3 f3 00 00 00 00 00 00 00 00 00 00 00 00 f1
     ffffc9000385fc80: f1 f1 f1 00 f2 f2 f2 00 f2 f2 f2 00 00 00 00 00
    ==================================================================
    
    Fixes: 0fb375fb9b93 ("[AF_PACKET]: Allow for > 8 byte hardware addresses.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Link: https://lore.kernel.org/r/20220312232958.3535620-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b6e96480f6b2c2a5c5e360dee37b196dd8331e01
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon Feb 28 20:18:51 2022 -0800

    efi: fix return value of __setup handlers
    
    [ Upstream commit 9feaf8b387ee0ece9c1d7add308776b502a35d0c ]
    
    When "dump_apple_properties" is used on the kernel boot command line,
    it causes an Unknown parameter message and the string is added to init's
    argument strings:
    
      Unknown kernel command line parameters "dump_apple_properties
        BOOT_IMAGE=/boot/bzImage-517rc6 efivar_ssdt=newcpu_ssdt", will be
        passed to user space.
    
     Run /sbin/init as init process
       with arguments:
         /sbin/init
         dump_apple_properties
       with environment:
         HOME=/
         TERM=linux
         BOOT_IMAGE=/boot/bzImage-517rc6
         efivar_ssdt=newcpu_ssdt
    
    Similarly when "efivar_ssdt=somestring" is used, it is added to the
    Unknown parameter message and to init's environment strings, polluting
    them (see examples above).
    
    Change the return value of the __setup functions to 1 to indicate
    that the __setup options have been handled.
    
    Fixes: 58c5475aba67 ("x86/efi: Retrieve and assign Apple device properties")
    Fixes: 475fb4e8b2f4 ("efi / ACPI: load SSTDs from EFI variables")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: Igor Zhbanov <i.zhbanov@omprussia.ru>
    Link: lore.kernel.org/r/64644a2f-4a20-bab3-1e15-3b2cdd0defe3@omprussia.ru
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: linux-efi@vger.kernel.org
    Cc: Lukas Wunner <lukas@wunner.de>
    Cc: Octavian Purdila <octavian.purdila@intel.com>
    Cc: "Rafael J. Wysocki" <rafael@kernel.org>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Link: https://lore.kernel.org/r/20220301041851.12459-1-rdunlap@infradead.org
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7869543b1542ae0f9dbaf6004ea1218748b66362
Author: Joseph Qi <joseph.qi@linux.alibaba.com>
Date:   Wed Mar 16 16:15:09 2022 -0700

    ocfs2: fix crash when initialize filecheck kobj fails
    
    commit 7b0b1332cfdb94489836b67d088a779699f8e47e upstream.
    
    Once s_root is set, genric_shutdown_super() will be called if
    fill_super() fails.  That means, we will call ocfs2_dismount_volume()
    twice in such case, which can lead to kernel crash.
    
    Fix this issue by initializing filecheck kobj before setting s_root.
    
    Link: https://lkml.kernel.org/r/20220310081930.86305-1-joseph.qi@linux.alibaba.com
    Fixes: 5f483c4abb50 ("ocfs2: add kobject for online file check")
    Signed-off-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8e32bbb96c25b7ab29b1894dcd45e0b3b08fd9d
Author: Brian Masney <bmasney@redhat.com>
Date:   Thu Mar 10 18:24:59 2022 -0500

    crypto: qcom-rng - ensure buffer for generate is completely filled
    
    commit a680b1832ced3b5fa7c93484248fd221ea0d614b upstream.
    
    The generate function in struct rng_alg expects that the destination
    buffer is completely filled if the function returns 0. qcom_rng_read()
    can run into a situation where the buffer is partially filled with
    randomness and the remaining part of the buffer is zeroed since
    qcom_rng_generate() doesn't check the return value. This issue can
    be reproduced by running the following from libkcapi:
    
        kcapi-rng -b 9000000 > OUTFILE
    
    The generated OUTFILE will have three huge sections that contain all
    zeros, and this is caused by the code where the test
    'val & PRNG_STATUS_DATA_AVAIL' fails.
    
    Let's fix this issue by ensuring that qcom_rng_read() always returns
    with a full buffer if the function returns success. Let's also have
    qcom_rng_generate() return the correct value.
    
    Here's some statistics from the ent project
    (https://www.fourmilab.ch/random/) that shows information about the
    quality of the generated numbers:
    
        $ ent -c qcom-random-before
        Value Char Occurrences Fraction
          0           606748   0.067416
          1            33104   0.003678
          2            33001   0.003667
        ...
        253   �        32883   0.003654
        254   �        33035   0.003671
        255   �        33239   0.003693
    
        Total:       9000000   1.000000
    
        Entropy = 7.811590 bits per byte.
    
        Optimum compression would reduce the size
        of this 9000000 byte file by 2 percent.
    
        Chi square distribution for 9000000 samples is 9329962.81, and
        randomly would exceed this value less than 0.01 percent of the
        times.
    
        Arithmetic mean value of data bytes is 119.3731 (127.5 = random).
        Monte Carlo value for Pi is 3.197293333 (error 1.77 percent).
        Serial correlation coefficient is 0.159130 (totally uncorrelated =
        0.0).
    
    Without this patch, the results of the chi-square test is 0.01%, and
    the numbers are certainly not random according to ent's project page.
    The results improve with this patch:
    
        $ ent -c qcom-random-after
        Value Char Occurrences Fraction
          0            35432   0.003937
          1            35127   0.003903
          2            35424   0.003936
        ...
        253   �        35201   0.003911
        254   �        34835   0.003871
        255   �        35368   0.003930
    
        Total:       9000000   1.000000
    
        Entropy = 7.999979 bits per byte.
    
        Optimum compression would reduce the size
        of this 9000000 byte file by 0 percent.
    
        Chi square distribution for 9000000 samples is 258.77, and randomly
        would exceed this value 42.24 percent of the times.
    
        Arithmetic mean value of data bytes is 127.5006 (127.5 = random).
        Monte Carlo value for Pi is 3.141277333 (error 0.01 percent).
        Serial correlation coefficient is 0.000468 (totally uncorrelated =
        0.0).
    
    This change was tested on a Nexus 5 phone (msm8974 SoC).
    
    Signed-off-by: Brian Masney <bmasney@redhat.com>
    Fixes: ceec5f5b5988 ("crypto: qcom-rng - Add Qcom prng driver")
    Cc: stable@vger.kernel.org # 4.19+
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed5dec3fae86f20db52930e1d9a7cc38403994cc
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:42 2022 +0000

    arm64: Use the clearbhb instruction in mitigations
    
    commit 228a26b912287934789023b4132ba76065d9491c upstream.
    
    Future CPUs may implement a clearbhb instruction that is sufficient
    to mitigate SpectreBHB. CPUs that implement this instruction, but
    not CSV2.3 must be affected by Spectre-BHB.
    
    Add support to use this instruction as the BHB mitigation on CPUs
    that support it. The instruction is in the hint space, so it will
    be treated by a NOP as older CPUs.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    [ modified for stable: Use a KVM vector template instead of alternatives ]
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a44e7ddb5822b943cd50c5ad6a2541fb445d58bd
Author: Joey Gouly <joey.gouly@arm.com>
Date:   Fri Mar 18 17:48:41 2022 +0000

    arm64: add ID_AA64ISAR2_EL1 sys register
    
    commit 9e45365f1469ef2b934f9d035975dbc9ad352116 upstream.
    
    This is a new ID register, introduced in 8.7.
    
    Signed-off-by: Joey Gouly <joey.gouly@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: James Morse <james.morse@arm.com>
    Cc: Alexandru Elisei <alexandru.elisei@arm.com>
    Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
    Cc: Reiji Watanabe <reijiw@google.com>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20211210165432.8106-3-joey.gouly@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f051d32b03f08a0507ac1afd7b9c0a30c8e5d59
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:40 2022 +0000

    KVM: arm64: Allow SMCCC_ARCH_WORKAROUND_3 to be discovered and migrated
    
    commit a5905d6af492ee6a4a2205f0d550b3f931b03d03 upstream.
    
    KVM allows the guest to discover whether the ARCH_WORKAROUND SMCCC are
    implemented, and to preserve that state during migration through its
    firmware register interface.
    
    Add the necessary boiler plate for SMCCC_ARCH_WORKAROUND_3.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    [ kvm code moved to virt/kvm/arm, removed fw regs ABI. Added 32bit stub ]
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c20d551744797000c4af993f7d59ef8c69732949
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:39 2022 +0000

    arm64: Mitigate spectre style branch history side channels
    
    commit 558c303c9734af5a813739cd284879227f7297d2 upstream.
    
    Speculation attacks against some high-performance processors can
    make use of branch history to influence future speculation.
    When taking an exception from user-space, a sequence of branches
    or a firmware call overwrites or invalidates the branch history.
    
    The sequence of branches is added to the vectors, and should appear
    before the first indirect branch. For systems using KPTI the sequence
    is added to the kpti trampoline where it has a free register as the exit
    from the trampoline is via a 'ret'. For systems not using KPTI, the same
    register tricks are used to free up a register in the vectors.
    
    For the firmware call, arch-workaround-3 clobbers 4 registers, so
    there is no choice but to save them to the EL1 stack. This only happens
    for entry from EL0, so if we take an exception due to the stack access,
    it will not become re-entrant.
    
    For KVM, the existing branch-predictor-hardening vectors are used.
    When a spectre version of these vectors is in use, the firmware call
    is sufficient to mitigate against Spectre-BHB. For the non-spectre
    versions, the sequence of branches is added to the indirect vector.
    
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Cc: <stable@kernel.org> # <v5.17.x 72bb9dcb6c33c arm64: Add Cortex-X2 CPU part definition
    Cc: <stable@kernel.org> # <v5.16.x 2d0d656700d67 arm64: Add Neoverse-N2, Cortex-A710 CPU part definition
    Cc: <stable@kernel.org> # <v5.10.x 8a6b88e66233f arm64: Add part number for Arm Cortex-A77
    [ modified for stable, moved code to cpu_errata.c removed bitmap of
      mitigations, use kvm template infrastructure ]
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a68912a3ae3413be5febcaa40e7e0ec1fd62adee
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:38 2022 +0000

    KVM: arm64: Add templates for BHB mitigation sequences
    
    KVM writes the Spectre-v2 mitigation template at the beginning of each
    vector when a CPU requires a specific sequence to run.
    
    Because the template is copied, it can not be modified by the alternatives
    at runtime. As the KVM template code is intertwined with the bp-hardening
    callbacks, all templates must have a bp-hardening callback.
    
    Add templates for calling ARCH_WORKAROUND_3 and one for each value of K
    in the brancy-loop. Identify these sequences by a new parameter
    template_start, and add a copy of install_bp_hardening_cb() that is able to
    install them.
    
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b012f6597e55a2ea4c7efe94b5d9a792b6e5757
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:37 2022 +0000

    arm64: proton-pack: Report Spectre-BHB vulnerabilities as part of Spectre-v2
    
    commit dee435be76f4117410bbd90573a881fd33488f37 upstream.
    
    Speculation attacks against some high-performance processors can
    make use of branch history to influence future speculation as part of
    a spectre-v2 attack. This is not mitigated by CSV2, meaning CPUs that
    previously reported 'Not affected' are now moderately mitigated by CSV2.
    
    Update the value in /sys/devices/system/cpu/vulnerabilities/spectre_v2
    to also show the state of the BHB mitigation.
    
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    [ code move to cpu_errata.c for backport ]
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b5ca2608fbd6f250281b6a1d0d73613f250e6f1
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:36 2022 +0000

    arm64: Add percpu vectors for EL1
    
    commit bd09128d16fac3c34b80bd6a29088ac632e8ce09 upstream.
    
    The Spectre-BHB workaround adds a firmware call to the vectors. This
    is needed on some CPUs, but not others. To avoid the unaffected CPU in
    a big/little pair from making the firmware call, create per cpu vectors.
    
    The per-cpu vectors only apply when returning from EL0.
    
    Systems using KPTI can use the canonical 'full-fat' vectors directly at
    EL1, the trampoline exit code will switch to this_cpu_vector on exit to
    EL0. Systems not using KPTI should always use this_cpu_vector.
    
    this_cpu_vector will point at a vector in tramp_vecs or
    __bp_harden_el1_vectors, depending on whether KPTI is in use.
    
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e18876b523d5f5fd8b8f34721f60a470caf20aa1
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:35 2022 +0000

    arm64: entry: Add macro for reading symbol addresses from the trampoline
    
    commit b28a8eebe81c186fdb1a0078263b30576c8e1f42 upstream.
    
    The trampoline code needs to use the address of symbols in the wider
    kernel, e.g. vectors. PC-relative addressing wouldn't work as the
    trampoline code doesn't run at the address the linker expected.
    
    tramp_ventry uses a literal pool, unless CONFIG_RANDOMIZE_BASE is
    set, in which case it uses the data page as a literal pool because
    the data page can be unmapped when running in user-space, which is
    required for CPUs vulnerable to meltdown.
    
    Pull this logic out as a macro, instead of adding a third copy
    of it.
    
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 91429ed04ebe9dbec88f97c6fd136b722bc3f3c5
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:34 2022 +0000

    arm64: entry: Add vectors that have the bhb mitigation sequences
    
    commit ba2689234be92024e5635d30fe744f4853ad97db upstream.
    
    Some CPUs affected by Spectre-BHB need a sequence of branches, or a
    firmware call to be run before any indirect branch. This needs to go
    in the vectors. No CPU needs both.
    
    While this can be patched in, it would run on all CPUs as there is a
    single set of vectors. If only one part of a big/little combination is
    affected, the unaffected CPUs have to run the mitigation too.
    
    Create extra vectors that include the sequence. Subsequent patches will
    allow affected CPUs to select this set of vectors. Later patches will
    modify the loop count to match what the CPU requires.
    
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 901c0a20aa94d09a9328899e2dd69a8d43a3a920
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:33 2022 +0000

    arm64: entry: Add non-kpti __bp_harden_el1_vectors for mitigations
    
    commit aff65393fa1401e034656e349abd655cfe272de0 upstream.
    
    kpti is an optional feature, for systems not using kpti a set of
    vectors for the spectre-bhb mitigations is needed.
    
    Add another set of vectors, __bp_harden_el1_vectors, that will be
    used if a mitigation is needed and kpti is not in use.
    
    The EL1 ventries are repeated verbatim as there is no additional
    work needed for entry from EL1.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22fdfcf1c2cea8e6dc383d46cbbe59d476d24a96
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:32 2022 +0000

    arm64: entry: Allow the trampoline text to occupy multiple pages
    
    commit a9c406e6462ff14956d690de7bbe5131a5677dc9 upstream.
    
    Adding a second set of vectors to .entry.tramp.text will make it
    larger than a single 4K page.
    
    Allow the trampoline text to occupy up to three pages by adding two
    more fixmap slots. Previous changes to tramp_valias allowed it to reach
    beyond a single page.
    
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e056623dfc538909ed2a914f70a66d68ec71ec3
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:31 2022 +0000

    arm64: entry: Make the kpti trampoline's kpti sequence optional
    
    commit c47e4d04ba0f1ea17353d85d45f611277507e07a upstream.
    
    Spectre-BHB needs to add sequences to the vectors. Having one global
    set of vectors is a problem for big/little systems where the sequence
    is costly on cpus that are not vulnerable.
    
    Making the vectors per-cpu in the style of KVM's bh_harden_hyp_vecs
    requires the vectors to be generated by macros.
    
    Make the kpti re-mapping of the kernel optional, so the macros can be
    used without kpti.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f689fa53bb944873f75fe1584f446cae1aabd2c1
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:30 2022 +0000

    arm64: entry: Move trampoline macros out of ifdef'd section
    
    commit 13d7a08352a83ef2252aeb464a5e08dfc06b5dfd upstream.
    
    The macros for building the kpti trampoline are all behind
    CONFIG_UNMAP_KERNEL_AT_EL0, and in a region that outputs to the
    .entry.tramp.text section.
    
    Move the macros out so they can be used to generate other kinds of
    trampoline. Only the symbols need to be guarded by
    CONFIG_UNMAP_KERNEL_AT_EL0 and appear in the .entry.tramp.text section.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af484e69b5e83095609d8b5c8abaf13a5460229e
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:29 2022 +0000

    arm64: entry: Don't assume tramp_vectors is the start of the vectors
    
    commit ed50da7764535f1e24432ded289974f2bf2b0c5a upstream.
    
    The tramp_ventry macro uses tramp_vectors as the address of the vectors
    when calculating which ventry in the 'full fat' vectors to branch to.
    
    While there is one set of tramp_vectors, this will be true.
    Adding multiple sets of vectors will break this assumption.
    
    Move the generation of the vectors to a macro, and pass the start
    of the vectors as an argument to tramp_ventry.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ebcdd80d0016c7445e8395cec99b9ce266a26001
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:28 2022 +0000

    arm64: entry: Allow tramp_alias to access symbols after the 4K boundary
    
    commit 6c5bf79b69f911560fbf82214c0971af6e58e682 upstream.
    
    Systems using kpti enter and exit the kernel through a trampoline mapping
    that is always mapped, even when the kernel is not. tramp_valias is a macro
    to find the address of a symbol in the trampoline mapping.
    
    Adding extra sets of vectors will expand the size of the entry.tramp.text
    section to beyond 4K. tramp_valias will be unable to generate addresses
    for symbols beyond 4K as it uses the 12 bit immediate of the add
    instruction.
    
    As there are now two registers available when tramp_alias is called,
    use the extra register to avoid the 4K limit of the 12 bit immediate.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 266b1ef1368e06ac4c5a89eb9774ef2bbaa54e19
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:27 2022 +0000

    arm64: entry: Move the trampoline data page before the text page
    
    commit c091fb6ae059cda563b2a4d93fdbc548ef34e1d6 upstream.
    
    The trampoline code has a data page that holds the address of the vectors,
    which is unmapped when running in user-space. This ensures that with
    CONFIG_RANDOMIZE_BASE, the randomised address of the kernel can't be
    discovered until after the kernel has been mapped.
    
    If the trampoline text page is extended to include multiple sets of
    vectors, it will be larger than a single page, making it tricky to
    find the data page without knowing the size of the trampoline text
    pages, which will vary with PAGE_SIZE.
    
    Move the data page to appear before the text page. This allows the
    data page to be found without knowing the size of the trampoline text
    pages. 'tramp_vectors' is used to refer to the beginning of the
    .entry.tramp.text section, do that explicitly.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51acb81130d1feee7fd043760b75f5377ab8d4f0
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:26 2022 +0000

    arm64: entry: Free up another register on kpti's tramp_exit path
    
    commit 03aff3a77a58b5b52a77e00537a42090ad57b80b upstream.
    
    Kpti stashes x30 in far_el1 while it uses x30 for all its work.
    
    Making the vectors a per-cpu data structure will require a second
    register.
    
    Allow tramp_exit two registers before it unmaps the kernel, by
    leaving x30 on the stack, and stashing x29 in far_el1.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87eccd56c52fcdd6c55b048d789da5c9c2e51ed3
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:25 2022 +0000

    arm64: entry: Make the trampoline cleanup optional
    
    commit d739da1694a0eaef0358a42b76904b611539b77b upstream.
    
    Subsequent patches will add additional sets of vectors that use
    the same tricks as the kpti vectors to reach the full-fat vectors.
    The full-fat vectors contain some cleanup for kpti that is patched
    in by alternatives when kpti is in use. Once there are additional
    vectors, the cleanup will be needed in more cases.
    
    But on big/little systems, the cleanup would be harmful if no
    trampoline vector were in use. Instead of forcing CPUs that don't
    need a trampoline vector to use one, make the trampoline cleanup
    optional.
    
    Entry at the top of the vectors will skip the cleanup. The trampoline
    vectors can then skip the first instruction, triggering the cleanup
    to run.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8bfe29afc09ac77b347540a0f4c789e6530a436
Author: James Morse <james.morse@arm.com>
Date:   Fri Mar 18 17:48:24 2022 +0000

    arm64: entry.S: Add ventry overflow sanity checks
    
    commit 4330e2c5c04c27bebf89d34e0bc14e6943413067 upstream.
    
    Subsequent patches add even more code to the ventry slots.
    Ensure kernels that overflow a ventry slot don't get built.
    
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3482cafada6ef9c14762a24f47a699047b7e9bc8
Author: Anshuman Khandual <anshuman.khandual@arm.com>
Date:   Fri Mar 18 17:48:23 2022 +0000

    arm64: Add Cortex-X2 CPU part definition
    
    commit 72bb9dcb6c33cfac80282713c2b4f2b254cd24d1 upstream.
    
    Add the CPU Partnumbers for the new Arm designs.
    
    Cc: Will Deacon <will@kernel.org>
    Cc: Suzuki Poulose <suzuki.poulose@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Link: https://lore.kernel.org/r/1642994138-25887-2-git-send-email-anshuman.khandual@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6be1a2b2d4cd61c3cb1801d2b00f529d0d48626f
Author: Suzuki K Poulose <suzuki.poulose@arm.com>
Date:   Fri Mar 18 17:48:22 2022 +0000

    arm64: Add Neoverse-N2, Cortex-A710 CPU part definition
    
    commit 2d0d656700d67239a57afaf617439143d8dac9be upstream.
    
    Add the CPU Partnumbers for the new Arm designs.
    
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Link: https://lore.kernel.org/r/20211019163153.3692640-2-suzuki.poulose@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b40c79d32725a6f83d68d872cd75f8a4dff802c
Author: Rob Herring <robh@kernel.org>
Date:   Fri Mar 18 17:48:21 2022 +0000

    arm64: Add part number for Arm Cortex-A77
    
    commit 8a6b88e66233f5f1779b0a1342aa9dc030dddcd5 upstream.
    
    Add the MIDR part number info for the Arm Cortex-A77.
    
    Signed-off-by: Rob Herring <robh@kernel.org>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20201028182839.166037-1-robh@kernel.org
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10ddfb495232cc9d7bff79f737b4b1b4212fa260
Author: Lucas Wei <lucaswei@google.com>
Date:   Fri Mar 18 15:14:01 2022 +0800

    fs: sysfs_emit: Remove PAGE_SIZE alignment check
    
    For kernel releases older than 4.20, using the SLUB alloctor will cause
    this alignment check to fail as that allocator did NOT align kmalloc
    allocations on a PAGE_SIZE boundry.
    
    Remove the check for these older kernels as it is a false-positive and
    causes problems on many devices.
    
    Signed-off-by: Lucas Wei <lucaswei@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit deebce9df9ffaa62613bfcd8351d0c43a9a66108
Author: liqiong <liqiong@nfschina.com>
Date:   Thu Feb 17 19:54:16 2022 +0800

    mm: fix dereference a null pointer in migrate[_huge]_page_move_mapping()
    
    Upstream doesn't use radix tree any more in migrate.c, no need this patch.
    
    The two functions look up a slot and dereference the pointer,
    If the pointer is null, the kernel would crash and dump.
    
    The 'numad' service calls 'migrate_pages' periodically. If some slots
    being replaced (Cache Eviction), the radix_tree_lookup_slot() returns
    a null pointer that causes kernel crash.
    
    "numad":  crash> bt
    [exception RIP: migrate_page_move_mapping+337]
    
    Introduce pointer checking to avoid dereference a null pointer.
    
    Cc: <stable@vger.kernel.org> # linux-4.19.y
    Signed-off-by: liqiong <liqiong@nfschina.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa44002e7db25f333ddf412fb81e8db6c100841a
Author: Zhang Qiao <zhangqiao22@huawei.com>
Date:   Thu Mar 17 10:41:57 2022 +0800

    cpuset: Fix unsafe lock order between cpuset lock and cpuslock
    
    The backport commit 4eec5fe1c680a ("cgroup/cpuset: Fix a race
    between cpuset_attach() and cpu hotplug") looks suspicious since
    it comes before commit d74b27d63a8b ("cgroup/cpuset: Change
    cpuset_rwsem and hotplug lock order") v5.4-rc1~176^2~30 when
    the locking order was: cpuset lock, cpus lock.
    
    Fix it with the correct locking order and reduce the cpus locking
    range because only set_cpus_allowed_ptr() needs the protection of
    cpus lock.
    
    Fixes: 4eec5fe1c680a ("cgroup/cpuset: Fix a race between cpuset_attach() and cpu hotplug")
    Reported-by: Michal Koutný <mkoutny@suse.com>
    Signed-off-by: Zhang Qiao <zhangqiao22@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ba1ec19460247ebe8b41c9a883d55f633c1282d
Author: Valentin Schneider <valentin.schneider@arm.com>
Date:   Thu Apr 29 22:53:27 2021 -0700

    ia64: ensure proper NUMA distance and possible map initialization
    
    commit b22a8f7b4bde4e4ab73b64908ffd5d90ecdcdbfd upstream.
    
    John Paul reported a warning about bogus NUMA distance values spurred by
    commit:
    
      620a6dc40754 ("sched/topology: Make sched_init_numa() use a set for the deduplicating sort")
    
    In this case, the afflicted machine comes up with a reported 256 possible
    nodes, all of which are 0 distance away from one another.  This was
    previously silently ignored, but is now caught by the aforementioned
    commit.
    
    The culprit is ia64's node_possible_map which remains unchanged from its
    initialization value of NODE_MASK_ALL.  In John's case, the machine
    doesn't have any SRAT nor SLIT table, but AIUI the possible map remains
    untouched regardless of what ACPI tables end up being parsed.  Thus,
    !online && possible nodes remain with a bogus distance of 0 (distances \in
    [0, 9] are "reserved and have no meaning" as per the ACPI spec).
    
    Follow x86 / drivers/base/arch_numa's example and set the possible map to
    the parsed map, which in this case seems to be the online map.
    
    Link: http://lore.kernel.org/r/255d6b5d-194e-eb0e-ecdd-97477a534441@physik.fu-berlin.de
    Link: https://lkml.kernel.org/r/20210318130617.896309-1-valentin.schneider@arm.com
    Fixes: 620a6dc40754 ("sched/topology: Make sched_init_numa() use a set for the deduplicating sort")
    Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
    Reported-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Tested-by: Sergei Trofimovich <slyfox@gentoo.org>
    Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Vincent Guittot <vincent.guittot@linaro.org>
    Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>
    Cc: Anatoly Pugachev <matorola@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [ dannf: Use node_distance instead of slit_distance since this is before
      the rename that occurred in commit ef78e5ec9214 ("ia64: export
      node_distance function"), plus a minor context adjustment ]
    Signed-off-by: dann frazier <dann.frazier@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d93ffef8ccdc1f3da616c71ef1fe580c7a4a3af
Author: Dietmar Eggemann <dietmar.eggemann@arm.com>
Date:   Mon Feb 1 10:53:53 2021 +0100

    sched/topology: Fix sched_domain_topology_level alloc in sched_init_numa()
    
    commit 71e5f6644fb2f3304fcb310145ded234a37e7cc1 upstream.
    
    Commit "sched/topology: Make sched_init_numa() use a set for the
    deduplicating sort" allocates 'i + nr_levels (level)' instead of
    'i + nr_levels + 1' sched_domain_topology_level.
    
    This led to an Oops (on Arm64 juno with CONFIG_SCHED_DEBUG):
    
    sched_init_domains
      build_sched_domains()
        __free_domain_allocs()
          __sdt_free() {
            ...
            for_each_sd_topology(tl)
              ...
              sd = *per_cpu_ptr(sdd->sd, j); <--
              ...
          }
    
    Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Tested-by: Vincent Guittot <vincent.guittot@linaro.org>
    Tested-by: Barry Song <song.bao.hua@hisilicon.com>
    Link: https://lkml.kernel.org/r/6000e39e-7d28-c360-9cd6-8798fd22a9bf@arm.com
    Signed-off-by: dann frazier <dann.frazier@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9386b547950742ae41536161711531d7eacd1b8
Author: Valentin Schneider <valentin.schneider@arm.com>
Date:   Fri Jan 22 12:39:43 2021 +0000

    sched/topology: Make sched_init_numa() use a set for the deduplicating sort
    
    commit 620a6dc40754dc218f5b6389b5d335e9a107fd29 upstream.
    
    The deduplicating sort in sched_init_numa() assumes that the first line in
    the distance table contains all unique values in the entire table. I've
    been trying to pen what this exactly means for the topology, but it's not
    straightforward. For instance, topology.c uses this example:
    
      node   0   1   2   3
        0:  10  20  20  30
        1:  20  10  20  20
        2:  20  20  10  20
        3:  30  20  20  10
    
      0 ----- 1
      |     / |
      |   /   |
      | /     |
      2 ----- 3
    
    Which works out just fine. However, if we swap nodes 0 and 1:
    
      1 ----- 0
      |     / |
      |   /   |
      | /     |
      2 ----- 3
    
    we get this distance table:
    
      node   0  1  2  3
        0:  10 20 20 20
        1:  20 10 20 30
        2:  20 20 10 20
        3:  20 30 20 10
    
    Which breaks the deduplicating sort (non-representative first line). In
    this case this would just be a renumbering exercise, but it so happens that
    we can have a deduplicating sort that goes through the whole table in O(n²)
    at the extra cost of a temporary memory allocation (i.e. any form of set).
    
    The ACPI spec (SLIT) mentions distances are encoded on 8 bits. Following
    this, implement the set as a 256-bits bitmap. Should this not be
    satisfactory (i.e. we want to support 32-bit values), then we'll have to go
    for some other sparse set implementation.
    
    This has the added benefit of letting us allocate just the right amount of
    memory for sched_domains_numa_distance[], rather than an arbitrary
    (nr_node_ids + 1).
    
    Note: DT binding equivalent (distance-map) decodes distances as 32-bit
    values.
    
    Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20210122123943.1217-2-valentin.schneider@arm.com
    Signed-off-by: dann frazier <dann.frazier@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1cab4278b375d91e20bf298e6e833769e5f78953
Author: Chengming Zhou <zhouchengming@bytedance.com>
Date:   Fri Mar 4 20:29:04 2022 -0800

    kselftest/vm: fix tests build with old libc
    
    [ Upstream commit b773827e361952b3f53ac6fa4c4e39ccd632102e ]
    
    The error message when I build vm tests on debian10 (GLIBC 2.28):
    
        userfaultfd.c: In function `userfaultfd_pagemap_test':
        userfaultfd.c:1393:37: error: `MADV_PAGEOUT' undeclared (first use
        in this function); did you mean `MADV_RANDOM'?
          if (madvise(area_dst, test_pgsize, MADV_PAGEOUT))
                                             ^~~~~~~~~~~~
                                             MADV_RANDOM
    
    This patch includes these newer definitions from UAPI linux/mman.h, is
    useful to fix tests build on systems without these definitions in glibc
    sys/mman.h.
    
    Link: https://lkml.kernel.org/r/20220227055330.43087-2-zhouchengming@bytedance.com
    Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
    Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cdb1e7cf482afce546d4b966c7c33da606d05526
Author: Niels Dossche <dossche.niels@gmail.com>
Date:   Tue Mar 1 23:28:22 2022 +0100

    sfc: extend the locking on mcdi->seqno
    
    [ Upstream commit f1fb205efb0ccca55626fd4ef38570dd16b44719 ]
    
    seqno could be read as a stale value outside of the lock. The lock is
    already acquired to protect the modification of seqno against a possible
    race condition. Place the reading of this value also inside this locking
    to protect it against a possible race condition.
    
    Signed-off-by: Niels Dossche <dossche.niels@gmail.com>
    Acked-by: Martin Habets <habetsm.xilinx@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9c90c0c62b5b5878f32400338983878a5345b050
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Mar 2 08:17:23 2022 -0800

    tcp: make tcp_read_sock() more robust
    
    [ Upstream commit e3d5ea2c011ecb16fb94c56a659364e6b30fac94 ]
    
    If recv_actor() returns an incorrect value, tcp_read_sock()
    might loop forever.
    
    Instead, issue a one time warning and make sure to make progress.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Acked-by: Jakub Sitnicki <jakub@cloudflare.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/r/20220302161723.3910001-2-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 58984c476c6632855f875049995cd1747122a827
Author: Sreeramya Soratkal <quic_ssramya@quicinc.com>
Date:   Tue Mar 1 11:33:20 2022 +0530

    nl80211: Update bss channel on channel switch for P2P_CLIENT
    
    [ Upstream commit e50b88c4f076242358b66ddb67482b96947438f2 ]
    
    The wdev channel information is updated post channel switch only for
    the station mode and not for the other modes. Due to this, the P2P client
    still points to the old value though it moved to the new channel
    when the channel change is induced from the P2P GO.
    
    Update the bss channel after CSA channel switch completion for P2P client
    interface as well.
    
    Signed-off-by: Sreeramya Soratkal <quic_ssramya@quicinc.com>
    Link: https://lore.kernel.org/r/1646114600-31479-1-git-send-email-quic_ssramya@quicinc.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ebaa6c0e1bb18bd9d5bd26d0b1aae22d6d0f0915
Author: Jia-Ju Bai <baijiaju1990@gmail.com>
Date:   Fri Feb 25 04:52:30 2022 -0800

    atm: firestream: check the return value of ioremap() in fs_init()
    
    [ Upstream commit d4e26aaea7f82ba884dcb4acfe689406bc092dc3 ]
    
    The function ioremap() in fs_init() can fail, so its return value should
    be checked.
    
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f2462e036388724d021e789574ec4ffd2af19c16
Author: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Date:   Mon Feb 21 22:59:35 2022 +0000

    can: rcar_canfd: rcar_canfd_channel_probe(): register the CAN device when fully ready
    
    [ Upstream commit c5048a7b2c23ab589f3476a783bd586b663eda5b ]
    
    Register the CAN device only when all the necessary initialization is
    completed. This patch makes sure all the data structures and locks are
    initialized before registering the CAN device.
    
    Link: https://lore.kernel.org/all/20220221225935.12300-1-prabhakar.mahadev-lad.rj@bp.renesas.com
    Reported-by: Pavel Machek <pavel@denx.de>
    Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Reviewed-by: Pavel Machek <pavel@denx.de>
    Reviewed-by: Ulrich Hecht <uli+renesas@fpond.eu>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d00275fb39a7b0b5912d2365e7acaaee734ae58c
Author: Julian Braha <julianbraha@gmail.com>
Date:   Mon Jan 17 05:09:40 2022 +0100

    ARM: 9178/1: fix unmet dependency on BITREVERSE for HAVE_ARCH_BITREVERSE
    
    [ Upstream commit 11c57c3ba94da74c3446924260e34e0b1950b5d7 ]
    
    Resending this to properly add it to the patch tracker - thanks for letting
    me know, Arnd :)
    
    When ARM is enabled, and BITREVERSE is disabled,
    Kbuild gives the following warning:
    
    WARNING: unmet direct dependencies detected for HAVE_ARCH_BITREVERSE
      Depends on [n]: BITREVERSE [=n]
      Selected by [y]:
      - ARM [=y] && (CPU_32v7M [=n] || CPU_32v7 [=y]) && !CPU_32v6 [=n]
    
    This is because ARM selects HAVE_ARCH_BITREVERSE
    without selecting BITREVERSE, despite
    HAVE_ARCH_BITREVERSE depending on BITREVERSE.
    
    This unmet dependency bug was found by Kismet,
    a static analysis tool for Kconfig. Please advise if this
    is not the appropriate solution.
    
    Signed-off-by: Julian Braha <julianbraha@gmail.com>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 56eaacb8137ba2071ce48d4e3d91979270e139a7
Author: Alexander Lobakin <alobakin@pm.me>
Date:   Sat Feb 12 22:21:11 2022 +0000

    MIPS: smp: fill in sibling and core maps earlier
    
    [ Upstream commit f2703def339c793674010cc9f01bfe4980231808 ]
    
    After enabling CONFIG_SCHED_CORE (landed during 5.14 cycle),
    2-core 2-thread-per-core interAptiv (CPS-driven) started emitting
    the following:
    
    [    0.025698] CPU1 revision is: 0001a120 (MIPS interAptiv (multi))
    [    0.048183] ------------[ cut here ]------------
    [    0.048187] WARNING: CPU: 1 PID: 0 at kernel/sched/core.c:6025 sched_core_cpu_starting+0x198/0x240
    [    0.048220] Modules linked in:
    [    0.048233] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 5.17.0-rc3+ #35 b7b319f24073fd9a3c2aa7ad15fb7993eec0b26f
    [    0.048247] Stack : 817f0000 00000004 327804c8 810eb050 00000000 00000004 00000000 c314fdd1
    [    0.048278]         830cbd64 819c0000 81800000 817f0000 83070bf4 00000001 830cbd08 00000000
    [    0.048307]         00000000 00000000 815fcbc4 00000000 00000000 00000000 00000000 00000000
    [    0.048334]         00000000 00000000 00000000 00000000 817f0000 00000000 00000000 817f6f34
    [    0.048361]         817f0000 818a3c00 817f0000 00000004 00000000 00000000 4dc33260 0018c933
    [    0.048389]         ...
    [    0.048396] Call Trace:
    [    0.048399] [<8105a7bc>] show_stack+0x3c/0x140
    [    0.048424] [<8131c2a0>] dump_stack_lvl+0x60/0x80
    [    0.048440] [<8108b5c0>] __warn+0xc0/0xf4
    [    0.048454] [<8108b658>] warn_slowpath_fmt+0x64/0x10c
    [    0.048467] [<810bd418>] sched_core_cpu_starting+0x198/0x240
    [    0.048483] [<810c6514>] sched_cpu_starting+0x14/0x80
    [    0.048497] [<8108c0f8>] cpuhp_invoke_callback_range+0x78/0x140
    [    0.048510] [<8108d914>] notify_cpu_starting+0x94/0x140
    [    0.048523] [<8106593c>] start_secondary+0xbc/0x280
    [    0.048539]
    [    0.048543] ---[ end trace 0000000000000000 ]---
    [    0.048636] Synchronize counters for CPU 1: done.
    
    ...for each but CPU 0/boot.
    Basic debug printks right before the mentioned line say:
    
    [    0.048170] CPU: 1, smt_mask:
    
    So smt_mask, which is sibling mask obviously, is empty when entering
    the function.
    This is critical, as sched_core_cpu_starting() calculates
    core-scheduling parameters only once per CPU start, and it's crucial
    to have all the parameters filled in at that moment (at least it
    uses cpu_smt_mask() which in fact is `&cpu_sibling_map[cpu]` on
    MIPS).
    
    A bit of debugging led me to that set_cpu_sibling_map() performing
    the actual map calculation, was being invocated after
    notify_cpu_start(), and exactly the latter function starts CPU HP
    callback round (sched_core_cpu_starting() is basically a CPU HP
    callback).
    While the flow is same on ARM64 (maps after the notifier, although
    before calling set_cpu_online()), x86 started calculating sibling
    maps earlier than starting the CPU HP callbacks in Linux 4.14 (see
    [0] for the reference). Neither me nor my brief tests couldn't find
    any potential caveats in calculating the maps right after performing
    delay calibration, but the WARN splat is now gone.
    The very same debug prints now yield exactly what I expected from
    them:
    
    [    0.048433] CPU: 1, smt_mask: 0-1
    
    [0] https://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git/commit/?id=76ce7cfe35ef
    
    Signed-off-by: Alexander Lobakin <alobakin@pm.me>
    Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7693fc7727d16ca2ac9c749dba9b9e5fbef78461
Author: Corentin Labbe <clabbe@baylibre.com>
Date:   Wed Feb 9 12:03:55 2022 +0000

    ARM: dts: rockchip: fix a typo on rk3288 crypto-controller
    
    [ Upstream commit 3916c3619599a3970d3e6f98fb430b7c46266ada ]
    
    crypto-controller had a typo, fix it.
    In the same time, rename it to just crypto
    
    Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
    Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Link: https://lore.kernel.org/r/20220209120355.1985707-1-clabbe@baylibre.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a762f9de7f9be9221b5069e3d9a3b03ea97aa542
Author: Sascha Hauer <s.hauer@pengutronix.de>
Date:   Wed Jan 26 15:55:40 2022 +0100

    arm64: dts: rockchip: reorder rk3399 hdmi clocks
    
    [ Upstream commit 2e8a8b5955a000cc655f7e368670518cbb77fe58 ]
    
    The binding specifies the clock order to "cec", "grf", "vpll". Reorder
    the clocks accordingly.
    
    Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
    Link: https://lore.kernel.org/r/20220126145549.617165-19-s.hauer@pengutronix.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e99c775c3c6a076681eb8bf63455e4bcfae809a8
Author: Jakob Unterwurzacher <jakob.unterwurzacher@theobroma-systems.com>
Date:   Wed Jan 19 14:49:48 2022 +0100

    arm64: dts: rockchip: fix rk3399-puma eMMC HS400 signal integrity
    
    [ Upstream commit 62966cbdda8a92f82d966a45aa671e788b2006f7 ]
    
    There are signal integrity issues running the eMMC at 200MHz on Puma
    RK3399-Q7.
    
    Similar to the work-around found for RK3399 Gru boards, lowering the
    frequency to 100MHz made the eMMC much more stable, so let's lower the
    frequency to 100MHz.
    
    It might be possible to run at 150MHz as on RK3399 Gru boards but only
    100MHz was extensively tested.
    
    Cc: Quentin Schulz <foss+kernel@0leil.net>
    Signed-off-by: Jakob Unterwurzacher <jakob.unterwurzacher@theobroma-systems.com>
    Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
    Link: https://lore.kernel.org/r/20220119134948.1444965-1-quentin.schulz@theobroma-systems.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f82fdf0230c3ea639306f35daaac7fca11a48a7a
Author: Yan Yan <evitayan@google.com>
Date:   Tue Jan 18 16:00:14 2022 -0800

    xfrm: Fix xfrm migrate issues when address family changes
    
    [ Upstream commit e03c3bba351f99ad932e8f06baa9da1afc418e02 ]
    
    xfrm_migrate cannot handle address family change of an xfrm_state.
    The symptons are the xfrm_state will be migrated to a wrong address,
    and sending as well as receiving packets wil be broken.
    
    This commit fixes it by breaking the original xfrm_state_clone
    method into two steps so as to update the props.family before
    running xfrm_init_state. As the result, xfrm_state's inner mode,
    outer mode, type and IP header length in xfrm_state_migrate can
    be updated with the new address family.
    
    Tested with additions to Android's kernel unit test suite:
    https://android-review.googlesource.com/c/kernel/tests/+/1885354
    
    Signed-off-by: Yan Yan <evitayan@google.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1414edd2c83807951726e689b24069da83be3131
Author: Yan Yan <evitayan@google.com>
Date:   Tue Jan 18 16:00:13 2022 -0800

    xfrm: Check if_id in xfrm_migrate
    
    [ Upstream commit c1aca3080e382886e2e58e809787441984a2f89b ]
    
    This patch enables distinguishing SAs and SPs based on if_id during
    the xfrm_migrate flow. This ensures support for xfrm interfaces
    throughout the SA/SP lifecycle.
    
    When there are multiple existing SPs with the same direction,
    the same xfrm_selector and different endpoint addresses,
    xfrm_migrate might fail with ENODATA.
    
    Specifically, the code path for performing xfrm_migrate is:
      Stage 1: find policy to migrate with
        xfrm_migrate_policy_find(sel, dir, type, net)
      Stage 2: find and update state(s) with
        xfrm_migrate_state_find(mp, net)
      Stage 3: update endpoint address(es) of template(s) with
        xfrm_policy_migrate(pol, m, num_migrate)
    
    Currently "Stage 1" always returns the first xfrm_policy that
    matches, and "Stage 3" looks for the xfrm_tmpl that matches the
    old endpoint address. Thus if there are multiple xfrm_policy
    with same selector, direction, type and net, "Stage 1" might
    rertun a wrong xfrm_policy and "Stage 3" will fail with ENODATA
    because it cannot find a xfrm_tmpl with the matching endpoint
    address.
    
    The fix is to allow userspace to pass an if_id and add if_id
    to the matching rule in Stage 1 and Stage 2 since if_id is a
    unique ID for xfrm_policy and xfrm_state. For compatibility,
    if_id will only be checked if the attribute is set.
    
    Tested with additions to Android's kernel unit test suite:
    https://android-review.googlesource.com/c/kernel/tests/+/1668886
    
    Signed-off-by: Yan Yan <evitayan@google.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0ad6f021f6c354ab8daf29ec10f3c2340918d5d3
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Oct 20 07:42:43 2021 -0400

    sctp: fix the processing for INIT_ACK chunk
    
    commit 438b95a7c98f77d51cbf4db021f41b602d750a3f upstream.
    
    Currently INIT_ACK chunk in non-cookie_echoed state is processed in
    sctp_sf_discard_chunk() to send an abort with the existent asoc's
    vtag if the chunk length is not valid. But the vtag in the chunk's
    sctphdr is not verified, which may be exploited by one to cook a
    malicious chunk to terminal a SCTP asoc.
    
    sctp_sf_discard_chunk() also is called in many other places to send
    an abort, and most of those have this problem. This patch is to fix
    it by sending abort with the existent asoc's vtag only if the vtag
    from the chunk's sctphdr is verified in sctp_sf_discard_chunk().
    
    Note on sctp_sf_do_9_1_abort() and sctp_sf_shutdown_pending_abort(),
    the chunk length has been verified before sctp_sf_discard_chunk(),
    so replace it with sctp_sf_discard(). On sctp_sf_do_asconf_ack() and
    sctp_sf_do_asconf(), move the sctp_chunk_length_valid check ahead of
    sctp_sf_discard_chunk(), then replace it with sctp_sf_discard().
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59e2c108bf5ff90db5310ce749f57e37f6d3da38
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Oct 20 07:42:42 2021 -0400

    sctp: fix the processing for INIT chunk
    
    commit eae5783908042a762c24e1bd11876edb91d314b1 upstream.
    
    This patch fixes the problems below:
    
    1. In non-shutdown_ack_sent states: in sctp_sf_do_5_1B_init() and
       sctp_sf_do_5_2_2_dupinit():
    
      chunk length check should be done before any checks that may cause
      to send abort, as making packet for abort will access the init_tag
      from init_hdr in sctp_ootb_pkt_new().
    
    2. In shutdown_ack_sent state: in sctp_sf_do_9_2_reshutack():
    
      The same checks as does in sctp_sf_do_5_2_2_dupinit() is needed
      for sctp_sf_do_9_2_reshutack().
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8c9220cc0fb0dcdcce140533cc46128bd836347
Author: Kai Lueke <kailueke@linux.microsoft.com>
Date:   Thu Mar 3 15:55:10 2022 +0100

    Revert "xfrm: state and policy should fail if XFRMA_IF_ID 0"
    
    commit a3d9001b4e287fc043e5539d03d71a32ab114bcb upstream.
    
    This reverts commit 68ac0f3810e76a853b5f7b90601a05c3048b8b54 because ID
    0 was meant to be used for configuring the policy/state without
    matching for a specific interface (e.g., Cilium is affected, see
    https://github.com/cilium/cilium/pull/18789 and
    https://github.com/cilium/cilium/pull/19019).
    
    Signed-off-by: Kai Lueke <kailueke@linux.microsoft.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>