projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dpif-netdev: Fix segfault handling packets.
[openvswitch]
/
datapath
/
datapath.c
diff --git
a/datapath/datapath.c
b/datapath/datapath.c
index ba32e37fae9dbb91797e7de4af6266b0724f5d12..940a58142dbef97ad0881fdfc308f6640122d361 100644
(file)
--- a/
datapath/datapath.c
+++ b/
datapath/datapath.c
@@
-51,6
+51,7
@@
#include "flow.h"
#include "loop_counter.h"
#include "table.h"
#include "flow.h"
#include "loop_counter.h"
#include "table.h"
+#include "vlan.h"
#include "vport-internal_dev.h"
int (*dp_ioctl_hook)(struct net_device *dev, struct ifreq *rq, int cmd);
#include "vport-internal_dev.h"
int (*dp_ioctl_hook)(struct net_device *dev, struct ifreq *rq, int cmd);
@@
-483,6
+484,10
@@
static int queue_control_packets(struct datapath *dp, struct sk_buff *skb,
nskb = skb->next;
skb->next = NULL;
nskb = skb->next;
skb->next = NULL;
+ err = vlan_deaccel_tag(skb);
+ if (unlikely(err))
+ goto err_kfree_skbs;
+
len = sizeof(struct odp_header);
len += nla_total_size(skb->len);
len += nla_total_size(FLOW_BUFSIZE);
len = sizeof(struct odp_header);
len += nla_total_size(skb->len);
len += nla_total_size(FLOW_BUFSIZE);