[PATCH 4/4] mm/cma: drop the duplicate alignment check in rmem_cma_setup()

From: Radhey Shyam Pandey

Date: Tue Nov 03 2026 - 11:50:04 EST


cma_init_reserved_mem() already refuses a base or size that is not aligned
to CMA_MIN_ALIGNMENT_BYTES, so the identical test in rmem_cma_setup() only
repeats it one call earlier. Remove it and report the failure from
cma_init_reserved_mem() instead, where the area name is available: the
message now says which pool is misaligned, and every caller gets the
diagnostic rather than just the device-tree path.

Suggested-by: Mike Rapoport <rppt@xxxxxxxxxx>
Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@xxxxxxx>
---
Changes since RFC:
- New patch
---
kernel/dma/contiguous.c | 5 -----
mm/cma.c | 6 +++++-
2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/kernel/dma/contiguous.c b/kernel/dma/contiguous.c
index 90937dc7c627..14450cf0f832 100644
--- a/kernel/dma/contiguous.c
+++ b/kernel/dma/contiguous.c
@@ -552,11 +552,6 @@ static int __init rmem_cma_setup(unsigned long node, struct reserved_mem *rmem)
if (ret)
return ret;

- if (!IS_ALIGNED(rmem->base | rmem->size, CMA_MIN_ALIGNMENT_BYTES)) {
- pr_err("Reserved memory: incorrect alignment of CMA region\n");
- return -EINVAL;
- }
-
ret = cma_init_reserved_mem(rmem->base, rmem->size, 0, rmem->name, &cma);
if (ret) {
pr_err("Reserved memory: unable to setup CMA region\n");
diff --git a/mm/cma.c b/mm/cma.c
index 3231a53161cd..68dea7070d69 100644
--- a/mm/cma.c
+++ b/mm/cma.c
@@ -326,8 +326,12 @@ int __init cma_init_reserved_mem(phys_addr_t base, phys_addr_t size,
}

/* ensure minimal alignment required by mm core */
- if (!IS_ALIGNED(base | size, CMA_MIN_ALIGNMENT_BYTES))
+ if (!IS_ALIGNED(base | size, CMA_MIN_ALIGNMENT_BYTES)) {
+ pr_err("area %s (%pa, size %pa) is not aligned to %lu bytes\n",
+ name ?: "(unnamed)", &base, &size,
+ (unsigned long)CMA_MIN_ALIGNMENT_BYTES);
return -EINVAL;
+ }

ret = cma_new_area(name, size, order_per_bit, &cma);
if (ret != 0)
--
2.44.4