[PATCH] arm/mm: fix compiler warning in pmdp_invalidate() (in -next)
From: akpm@linux-foundation.org (Andrew Morton)
Date: 2015-02-11 22:06:20
Also in:
lkml
On Fri, 30 Jan 2015 16:40:15 +0000 Russell King - ARM Linux [off-list ref] wrote:
On Fri, Jan 30, 2015 at 04:37:32PM +0000, Andre Przywara wrote:quoted
Commit ff61d185f4e7 ("mm: convert p[te|md]_mknonnuma and remaining page table manipulations") removed a check in mm/pgtable-generic.c:pmdp_invalidate(), which leaves the pmd_mknotpresent macro the only user of the entry variable. For ARM/LPAE we use a constant 0 without referencing the argument to mark this condition, so the entry variable is no longer used here: mm/pgtable-generic.c: In function 'pmdp_invalidate': mm/pgtable-generic.c:195:8: warning: unused variable 'entry' [-Wunused-variable] pmd_t entry = *pmdp; ^ Replace the ARM macro implementation with a static inline function to get rid of this warning. Signed-off-by: Andre Przywara <andre.przywara@arm.com> --- Hi Andrew, Mel mentioned that I should send that simple fix below to you to merge it with his original mmotm patch: mm-convert-p_mknonnuma-and-remaining-page-table-manipulations.patch The commit message above contains the mmotm-reference to this patch, which will break when it hits mainline. Can you consider this? Given that's only a warning fix I am also happy with resending it after -rc1, if you reckon that this arch/arm change should not go via mmotm.This isn't correct though.quoted
/* represent a notpresent pmd by zero, this is used by pmdp_invalidate */ -#define pmd_mknotpresent(pmd) (__pmd(0)) +static inline pmd_t pmd_mknotpresent(pmd_t pmd) +{ + return 0; +}typedef struct { pmdval_t pmd; } pmd_t; typedef u32 pmdval_t; "0" is not compatible with pmd_t when STRICT_MM_TYPECHECKS is enabled.
This?
--- a/arch/arm/include/asm/pgtable-3level.h~mm-convert-p_mknonnuma-and-remaining-page-table-manipulations-fix-fix
+++ a/arch/arm/include/asm/pgtable-3level.h@@ -259,7 +259,7 @@ PMD_BIT_FUNC(mkyoung, |= PMD_SECT_AF); /* represent a notpresent pmd by zero, this is used by pmdp_invalidate */ static inline pmd_t pmd_mknotpresent(pmd_t pmd) { - return 0; + return __pmd(0); } static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot)