Re: frequent lockups in 3.18rc4

From: Steven Rostedt
Date: Fri Nov 21 2014 - 14:23:20 EST


On Fri, 21 Nov 2014 11:06:41 -0800
Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:

> static noinline int vmalloc_fault(unsigned long address)
> {
> pgd_t *pgd_dst;
> pgdval_t pgd_entry;
> unsigned index = pgd_index(address);
>
> if (index < KERNEL_PGD_BOUNDARY)
> return -1;
>
> pgd_entry = init_mm.pgd[index].pgd;
> if (!pgd_entry)
> return -1;

Should we at least check to see if it is present?

if (!(pgd_entry & 1))
return -1;

?

-- Steve

>
> pgd_dst = __va(PAGE_MASK & read_cr3());
> pgd_dst += index;
>
> if (pgd_dst->pgd)
> return -1;
>
> ACCESS_ONCE(pgd_dst->pgd) = pgd_entry;
> return 0;
> }
> NOKPROBE_SYMBOL(vmalloc_fault);
>
> Hmm? Does anybody see anything fundamentally wrong with this?
>
> Linus

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/