On 03.02.2016 04:56, Daniele Di Proietto wrote: > If ovs-vswitchd crashes, it will not be able to recreate the same > vhost user ports, since the socket will still be in the file system. > > This commit introduces an unlink() before creation to remove an eventual > preexisting vhost user socket. > > This mimics the behavior of the OpenFlow management socket for a bridge. > > Signed-off-by: Daniele Di Proietto <diproiet...@vmware.com> > --- > There have been security concerns about the introduction of a similar > mechanism, because the port name is basically untrusted input. > > I decided to post this anyway since: > * The previous commit introduces a check to discard port names with '/' > * This is how the OpenFlow management socket is creation is handled. > As pointed out by Ben, though, an OpenFlow socket always ends in '.mgmt' > while a vhost user socket doesn't have any suffix. > > What do you guys think? > --- > lib/netdev-dpdk.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c > index 6b33c02..e839eaa 100644 > --- a/lib/netdev-dpdk.c > +++ b/lib/netdev-dpdk.c > @@ -694,6 +694,11 @@ netdev_dpdk_vhost_user_construct(struct netdev *netdev_) > snprintf(netdev->vhost_id, sizeof(netdev->vhost_id), "%s/%s", > vhost_sock_dir, name); > > + if (unlink(netdev->vhost_id) && errno != ENOENT) { > + VLOG_WARN("unlinking \"%s\": %s\n", > + netdev->vhost_id, ovs_strerror(errno)); > + } > + > err = rte_vhost_driver_register(netdev->vhost_id); > if (err) { > VLOG_ERR("vhost-user socket device setup failure for socket %s\n", >
I still think that the removal of that we did not create is a bad idea. The most proper solution that I come up with is to create unique temporary directory for each socket via mkdtemp(). See my RFC here: http://openvswitch.org/pipermail/dev/2016-February/065583.html . Best regards, Ilya Maximets. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev