|
@@ -1421,7 +1421,10 @@ static int nand_check_erased_buf(void *buf, int len, int bitflips_threshold)
|
|
|
|
|
|
for (; len >= sizeof(long);
|
|
|
len -= sizeof(long), bitmap += sizeof(long)) {
|
|
|
- weight = hweight_long(*((unsigned long *)bitmap));
|
|
|
+ unsigned long d = *((unsigned long *)bitmap);
|
|
|
+ if (d == ~0UL)
|
|
|
+ continue;
|
|
|
+ weight = hweight_long(d);
|
|
|
bitflips += BITS_PER_LONG - weight;
|
|
|
if (unlikely(bitflips > bitflips_threshold))
|
|
|
return -EBADMSG;
|