]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
firmware: arm_ffa: Fix out-of-bound writes in ffa_setup_and_transmit()
authorMostafa Saleh <smostafa@google.com>
Thu, 2 Jul 2026 10:38:38 +0000 (10:38 +0000)
committerMarc Zyngier <maz@kernel.org>
Tue, 7 Jul 2026 14:04:07 +0000 (15:04 +0100)
commit3383ffb7ef937317361713ffcc21921a7848511a
tree435a15792d704c2338032b442ed92fd8dcbeccd0
parent2bd3c6c702f3a9e2bcb3b536b0fbbaa645005d71
firmware: arm_ffa: Fix out-of-bound writes in ffa_setup_and_transmit()

Sashiko (locally) reports multiple out-of-bound issues in
ffa_setup_and_transmit:
1) Writing ep_mem_access->reserved can write out of bounds for FFA
   versions < 1.2 as ffa_emad_size_get() returns 16 bytes in that case
   while reserved has an offset of 24.
   Instead of zeroing fields, memset the struct to zero first based on
   the FFA version.

2) Make sure there is enough size to write constituents.

While at it, convert the only sizeof() in the driver that uses a
type instead of variable.

Reviewed-by: Sudeep Holla <sudeep.holla@kernel.org>
Fixes: 111a833dc5cb ("firmware: arm_ffa: Set reserved/MBZ fields to zero in the memory descriptors")
Signed-off-by: Mostafa Saleh <smostafa@google.com>
Signed-off-by: Sebastian Ene <sebastianene@google.com>
Link: https://patch.msgid.link/20260702103848.1647249-2-sebastianene@google.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
drivers/firmware/arm_ffa/driver.c