Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3ecb01df authored by Jan Beulich's avatar Jan Beulich Committed by Linus Torvalds
Browse files

use clear_page()/copy_page() in favor of memset()/memcpy() on whole pages



After all that's what they are intended for.

Signed-off-by: default avatarJan Beulich <jbeulich@novell.com>
Cc: Miklos Szeredi <miklos@szeredi.hu>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent b6472776
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -811,7 +811,7 @@ static int fuse_copy_page(struct fuse_copy_state *cs, struct page **pagep,

	if (page && zeroing && count < PAGE_SIZE) {
		void *mapaddr = kmap_atomic(page, KM_USER1);
		memset(mapaddr, 0, PAGE_SIZE);
		clear_page(mapaddr);
		kunmap_atomic(mapaddr, KM_USER1);
	}
	while (count) {
+1 −1
Original line number Diff line number Diff line
@@ -816,7 +816,7 @@ static int kimage_load_normal_segment(struct kimage *image,

		ptr = kmap(page);
		/* Start with a clear page */
		memset(ptr, 0, PAGE_SIZE);
		clear_page(ptr);
		ptr += maddr & ~PAGE_MASK;
		mchunk = PAGE_SIZE - (maddr & ~PAGE_MASK);
		if (mchunk > mbytes)
+7 −7
Original line number Diff line number Diff line
@@ -993,7 +993,7 @@ static void copy_data_page(unsigned long dst_pfn, unsigned long src_pfn)
			 */
			safe_copy_page(buffer, s_page);
			dst = kmap_atomic(d_page, KM_USER0);
			memcpy(dst, buffer, PAGE_SIZE);
			copy_page(dst, buffer);
			kunmap_atomic(dst, KM_USER0);
		} else {
			safe_copy_page(page_address(d_page), s_page);
@@ -1687,7 +1687,7 @@ int snapshot_read_next(struct snapshot_handle *handle)
		memory_bm_position_reset(&orig_bm);
		memory_bm_position_reset(&copy_bm);
	} else if (handle->cur <= nr_meta_pages) {
		memset(buffer, 0, PAGE_SIZE);
		clear_page(buffer);
		pack_pfns(buffer, &orig_bm);
	} else {
		struct page *page;
@@ -1701,7 +1701,7 @@ int snapshot_read_next(struct snapshot_handle *handle)
			void *kaddr;

			kaddr = kmap_atomic(page, KM_USER0);
			memcpy(buffer, kaddr, PAGE_SIZE);
			copy_page(buffer, kaddr);
			kunmap_atomic(kaddr, KM_USER0);
			handle->buffer = buffer;
		} else {
@@ -1984,7 +1984,7 @@ static void copy_last_highmem_page(void)
		void *dst;

		dst = kmap_atomic(last_highmem_page, KM_USER0);
		memcpy(dst, buffer, PAGE_SIZE);
		copy_page(dst, buffer);
		kunmap_atomic(dst, KM_USER0);
		last_highmem_page = NULL;
	}
@@ -2270,9 +2270,9 @@ swap_two_pages_data(struct page *p1, struct page *p2, void *buf)

	kaddr1 = kmap_atomic(p1, KM_USER0);
	kaddr2 = kmap_atomic(p2, KM_USER1);
	memcpy(buf, kaddr1, PAGE_SIZE);
	memcpy(kaddr1, kaddr2, PAGE_SIZE);
	memcpy(kaddr2, buf, PAGE_SIZE);
	copy_page(buf, kaddr1);
	copy_page(kaddr1, kaddr2);
	copy_page(kaddr2, buf);
	kunmap_atomic(kaddr2, KM_USER1);
	kunmap_atomic(kaddr1, KM_USER0);
}
+3 −3
Original line number Diff line number Diff line
@@ -251,7 +251,7 @@ static int write_page(void *buf, sector_t offset, struct bio **bio_chain)
	if (bio_chain) {
		src = (void *)__get_free_page(__GFP_WAIT | __GFP_HIGH);
		if (src) {
			memcpy(src, buf, PAGE_SIZE);
			copy_page(src, buf);
		} else {
			WARN_ON_ONCE(1);
			bio_chain = NULL;	/* Go synchronous */
@@ -325,7 +325,7 @@ static int swap_write_page(struct swap_map_handle *handle, void *buf,
		error = write_page(handle->cur, handle->cur_swap, NULL);
		if (error)
			goto out;
		memset(handle->cur, 0, PAGE_SIZE);
		clear_page(handle->cur);
		handle->cur_swap = offset;
		handle->k = 0;
	}
@@ -910,7 +910,7 @@ int swsusp_check(void)
	hib_resume_bdev = open_by_devnum(swsusp_resume_device, FMODE_READ);
	if (!IS_ERR(hib_resume_bdev)) {
		set_blocksize(hib_resume_bdev, PAGE_SIZE);
		memset(swsusp_header, 0, PAGE_SIZE);
		clear_page(swsusp_header);
		error = hib_bio_read_page(swsusp_resume_block,
					swsusp_header, NULL);
		if (error)
+1 −1
Original line number Diff line number Diff line
@@ -2080,7 +2080,7 @@ static inline void cow_user_page(struct page *dst, struct page *src, unsigned lo
		 * zeroes.
		 */
		if (__copy_from_user_inatomic(kaddr, uaddr, PAGE_SIZE))
			memset(kaddr, 0, PAGE_SIZE);
			clear_page(kaddr);
		kunmap_atomic(kaddr, KM_USER0);
		flush_dcache_page(dst);
	} else