From: Alex Wang Date: Tue, 17 Dec 2013 16:16:24 +0000 (+0000) Subject: dpif-linux: Fix a bug. X-Git-Url: http://git.onelab.eu/?p=sliver-openvswitch.git;a=commitdiff_plain;h=c3ee8a0a19a9494e1e3b1c688fa8aaa1120ba8d0 dpif-linux: Fix a bug. Commit da546e0 (dpif: Allow execute to modify the packet.) introduced a bug by subtracting the zero-value ofpbuf size by "sizeof(struct nlattr)" and assigning the result back to the ofpbuf size. This bug causes the ovs-assert failure in facet_push_stats(). This commit fixes the bug by assigning the right value to the ofpbuf size. Signed-off-by: Alex Wang Acked-by: Jarno Rajahalme --- diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c index 54d7f2a1a..8fa42a9c7 100644 --- a/lib/dpif-linux.c +++ b/lib/dpif-linux.c @@ -1473,7 +1473,7 @@ parse_odp_packet(struct ofpbuf *buf, struct dpif_upcall *upcall, nl_attr_get_size(a[OVS_PACKET_ATTR_PACKET]) + sizeof(struct nlattr)); upcall->packet.data = (char *)upcall->packet.data + sizeof(struct nlattr); - upcall->packet.size -= sizeof(struct nlattr); + upcall->packet.size = nl_attr_get_size(a[OVS_PACKET_ATTR_PACKET]); *dp_ifindex = ovs_header->dp_ifindex;