svn commit: r267395 - head/sys/ofed/include/linux
Hans Petter Selasky
hselasky at FreeBSD.org
Thu Jun 12 13:33:02 UTC 2014
Author: hselasky
Date: Thu Jun 12 13:33:01 2014
New Revision: 267395
URL: http://svnweb.freebsd.org/changeset/base/267395
Log:
- Fix out of range shifting bug in bitops.h.
- Make code a bit easier to read by adding parenthesis.
MFC after: 3 days
Sponsored by: Mellanox Technologies
Modified:
head/sys/ofed/include/linux/bitops.h
Modified: head/sys/ofed/include/linux/bitops.h
==============================================================================
--- head/sys/ofed/include/linux/bitops.h Thu Jun 12 13:17:11 2014 (r267394)
+++ head/sys/ofed/include/linux/bitops.h Thu Jun 12 13:33:01 2014 (r267395)
@@ -286,14 +286,14 @@ bitmap_empty(unsigned long *addr, int si
#define NBLONG (NBBY * sizeof(long))
#define set_bit(i, a) \
- atomic_set_long(&((volatile long *)(a))[(i)/NBLONG], 1UL << (i) % NBLONG)
+ atomic_set_long(&((volatile long *)(a))[(i)/NBLONG], 1UL << ((i) % NBLONG))
#define clear_bit(i, a) \
- atomic_clear_long(&((volatile long *)(a))[(i)/NBLONG], 1UL << (i) % NBLONG)
+ atomic_clear_long(&((volatile long *)(a))[(i)/NBLONG], 1UL << ((i) % NBLONG))
#define test_bit(i, a) \
!!(atomic_load_acq_long(&((volatile long *)(a))[(i)/NBLONG]) & \
- 1UL << ((i) % NBLONG))
+ (1UL << ((i) % NBLONG)))
static inline long
test_and_clear_bit(long bit, long *var)
@@ -302,7 +302,7 @@ test_and_clear_bit(long bit, long *var)
var += bit / (sizeof(long) * NBBY);
bit %= sizeof(long) * NBBY;
- bit = 1 << bit;
+ bit = (1UL << bit);
do {
val = *(volatile long *)var;
} while (atomic_cmpset_long(var, val, val & ~bit) == 0);
@@ -317,7 +317,7 @@ test_and_set_bit(long bit, long *var)
var += bit / (sizeof(long) * NBBY);
bit %= sizeof(long) * NBBY;
- bit = 1 << bit;
+ bit = (1UL << bit);
do {
val = *(volatile long *)var;
} while (atomic_cmpset_long(var, val, val | bit) == 0);
More information about the svn-src-all
mailing list