Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Jun 2014 04:32:27 +0000 (UTC)
From:      Bryan Venteicher <bryanv@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r267524 - head/sys/dev/virtio/network
Message-ID:  <201406160432.s5G4WRkR059996@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bryanv
Date: Mon Jun 16 04:32:27 2014
New Revision: 267524
URL: http://svnweb.freebsd.org/changeset/base/267524

Log:
  Force two byte alignment for all control message headers
  
  The header structure consists of two 1-byte elements, but it must always
  be describable by a single SG entry. Note for consistency, specify the
  alignment everywhere, even if the structure has the appropriate natural
  alignment since it contains a uint16_t.
  
  Obtained from:	DragonFlyBSD
  MFC after:	1 week

Modified:
  head/sys/dev/virtio/network/if_vtnet.c

Modified: head/sys/dev/virtio/network/if_vtnet.c
==============================================================================
--- head/sys/dev/virtio/network/if_vtnet.c	Mon Jun 16 04:29:28 2014	(r267523)
+++ head/sys/dev/virtio/network/if_vtnet.c	Mon Jun 16 04:32:27 2014	(r267524)
@@ -3068,7 +3068,7 @@ vtnet_exec_ctrl_cmd(struct vtnet_softc *
 static int
 vtnet_ctrl_mac_cmd(struct vtnet_softc *sc, uint8_t *hwaddr)
 {
-	struct virtio_net_ctrl_hdr hdr;
+	struct virtio_net_ctrl_hdr hdr __aligned(2);
 	struct sglist_seg segs[3];
 	struct sglist sg;
 	uint8_t ack;
@@ -3102,7 +3102,7 @@ vtnet_ctrl_mq_cmd(struct vtnet_softc *sc
 		struct virtio_net_ctrl_mq mq;
 		uint8_t pad2;
 		uint8_t ack;
-	} s;
+	} s __aligned(2);
 	int error;
 
 	s.hdr.class = VIRTIO_NET_CTRL_MQ;
@@ -3134,7 +3134,7 @@ vtnet_ctrl_rx_cmd(struct vtnet_softc *sc
 		uint8_t onoff;
 		uint8_t pad2;
 		uint8_t ack;
-	} s;
+	} s __aligned(2);
 	int error;
 
 	KASSERT(sc->vtnet_flags & VTNET_FLAG_CTRL_RX,
@@ -3217,7 +3217,7 @@ vtnet_rx_filter(struct vtnet_softc *sc)
 static void
 vtnet_rx_filter_mac(struct vtnet_softc *sc)
 {
-	struct virtio_net_ctrl_hdr hdr;
+	struct virtio_net_ctrl_hdr hdr __aligned(2);
 	struct vtnet_mac_filter *filter;
 	struct sglist_seg segs[4];
 	struct sglist sg;
@@ -3330,7 +3330,7 @@ vtnet_exec_vlan_filter(struct vtnet_soft
 		uint16_t tag;
 		uint8_t pad2;
 		uint8_t ack;
-	} s;
+	} s __aligned(2);
 	int error;
 
 	s.hdr.class = VIRTIO_NET_CTRL_VLAN;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201406160432.s5G4WRkR059996>