> -----Original Message-----
> From: Gaëtan Rivet [mailto:gr...@u256.net]
> Sent: Thursday, February 17, 2022 9:31 PM
> To: wangyunjian <wangyunj...@huawei.com>; <d...@openvswitch.org>
> <d...@openvswitch.org>; Ilya Maximets <i.maxim...@ovn.org>; 贺鹏
> <xnhp0...@gmail.com>; amore...@redhat.com
> Cc: dingxiaoxiong <dingxiaoxi...@huawei.com>
> Subject: Re: [ovs-dev] [PATCH] ofproto: fix use-after-free for "ofproto".
> 
> On Thu, Feb 17, 2022, at 08:29, wangyunjian wrote:
> >> -----Original Message-----
> >> From: dev [mailto:ovs-dev-boun...@openvswitch.org] On Behalf Of
> >> wangyunjian via dev
> >> Sent: Thursday, February 17, 2022 11:27 AM
> >> To: Gaëtan Rivet <gr...@u256.net>; <d...@openvswitch.org>
> >> <d...@openvswitch.org>; Ilya Maximets <i.maxim...@ovn.org>
> >> Cc: dingxiaoxiong <dingxiaoxi...@huawei.com>
> >> Subject: Re: [ovs-dev] [PATCH] ofproto: fix use-after-free for "ofproto".
> >>
> >>
> >>
> >> > -----Original Message-----
> >> > From: Gaëtan Rivet [mailto:gr...@u256.net]
> >> > Sent: Thursday, February 17, 2022 1:29 AM
> >> > To: wangyunjian <wangyunj...@huawei.com>; <d...@openvswitch.org>
> >> > <d...@openvswitch.org>; Ilya Maximets <i.maxim...@ovn.org>
> >> > Cc: amore...@redhat.com; dingxiaoxiong <dingxiaoxi...@huawei.com>;
> >> > 贺
> >> 鹏
> >> > <xnhp0...@gmail.com>
> >> > Subject: Re: [ovs-dev] [PATCH] ofproto: fix use-after-free for "ofproto".
> >> >
> >> > On Wed, Feb 16, 2022, at 14:24, wangyunjian wrote:
> >> > >> -----Original Message-----
> >> > >> From: Gaëtan Rivet [mailto:gr...@u256.net]
> >> > >> Sent: Wednesday, February 16, 2022 7:34 PM
> >> > >> To: wangyunjian <wangyunj...@huawei.com>; <d...@openvswitch.org>
> >> > >> <d...@openvswitch.org>; Ilya Maximets <i.maxim...@ovn.org>
> >> > >> Cc: dingxiaoxiong <dingxiaoxi...@huawei.com>
> >> > >> Subject: Re: [ovs-dev] [PATCH] ofproto: fix use-after-free for 
> >> > >> "ofproto".
> >> > >>
> >> > >> On Fri, Dec 3, 2021, at 12:25, Yunjian Wang via dev wrote:
> >> > >> > When handler threads lookup a "ofproto" and use it, main
> >> > >> > thread maybe remove and free the "ofproto" at the same time. The
> "ofproto"
> >> > >> > has not been protected well, which can lead to an OVS crash.
> >> > >> >
> >> > >> > This patch fixes this by making the "ofproto" lookup RCU-safe
> >> > >> > by using cmap instead of hmap and moving remove "ofproto" call
> >> > >> > before xlate_txn_commit().
> >> > >> >
> >> > >>
> >> > >> I don't understand the point of moving the cmap_remove() call
> >> > >> before xlate_txn_commit().
> >> > >
> >> > > To use of the rcu_synchronize in the xlate_txn_commit to avoid
> >> > > access to the ofproto from other thread through uuid map.
> >> > >
> >> >
> >> > Yes the reason is clear.
> >> >
> >> > But my question is why is it needed? It seems that the ofproto
> >> > lifecycle was written with the assumption that it would still be
> >> > used while being
> >> destroyed.
> >> >
> >> > Can you explain why it needs to be changed?
> >>
> >> I didn't describe the problem clearly before. The main problem is
> >> that hmap variable is not thread safe. The all_ofproto_dpifs_by_uuid
> >> variable uses the hmap structure, which maybe be accessed by main thread
> and handler threads.
> 
> I'm ok on the part switching to using CMAP to allow concurrent reads.
> That I see the reason and it is fine.
> 
> The part that I don't understand is moving the cmap_remove() call before the
> RCU sync.
> 
> As far as I know, the CMAP type does not require that to safely operate.
> The writer thread is allowed to call cmap_remove() while a reader is 
> iterating on
> the CMAP to find a node. The only precaution needed is that actual destruction
> of the node (freeing) is deferred, which it is.
> 
> So I don't see the reason to move cmap_remove() before the RCU
> synchronization, instead of keeping it as it is now. Could you please explain 
> your
> reasoning?

I consider it is more reasonable for the upcall thread cannot find the ofproto
when the ofproto will be deleted, no other special consideration.

Thanks,
Yunjian
> 
> --
> Gaetan Rivet
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to