Re: [PATCH] mm/hmm: fix uninitialized use of 'entry' in hmm_vma_walk_pmd()

From: Andrew Morton
Date: Mon Jan 22 2018 - 15:58:42 EST


On Mon, 22 Jan 2018 13:57:59 -0500 jglisse@xxxxxxxxxx wrote:

> From: Ralph Campbell <rcampbell@xxxxxxxxxx>
>
> The variable 'entry' is used before being initialized in
> hmm_vma_walk_pmd()
>
> ...
>
> --- a/mm/hmm.c
> +++ b/mm/hmm.c
> @@ -418,7 +418,7 @@ static int hmm_vma_walk_pmd(pmd_t *pmdp,
> }
>
> if (!pte_present(pte)) {
> - swp_entry_t entry;
> + swp_entry_t entry = pte_to_swp_entry(pte);
>
> if (!non_swap_entry(entry)) {
> if (hmm_vma_walk->fault)
> @@ -426,8 +426,6 @@ static int hmm_vma_walk_pmd(pmd_t *pmdp,
> continue;
> }
>
> - entry = pte_to_swp_entry(pte);
> -
> /*
> * This is a special swap entry, ignore migration, use
> * device and report anything else as error.

Gee, how did that sneak through. gcc not clever enough...

I'll add a cc:stable to this, even though the changelog didn't tell us what
the runtime effects of the bug are. It should do so, so can you please
send us that description and I will add it, thanks.