diff --git a/fs/io_uring.c b/fs/io_uring.c
index 605f253e8f9399b8a6648a7c1c30c7189b04caf3..a3a0348ab6eb7ab3605ef069787921d6db4d7271 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -2431,11 +2431,11 @@ static void kiocb_end_write(struct io_kiocb *req)
 	 * thread.
 	 */
 	if (req->flags & REQ_F_ISREG) {
-		struct inode *inode = file_inode(req->file);
+		struct super_block *sb = file_inode(req->file)->i_sb;
 
-		__sb_writers_acquired(inode->i_sb, SB_FREEZE_WRITE);
+		__sb_writers_acquired(sb, SB_FREEZE_WRITE);
+		sb_end_write(sb);
 	}
-	file_end_write(req->file);
 }
 
 #ifdef CONFIG_BLOCK