On Mon, Nov 2, 2026 at 5:53 PM Aarnav JP <[email protected]> wrote:
>
> roc_nix_max_rep_count() copied rsp->rep_cnt entries from the get_rep_cnt
> mailbox response into the fixed 64-entry roc_nix->rep_pfvf_map[] without
> validating the AF-supplied count. rep_cnt is a uint16_t, so a malformed
> or malicious AF response could overrun the array (and read past the
> response's 64-entry map), corrupting adjacent driver state.
>
> Reject responses with rep_cnt greater than MAX_PFVF_REP before copying.
>
> Fixes: 162c77c18838 ("common/cnxk: add support for representors")
> Cc: [email protected]
>
> Signed-off-by: Aarnav JP <[email protected]>


Series applied to dpdk-next-net-mrvl/for-main. Thanks

> ---
>  drivers/common/cnxk/roc_nix.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/drivers/common/cnxk/roc_nix.c b/drivers/common/cnxk/roc_nix.c
> index 8e3903051d..ae6a918682 100644
> --- a/drivers/common/cnxk/roc_nix.c
> +++ b/drivers/common/cnxk/roc_nix.c
> @@ -589,6 +589,12 @@ roc_nix_max_rep_count(struct roc_nix *roc_nix)
>         if (rc)
>                 goto exit;
>
> +       if (rsp->rep_cnt > MAX_PFVF_REP) {
> +               plt_err("Invalid rep_cnt %u in get_rep_cnt rsp", 
> rsp->rep_cnt);
> +               rc = -EIO;
> +               goto exit;
> +       }
> +
>         roc_nix->rep_cnt = rsp->rep_cnt;
>         for (i = 0; i < rsp->rep_cnt; i++)
>                 roc_nix->rep_pfvf_map[i] = rsp->rep_pfvf_map[i];
> --
> 2.43.0
>

Reply via email to