commit 05f6d2aa7e2f2cdd137ee600785704139e6dd3b7
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Jan 30 13:55:20 2021 +0100

    Linux 5.10.12
    
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Link: https://lore.kernel.org/r/20210129105912.628174874@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5ac8304e18025a522b5d1d87629e926064ce134
Author: John Ogness <john.ogness@linutronix.de>
Date:   Sun Jan 24 21:33:28 2021 +0106

    printk: fix string termination for record_print_text()
    
    commit 08d60e5999540110576e7c1346d486220751b7f9 upstream.
    
    Commit f0e386ee0c0b ("printk: fix buffer overflow potential for
    print_text()") added string termination in record_print_text().
    However it used the wrong base pointer for adding the terminator.
    This led to a 0-byte being written somewhere beyond the buffer.
    
    Use the correct base pointer when adding the terminator.
    
    Fixes: f0e386ee0c0b ("printk: fix buffer overflow potential for print_text()")
    Reported-by: Sven Schnelle <svens@linux.ibm.com>
    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Link: https://lore.kernel.org/r/20210124202728.4718-1-john.ogness@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 861c2e349a36868f9c19a82844b2eb0abf20939b
Author: John Ogness <john.ogness@linutronix.de>
Date:   Thu Jan 14 18:10:12 2021 +0106

    printk: fix buffer overflow potential for print_text()
    
    commit f0e386ee0c0b71ea6f7238506a4d0965a2dbef11 upstream.
    
    Before the commit 896fbe20b4e2333fb55 ("printk: use the lockless
    ringbuffer"), msg_print_text() would only write up to size-1 bytes
    into the provided buffer. Some callers expect this behavior and
    append a terminator to returned string. In particular:
    
    arch/powerpc/xmon/xmon.c:dump_log_buf()
    arch/um/kernel/kmsg_dump.c:kmsg_dumper_stdout()
    
    msg_print_text() has been replaced by record_print_text(), which
    currently fills the full size of the buffer. This causes a
    buffer overflow for the above callers.
    
    Change record_print_text() so that it will only use size-1 bytes
    for text data. Also, for paranoia sakes, add a terminator after
    the text data.
    
    And finally, document this behavior so that it is clear that only
    size-1 bytes are used and a terminator is added.
    
    Fixes: 896fbe20b4e2333fb55 ("printk: use the lockless ringbuffer")
    Cc: stable@vger.kernel.org # 5.10+
    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    Acked-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Link: https://lore.kernel.org/r/20210114170412.4819-1-john.ogness@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb14bbbb7bbfdb9da25d24cf14f52ef54eee1109
Author: Jean-Philippe Brucker <jean-philippe@linaro.org>
Date:   Tue Nov 10 17:43:05 2020 +0100

    tools: Factor HOSTCC, HOSTLD, HOSTAR definitions
    
    commit c8a950d0d3b926a02c7b2e713850d38217cec3d1 upstream.
    
    Several Makefiles in tools/ need to define the host toolchain variables.
    Move their definition to tools/scripts/Makefile.include
    
    Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Jiri Olsa <jolsa@redhat.com>
    Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Link: https://lore.kernel.org/bpf/20201110164310.2600671-2-jean-philippe@linaro.org
    Cc: Alistair Delva <adelva@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f472a59aa182d5aac2927633f390514cf7b614b4
Author: Zhaoyang Huang <huangzhaoyang@gmail.com>
Date:   Tue Dec 15 20:42:23 2020 -0800

    mm: fix a race on nr_swap_pages
    
    commit b50da6e9f42ade19141f6cf8870bb2312b055aa3 upstream.
    
    The scenario on which "Free swap = -4kB" happens in my system, which is caused
    by several get_swap_pages racing with each other and show_swap_cache_info
    happens simutaniously. No need to add a lock on get_swap_page_of_type as we
    remove "Presub/PosAdd" here.
    
    ProcessA                        ProcessB                        ProcessC
    ngoals = 1                      ngoals = 1
    avail = nr_swap_pages(1)        avail = nr_swap_pages(1)
    nr_swap_pages(1) -= ngoals
                                    nr_swap_pages(0) -= ngoals
                                                                    nr_swap_pages = -1
    
    Link: https://lkml.kernel.org/r/1607050340-4535-1-git-send-email-zhaoyang.huang@unisoc.com
    Signed-off-by: Zhaoyang Huang <zhaoyang.huang@unisoc.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c11f7749f1fc9bad6b1f0e073de08fa996f21cc3
Author: Hailong liu <liu.hailong6@zte.com.cn>
Date:   Tue Jan 12 15:49:08 2021 -0800

    mm/page_alloc: add a missing mm_page_alloc_zone_locked() tracepoint
    
    commit ce8f86ee94fabcc98537ddccd7e82cfd360a4dc5 upstream.
    
    The trace point *trace_mm_page_alloc_zone_locked()* in __rmqueue() does
    not currently cover all branches.  Add the missing tracepoint and check
    the page before do that.
    
    [akpm@linux-foundation.org: use IS_ENABLED() to suppress warning]
    
    Link: https://lkml.kernel.org/r/20201228132901.41523-1-carver4lio@163.com
    Signed-off-by: Hailong liu <liu.hailong6@zte.com.cn>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Ivan Babrou <ivan@cloudflare.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6fd968f58439398b765300aecd7758d501ee49c
Author: Josh Poimboeuf <jpoimboe@redhat.com>
Date:   Thu Jan 14 16:14:01 2021 -0600

    objtool: Don't fail on missing symbol table
    
    commit 1d489151e9f9d1647110277ff77282fe4d96d09b upstream.
    
    Thanks to a recent binutils change which doesn't generate unused
    symbols, it's now possible for thunk_64.o be completely empty without
    CONFIG_PREEMPTION: no text, no data, no symbols.
    
    We could edit the Makefile to only build that file when
    CONFIG_PREEMPTION is enabled, but that will likely create confusion
    if/when the thunks end up getting used by some other code again.
    
    Just ignore it and move on.
    
    Reported-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Miroslav Benes <mbenes@suse.cz>
    Tested-by: Nathan Chancellor <natechancellor@gmail.com>
    Link: https://github.com/ClangBuiltLinux/linux/issues/1254
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d92d00861e98db178bd721876d0a06d1e8d5ff1a
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue Jan 26 11:17:10 2021 +0000

    io_uring: fix sleeping under spin in __io_clean_op
    
    [ Upstream commit 9d5c8190683a462dbc787658467a0da17011ea5f ]
    
    [   27.629441] BUG: sleeping function called from invalid context
            at fs/file.c:402
    [   27.631317] in_atomic(): 1, irqs_disabled(): 1, non_block: 0,
            pid: 1012, name: io_wqe_worker-0
    [   27.633220] 1 lock held by io_wqe_worker-0/1012:
    [   27.634286]  #0: ffff888105e26c98 (&ctx->completion_lock)
            {....}-{2:2}, at: __io_req_complete.part.102+0x30/0x70
    [   27.649249] Call Trace:
    [   27.649874]  dump_stack+0xac/0xe3
    [   27.650666]  ___might_sleep+0x284/0x2c0
    [   27.651566]  put_files_struct+0xb8/0x120
    [   27.652481]  __io_clean_op+0x10c/0x2a0
    [   27.653362]  __io_cqring_fill_event+0x2c1/0x350
    [   27.654399]  __io_req_complete.part.102+0x41/0x70
    [   27.655464]  io_openat2+0x151/0x300
    [   27.656297]  io_issue_sqe+0x6c/0x14e0
    [   27.660991]  io_wq_submit_work+0x7f/0x240
    [   27.662890]  io_worker_handle_work+0x501/0x8a0
    [   27.664836]  io_wqe_worker+0x158/0x520
    [   27.667726]  kthread+0x134/0x180
    [   27.669641]  ret_from_fork+0x1f/0x30
    
    Instead of cleaning files on overflow, return back overflow cancellation
    into io_uring_cancel_files(). Previously it was racy to clean
    REQ_F_OVERFLOW flag, but we got rid of it, and can do it through
    repetitive attempts targeting all matching requests.
    
    Cc: stable@vger.kernel.org # 5.9+
    Reported-by: Abaci <abaci@linux.alibaba.com>
    Reported-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Xiaoguang Wang <xiaoguang.wang@linux.alibaba.com>
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7bccd1c19128140b9fefaa43808924c6932bef5b
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue Jan 26 11:17:09 2021 +0000

    io_uring: dont kill fasync under completion_lock
    
    [ Upstream commit 4aa84f2ffa81f71e15e5cffc2cc6090dbee78f8e ]
    
          CPU0                    CPU1
           ----                    ----
      lock(&new->fa_lock);
                                   local_irq_disable();
                                   lock(&ctx->completion_lock);
                                   lock(&new->fa_lock);
      <Interrupt>
        lock(&ctx->completion_lock);
    
     *** DEADLOCK ***
    
    Move kill_fasync() out of io_commit_cqring() to io_cqring_ev_posted(),
    so it doesn't hold completion_lock while doing it. That saves from the
    reported deadlock, and it's just nice to shorten the locking time and
    untangle nested locks (compl_lock -> wq_head::lock).
    
    Cc: stable@vger.kernel.org # 5.5+
    Reported-by: syzbot+91ca3f25bd7f795f019c@syzkaller.appspotmail.com
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 186725a80c4e931b6fe31b94d66c989d5f2354c1
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue Jan 26 11:17:08 2021 +0000

    io_uring: fix skipping disabling sqo on exec
    
    [ Upstream commit 0b5cd6c32b14413bf87e10ee62be3162588dcbe6 ]
    
    If there are no requests at the time __io_uring_task_cancel() is called,
    tctx_inflight() returns zero and and it terminates not getting a chance
    to go through __io_uring_files_cancel() and do
    io_disable_sqo_submit(). And we absolutely want them disabled by the
    time cancellation ends.
    
    Cc: stable@vger.kernel.org # 5.5+
    Reported-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Fixes: d9d05217cb69 ("io_uring: stop SQPOLL submit on creator's death")
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54b4c4f9aba9e5d1ef6877f42a57895b189107c9
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue Jan 26 11:17:07 2021 +0000

    io_uring: fix uring_flush in exit_files() warning
    
    [ Upstream commit 4325cb498cb743dacaa3edbec398c5255f476ef6 ]
    
    WARNING: CPU: 1 PID: 11100 at fs/io_uring.c:9096
            io_uring_flush+0x326/0x3a0 fs/io_uring.c:9096
    RIP: 0010:io_uring_flush+0x326/0x3a0 fs/io_uring.c:9096
    Call Trace:
     filp_close+0xb4/0x170 fs/open.c:1280
     close_files fs/file.c:401 [inline]
     put_files_struct fs/file.c:416 [inline]
     put_files_struct+0x1cc/0x350 fs/file.c:413
     exit_files+0x7e/0xa0 fs/file.c:433
     do_exit+0xc22/0x2ae0 kernel/exit.c:820
     do_group_exit+0x125/0x310 kernel/exit.c:922
     get_signal+0x3e9/0x20a0 kernel/signal.c:2770
     arch_do_signal_or_restart+0x2a8/0x1eb0 arch/x86/kernel/signal.c:811
     handle_signal_work kernel/entry/common.c:147 [inline]
     exit_to_user_mode_loop kernel/entry/common.c:171 [inline]
     exit_to_user_mode_prepare+0x148/0x250 kernel/entry/common.c:201
     __syscall_exit_to_user_mode_work kernel/entry/common.c:291 [inline]
     syscall_exit_to_user_mode+0x19/0x50 kernel/entry/common.c:302
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    An SQPOLL ring creator task may have gotten rid of its file note during
    exit and called io_disable_sqo_submit(), but the io_uring is still left
    referenced through fdtable, which will be put during close_files() and
    cause a false positive warning.
    
    First split the warning into two for more clarity when is hit, and the
    add sqo_dead check to handle the described case.
    
    Cc: stable@vger.kernel.org # 5.5+
    Reported-by: syzbot+a32b546d58dde07875a1@syzkaller.appspotmail.com
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0682759126bc761c325325ca809ae99c93fda2a0
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue Jan 26 11:17:06 2021 +0000

    io_uring: fix false positive sqo warning on flush
    
    [ Upstream commit 6b393a1ff1746a1c91bd95cbb2d79b104d8f15ac ]
    
    WARNING: CPU: 1 PID: 9094 at fs/io_uring.c:8884
            io_disable_sqo_submit+0x106/0x130 fs/io_uring.c:8884
    Call Trace:
     io_uring_flush+0x28b/0x3a0 fs/io_uring.c:9099
     filp_close+0xb4/0x170 fs/open.c:1280
     close_fd+0x5c/0x80 fs/file.c:626
     __do_sys_close fs/open.c:1299 [inline]
     __se_sys_close fs/open.c:1297 [inline]
     __x64_sys_close+0x2f/0xa0 fs/open.c:1297
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    io_uring's final close() may be triggered by any task not only the
    creator. It's well handled by io_uring_flush() including SQPOLL case,
    though a warning in io_disable_sqo_submit() will fallaciously fire by
    moving this warning out to the only call site that matters.
    
    Cc: stable@vger.kernel.org # 5.5+
    Reported-by: syzbot+2f5d1785dc624932da78@syzkaller.appspotmail.com
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8cb6f4da831bc51145aee3a923f03114121dea6b
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue Jan 26 11:17:05 2021 +0000

    io_uring: do sqo disable on install_fd error
    
    [ Upstream commit 06585c497b55045ec21aa8128e340f6a6587351c ]
    
    WARNING: CPU: 0 PID: 8494 at fs/io_uring.c:8717
            io_ring_ctx_wait_and_kill+0x4f2/0x600 fs/io_uring.c:8717
    Call Trace:
     io_uring_release+0x3e/0x50 fs/io_uring.c:8759
     __fput+0x283/0x920 fs/file_table.c:280
     task_work_run+0xdd/0x190 kernel/task_work.c:140
     tracehook_notify_resume include/linux/tracehook.h:189 [inline]
     exit_to_user_mode_loop kernel/entry/common.c:174 [inline]
     exit_to_user_mode_prepare+0x249/0x250 kernel/entry/common.c:201
     __syscall_exit_to_user_mode_work kernel/entry/common.c:291 [inline]
     syscall_exit_to_user_mode+0x19/0x50 kernel/entry/common.c:302
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    failed io_uring_install_fd() is a special case, we don't do
    io_ring_ctx_wait_and_kill() directly but defer it to fput, though still
    need to io_disable_sqo_submit() before.
    
    note: it doesn't fix any real problem, just a warning. That's because
    sqring won't be available to the userspace in this case and so SQPOLL
    won't submit anything.
    
    Cc: stable@vger.kernel.org # 5.5+
    Reported-by: syzbot+9c9c35374c0ecac06516@syzkaller.appspotmail.com
    Fixes: d9d05217cb69 ("io_uring: stop SQPOLL submit on creator's death")
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e3562e3b2aeb4a6aa4615185a8f59c51cade61b
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue Jan 26 11:17:04 2021 +0000

    io_uring: fix null-deref in io_disable_sqo_submit
    
    [ Upstream commit b4411616c26f26c4017b8fa4d3538b1a02028733 ]
    
    general protection fault, probably for non-canonical address
            0xdffffc0000000022: 0000 [#1] KASAN: null-ptr-deref
            in range [0x0000000000000110-0x0000000000000117]
    RIP: 0010:io_ring_set_wakeup_flag fs/io_uring.c:6929 [inline]
    RIP: 0010:io_disable_sqo_submit+0xdb/0x130 fs/io_uring.c:8891
    Call Trace:
     io_uring_create fs/io_uring.c:9711 [inline]
     io_uring_setup+0x12b1/0x38e0 fs/io_uring.c:9739
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    io_disable_sqo_submit() might be called before user rings were
    allocated, don't do io_ring_set_wakeup_flag() in those cases.
    
    Cc: stable@vger.kernel.org # 5.5+
    Reported-by: syzbot+ab412638aeb652ded540@syzkaller.appspotmail.com
    Fixes: d9d05217cb69 ("io_uring: stop SQPOLL submit on creator's death")
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a63d9157571b52f7339d6db4c2ab7bc3bfe527c0
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue Jan 26 11:17:03 2021 +0000

    io_uring: stop SQPOLL submit on creator's death
    
    [ Upstream commit d9d05217cb6990b9a56e13b56e7a1b71e2551f6c ]
    
    When the creator of SQPOLL io_uring dies (i.e. sqo_task), we don't want
    its internals like ->files and ->mm to be poked by the SQPOLL task, it
    have never been nice and recently got racy. That can happen when the
    owner undergoes destruction and SQPOLL tasks tries to submit new
    requests in parallel, and so calls io_sq_thread_acquire*().
    
    That patch halts SQPOLL submissions when sqo_task dies by introducing
    sqo_dead flag. Once set, the SQPOLL task must not do any submission,
    which is synchronised by uring_lock as well as the new flag.
    
    The tricky part is to make sure that disabling always happens, that
    means either the ring is discovered by creator's do_exit() -> cancel,
    or if the final close() happens before it's done by the creator. The
    last is guaranteed by the fact that for SQPOLL the creator task and only
    it holds exactly one file note, so either it pins up to do_exit() or
    removed by the creator on the final put in flush. (see comments in
    uring_flush() around file->f_count == 2).
    
    One more place that can trigger io_sq_thread_acquire_*() is
    __io_req_task_submit(). Shoot off requests on sqo_dead there, even
    though actually we don't need to. That's because cancellation of
    sqo_task should wait for the request before going any further.
    
    note 1: io_disable_sqo_submit() does io_ring_set_wakeup_flag() so the
    caller would enter the ring to get an error, but it still doesn't
    guarantee that the flag won't be cleared.
    
    note 2: if final __userspace__ close happens not from the creator
    task, the file note will pin the ring until the task dies.
    
    Cc: stable@vger.kernel.org # 5.5+
    Fixed: b1b6b5a30dce8 ("kernel/io_uring: cancel io_uring before task works")
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da67631a33c342528245817cc61e36dd945665b0
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue Jan 26 11:17:02 2021 +0000

    io_uring: add warn_once for io_uring_flush()
    
    [ Upstream commit 6b5733eb638b7068ab7cb34e663b55a1d1892d85]
    
    files_cancel() should cancel all relevant requests and drop file notes,
    so we should never have file notes after that, including on-exit fput
    and flush. Add a WARN_ONCE to be sure.
    
    Cc: stable@vger.kernel.org # 5.5+
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18f31594ee52ed1f364e376767fb839935fd899c
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue Jan 26 11:17:01 2021 +0000

    io_uring: inline io_uring_attempt_task_drop()
    
    [ Upstream commit 4f793dc40bc605b97624fd36baf085b3c35e8bfd ]
    
    A simple preparation change inlining io_uring_attempt_task_drop() into
    io_uring_flush().
    
    Cc: stable@vger.kernel.org # 5.5+
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7bf3fb6243a3b153ab1854b331ec19d67a4878bb
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue Jan 26 11:17:00 2021 +0000

    kernel/io_uring: cancel io_uring before task works
    
    [ Upstream commit b1b6b5a30dce872f500dc43f067cba8e7f86fc7d ]
    
    For cancelling io_uring requests it needs either to be able to run
    currently enqueued task_works or having it shut down by that moment.
    Otherwise io_uring_cancel_files() may be waiting for requests that won't
    ever complete.
    
    Go with the first way and do cancellations before setting PF_EXITING and
    so before putting the task_work infrastructure into a transition state
    where task_work_run() would better not be called.
    
    Cc: stable@vger.kernel.org # 5.5+
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 08a922a6fdf8c3eaea7f6a3beb13c6eed75994dc
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jan 12 14:24:48 2021 +0100

    iwlwifi: dbg: Don't touch the tlv data
    
    commit a6616bc9a0af7c65c0b0856a7508870a4a40c4ac upstream.
    
    The commit ba8f6f4ae254 ("iwlwifi: dbg: add dumping special device
    memory") added a termination of name string just to be sure, and this
    seems causing a regression, a GPF triggered at firmware loading.
    Basically we shouldn't modify the firmware data that may be provided
    as read-only.
    
    This patch drops the code that caused the regression and keep the tlv
    data as is.
    
    Fixes: ba8f6f4ae254 ("iwlwifi: dbg: add dumping special device memory")
    BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1180344
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=210733
    Cc: stable@vger.kernel.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Acked-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20210112132449.22243-2-tiwai@suse.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fa2fa7932f9f2e695453ed7160d557eced07bb4
Author: Bryan Tan <bryantan@vmware.com>
Date:   Mon Jan 18 19:16:29 2021 -0800

    RDMA/vmw_pvrdma: Fix network_hdr_type reported in WC
    
    commit 9f206f7398f6f6ec7dd0198c045c2459b4f720b6 upstream.
    
    The PVRDMA device HW interface defines network_hdr_type according to an
    old definition of the internal kernel rdma_network_type enum that has
    since changed, resulting in the wrong rdma_network_type being reported.
    
    Fix this by explicitly defining the enum used by the PVRDMA device and
    adding a function to convert the pvrdma_network_type to rdma_network_type
    enum.
    
    Cc: stable@vger.kernel.org # 5.10+
    Fixes: 1c15b4f2a42f ("RDMA/core: Modify enum ib_gid_type and enum rdma_network_type")
    Link: https://lore.kernel.org/r/1611026189-17943-1-git-send-email-bryantan@vmware.com
    Reviewed-by: Adit Ranadive <aditr@vmware.com>
    Signed-off-by: Bryan Tan <bryantan@vmware.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 77727dfda786ce1d333ebc9c8777d821fe86466a
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Mon Jan 18 16:37:00 2021 +0100

    media: v4l2-subdev.h: BIT() is not available in userspace
    
    commit a53e3c189cc6460b60e152af3fc24edf8e0ea9d2 upstream.
    
    The BIT macro is not available in userspace, so replace BIT(0) by
    0x00000001.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Fixes: 6446ec6cbf46 ("media: v4l2-subdev: add VIDIOC_SUBDEV_QUERYCAP ioctl")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94fb5ff34544897982f7773868fa10530f13bb2d
Author: Naushir Patuck <naush@raspberrypi.com>
Date:   Wed Jan 6 16:16:57 2021 +0100

    media: Revert "media: videobuf2: Fix length check for single plane dmabuf queueing"
    
    commit 95e9295daa849095d8be05fb6e26b2ba9be1594f upstream.
    
    The updated length check for dmabuf types broke existing usage in v4l2
    userland clients.
    
    Fixes: 961d3b27 ("media: videobuf2: Fix length check for single plane dmabuf queueing")
    Cc: stable@vger.kernel.org
    Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
    Tested-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
    Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0fa0a05b4089d136b9d2c1a32fc21320af05629b
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Mon Jan 18 21:45:23 2021 +0800

    HID: multitouch: Apply MT_QUIRK_CONFIDENCE quirk for multi-input devices
    
    commit 794c613383433ffc4fceec8eaa081b9f1962e287 upstream.
    
    Palm ejection stops working on some Elan and Synaptics touchpad after
    commit 40d5bb87377a ("HID: multitouch: enable multi-input as a quirk for
    some devices").
    
    The commit changes the mt_class from MT_CLS_WIN_8 to
    MT_CLS_WIN_8_FORCE_MULTI_INPUT, so MT_QUIRK_CONFIDENCE isn't applied
    anymore.
    
    So also apply the quirk since MT_CLS_WIN_8_FORCE_MULTI_INPUT is
    essentially MT_CLS_WIN_8.
    
    Fixes: 40d5bb87377a ("HID: multitouch: enable multi-input as a quirk for some devices")
    Cc: stable@vger.kernel.org
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7f6d4ab44344d71a64028f1dbdfbb1e8781572b
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Jan 21 10:46:49 2021 -0800

    HID: wacom: Correct NULL dereference on AES pen proximity
    
    commit 179e8e47c02a1950f1c556f2b854bdb2259078fb upstream.
    
    The recent commit to fix a memory leak introduced an inadvertant NULL
    pointer dereference. The `wacom_wac->pen_fifo` variable was never
    intialized, resuling in a crash whenever functions tried to use it.
    Since the FIFO is only used by AES pens (to buffer events from pen
    proximity until the hardware reports the pen serial number) this would
    have been easily overlooked without testing an AES device.
    
    This patch converts `wacom_wac->pen_fifo` over to a pointer (since the
    call to `devres_alloc` allocates memory for us) and ensures that we assign
    it to point to the allocated and initalized `pen_fifo` before the function
    returns.
    
    Link: https://github.com/linuxwacom/input-wacom/issues/230
    Fixes: 37309f47e2f5 ("HID: wacom: Fix memory leakage caused by kfifo_alloc")
    CC: stable@vger.kernel.org # v4.19+
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Tested-by: Ping Cheng <ping.cheng@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e843e4f782582a10e5077b917948d1df943070f6
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Jan 18 19:01:21 2021 +0100

    futex: Handle faults correctly for PI futexes
    
    commit 34b1a1ce1458f50ef27c54e28eb9b1947012907a upstream
    
    fixup_pi_state_owner() tries to ensure that the state of the rtmutex,
    pi_state and the user space value related to the PI futex are consistent
    before returning to user space. In case that the user space value update
    faults and the fault cannot be resolved by faulting the page in via
    fault_in_user_writeable() the function returns with -EFAULT and leaves
    the rtmutex and pi_state owner state inconsistent.
    
    A subsequent futex_unlock_pi() operates on the inconsistent pi_state and
    releases the rtmutex despite not owning it which can corrupt the RB tree of
    the rtmutex and cause a subsequent kernel stack use after free.
    
    It was suggested to loop forever in fixup_pi_state_owner() if the fault
    cannot be resolved, but that results in runaway tasks which is especially
    undesired when the problem happens due to a programming error and not due
    to malice.
    
    As the user space value cannot be fixed up, the proper solution is to make
    the rtmutex and the pi_state consistent so both have the same owner. This
    leaves the user space value out of sync. Any subsequent operation on the
    futex will fail because the 10th rule of PI futexes (pi_state owner and
    user space value are consistent) has been violated.
    
    As a consequence this removes the inept attempts of 'fixing' the situation
    in case that the current task owns the rtmutex when returning with an
    unresolvable fault by unlocking the rtmutex which left pi_state::owner and
    rtmutex::owner out of sync in a different and only slightly less dangerous
    way.
    
    Fixes: 1b7558e457ed ("futexes: fix fault handling in futex_lock_pi")
    Reported-by: gzobqq@gmail.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit abc4dd792f8db54470a888ca825166fbba59ee78
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Jan 19 16:26:38 2021 +0100

    futex: Simplify fixup_pi_state_owner()
    
    commit f2dac39d93987f7de1e20b3988c8685523247ae2 upstream
    
    Too many gotos already and an upcoming fix would make it even more
    unreadable.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a597f12e971c3859fdcc503a25008b37a891f043
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Jan 20 11:35:19 2021 +0100

    futex: Use pi_state_update_owner() in put_pi_state()
    
    commit 6ccc84f917d33312eb2846bd7b567639f585ad6d upstream
    
    No point in open coding it. This way it gains the extra sanity checks.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d28ac502f9a0cf30d7ca2eeeefbf8a98c01fe82
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Jan 20 11:32:07 2021 +0100

    rtmutex: Remove unused argument from rt_mutex_proxy_unlock()
    
    commit 2156ac1934166d6deb6cd0f6ffc4c1076ec63697 upstream
    
    Nothing uses the argument. Remove it as preparation to use
    pi_state_update_owner().
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b2c5a9561c24f3bcdcb85bb897bdc3aa3375c49
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Jan 19 15:21:35 2021 +0100

    futex: Provide and use pi_state_update_owner()
    
    commit c5cade200ab9a2a3be9e7f32a752c8d86b502ec7 upstream
    
    Updating pi_state::owner is done at several places with the same
    code. Provide a function for it and use that at the obvious places.
    
    This is also a preparation for a bug fix to avoid yet another copy of the
    same code or alternatively introducing a completely unpenetratable mess of
    gotos.
    
    Originally-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ede8ee2cb16f4dd066a37b38ad46576dbf20d45
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Jan 19 16:06:10 2021 +0100

    futex: Replace pointless printk in fixup_owner()
    
    commit 04b79c55201f02ffd675e1231d731365e335c307 upstream
    
    If that unexpected case of inconsistent arguments ever happens then the
    futex state is left completely inconsistent and the printk is not really
    helpful. Replace it with a warning and make the state consistent.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab5e9a320e444fda64e5912f0e0f4f02021569ea
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Jan 20 16:00:24 2021 +0100

    futex: Ensure the correct return value from futex_lock_pi()
    
    commit 12bb3f7f1b03d5913b3f9d4236a488aa7774dfe9 upstream
    
    In case that futex_lock_pi() was aborted by a signal or a timeout and the
    task returned without acquiring the rtmutex, but is the designated owner of
    the futex due to a concurrent futex_unlock_pi() fixup_owner() is invoked to
    establish consistent state. In that case it invokes fixup_pi_state_owner()
    which in turn tries to acquire the rtmutex again. If that succeeds then it
    does not propagate this success to fixup_owner() and futex_lock_pi()
    returns -EINTR or -ETIMEOUT despite having the futex locked.
    
    Return success from fixup_pi_state_owner() in all cases where the current
    task owns the rtmutex and therefore the futex and propagate it correctly
    through fixup_owner(). Fixup the other callsite which does not expect a
    positive return value.
    
    Fixes: c1e2f0eaf015 ("futex: Avoid violating the 10th rule of futex")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf5eb7d21ab01c12c35df05dddd15f9f2ad5ba71
Author: Wang Hai <wanghai38@huawei.com>
Date:   Thu Jan 28 19:32:50 2021 +0800

    Revert "mm/slub: fix a memory leak in sysfs_slab_add()"
    
    commit 757fed1d0898b893d7daa84183947c70f27632f3 upstream.
    
    This reverts commit dde3c6b72a16c2db826f54b2d49bdea26c3534a2.
    
    syzbot report a double-free bug. The following case can cause this bug.
    
     - mm/slab_common.c: create_cache(): if the __kmem_cache_create() fails,
       it does:
    
            out_free_cache:
                    kmem_cache_free(kmem_cache, s);
    
     - but __kmem_cache_create() - at least for slub() - will have done
    
            sysfs_slab_add(s)
                    -> sysfs_create_group() .. fails ..
                    -> kobject_del(&s->kobj); .. which frees s ...
    
    We can't remove the kmem_cache_free() in create_cache(), because other
    error cases of __kmem_cache_create() do not free this.
    
    So, revert the commit dde3c6b72a16 ("mm/slub: fix a memory leak in
    sysfs_slab_add()") to fix this.
    
    Reported-by: syzbot+d0bd96b4696c1ef67991@syzkaller.appspotmail.com
    Fixes: dde3c6b72a16 ("mm/slub: fix a memory leak in sysfs_slab_add()")
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43f2e6077f441d681f0337ab91f7c4c2d4c62761
Author: Baruch Siach <baruch@tkos.co.il>
Date:   Sun Jan 17 15:17:02 2021 +0200

    gpio: mvebu: fix pwm .get_state period calculation
    
    commit e73b0101ae5124bf7cd3fb5d250302ad2f16a416 upstream.
    
    The period is the sum of on and off values. That is, calculate period as
    
      ($on + $off) / clkrate
    
    instead of
    
      $off / clkrate - $on / clkrate
    
    that makes no sense.
    
    Reported-by: Russell King <linux@armlinux.org.uk>
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Fixes: 757642f9a584e ("gpio: mvebu: Add limited PWM support")
    Signed-off-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    [baruch: backport to kernels <= v5.10]
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>