From: Greg Kroah-Hartman Date: Mon, 23 Dec 2024 12:43:53 +0000 (+0100) Subject: 5.4-stable patches X-Git-Tag: v6.1.122~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fba9acdf39d24c44076e50a1a58bb219643cc701;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: epoll-add-synchronous-wakeup-support-for-ep_poll_callback.patch --- diff --git a/queue-5.4/epoll-add-synchronous-wakeup-support-for-ep_poll_callback.patch b/queue-5.4/epoll-add-synchronous-wakeup-support-for-ep_poll_callback.patch new file mode 100644 index 00000000000..1b2a127dc25 --- /dev/null +++ b/queue-5.4/epoll-add-synchronous-wakeup-support-for-ep_poll_callback.patch @@ -0,0 +1,55 @@ +From 900bbaae67e980945dec74d36f8afe0de7556d5a Mon Sep 17 00:00:00 2001 +From: Xuewen Yan +Date: Fri, 26 Apr 2024 16:05:48 +0800 +Subject: epoll: Add synchronous wakeup support for ep_poll_callback + +From: Xuewen Yan + +commit 900bbaae67e980945dec74d36f8afe0de7556d5a upstream. + +Now, the epoll only use wake_up() interface to wake up task. +However, sometimes, there are epoll users which want to use +the synchronous wakeup flag to hint the scheduler, such as +Android binder driver. +So add a wake_up_sync() define, and use the wake_up_sync() +when the sync is true in ep_poll_callback(). + +Co-developed-by: Jing Xia +Signed-off-by: Jing Xia +Signed-off-by: Xuewen Yan +Link: https://lore.kernel.org/r/20240426080548.8203-1-xuewen.yan@unisoc.com +Tested-by: Brian Geffon +Reviewed-by: Brian Geffon +Reported-by: Benoit Lize +Signed-off-by: Christian Brauner +Cc: Brian Geffon +Signed-off-by: Greg Kroah-Hartman +--- + fs/eventpoll.c | 5 ++++- + include/linux/wait.h | 1 + + 2 files changed, 5 insertions(+), 1 deletion(-) + +--- a/fs/eventpoll.c ++++ b/fs/eventpoll.c +@@ -1273,7 +1273,10 @@ static int ep_poll_callback(wait_queue_e + break; + } + } +- wake_up(&ep->wq); ++ if (sync) ++ wake_up_sync(&ep->wq); ++ else ++ wake_up(&ep->wq); + } + if (waitqueue_active(&ep->poll_wait)) + pwake++; +--- a/include/linux/wait.h ++++ b/include/linux/wait.h +@@ -213,6 +213,7 @@ void __wake_up_pollfree(struct wait_queu + #define wake_up_all(x) __wake_up(x, TASK_NORMAL, 0, NULL) + #define wake_up_locked(x) __wake_up_locked((x), TASK_NORMAL, 1) + #define wake_up_all_locked(x) __wake_up_locked((x), TASK_NORMAL, 0) ++#define wake_up_sync(x) __wake_up_sync(x, TASK_NORMAL) + + #define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL) + #define wake_up_interruptible_nr(x, nr) __wake_up(x, TASK_INTERRUPTIBLE, nr, NULL) diff --git a/queue-5.4/series b/queue-5.4/series index f4208f9642c..c1e2a15397c 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -30,3 +30,4 @@ nilfs2-prevent-use-of-deleted-inode.patch udmabuf-also-check-for-f_seal_future_write.patch of-fix-error-path-in-of_parse_phandle_with_args_map.patch of-fix-refcount-leakage-for-of-node-returned-by-__of_get_dma_parent.patch +epoll-add-synchronous-wakeup-support-for-ep_poll_callback.patch