diff options
Diffstat (limited to 'drivers/md/md-bitmap.c')
| -rw-r--r-- | drivers/md/md-bitmap.c | 6 | 
1 files changed, 3 insertions, 3 deletions
| diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c index 059afc24c08b..0a2d37eb38ef 100644 --- a/drivers/md/md-bitmap.c +++ b/drivers/md/md-bitmap.c @@ -1424,7 +1424,7 @@ __acquires(bitmap->lock)  	sector_t chunk = offset >> bitmap->chunkshift;  	unsigned long page = chunk >> PAGE_COUNTER_SHIFT;  	unsigned long pageoff = (chunk & PAGE_COUNTER_MASK) << COUNTER_BYTE_SHIFT; -	sector_t csize; +	sector_t csize = ((sector_t)1) << bitmap->chunkshift;  	int err;  	if (page >= bitmap->pages) { @@ -1433,6 +1433,7 @@ __acquires(bitmap->lock)  		 * End-of-device while looking for a whole page or  		 * user set a huge number to sysfs bitmap_set_bits.  		 */ +		*blocks = csize - (offset & (csize - 1));  		return NULL;  	}  	err = md_bitmap_checkpage(bitmap, page, create, 0); @@ -1441,8 +1442,7 @@ __acquires(bitmap->lock)  	    bitmap->bp[page].map == NULL)  		csize = ((sector_t)1) << (bitmap->chunkshift +  					  PAGE_COUNTER_SHIFT); -	else -		csize = ((sector_t)1) << bitmap->chunkshift; +  	*blocks = csize - (offset & (csize - 1));  	if (err < 0) | 
