hc
2024-05-10 23fa18eaa71266feff7ba8d83022d9e1cc83c65a
kernel/fs/f2fs/inline.c
....@@ -65,7 +65,6 @@
6565 void f2fs_do_read_inline_data(struct page *page, struct page *ipage)
6666 {
6767 struct inode *inode = page->mapping->host;
68
- void *src_addr, *dst_addr;
6968
7069 if (PageUptodate(page))
7170 return;
....@@ -75,11 +74,8 @@
7574 zero_user_segment(page, MAX_INLINE_DATA(inode), PAGE_SIZE);
7675
7776 /* Copy the whole inline data block */
78
- src_addr = inline_data_addr(inode, ipage);
79
- dst_addr = kmap_atomic(page);
80
- memcpy(dst_addr, src_addr, MAX_INLINE_DATA(inode));
81
- flush_dcache_page(page);
82
- kunmap_atomic(dst_addr);
77
+ memcpy_to_page(page, 0, inline_data_addr(inode, ipage),
78
+ MAX_INLINE_DATA(inode));
8379 if (!PageUptodate(page))
8480 SetPageUptodate(page);
8581 }
....@@ -264,7 +260,6 @@
264260
265261 int f2fs_write_inline_data(struct inode *inode, struct page *page)
266262 {
267
- void *src_addr, *dst_addr;
268263 struct dnode_of_data dn;
269264 int err;
270265
....@@ -281,10 +276,8 @@
281276 f2fs_bug_on(F2FS_I_SB(inode), page->index);
282277
283278 f2fs_wait_on_page_writeback(dn.inode_page, NODE, true, true);
284
- src_addr = kmap_atomic(page);
285
- dst_addr = inline_data_addr(inode, dn.inode_page);
286
- memcpy(dst_addr, src_addr, MAX_INLINE_DATA(inode));
287
- kunmap_atomic(src_addr);
279
+ memcpy_from_page(inline_data_addr(inode, dn.inode_page),
280
+ page, 0, MAX_INLINE_DATA(inode));
288281 set_page_dirty(dn.inode_page);
289282
290283 f2fs_clear_page_cache_dirty_tag(page);
....@@ -445,18 +438,17 @@
445438
446439 dentry_blk = page_address(page);
447440
441
+ /*
442
+ * Start by zeroing the full block, to ensure that all unused space is
443
+ * zeroed and no uninitialized memory is leaked to disk.
444
+ */
445
+ memset(dentry_blk, 0, F2FS_BLKSIZE);
446
+
448447 make_dentry_ptr_inline(dir, &src, inline_dentry);
449448 make_dentry_ptr_block(dir, &dst, dentry_blk);
450449
451450 /* copy data from inline dentry block to new dentry block */
452451 memcpy(dst.bitmap, src.bitmap, src.nr_bitmap);
453
- memset(dst.bitmap + src.nr_bitmap, 0, dst.nr_bitmap - src.nr_bitmap);
454
- /*
455
- * we do not need to zero out remainder part of dentry and filename
456
- * field, since we have used bitmap for marking the usage status of
457
- * them, besides, we can also ignore copying/zeroing reserved space
458
- * of dentry block, because them haven't been used so far.
459
- */
460452 memcpy(dst.dentry, src.dentry, SIZE_OF_DIR_ENTRY * src.max);
461453 memcpy(dst.filename, src.filename, src.max * F2FS_SLOT_LEN);
462454