commit f4b1bd6d9c2e2818ad1ef2483471c8b9a5c0a01c
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Jan 29 10:19:19 2022 +0100

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

commit 0008a0c78fc33a84e2212a7c04e6b21a36ca6f4d
Author: Mathias Krause <minipli@grsecurity.net>
Date:   Thu Jan 27 18:34:19 2022 +1000

    drm/vmwgfx: Fix stale file descriptors on failed usercopy
    
    commit a0f90c8815706981c483a652a6aefca51a5e191c upstream.
    
    A failing usercopy of the fence_rep object will lead to a stale entry in
    the file descriptor table as put_unused_fd() won't release it. This
    enables userland to refer to a dangling 'file' object through that still
    valid file descriptor, leading to all kinds of use-after-free
    exploitation scenarios.
    
    Fix this by deferring the call to fd_install() until after the usercopy
    has succeeded.
    
    Fixes: c906965dee22 ("drm/vmwgfx: Add export fence to file descriptor support")
    Signed-off-by: Mathias Krause <minipli@grsecurity.net>
    Signed-off-by: Zack Rusin <zackr@vmware.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6717900f775a6129a7b4d03ba4922218d8bf1caa
Author: Jan Kara <jack@suse.cz>
Date:   Mon Jan 10 19:19:23 2022 +0100

    select: Fix indefinitely sleeping task in poll_schedule_timeout()
    
    commit 68514dacf2715d11b91ca50d88de047c086fea9c upstream.
    
    A task can end up indefinitely sleeping in do_select() ->
    poll_schedule_timeout() when the following race happens:
    
      TASK1 (thread1)             TASK2                   TASK1 (thread2)
      do_select()
        setup poll_wqueues table
        with 'fd'
                                  write data to 'fd'
                                    pollwake()
                                      table->triggered = 1
                                                          closes 'fd' thread1 is
                                                            waiting for
        poll_schedule_timeout()
          - sees table->triggered
          table->triggered = 0
          return -EINTR
        loop back in do_select()
    
    But at this point when TASK1 loops back, the fdget() in the setup of
    poll_wqueues fails.  So now so we never find 'fd' is ready for reading
    and sleep in poll_schedule_timeout() indefinitely.
    
    Treat an fd that got closed as a fd on which some event happened.  This
    makes sure cannot block indefinitely in do_select().
    
    Another option would be to return -EBADF in this case but that has a
    potential of subtly breaking applications that excercise this behavior
    and it happens to work for them.  So returning fd as active seems like a
    safer choice.
    
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    CC: stable@vger.kernel.org
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac06e167c4ae08e481c7944677856c638724643a
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Fri Jul 31 19:26:16 2020 +0300

    net: bridge: clear bridge's private skb space on xmit
    
    commit fd65e5a95d08389444e8591a20538b3edece0e15 upstream.
    
    We need to clear all of the bridge private skb variables as they can be
    stale due to the packet being recirculated through the stack and then
    transmitted through the bridge device. Similar memset is already done on
    bridge's input. We've seen cases where proxyarp_replied was 1 on routed
    multicast packets transmitted through the bridge to ports with neigh
    suppress which were getting dropped. Same thing can in theory happen with
    the port isolation bit as well.
    
    Fixes: 821f1b21cabb ("bridge: add new BR_NEIGH_SUPPRESS port flag to suppress arp and nd flood")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Huang Guobin <huangguobin4@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b188780649081782e341e52223db47c49f172712
Author: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Date:   Tue Oct 19 13:27:10 2021 +0100

    drm/i915: Flush TLBs before releasing backing store
    
    commit 7938d61591d33394a21bdd7797a245b65428f44c upstream.
    
    We need to flush TLBs before releasing backing store otherwise userspace
    is able to encounter stale entries if a) it is not declaring access to
    certain buffers and b) it races with the backing store release from a
    such undeclared execution already executing on the GPU in parallel.
    
    The approach taken is to mark any buffer objects which were ever bound
    to the GPU and to trigger a serialized TLB flush when their backing
    store is released.
    
    Alternatively the flushing could be done on VMA unbind, at which point
    we would be able to ascertain whether there is potential a parallel GPU
    execution (which could race), but essentially it boils down to paying
    the cost of TLB flushes potentially needlessly at VMA unbind time (when
    the backing store is not known to be going away so not needed for
    safety), versus potentially needlessly at backing store relase time
    (since we at that point cannot tell whether there is anything executing
    on the GPU which uses that object).
    
    Thereforce simplicity of implementation has been chosen for now with
    scope to benchmark and refine later as required.
    
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Reported-by: Sushma Venkatesh Reddy <sushma.venkatesh.reddy@intel.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Acked-by: Dave Airlie <airlied@redhat.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Jon Bloomfield <jon.bloomfield@intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>