ARM: 9032/1: arm/mm: Convert PUD level pgtable helper macros into functions
authorAnshuman Khandual <anshuman.khandual@arm.com>
Mon, 30 Nov 2020 09:28:20 +0000 (10:28 +0100)
committerRussell King <rmk+kernel@armlinux.org.uk>
Mon, 21 Dec 2020 11:19:19 +0000 (11:19 +0000)
Macros used as functions can be problematic from the compiler perspective.
There was a build failure report caused primarily because of non reference
of an argument variable. Hence convert PUD level pgtable helper macros into
functions in order to avoid such problems in the future. In the process, it

fixes the argument variables sequence in set_pud() which probably remained
hidden for being a macro.

https://lore.kernel.org/linux-mm/202011020749.5XQ3Hfzc-lkp@intel.com/
https://lore.kernel.org/linux-mm/5fa49698.Vu2O3r+dU20UoEJ+%25lkp@intel.com/

Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
arch/arm/include/asm/pgtable-2level.h

index 3502c2f..9d4f5ee 100644 (file)
  * the pud: the pud entry is never bad, always exists, and can't be set or
  * cleared.
  */
-#define pud_none(pud)          (0)
-#define pud_bad(pud)           (0)
-#define pud_present(pud)       (1)
-#define pud_clear(pudp)                do { } while (0)
-#define set_pud(pud,pudp)      do { } while (0)
+static inline int pud_none(pud_t pud)
+{
+       return 0;
+}
+
+static inline int pud_bad(pud_t pud)
+{
+       return 0;
+}
+
+static inline int pud_present(pud_t pud)
+{
+       return 1;
+}
+
+static inline void pud_clear(pud_t *pudp)
+{
+}
+
+static inline void set_pud(pud_t *pudp, pud_t pud)
+{
+}
 
 static inline pmd_t *pmd_offset(pud_t *pud, unsigned long addr)
 {