| From 458376913d86bed2fb781b4952eb6861675ef3be Mon Sep 17 00:00:00 2001 |
| From: Christophe Leroy <christophe.leroy@csgroup.eu> |
| Date: Fri, 16 Apr 2021 15:46:20 -0700 |
| Subject: mm: ptdump: fix build failure |
| |
| From: Christophe Leroy <christophe.leroy@csgroup.eu> |
| |
| commit 458376913d86bed2fb781b4952eb6861675ef3be upstream. |
| |
| READ_ONCE() cannot be used for reading PTEs. Use ptep_get() instead, to |
| avoid the following errors: |
| |
| CC mm/ptdump.o |
| In file included from <command-line>: |
| mm/ptdump.c: In function 'ptdump_pte_entry': |
| include/linux/compiler_types.h:320:38: error: call to '__compiletime_assert_207' declared with attribute error: Unsupported access size for {READ,WRITE}_ONCE(). |
| 320 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) |
| | ^ |
| include/linux/compiler_types.h:301:4: note: in definition of macro '__compiletime_assert' |
| 301 | prefix ## suffix(); \ |
| | ^~~~~~ |
| include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert' |
| 320 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) |
| | ^~~~~~~~~~~~~~~~~~~ |
| include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert' |
| 36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ |
| | ^~~~~~~~~~~~~~~~~~ |
| include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type' |
| 49 | compiletime_assert_rwonce_type(x); \ |
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| mm/ptdump.c:114:14: note: in expansion of macro 'READ_ONCE' |
| 114 | pte_t val = READ_ONCE(*pte); |
| | ^~~~~~~~~ |
| make[2]: *** [mm/ptdump.o] Error 1 |
| |
| See commit 481e980a7c19 ("mm: Allow arches to provide ptep_get()") and |
| commit c0e1c8c22beb ("powerpc/8xx: Provide ptep_get() with 16k pages") |
| for details. |
| |
| Link: https://lkml.kernel.org/r/912b349e2bcaa88939904815ca0af945740c6bd4.1618478922.git.christophe.leroy@csgroup.eu |
| Fixes: 30d621f6723b ("mm: add generic ptdump") |
| Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> |
| Cc: Steven Price <steven.price@arm.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| mm/ptdump.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/mm/ptdump.c |
| +++ b/mm/ptdump.c |
| @@ -111,7 +111,7 @@ static int ptdump_pte_entry(pte_t *pte, |
| unsigned long next, struct mm_walk *walk) |
| { |
| struct ptdump_state *st = walk->private; |
| - pte_t val = READ_ONCE(*pte); |
| + pte_t val = ptep_get(pte); |
| |
| if (st->effective_prot) |
| st->effective_prot(st, 4, pte_val(val)); |