From: Jean Guyader Date: Wed, 2 Dec 2009 12:51:03 +0000 (+0000) Subject: v2v: check argument on disconnect. X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=0acff6e78261858debb7a2ba2c1c1657193273be;p=xenclient%2Flinux-2.6.27-pq.git v2v: check argument on disconnect. --- diff --git a/master/v2v-fix-disconnect b/master/v2v-fix-disconnect index ddef288..5ee20ad 100644 --- a/master/v2v-fix-disconnect +++ b/master/v2v-fix-disconnect @@ -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);