From: Chris Mason Date: Tue, 28 Feb 2012 17:42:44 +0000 (-0500) Subject: Btrfs: fix casting error in scrub reada code X-Git-Tag: v3.3-rc7~3^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a175423c831ea582c06784d1e172d2ce1d79923a;p=thirdparty%2Flinux.git 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 --- diff --git a/fs/btrfs/reada.c b/fs/btrfs/reada.c index 2373b39a132b5..22db04550f6a0 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);