]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
gfs2: Use memcpy_{from,to}_page where appropriate
authorAndreas Gruenbacher <agruenba@redhat.com>
Tue, 27 Jun 2023 13:34:36 +0000 (15:34 +0200)
committerAndreas Gruenbacher <agruenba@redhat.com>
Mon, 3 Jul 2023 20:30:48 +0000 (22:30 +0200)
Replace kmap_local_page() + memcpy() + kunmap_local() sequences with
memcpy_{from,to}_page() where we are not doing anything else with the
mapped page.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/aops.c
fs/gfs2/lops.c
fs/gfs2/quota.c

index c45bac9b5408ab04c395963ed92e7989296ef236..b11ec198183bbe017daf15ec65f6dc327566af3f 100644 (file)
@@ -488,7 +488,6 @@ int gfs2_internal_read(struct gfs2_inode *ip, char *buf, loff_t *pos,
        unsigned copied = 0;
        unsigned amt;
        struct page *page;
-       void *p;
 
        do {
                page = read_cache_page(mapping, index, gfs2_read_folio, NULL);
@@ -497,12 +496,10 @@ int gfs2_internal_read(struct gfs2_inode *ip, char *buf, loff_t *pos,
                                continue;
                        return PTR_ERR(page);
                }
-               p = kmap_local_page(page);
                amt = size - copied;
                if (offset + size > PAGE_SIZE)
                        amt = PAGE_SIZE - offset;
-               memcpy(buf + copied, p + offset, amt);
-               kunmap_local(p);
+               memcpy_from_page(buf + copied, page, offset, amt);
                put_page(page);
                copied += amt;
                index++;
index 17641d90394b947393dec61ab1b5eeec2feb109d..251322b016314ab53d009333ef882c886747cefd 100644 (file)
@@ -697,14 +697,12 @@ static void gfs2_before_commit(struct gfs2_sbd *sdp, unsigned int limit,
                        lock_buffer(bd2->bd_bh);
 
                        if (buffer_escaped(bd2->bd_bh)) {
-                               void *kaddr;
+                               void *p;
+
                                page = mempool_alloc(gfs2_page_pool, GFP_NOIO);
-                               ptr = page_address(page);
-                               kaddr = kmap_local_page(bd2->bd_bh->b_page);
-                               memcpy(ptr, kaddr + bh_offset(bd2->bd_bh),
-                                      bd2->bd_bh->b_size);
-                               kunmap_local(kaddr);
-                               *(__be32 *)ptr = 0;
+                               p = page_address(page);
+                               memcpy_from_page(p, page, bh_offset(bd2->bd_bh), bd2->bd_bh->b_size);
+                               *(__be32 *)p = 0;
                                clear_buffer_escaped(bd2->bd_bh);
                                unlock_buffer(bd2->bd_bh);
                                brelse(bd2->bd_bh);
index 42a3f1e6b553768881ca9f433901e3426e8ac73b..7765346e3617f1baa2927119fc4792d4d1f6045e 100644 (file)
@@ -712,7 +712,6 @@ static int gfs2_write_buf_to_page(struct gfs2_inode *ip, unsigned long index,
        struct address_space *mapping = inode->i_mapping;
        struct page *page;
        struct buffer_head *bh;
-       void *kaddr;
        u64 blk;
        unsigned bsize = sdp->sd_sb.sb_bsize, bnum = 0, boff = 0;
        unsigned to_write = bytes, pg_off = off;
@@ -764,9 +763,7 @@ static int gfs2_write_buf_to_page(struct gfs2_inode *ip, unsigned long index,
        }
 
        /* Write to the page, now that we have setup the buffer(s) */
-       kaddr = kmap_local_page(page);
-       memcpy(kaddr + off, buf, bytes);
-       kunmap_local(kaddr);
+       memcpy_to_page(page, off, buf, bytes);
        flush_dcache_page(page);
        unlock_page(page);
        put_page(page);