X-Git-Url: http://www.pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=sound%2Fcore%2Fmemalloc.c;h=a7b46ec72f3231191cb6f81d7c816f6b011bc696;hb=4e184f8fc06411f35fdcf4b9bc6187c857bf7214;hp=f0c3b1d6da810f75c69b283f38b35fb3363f8950;hpb=77a23f2695bb2de0cd74599400dc55109c531b72;p=linux-2.6-omap-h63xx.git diff --git a/sound/core/memalloc.c b/sound/core/memalloc.c index f0c3b1d6da8..a7b46ec72f3 100644 --- a/sound/core/memalloc.c +++ b/sound/core/memalloc.c @@ -277,11 +277,16 @@ int snd_dma_alloc_pages_fallback(int type, struct device *device, size_t size, int err; while ((err = snd_dma_alloc_pages(type, device, size, dmab)) < 0) { + size_t aligned_size; if (err != -ENOMEM) return err; - size >>= 1; if (size <= PAGE_SIZE) return -ENOMEM; + aligned_size = PAGE_SIZE << get_order(size); + if (size != aligned_size) + size = aligned_size; + else + size >>= 1; } if (! dmab->area) return -ENOMEM;