[U-Boot] [PATCH v4] arm: socfpga: mailbox: Fix off-by-one error on command length checking
Marek Vasut
marex at denx.de
Wed Apr 24 14:45:13 UTC 2019
On 4/24/19 7:21 AM, Ley Foon Tan wrote:
> A mailbox command contains 1-u32 header + arguments. The "len" variable
> only contains the length of the arguments, but not the 1-u32 header.
> Include the length of header when checking the ring buffer space to
> prevent off-by-one error.
>
> Signed-off-by: Ley Foon Tan <ley.foon.tan at intel.com>
> Signed-off-by: Chee Hong Ang <chee.hong.ang at intel.com>
> ---
> v3->v4:
> - Change DWORD to u32 in commit message
> - Add note len is in u32 unit in code
>
> v2->v3:
> - Update commit description.
> ---
> arch/arm/mach-socfpga/mailbox_s10.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-socfpga/mailbox_s10.c b/arch/arm/mach-socfpga/mailbox_s10.c
> index 3c33223936..4498ab55df 100644
> --- a/arch/arm/mach-socfpga/mailbox_s10.c
> +++ b/arch/arm/mach-socfpga/mailbox_s10.c
> @@ -55,11 +55,11 @@ static __always_inline int mbox_fill_cmd_circular_buff(u32 header, u32 len,
> cout = MBOX_READL(MBOX_COUT) % MBOX_CMD_BUFFER_SIZE;
>
> /* if command buffer is full or not enough free space
> - * to fit the data
> + * to fit the data. Note, len is in u32 unit.
> */
> if (((cin + 1) % MBOX_CMD_BUFFER_SIZE) == cout ||
> ((MBOX_CMD_BUFFER_SIZE - cin + cout - 1) %
> - MBOX_CMD_BUFFER_SIZE) < len)
> + MBOX_CMD_BUFFER_SIZE) < (len + 1))
> return -ENOMEM;
>
> /* write header to circular buffer */
>
Applied, thanks.
--
Best regards,
Marek Vasut
More information about the U-Boot
mailing list