af_packet driver needs to check VLIB_BUFFER_NEXT_PRESENT flag is set 78/5878/2
authorJim Gibson <gibson+fdio@cisco.com>
Mon, 27 Mar 2017 19:46:12 +0000 (19:46 +0000)
committerDamjan Marion <dmarion.lists@gmail.com>
Tue, 28 Mar 2017 13:21:57 +0000 (13:21 +0000)
when walking  vlib_buffer_t next_buffer chain on transmit.
On buffer allocation:
- next_buffer is not and may contain a stale invalid value that
  should be ignored if not overwritten by a valid value.
- VLIB_BUFFER_NEXT_PRESENT flag is cleared and only set
  if a valid value is written to next_buffer.

Change-Id: I9b0ccdc54f4f7456f8328ce7c4a0d52d0fba8caa
Signed-off-by: Jim Gibson <gibson+fdio@cisco.com>
src/vnet/devices/af_packet/device.c

index e3bf9bb..9a94fc5 100644 (file)
@@ -125,7 +125,8 @@ af_packet_interface_tx (vlib_main_t * vm,
                       vlib_buffer_get_current (b0), len);
          offset += len;
        }
-      while ((bi = b0->next_buffer));
+      while ((bi =
+             (b0->flags & VLIB_BUFFER_NEXT_PRESENT) ? b0->next_buffer : 0));
 
       tph->tp_len = tph->tp_snaplen = offset;
       tph->tp_status = TP_STATUS_SEND_REQUEST;