diff --git a/fs/io_uring.c b/fs/io_uring.c
index 32e37c38f274edc9877a988ee44c88b8c7772e96..a9ce2e6f03ddc8a9ff810889ade924f28c232dd9 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -6851,8 +6851,10 @@ static int __io_sqe_files_update(struct io_ring_ctx *ctx,
 			}
 			table->files[index] = file;
 			err = io_sqe_file_register(ctx, file, i);
-			if (err)
+			if (err) {
+				fput(file);
 				break;
+			}
 		}
 		nr_args--;
 		done++;