On 9/23/19 11:15 AM, Steve Wahl wrote:
>       pmd = fixup_pointer(level2_kernel_pgt, physaddr);
> -     for (i = 0; i < PTRS_PER_PMD; i++) {
> +     for (i = 0; i < pmd_index((unsigned long)_text); i++)
> +             pmd[i] &= ~_PAGE_PRESENT;
> +
> +     for (; i <= pmd_index((unsigned long)_end); i++)
>               if (pmd[i] & _PAGE_PRESENT)
>                       pmd[i] += load_delta;
> -     }
> +
> +     for (; i < PTRS_PER_PMD; i++)
> +             pmd[i] &= ~_PAGE_PRESENT;

This is looking a bunch better.  The broken-up loop could probably use
some comments, or you could combine it back to a single loop like this:

        int text_start_pmd_index = pmd_index((unsigned long)_text);
        int text_end_pmd_index   = pmd_index((unsigned long)_end);

        for (i = 0; i < PTRS_PER_PMD; i++) {
                if ((i < text_start_pmd_index) ||
                    (i > text_end_pmd_index)) {
                        /* Unmap entries not mapping the kernel image */
                        pmd[i] &= ~_PAGE_PRESENT;
                } else if (pmd[i] & _PAGE_PRESENT)
                        pmd[i] += load_delta;
                }
        }

Although I'd prefer it get commented or rewritten, it's passable like
this, so:

Reviewed-by: Dave Hansen <dave.han...@linux.intel.com>

Reply via email to