[dpdk-dev] [PATCH] vhost: fix fd leaks for vhost-user server mode

Yuanhan Liu yuanhan.liu at linux.intel.com
Sat Apr 1 07:15:20 CEST 2017


On Mon, Mar 27, 2017 at 04:52:15PM +0800, Yuanhan Liu wrote:
> A vhost-user server socket could have many connections, thus many connfd.
> However, we currently just use one single int var to store it. Meaning,
> it will get overwritten every time a new connection is created.
> 
> While this will not create fatal issue as it sounds (since the correct
> connfd is closured to the event loop thread by fdset_add), it may cause
> fd leaks if a user invokes rte_vhost_driver_unregister before shutting
> down all connections: it just closes the recent connfd.
> 
> A simple example that should be able to reproduce this leaks issues is,
> del the ovs vhost-user port while the connected VMs are still alive. (Note
> that it's suggested to use one socket for one VM, which makes the issue
> not that fatal as it sounds again).
> 
> Since we already use a struct "vhost_user_connection" to track all info
> about one connection, it's obvious that we should put the connfd there.
> Then we could build a connection list inside the vhost_user_socket struct,
> to represent all connections belong that socket file.
> 
> Fixes: 164fd396788d ("vhost: fix unregistering in client mode")

Applied to dpdk-next-virtio.

	--yliu
> 
> Cc: Ilya Maximets <i.maximets at samsung.com>
> Cc: stable at dpdk.org
> Signed-off-by: Yuanhan Liu <yuanhan.liu at linux.intel.com>


More information about the dev mailing list