• Nathan Chancellor's avatar
    MIPS: tlbex: Explicitly compare _PAGE_NO_EXEC against 0 · 74de14fe
    Nathan Chancellor authored
    When CONFIG_XPA is enabled, Clang warns:
    
      arch/mips/mm/tlbex.c:629:24: error: converting the result of '<<' to a boolean; did you mean '(1 << _PAGE_NO_EXEC_SHIFT) != 0'? [-Werror,-Wint-in-bool-context]
              if (cpu_has_rixi && !!_PAGE_NO_EXEC) {
                                  ^
      arch/mips/include/asm/pgtable-bits.h:174:28: note: expanded from macro '_PAGE_NO_EXEC'
      # define _PAGE_NO_EXEC          (1 << _PAGE_NO_EXEC_SHIFT)
                                         ^
      arch/mips/mm/tlbex.c:2568:24: error: converting the result of '<<' to a boolean; did you mean '(1 << _PAGE_NO_EXEC_SHIFT) != 0'? [-Werror,-Wint-in-bool-context]
              if (!cpu_has_rixi || !_PAGE_NO_EXEC) {
                                    ^
      arch/mips/include/asm/pgtable-bits.h:174:28: note: expanded from macro '_PAGE_NO_EXEC'
      # define _PAGE_NO_EXEC          (1 << _PAGE_NO_EXEC_SHIFT)
                                         ^
      2 errors generated.
    
    _PAGE_NO_EXEC can be '0' or '1 << _PAGE_NO_EXEC_SHIFT' depending on the
    build and runtime configuration, which is what the negation operators
    are trying to convey. To silence the warning, explicitly compare against
    0 so the result of the '<<' operator is not implicitly converted to a
    boolean.
    
    According to its documentation, GCC enables -Wint-in-bool-context with
    -Wall but this warning is not visible when building the same
    configuration with GCC. It appears GCC only warns when compiling C++,
    not C, although the documentation makes no note of this:
    https://godbolt.org/z/x39q3brxfReported-by: default avatarSudip Mukherjee (Codethink) <sudipm.mukherjee@gmail.com>
    Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
    Signed-off-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
    74de14fe
tlbex.c 70.5 KB