[ovs-dev] [PATCH] OVN: grab pinctrl_mutex before running pinctrl_handle_buffered_packets
Ben Pfaff
blp at ovn.org
Fri Jun 7 20:00:03 UTC 2019
On Wed, May 15, 2019 at 12:16:42PM -0700, Han Zhou wrote:
> On Wed, May 15, 2019 at 6:34 AM Lorenzo Bianconi <
> lorenzo.bianconi at redhat.com> wrote:
> >
> > pinctrl_handle_buffered_packets can insert new elements in
> > buffered_packets_map hasmap and it runs concurrently with pinctrl_run
> > starting from commit 3594ffab6b4b. Fix possible races grabbing
> > pinctrl_mutex before running pinctrl_handle_buffered_packets
> >
> > Fixes: 3594ffab6b4b ("ovn-controller: Add a new thread in pinctrl module
> to handle packet-ins.")
> > Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
> > ---
> > ovn/controller/pinctrl.c | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/ovn/controller/pinctrl.c b/ovn/controller/pinctrl.c
> > index 8ae1f9bd6..c10693301 100644
> > --- a/ovn/controller/pinctrl.c
> > +++ b/ovn/controller/pinctrl.c
> > @@ -464,6 +464,7 @@ static int
> > pinctrl_handle_buffered_packets(const struct flow *ip_flow,
> > struct dp_packet *pkt_in,
> > const struct match *md, bool is_arp)
> > + OVS_REQUIRES(pinctrl_mutex)
> > {
> > struct buffered_packets *bp;
> > struct dp_packet *clone;
> > @@ -512,7 +513,9 @@ pinctrl_handle_arp(struct rconn *swconn, const struct
> flow *ip_flow,
> > return;
> > }
> >
> > + ovs_mutex_lock(&pinctrl_mutex);
> > pinctrl_handle_buffered_packets(ip_flow, pkt_in, md, true);
> > + ovs_mutex_unlock(&pinctrl_mutex);
> >
> > /* Compose an ARP packet. */
> > uint64_t packet_stub[128 / 8];
> > @@ -3136,7 +3139,9 @@ pinctrl_handle_nd_ns(struct rconn *swconn, const
> struct flow *ip_flow,
> > return;
> > }
> >
> > + ovs_mutex_lock(&pinctrl_mutex);
> > pinctrl_handle_buffered_packets(ip_flow, pkt_in, md, false);
> > + ovs_mutex_unlock(&pinctrl_mutex);
> >
> > uint64_t packet_stub[128 / 8];
> > struct dp_packet packet;
> > --
> > 2.20.1
> >
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
> Thanks for the fix!
>
> Acked-by: Han Zhou <hzhou8 at ebay.com>
Thanks Lorenzo (and Han). I applied this to master.
More information about the dev
mailing list