Commit 3a79e5a8 authored by Andi Shyti's avatar Andi Shyti
Browse files

drm/i915/gt: Replace kmap with its safer kmap_local_page counterpart



kmap_local_page(), unlike kmap(), performs a contextualized
mapping of pages. This means the pages are mapped locally to the
thread that created them, making them invisible outside the
thread and safer to use.

Replace kmap() and kunmap() with kmap_local_page() and
kunmap_local() counterparts for improved safety.

Signed-off-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
Reviewed-by: default avatarKrzysztof Karas <krzysztof.karas@intel.com>
Reviewed-by: default avatarNitin Gote <nitin.r.gote@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250214003437.1311476-1-andi.shyti@linux.intel.com
parent c088387d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -749,7 +749,7 @@ static void swizzle_page(struct page *page)
	char *vaddr;
	int i;

	vaddr = kmap(page);
	vaddr = kmap_local_page(page);

	for (i = 0; i < PAGE_SIZE; i += 128) {
		memcpy(temp, &vaddr[i], 64);
@@ -757,7 +757,7 @@ static void swizzle_page(struct page *page)
		memcpy(&vaddr[i + 64], temp, 64);
	}

	kunmap(page);
	kunmap_local(vaddr);
}

/**
+4 −4
Original line number Diff line number Diff line
@@ -108,7 +108,7 @@ static int __shmem_rw(struct file *file, loff_t off,
		if (IS_ERR(page))
			return PTR_ERR(page);

		vaddr = kmap(page);
		vaddr = kmap_local_page(page);
		if (write) {
			memcpy(vaddr + offset_in_page(off), ptr, this);
			set_page_dirty(page);
@@ -116,7 +116,7 @@ static int __shmem_rw(struct file *file, loff_t off,
			memcpy(ptr, vaddr + offset_in_page(off), this);
		}
		mark_page_accessed(page);
		kunmap(page);
		kunmap_local(vaddr);
		put_page(page);

		len -= this;
@@ -143,11 +143,11 @@ int shmem_read_to_iosys_map(struct file *file, loff_t off,
		if (IS_ERR(page))
			return PTR_ERR(page);

		vaddr = kmap(page);
		vaddr = kmap_local_page(page);
		iosys_map_memcpy_to(map, map_off, vaddr + offset_in_page(off),
				    this);
		mark_page_accessed(page);
		kunmap(page);
		kunmap_local(vaddr);
		put_page(page);

		len -= this;