Message ID | 20150312220756.GA4792@node.dhcp.inet.fi (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On Thu, Mar 12, 2015 at 08:41:37PM -0400, John David Anglin wrote: > On 2015-03-12, at 6:07 PM, Kirill A. Shutemov wrote: > > > There's hack in pgd_alloc() on parisc to initialize one pmd, which is not > > accounted and we get underflow on exit. We need to adjust accounting for > > that pmd. > > > > Could you try the patch below? > > > > diff --git a/arch/parisc/include/asm/pgalloc.h b/arch/parisc/include/asm/pgalloc.h > > index f213f5b4c423..8ee9a0bdc468 100644 > > --- a/arch/parisc/include/asm/pgalloc.h > > +++ b/arch/parisc/include/asm/pgalloc.h > > @@ -38,6 +38,7 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm) > > /* The first pmd entry also is marked with _PAGE_GATEWAY as > > * a signal that this pmd may not be freed */ > > __pgd_val_set(*pgd, PxD_FLAG_ATTACHED); > > + mm_inc_nr_pmds(mm); > > #endif > > } > > return actual_pgd; > > The patch fixes the BUG messages. > > Helge, the #ifdef in pgd_alloc doesn't seem correct. We only have a L2/L3 scheme when > "defined(CONFIG_64BIT) && defined(CONFIG_PARISC_PAGE_SIZE_4KB)". Looks like you're correct. But that's separate issue. Please, post a patch.
diff --git a/arch/parisc/include/asm/pgalloc.h b/arch/parisc/include/asm/pgalloc.h index f213f5b4c423..8ee9a0bdc468 100644 --- a/arch/parisc/include/asm/pgalloc.h +++ b/arch/parisc/include/asm/pgalloc.h @@ -38,6 +38,7 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm) /* The first pmd entry also is marked with _PAGE_GATEWAY as * a signal that this pmd may not be freed */ __pgd_val_set(*pgd, PxD_FLAG_ATTACHED); + mm_inc_nr_pmds(mm); #endif } return actual_pgd;