[prev in list] [next in list] [prev in thread] [next in thread]
List: xen-cvs
Subject: [Xen-changelog] [linux-2.6.18-xen] blktap: fix race memory refernce
From: "Xen patchbot-linux-2.6.18-xen"
Date: 2009-04-28 16:15:14
Message-ID: 200904281615.n3SGFFZO015128 () xenbits ! xensource ! com
[Download RAW message or body]
# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1240922586 -3600
# Node ID 3232c6e19bdc219363446f837c4136dc9959c205
# Parent 613216635ff0d0adf114bd5106bb37ae74fff458
blktap: fix race memory refernce with ring_ok.
fix race memory refernce with ring_ok.
ring_ok is shared by mmapping process and blktap kernel thread.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
---
drivers/xen/blktap/blktap.c | 5 +++++
1 files changed, 5 insertions(+)
diff -r 613216635ff0 -r 3232c6e19bdc drivers/xen/blktap/blktap.c
--- a/drivers/xen/blktap/blktap.c Tue Apr 28 13:42:32 2009 +0100
+++ b/drivers/xen/blktap/blktap.c Tue Apr 28 13:43:06 2009 +0100
@@ -617,6 +617,9 @@ static int blktap_release(struct inode *
if (!info)
return 0;
+ info->ring_ok = 0;
+ smp_wmb();
+
info->dev_inuse = 0;
DPRINTK("Freeing device [/dev/xen/blktap%d]\n",info->minor);
@@ -717,6 +720,7 @@ static int blktap_mmap(struct file *filp
#endif
info->vma = vma;
+ smp_wmb();
info->ring_ok = 1;
return 0;
fail:
@@ -1390,6 +1394,7 @@ static void dispatch_rw_block_io(blkif_t
WPRINTK("blktap: ring not ready for requests!\n");
goto fail_response;
}
+ smp_rmb();
if (RING_FULL(&info->ufe_ring)) {
WPRINTK("blktap: fe_ring is full, can't add "
_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic