linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mm/highmem: fix __kmap_to_page() build error
@ 2026-01-16 17:18 William Tambe
  2026-01-16 17:48 ` Andrew Morton
  0 siblings, 1 reply; 3+ messages in thread
From: William Tambe @ 2026-01-16 17:18 UTC (permalink / raw)
  To: akpm; +Cc: linux-mm, linux-kernel, jcmvbkbc

From 706fa431358390713c47667f6bcaecce56d071cc Mon Sep 17 00:00:00 2001
From: William Tambe <williamt@cadence.com>
Date: Thu, 11 Dec 2025 12:38:19 -0800
Subject: [PATCH] mm/highmem: fix __kmap_to_page() build error

This changes fixes following build error which is probably a miss from:
ef6e06b2ef87 highmem: fix kmap_to_page() for kmap_local_page() addresses

mm/highmem.c:184:66: error: 'pteval' undeclared (first use in this
function); did you mean 'pte_val'?
184 | idx = arch_kmap_local_map_idx(i, pte_pfn(pteval));

In __kmap_to_page(), pteval is used but does not exist in the function.

Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: William Tambe <williamt@cadence.com>
---
 mm/highmem.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/mm/highmem.c b/mm/highmem.c
index b5c8e4c2d5d4..a33e41183951 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -180,12 +180,13 @@ struct page *__kmap_to_page(void *vaddr)
 		for (i = 0; i < kctrl->idx; i++) {
 			unsigned long base_addr;
 			int idx;
+			pte_t pteval = kctrl->pteval[i];
 
 			idx = arch_kmap_local_map_idx(i, pte_pfn(pteval));
 			base_addr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
 
 			if (base_addr == base)
-				return pte_page(kctrl->pteval[i]);
+				return pte_page(pteval);
 		}
 	}
 
-- 
2.43.0



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] mm/highmem: fix __kmap_to_page() build error
  2026-01-16 17:18 [PATCH] mm/highmem: fix __kmap_to_page() build error William Tambe
@ 2026-01-16 17:48 ` Andrew Morton
  2026-01-16 17:59   ` William Tambe
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Morton @ 2026-01-16 17:48 UTC (permalink / raw)
  To: William Tambe; +Cc: linux-mm, linux-kernel, jcmvbkbc

On Fri, 16 Jan 2026 17:18:21 +0000 William Tambe <williamt@cadence.com> wrote:

> >From 706fa431358390713c47667f6bcaecce56d071cc Mon Sep 17 00:00:00 2001
> From: William Tambe <williamt@cadence.com>
> Date: Thu, 11 Dec 2025 12:38:19 -0800
> Subject: [PATCH] mm/highmem: fix __kmap_to_page() build error
> 
> This changes fixes following build error which is probably a miss from:
> ef6e06b2ef87 highmem: fix kmap_to_page() for kmap_local_page() addresses
> 
> mm/highmem.c:184:66: error: 'pteval' undeclared (first use in this
> function); did you mean 'pte_val'?
> 184 | idx = arch_kmap_local_map_idx(i, pte_pfn(pteval));
> 
> In __kmap_to_page(), pteval is used but does not exist in the function.
> 
> ...
>
> --- a/mm/highmem.c
> +++ b/mm/highmem.c
> @@ -180,12 +180,13 @@ struct page *__kmap_to_page(void *vaddr)
>  		for (i = 0; i < kctrl->idx; i++) {
>  			unsigned long base_addr;
>  			int idx;
> +			pte_t pteval = kctrl->pteval[i];
>  
>  			idx = arch_kmap_local_map_idx(i, pte_pfn(pteval));
>  			base_addr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
>  
>  			if (base_addr == base)
> -				return pte_page(kctrl->pteval[i]);
> +				return pte_page(pteval);
>  		}
>  	}

lgtm, thanks.  Seems to affect only xtensa?

I wonder why it took three years to find this.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: [PATCH] mm/highmem: fix __kmap_to_page() build error
  2026-01-16 17:48 ` Andrew Morton
@ 2026-01-16 17:59   ` William Tambe
  0 siblings, 0 replies; 3+ messages in thread
From: William Tambe @ 2026-01-16 17:59 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-mm, linux-kernel, jcmvbkbc


> -----Original Message-----
> From: Andrew Morton <akpm@linux-foundation.org>
> Sent: Friday, January 16, 2026 11:48 AM
> To: William Tambe <williamt@cadence.com>
> Cc: linux-mm@kvack.org; linux-kernel@vger.kernel.org; jcmvbkbc@gmail.com
> Subject: Re: [PATCH] mm/highmem: fix __kmap_to_page() build error
> 
> EXTERNAL MAIL
> 
> 
> On Fri, 16 Jan 2026 17:18:21 +0000 William Tambe <williamt@cadence.com>
> wrote:
> 
> > >From 706fa431358390713c47667f6bcaecce56d071cc Mon Sep 17
> 00:00:00 2001
> > From: William Tambe <williamt@cadence.com>
> > Date: Thu, 11 Dec 2025 12:38:19 -0800
> > Subject: [PATCH] mm/highmem: fix __kmap_to_page() build error
> >
> > This changes fixes following build error which is probably a miss from:
> > ef6e06b2ef87 highmem: fix kmap_to_page() for kmap_local_page()
> addresses
> >
> > mm/highmem.c:184:66: error: 'pteval' undeclared (first use in this
> > function); did you mean 'pte_val'?
> > 184 | idx = arch_kmap_local_map_idx(i, pte_pfn(pteval));
> >
> > In __kmap_to_page(), pteval is used but does not exist in the function.
> >
> > ...
> >
> > --- a/mm/highmem.c
> > +++ b/mm/highmem.c
> > @@ -180,12 +180,13 @@ struct page *__kmap_to_page(void *vaddr)
> >  		for (i = 0; i < kctrl->idx; i++) {
> >  			unsigned long base_addr;
> >  			int idx;
> > +			pte_t pteval = kctrl->pteval[i];
> >
> >  			idx = arch_kmap_local_map_idx(i, pte_pfn(pteval));
> >  			base_addr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
> >
> >  			if (base_addr == base)
> > -				return pte_page(kctrl->pteval[i]);
> > +				return pte_page(pteval);
> >  		}
> >  	}
> 
> lgtm, thanks.  Seems to affect only xtensa?
> 
> I wonder why it took three years to find this.

It occurs in configurations with aliased cache.
Most people probably built with cores that don't have cache aliasing.
In that case involved macros just drop the undefined argument hiding breakage.

There is a description of cache aliasing in:
arch/xtensa/include/asm/page.h




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-01-16 17:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-01-16 17:18 [PATCH] mm/highmem: fix __kmap_to_page() build error William Tambe
2026-01-16 17:48 ` Andrew Morton
2026-01-16 17:59   ` William Tambe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox