|
@@ -56,6 +56,7 @@
|
|
|
#include <linux/time64.h>
|
|
|
#include <linux/backing-dev.h>
|
|
|
#include <linux/sort.h>
|
|
|
+#include <linux/oom.h>
|
|
|
|
|
|
#include <linux/uaccess.h>
|
|
|
#include <linux/atomic.h>
|
|
@@ -2500,12 +2501,12 @@ static struct cpuset *nearest_hardwall_ancestor(struct cpuset *cs)
|
|
|
* If we're in interrupt, yes, we can always allocate. If @node is set in
|
|
|
* current's mems_allowed, yes. If it's not a __GFP_HARDWALL request and this
|
|
|
* node is set in the nearest hardwalled cpuset ancestor to current's cpuset,
|
|
|
- * yes. If current has access to memory reserves due to TIF_MEMDIE, yes.
|
|
|
+ * yes. If current has access to memory reserves as an oom victim, yes.
|
|
|
* Otherwise, no.
|
|
|
*
|
|
|
* GFP_USER allocations are marked with the __GFP_HARDWALL bit,
|
|
|
* and do not allow allocations outside the current tasks cpuset
|
|
|
- * unless the task has been OOM killed as is marked TIF_MEMDIE.
|
|
|
+ * unless the task has been OOM killed.
|
|
|
* GFP_KERNEL allocations are not so marked, so can escape to the
|
|
|
* nearest enclosing hardwalled ancestor cpuset.
|
|
|
*
|
|
@@ -2528,7 +2529,7 @@ static struct cpuset *nearest_hardwall_ancestor(struct cpuset *cs)
|
|
|
* affect that:
|
|
|
* in_interrupt - any node ok (current task context irrelevant)
|
|
|
* GFP_ATOMIC - any node ok
|
|
|
- * TIF_MEMDIE - any node ok
|
|
|
+ * tsk_is_oom_victim - any node ok
|
|
|
* GFP_KERNEL - any node in enclosing hardwalled cpuset ok
|
|
|
* GFP_USER - only nodes in current tasks mems allowed ok.
|
|
|
*/
|
|
@@ -2546,7 +2547,7 @@ bool __cpuset_node_allowed(int node, gfp_t gfp_mask)
|
|
|
* Allow tasks that have access to memory reserves because they have
|
|
|
* been OOM killed to get memory anywhere.
|
|
|
*/
|
|
|
- if (unlikely(test_thread_flag(TIF_MEMDIE)))
|
|
|
+ if (unlikely(tsk_is_oom_victim(current)))
|
|
|
return true;
|
|
|
if (gfp_mask & __GFP_HARDWALL) /* If hardwall request, stop here */
|
|
|
return false;
|