diff mbox series

io_uring: ensure fput() called correspondingly when direct install fails

Message ID 20220527025400.51048-1-xiaoguang.wang@linux.alibaba.com (mailing list archive)
State New
Headers show
Series io_uring: ensure fput() called correspondingly when direct install fails | expand

Commit Message

Xiaoguang Wang May 27, 2022, 2:54 a.m. UTC
io_fixed_fd_install() may fail for short of free fixed file bitmap,
in this case, need to call fput() correspondingly.

Signed-off-by: Xiaoguang Wang <xiaoguang.wang@linux.alibaba.com>
---
 fs/io_uring.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Jens Axboe May 27, 2022, 3:52 a.m. UTC | #1
On 5/26/22 8:54 PM, Xiaoguang Wang wrote:
> io_fixed_fd_install() may fail for short of free fixed file bitmap,
> in this case, need to call fput() correspondingly.

Good catch - but it's a bit confusing how we handle this case
internally, and the other error case relies on that function doing the
fput (which it does).

Any chance we can get that cleaned up at the same time? Would make
errors in this error less likely in the future.
Xiaoguang Wang May 27, 2022, 4:08 a.m. UTC | #2
hi,

> On 5/26/22 8:54 PM, Xiaoguang Wang wrote:
>> io_fixed_fd_install() may fail for short of free fixed file bitmap,
>> in this case, need to call fput() correspondingly.
> Good catch - but it's a bit confusing how we handle this case
> internally, and the other error case relies on that function doing the
> fput (which it does).
>
> Any chance we can get that cleaned up at the same time? Would make
> errors in this error less likely in the future.
OK, sure, will try to prepare a better one.

Regards,
Xiaoguang Wang
>
Jens Axboe May 28, 2022, 2:14 a.m. UTC | #3
On Fri, 27 May 2022 10:54:00 +0800, Xiaoguang Wang wrote:
> io_fixed_fd_install() may fail for short of free fixed file bitmap,
> in this case, need to call fput() correspondingly.
> 
> 

Applied, thanks!

[1/1] io_uring: ensure fput() called correspondingly when direct install fails
      commit: 1c145c7f3616ec48725edeac8edf26ee6ed4b661

Best regards,
diff mbox series

Patch

diff --git a/fs/io_uring.c b/fs/io_uring.c
index d50bbf8de4fb..0190947fb1bf 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -5438,6 +5438,10 @@  static int io_file_bitmap_get(struct io_ring_ctx *ctx)
 	return -ENFILE;
 }
 
+/*
+ * Note when io_fixed_fd_install() returns error value, it will ensure
+ * fput() is called correspondingly.
+ */
 static int io_fixed_fd_install(struct io_kiocb *req, unsigned int issue_flags,
 			       struct file *file, unsigned int file_slot)
 {
@@ -5450,6 +5454,7 @@  static int io_fixed_fd_install(struct io_kiocb *req, unsigned int issue_flags,
 		ret = io_file_bitmap_get(ctx);
 		if (unlikely(ret < 0)) {
 			io_ring_submit_unlock(ctx, issue_flags);
+			fput(file);
 			return ret;
 		}