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