]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ntfs: fix error handling in ntfs_write_iomap_end_resident()
authorNamjae Jeon <linkinjeon@kernel.org>
Mon, 27 Apr 2026 13:58:52 +0000 (22:58 +0900)
committerNamjae Jeon <linkinjeon@kernel.org>
Mon, 27 Apr 2026 13:58:52 +0000 (22:58 +0900)
When ntfs_attr_get_search_ctx() fails and returns NULL, the function
returned early without calling put_page(ipage).
Fix this by jumping to err_out label on error. The err_out path now
properly releases the page and the mutex, with a NULL check for
the search context.

Reported-by: DaeMyung Kang <charsyam@gmail.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
fs/ntfs/iomap.c

index 74a4d3e971f4d2f81fb5de30f597ec0b87e1568d..dc7d8c893a699f99f8b39c4cced537e695129be0 100644 (file)
@@ -788,8 +788,7 @@ static int ntfs_write_iomap_end_resident(struct inode *inode, loff_t pos,
        ctx = ntfs_attr_get_search_ctx(ni, NULL);
        if (!ctx) {
                written = -ENOMEM;
-               mutex_unlock(&ni->mrec_lock);
-               return written;
+               goto err_out;
        }
 
        err = ntfs_attr_lookup(ni->type, ni->name, ni->name_len,
@@ -810,7 +809,8 @@ static int ntfs_write_iomap_end_resident(struct inode *inode, loff_t pos,
        memcpy(kattr + pos, iomap_inline_data(iomap, pos), written);
        mark_mft_record_dirty(ctx->ntfs_ino);
 err_out:
-       ntfs_attr_put_search_ctx(ctx);
+       if (ctx)
+               ntfs_attr_put_search_ctx(ctx);
        put_page(ipage);
        mutex_unlock(&ni->mrec_lock);
        return written;