diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 65876feb86f3357d6a44827b218ae9763a05aea8..46c30fa26acda7dcba96d11b27ff4ccc0e08c470 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -3903,9 +3903,10 @@ static inline bool prepare_alloc_pages(gfp_t gfp_mask, unsigned int order,
 
 	if (cpusets_enabled()) {
 		*alloc_mask |= __GFP_HARDWALL;
-		*alloc_flags |= ALLOC_CPUSET;
 		if (!ac->nodemask)
 			ac->nodemask = &cpuset_current_mems_allowed;
+		else
+			*alloc_flags |= ALLOC_CPUSET;
 	}
 
 	lockdep_trace_alloc(gfp_mask);