imsm: fix: does not allow to use invalid chunk size

Only least significant bit of chunk size provided by user has been used
in test with OROM capabilities. This way user could pass value which is
not a power of 2.

Signed-off-by: Przemyslaw Czarnowski <przemyslaw.hawrylewicz.czarnowski@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
Przemyslaw Czarnowski 2011-12-06 11:41:27 +11:00 committed by NeilBrown
parent 137debce82
commit 8aedc4eaf6
1 changed files with 3 additions and 1 deletions

View File

@ -124,11 +124,13 @@ static inline int imsm_orom_has_raid5(const struct imsm_orom *orom)
static inline int imsm_orom_has_chunk(const struct imsm_orom *orom, int chunk)
{
int fs = ffs(chunk);
int orom_chunk_bit;
if (!fs)
return 0;
fs--; /* bit num to bit index */
return !!(orom->sss & (1 << (fs - 1)));
orom_chunk_bit = (orom->sss & (1 << (fs - 1)));
return orom_chunk_bit && 1 << orom_chunk_bit == chunk;
}