summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/core/packer.c
diff options
context:
space:
mode:
authorJeff Garzik2005-08-29 22:12:36 +0200
committerJeff Garzik2005-08-29 22:12:36 +0200
commit2fca877b68b2b4fc5b94277858a1bedd46017cde (patch)
treefd02725406299ba2f26354463b3c261721e9eb6b /drivers/infiniband/core/packer.c
parentMerge upstream kernel changes into 'C/H/S support' branch of libata. (diff)
parentLinux v2.6.13 (diff)
downloadkernel-qcow2-linux-2fca877b68b2b4fc5b94277858a1bedd46017cde.tar.gz
kernel-qcow2-linux-2fca877b68b2b4fc5b94277858a1bedd46017cde.tar.xz
kernel-qcow2-linux-2fca877b68b2b4fc5b94277858a1bedd46017cde.zip
/spare/repo/libata-dev branch 'v2.6.13'
Diffstat (limited to 'drivers/infiniband/core/packer.c')
-rw-r--r--drivers/infiniband/core/packer.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/infiniband/core/packer.c b/drivers/infiniband/core/packer.c
index 5f15feffeae2..eb5ff54c10d7 100644
--- a/drivers/infiniband/core/packer.c
+++ b/drivers/infiniband/core/packer.c
@@ -96,7 +96,7 @@ void ib_pack(const struct ib_field *desc,
else
val = 0;
- mask = cpu_to_be64(((1ull << desc[i].size_bits) - 1) << shift);
+ mask = cpu_to_be64((~0ull >> (64 - desc[i].size_bits)) << shift);
addr = (__be64 *) ((__be32 *) buf + desc[i].offset_words);
*addr = (*addr & ~mask) | (cpu_to_be64(val) & mask);
} else {
@@ -176,7 +176,7 @@ void ib_unpack(const struct ib_field *desc,
__be64 *addr;
shift = 64 - desc[i].offset_bits - desc[i].size_bits;
- mask = ((1ull << desc[i].size_bits) - 1) << shift;
+ mask = (~0ull >> (64 - desc[i].size_bits)) << shift;
addr = (__be64 *) buf + desc[i].offset_words;
val = (be64_to_cpup(addr) & mask) >> shift;
value_write(desc[i].struct_offset_bytes,