--- /dev/null
+From 803feb0668f7cfda70a0e49bb7b070502a8dddc3 Mon Sep 17 00:00:00 2001
+From: Jens Axboe <axboe@kernel.dk>
+Date: Wed, 22 Jun 2022 14:05:49 -0600
+Subject: io_uring: add missing item types for various requests
+
+From: Jens Axboe <axboe@kernel.dk>
+
+Any read/write should grab current->nsproxy, denoted by IO_WQ_WORK_FILES
+as it refers to current->files as well, and connect and recv/recvmsg,
+send/sendmsg should grab current->fs which is denoted by IO_WQ_WORK_FS.
+
+No upstream commit exists for this issue.
+
+Reported-by: Bing-Jhong Billy Jheng <billy@starlabs.sg>
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/io_uring.c | 23 ++++++++++++++---------
+ 1 file changed, 14 insertions(+), 9 deletions(-)
+
+--- a/fs/io_uring.c
++++ b/fs/io_uring.c
+@@ -773,7 +773,8 @@ static const struct io_op_def io_op_defs
+ .buffer_select = 1,
+ .needs_async_data = 1,
+ .async_size = sizeof(struct io_async_rw),
+- .work_flags = IO_WQ_WORK_MM | IO_WQ_WORK_BLKCG,
++ .work_flags = IO_WQ_WORK_MM | IO_WQ_WORK_BLKCG |
++ IO_WQ_WORK_FILES,
+ },
+ [IORING_OP_WRITEV] = {
+ .needs_file = 1,
+@@ -783,7 +784,7 @@ static const struct io_op_def io_op_defs
+ .needs_async_data = 1,
+ .async_size = sizeof(struct io_async_rw),
+ .work_flags = IO_WQ_WORK_MM | IO_WQ_WORK_BLKCG |
+- IO_WQ_WORK_FSIZE,
++ IO_WQ_WORK_FSIZE | IO_WQ_WORK_FILES,
+ },
+ [IORING_OP_FSYNC] = {
+ .needs_file = 1,
+@@ -794,7 +795,8 @@ static const struct io_op_def io_op_defs
+ .unbound_nonreg_file = 1,
+ .pollin = 1,
+ .async_size = sizeof(struct io_async_rw),
+- .work_flags = IO_WQ_WORK_BLKCG | IO_WQ_WORK_MM,
++ .work_flags = IO_WQ_WORK_BLKCG | IO_WQ_WORK_MM |
++ IO_WQ_WORK_FILES,
+ },
+ [IORING_OP_WRITE_FIXED] = {
+ .needs_file = 1,
+@@ -803,7 +805,7 @@ static const struct io_op_def io_op_defs
+ .pollout = 1,
+ .async_size = sizeof(struct io_async_rw),
+ .work_flags = IO_WQ_WORK_BLKCG | IO_WQ_WORK_FSIZE |
+- IO_WQ_WORK_MM,
++ IO_WQ_WORK_MM | IO_WQ_WORK_FILES,
+ },
+ [IORING_OP_POLL_ADD] = {
+ .needs_file = 1,
+@@ -857,7 +859,7 @@ static const struct io_op_def io_op_defs
+ .pollout = 1,
+ .needs_async_data = 1,
+ .async_size = sizeof(struct io_async_connect),
+- .work_flags = IO_WQ_WORK_MM,
++ .work_flags = IO_WQ_WORK_MM | IO_WQ_WORK_FS,
+ },
+ [IORING_OP_FALLOCATE] = {
+ .needs_file = 1,
+@@ -885,7 +887,8 @@ static const struct io_op_def io_op_defs
+ .pollin = 1,
+ .buffer_select = 1,
+ .async_size = sizeof(struct io_async_rw),
+- .work_flags = IO_WQ_WORK_MM | IO_WQ_WORK_BLKCG,
++ .work_flags = IO_WQ_WORK_MM | IO_WQ_WORK_BLKCG |
++ IO_WQ_WORK_FILES,
+ },
+ [IORING_OP_WRITE] = {
+ .needs_file = 1,
+@@ -894,7 +897,7 @@ static const struct io_op_def io_op_defs
+ .pollout = 1,
+ .async_size = sizeof(struct io_async_rw),
+ .work_flags = IO_WQ_WORK_MM | IO_WQ_WORK_BLKCG |
+- IO_WQ_WORK_FSIZE,
++ IO_WQ_WORK_FSIZE | IO_WQ_WORK_FILES,
+ },
+ [IORING_OP_FADVISE] = {
+ .needs_file = 1,
+@@ -907,14 +910,16 @@ static const struct io_op_def io_op_defs
+ .needs_file = 1,
+ .unbound_nonreg_file = 1,
+ .pollout = 1,
+- .work_flags = IO_WQ_WORK_MM | IO_WQ_WORK_BLKCG,
++ .work_flags = IO_WQ_WORK_MM | IO_WQ_WORK_BLKCG |
++ IO_WQ_WORK_FS,
+ },
+ [IORING_OP_RECV] = {
+ .needs_file = 1,
+ .unbound_nonreg_file = 1,
+ .pollin = 1,
+ .buffer_select = 1,
+- .work_flags = IO_WQ_WORK_MM | IO_WQ_WORK_BLKCG,
++ .work_flags = IO_WQ_WORK_MM | IO_WQ_WORK_BLKCG |
++ IO_WQ_WORK_FS,
+ },
+ [IORING_OP_OPENAT2] = {
+ .work_flags = IO_WQ_WORK_FILES | IO_WQ_WORK_FS |