]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ntfs: Do not kmap page cache pages for compression
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Fri, 18 Jul 2025 19:53:57 +0000 (20:53 +0100)
committerKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Fri, 17 Oct 2025 14:45:35 +0000 (16:45 +0200)
These pages are accessed through vmap; they are not accessed
by calling page_address(), so they do not need to be kmapped.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3/frecord.c

index 784291ae04e6be8905fe154799692c861e877892..e1832b66718ff9bff8af60454efcc8fc77d3f27c 100644 (file)
@@ -2407,9 +2407,6 @@ int ni_read_frame(struct ntfs_inode *ni, u64 frame_vbo, struct page **pages,
         * To simplify decompress algorithm do vmap for source
         * and target pages.
         */
-       for (i = 0; i < pages_per_frame; i++)
-               kmap(pages[i]);
-
        frame_size = pages_per_frame << PAGE_SHIFT;
        frame_mem = vmap(pages, pages_per_frame, VM_MAP, PAGE_KERNEL);
        if (!frame_mem) {
@@ -2655,7 +2652,6 @@ out1:
 out:
        for (i = 0; i < pages_per_frame; i++) {
                pg = pages[i];
-               kunmap(pg);
                SetPageUptodate(pg);
        }
 
@@ -2742,9 +2738,6 @@ int ni_write_frame(struct ntfs_inode *ni, struct page **pages,
                goto out1;
        }
 
-       for (i = 0; i < pages_per_frame; i++)
-               kmap(pages[i]);
-
        /* Map in-memory frame for read-only. */
        frame_mem = vmap(pages, pages_per_frame, VM_MAP, PAGE_KERNEL_RO);
        if (!frame_mem) {
@@ -2810,11 +2803,7 @@ int ni_write_frame(struct ntfs_inode *ni, struct page **pages,
 
 out3:
        vunmap(frame_mem);
-
 out2:
-       for (i = 0; i < pages_per_frame; i++)
-               kunmap(pages[i]);
-
        vunmap(frame_ondisk);
 out1:
        for (i = 0; i < pages_per_frame; i++) {