From 358a2303976afa3243b05220c0e83a8625b6ee13 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Wed, 30 Jul 2008 15:13:33 +0200 Subject: [PATCH] --- yaml --- r: 110922 b: refs/heads/master c: 4e184f8fc06411f35fdcf4b9bc6187c857bf7214 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/sound/core/memalloc.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index b879903c49ce..7da877c561b3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 77a23f2695bb2de0cd74599400dc55109c531b72 +refs/heads/master: 4e184f8fc06411f35fdcf4b9bc6187c857bf7214 diff --git a/trunk/sound/core/memalloc.c b/trunk/sound/core/memalloc.c index f0c3b1d6da81..a7b46ec72f32 100644 --- a/trunk/sound/core/memalloc.c +++ b/trunk/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;