diff mbox

tap: properly initialize vhostfds

Message ID 1366355475-7243-1-git-send-email-jasowang@redhat.com
State New
Headers show

Commit Message

Jason Wang April 19, 2013, 7:11 a.m. UTC
Only tap->vhostfd were checked net_init_tap_one(), but tap->vhostfds were
forgot, this will lead qemu to ignore all fds passed by management through
vhostfds, and tries to create vhost_net device itself. Fix by adding this check
also.

Reportyed-by: Michal Privoznik <mprivozn@redhat.com>
Cc: Michal Privoznik <mprivozn@redhat.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 net/tap.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

Michal Privoznik April 19, 2013, 11:24 a.m. UTC | #1
On 19.04.2013 09:11, Jason Wang wrote:
> Only tap->vhostfd were checked net_init_tap_one(), but tap->vhostfds were
> forgot, this will lead qemu to ignore all fds passed by management through
> vhostfds, and tries to create vhost_net device itself. Fix by adding this check
> also.
> 
> Reportyed-by: Michal Privoznik <mprivozn@redhat.com>

Typo

> Cc: Michal Privoznik <mprivozn@redhat.com>
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Jason Wang <jasowang@redhat.com>
> ---
>  net/tap.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/net/tap.c b/net/tap.c
> index 17bdf01..e0b7a2a 100644
> --- a/net/tap.c
> +++ b/net/tap.c
> @@ -623,7 +623,7 @@ static int net_init_tap_one(const NetdevTapOptions *tap, NetClientState *peer,
>          vhostfdname || (tap->has_vhostforce && tap->vhostforce)) {
>          int vhostfd;
>  
> -        if (tap->has_vhostfd) {
> +        if (tap->has_vhostfd || tap->has_vhostfds) {
>              vhostfd = monitor_handle_fd_param(cur_mon, vhostfdname);
>              if (vhostfd == -1) {
>                  return -1;
> 

Yup. I can confirm this fixes the problem for me.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>

Michal
Stefan Hajnoczi April 22, 2013, 12:45 p.m. UTC | #2
On Fri, Apr 19, 2013 at 03:11:15PM +0800, Jason Wang wrote:
> Only tap->vhostfd were checked net_init_tap_one(), but tap->vhostfds were
> forgot, this will lead qemu to ignore all fds passed by management through
> vhostfds, and tries to create vhost_net device itself. Fix by adding this check
> also.
> 
> Reportyed-by: Michal Privoznik <mprivozn@redhat.com>
> Cc: Michal Privoznik <mprivozn@redhat.com>
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Jason Wang <jasowang@redhat.com>
> ---
>  net/tap.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)

Thanks, applied to my net tree:
https://github.com/stefanha/qemu/commits/net

Stefan
diff mbox

Patch

diff --git a/net/tap.c b/net/tap.c
index 17bdf01..e0b7a2a 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -623,7 +623,7 @@  static int net_init_tap_one(const NetdevTapOptions *tap, NetClientState *peer,
         vhostfdname || (tap->has_vhostforce && tap->vhostforce)) {
         int vhostfd;
 
-        if (tap->has_vhostfd) {
+        if (tap->has_vhostfd || tap->has_vhostfds) {
             vhostfd = monitor_handle_fd_param(cur_mon, vhostfdname);
             if (vhostfd == -1) {
                 return -1;