mm/kmemleak.c: use address-of operator on section symbols
Clang warns: mm/kmemleak.c:1955:28: warning: array comparison always evaluates to a constant [-Wtautological-compare] if (__start_ro_after_init < _sdata || __end_ro_after_init > _edata) ^ mm/kmemleak.c:1955:60: warning: array comparison always evaluates to a constant [-Wtautological-compare] if (__start_ro_after_init < _sdata || __end_ro_after_init > _edata) These are not true arrays, they are linker defined symbols, which are just addresses. Using the address of operator silences the warning and does not change the resulting assembly with either clang/ld.lld or gcc/ld (tested with diff + objdump -Dr). Suggested-by: Nick Desaulniers <ndesaulniers@google.com> Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Link: https://github.com/ClangBuiltLinux/linux/issues/895 Link: http://lkml.kernel.org/r/20200220051551.44000-1-natechancellor@gmail.com Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
667c790169
commit
b0d14fc43d
|
@ -1947,7 +1947,7 @@ void __init kmemleak_init(void)
|
||||||
create_object((unsigned long)__bss_start, __bss_stop - __bss_start,
|
create_object((unsigned long)__bss_start, __bss_stop - __bss_start,
|
||||||
KMEMLEAK_GREY, GFP_ATOMIC);
|
KMEMLEAK_GREY, GFP_ATOMIC);
|
||||||
/* only register .data..ro_after_init if not within .data */
|
/* only register .data..ro_after_init if not within .data */
|
||||||
if (__start_ro_after_init < _sdata || __end_ro_after_init > _edata)
|
if (&__start_ro_after_init < &_sdata || &__end_ro_after_init > &_edata)
|
||||||
create_object((unsigned long)__start_ro_after_init,
|
create_object((unsigned long)__start_ro_after_init,
|
||||||
__end_ro_after_init - __start_ro_after_init,
|
__end_ro_after_init - __start_ro_after_init,
|
||||||
KMEMLEAK_GREY, GFP_ATOMIC);
|
KMEMLEAK_GREY, GFP_ATOMIC);
|
||||||
|
|
Loading…
Reference in New Issue