Well, I hoped that you understood this code better than me, but I
understand why you do not.  Thanks a lot for finding and fixing the
leak.  I applied this to master and branch-2.8.  (If it does not cause
problems for a few days, then I will backport it further.)

On Wed, Nov 29, 2017 at 03:42:43PM -0800, Yifeng Sun wrote:
> It could be 'error' is nonzero but 'success' is true when look into the
> function ofproto_flow_mod_learn(). The logic is too complex here,
> sorry I can't reason if this makes sense.
> 
> Thanks,
> Yifeng
> 
> On Wed, Nov 29, 2017 at 1:53 PM, Ben Pfaff <[email protected]> wrote:
> 
> > On Mon, Nov 20, 2017 at 04:26:39AM -0800, Yifeng Sun wrote:
> > > When ofm is not referenced by xc_entry, we should release its
> > > resources by calling ofproto_flow_mod_uninit because no one is
> > > going to use it in this function.
> > >
> > > Signed-off-by: Yifeng Sun <[email protected]>
> > > ---
> > >  ofproto/ofproto-dpif-xlate.c | 2 ++
> > >  1 file changed, 2 insertions(+)
> > >
> > > diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
> > > index 468cd160c60e..fcced344ed8a 100644
> > > --- a/ofproto/ofproto-dpif-xlate.c
> > > +++ b/ofproto/ofproto-dpif-xlate.c
> > > @@ -5123,6 +5123,8 @@ xlate_learn_action(struct xlate_ctx *ctx, const
> > struct ofpact_learn *learn)
> > >                  entry->learn.ofm = ofm;
> > >                  entry->learn.limit = learn->limit;
> > >                  ofm = NULL;
> > > +            } else {
> > > +                ofproto_flow_mod_uninit(ofm);
> > >              }
> > >
> > >              if (OVS_UNLIKELY(ctx->xin->trace && !success)) {
> >
> > Thank you for finding this issue.
> >
> > The code in xlate_learn_action() is very hard to understand.  (I'm sure
> > that this is partly my fault.)  There appear to be cases where 'error'
> > is nonzero but 'success' is true.  Does this combination make sense,
> > that is, should error != 0 imply success == false?
> >
> > Thanks,
> >
> > Ben.
> >
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to