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

Krzysztof Karas krzysztof.karas at intel.com
Mon Jan 13 09:54:26 UTC 2025


Hi Andi,

On 2025-01-10 at 11:01:55 +0100, Andi Shyti wrote:
> 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 at linux.intel.com>
> ---
>  drivers/gpu/drm/i915/gt/shmem_utils.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/shmem_utils.c b/drivers/gpu/drm/i915/gt/shmem_utils.c
> index bb696b29ee2c..365c4b8b04f4 100644
> --- a/drivers/gpu/drm/i915/gt/shmem_utils.c
> +++ b/drivers/gpu/drm/i915/gt/shmem_utils.c
> @@ -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;
> -- 

Reviewed-by: Krzysztof Karas <krzysztof.karas at intel.com>

Krzysztof
> 


More information about the dri-devel mailing list