From 0ef165ecb57943e17a8ee8270df68ffb8d032e29 Mon Sep 17 00:00:00 2001 From: Ethan Jackson Date: Wed, 30 Apr 2014 14:52:28 -0700 Subject: [PATCH] ofproto: Fix potential leak during flow mods. This code created a cls_rule without destroying it. Found by inspection. Signed-off-by: Ethan Jackson Acked-by: Jarno Rajahalme --- ofproto/ofproto.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index 3d788a681..208efc1e8 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -1975,14 +1975,13 @@ ofproto_flow_mod(struct ofproto *ofproto, struct ofputil_flow_mod *fm) if (fm->command == OFPFC_MODIFY_STRICT && fm->table_id != OFPTT_ALL && !(fm->flags & OFPUTIL_FF_RESET_COUNTS)) { struct oftable *table = &ofproto->tables[fm->table_id]; - struct cls_rule match_rule; struct rule *rule; bool done = false; - cls_rule_init(&match_rule, &fm->match, fm->priority); fat_rwlock_rdlock(&table->cls.rwlock); - rule = rule_from_cls_rule(classifier_find_rule_exactly(&table->cls, - &match_rule)); + rule = rule_from_cls_rule(classifier_find_match_exactly(&table->cls, + &fm->match, + fm->priority)); if (rule) { /* Reading many of the rule fields and writing on 'modified' * requires the rule->mutex. Also, rule->actions may change -- 2.43.0