aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJake Wires <jwires@xensource.com>2007-04-27 17:54:06 -0700
committerJake Wires <jwires@xensource.com>2007-04-27 17:54:06 -0700
commitadfd9f4561560c64cb71b7b59129ca22c1b98707 (patch)
tree8b5b854e16a4371503dbe712f842b48c1d1db22e
parent56c09b24436d71dd62fc590fa77fe3c0a98c9470 (diff)
downloadxen-adfd9f4561560c64cb71b7b59129ca22c1b98707.tar.gz
xen-adfd9f4561560c64cb71b7b59129ca22c1b98707.tar.bz2
xen-adfd9f4561560c64cb71b7b59129ca22c1b98707.zip
Ensure blk{tap/back}'s vm_area is not freed twice on error case.
Signed-off-by: Jake Wires <jwires@xensource.com>
-rw-r--r--linux-2.6-xen-sparse/drivers/xen/blkback/interface.c1
-rw-r--r--linux-2.6-xen-sparse/drivers/xen/blktap/interface.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/linux-2.6-xen-sparse/drivers/xen/blkback/interface.c b/linux-2.6-xen-sparse/drivers/xen/blkback/interface.c
index 61433bba79..6df7b734d6 100644
--- a/linux-2.6-xen-sparse/drivers/xen/blkback/interface.c
+++ b/linux-2.6-xen-sparse/drivers/xen/blkback/interface.c
@@ -136,6 +136,7 @@ int blkif_map(blkif_t *blkif, unsigned long shared_page, unsigned int evtchn)
{
unmap_frontend_page(blkif);
free_vm_area(blkif->blk_ring_area);
+ blkif->blk_rings.common.sring = NULL;
return err;
}
blkif->irq = err;
diff --git a/linux-2.6-xen-sparse/drivers/xen/blktap/interface.c b/linux-2.6-xen-sparse/drivers/xen/blktap/interface.c
index 21c4d551e7..11f800197a 100644
--- a/linux-2.6-xen-sparse/drivers/xen/blktap/interface.c
+++ b/linux-2.6-xen-sparse/drivers/xen/blktap/interface.c
@@ -137,6 +137,7 @@ int tap_blkif_map(blkif_t *blkif, unsigned long shared_page,
if (err < 0) {
unmap_frontend_page(blkif);
free_vm_area(blkif->blk_ring_area);
+ blkif->blk_rings.common.sring = NULL;
return err;
}
blkif->irq = err;