|
@@ -535,8 +535,17 @@ static int get_bad_peb_limit(const struct ubi_device *ubi, int max_beb_per1024)
|
|
|
int limit, device_pebs;
|
|
|
uint64_t device_size;
|
|
|
|
|
|
- if (!max_beb_per1024)
|
|
|
- return 0;
|
|
|
+ if (!max_beb_per1024) {
|
|
|
+ /*
|
|
|
+ * Since max_beb_per1024 has not been set by the user in either
|
|
|
+ * the cmdline or Kconfig, use mtd_max_bad_blocks to set the
|
|
|
+ * limit if it is supported by the device.
|
|
|
+ */
|
|
|
+ limit = mtd_max_bad_blocks(ubi->mtd, 0, ubi->mtd->size);
|
|
|
+ if (limit < 0)
|
|
|
+ return 0;
|
|
|
+ return limit;
|
|
|
+ }
|
|
|
|
|
|
/*
|
|
|
* Here we are using size of the entire flash chip and
|