summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2012-02-28 12:42:44 -0500
committerChris Mason <chris.mason@oracle.com>2012-03-03 07:42:35 -0500
commita175423c831ea582c06784d1e172d2ce1d79923a (patch)
tree742ca97279da69c981008620a3d2f0c48acdf6f4
parentd3b010640e5c59b98d3b11229ba4cc2838dc7cbf (diff)
downloadlinux-a175423c831ea582c06784d1e172d2ce1d79923a.tar.gz
linux-a175423c831ea582c06784d1e172d2ce1d79923a.tar.bz2
linux-a175423c831ea582c06784d1e172d2ce1d79923a.zip
Btrfs: fix casting error in scrub reada code
The reada code from scrub was casting down a u64 to an unsigned long so it could insert it into a radix tree. What it really wanted to do was cast down the result of a shift, instead of casting down the u64. The bug resulted in trying to insert our reada struct into the wrong place, which caused soft lockups and other problems. Signed-off-by: Chris Mason <chris.mason@oracle.com>
-rw-r--r--fs/btrfs/reada.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/btrfs/reada.c b/fs/btrfs/reada.c
index 2373b39a132b..22db04550f6a 100644
--- a/fs/btrfs/reada.c
+++ b/fs/btrfs/reada.c
@@ -305,7 +305,7 @@ again:
spin_lock(&fs_info->reada_lock);
ret = radix_tree_insert(&dev->reada_zones,
- (unsigned long)zone->end >> PAGE_CACHE_SHIFT,
+ (unsigned long)(zone->end >> PAGE_CACHE_SHIFT),
zone);
spin_unlock(&fs_info->reada_lock);