ext4: Call ext4_journal_stop(handle) only once in ext4_dio_write_iter()
authorMarkus Elfring <elfring@users.sourceforge.net>
Wed, 25 Sep 2024 19:47:39 +0000 (21:47 +0200)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 30 Oct 2024 21:42:44 +0000 (17:42 -0400)
An ext4_journal_stop(handle) call was immediately used after a return value
check for a ext4_orphan_add() call in this function implementation.
Thus call such a function only once instead directly before the check.

This issue was transformed by using the Coccinelle software.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Reviewed-by: Zhang Yi <yi.zhang@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/cf895072-43cf-412c-bced-8268498ad13e@web.de
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/file.c

index f14aed14b9cf3d944b8d6726362ee5a69a9a0597..23005f1345a8615405a8892e006d759deb004acd 100644 (file)
@@ -564,12 +564,9 @@ static ssize_t ext4_dio_write_iter(struct kiocb *iocb, struct iov_iter *from)
                }
 
                ret = ext4_orphan_add(handle, inode);
-               if (ret) {
-                       ext4_journal_stop(handle);
-                       goto out;
-               }
-
                ext4_journal_stop(handle);
+               if (ret)
+                       goto out;
        }
 
        if (ilock_shared && !unwritten)