projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ofproto: Querying port stats for individual ports (OpenFlow 1.0)
[openvswitch]
/
datapath
/
datapath.c
diff --git
a/datapath/datapath.c
b/datapath/datapath.c
index 8de5614442ec9909e7df2b6ac908de346c91c7da..34d2c9bc2bb1df13eea46a468870f8344ef90bd2 100644
(file)
--- a/
datapath/datapath.c
+++ b/
datapath/datapath.c
@@
-940,6
+940,7
@@
static int put_flow(struct datapath *dp, struct odp_flow_put __user *ufp)
error = -EFAULT;
if (copy_from_user(&uf, ufp, sizeof(struct odp_flow_put)))
goto error;
error = -EFAULT;
if (copy_from_user(&uf, ufp, sizeof(struct odp_flow_put)))
goto error;
+ memset(uf.flow.key.reserved, 0, sizeof uf.flow.key.reserved);
table = rcu_dereference(dp->table);
flow = dp_table_lookup(table, &uf.flow.key);
table = rcu_dereference(dp->table);
flow = dp_table_lookup(table, &uf.flow.key);
@@
-1084,6
+1085,7
@@
static int del_flow(struct datapath *dp, struct odp_flow __user *ufp)
error = -EFAULT;
if (copy_from_user(&uf, ufp, sizeof uf))
goto error;
error = -EFAULT;
if (copy_from_user(&uf, ufp, sizeof uf))
goto error;
+ memset(uf.key.reserved, 0, sizeof uf.key.reserved);
flow = dp_table_lookup(table, &uf.key);
error = -ENOENT;
flow = dp_table_lookup(table, &uf.key);
error = -ENOENT;
@@
-1119,6
+1121,7
@@
static int query_flows(struct datapath *dp, const struct odp_flowvec *flowvec)
if (__copy_from_user(&uf, ufp, sizeof uf))
return -EFAULT;
if (__copy_from_user(&uf, ufp, sizeof uf))
return -EFAULT;
+ memset(uf.key.reserved, 0, sizeof uf.key.reserved);
flow = dp_table_lookup(table, &uf.key);
if (!flow)
flow = dp_table_lookup(table, &uf.key);
if (!flow)