]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
firmware: arm_ffa: Align RxTx buffer size before mapping
authorSudeep Holla <sudeep.holla@kernel.org>
Tue, 28 Apr 2026 18:33:33 +0000 (19:33 +0100)
committerSudeep Holla <sudeep.holla@kernel.org>
Tue, 5 May 2026 15:42:48 +0000 (16:42 +0100)
Commit 83210251fd70 ("firmware: arm_ffa: Use the correct buffer size during
RXTX_MAP") advertises PAGE_ALIGN(rxtx_bufsz) to firmware when mapping the
buffers but the driver continues to stores the minimum FF-A buffer size
in drv_info->rxtx_bufsz which is used elsewhere in the driver.

Align the size before storing it so that the allocation, validation and
FFA_RXTX_MAP all use the same buffer size.

Fixes: 83210251fd70 ("firmware: arm_ffa: Use the correct buffer size during RXTX_MAP")
Cc: Sebastian Ene <sebastianene@google.com>
Link: https://sashiko.dev/#/patchset/20260402113939.930221-1-sebastianene@google.com
Reviewed-by: Sebastian Ene <sebastianene@google.com>
Link: https://patch.msgid.link/20260428-ffa_fixes-v2-9-8595ae450034@kernel.org
Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
drivers/firmware/arm_ffa/driver.c

index 7287423faceb4beb8a17f8c38ad03d197d03f6b2..66ed98e32bd6aa92cdcf9aedca9f506c4b73f0c3 100644 (file)
@@ -2109,6 +2109,7 @@ static int __init ffa_init(void)
                        rxtx_bufsz = SZ_4K;
        }
 
+       rxtx_bufsz = PAGE_ALIGN(rxtx_bufsz);
        drv_info->rxtx_bufsz = rxtx_bufsz;
        drv_info->rx_buffer = alloc_pages_exact(rxtx_bufsz, GFP_KERNEL);
        if (!drv_info->rx_buffer) {
@@ -2124,7 +2125,7 @@ static int __init ffa_init(void)
 
        ret = ffa_rxtx_map(virt_to_phys(drv_info->tx_buffer),
                           virt_to_phys(drv_info->rx_buffer),
-                          PAGE_ALIGN(rxtx_bufsz) / FFA_PAGE_SIZE);
+                          rxtx_bufsz / FFA_PAGE_SIZE);
        if (ret) {
                pr_err("failed to register FFA RxTx buffers\n");
                goto free_pages;