[ovs-dev] [PATCH] ofproto: Fix potential leak during flow mods.

Jarno Rajahalme jrajahalme at nicira.com
Wed Apr 30 22:26:32 UTC 2014


On Apr 30, 2014, at 3:07 PM, Ethan Jackson <ethan at nicira.com> wrote:

> I'm not sure of a good way to make them fit . . .
> 

Oops, it was my email client with variable width font that created an “optical illusion of space”…

  Jarno

> At any rate, I'm getting rid of the rule_from_cls_rule() function in a
> future patch so that will clean this up quite a bit.
> 
> Ethan
> 
> On Wed, Apr 30, 2014 at 3:02 PM, Jarno Rajahalme <jrajahalme at nicira.com> wrote:
>> Acked-by: Jarno Rajahalme <jrajahalme at nicira.com>
>> 
>> I would put the match and priority parameters on the same line, though.
>> 
>>  Jarno
>> 
>> On Apr 30, 2014, at 2:53 PM, Ethan Jackson <ethan at nicira.com> wrote:
>> 
>>> This code created a cls_rule without destroying it.  Found by
>>> inspection.
>>> 
>>> Signed-off-by: Ethan Jackson <ethan at nicira.com>
>>> ---
>>> ofproto/ofproto.c | 7 +++----
>>> 1 file changed, 3 insertions(+), 4 deletions(-)
>>> 
>>> diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
>>> index 3d788a6..208efc1 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
>>> --
>>> 1.8.1.2
>>> 
>>> _______________________________________________
>>> dev mailing list
>>> dev at openvswitch.org
>>> http://openvswitch.org/mailman/listinfo/dev
>> 
>> 




More information about the dev mailing list