]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop 4464853277d0ccdb9914608dd1332f0fa2f9846f from 6.1
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 28 Dec 2022 14:20:15 +0000 (15:20 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 28 Dec 2022 14:20:15 +0000 (15:20 +0100)
broke the build :(

queue-6.1/io_uring-pass-in-epoll_uring_wake-for-eventfd-signaling-and-wakeups.patch [deleted file]
queue-6.1/series

diff --git a/queue-6.1/io_uring-pass-in-epoll_uring_wake-for-eventfd-signaling-and-wakeups.patch b/queue-6.1/io_uring-pass-in-epoll_uring_wake-for-eventfd-signaling-and-wakeups.patch
deleted file mode 100644 (file)
index 8ef81bd..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-From 4464853277d0ccdb9914608dd1332f0fa2f9846f Mon Sep 17 00:00:00 2001
-From: Jens Axboe <axboe@kernel.dk>
-Date: Sun, 20 Nov 2022 10:18:45 -0700
-Subject: io_uring: pass in EPOLL_URING_WAKE for eventfd signaling and wakeups
-
-From: Jens Axboe <axboe@kernel.dk>
-
-commit 4464853277d0ccdb9914608dd1332f0fa2f9846f upstream.
-
-Pass in EPOLL_URING_WAKE when signaling eventfd or doing poll related
-wakups, so that we can check for a circular event dependency between
-eventfd and epoll. If this flag is set when our wakeup handlers are
-called, then we know we have a dependency that needs to terminate
-multishot requests.
-
-eventfd and epoll are the only such possible dependencies.
-
-Cc: stable@vger.kernel.org # 6.0
-Signed-off-by: Jens Axboe <axboe@kernel.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- io_uring/io_uring.c |    4 ++--
- io_uring/io_uring.h |   15 +++++++++++----
- io_uring/poll.c     |    8 ++++++++
- 3 files changed, 21 insertions(+), 6 deletions(-)
-
---- a/io_uring/io_uring.c
-+++ b/io_uring/io_uring.c
-@@ -495,7 +495,7 @@ static void io_eventfd_ops(struct rcu_he
-       int ops = atomic_xchg(&ev_fd->ops, 0);
-       if (ops & BIT(IO_EVENTFD_OP_SIGNAL_BIT))
--              eventfd_signal(ev_fd->cq_ev_fd, 1);
-+              eventfd_signal_mask(ev_fd->cq_ev_fd, 1, EPOLL_URING_WAKE);
-       /* IO_EVENTFD_OP_FREE_BIT may not be set here depending on callback
-        * ordering in a race but if references are 0 we know we have to free
-@@ -531,7 +531,7 @@ static void io_eventfd_signal(struct io_
-               goto out;
-       if (likely(eventfd_signal_allowed())) {
--              eventfd_signal(ev_fd->cq_ev_fd, 1);
-+              eventfd_signal_mask(ev_fd->cq_ev_fd, 1, EPOLL_URING_WAKE);
-       } else {
-               atomic_inc(&ev_fd->refs);
-               if (!atomic_fetch_or(BIT(IO_EVENTFD_OP_SIGNAL_BIT), &ev_fd->ops))
---- a/io_uring/io_uring.h
-+++ b/io_uring/io_uring.h
-@@ -4,6 +4,7 @@
- #include <linux/errno.h>
- #include <linux/lockdep.h>
- #include <linux/io_uring_types.h>
-+#include <uapi/linux/eventpoll.h>
- #include "io-wq.h"
- #include "slist.h"
- #include "filetable.h"
-@@ -207,12 +208,18 @@ static inline void io_commit_cqring(stru
- static inline void __io_cqring_wake(struct io_ring_ctx *ctx)
- {
-       /*
--       * wake_up_all() may seem excessive, but io_wake_function() and
--       * io_should_wake() handle the termination of the loop and only
--       * wake as many waiters as we need to.
-+       * Trigger waitqueue handler on all waiters on our waitqueue. This
-+       * won't necessarily wake up all the tasks, io_should_wake() will make
-+       * that decision.
-+       *
-+       * Pass in EPOLLIN|EPOLL_URING_WAKE as the poll wakeup key. The latter
-+       * set in the mask so that if we recurse back into our own poll
-+       * waitqueue handlers, we know we have a dependency between eventfd or
-+       * epoll and should terminate multishot poll at that point.
-        */
-       if (waitqueue_active(&ctx->cq_wait))
--              wake_up_all(&ctx->cq_wait);
-+              __wake_up(&ctx->cq_wait, TASK_NORMAL, 0,
-+                              poll_to_key(EPOLL_URING_WAKE | EPOLLIN));
- }
- static inline void io_cqring_wake(struct io_ring_ctx *ctx)
---- a/io_uring/poll.c
-+++ b/io_uring/poll.c
-@@ -429,6 +429,14 @@ static int io_poll_wake(struct wait_queu
-               return 0;
-       if (io_poll_get_ownership(req)) {
-+              /*
-+               * If we trigger a multishot poll off our own wakeup path,
-+               * disable multishot as there is a circular dependency between
-+               * CQ posting and triggering the event.
-+               */
-+              if (mask & EPOLL_URING_WAKE)
-+                      poll->events |= EPOLLONESHOT;
-+
-               /* optional, saves extra locking for removal in tw handler */
-               if (mask && poll->events & EPOLLONESHOT) {
-                       list_del_init(&poll->wait.entry);
index e9474cb07e765bd36d686a13e53a3c297000d9a2..b247b7b3d49cc35a71b348548631138ca052141d 100644 (file)
@@ -1135,7 +1135,6 @@ mm-gup-disallow-foll_force-foll_write-on-hugetlb-mappings.patch
 scsi-qla2xxx-fix-crash-when-i-o-abort-times-out.patch
 blk-iolatency-fix-memory-leak-on-add_disk-failures.patch
 io_uring-net-introduce-ioring_send_zc_report_usage-flag.patch
-io_uring-pass-in-epoll_uring_wake-for-eventfd-signaling-and-wakeups.patch
 io_uring-add-completion-locking-for-iopoll.patch
 io_uring-dont-remove-file-from-msg_ring-reqs.patch
 io_uring-improve-io_double_lock_ctx-fail-handling.patch