FAILED: patch "[PATCH] io_uring: use right issue_flags for splice/tee" failed to apply to 5.17-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.17-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From e941976659f1f6834077a1596bf53e6bdb10e90b Mon Sep 17 00:00:00 2001
From: Pavel Begunkov <[email protected]>
Date: Wed, 13 Apr 2022 16:10:33 +0100
Subject: [PATCH] io_uring: use right issue_flags for splice/tee
Pass right issue_flags into into io_file_get_fixed() instead of IO_URING_F_UNLOCKED. It's probably not a problem at the moment but let's do it safer.
fs/io_uring.c +2 -2
@@ -4358,7 +4358,7 @@ static int io_tee(struct io_kiocb *req, unsigned int issue_flags)return -EAGAIN ;if (sp->flags &SPLICE_F_FD_IN_FIXED ) - in =io_file_get_fixed (req, sp->splice_fd_in,IO_URING_F_UNLOCKED ); + in =io_file_get_fixed (req, sp->splice_fd_in, issue_flags);else in =io_file_get_normal (req, sp->splice_fd_in);if (!in) {
@@ -4400,7 +4400,7 @@ static int io_splice(struct io_kiocb *req, unsigned int issue_flags)return -EAGAIN ;if (sp->flags &SPLICE_F_FD_IN_FIXED ) - in =io_file_get_fixed (req, sp->splice_fd_in,IO_URING_F_UNLOCKED ); + in =io_file_get_fixed (req, sp->splice_fd_in, issue_flags);else in =io_file_get_normal (req, sp->splice_fd_in);if (!in) {
Quoted 5 lines · On 4/18/22 3:54 AM, [email protected] wrote:
The patch below does not apply to the 5.17-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
Here's this one, and the two others that failed to apply for 5.17-stable.
Signature · 1 line
Jens Axboe
From 8f8cabb77826b786c2f5a1854abad465f9fbfef2 Mon Sep 17 00:00:00 2001
From: Pavel Begunkov <[email protected]>
Date: Mon, 18 Apr 2022 06:41:20 -0600
Subject: [PATCH 3/3] io_uring: fix poll error reporting
commit 7179c3ce3dbff646c55f7cd664a895f462f049e5 upstream.
We should not return an error code in req->result in io_poll_check_events(), because it may get mangled and returned as success. Just return the error code directly, the callers will fail the request or proceed accordingly.
--- fs/io_uring.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
fs/io_uring.c +2 -3
@@ -5509,9 +5509,8 @@ static int io_poll_check_events(struct io_kiocb *req, bool locked)unsigned flags = locked ?0 :IO_URING_F_UNLOCKED ;if (unlikely (!io_assign_file (req, flags))) - req->result = -EBADF ; -else - req->result =vfs_poll (req->file, &pt) & poll->events; +return -EBADF ; + req->result =vfs_poll (req->file, &pt) & poll->events; }/* multishot, just fill an CQE and proceed */
Signature · 1 line
2.35.1
From cbb3f5938cdf975f2970f9b5674a56e6fa1a59ff Mon Sep 17 00:00:00 2001
From: Pavel Begunkov <[email protected]>
Date: Mon, 18 Apr 2022 06:40:30 -0600
Subject: [PATCH 2/3] io_uring: fix poll file assign deadlock
commit cce64ef01308b677a687d90927fc2b2e0e1cba67 upstream.
We pass "unlocked" into io_assign_file() in io_poll_check_events(), which can lead to double locking.
--- fs/io_uring.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/io_uring.c +2 -1
@@ -5506,8 +5506,9 @@ static int io_poll_check_events(struct io_kiocb *req, bool locked)if (!req->result) {struct poll_table_struct pt = { ._key = poll->events }; +unsigned flags = locked ?0 :IO_URING_F_UNLOCKED ; -if (unlikely (!io_assign_file (req,IO_URING_F_UNLOCKED ))) +if (unlikely (!io_assign_file (req, flags))) req->result = -EBADF ;else req->result =vfs_poll (req->file, &pt) & poll->events;
Signature · 1 line
2.35.1
From d5f62d8199e00d5af1a57f83ca1fcd49fecd3a36 Mon Sep 17 00:00:00 2001
From: Pavel Begunkov <[email protected]>
Date: Wed, 13 Apr 2022 16:10:33 +0100
Subject: [PATCH 1/3] io_uring: use right issue_flags for splice/tee
commit e941976659f1f6834077a1596bf53e6bdb10e90b upstream.
Pass right issue_flags into into io_file_get_fixed() instead of IO_URING_F_UNLOCKED. It's probably not a problem at the moment but let's do it safer.
--- fs/io_uring.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
fs/io_uring.c +2 -2
@@ -4136,7 +4136,7 @@ static int io_tee(struct io_kiocb *req, unsigned int issue_flags)return -EAGAIN ;if (sp->flags &SPLICE_F_FD_IN_FIXED ) - in =io_file_get_fixed (req, sp->splice_fd_in,IO_URING_F_UNLOCKED ); + in =io_file_get_fixed (req, sp->splice_fd_in, issue_flags);else in =io_file_get_normal (req, sp->splice_fd_in);if (!in) {
@@ -4178,7 +4178,7 @@ static int io_splice(struct io_kiocb *req, unsigned int issue_flags)return -EAGAIN ;if (sp->flags &SPLICE_F_FD_IN_FIXED ) - in =io_file_get_fixed (req, sp->splice_fd_in,IO_URING_F_UNLOCKED ); + in =io_file_get_fixed (req, sp->splice_fd_in, issue_flags);else in =io_file_get_normal (req, sp->splice_fd_in);if (!in) {
Signature · 1 line
2.35.1
Greg KH
maintainerQuoted 9 lines · Jens Axboe
Quoted 5 lines · On 4/18/22 3:54 AM, [email protected] wrote:
The patch below does not apply to the 5.17-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.Here's this one, and the two others that failed to apply for 5.17-stable.
Thanks for these, now queued up.
greg k-h
Quoted 8 lines · Greg KH
Quoted 7 lines · Jens Axboe
Quoted 5 lines · On 4/18/22 3:54 AM, [email protected] wrote:
The patch below does not apply to the 5.17-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
Quoted 4 lines
Quoted 2 lines
Here's this one, and the two others that failed to apply for 5.17-stable.
Thanks for these, now queued up.
Thanks Greg.
Signature · 1 line
Jens Axboe