]> xenbits.xen.org Git - xenclient/linux-2.6.27-pq.git/commitdiff
v2v: check argument on disconnect.
authorJean Guyader <jean.guyader@eu.citrix.com>
Wed, 2 Dec 2009 12:51:03 +0000 (12:51 +0000)
committerJean Guyader <jean.guyader@eu.citrix.com>
Wed, 2 Dec 2009 12:51:03 +0000 (12:51 +0000)
master/v2v-fix-disconnect

index ddef288767439f7128b34feedd7f38376a3b013e..5ee20ad19791e058836234c2a1894124326c7585 100644 (file)
@@ -1,12 +1,17 @@
 diff --git a/drivers/xen/v2v/v2v.c b/drivers/xen/v2v/v2v.c
-index 1bcab10..c79a2ed 100644
+index 1bcab10..5cbb5d0 100644
 --- a/drivers/xen/v2v/v2v.c
 +++ b/drivers/xen/v2v/v2v.c
-@@ -1253,7 +1253,26 @@ v2v_disconnect_supplicant(const struct v2v_channel *_channel)
+@@ -1253,7 +1253,31 @@ v2v_disconnect_supplicant(const struct v2v_channel *_channel)
      int err;
      struct v2v_channel *channel = (struct v2v_channel *)_channel;
  
 -    /* The grant mapping and vm areas are cleaned up in v2v_destroy_channel() */ 
++    if (! channel ||
++        ! channel->u.supplicant.prod_area ||
++        ! channel->u.supplicant.cons_area)
++        return -EINVAL;
++
 +    /* Have to clean up the grant mapping and vm areas here before setting the state to disconnected
 +       or the temple disconnect could fail. */ 
 +    v2v_xenops_grant_unmap(channel->u.supplicant.prod_area,
@@ -30,7 +35,7 @@ index 1bcab10..c79a2ed 100644
      channel->prod_sring = NULL;
      channel->cons_sring = NULL;
      channel->control = NULL;
-@@ -1261,6 +1280,7 @@ v2v_disconnect_supplicant(const struct v2v_channel *_channel)
+@@ -1261,6 +1285,7 @@ v2v_disconnect_supplicant(const struct v2v_channel *_channel)
      v2v_close_receive_evtchn(channel);
      v2v_close_send_evtchn(channel);