diff options
Diffstat (limited to 'arch/arm/mm/dma-mapping.c')
-rw-r--r-- | arch/arm/mm/dma-mapping.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index d766e4256b74..655878bcc96d 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c | |||
@@ -1067,7 +1067,7 @@ static struct page **__iommu_alloc_buffer(struct device *dev, size_t size, gfp_t | |||
1067 | return NULL; | 1067 | return NULL; |
1068 | 1068 | ||
1069 | while (count) { | 1069 | while (count) { |
1070 | int j, order = __ffs(count); | 1070 | int j, order = __fls(count); |
1071 | 1071 | ||
1072 | pages[i] = alloc_pages(gfp | __GFP_NOWARN, order); | 1072 | pages[i] = alloc_pages(gfp | __GFP_NOWARN, order); |
1073 | while (!pages[i] && order) | 1073 | while (!pages[i] && order) |
@@ -1091,7 +1091,7 @@ error: | |||
1091 | while (--i) | 1091 | while (--i) |
1092 | if (pages[i]) | 1092 | if (pages[i]) |
1093 | __free_pages(pages[i], 0); | 1093 | __free_pages(pages[i], 0); |
1094 | if (array_size < PAGE_SIZE) | 1094 | if (array_size <= PAGE_SIZE) |
1095 | kfree(pages); | 1095 | kfree(pages); |
1096 | else | 1096 | else |
1097 | vfree(pages); | 1097 | vfree(pages); |
@@ -1106,7 +1106,7 @@ static int __iommu_free_buffer(struct device *dev, struct page **pages, size_t s | |||
1106 | for (i = 0; i < count; i++) | 1106 | for (i = 0; i < count; i++) |
1107 | if (pages[i]) | 1107 | if (pages[i]) |
1108 | __free_pages(pages[i], 0); | 1108 | __free_pages(pages[i], 0); |
1109 | if (array_size < PAGE_SIZE) | 1109 | if (array_size <= PAGE_SIZE) |
1110 | kfree(pages); | 1110 | kfree(pages); |
1111 | else | 1111 | else |
1112 | vfree(pages); | 1112 | vfree(pages); |