Messages in this thread | | | Date | Fri, 21 Nov 2014 14:23:01 -0500 | From | Steven Rostedt <> | Subject | Re: frequent lockups in 3.18rc4 |
| |
On Fri, 21 Nov 2014 11:06:41 -0800 Linus Torvalds <torvalds@linux-foundation.org> 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
| |