diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/bitmap.c | 12 | 
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/bitmap.c b/lib/bitmap.c index 35a1f7ff414..702565821c9 100644 --- a/lib/bitmap.c +++ b/lib/bitmap.c @@ -179,14 +179,16 @@ void __bitmap_shift_left(unsigned long *dst,  }  EXPORT_SYMBOL(__bitmap_shift_left); -void __bitmap_and(unsigned long *dst, const unsigned long *bitmap1, +int __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,  				const unsigned long *bitmap2, int bits)  {  	int k;  	int nr = BITS_TO_LONGS(bits); +	unsigned long result = 0;  	for (k = 0; k < nr; k++) -		dst[k] = bitmap1[k] & bitmap2[k]; +		result |= (dst[k] = bitmap1[k] & bitmap2[k]); +	return result != 0;  }  EXPORT_SYMBOL(__bitmap_and); @@ -212,14 +214,16 @@ void __bitmap_xor(unsigned long *dst, const unsigned long *bitmap1,  }  EXPORT_SYMBOL(__bitmap_xor); -void __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1, +int __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1,  				const unsigned long *bitmap2, int bits)  {  	int k;  	int nr = BITS_TO_LONGS(bits); +	unsigned long result = 0;  	for (k = 0; k < nr; k++) -		dst[k] = bitmap1[k] & ~bitmap2[k]; +		result |= (dst[k] = bitmap1[k] & ~bitmap2[k]); +	return result != 0;  }  EXPORT_SYMBOL(__bitmap_andnot);  |