diff mbox

virtio-net: Correctly store multicast filter entries

Message ID 1383926869-5518-1-git-send-email-vyasevic@redhat.com
State New
Headers show

Commit Message

Vlad Yasevich Nov. 8, 2013, 4:07 p.m. UTC
Commit 921ac5d0f3a0df869db5ce4edf752f51d8b1596a
	 virtio-net: remove layout assumptions for ctrl vq
introduced a regression where the multicast address filter
entries are written to the beginning of the mac table array,
thus overwriting any unicast addresses that may have been
programmed in the filter.
The multicast addresses should be written after all the
unicast addresses.

Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
---
 hw/net/virtio-net.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Vlad Yasevich Nov. 8, 2013, 5:39 p.m. UTC | #1
On 11/08/2013 11:07 AM, Vlad Yasevich wrote:
> Commit 921ac5d0f3a0df869db5ce4edf752f51d8b1596a
> 	 virtio-net: remove layout assumptions for ctrl vq
> introduced a regression where the multicast address filter
> entries are written to the beginning of the mac table array,
> thus overwriting any unicast addresses that may have been
> programmed in the filter.
> The multicast addresses should be written after all the
> unicast addresses.
>
> Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>

Please ignore.  Just saw pull pull request with similar patch.

-vlad

> ---
>   hw/net/virtio-net.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> index 22dbd05..94e8b68 100644
> --- a/hw/net/virtio-net.c
> +++ b/hw/net/virtio-net.c
> @@ -657,7 +657,8 @@ static int virtio_net_handle_mac(VirtIONet *n, uint8_t cmd,
>       }
>
>       if (n->mac_table.in_use + mac_data.entries <= MAC_TABLE_ENTRIES) {
> -        s = iov_to_buf(iov, iov_cnt, 0, n->mac_table.macs,
> +        s = iov_to_buf(iov, iov_cnt, 0,
> +                       n->mac_table.macs + (n->mac_table.in_use * ETH_ALEN),
>                          mac_data.entries * ETH_ALEN);
>           if (s != mac_data.entries * ETH_ALEN) {
>               goto error;
>
diff mbox

Patch

diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 22dbd05..94e8b68 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -657,7 +657,8 @@  static int virtio_net_handle_mac(VirtIONet *n, uint8_t cmd,
     }
 
     if (n->mac_table.in_use + mac_data.entries <= MAC_TABLE_ENTRIES) {
-        s = iov_to_buf(iov, iov_cnt, 0, n->mac_table.macs,
+        s = iov_to_buf(iov, iov_cnt, 0,
+                       n->mac_table.macs + (n->mac_table.in_use * ETH_ALEN),
                        mac_data.entries * ETH_ALEN);
         if (s != mac_data.entries * ETH_ALEN) {
             goto error;