X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=mm%2Fcma.c;h=a972c3440c404b7e28bd978f756ebed0897fd329;hb=refs%2Fheads%2Fsandbox%2Fm.szyprowski%2Fvirgl;hp=995e15480937fee8ceb6e88d0b78b21be8d6a5eb;hpb=85bbba1c077848e76ab77682e9e56c41113f5770;p=platform%2Fkernel%2Flinux-rpi.git diff --git a/mm/cma.c b/mm/cma.c index 995e154..a972c34 100644 --- a/mm/cma.c +++ b/mm/cma.c @@ -37,6 +37,7 @@ struct cma cma_areas[MAX_CMA_AREAS]; unsigned cma_area_count; +static DEFINE_MUTEX(cma_mutex); phys_addr_t cma_get_base(const struct cma *cma) { @@ -471,9 +472,10 @@ struct page *cma_alloc(struct cma *cma, unsigned long count, spin_unlock_irq(&cma->lock); pfn = cma->base_pfn + (bitmap_no << cma->order_per_bit); + mutex_lock(&cma_mutex); ret = alloc_contig_range(pfn, pfn + count, MIGRATE_CMA, GFP_KERNEL | (no_warn ? __GFP_NOWARN : 0)); - + mutex_unlock(&cma_mutex); if (ret == 0) { page = pfn_to_page(pfn); break;