mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
mm/cma: don't treat bad input arguments for cma_alloc() as its failure
Invalid cma_alloc() input scenarios - including excess allocation request should neither be counted as CMA_ALLOC_FAIL nor 'cma->nr_pages_failed' be updated when applicable with CONFIG_CMA_SYSFS. This also drops 'out' jump label which has become redundant. Link: https://lkml.kernel.org/r/20240201023714.3871061-1-anshuman.khandual@arm.com Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> Cc: Kalesh Singh <kaleshsingh@google.com> Cc: Minchan Kim <minchan@kernel.org> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
565474afe0
commit
d818c98a52
8
mm/cma.c
8
mm/cma.c
@ -441,13 +441,13 @@ struct page *cma_alloc(struct cma *cma, unsigned long count,
|
||||
trace_cma_alloc_start(name, count, align);
|
||||
|
||||
if (!cma || !cma->count || !cma->bitmap)
|
||||
goto out;
|
||||
return page;
|
||||
|
||||
pr_debug("%s(cma %p, name: %s, count %lu, align %d)\n", __func__,
|
||||
(void *)cma, cma->name, count, align);
|
||||
|
||||
if (!count)
|
||||
goto out;
|
||||
return page;
|
||||
|
||||
mask = cma_bitmap_aligned_mask(cma, align);
|
||||
offset = cma_bitmap_aligned_offset(cma, align);
|
||||
@ -455,7 +455,7 @@ struct page *cma_alloc(struct cma *cma, unsigned long count,
|
||||
bitmap_count = cma_bitmap_pages_to_bits(cma, count);
|
||||
|
||||
if (bitmap_count > bitmap_maxno)
|
||||
goto out;
|
||||
return page;
|
||||
|
||||
for (;;) {
|
||||
spin_lock_irq(&cma->lock);
|
||||
@ -514,14 +514,12 @@ struct page *cma_alloc(struct cma *cma, unsigned long count,
|
||||
}
|
||||
|
||||
pr_debug("%s(): returned %p\n", __func__, page);
|
||||
out:
|
||||
trace_cma_alloc_finish(name, pfn, page, count, align, ret);
|
||||
if (page) {
|
||||
count_vm_event(CMA_ALLOC_SUCCESS);
|
||||
cma_sysfs_account_success_pages(cma, count);
|
||||
} else {
|
||||
count_vm_event(CMA_ALLOC_FAIL);
|
||||
if (cma)
|
||||
cma_sysfs_account_fail_pages(cma, count);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user