v2:<br />  - Patch 8/8: add the missing check in zxdh_bar_msg_ack_async_msg_proc(),<br />    the hunk described by the commit message was dropped when the v1<br />    changes were carried into the tree, only the reply-path check in<br />    zxdh_bar_chan_sync_msg_reps_get() was actually sent, so the<br />    VF-reachable path was unchanged (reported by maintainer review).<br />  - Patch 4/8: drop the paragraph claiming what the compiler does with<br />    the uninitialised read at -O1 and above; the fix does not depend<br />    on codegen for undefined behaviour, and just state that del_flag<br />    is read uninitialized when the group loop breaks early.<br /> <br />v1:<br />  This series fixes issues in the zxdh PF/VF mailbox handling that were<br />  found by a code scan of the driver, reported to us by the DPDK<br />  community. All of them are on the PF receive path, where fields of a<br />  message written by a VF into the shared BAR window are trusted more<br />  than they should be, plus two ordinary local bugs the scan found on<br />  the way:<br /> <br />- The dispatcher hands msg_head vport/pcieid to the handlers without<br />  comparing them with the sender, so a request can be aimed at any<br />  port (patch 3).<br />- The header module_id is checked as 8-bit but indexes a table as<br />  16-bit, and the async ack msg_id indexes the 256-entry seqid table<br />  without a bound check; both are out-of-bounds accesses up to a<br />  function call through a wild pointer (patches 7, 8).<br />- The receive buffer is allocated with the sender-declared length but<br />  accessed as a full struct, corrupting the heap; and the async<br />  no-ack exit leaks the buffer, allowing a guest to exhaust the PF<br />  heap (patches 5, 6).<br />- An uninitialised DTB entry is freed on a flow query error path,<br />  and an uninitialised multicast delete flag makes the PF delete the<br />  multicast entries of every port whenever one port leaves a group,<br />  with no attacker involved; the latter is a v25.11 regression<br />  (patches 2, 4).<br />- A VLAN id above 4095 from a VF message turns into an out-of-range<br />  ERAM row index (patch 1).<br /> <br />  The sender check of patch 3 was verified on hardware; it stops at<br />  binding the request to a VF of the PF, a VF forging the identity of a<br />  sibling VF of the same PF is left to device-side protection that is<br />  planned. Each patch has been checked to apply on the current main<br />  branch.<br /> <br />Junlong Wang (8):<br />  net/zxdh: reject out-of-range VLAN ID from VF<br />  net/zxdh: initialise DTB entry in flow query<br />  net/zxdh: refuse PF mailbox requests not naming a VF of this PF<br />  net/zxdh: initialise multicast delete flag<br />  net/zxdh: free receive buffer on the async no-ack exit<br />  net/zxdh: allocate a zeroed full-size payload buffer<br />  net/zxdh: check full 16-bit module id of recv msg<br />  net/zxdh: check msg id before indexing the seqid table<br /> <br /> drivers/net/zxdh/zxdh_flow.c   |  2 +-<br /> drivers/net/zxdh/zxdh_msg.c    | 61 ++++++++++++++++++++++++++++------<br /> drivers/net/zxdh/zxdh_tables.c |  2 +-<br /> 3 files changed, 53 insertions(+), 12 deletions(-)<br /> <br />--  <br />2.27.0<br />