[PATCH] cpuset: might_sleep_if check in cpuset_zones_allowed
It's too easy to incorrectly call cpuset_zone_allowed() in an atomic context without __GFP_HARDWALL set, and when done, it is not noticed until a tight memory situation forces allocations to be tried outside the current cpuset. Add a 'might_sleep_if()' check, to catch this earlier on, instead of waiting for a similar check in the mutex_lock() code, which is only rarely invoked. Signed-off-by: Paul Jackson <pj@sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
36be57ffe3
commit
92d1dbd274
|
@ -2261,6 +2261,7 @@ int __cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask)
|
||||||
if (in_interrupt())
|
if (in_interrupt())
|
||||||
return 1;
|
return 1;
|
||||||
node = z->zone_pgdat->node_id;
|
node = z->zone_pgdat->node_id;
|
||||||
|
might_sleep_if(!(gfp_mask & __GFP_HARDWALL));
|
||||||
if (node_isset(node, current->mems_allowed))
|
if (node_isset(node, current->mems_allowed))
|
||||||
return 1;
|
return 1;
|
||||||
if (gfp_mask & __GFP_HARDWALL) /* If hardwall request, stop here */
|
if (gfp_mask & __GFP_HARDWALL) /* If hardwall request, stop here */
|
||||||
|
|
Loading…
Reference in New Issue