diff options
Diffstat (limited to 'include/asm-avr32/pgalloc.h')
-rw-r--r-- | include/asm-avr32/pgalloc.h | 22 |
1 files changed, 2 insertions, 20 deletions
diff --git a/include/asm-avr32/pgalloc.h b/include/asm-avr32/pgalloc.h index 75248141c613..0e680f47209f 100644 --- a/include/asm-avr32/pgalloc.h +++ b/include/asm-avr32/pgalloc.h | |||
@@ -38,18 +38,9 @@ static inline void pgd_free(pgd_t *pgd) | |||
38 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, | 38 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, |
39 | unsigned long address) | 39 | unsigned long address) |
40 | { | 40 | { |
41 | int count = 0; | ||
42 | pte_t *pte; | 41 | pte_t *pte; |
43 | 42 | ||
44 | do { | 43 | pte = (pte_t *)get_zeroed_page(GFP_KERNEL | __GFP_REPEAT); |
45 | pte = (pte_t *) __get_free_page(GFP_KERNEL | __GFP_REPEAT); | ||
46 | if (pte) | ||
47 | clear_page(pte); | ||
48 | else { | ||
49 | current->state = TASK_UNINTERRUPTIBLE; | ||
50 | schedule_timeout(HZ); | ||
51 | } | ||
52 | } while (!pte && (count++ < 10)); | ||
53 | 44 | ||
54 | return pte; | 45 | return pte; |
55 | } | 46 | } |
@@ -57,18 +48,9 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, | |||
57 | static inline struct page *pte_alloc_one(struct mm_struct *mm, | 48 | static inline struct page *pte_alloc_one(struct mm_struct *mm, |
58 | unsigned long address) | 49 | unsigned long address) |
59 | { | 50 | { |
60 | int count = 0; | ||
61 | struct page *pte; | 51 | struct page *pte; |
62 | 52 | ||
63 | do { | 53 | pte = alloc_page(GFP_KERNEL | __GFP_REPEAT | __GFP_ZERO); |
64 | pte = alloc_pages(GFP_KERNEL, 0); | ||
65 | if (pte) | ||
66 | clear_page(page_address(pte)); | ||
67 | else { | ||
68 | current->state = TASK_UNINTERRUPTIBLE; | ||
69 | schedule_timeout(HZ); | ||
70 | } | ||
71 | } while (!pte && (count++ < 10)); | ||
72 | 54 | ||
73 | return pte; | 55 | return pte; |
74 | } | 56 | } |