Re: [PATCH v3 0/2] arm_ffa, KVM: Fix FF-A emad offset calculations

From: Sudeep Holla

Date: Wed May 13 2026 - 13:24:19 EST


On Tue, May 12, 2026 at 12:44:40PM +0000, Sebastian Ene wrote:
> Hi all,
>
> This series fixes the Endpoint Memory Access Descriptor (EMAD) offset calculations
> and adds the necessary bounds checks for both the core FF-A driver and the pKVM
> hypervisor.
>
> Prior to FF-A version 1.1, the memory region header didn't specify an explicit offset
> for the EMADs, leading to the assumption that they immediately follow the header.
> However, from v1.1 onwards, the specification dictates using the `ep_mem_offset` field
> to determine the start of the memory access array.
>
> The patches in this series address this by:
> 1. Updating the core `arm_ffa` firmware driver to correctly calculate the descriptor
> offset using `ep_mem_offset` rather than defaulting to `sizeof(struct ffa_mem_region)`.
> It also introduces bounds checking against `max_fragsize`.
> 2. Enhancing the pKVM hypervisor validation logic to no longer strictly enforce that
> the descriptor strictly follows the header, aligning it with the driver behavior
> and the FF-A specification, while also ensuring the offset falls within the mailbox
> buffer bounds.
>

Looks good apart from the minor nits, but how do you plan to route these
changes as they are dependent for functionality but not for the build IIUC.

I don't think I have any conflicting change so far, so it can go along with
other pKVM changes. Let me know.

> Changelog
> #########
>
> v2 -> this:
> - Fixed typo in nvhe/ffa.c (missing sizeof)
>
> v1 -> v2:
> - For pKVM, removed the strict placement enforcement for `ep_mem_offset` as it is not
> compliant with the spec, and avoids making assumptions about the driver's memory
> layout.
>
> Link to:
> ########
>
> v2: https://lore.kernel.org/all/20260430160241.1934777-1-sebastianene@xxxxxxxxxx/
> v1: https://lore.kernel.org/all/ae9KN9nkOgDYJcGP@xxxxxxxxxx/T/#t
>
> Sebastian Ene (2):
> firmware: arm_ffa: Fix Endpoint Memory Access Descriptor offset
> calculation
> KVM: arm64: Validate the offset to the mem access descriptor
>
> arch/arm64/kvm/hyp/nvhe/ffa.c | 24 ++++++++++++++++++------
> drivers/firmware/arm_ffa/driver.c | 14 ++++++++++----
> include/linux/arm_ffa.h | 2 +-
> 3 files changed, 29 insertions(+), 11 deletions(-)
>
> --
> 2.54.0.563.g4f69b47b94-goog
>

--
Regards,
Sudeep