Re: [PATCH V6 2/2] mm/debug: Add tests validating architecture page table helpers

From: Qian Cai
Date: Tue Oct 15 2019 - 14:09:48 EST


On Tue, 2019-10-15 at 14:51 +0530, Anshuman Khandual wrote:
> +static unsigned long __init get_random_vaddr(void)
> +{
> + unsigned long random_vaddr, random_pages, total_user_pages;
> +
> + total_user_pages = (TASK_SIZE - FIRST_USER_ADDRESS) / PAGE_SIZE;
> +
> + random_pages = get_random_long() % total_user_pages;
> + random_vaddr = FIRST_USER_ADDRESS + random_pages * PAGE_SIZE;
> +
> + WARN_ON(random_vaddr > TASK_SIZE);
> + WARN_ON(random_vaddr < FIRST_USER_ADDRESS);

It would be nice if this patch does not introduce a new W=1 GCC warning here on
x86 because FIRST_USER_ADDRESS is 0, and GCC think the code is dumb because
"random_vaddr" is unsigned,

In file included from ./arch/x86/include/asm/bug.h:83,
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂfrom ./include/linux/bug.h:5,
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂfrom ./include/linux/mmdebug.h:5,
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂfrom ./include/linux/gfp.h:5,
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂfrom mm/debug_vm_pgtable.c:13:
mm/debug_vm_pgtable.c: In function âget_random_vaddrâ:
mm/debug_vm_pgtable.c:359:23: warning: comparison of unsigned expression < 0 is
always false [-Wtype-limits]
 WARN_ON(random_vaddr < FIRST_USER_ADDRESS);
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ^
./include/asm-generic/bug.h:113:25: note: in definition of macro âWARN_ONâ
 int __ret_warn_on = !!(condition);ÂÂÂÂ\
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ^~~~~~~~~