net/enic: check maximum packet size in Tx prepare handler
authorHyong Youb Kim <hyonkim@cisco.com>
Fri, 29 Jun 2018 09:29:41 +0000 (02:29 -0700)
committerFerruh Yigit <ferruh.yigit@intel.com>
Mon, 2 Jul 2018 23:54:25 +0000 (01:54 +0200)
The default tx handler checks the maximum packet size. Check it in the
prepare handler too. WQ stops working if the app/driver tries to send
oversized packets, so these checks are unavoidable.

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
drivers/net/enic/enic_rxtx.c

index 7dec486..04a77fc 100644 (file)
@@ -563,6 +563,10 @@ uint16_t enic_prep_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
 
        for (i = 0; i != nb_pkts; i++) {
                m = tx_pkts[i];
+               if (unlikely(m->pkt_len > ENIC_TX_MAX_PKT_SIZE)) {
+                       rte_errno = EINVAL;
+                       return i;
+               }
                ol_flags = m->ol_flags;
                if (ol_flags & wq->tx_offload_notsup_mask) {
                        rte_errno = ENOTSUP;