File tree Expand file tree Collapse file tree 1 file changed +8
-3
lines changed Expand file tree Collapse file tree 1 file changed +8
-3
lines changed Original file line number Diff line number Diff line change @@ -403,12 +403,17 @@ int sfdp_iterate_next_largest_erase_type(uint8_t &bitfield,
403
403
int largest_erase_type = 0 ;
404
404
405
405
int idx;
406
+ unsigned int erase_size;
406
407
for (idx = 3 ; idx >= 0 ; idx--) {
407
408
if (bitfield & type_mask) {
408
409
largest_erase_type = idx;
409
- if ((size > (int )(smptbl.erase_type_size_arr [largest_erase_type])) &&
410
- ((smptbl.region_high_boundary [region] - offset)
411
- > (uint64_t )(smptbl.erase_type_size_arr [largest_erase_type]))) {
410
+ erase_size = smptbl.erase_type_size_arr [largest_erase_type];
411
+ // Criteria:
412
+ // * offset is aligned to the type's erase size
413
+ // * erase size is no larger than the requested size,
414
+ // * erase range does not exceed the region boundary
415
+ if ((offset % erase_size == 0 ) && (size >= erase_size) &&
416
+ (offset + erase_size - 1 <= smptbl.region_high_boundary [region])) {
412
417
break ;
413
418
} else {
414
419
bitfield &= ~type_mask;
You can’t perform that action at this time.
0 commit comments