|
@@ -217,6 +217,11 @@ static inline void prep_zero_page(struct page *page, int order, gfp_t gfp_flags)
|
|
|
int i;
|
|
|
|
|
|
BUG_ON((gfp_flags & (__GFP_WAIT | __GFP_HIGHMEM)) == __GFP_HIGHMEM);
|
|
|
+ /*
|
|
|
+ * clear_highpage() will use KM_USER0, so it's a bug to use __GFP_ZERO
|
|
|
+ * and __GFP_HIGHMEM from hard or soft interrupt context.
|
|
|
+ */
|
|
|
+ BUG_ON((gfp_flags & __GFP_HIGHMEM) && in_interrupt());
|
|
|
for (i = 0; i < (1 << order); i++)
|
|
|
clear_highpage(page + i);
|
|
|
}
|