commit eb967e323f7fb073c51401070f7d2cb381a003f7
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Dec 29 12:26:08 2021 +0100

    Linux 5.10.89
    
    Link: https://lore.kernel.org/r/20211227151324.694661623@linuxfoundation.org
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Hulk Robot <hulkrobot@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52ad5da8e316fa11e3a50b3f089aa63e4089bf52
Author: Rémi Denis-Courmont <remi@remlab.net>
Date:   Sun Dec 19 19:03:39 2021 +0200

    phonet/pep: refuse to enable an unbound pipe
    
    commit 75a2f31520095600f650597c0ac41f48b5ba0068 upstream.
    
    This ioctl() implicitly assumed that the socket was already bound to
    a valid local socket name, i.e. Phonet object. If the socket was not
    bound, two separate problems would occur:
    
    1) We'd send an pipe enablement request with an invalid source object.
    2) Later socket calls could BUG on the socket unexpectedly being
       connected yet not bound to a valid object.
    
    Reported-by: syzbot+2dc91e7fc3dea88b1e8a@syzkaller.appspotmail.com
    Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7dd52af1eb5798f590d9d9e1c56ed8f5744ee0ca
Author: Lin Ma <linma@zju.edu.cn>
Date:   Fri Dec 17 10:13:56 2021 +0800

    hamradio: improve the incomplete fix to avoid NPD
    
    commit b2f37aead1b82a770c48b5d583f35ec22aabb61e upstream.
    
    The previous commit 3e0588c291d6 ("hamradio: defer ax25 kfree after
    unregister_netdev") reorder the kfree operations and unregister_netdev
    operation to prevent UAF.
    
    This commit improves the previous one by also deferring the nullify of
    the ax->tty pointer. Otherwise, a NULL pointer dereference bug occurs.
    Partial of the stack trace is shown below.
    
    BUG: kernel NULL pointer dereference, address: 0000000000000538
    RIP: 0010:ax_xmit+0x1f9/0x400
    ...
    Call Trace:
     dev_hard_start_xmit+0xec/0x320
     sch_direct_xmit+0xea/0x240
     __qdisc_run+0x166/0x5c0
     __dev_queue_xmit+0x2c7/0xaf0
     ax25_std_establish_data_link+0x59/0x60
     ax25_connect+0x3a0/0x500
     ? security_socket_connect+0x2b/0x40
     __sys_connect+0x96/0xc0
     ? __hrtimer_init+0xc0/0xc0
     ? common_nsleep+0x2e/0x50
     ? switch_fpu_return+0x139/0x1a0
     __x64_sys_connect+0x11/0x20
     do_syscall_64+0x33/0x40
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    The crash point is shown as below
    
    static void ax_encaps(...) {
      ...
      set_bit(TTY_DO_WRITE_WAKEUP, &ax->tty->flags); // ax->tty = NULL!
      ...
    }
    
    By placing the nullify action after the unregister_netdev, the ax->tty
    pointer won't be assigned as NULL net_device framework layer is well
    synchronized.
    
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 450121075a6a6f1d50f97225d3396315309d61a1
Author: Lin Ma <linma@zju.edu.cn>
Date:   Mon Nov 8 18:37:21 2021 +0800

    hamradio: defer ax25 kfree after unregister_netdev
    
    commit 3e0588c291d6ce225f2b891753ca41d45ba42469 upstream.
    
    There is a possible race condition (use-after-free) like below
    
     (USE)                       |  (FREE)
    ax25_sendmsg                 |
     ax25_queue_xmit             |
      dev_queue_xmit             |
       __dev_queue_xmit          |
        __dev_xmit_skb           |
         sch_direct_xmit         | ...
          xmit_one               |
           netdev_start_xmit     | tty_ldisc_kill
            __netdev_start_xmit  |  mkiss_close
             ax_xmit             |   kfree
              ax_encaps          |
                                 |
    
    Even though there are two synchronization primitives before the kfree:
    1. wait_for_completion(&ax->dead). This can prevent the race with
    routines from mkiss_ioctl. However, it cannot stop the routine coming
    from upper layer, i.e., the ax25_sendmsg.
    
    2. netif_stop_queue(ax->dev). It seems that this line of code aims to
    halt the transmit queue but it fails to stop the routine that already
    being xmit.
    
    This patch reorder the kfree after the unregister_netdev to avoid the
    possible UAF as the unregister_netdev() is well synchronized and won't
    return if there is a running routine.
    
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e34d07dd4d9f7811d8ae35adee24e78a4576844
Author: Lin Ma <linma@zju.edu.cn>
Date:   Fri Dec 17 10:29:41 2021 +0800

    ax25: NPD bug when detaching AX25 device
    
    commit 1ade48d0c27d5da1ccf4b583d8c5fc8b534a3ac8 upstream.
    
    The existing cleanup routine implementation is not well synchronized
    with the syscall routine. When a device is detaching, below race could
    occur.
    
    static int ax25_sendmsg(...) {
      ...
      lock_sock()
      ax25 = sk_to_ax25(sk);
      if (ax25->ax25_dev == NULL) // CHECK
      ...
      ax25_queue_xmit(skb, ax25->ax25_dev->dev); // USE
      ...
    }
    
    static void ax25_kill_by_device(...) {
      ...
      if (s->ax25_dev == ax25_dev) {
        s->ax25_dev = NULL;
        ...
    }
    
    Other syscall functions like ax25_getsockopt, ax25_getname,
    ax25_info_show also suffer from similar races. To fix them, this patch
    introduce lock_sock() into ax25_kill_by_device in order to guarantee
    that the nullify action in cleanup routine cannot proceed when another
    socket request is pending.
    
    Signed-off-by: Hanjie Wu <nagi@zju.edu.cn>
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50f78486f90b91484001bfccc652d66fc308255a
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Fri Dec 3 13:42:22 2021 -0800

    hwmon: (lm90) Do not report 'busy' status bit as alarm
    
    commit cdc5287acad9ede121924a9c9313544b80d15842 upstream.
    
    Bit 7 of the status register indicates that the chip is busy
    doing a conversion. It does not indicate an alarm status.
    Stop reporting it as alarm status bit.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec1d222d37eaf6b2d2dbdcf2c4eb7903fd74fc1e
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Fri Nov 26 22:43:39 2021 -0800

    hwmom: (lm90) Fix citical alarm status for MAX6680/MAX6681
    
    commit da7dc0568491104c7acb632e9d41ddce9aaabbb1 upstream.
    
    Tests with a real chip and a closer look into the datasheet reveals
    that the local and remote critical alarm status bits are swapped for
    MAX6680/MAX6681.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 441d3873664d170982922c5d2fc01fa89d9439ed
Author: Guodong Liu <guodong.liu@mediatek.corp-partner.google.com>
Date:   Wed Nov 10 15:19:00 2021 +0800

    pinctrl: mediatek: fix global-out-of-bounds issue
    
    commit 2d5446da5acecf9c67db1c9d55ae2c3e5de01f8d upstream.
    
    When eint virtual eint number is greater than gpio number,
    it maybe produce 'desc[eint_n]' size globle-out-of-bounds issue.
    
    Signed-off-by: Guodong Liu <guodong.liu@mediatek.corp-partner.google.com>
    Signed-off-by: Zhiyong Tao <zhiyong.tao@mediatek.com>
    Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
    Link: https://lore.kernel.org/r/20211110071900.4490-2-zhiyong.tao@mediatek.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c75a9657bdc643e78719ecb139ebff4d5aefe53
Author: Derek Fang <derek.fang@realtek.com>
Date:   Tue Dec 14 18:50:33 2021 +0800

    ASoC: rt5682: fix the wrong jack type detected
    
    commit 8deb34a90f06374fd26f722c2a79e15160f66be7 upstream.
    
    Some powers were changed during the jack insert detection
    and clk's enable/disable in CCF.
    If in parallel, the influence has a chance to detect
    the wrong jack type, so add a lock.
    
    Signed-off-by: Derek Fang <derek.fang@realtek.com>
    Link: https://lore.kernel.org/r/20211214105033.471-1-derek.fang@realtek.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94caab5af19a295cbec1d7fa6e8b7310f058317f
Author: Martin Povišer <povik@protonmail.com>
Date:   Mon Dec 6 22:45:43 2021 +0000

    ASoC: tas2770: Fix setting of high sample rates
    
    commit 80d5be1a057e05f01d66e986cfd34d71845e5190 upstream.
    
    Although the codec advertises support for 176.4 and 192 ksps, without
    this fix setting those sample rates fails with EINVAL at hw_params time.
    
    Signed-off-by: Martin Povišer <povik@protonmail.com>
    Link: https://lore.kernel.org/r/20211206224529.74656-1-povik@protonmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7282790c782f5216c50b6b83b815f03c48e73ad
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Dec 6 23:29:27 2021 -0800

    Input: goodix - add id->model mapping for the "9111" model
    
    commit 81e818869be522bc8fa6f7df1b92d7e76537926c upstream.
    
    Add d->model mapping for the "9111" model, this fixes uses using
    a wrong config_len of 240 bytes while the "9111" model uses
    only 186 bytes of config.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20211206164747.197309-2-hdegoede@redhat.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3bb3bf50d69f7fab57c5af293c745b586945f70d
Author: Johnny Chuang <johnny.chuang.emc@gmail.com>
Date:   Mon Dec 20 00:28:45 2021 -0800

    Input: elants_i2c - do not check Remark ID on eKTH3900/eKTH5312
    
    commit 4ebfee2bbc1a9c343dd50565ba5ae249fac32267 upstream.
    
    The eKTH3900/eKTH5312 series do not support the firmware update rules of
    Remark ID. Exclude these two series from checking it when updating the
    firmware in touch controllers.
    
    Signed-off-by: Johnny Chuang <johnny.chuang.emc@gmail.com>
    Link: https://lore.kernel.org/r/1639619603-20616-1-git-send-email-johnny.chuang.emc@gmail.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee6f34215c5dfa2257298cc362cd79e14af5a25a
Author: Andrey Ryabinin <arbn@yandex-team.com>
Date:   Fri Dec 24 21:12:35 2021 -0800

    mm: mempolicy: fix THP allocations escaping mempolicy restrictions
    
    commit 338635340669d5b317c7e8dcf4fff4a0f3651d87 upstream.
    
    alloc_pages_vma() may try to allocate THP page on the local NUMA node
    first:
    
            page = __alloc_pages_node(hpage_node,
                    gfp | __GFP_THISNODE | __GFP_NORETRY, order);
    
    And if the allocation fails it retries allowing remote memory:
    
            if (!page && (gfp & __GFP_DIRECT_RECLAIM))
                    page = __alloc_pages_node(hpage_node,
                                            gfp, order);
    
    However, this retry allocation completely ignores memory policy nodemask
    allowing allocation to escape restrictions.
    
    The first appearance of this bug seems to be the commit ac5b2c18911f
    ("mm: thp: relax __GFP_THISNODE for MADV_HUGEPAGE mappings").
    
    The bug disappeared later in the commit 89c83fb539f9 ("mm, thp:
    consolidate THP gfp handling into alloc_hugepage_direct_gfpmask") and
    reappeared again in slightly different form in the commit 76e654cc91bb
    ("mm, page_alloc: allow hugepage fallback to remote nodes when
    madvised")
    
    Fix this by passing correct nodemask to the __alloc_pages() call.
    
    The demonstration/reproducer of the problem:
    
        $ mount -oremount,size=4G,huge=always /dev/shm/
        $ echo always > /sys/kernel/mm/transparent_hugepage/defrag
        $ cat mbind_thp.c
        #include <unistd.h>
        #include <sys/mman.h>
        #include <sys/stat.h>
        #include <fcntl.h>
        #include <assert.h>
        #include <stdlib.h>
        #include <stdio.h>
        #include <numaif.h>
    
        #define SIZE 2ULL << 30
        int main(int argc, char **argv)
        {
            int fd;
            unsigned long long i;
            char *addr;
            pid_t pid;
            char buf[100];
            unsigned long nodemask = 1;
    
            fd = open("/dev/shm/test", O_RDWR|O_CREAT);
            assert(fd > 0);
            assert(ftruncate(fd, SIZE) == 0);
    
            addr = mmap(NULL, SIZE, PROT_READ|PROT_WRITE,
                               MAP_SHARED, fd, 0);
    
            assert(mbind(addr, SIZE, MPOL_BIND, &nodemask, 2, MPOL_MF_STRICT|MPOL_MF_MOVE)==0);
            for (i = 0; i < SIZE; i+=4096) {
              addr[i] = 1;
            }
            pid = getpid();
            snprintf(buf, sizeof(buf), "grep shm /proc/%d/numa_maps", pid);
            system(buf);
            sleep(10000);
    
            return 0;
        }
        $ gcc mbind_thp.c -o mbind_thp -lnuma
        $ numactl -H
        available: 2 nodes (0-1)
        node 0 cpus: 0 2
        node 0 size: 1918 MB
        node 0 free: 1595 MB
        node 1 cpus: 1 3
        node 1 size: 2014 MB
        node 1 free: 1731 MB
        node distances:
        node   0   1
          0:  10  20
          1:  20  10
        $ rm -f /dev/shm/test; taskset -c 0 ./mbind_thp
        7fd970a00000 bind:0 file=/dev/shm/test dirty=524288 active=0 N0=396800 N1=127488 kernelpagesize_kB=4
    
    Link: https://lkml.kernel.org/r/20211208165343.22349-1-arbn@yandex-team.com
    Fixes: ac5b2c18911f ("mm: thp: relax __GFP_THISNODE for MADV_HUGEPAGE mappings")
    Signed-off-by: Andrey Ryabinin <arbn@yandex-team.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Mel Gorman <mgorman@techsingularity.net>
    Acked-by: David Rientjes <rientjes@google.com>
    Cc: Andrea Arcangeli <aarcange@redhat.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 8008fc1d0be1c381aa8077dfab2d980188611ae2
Author: Sean Christopherson <seanjc@google.com>
Date:   Tue Dec 7 19:30:05 2021 +0000

    KVM: VMX: Fix stale docs for kvm-intel.emulate_invalid_guest_state
    
    commit 0ff29701ffad9a5d5a24344d8b09f3af7b96ffda upstream.
    
    Update the documentation for kvm-intel's emulate_invalid_guest_state to
    rectify the description of KVM's default behavior, and to document that
    the behavior and thus parameter only applies to L1.
    
    Fixes: a27685c33acc ("KVM: VMX: Emulate invalid guest state by default")
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20211207193006.120997-4-seanjc@google.com>
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d91ed251fd7065b57d6c60964d15562fc4e73f7d
Author: Marian Postevca <posteuca@mutex.one>
Date:   Sat Dec 4 23:49:12 2021 +0200

    usb: gadget: u_ether: fix race in setting MAC address in setup phase
    
    commit 890d5b40908bfd1a79be018d2d297cf9df60f4ee upstream.
    
    When listening for notifications through netlink of a new interface being
    registered, sporadically, it is possible for the MAC to be read as zero.
    The zero MAC address lasts a short period of time and then switches to a
    valid random MAC address.
    
    This causes problems for netd in Android, which assumes that the interface
    is malfunctioning and will not use it.
    
    In the good case we get this log:
    InterfaceController::getCfg() ifName usb0
     hwAddr 92:a8:f0:73:79:5b ipv4Addr 0.0.0.0 flags 0x1002
    
    In the error case we get these logs:
    InterfaceController::getCfg() ifName usb0
     hwAddr 00:00:00:00:00:00 ipv4Addr 0.0.0.0 flags 0x1002
    
    netd : interfaceGetCfg("usb0")
    netd : interfaceSetCfg() -> ServiceSpecificException
     (99, "[Cannot assign requested address] : ioctl() failed")
    
    The reason for the issue is the order in which the interface is setup,
    it is first registered through register_netdev() and after the MAC
    address is set.
    
    Fixed by first setting the MAC address of the net_device and after that
    calling register_netdev().
    
    Fixes: bcd4a1c40bee885e ("usb: gadget: u_ether: construct with default values and add setters/getters")
    Cc: stable@vger.kernel.org
    Signed-off-by: Marian Postevca <posteuca@mutex.one>
    Link: https://lore.kernel.org/r/20211204214912.17627-1-posteuca@mutex.one
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6697f29bf56b6bd07ddf1218f2f8a48601a4b75f
Author: Christian Brauner <christian.brauner@ubuntu.com>
Date:   Mon Nov 29 12:16:39 2021 +0100

    ceph: fix up non-directory creation in SGID directories
    
    commit fd84bfdddd169c219c3a637889a8b87f70a072c2 upstream.
    
    Ceph always inherits the SGID bit if it is set on the parent inode,
    while the generic inode_init_owner does not do this in a few cases where
    it can create a possible security problem (cf. [1]).
    
    Update ceph to strip the SGID bit just as inode_init_owner would.
    
    This bug was detected by the mapped mount testsuite in [3]. The
    testsuite tests all core VFS functionality and semantics with and
    without mapped mounts. That is to say it functions as a generic VFS
    testsuite in addition to a mapped mount testsuite. While working on
    mapped mount support for ceph, SIGD inheritance was the only failing
    test for ceph after the port.
    
    The same bug was detected by the mapped mount testsuite in XFS in
    January 2021 (cf. [2]).
    
    [1]: commit 0fa3ecd87848 ("Fix up non-directory creation in SGID directories")
    [2]: commit 01ea173e103e ("xfs: fix up non-directory creation in SGID directories")
    [3]: https://git.kernel.org/fs/xfs/xfstests-dev.git
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fffb6581a23add416239dfcf7e7f3980c6b913da
Author: Chao Yu <chao@kernel.org>
Date:   Sun Dec 12 17:16:30 2021 +0800

    f2fs: fix to do sanity check on last xattr entry in __f2fs_setxattr()
    
    commit 5598b24efaf4892741c798b425d543e4bed357a1 upstream.
    
    As Wenqing Liu reported in bugzilla:
    
    https://bugzilla.kernel.org/show_bug.cgi?id=215235
    
    - Overview
    page fault in f2fs_setxattr() when mount and operate on corrupted image
    
    - Reproduce
    tested on kernel 5.16-rc3, 5.15.X under root
    
    1. unzip tmp7.zip
    2. ./single.sh f2fs 7
    
    Sometimes need to run the script several times
    
    - Kernel dump
    loop0: detected capacity change from 0 to 131072
    F2FS-fs (loop0): Found nat_bits in checkpoint
    F2FS-fs (loop0): Mounted with checkpoint version = 7548c2ee
    BUG: unable to handle page fault for address: ffffe47bc7123f48
    RIP: 0010:kfree+0x66/0x320
    Call Trace:
     __f2fs_setxattr+0x2aa/0xc00 [f2fs]
     f2fs_setxattr+0xfa/0x480 [f2fs]
     __f2fs_set_acl+0x19b/0x330 [f2fs]
     __vfs_removexattr+0x52/0x70
     __vfs_removexattr_locked+0xb1/0x140
     vfs_removexattr+0x56/0x100
     removexattr+0x57/0x80
     path_removexattr+0xa3/0xc0
     __x64_sys_removexattr+0x17/0x20
     do_syscall_64+0x37/0xb0
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    The root cause is in __f2fs_setxattr(), we missed to do sanity check on
    last xattr entry, result in out-of-bound memory access during updating
    inconsistent xattr data of target inode.
    
    After the fix, it can detect such xattr inconsistency as below:
    
    F2FS-fs (loop11): inode (7) has invalid last xattr entry, entry_size: 60676
    F2FS-fs (loop11): inode (8) has corrupted xattr
    F2FS-fs (loop11): inode (8) has corrupted xattr
    F2FS-fs (loop11): inode (8) has invalid last xattr entry, entry_size: 47736
    
    Cc: stable@vger.kernel.org
    Reported-by: Wenqing Liu <wenqingliu0120@gmail.com>
    Signed-off-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad338d825e3f7b96ee542bf313728af2d19fe9ad
Author: Sumit Garg <sumit.garg@linaro.org>
Date:   Thu Dec 16 11:17:25 2021 +0530

    tee: optee: Fix incorrect page free bug
    
    commit 18549bf4b21c739a9def39f27dcac53e27286ab5 upstream.
    
    Pointer to the allocated pages (struct page *page) has already
    progressed towards the end of allocation. It is incorrect to perform
    __free_pages(page, order) using this pointer as we would free any
    arbitrary pages. Fix this by stop modifying the page pointer.
    
    Fixes: ec185dd3ab25 ("optee: Fix memory leak when failing to register shm pages")
    Cc: stable@vger.kernel.org
    Reported-by: Patrik Lantz <patrik.lantz@axis.com>
    Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
    Reviewed-by: Tyler Hicks <tyhicks@linux.microsoft.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f207076740101fed87074a6bc924dbe806f08a5
Author: Liu Shixin <liushixin2@huawei.com>
Date:   Fri Dec 24 21:12:58 2021 -0800

    mm/hwpoison: clear MF_COUNT_INCREASED before retrying get_any_page()
    
    commit 2a57d83c78f889bf3f54eede908d0643c40d5418 upstream.
    
    Hulk Robot reported a panic in put_page_testzero() when testing
    madvise() with MADV_SOFT_OFFLINE.  The BUG() is triggered when retrying
    get_any_page().  This is because we keep MF_COUNT_INCREASED flag in
    second try but the refcnt is not increased.
    
        page dumped because: VM_BUG_ON_PAGE(page_ref_count(page) == 0)
        ------------[ cut here ]------------
        kernel BUG at include/linux/mm.h:737!
        invalid opcode: 0000 [#1] PREEMPT SMP
        CPU: 5 PID: 2135 Comm: sshd Tainted: G    B             5.16.0-rc6-dirty #373
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014
        RIP: release_pages+0x53f/0x840
        Call Trace:
          free_pages_and_swap_cache+0x64/0x80
          tlb_flush_mmu+0x6f/0x220
          unmap_page_range+0xe6c/0x12c0
          unmap_single_vma+0x90/0x170
          unmap_vmas+0xc4/0x180
          exit_mmap+0xde/0x3a0
          mmput+0xa3/0x250
          do_exit+0x564/0x1470
          do_group_exit+0x3b/0x100
          __do_sys_exit_group+0x13/0x20
          __x64_sys_exit_group+0x16/0x20
          do_syscall_64+0x34/0x80
          entry_SYSCALL_64_after_hwframe+0x44/0xae
        Modules linked in:
        ---[ end trace e99579b570fe0649 ]---
        RIP: 0010:release_pages+0x53f/0x840
    
    Link: https://lkml.kernel.org/r/20211221074908.3910286-1-liushixin2@huawei.com
    Fixes: b94e02822deb ("mm,hwpoison: try to narrow window race for free pages")
    Signed-off-by: Liu Shixin <liushixin2@huawei.com>
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Reviewed-by: Oscar Salvador <osalvador@suse.de>
    Acked-by: Naoya Horiguchi <naoya.horiguchi@nec.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 ac61b9c6c0549aaeb98194cf429d93c41bfe5f79
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Dec 20 10:22:40 2021 +0100

    mac80211: fix locking in ieee80211_start_ap error path
    
    commit 87a270625a89fc841f1a7e21aae6176543d8385c upstream.
    
    We need to hold the local->mtx to release the channel context,
    as even encoded by the lockdep_assert_held() there. Fix it.
    
    Cc: stable@vger.kernel.org
    Fixes: 295b02c4be74 ("mac80211: Add FILS discovery support")
    Reported-and-tested-by: syzbot+11c342e5e30e9539cabd@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20211220090836.cee3d59a1915.I36bba9b79dc2ff4d57c3c7aa30dff9a003fe8c5c@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 89876d10830db6ac55ae4379764c9e9dd1268277
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Wed Dec 15 09:31:36 2021 +0100

    ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling
    
    commit 8536a5ef886005bc443c2da9b842d69fd3d7647f upstream.
    
    The Thumb2 version of the FP exception handling entry code treats the
    register holding the CP number (R8) differently, resulting in the iWMMXT
    CP number check to be incorrect.
    
    Fix this by unifying the ARM and Thumb2 code paths, and switch the
    order of the additions of the TI_USED_CP offset and the shifted CP
    index.
    
    Cc: <stable@vger.kernel.org>
    Fixes: b86040a59feb ("Thumb-2: Implementation of the unified start-up and exceptions code")
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3253d3a38bc1f60caae6d06506cfc3b72b0ba11
Author: Yann Gautier <yann.gautier@foss.st.com>
Date:   Wed Dec 15 15:17:26 2021 +0100

    mmc: mmci: stm32: clear DLYB_CR after sending tuning command
    
    commit ff31ee0a0f471776f67be5e5275c18d17736fc6b upstream.
    
    During test campaign, and especially after several unbind/bind sequences,
    it has been seen that the SD-card on SDMMC1 thread could freeze.
    The freeze always appear on a CMD23 following a CMD19.
    Checking SDMMC internal registers shows that the tuning command (CMD19)
    has failed.
    The freeze is then due to the delay block involved in the tuning sequence.
    To correct this, clear the delay block register DLYB_CR register after
    the tuning commands.
    
    Signed-off-by: Christophe Kerello <christophe.kerello@foss.st.com>
    Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Fixes: 1103f807a3b9 ("mmc: mmci_sdmmc: Add execute tuning with delay block")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211215141727.4901-4-yann.gautier@foss.st.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d66b395210c5084c2b7324945062c1d1f95487a
Author: Ulf Hansson <ulf.hansson@linaro.org>
Date:   Fri Dec 3 15:15:54 2021 +0100

    mmc: core: Disable card detect during shutdown
    
    commit 66c915d09b942fb3b2b0cb2f56562180901fba17 upstream.
    
    It's seems prone to problems by allowing card detect and its corresponding
    mmc_rescan() work to run, during platform shutdown. For example, we may end
    up turning off the power while initializing a card, which potentially could
    damage it.
    
    To avoid this scenario, let's add ->shutdown_pre() callback for the mmc host
    class device and then turn of the card detect from there.
    
    Reported-by: Al Cooper <alcooperx@gmail.com>
    Suggested-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211203141555.105351-1-ulf.hansson@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8e366a01c20019a631d1aa151a918d67757ab8d
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Sun Dec 19 16:34:41 2021 +0100

    mmc: meson-mx-sdhc: Set MANUAL_STOP for multi-block SDIO commands
    
    commit f89b548ca66be7500dcd92ee8e61590f7d08ac91 upstream.
    
    The vendor driver implements special handling for multi-block
    SD_IO_RW_EXTENDED (and SD_IO_RW_DIRECT) commands which have data
    attached to them. It sets the MANUAL_STOP bit in the MESON_SDHC_MISC
    register for these commands. In all other cases this bit is cleared.
    Here we omit SD_IO_RW_DIRECT since that command never has any data
    attached to it.
    
    This fixes SDIO wifi using the brcmfmac driver which reported the
    following error without this change on a Netxeon S82 board using a
    Meson8 (S802) SoC:
      brcmf_fw_alloc_request: using brcm/brcmfmac43362-sdio for chip
                              BCM43362/1
      brcmf_sdiod_ramrw: membytes transfer failed
      brcmf_sdio_download_code_file: error -110 on writing 219557 membytes
                                     at 0x00000000
      brcmf_sdio_download_firmware: dongle image file download failed
    
    And with this change:
      brcmf_fw_alloc_request: using brcm/brcmfmac43362-sdio for chip
                              BCM43362/1
      brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may
                                have limited channels available
      brcmf_c_preinit_dcmds: Firmware: BCM43362/1 wl0: Apr 22 2013 14:50:00
                             version 5.90.195.89.6 FWID 01-b30a427d
    
    Fixes: e4bf1b0970ef96 ("mmc: host: meson-mx-sdhc: new driver for the Amlogic Meson SDHC host")
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211219153442.463863-2-martin.blumenstingl@googlemail.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4af79153617bd14677a69b4f4c6bb13e3ece2708
Author: Prathamesh Shete <pshete@nvidia.com>
Date:   Tue Dec 14 17:06:53 2021 +0530

    mmc: sdhci-tegra: Fix switch to HS400ES mode
    
    commit 4fc7261dbab139d3c64c3b618262504e16cfe7ee upstream.
    
    When CMD13 is sent after switching to HS400ES mode, the bus
    is operating at either MMC_HIGH_26_MAX_DTR or MMC_HIGH_52_MAX_DTR.
    To meet Tegra SDHCI requirement at HS400ES mode, force SDHCI
    interface clock to MMC_HS200_MAX_DTR (200 MHz) so that host
    controller CAR clock and the interface clock are rate matched.
    
    Signed-off-by: Prathamesh Shete <pshete@nvidia.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Fixes: dfc9700cef77 ("mmc: tegra: Implement HS400 enhanced strobe")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211214113653.4631-1-pshete@nvidia.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a7ec7979785e97b33a6bbd79b95faa20e4882bb
Author: Noralf Trønnes <noralf@tronnes.org>
Date:   Mon Oct 18 13:22:01 2021 +0200

    gpio: dln2: Fix interrupts when replugging the device
    
    commit 9a5875f14b0e3a13ae314883f1bb72b7f31fac07 upstream.
    
    When replugging the device the following message shows up:
    
    gpio gpiochip2: (dln2): detected irqchip that is shared with multiple gpiochips: please fix the driver.
    
    This also has the effect that interrupts won't work.
    The same problem would also show up if multiple devices where plugged in.
    
    Fix this by allocating the irq_chip data structure per instance like other
    drivers do.
    
    I don't know when this problem appeared, but it is present in 5.10.
    
    Cc: <stable@vger.kernel.org> # 5.10+
    Cc: Daniel Baluta <daniel.baluta@gmail.com>
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5b02912e2dd89fe2386c19edd2c6f3e1296fc2b
Author: Fabien Dessenne <fabien.dessenne@foss.st.com>
Date:   Wed Dec 15 10:58:08 2021 +0100

    pinctrl: stm32: consider the GPIO offset to expose all the GPIO lines
    
    commit b67210cc217f9ca1c576909454d846970c13dfd4 upstream.
    
    Consider the GPIO controller offset (from "gpio-ranges") to compute the
    maximum GPIO line number.
    This fixes an issue where gpio-ranges uses a non-null offset.
      e.g.: gpio-ranges = <&pinctrl 6 86 10>
            In that case the last valid GPIO line is not 9 but 15 (6 + 10 - 1)
    
    Cc: stable@vger.kernel.org
    Fixes: 67e2996f72c7 ("pinctrl: stm32: fix the reported number of GPIO lines per bank")
    Reported-by: Christoph Fritz <chf.fritz@googlemail.com>
    Signed-off-by: Fabien Dessenne <fabien.dessenne@foss.st.com>
    Link: https://lore.kernel.org/r/20211215095808.621716-1-fabien.dessenne@foss.st.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28626e76baf50e6b37d8a92564844d873aa6b51f
Author: Sean Christopherson <seanjc@google.com>
Date:   Tue Dec 21 10:37:00 2021 -0500

    KVM: VMX: Wake vCPU when delivering posted IRQ even if vCPU == this vCPU
    
    commit fdba608f15e2427419997b0898750a49a735afcb upstream.
    
    Drop a check that guards triggering a posted interrupt on the currently
    running vCPU, and more importantly guards waking the target vCPU if
    triggering a posted interrupt fails because the vCPU isn't IN_GUEST_MODE.
    If a vIRQ is delivered from asynchronous context, the target vCPU can be
    the currently running vCPU and can also be blocking, in which case
    skipping kvm_vcpu_wake_up() is effectively dropping what is supposed to
    be a wake event for the vCPU.
    
    The "do nothing" logic when "vcpu == running_vcpu" mostly works only
    because the majority of calls to ->deliver_posted_interrupt(), especially
    when using posted interrupts, come from synchronous KVM context.  But if
    a device is exposed to the guest using vfio-pci passthrough, the VFIO IRQ
    and vCPU are bound to the same pCPU, and the IRQ is _not_ configured to
    use posted interrupts, wake events from the device will be delivered to
    KVM from IRQ context, e.g.
    
      vfio_msihandler()
      |
      |-> eventfd_signal()
          |
          |-> ...
              |
              |->  irqfd_wakeup()
                   |
                   |->kvm_arch_set_irq_inatomic()
                      |
                      |-> kvm_irq_delivery_to_apic_fast()
                          |
                          |-> kvm_apic_set_irq()
    
    This also aligns the non-nested and nested usage of triggering posted
    interrupts, and will allow for additional cleanups.
    
    Fixes: 379a3c8ee444 ("KVM: VMX: Optimize posted-interrupt delivery for timer fastpath")
    Cc: stable@vger.kernel.org
    Reported-by: Longpeng (Mike) <longpeng2@huawei.com>
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Message-Id: <20211208015236.1616697-18-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a37f2e370699e2feca3dca6c8178c71ceee7e8a
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Dec 22 11:50:23 2021 +0100

    platform/x86: intel_pmc_core: fix memleak on registration failure
    
    commit 26a8b09437804fabfb1db080d676b96c0de68e7c upstream.
    
    In case device registration fails during module initialisation, the
    platform device structure needs to be freed using platform_device_put()
    to properly free all resources (e.g. the device name).
    
    Fixes: 938835aa903a ("platform/x86: intel_pmc_core: do not create a static struct device")
    Cc: stable@vger.kernel.org      # 5.9
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Link: https://lore.kernel.org/r/20211222105023.6205-1-johan@kernel.org
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b57afd124046065be7f4ca36bac610f059ad222a
Author: Andrew Cooper <andrew.cooper3@citrix.com>
Date:   Thu Dec 16 00:08:56 2021 +0000

    x86/pkey: Fix undefined behaviour with PKRU_WD_BIT
    
    commit 57690554abe135fee81d6ac33cc94d75a7e224bb upstream.
    
    Both __pkru_allows_write() and arch_set_user_pkey_access() shift
    PKRU_WD_BIT (a signed constant) by up to 30 bits, hitting the
    sign bit.
    
    Use unsigned constants instead.
    
    Clearly pkey 15 has not been used in combination with UBSAN yet.
    
    Noticed by code inspection only.  I can't actually provoke the
    compiler into generating incorrect logic as far as this shift is
    concerned.
    
    [
      dhansen: add stable@ tag, plus minor changelog massaging,
    
               For anyone doing backports, these #defines were in
               arch/x86/include/asm/pgtable.h before 784a46618f6.
    ]
    
    Fixes: 33a709b25a76 ("mm/gup, x86/mm/pkeys: Check VMAs and PTEs for protection keys")
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20211216000856.4480-1-andrew.cooper3@citrix.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c05d8f66ec3470e5212c4d08c46d6cb5738d600d
Author: Jens Wiklander <jens.wiklander@linaro.org>
Date:   Thu Dec 9 15:59:37 2021 +0100

    tee: handle lookup of shm with reference count 0
    
    commit dfd0743f1d9ea76931510ed150334d571fbab49d upstream.
    
    Since the tee subsystem does not keep a strong reference to its idle
    shared memory buffers, it races with other threads that try to destroy a
    shared memory through a close of its dma-buf fd or by unmapping the
    memory.
    
    In tee_shm_get_from_id() when a lookup in teedev->idr has been
    successful, it is possible that the tee_shm is in the dma-buf teardown
    path, but that path is blocked by the teedev mutex. Since we don't have
    an API to tell if the tee_shm is in the dma-buf teardown path or not we
    must find another way of detecting this condition.
    
    Fix this by doing the reference counting directly on the tee_shm using a
    new refcount_t refcount field. dma-buf is replaced by using
    anon_inode_getfd() instead, this separates the life-cycle of the
    underlying file from the tee_shm. tee_shm_put() is updated to hold the
    mutex when decreasing the refcount to 0 and then remove the tee_shm from
    teedev->idr before releasing the mutex. This means that the tee_shm can
    never be found unless it has a refcount larger than 0.
    
    Fixes: 967c9cca2cc5 ("tee: generic TEE subsystem")
    Cc: stable@vger.kernel.org
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: Lars Persson <larper@axis.com>
    Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
    Reported-by: Patrik Lantz <patrik.lantz@axis.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ffb9f83e4f6e6a8b68f926173a8d0646b57bedf
Author: John David Anglin <dave.anglin@bell.net>
Date:   Tue Dec 21 13:33:16 2021 -0500

    parisc: Fix mask used to select futex spinlock
    
    commit d3a5a68cff47f6eead84504c3c28376b85053242 upstream.
    
    The address bits used to select the futex spinlock need to match those used in
    the LWS code in syscall.S. The mask 0x3f8 only selects 7 bits.  It should
    select 8 bits.
    
    This change fixes the glibc nptl/tst-cond24 and nptl/tst-cond25 tests.
    
    Signed-off-by: John David Anglin <dave.anglin@bell.net>
    Fixes: 53a42b6324b8 ("parisc: Switch to more fine grained lws locks")
    Cc: stable@vger.kernel.org # 5.10+
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5deeb9ad598b2b3b79c8d1455a276b3d9a8bac31
Author: John David Anglin <dave.anglin@bell.net>
Date:   Tue Dec 21 13:21:22 2021 -0500

    parisc: Correct completer in lws start
    
    commit 8f66fce0f46560b9e910787ff7ad0974441c4f9c upstream.
    
    The completer in the "or,ev %r1,%r30,%r30" instruction is reversed, so we are
    not clipping the LWS number when we are called from a 32-bit process (W=0).
    We need to nulify the following depdi instruction when the least-significant
    bit of %r30 is 1.
    
    If the %r20 register is not clipped, a user process could perform a LWS call
    that would branch to an undefined location in the kernel and potentially crash
    the machine.
    
    Signed-off-by: John David Anglin <dave.anglin@bell.net>
    Cc: stable@vger.kernel.org # 4.19+
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b745616ba8f2db389a59e5678fdbe28ad5883bf
Author: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Date:   Fri Dec 17 12:44:10 2021 -0300

    ipmi: fix initialization when workqueue allocation fails
    
    commit 75d70d76cb7b927cace2cb34265d68ebb3306b13 upstream.
    
    If the workqueue allocation fails, the driver is marked as not initialized,
    and timer and panic_notifier will be left registered.
    
    Instead of removing those when workqueue allocation fails, do the workqueue
    initialization before doing it, and cleanup srcu_struct if it fails.
    
    Fixes: 1d49eb91e86e ("ipmi: Move remove_work to dedicated workqueue")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
    Cc: Corey Minyard <cminyard@mvista.com>
    Cc: Ioanna Alifieraki <ioanna-maria.alifieraki@canonical.com>
    Cc: stable@vger.kernel.org
    Message-Id: <20211217154410.1228673-2-cascardo@canonical.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f6ab847461ce7dd89ae9db2dd4658c993355d7c
Author: Mian Yousaf Kaukab <ykaukab@suse.de>
Date:   Wed Dec 8 10:32:39 2021 +0100

    ipmi: ssif: initialize ssif_info->client early
    
    commit 34f35f8f14bc406efc06ee4ff73202c6fd245d15 upstream.
    
    During probe ssif_info->client is dereferenced in error path. However,
    it is set when some of the error checking has already been done. This
    causes following kernel crash if an error path is taken:
    
    [   30.645593][  T674] ipmi_ssif 0-000e: ipmi_ssif: Not probing, Interface already present
    [   30.657616][  T674] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000088
    ...
    [   30.657723][  T674] pc : __dev_printk+0x28/0xa0
    [   30.657732][  T674] lr : _dev_err+0x7c/0xa0
    ...
    [   30.657772][  T674] Call trace:
    [   30.657775][  T674]  __dev_printk+0x28/0xa0
    [   30.657778][  T674]  _dev_err+0x7c/0xa0
    [   30.657781][  T674]  ssif_probe+0x548/0x900 [ipmi_ssif 62ce4b08badc1458fd896206d9ef69a3c31f3d3e]
    [   30.657791][  T674]  i2c_device_probe+0x37c/0x3c0
    ...
    
    Initialize ssif_info->client before any error path can be taken. Clear
    i2c_client data in the error path to prevent the dangling pointer from
    leaking.
    
    Fixes: c4436c9149c5 ("ipmi_ssif: avoid registering duplicate ssif interface")
    Cc: stable@vger.kernel.org # 5.4.x
    Suggested-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Mian Yousaf Kaukab <ykaukab@suse.de>
    Message-Id: <20211208093239.4432-1-ykaukab@suse.de>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5192f31160c1739ef6525ed77d6aafa8e6565dd
Author: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Date:   Fri Dec 17 12:44:09 2021 -0300

    ipmi: bail out if init_srcu_struct fails
    
    commit 2b5160b12091285c5aca45980f100a9294af7b04 upstream.
    
    In case, init_srcu_struct fails (because of memory allocation failure), we
    might proceed with the driver initialization despite srcu_struct not being
    entirely initialized.
    
    Fixes: 913a89f009d9 ("ipmi: Don't initialize anything in the core until something uses it")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
    Cc: Corey Minyard <cminyard@mvista.com>
    Cc: stable@vger.kernel.org
    Message-Id: <20211217154410.1228673-1-cascardo@canonical.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc674f1b2119fcf36ca28a5f8170307be70de333
Author: José Expósito <jose.exposito89@gmail.com>
Date:   Sun Dec 12 21:01:49 2021 -0800

    Input: atmel_mxt_ts - fix double free in mxt_read_info_block
    
    commit 12f247ab590a08856441efdbd351cf2cc8f60a2d upstream.
    
    The "id_buf" buffer is stored in "data->raw_info_block" and freed by
    "mxt_free_object_table" in case of error.
    
    Return instead of jumping to avoid a double free.
    
    Addresses-Coverity-ID: 1474582 ("Double free")
    Fixes: 068bdb67ef74 ("Input: atmel_mxt_ts - fix the firmware update")
    Signed-off-by: José Expósito <jose.exposito89@gmail.com>
    Link: https://lore.kernel.org/r/20211212194257.68879-1-jose.exposito89@gmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30140e252fdb74884d5ef34f5e48d2fc6a79a433
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Mon Dec 6 22:08:04 2021 +0100

    ASoC: meson: aiu: Move AIU_I2S_MISC hold setting to aiu-fifo-i2s
    
    commit ee907afb0c39a41ee74b862882cfe12820c74b98 upstream.
    
    The out-of-tree vendor driver uses the following approach to set the
    AIU_I2S_MISC register:
    1) write AIU_MEM_I2S_START_PTR and AIU_MEM_I2S_RD_PTR
    2) configure AIU_I2S_MUTE_SWAP[15:0]
    3) write AIU_MEM_I2S_END_PTR
    4) set AIU_I2S_MISC[2] to 1 (documented as: "put I2S interface in hold
       mode")
    5) set AIU_I2S_MISC[4] to 1 (depending on the driver revision it always
       stays at 1 while for older drivers this bit is unset in step 4)
    6) set AIU_I2S_MISC[2] to 0
    7) write AIU_MEM_I2S_MASKS
    8) toggle AIU_MEM_I2S_CONTROL[0]
    9) toggle AIU_MEM_I2S_BUF_CNTL[0]
    
    Move setting the AIU_I2S_MISC[2] bit to aiu_fifo_i2s_hw_params() so it
    resembles the flow in the vendor kernel more closely. While here also
    configure AIU_I2S_MISC[4] (documented as: "force each audio data to
    left or right according to the bit attached with the audio data")
    similar to how the vendor driver does this. This fixes the infamous and
    long-standing "machine gun noise" issue (a buffer underrun issue).
    
    Fixes: 6ae9ca9ce986bf ("ASoC: meson: aiu: add i2s and spdif support")
    Reported-by: Christian Hewitt <christianshewitt@gmail.com>
    Reported-by: Geraldo Nascimento <geraldogabriel@gmail.com>
    Tested-by: Christian Hewitt <christianshewitt@gmail.com>
    Tested-by: Geraldo Nascimento <geraldogabriel@gmail.com>
    Acked-by: Jerome Brunet <jbrunet@baylibre.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Link: https://lore.kernel.org/r/20211206210804.2512999-3-martin.blumenstingl@googlemail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b4c020b70cc943f5d3ae7cd59059e7b2e0cb0ab
Author: Werner Sembach <wse@tuxedocomputers.com>
Date:   Wed Dec 15 20:16:46 2021 +0100

    ALSA: hda/realtek: Fix quirk for Clevo NJ51CU
    
    commit edca7cc4b0accfa69dc032442fe0684e59c691b8 upstream.
    
    The Clevo NJ51CU comes either with the ALC293 or the ALC256 codec, but uses
    the 0x8686 subproduct id in both cases. The ALC256 codec needs a different
    quirk for the headset microphone working and and edditional quirk for sound
    working after suspend and resume.
    
    When waking up from s3 suspend the Coef 0x10 is set to 0x0220 instead of
    0x0020 on  the ALC256 codec. Setting the value manually makes the sound
    work again. This patch does this automatically.
    
    [ minor coding style fix by tiwai ]
    
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Fixes: b5acfe152abaa ("ALSA: hda/realtek: Add some Clove SSID in the ALC293(ALC1220)")
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211215191646.844644-1-wse@tuxedocomputers.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7470780f3b0c2a8ef53562ed92fbb10b03024e47
Author: Bradley Scott <bscott@teksavvy.com>
Date:   Mon Dec 13 11:22:47 2021 -0500

    ALSA: hda/realtek: Add new alc285-hp-amp-init model
    
    commit aa72394667e5cea3547e4c41ddff7ca8c632d764 upstream.
    
    Adds a new "alc285-hp-amp-init" model that can be used to apply the ALC285
    HP speaker amplifier initialization fixup to devices that are not already
    known by passing "hda_model=alc285-hp-amp-init" to the
    snd-sof-intel-hda-common module or "model=alc285-hp-amp-init" to the
    snd-hda-intel module, depending on which is being used.
    
    Signed-off-by: Bradley Scott <bscott@teksavvy.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211213162246.506838-1-bscott@teksavvy.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4cb7dc2e307498f8e50eac438d1bece84fd853c6
Author: Bradley Scott <Bradley.Scott@zebra.com>
Date:   Mon Dec 13 10:49:39 2021 -0500

    ALSA: hda/realtek: Amp init fixup for HP ZBook 15 G6
    
    commit d296a74b7b59ff9116236c17edb25f26935dbf70 upstream.
    
    HP ZBook 15 G6 (SSID 103c:860f) needs the same speaker amplifier
    initialization as used on several other HP laptops using ALC285.
    
    Signed-off-by: Bradley Scott <Bradley.Scott@zebra.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211213154938.503201-1-Bradley.Scott@zebra.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69e492161c7b563684caf0fad01382279c065213
Author: Colin Ian King <colin.king@intel.com>
Date:   Sun Dec 12 17:20:25 2021 +0000

    ALSA: drivers: opl3: Fix incorrect use of vp->state
    
    commit 2dee54b289fbc810669a1b2b8a0887fa1c9a14d7 upstream.
    
    Static analysis with scan-build has found an assignment to vp2 that is
    never used. It seems that the check on vp->state > 0 should be actually
    on vp2->state instead. Fix this.
    
    This dates back to 2002, I found the offending commit from the git
    history git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git,
    commit 91e39521bbf6 ("[PATCH] ALSA patch for 2.5.4")
    
    Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211212172025.470367-1-colin.i.king@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a96c08e0b41e022b440ee9c8327b14dd6eb094f7
Author: Xiaoke Wang <xkernel.wang@foxmail.com>
Date:   Mon Dec 13 15:39:31 2021 +0800

    ALSA: jack: Check the return value of kstrdup()
    
    commit c01c1db1dc632edafb0dff32d40daf4f9c1a4e19 upstream.
    
    kstrdup() can return NULL, it is better to check the return value of it.
    
    Signed-off-by: Xiaoke Wang <xkernel.wang@foxmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/tencent_094816F3522E0DC704056C789352EBBF0606@qq.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51c7b2a7b86a923cc410882f3b8bde09ba412f3c
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sat Nov 13 08:55:06 2021 -0800

    hwmon: (lm90) Drop critical attribute support for MAX6654
    
    [ Upstream commit 16ba51b5dcd3f6dde2e51d5ccc86313119dcf889 ]
    
    Tests with a real chip and a closer look into the datasheet show that
    MAX6654 does not support CRIT/THERM/OVERTEMP limits, so drop support
    of the respective attributes for this chip.
    
    Introduce LM90_HAVE_CRIT flag and use it to instantiate critical limit
    attributes to solve the problem.
    
    Cc: Josh Lehan <krellan@google.com>
    Fixes: 229d495d8189 ("hwmon: (lm90) Add max6654 support to lm90 driver")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2464738d0ee4ec57bd6f561acc3b178c79703c38
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu Oct 21 01:49:50 2021 -0700

    hwmon: (lm90) Introduce flag indicating extended temperature support
    
    [ Upstream commit f347e249fcf920ad6974cbd898e2ec0b366a1c34 ]
    
    A flag indicating extended temperature support makes it easier
    to add support for additional chips with this functionality.
    
    Cc: David T. Wilson <david.wilson@nasa.gov>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 196df56c3dc8bb36caf0bda25c26056a838ed273
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Mon Oct 18 20:03:32 2021 -0700

    hwmon: (lm90) Add basic support for TI TMP461
    
    [ Upstream commit f8344f7693a25d9025a59d164450b50c6f5aa3c0 ]
    
    TMP461 is almost identical to TMP451 and was actually detected as TMP451
    with the existing lm90 driver if its I2C address is 0x4c. Add support
    for it to the lm90 driver. At the same time, improve the chip detection
    function to at least try to distinguish between TMP451 and TMP461.
    
    As a side effect, this fixes commit 24333ac26d01 ("hwmon: (tmp401) use
    smb word operations instead of 2 smb byte operations"). TMP461 does not
    support word operations on temperature registers, which causes bad
    temperature readings with the tmp401 driver. The lm90 driver does not
    perform word operations on temperature registers and thus does not have
    this problem.
    
    Support is listed as basic because TMP461 supports a sensor resolution
    of 0.0625 degrees C, while the lm90 driver assumes a resolution of 0.125
    degrees C. Also, the TMP461 supports negative temperatures with its
    default temperature range, which is not the case for similar chips
    supported by the lm90 and the tmp401 drivers. Those limitations will be
    addressed with follow-up patches.
    
    Fixes: 24333ac26d01 ("hwmon: (tmp401) use smb word operations instead of 2 smb byte operations")
    Reported-by: David T. Wilson <david.wilson@nasa.gov>
    Cc: David T. Wilson <david.wilson@nasa.gov>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fa2e149260bf90bbbe83dbc1ed9c9113d13d3afd
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sat Nov 6 10:02:44 2021 -0700

    hwmon: (lm90) Fix usage of CONFIG2 register in detect function
    
    [ Upstream commit fce15c45d3fbd9fc1feaaf3210d8e3f8b33dfd3a ]
    
    The detect function had a comment "Make compiler happy" when id did not
    read the second configuration register. As it turns out, the code was
    checking the contents of this register for manufacturer ID 0xA1 (NXP
    Semiconductor/Philips), but never actually read the register. So it
    wasn't surprising that the compiler complained, and it indeed had a point.
    Fix the code to read the register contents for manufacturer ID 0xa1.
    
    At the same time, the code was reading the register for manufacturer ID
    0x41 (Analog Devices), but it was not using the results. In effect it was
    just checking if reading the register returned an error. That doesn't
    really add much if any value, so stop doing that.
    
    Fixes: f90be42fb383 ("hwmon: (lm90) Refactor reading of config2 register")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ba696b470839d70c6b8290c1f798bac7fb2a584c
Author: Phil Elwell <phil@raspberrypi.com>
Date:   Mon Dec 6 09:22:36 2021 +0000

    pinctrl: bcm2835: Change init order for gpio hogs
    
    [ Upstream commit 266423e60ea1b953fcc0cd97f3dad85857e434d1 ]
    
    ...and gpio-ranges
    
    pinctrl-bcm2835 is a combined pinctrl/gpio driver. Currently the gpio
    side is registered first, but this breaks gpio hogs (which are
    configured during gpiochip_add_data). Part of the hog initialisation
    is a call to pinctrl_gpio_request, and since the pinctrl driver hasn't
    yet been registered this results in an -EPROBE_DEFER from which it can
    never recover.
    
    Change the initialisation sequence to register the pinctrl driver
    first.
    
    This also solves a similar problem with the gpio-ranges property, which
    is required in order for released pins to be returned to inputs.
    
    Fixes: 73345a18d464b ("pinctrl: bcm2835: Pass irqchip when adding gpiochip")
    Signed-off-by: Phil Elwell <phil@raspberrypi.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20211206092237.4105895-2-phil@raspberrypi.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 676c572439e58b7ee6b7ca3f1e5595382921045c
Author: Andrea Righi <andrea.righi@canonical.com>
Date:   Mon Nov 29 00:08:13 2021 -0800

    Input: elantech - fix stack out of bound access in elantech_change_report_id()
    
    [ Upstream commit 1d72d9f960ccf1052a0630a68c3d358791dbdaaa ]
    
    The array param[] in elantech_change_report_id() must be at least 3
    bytes, because elantech_read_reg_params() is calling ps2_command() with
    PSMOUSE_CMD_GETINFO, that is going to access 3 bytes from param[], but
    it's defined in the stack as an array of 2 bytes, therefore we have a
    potential stack out-of-bounds access here, also confirmed by KASAN:
    
    [    6.512374] BUG: KASAN: stack-out-of-bounds in __ps2_command+0x372/0x7e0
    [    6.512397] Read of size 1 at addr ffff8881024d77c2 by task kworker/2:1/118
    
    [    6.512416] CPU: 2 PID: 118 Comm: kworker/2:1 Not tainted 5.13.0-22-generic #22+arighi20211110
    [    6.512428] Hardware name: LENOVO 20T8000QGE/20T8000QGE, BIOS R1AET32W (1.08 ) 08/14/2020
    [    6.512436] Workqueue: events_long serio_handle_event
    [    6.512453] Call Trace:
    [    6.512462]  show_stack+0x52/0x58
    [    6.512474]  dump_stack+0xa1/0xd3
    [    6.512487]  print_address_description.constprop.0+0x1d/0x140
    [    6.512502]  ? __ps2_command+0x372/0x7e0
    [    6.512516]  __kasan_report.cold+0x7d/0x112
    [    6.512527]  ? _raw_write_lock_irq+0x20/0xd0
    [    6.512539]  ? __ps2_command+0x372/0x7e0
    [    6.512552]  kasan_report+0x3c/0x50
    [    6.512564]  __asan_load1+0x6a/0x70
    [    6.512575]  __ps2_command+0x372/0x7e0
    [    6.512589]  ? ps2_drain+0x240/0x240
    [    6.512601]  ? dev_printk_emit+0xa2/0xd3
    [    6.512612]  ? dev_vprintk_emit+0xc5/0xc5
    [    6.512621]  ? __kasan_check_write+0x14/0x20
    [    6.512634]  ? mutex_lock+0x8f/0xe0
    [    6.512643]  ? __mutex_lock_slowpath+0x20/0x20
    [    6.512655]  ps2_command+0x52/0x90
    [    6.512670]  elantech_ps2_command+0x4f/0xc0 [psmouse]
    [    6.512734]  elantech_change_report_id+0x1e6/0x256 [psmouse]
    [    6.512799]  ? elantech_report_trackpoint.constprop.0.cold+0xd/0xd [psmouse]
    [    6.512863]  ? ps2_command+0x7f/0x90
    [    6.512877]  elantech_query_info.cold+0x6bd/0x9ed [psmouse]
    [    6.512943]  ? elantech_setup_ps2+0x460/0x460 [psmouse]
    [    6.513005]  ? psmouse_reset+0x69/0xb0 [psmouse]
    [    6.513064]  ? psmouse_attr_set_helper+0x2a0/0x2a0 [psmouse]
    [    6.513122]  ? phys_pmd_init+0x30e/0x521
    [    6.513137]  elantech_init+0x8a/0x200 [psmouse]
    [    6.513200]  ? elantech_init_ps2+0xf0/0xf0 [psmouse]
    [    6.513249]  ? elantech_query_info+0x440/0x440 [psmouse]
    [    6.513296]  ? synaptics_send_cmd+0x60/0x60 [psmouse]
    [    6.513342]  ? elantech_query_info+0x440/0x440 [psmouse]
    [    6.513388]  ? psmouse_try_protocol+0x11e/0x170 [psmouse]
    [    6.513432]  psmouse_extensions+0x65d/0x6e0 [psmouse]
    [    6.513476]  ? psmouse_try_protocol+0x170/0x170 [psmouse]
    [    6.513519]  ? mutex_unlock+0x22/0x40
    [    6.513526]  ? ps2_command+0x7f/0x90
    [    6.513536]  ? psmouse_probe+0xa3/0xf0 [psmouse]
    [    6.513580]  psmouse_switch_protocol+0x27d/0x2e0 [psmouse]
    [    6.513624]  psmouse_connect+0x272/0x530 [psmouse]
    [    6.513669]  serio_driver_probe+0x55/0x70
    [    6.513679]  really_probe+0x190/0x720
    [    6.513689]  driver_probe_device+0x160/0x1f0
    [    6.513697]  device_driver_attach+0x119/0x130
    [    6.513705]  ? device_driver_attach+0x130/0x130
    [    6.513713]  __driver_attach+0xe7/0x1a0
    [    6.513720]  ? device_driver_attach+0x130/0x130
    [    6.513728]  bus_for_each_dev+0xfb/0x150
    [    6.513738]  ? subsys_dev_iter_exit+0x10/0x10
    [    6.513748]  ? _raw_write_unlock_bh+0x30/0x30
    [    6.513757]  driver_attach+0x2d/0x40
    [    6.513764]  serio_handle_event+0x199/0x3d0
    [    6.513775]  process_one_work+0x471/0x740
    [    6.513785]  worker_thread+0x2d2/0x790
    [    6.513794]  ? process_one_work+0x740/0x740
    [    6.513802]  kthread+0x1b4/0x1e0
    [    6.513809]  ? set_kthread_struct+0x80/0x80
    [    6.513816]  ret_from_fork+0x22/0x30
    
    [    6.513832] The buggy address belongs to the page:
    [    6.513838] page:00000000bc35e189 refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1024d7
    [    6.513847] flags: 0x17ffffc0000000(node=0|zone=2|lastcpupid=0x1fffff)
    [    6.513860] raw: 0017ffffc0000000 dead000000000100 dead000000000122 0000000000000000
    [    6.513867] raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
    [    6.513872] page dumped because: kasan: bad access detected
    
    [    6.513879] addr ffff8881024d77c2 is located in stack of task kworker/2:1/118 at offset 34 in frame:
    [    6.513887]  elantech_change_report_id+0x0/0x256 [psmouse]
    
    [    6.513941] this frame has 1 object:
    [    6.513947]  [32, 34) 'param'
    
    [    6.513956] Memory state around the buggy address:
    [    6.513962]  ffff8881024d7680: f2 f2 f2 f2 f2 00 00 f3 f3 00 00 00 00 00 00 00
    [    6.513969]  ffff8881024d7700: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [    6.513976] >ffff8881024d7780: 00 00 00 00 f1 f1 f1 f1 02 f3 f3 f3 00 00 00 00
    [    6.513982]                                            ^
    [    6.513988]  ffff8881024d7800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [    6.513995]  ffff8881024d7880: 00 f1 f1 f1 f1 03 f2 03 f2 03 f3 f3 f3 00 00 00
    [    6.514000] ==================================================================
    
    Define param[] in elantech_change_report_id() as an array of 3 bytes to
    prevent the out-of-bounds access in the stack.
    
    Fixes: e4c9062717fe ("Input: elantech - fix protocol errors for some trackpoints in SMBus mode")
    BugLink: https://bugs.launchpad.net/bugs/1945590
    Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
    Reviewed-by: Wolfram Sang <wsa@kernel.org>
    Link: https://lore.kernel.org/r/20211116095559.24395-1-andrea.righi@canonical.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2792fde84cceebc54645974545bdf900ef41da63
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Mon Dec 20 22:03:44 2021 +0800

    sfc: falcon: Check null pointer of rx_queue->page_ring
    
    [ Upstream commit 9b8bdd1eb5890aeeab7391dddcf8bd51f7b07216 ]
    
    Because of the possible failure of the kcalloc, it should be better to
    set rx_queue->page_ptr_mask to 0 when it happens in order to maintain
    the consistency.
    
    Fixes: 5a6681e22c14 ("sfc: separate out SFC4000 ("Falcon") support into new sfc-falcon driver")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Acked-by: Martin Habets <habetsm.xilinx@gmail.com>
    Link: https://lore.kernel.org/r/20211220140344.978408-1-jiasheng@iscas.ac.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d70b4001ef741e044c7b173b678828c2740bc9cd
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Mon Dec 20 21:56:03 2021 +0800

    sfc: Check null pointer of rx_queue->page_ring
    
    [ Upstream commit bdf1b5c3884f6a0dc91b0dbdb8c3b7d205f449e0 ]
    
    Because of the possible failure of the kcalloc, it should be better to
    set rx_queue->page_ptr_mask to 0 when it happens in order to maintain
    the consistency.
    
    Fixes: 5a6681e22c14 ("sfc: separate out SFC4000 ("Falcon") support into new sfc-falcon driver")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Acked-by: Martin Habets <habetsm.xilinx@gmail.com>
    Link: https://lore.kernel.org/r/20211220135603.954944-1-jiasheng@iscas.ac.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 75c962f02a4ff639caaf1e5f075eb93b4e284972
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Wed Dec 22 15:59:44 2021 +0800

    net: ks8851: Check for error irq
    
    [ Upstream commit 99d7fbb5cedf598f67e8be106d6c7b8d91366aef ]
    
    Because platform_get_irq() could fail and return error irq.
    Therefore, it might be better to check it if order to avoid the use of
    error irq.
    
    Fixes: 797047f875b5 ("net: ks8851: Implement Parallel bus operations")
    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 9db0f8d395fd3af0952a6e4d66fbd11a83e34e8a
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Wed Dec 22 15:41:12 2021 +0800

    drivers: net: smc911x: Check for error irq
    
    [ Upstream commit cb93b3e11d405f20a405a07482d01147ef4934a3 ]
    
    Because platform_get_irq() could fail and return error irq.
    Therefore, it might be better to check it if order to avoid the use of
    error irq.
    
    Fixes: ae150435b59e ("smsc: Move the SMC (SMSC) drivers")
    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 ca2a15053b07a34cbb4736f81a9ed2289a463bd5
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Wed Dec 22 15:12:07 2021 +0800

    fjes: Check for error irq
    
    [ Upstream commit db6d6afe382de5a65d6ccf51253ab48b8e8336c3 ]
    
    I find that platform_get_irq() will not always succeed.
    It will return error irq in case of the failure.
    Therefore, it might be better to check it if order to avoid the use of
    error irq.
    
    Fixes: 658d439b2292 ("fjes: Introduce FUJITSU Extended Socket Network Device driver")
    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 c6d2754006c1b75d981dd1b3e4432eaafde81373
Author: Fernando Fernandez Mancera <ffmancera@riseup.net>
Date:   Tue Dec 21 12:13:45 2021 +0100

    bonding: fix ad_actor_system option setting to default
    
    [ Upstream commit 1c15b05baea71a5ff98235783e3e4ad227760876 ]
    
    When 802.3ad bond mode is configured the ad_actor_system option is set to
    "00:00:00:00:00:00". But when trying to set the all-zeroes MAC as actors'
    system address it was failing with EINVAL.
    
    An all-zeroes ethernet address is valid, only multicast addresses are not
    valid values.
    
    Fixes: 171a42c38c6e ("bonding: add netlink support for sys prio, actor sys mac, and port key")
    Signed-off-by: Fernando Fernandez Mancera <ffmancera@riseup.net>
    Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com>
    Link: https://lore.kernel.org/r/20211221111345.2462-1-ffmancera@riseup.net
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6809da5185141e61401da5b01896b79a4deed1ad
Author: Wu Bo <wubo40@huawei.com>
Date:   Tue Dec 21 15:00:34 2021 +0800

    ipmi: Fix UAF when uninstall ipmi_si and ipmi_msghandler module
    
    [ Upstream commit ffb76a86f8096a8206be03b14adda6092e18e275 ]
    
    Hi,
    
    When testing install and uninstall of ipmi_si.ko and ipmi_msghandler.ko,
    the system crashed.
    
    The log as follows:
    [  141.087026] BUG: unable to handle kernel paging request at ffffffffc09b3a5a
    [  141.087241] PGD 8fe4c0d067 P4D 8fe4c0d067 PUD 8fe4c0f067 PMD 103ad89067 PTE 0
    [  141.087464] Oops: 0010 [#1] SMP NOPTI
    [  141.087580] CPU: 67 PID: 668 Comm: kworker/67:1 Kdump: loaded Not tainted 4.18.0.x86_64 #47
    [  141.088009] Workqueue: events 0xffffffffc09b3a40
    [  141.088009] RIP: 0010:0xffffffffc09b3a5a
    [  141.088009] Code: Bad RIP value.
    [  141.088009] RSP: 0018:ffffb9094e2c3e88 EFLAGS: 00010246
    [  141.088009] RAX: 0000000000000000 RBX: ffff9abfdb1f04a0 RCX: 0000000000000000
    [  141.088009] RDX: 0000000000000000 RSI: 0000000000000246 RDI: 0000000000000246
    [  141.088009] RBP: 0000000000000000 R08: ffff9abfffee3cb8 R09: 00000000000002e1
    [  141.088009] R10: ffffb9094cb73d90 R11: 00000000000f4240 R12: ffff9abfffee8700
    [  141.088009] R13: 0000000000000000 R14: ffff9abfdb1f04a0 R15: ffff9abfdb1f04a8
    [  141.088009] FS:  0000000000000000(0000) GS:ffff9abfffec0000(0000) knlGS:0000000000000000
    [  141.088009] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  141.088009] CR2: ffffffffc09b3a30 CR3: 0000008fe4c0a001 CR4: 00000000007606e0
    [  141.088009] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  141.088009] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  141.088009] PKRU: 55555554
    [  141.088009] Call Trace:
    [  141.088009]  ? process_one_work+0x195/0x390
    [  141.088009]  ? worker_thread+0x30/0x390
    [  141.088009]  ? process_one_work+0x390/0x390
    [  141.088009]  ? kthread+0x10d/0x130
    [  141.088009]  ? kthread_flush_work_fn+0x10/0x10
    [  141.088009]  ? ret_from_fork+0x35/0x40] BUG: unable to handle kernel paging request at ffffffffc0b28a5a
    [  200.223240] PGD 97fe00d067 P4D 97fe00d067 PUD 97fe00f067 PMD a580cbf067 PTE 0
    [  200.223464] Oops: 0010 [#1] SMP NOPTI
    [  200.223579] CPU: 63 PID: 664 Comm: kworker/63:1 Kdump: loaded Not tainted 4.18.0.x86_64 #46
    [  200.224008] Workqueue: events 0xffffffffc0b28a40
    [  200.224008] RIP: 0010:0xffffffffc0b28a5a
    [  200.224008] Code: Bad RIP value.
    [  200.224008] RSP: 0018:ffffbf3c8e2a3e88 EFLAGS: 00010246
    [  200.224008] RAX: 0000000000000000 RBX: ffffa0799ad6bca0 RCX: 0000000000000000
    [  200.224008] RDX: 0000000000000000 RSI: 0000000000000246 RDI: 0000000000000246
    [  200.224008] RBP: 0000000000000000 R08: ffff9fe43fde3cb8 R09: 00000000000000d5
    [  200.224008] R10: ffffbf3c8cb53d90 R11: 00000000000f4240 R12: ffff9fe43fde8700
    [  200.224008] R13: 0000000000000000 R14: ffffa0799ad6bca0 R15: ffffa0799ad6bca8
    [  200.224008] FS:  0000000000000000(0000) GS:ffff9fe43fdc0000(0000) knlGS:0000000000000000
    [  200.224008] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  200.224008] CR2: ffffffffc0b28a30 CR3: 00000097fe00a002 CR4: 00000000007606e0
    [  200.224008] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  200.224008] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  200.224008] PKRU: 55555554
    [  200.224008] Call Trace:
    [  200.224008]  ? process_one_work+0x195/0x390
    [  200.224008]  ? worker_thread+0x30/0x390
    [  200.224008]  ? process_one_work+0x390/0x390
    [  200.224008]  ? kthread+0x10d/0x130
    [  200.224008]  ? kthread_flush_work_fn+0x10/0x10
    [  200.224008]  ? ret_from_fork+0x35/0x40
    [  200.224008] kernel fault(0x1) notification starting on CPU 63
    [  200.224008] kernel fault(0x1) notification finished on CPU 63
    [  200.224008] CR2: ffffffffc0b28a5a
    [  200.224008] ---[ end trace c82a412d93f57412 ]---
    
    The reason is as follows:
    T1: rmmod ipmi_si.
        ->ipmi_unregister_smi()
            -> ipmi_bmc_unregister()
                -> __ipmi_bmc_unregister()
                    -> kref_put(&bmc->usecount, cleanup_bmc_device);
                        -> schedule_work(&bmc->remove_work);
    
    T2: rmmod ipmi_msghandler.
        ipmi_msghander module uninstalled, and the module space
        will be freed.
    
    T3: bmc->remove_work doing cleanup the bmc resource.
        -> cleanup_bmc_work()
            -> platform_device_unregister(&bmc->pdev);
                -> platform_device_del(pdev);
                    -> device_del(&pdev->dev);
                        -> kobject_uevent(&dev->kobj, KOBJ_REMOVE);
                            -> kobject_uevent_env()
                                -> dev_uevent()
                                    -> if (dev->type && dev->type->name)
    
       'dev->type'(bmc_device_type) pointer space has freed when uninstall
        ipmi_msghander module, 'dev->type->name' cause the system crash.
    
    drivers/char/ipmi/ipmi_msghandler.c:
    2820 static const struct device_type bmc_device_type = {
    2821         .groups         = bmc_dev_attr_groups,
    2822 };
    
    Steps to reproduce:
    Add a time delay in cleanup_bmc_work() function,
    and uninstall ipmi_si and ipmi_msghandler module.
    
    2910 static void cleanup_bmc_work(struct work_struct *work)
    2911 {
    2912         struct bmc_device *bmc = container_of(work, struct bmc_device,
    2913                                               remove_work);
    2914         int id = bmc->pdev.id; /* Unregister overwrites id */
    2915
    2916         msleep(3000);   <---
    2917         platform_device_unregister(&bmc->pdev);
    2918         ida_simple_remove(&ipmi_bmc_ida, id);
    2919 }
    
    Use 'remove_work_wq' instead of 'system_wq' to solve this issues.
    
    Fixes: b2cfd8ab4add ("ipmi: Rework device id and guid handling to catch changing BMCs")
    Signed-off-by: Wu Bo <wubo40@huawei.com>
    Message-Id: <1640070034-56671-1-git-send-email-wubo40@huawei.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 61e6b82e7b6c993c02084bb432c4bf6bd2f6cde9
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Mon Dec 20 12:18:44 2021 -0800

    igb: fix deadlock caused by taking RTNL in RPM resume path
    
    [ Upstream commit ac8c58f5b535d6272324e2b8b4a0454781c9147e ]
    
    Recent net core changes caused an issue with few Intel drivers
    (reportedly igb), where taking RTNL in RPM resume path results in a
    deadlock. See [0] for a bug report. I don't think the core changes
    are wrong, but taking RTNL in RPM resume path isn't needed.
    The Intel drivers are the only ones doing this. See [1] for a
    discussion on the issue. Following patch changes the RPM resume path
    to not take RTNL.
    
    [0] https://bugzilla.kernel.org/show_bug.cgi?id=215129
    [1] https://lore.kernel.org/netdev/20211125074949.5f897431@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com/t/
    
    Fixes: bd869245a3dc ("net: core: try to runtime-resume detached device in __dev_open")
    Fixes: f32a21376573 ("ethtool: runtime-resume netdev parent before ethtool ioctl ops")
    Tested-by: Martin Stolpe <martin.stolpe@gmail.com>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Link: https://lore.kernel.org/r/20211220201844.2714498-1-anthony.l.nguyen@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e00eace2325c4d4715d1001b0e467123d36e6c9a
Author: Willem de Bruijn <willemb@google.com>
Date:   Mon Dec 20 09:50:27 2021 -0500

    net: skip virtio_net_hdr_set_proto if protocol already set
    
    [ Upstream commit 1ed1d592113959f00cc552c3b9f47ca2d157768f ]
    
    virtio_net_hdr_set_proto infers skb->protocol from the virtio_net_hdr
    gso_type, to avoid packets getting dropped for lack of a proto type.
    
    Its protocol choice is a guess, especially in the case of UFO, where
    the single VIRTIO_NET_HDR_GSO_UDP label covers both UFOv4 and UFOv6.
    
    Skip this best effort if the field is already initialized. Whether
    explicitly from userspace, or implicitly based on an earlier call to
    dev_parse_header_protocol (which is more robust, but was introduced
    after this patch).
    
    Fixes: 9d2f67e43b73 ("net/packet: fix packet drop as of virtio gso")
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/20211220145027.2784293-1-willemdebruijn.kernel@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ed05e4dcfba63bcca36ec1d19d099a1ec6b000ec
Author: Willem de Bruijn <willemb@google.com>
Date:   Mon Dec 20 09:49:01 2021 -0500

    net: accept UFOv6 packages in virtio_net_hdr_to_skb
    
    [ Upstream commit 7e5cced9ca84df52d874aca6b632f930b3dc5bc6 ]
    
    Skb with skb->protocol 0 at the time of virtio_net_hdr_to_skb may have
    a protocol inferred from virtio_net_hdr with virtio_net_hdr_set_proto.
    
    Unlike TCP, UDP does not have separate types for IPv4 and IPv6. Type
    VIRTIO_NET_HDR_GSO_UDP is guessed to be IPv4/UDP. As of the below
    commit, UFOv6 packets are dropped due to not matching the protocol as
    obtained from dev_parse_header_protocol.
    
    Invert the test to take that L2 protocol field as starting point and
    pass both UFOv4 and UFOv6 for VIRTIO_NET_HDR_GSO_UDP.
    
    Fixes: 924a9bc362a5 ("net: check if protocol extracted by virtio_net_hdr_set_proto is correct")
    Link: https://lore.kernel.org/netdev/CABcq3pG9GRCYqFDBAJ48H1vpnnX=41u+MhQnayF1ztLH4WX0Fw@mail.gmail.com/
    Reported-by: Andrew Melnichenko <andrew@daynix.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/20211220144901.2784030-1-willemdebruijn.kernel@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 56b0bbba782b2dfec7d4c4afcf0c854e702c5cd8
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Fri Dec 17 17:39:11 2021 +0800

    qlcnic: potential dereference null pointer of rx_queue->page_ring
    
    [ Upstream commit 60ec7fcfe76892a1479afab51ff17a4281923156 ]
    
    The return value of kcalloc() needs to be checked.
    To avoid dereference of null pointer in case of the failure of alloc.
    Therefore, it might be better to change the return type of
    qlcnic_sriov_alloc_vlans() and return -ENOMEM when alloc fails and
    return 0 the others.
    Also, qlcnic_sriov_set_guest_vlan_mode() and __qlcnic_pci_sriov_enable()
    should deal with the return value of qlcnic_sriov_alloc_vlans().
    
    Fixes: 154d0c810c53 ("qlcnic: VLAN enhancement for 84XX adapters")
    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 78e49d77e517c205e7c2c2f7a970468dd2f867b1
Author: Yevhen Orlov <yevhen.orlov@plvision.eu>
Date:   Thu Dec 16 19:07:36 2021 +0200

    net: marvell: prestera: fix incorrect return of port_find
    
    [ Upstream commit 8b681bd7c301c423fbe97a6b23388a2180ff04ca ]
    
    In case, when some ports is in list and we don't find requested - we
    return last iterator state and not return NULL as expected.
    
    Fixes: 501ef3066c89 ("net: marvell: prestera: Add driver for Prestera family ASIC devices")
    Signed-off-by: Yevhen Orlov <yevhen.orlov@plvision.eu>
    Link: https://lore.kernel.org/r/20211216170736.8851-1-yevhen.orlov@plvision.eu
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 861b4413e41da02231300eef5029f71ab5c700ac
Author: Martin Haaß <vvvrrooomm@gmail.com>
Date:   Sun Dec 12 09:30:30 2021 -0300

    ARM: dts: imx6qdl-wandboard: Fix Ethernet support
    
    [ Upstream commit 39e660687ac0c57499134765abbecf71cfd11eae ]
    
    Currently, the imx6q-wandboard Ethernet does not transmit any
    data.
    
    This issue has been exposed by commit f5d9aa79dfdf ("ARM: imx6q:
    remove clk-out fixup for the Atheros AR8031 and AR8035 PHYs").
    
    Fix it by describing the qca,clk-out-frequency property as suggested
    by the commit above.
    
    Fixes: 77591e42458d ("ARM: dts: imx6qdl-wandboard: add ethernet PHY description")
    Signed-off-by: Martin Haaß <vvvrrooomm@gmail.com>
    Tested-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d79f5e0d458bc07fe7734abde2a734f6261d7307
Author: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>
Date:   Fri Dec 10 16:31:27 2021 +0100

    netfilter: fix regression in looped (broad|multi)cast's MAC handling
    
    [ Upstream commit ebb966d3bdfed581ecccbb4a7432341baf7619b4 ]
    
    In commit 5648b5e1169f ("netfilter: nfnetlink_queue: fix OOB when mac
    header was cleared"), the test for non-empty MAC header introduced in
    commit 2c38de4c1f8da7 ("netfilter: fix looped (broad|multi)cast's MAC
    handling") has been replaced with a test for a set MAC header.
    
    This breaks the case when the MAC header has been reset (using
    skb_reset_mac_header), as is the case with looped-back multicast
    packets.  As a result, the packets ending up in NFQUEUE get a bogus
    hwaddr interpreted from the first bytes of the IP header.
    
    This patch adds a test for a non-empty MAC header in addition to the
    test for a set MAC header.  The same two tests are also implemented in
    nfnetlink_log.c, where the initial code of commit 2c38de4c1f8da7
    ("netfilter: fix looped (broad|multi)cast's MAC handling") has not been
    touched, but where supposedly the same situation may happen.
    
    Fixes: 5648b5e1169f ("netfilter: nfnetlink_queue: fix OOB when mac header was cleared")
    Signed-off-by: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 579cefef7c425b99e6693f0f234f5be265aaf6e1
Author: Jiacheng Shi <billsjc@sjtu.edu.cn>
Date:   Fri Dec 10 01:42:34 2021 -0800

    RDMA/hns: Replace kfree() with kvfree()
    
    [ Upstream commit 12d3bbdd6bd2780b71cc466f3fbc6eb7d43bbc2a ]
    
    Variables allocated by kvmalloc_array() should not be freed by kfree.
    Because they may be allocated by vmalloc.  So we replace kfree() with
    kvfree() here.
    
    Fixes: 6fd610c5733d ("RDMA/hns: Support 0 hop addressing for SRQ buffer")
    Link: https://lore.kernel.org/r/20211210094234.5829-1-billsjc@sjtu.edu.cn
    Signed-off-by: Jiacheng Shi <billsjc@sjtu.edu.cn>
    Acked-by: Wenpeng Liang <liangwenpeng@huawei.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7cf6466e00a77b0a914b7b2c28a1fc7947d55e59
Author: José Expósito <jose.exposito89@gmail.com>
Date:   Wed Dec 8 18:52:38 2021 +0100

    IB/qib: Fix memory leak in qib_user_sdma_queue_pkts()
    
    [ Upstream commit bee90911e0138c76ee67458ac0d58b38a3190f65 ]
    
    The wrong goto label was used for the error case and missed cleanup of the
    pkt allocation.
    
    Fixes: d39bf40e55e6 ("IB/qib: Protect from buffer overflow in struct qib_user_sdma_pkt fields")
    Link: https://lore.kernel.org/r/20211208175238.29983-1-jose.exposito89@gmail.com
    Addresses-Coverity-ID: 1493352 ("Resource leak")
    Signed-off-by: José Expósito <jose.exposito89@gmail.com>
    Acked-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cd9c90682b2f23432e457fb14e5260e9c07a4223
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Mon Dec 6 22:08:03 2021 +0100

    ASoC: meson: aiu: fifo: Add missing dma_coerce_mask_and_coherent()
    
    [ Upstream commit 1bcd326631dc4faa3322d60b4fc45e8b3747993e ]
    
    The FIFO registers which take an DMA-able address are only 32-bit wide
    on AIU. Add dma_coerce_mask_and_coherent() to make the DMA core aware of
    this limitation.
    
    Fixes: 6ae9ca9ce986bf ("ASoC: meson: aiu: add i2s and spdif support")
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Link: https://lore.kernel.org/r/20211206210804.2512999-2-martin.blumenstingl@googlemail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 580ecf86e7720aa5e123009b390e47a7ebd6bde7
Author: Dongliang Mu <mudongliangabcd@gmail.com>
Date:   Mon Dec 6 18:19:31 2021 +0800

    spi: change clk_disable_unprepare to clk_unprepare
    
    [ Upstream commit db6689b643d8653092f5853751ea2cdbc299f8d3 ]
    
    The corresponding API for clk_prepare is clk_unprepare, other than
    clk_disable_unprepare.
    
    Fix this by changing clk_disable_unprepare to clk_unprepare.
    
    Fixes: 5762ab71eb24 ("spi: Add support for Armada 3700 SPI Controller")
    Signed-off-by: Dongliang Mu <mudongliangabcd@gmail.com>
    Link: https://lore.kernel.org/r/20211206101931.2816597-1-mudongliangabcd@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 93a957bbf46ceb224b959de61fe85cfc6f71b6c7
Author: Robert Marko <robert.marko@sartura.hr>
Date:   Wed Nov 17 15:02:22 2021 +0100

    arm64: dts: allwinner: orangepi-zero-plus: fix PHY mode
    
    [ Upstream commit 08d2061ff9c5319a07bf9ca6bbf11fdec68f704a ]
    
    Orange Pi Zero Plus uses a Realtek RTL8211E RGMII Gigabit PHY, but its
    currently set to plain RGMII mode meaning that it doesn't introduce
    delays.
    
    With this setup, TX packets are completely lost and changing the mode to
    RGMII-ID so the PHY will add delays internally fixes the issue.
    
    Fixes: a7affb13b271 ("arm64: allwinner: H5: Add Xunlong Orange Pi Zero Plus")
    Acked-by: Chen-Yu Tsai <wens@csie.org>
    Tested-by: Ron Goossens <rgoossens@gmail.com>
    Tested-by: Samuel Holland <samuel@sholland.org>
    Signed-off-by: Robert Marko <robert.marko@sartura.hr>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://lore.kernel.org/r/20211117140222.43692-1-robert.marko@sartura.hr
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef2dce43257df7488feb046de4706b9d657a4ad5
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Wed Dec 15 16:36:05 2021 +0800

    HID: potential dereference of null pointer
    
    commit 13251ce1dd9bb525da2becb9b26fdfb94ca58659 upstream.
    
    The return value of devm_kzalloc() needs to be checked.
    To avoid hdev->dev->driver_data to be null in case of the failure of
    alloc.
    
    Fixes: 14c9c014babe ("HID: add vivaldi HID driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211215083605.117638-1-jiasheng@iscas.ac.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3110bc5862d213035c685ed607795e6abdb34d78
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Mon Dec 20 10:51:20 2021 +0100

    HID: holtek: fix mouse probing
    
    commit 93a2207c254ca102ebbdae47b00f19bbfbfa7ecd upstream.
    
    An overlook from the previous commit: we don't even parse or start the
    device, meaning that the device is not presented to user space.
    
    Fixes: 93020953d0fa ("HID: check for valid USB device for many HID drivers")
    Cc: stable@vger.kernel.org
    Link: https://bugs.archlinux.org/task/73048
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=215341
    Link: https://lore.kernel.org/r/e4efbf13-bd8d-0370-629b-6c80c0044b15@leemhuis.info/
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0875873b2a97ab201fbb44ae4cd939ed52847d18
Author: Zhang Yi <yi.zhang@huawei.com>
Date:   Wed Sep 8 20:08:49 2021 +0800

    ext4: check for inconsistent extents between index and leaf block
    
    commit 9c6e071913792d80894cd0be98cc3c4b770e26d3 upstream.
    
    Now that we can check out overlapping extents in leaf block and
    out-of-order index extents in index block. But the .ee_block in the
    first extent of one leaf block should equal to the .ei_block in it's
    parent index extent entry. This patch add a check to verify such
    inconsistent between the index and leaf block.
    
    Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
    Link: https://lore.kernel.org/r/20210908120850.4012324-3-yi.zhang@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76366c024f56545355c815f31837dd1175c60da6
Author: Zhang Yi <yi.zhang@huawei.com>
Date:   Wed Sep 8 20:08:48 2021 +0800

    ext4: check for out-of-order index extents in ext4_valid_extent_entries()
    
    commit 8dd27fecede55e8a4e67eef2878040ecad0f0d33 upstream.
    
    After commit 5946d089379a ("ext4: check for overlapping extents in
    ext4_valid_extent_entries()"), we can check out the overlapping extent
    entry in leaf extent blocks. But the out-of-order extent entry in index
    extent blocks could also trigger bad things if the filesystem is
    inconsistent. So this patch add a check to figure out the out-of-order
    index extents and return error.
    
    Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
    Reviewed-by: Theodore Ts'o <tytso@mit.edu>
    Link: https://lore.kernel.org/r/20210908120850.4012324-2-yi.zhang@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d4b1c4e8bbd8260569b59698edab5b00f8f6677
Author: Zhang Yi <yi.zhang@huawei.com>
Date:   Wed Sep 8 20:08:50 2021 +0800

    ext4: prevent partial update of the extent blocks
    
    commit 0f2f87d51aebcf71a709b52f661d681594c7dffa upstream.
    
    In the most error path of current extents updating operations are not
    roll back partial updates properly when some bad things happens(.e.g in
    ext4_ext_insert_extent()). So we may get an inconsistent extents tree
    if journal has been aborted due to IO error, which may probability lead
    to BUGON later when we accessing these extent entries in errors=continue
    mode. This patch drop extent buffer's verify flag before updatng the
    contents in ext4_ext_get_access(), and reset it after updating in
    __ext4_ext_dirty(). After this patch we could force to check the extent
    buffer if extents tree updating was break off, make sure the extents are
    consistent.
    
    Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
    Reviewed-by: Theodore Ts'o <tytso@mit.edu>
    Link: https://lore.kernel.org/r/20210908120850.4012324-4-yi.zhang@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f69a47fcbb9cdc0715610aabeae3849b03cfe24c
Author: Greg Jesionowski <jesionowskigreg@gmail.com>
Date:   Tue Dec 14 15:10:27 2021 -0700

    net: usb: lan78xx: add Allied Telesis AT29M2-AF
    
    commit ef8a0f6eab1ca5d1a75c242c5c7b9d386735fa0a upstream.
    
    This adds the vendor and product IDs for the AT29M2-AF which is a
    lan7801-based device.
    
    Signed-off-by: Greg Jesionowski <jesionowskigreg@gmail.com>
    Link: https://lore.kernel.org/r/20211214221027.305784-1-jesionowskigreg@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c0059a25cb1da1454354350ff1db5cb8e0ea326
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Tue Oct 19 15:36:46 2021 -0700

    arm64: vdso32: require CROSS_COMPILE_COMPAT for gcc+bfd
    
    commit 3e6f8d1fa18457d54b20917bd9174d27daf09ab9 upstream.
    
    Similar to
    commit 231ad7f409f1 ("Makefile: infer --target from ARCH for CC=clang")
    There really is no point in setting --target based on
    $CROSS_COMPILE_COMPAT for clang when the integrated assembler is being
    used, since
    commit ef94340583ee ("arm64: vdso32: drop -no-integrated-as flag").
    
    Allows COMPAT_VDSO to be selected without setting $CROSS_COMPILE_COMPAT
    when using clang and lld together.
    
    Before:
    $ ARCH=arm64 CROSS_COMPILE_COMPAT=arm-linux-gnueabi- make -j72 LLVM=1 defconfig
    $ grep CONFIG_COMPAT_VDSO .config
    CONFIG_COMPAT_VDSO=y
    $ ARCH=arm64 make -j72 LLVM=1 defconfig
    $ grep CONFIG_COMPAT_VDSO .config
    $
    
    After:
    $ ARCH=arm64 CROSS_COMPILE_COMPAT=arm-linux-gnueabi- make -j72 LLVM=1 defconfig
    $ grep CONFIG_COMPAT_VDSO .config
    CONFIG_COMPAT_VDSO=y
    $ ARCH=arm64 make -j72 LLVM=1 defconfig
    $ grep CONFIG_COMPAT_VDSO .config
    CONFIG_COMPAT_VDSO=y
    
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Suggested-by: Nathan Chancellor <nathan@kernel.org>
    Tested-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
    Link: https://lore.kernel.org/r/20211019223646.1146945-5-ndesaulniers@google.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b16b124a42e0c1daeafbea01094558f6cacbe059
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Tue Apr 20 10:44:25 2021 -0700

    arm64: vdso32: drop -no-integrated-as flag
    
    commit ef94340583eec5cb1544dc41a87baa4f684b3fe1 upstream.
    
    Clang can assemble these files just fine; this is a relic from the top
    level Makefile conditionally adding this. We no longer need --prefix,
    --gcc-toolchain, or -Qunused-arguments flags either with this change, so
    remove those too.
    
    To test building:
    $ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \
      CROSS_COMPILE_COMPAT=arm-linux-gnueabi- make LLVM=1 LLVM_IAS=1 \
      defconfig arch/arm64/kernel/vdso32/
    
    Suggested-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
    Tested-by: Stephen Boyd <swboyd@chromium.org>
    Acked-by: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20210420174427.230228-1-ndesaulniers@google.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>