summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorRoland Dreier <roland@topspin.com>2005-04-17 00:26:10 +0200
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-17 00:26:10 +0200
commitde0d9641c4f164009b62ecc342f9776d44e78b6a (patch)
tree28c21b7b7628861a735473ae7c8bf0baf588ab8f /drivers/infiniband
parent[PATCH] IB: remove unneeded includes (diff)
downloadlinux-de0d9641c4f164009b62ecc342f9776d44e78b6a.tar.xz
linux-de0d9641c4f164009b62ecc342f9776d44e78b6a.zip
[PATCH] IB: Fix FMR pool crash
Mask bits correctly from jhash result in ib_fmr_hash() so that the computed bucket index is within our hash table. This fixes an SDP crash. Signed-off-by: Roland Dreier <roland@topspin.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/core/fmr_pool.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/infiniband/core/fmr_pool.c b/drivers/infiniband/core/fmr_pool.c
index 2e9469f18926..59ee001ff05b 100644
--- a/drivers/infiniband/core/fmr_pool.c
+++ b/drivers/infiniband/core/fmr_pool.c
@@ -103,9 +103,8 @@ struct ib_fmr_pool {
static inline u32 ib_fmr_hash(u64 first_page)
{
- return jhash_2words((u32) first_page,
- (u32) (first_page >> 32),
- 0);
+ return jhash_2words((u32) first_page, (u32) (first_page >> 32), 0) &
+ (IB_FMR_HASH_SIZE - 1);
}
/* Caller must hold pool_lock */