diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 2e49b184233ccfd18daf41fa4d2d2be49bf8153b..9f9e15a502aec1ef056e24d93c159916ca9c49ac 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -4788,7 +4788,11 @@ static inline bool prepare_alloc_pages(gfp_t gfp_mask, unsigned int order,
 
 	if (cpusets_enabled()) {
 		*alloc_mask |= __GFP_HARDWALL;
-		if (!ac->nodemask)
+		/*
+		 * When we are in the interrupt context, it is irrelevant
+		 * to the current task context. It means that any node ok.
+		 */
+		if (!in_interrupt() && !ac->nodemask)
 			ac->nodemask = &cpuset_current_mems_allowed;
 		else
 			*alloc_flags |= ALLOC_CPUSET;