[dpdk-dev] [PATCH v2 0/4] vhost: Fix virtio-net on VHOST_USER_RESET_OWNER
> > I have a bug when Qemu with two vhost interfaces gently stops (SIGINT). > > When stopping, it sends two RESET_OWNER for each interface: > > - Before stopping, we have two interfaces identifers: 0 and 1. > > - The first reset_owner call resets device 1 (and this id device_fh) to > > zero, > > the device list now contains two devices with id 0. > > - The second call don't find device 1 and segfault as reset_owner don't > > check if the device has been found or not. > > - Later, user_get_vring_base can also segfault for the same reason. > > > > This series of patches propose to fix the way reset_owner alter a device and > > add more checks when searching for a device. > > > > In this v2, we use get_device instead of get_config_ll_entry to get an error > > message when a device is not found. > > > > Jerome Jutteau (4): > > vhost: avoid device identifier to be reset to 0 in reset_owner > > vhost: check that a device exists during reset_owner > > vhost: protect user_get_vring_base from unknown devices > > vhost: change method to get device in reset_owner > > Acked-by: Yuanhan Liu Applied, thanks
[dpdk-dev] [PATCH v2 0/4] vhost: Fix virtio-net on VHOST_USER_RESET_OWNER
Acked-by: Yuanhan Liu Thanks. --yliu On Mon, Oct 19, 2015 at 11:44:25AM +0200, Jerome Jutteau wrote: > Hi, > > I have a bug when Qemu with two vhost interfaces gently stops (SIGINT). > When stopping, it sends two RESET_OWNER for each interface: > - Before stopping, we have two interfaces identifers: 0 and 1. > - The first reset_owner call resets device 1 (and this id device_fh) to zero, > the device list now contains two devices with id 0. > - The second call don't find device 1 and segfault as reset_owner don't > check if the device has been found or not. > - Later, user_get_vring_base can also segfault for the same reason. > > This series of patches propose to fix the way reset_owner alter a device and > add more checks when searching for a device. > > In this v2, we use get_device instead of get_config_ll_entry to get an error > message when a device is not found. > > Jerome Jutteau (4): > vhost: avoid device identifier to be reset to 0 in reset_owner > vhost: check that a device exists during reset_owner > vhost: protect user_get_vring_base from unknown devices > vhost: change method to get device in reset_owner > > lib/librte_vhost/vhost_user/virtio-net-user.c | 2 ++ > lib/librte_vhost/virtio-net.c | 14 +- > 2 files changed, 11 insertions(+), 5 deletions(-) > > -- > jerome
[dpdk-dev] [PATCH v2 0/4] vhost: Fix virtio-net on VHOST_USER_RESET_OWNER
Hi, I have a bug when Qemu with two vhost interfaces gently stops (SIGINT). When stopping, it sends two RESET_OWNER for each interface: - Before stopping, we have two interfaces identifers: 0 and 1. - The first reset_owner call resets device 1 (and this id device_fh) to zero, the device list now contains two devices with id 0. - The second call don't find device 1 and segfault as reset_owner don't check if the device has been found or not. - Later, user_get_vring_base can also segfault for the same reason. This series of patches propose to fix the way reset_owner alter a device and add more checks when searching for a device. In this v2, we use get_device instead of get_config_ll_entry to get an error message when a device is not found. Jerome Jutteau (4): vhost: avoid device identifier to be reset to 0 in reset_owner vhost: check that a device exists during reset_owner vhost: protect user_get_vring_base from unknown devices vhost: change method to get device in reset_owner lib/librte_vhost/vhost_user/virtio-net-user.c | 2 ++ lib/librte_vhost/virtio-net.c | 14 +- 2 files changed, 11 insertions(+), 5 deletions(-) -- jerome