diff options
author | Kirill A. Shutemov <kirill.shutemov@linux.intel.com> | 2015-02-12 17:59:59 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-12 21:54:10 -0500 |
commit | 2d2f5119b8bb057595e18f5b2f07aa097ea1b233 (patch) | |
tree | 60d98464937b95ad2f68220251c998dfe461830b | |
parent | f48b80a5e22200347e91f96b8b237b24b93c7192 (diff) |
mm: do not use mm->nr_pmds on !MMU configurations
mm->nr_pmds doesn't make sense on !MMU configurations
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | include/linux/mm.h | 9 | ||||
-rw-r--r-- | kernel/fork.c | 4 |
2 files changed, 9 insertions, 4 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h index af4ff88a11e0..bd52e2f14027 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -1447,13 +1447,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, | |||
1447 | int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address); | 1447 | int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address); |
1448 | #endif | 1448 | #endif |
1449 | 1449 | ||
1450 | #ifdef __PAGETABLE_PMD_FOLDED | 1450 | #if defined(__PAGETABLE_PMD_FOLDED) || !defined(CONFIG_MMU) |
1451 | static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud, | 1451 | static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud, |
1452 | unsigned long address) | 1452 | unsigned long address) |
1453 | { | 1453 | { |
1454 | return 0; | 1454 | return 0; |
1455 | } | 1455 | } |
1456 | 1456 | ||
1457 | static inline void mm_nr_pmds_init(struct mm_struct *mm) {} | ||
1458 | |||
1457 | static inline unsigned long mm_nr_pmds(struct mm_struct *mm) | 1459 | static inline unsigned long mm_nr_pmds(struct mm_struct *mm) |
1458 | { | 1460 | { |
1459 | return 0; | 1461 | return 0; |
@@ -1465,6 +1467,11 @@ static inline void mm_dec_nr_pmds(struct mm_struct *mm) {} | |||
1465 | #else | 1467 | #else |
1466 | int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address); | 1468 | int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address); |
1467 | 1469 | ||
1470 | static inline void mm_nr_pmds_init(struct mm_struct *mm) | ||
1471 | { | ||
1472 | atomic_long_set(&mm->nr_pmds, 0); | ||
1473 | } | ||
1474 | |||
1468 | static inline unsigned long mm_nr_pmds(struct mm_struct *mm) | 1475 | static inline unsigned long mm_nr_pmds(struct mm_struct *mm) |
1469 | { | 1476 | { |
1470 | return atomic_long_read(&mm->nr_pmds); | 1477 | return atomic_long_read(&mm->nr_pmds); |
diff --git a/kernel/fork.c b/kernel/fork.c index 66e19c251581..cf65139615a0 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -555,9 +555,7 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p) | |||
555 | INIT_LIST_HEAD(&mm->mmlist); | 555 | INIT_LIST_HEAD(&mm->mmlist); |
556 | mm->core_state = NULL; | 556 | mm->core_state = NULL; |
557 | atomic_long_set(&mm->nr_ptes, 0); | 557 | atomic_long_set(&mm->nr_ptes, 0); |
558 | #ifndef __PAGETABLE_PMD_FOLDED | 558 | mm_nr_pmds_init(mm); |
559 | atomic_long_set(&mm->nr_pmds, 0); | ||
560 | #endif | ||
561 | mm->map_count = 0; | 559 | mm->map_count = 0; |
562 | mm->locked_vm = 0; | 560 | mm->locked_vm = 0; |
563 | mm->pinned_vm = 0; | 561 | mm->pinned_vm = 0; |