]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
imsm: fix: does not allow to use invalid chunk size
authorPrzemyslaw Czarnowski <przemyslaw.hawrylewicz.czarnowski@intel.com>
Tue, 6 Dec 2011 00:41:27 +0000 (11:41 +1100)
committerNeilBrown <neilb@suse.de>
Tue, 6 Dec 2011 00:41:27 +0000 (11:41 +1100)
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>
platform-intel.h

index 6c094d72692b42465241e2ee0c3240604cc921a7..99450ba7c744a59a857acd1c8842d5618a245a16 100644 (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;
 }