Re: [PATCH] mm: Suppress mm/memory.o warning on older compilers if !CONFIG_NUMA_BALANCING

Andrew Morton
2012-12-17T20:49:51Z

On Mon, 17 Dec 2012 11:49:17 +0000
Mel Gorman <mgorman@suse.de> wrote:

> The kbuild test robot reported the following after the merge of Automatic
> NUMA Balancing when cross-compiling for avr32.
>
> mm/memory.c: In function 'do_pmd_numa_page':
> mm/memory.c:3593: warning: no return statement in function returning non-void
>
> The code is unreachable but the avr32 cross-compiler was not new enough
> to know that. This patch suppresses the warning.
>
> Signed-off-by: Mel Gorman <mgorman@suse.de>
> ---
> mm/memory.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/mm/memory.c b/mm/memory.c
> index e6a3b93..23f1fdf 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -3590,6 +3590,7 @@ static int do_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma,
> unsigned long addr, pmd_t *pmdp)
> {
> BUG();
> + return 0;
> }
> #endif /* CONFIG_NUMA_BALANCING */

Odd. avr32's BUG() includes a call to unreachable(), which should
evaluate to "do { } while (1)". Can you check that this is working?

Perhaps it _is_ working, but the compiler incorrectly thinks that the
function can return?