[dpdk-dev] [PATCH v6] vhost: fix crash on port deletion

2021-08-27 Thread Gaoxiang Liu
The rte_vhost_driver_unregister() and vhost_user_read_cb() can be called at the same time by 2 threads. when memory of vsocket is freed in rte_vhost_driver_unregister(), the invalid memory of vsocket is accessed in vhost_user_read_cb(). It's a bug of both mode for vhost as server or client. E.g.,v

Re: [dpdk-dev] [PATCH v6] vhost: fix crash on port deletion

2021-09-05 Thread Xia, Chenbo
Hi Gaoxiang, > > >From: Gaoxiang Liu >Sent: Thursday, September 2, 2021 11:38 PM >To: Xia, Chenbo >Cc: maxime.coque...@redhat.com; dev@dpdk.org; liugaoxi...@huawei.com >Subject: Re:RE: [PATCH v6] vhost: fix crash on port deletion > > >Hi chenbo, >why this is not moved up? >>> + if (vs

Re: [dpdk-dev] [PATCH v6] vhost: fix crash on port deletion

2021-09-05 Thread Xia, Chenbo
Hi Gaoxiang, > -Original Message- > From: dev On Behalf Of Xia, Chenbo > Sent: Monday, September 6, 2021 11:18 AM > To: Gaoxiang Liu > Cc: maxime.coque...@redhat.com; dev@dpdk.org; liugaoxi...@huawei.com > Subject: Re: [dpdk-dev] [PATCH v6] vhost: fix crash on por

Re: [dpdk-dev] [PATCH v6] vhost: fix crash on port deletion

2021-09-05 Thread Gaoxiang Liu
Hi Chenbo, But same issue happens when you deleted 'vsocket->socket_fd' but failed to delete one of the conn_fd: you will goto again and try to delete socket_fd again and then loop forever. So anyway you need to prevent this from happening. ==> It will not happen, because fdset_try_del only ret

Re: [dpdk-dev] [PATCH v6] vhost: fix crash on port deletion

2021-08-30 Thread Xia, Chenbo
Hi Gaoxiang, > -Original Message- > From: Gaoxiang Liu > Sent: Friday, August 27, 2021 10:19 PM > To: maxime.coque...@redhat.com; Xia, Chenbo > Cc: dev@dpdk.org; liugaoxi...@huawei.com; Gaoxiang Liu > Subject: [PATCH v6] vhost: fix crash on port deletion > > The rte_vhost_driver_unregi

Re: [dpdk-dev] [PATCH v6] vhost: fix crash on port deletion

2021-09-02 Thread Gaoxiang Liu
Hi chenbo, why this is not moved up? >> +if (vsocket->is_server) { >> +close(vsocket->socket_fd); >> +unlink(path); >> } ==>Because if this is moved up, and if deleting conn fd from fdsets failed, it will arrive the "again" label,