diff options
Diffstat (limited to 'net/openvswitch')
| -rw-r--r-- | net/openvswitch/meter.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/net/openvswitch/meter.c b/net/openvswitch/meter.c index b891a91577f8..c038e021a591 100644 --- a/net/openvswitch/meter.c +++ b/net/openvswitch/meter.c | |||
| @@ -211,6 +211,7 @@ static struct dp_meter *dp_meter_create(struct nlattr **a) | |||
| 211 | if (!meter) | 211 | if (!meter) |
| 212 | return ERR_PTR(-ENOMEM); | 212 | return ERR_PTR(-ENOMEM); |
| 213 | 213 | ||
| 214 | meter->id = nla_get_u32(a[OVS_METER_ATTR_ID]); | ||
| 214 | meter->used = div_u64(ktime_get_ns(), 1000 * 1000); | 215 | meter->used = div_u64(ktime_get_ns(), 1000 * 1000); |
| 215 | meter->kbps = a[OVS_METER_ATTR_KBPS] ? 1 : 0; | 216 | meter->kbps = a[OVS_METER_ATTR_KBPS] ? 1 : 0; |
| 216 | meter->keep_stats = !a[OVS_METER_ATTR_CLEAR]; | 217 | meter->keep_stats = !a[OVS_METER_ATTR_CLEAR]; |
| @@ -280,6 +281,10 @@ static int ovs_meter_cmd_set(struct sk_buff *skb, struct genl_info *info) | |||
| 280 | u32 meter_id; | 281 | u32 meter_id; |
| 281 | bool failed; | 282 | bool failed; |
| 282 | 283 | ||
| 284 | if (!a[OVS_METER_ATTR_ID]) { | ||
| 285 | return -ENODEV; | ||
| 286 | } | ||
| 287 | |||
| 283 | meter = dp_meter_create(a); | 288 | meter = dp_meter_create(a); |
| 284 | if (IS_ERR_OR_NULL(meter)) | 289 | if (IS_ERR_OR_NULL(meter)) |
| 285 | return PTR_ERR(meter); | 290 | return PTR_ERR(meter); |
| @@ -298,11 +303,6 @@ static int ovs_meter_cmd_set(struct sk_buff *skb, struct genl_info *info) | |||
| 298 | goto exit_unlock; | 303 | goto exit_unlock; |
| 299 | } | 304 | } |
| 300 | 305 | ||
| 301 | if (!a[OVS_METER_ATTR_ID]) { | ||
| 302 | err = -ENODEV; | ||
| 303 | goto exit_unlock; | ||
| 304 | } | ||
| 305 | |||
| 306 | meter_id = nla_get_u32(a[OVS_METER_ATTR_ID]); | 306 | meter_id = nla_get_u32(a[OVS_METER_ATTR_ID]); |
| 307 | 307 | ||
| 308 | /* Cannot fail after this. */ | 308 | /* Cannot fail after this. */ |
