]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
fix: imsm: validate strip size - tuned up
authorHawrylewicz Czarnowski, Przemyslaw <przemyslaw.hawrylewicz.czarnowski@intel.com>
Wed, 7 Dec 2011 01:15:55 +0000 (12:15 +1100)
committerNeilBrown <neilb@suse.de>
Wed, 7 Dec 2011 01:15:55 +0000 (12:15 +1100)
Neil's proposal seems more reasonable and shows what is really going on
here.

Signed-off-by: Przemyslaw Czarnowski <przemyslaw.hawrylewicz.czarnowski@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
platform-intel.h

index 99450ba7c744a59a857acd1c8842d5618a245a16..c997f1b8e0c924a350c1ff6bb867402804f488cf 100644 (file)
@@ -124,13 +124,12 @@ 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 */
-       orom_chunk_bit = (orom->sss & (1 << (fs - 1)));
-       return orom_chunk_bit && 1 << orom_chunk_bit == chunk;
+       if (chunk & (chunk-1))
+               return 0; /* not a power of 2 */
+       return !!(orom->sss & (1 << (fs - 1)));
 }