[PATCH] mm: prep_zero_page() in irq is a bug
prep_zero_page() uses KM_USER0 and hence may not be used from IRQ context, at least for highmem pages. Cc: Nick Piggin <nickpiggin@yahoo.com.au> Cc: Christoph Lameter <christoph@lameter.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
17cf44064a
commit
6626c5d53b
1 changed files with 5 additions and 0 deletions
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue