]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/gt: Replace kmap with its safer kmap_local_page counterpart
authorAndi Shyti <andi.shyti@linux.intel.com>
Fri, 14 Feb 2025 00:34:37 +0000 (01:34 +0100)
committerAndi Shyti <andi.shyti@linux.intel.com>
Mon, 17 Feb 2025 14:02:43 +0000 (15:02 +0100)
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: Andi Shyti <andi.shyti@linux.intel.com>
Reviewed-by: Krzysztof Karas <krzysztof.karas@intel.com>
Reviewed-by: Nitin Gote <nitin.r.gote@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250214003437.1311476-1-andi.shyti@linux.intel.com
drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
drivers/gpu/drm/i915/gt/shmem_utils.c

index 0ffba50981e3ba7a90ba4639e2d811d03cad7770..00f7cd6debf331f63aa5b723e2e6b525dfc51f84 100644 (file)
@@ -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);
 }
 
 /**
index bb696b29ee2c992c6b6d0ec5ae538f9ebbb9ed29..365c4b8b04f4ed822945f472deedc9f6cc2f89fd 100644 (file)
@@ -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;