diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/page_alloc.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index bdff85899638..ed91684cb1f5 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -217,6 +217,11 @@ static inline void prep_zero_page(struct page *page, int order, gfp_t gfp_flags) | |||
217 | int i; | 217 | int i; |
218 | 218 | ||
219 | BUG_ON((gfp_flags & (__GFP_WAIT | __GFP_HIGHMEM)) == __GFP_HIGHMEM); | 219 | BUG_ON((gfp_flags & (__GFP_WAIT | __GFP_HIGHMEM)) == __GFP_HIGHMEM); |
220 | /* | ||
221 | * clear_highpage() will use KM_USER0, so it's a bug to use __GFP_ZERO | ||
222 | * and __GFP_HIGHMEM from hard or soft interrupt context. | ||
223 | */ | ||
224 | BUG_ON((gfp_flags & __GFP_HIGHMEM) && in_interrupt()); | ||
220 | for (i = 0; i < (1 << order); i++) | 225 | for (i = 0; i < (1 << order); i++) |
221 | clear_highpage(page + i); | 226 | clear_highpage(page + i); |
222 | } | 227 | } |