[ovs-dev] [PATCH] ofproto-dpif: Close race between processing packet_ins and checking seqno.

Alex Wang alexw at nicira.com
Wed Apr 30 18:19:22 UTC 2014


Thanks Ben for spotting and fixing this,

Acked-by: Alex Wang <alexw at nicira.com>


On Wed, Apr 30, 2014 at 11:08 AM, Ben Pfaff <blp at nicira.com> wrote:

> If a packet-in were to be queued, and the sequence number changed, after
> grabbing the list of packet-ins, then the existing code could have gone to
> sleep until something happened.  By grabbing the sequence number before
> the list of packet-ins, we avoid this race.
>
> Found by inspection.
>
> Signed-off-by: Ben Pfaff <blp at nicira.com>
> ---
>  ofproto/ofproto-dpif.c |   12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
> index 4cebd77..5eea5ab 100644
> --- a/ofproto/ofproto-dpif.c
> +++ b/ofproto/ofproto-dpif.c
> @@ -1357,6 +1357,12 @@ run(struct ofproto *ofproto_)
>          ovs_rwlock_unlock(&ofproto->ml->rwlock);
>      }
>
> +    /* Always updates the ofproto->pins_seqno to avoid frequent wakeup
> during
> +     * flow restore.  Even though nothing is processed during flow
> restore,
> +     * all queued 'pins' will be handled immediately when flow restore
> +     * completes. */
> +    ofproto->pins_seqno = seq_read(ofproto->pins_seq);
> +
>      /* Do not perform any periodic activity required by 'ofproto' while
>       * waiting for flow restore to complete. */
>      if (!ofproto_get_flow_restore_wait()) {
> @@ -1372,12 +1378,6 @@ run(struct ofproto *ofproto_)
>          }
>      }
>
> -    /* Always updates the ofproto->pins_seqno to avoid frequent wakeup
> during
> -     * flow restore.  Even though nothing is processed during flow
> restore,
> -     * all queued 'pins' will be handled immediately when flow restore
> -     * completes. */
> -    ofproto->pins_seqno = seq_read(ofproto->pins_seq);
> -
>      if (ofproto->netflow) {
>          netflow_run(ofproto->netflow);
>      }
> --
> 1.7.10.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-dev/attachments/20140430/a07fe136/attachment-0005.html>


More information about the dev mailing list