diff --git a/mm/cma.c b/mm/cma.c index 0df6554bf0fc..47538607045e 100644 --- a/mm/cma.c +++ b/mm/cma.c @@ -477,7 +477,8 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align, if ((num_attempts < max_retries) && (ret == -EBUSY)) { mutex_unlock(&cma->lock); - if (fatal_signal_pending(current)) + if (fatal_signal_pending(current) || + (gfp_mask & __GFP_NORETRY)) break; /*