On Sat, 20 Dec 2025 14:15:19 +0800
Junlong Wang <[email protected]> wrote:

> +static int
> +vf_recv_bar_msg(void *payload, uint16_t len __rte_unused, void *reps_buffer,
> +     uint16_t *reps_len, void *eth_dev __rte_unused)
> +{
> +     struct zxdh_msg_info *msg_payload = (struct zxdh_msg_info *)payload;
> +     uint16_t pcieid = msg_payload->msg_to_vf.pcieid;
> +     uint16_t opcode = msg_payload->msg_to_vf.opcode;
> +     struct rte_eth_dev *dev = (struct rte_eth_dev *)eth_dev;

eth_dev is used, remove the __rte_unused attribute.

> +     struct zxdh_ifc_msg_reply_body_bits *reply_body;
> +     reply_body = (struct zxdh_ifc_msg_reply_body_bits *)
> +             ZXDH_ADDR_OF(msg_reply_body, reps_buffer, flag);
> +     int32_t ret = 0;
> +
> +     if (dev == NULL) {
> +             PMD_DRV_LOG(ERR, "param invalid, dev is NULL");
> +             ret = -2;
> +             return ret;
> +     }

Since there is a len in the message, why not validate that len == 
sizeof(*msg_payload)
to avoid dereferencing outside of message.


> +
> +     switch (opcode) {
> +     case ZXDH_SET_VF_LINK_STATE:
> +             PMD_DRV_LOG(DEBUG, "PF(pcieid:%d ) set VF's link state", 
> pcieid);
> +             vf_recv_link_state_msg(dev, &msg_payload->data, reps_buffer, 
> reps_len);
> +             reply_body->flag[0] = ZXDH_REPS_SUCC;
> +             break;
> +     default:
> +             ZXDH_SET(msg_reply_body, reps_buffer, flag, ZXDH_REPS_INVALID);
> +             PMD_DRV_LOG(ERR, "[VF GET MSG FROM PF]--unknown msg opcode:%d", 
> opcode);
> +             ret = -1;
> +             break;
> +     }
> +     return ret;
> +}
> +

Reply via email to