diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 43dc4463388b..808caa5c170c 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -139,9 +139,9 @@ static inline enum zone_type __gfp_zone(gfp_t flags) if (z == ZONE_MOVABLE) return LAST_VIRT_ZONE; - /* Allow dma-buf etc to use virtual zones */ + /* Allow dma-buf etc to use virtual zones, if there is no movable zone */ if ((flags & __GFP_COMP) && (flags & __GFP_HIGHMEM) && - !static_branch_unlikely(&movablecore_enabled)) + !static_branch_unlikely(&movablecore_enabled) && !movable_node_is_enabled()) return LAST_VIRT_ZONE; return z;