[PATCH v3 0/2] arm_ffa, KVM: Fix FF-A emad offset calculations
Sudeep Holla
sudeep.holla at kernel.org
Wed May 13 10:23:43 PDT 2026
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@google.com/
> v1: https://lore.kernel.org/all/ae9KN9nkOgDYJcGP@google.com/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
More information about the linux-arm-kernel
mailing list