diff options
-rw-r--r-- | fs/ext4/extents_status.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/ext4/extents_status.c b/fs/ext4/extents_status.c index 98c90f5834ee..3f5c188953a4 100644 --- a/fs/ext4/extents_status.c +++ b/fs/ext4/extents_status.c | |||
@@ -344,8 +344,14 @@ static int ext4_es_can_be_merged(struct extent_status *es1, | |||
344 | if (ext4_es_status(es1) != ext4_es_status(es2)) | 344 | if (ext4_es_status(es1) != ext4_es_status(es2)) |
345 | return 0; | 345 | return 0; |
346 | 346 | ||
347 | if (((__u64) es1->es_len) + es2->es_len > 0xFFFFFFFFULL) | 347 | if (((__u64) es1->es_len) + es2->es_len > EXT_MAX_BLOCKS) { |
348 | pr_warn("ES assertion failed when merging extents. " | ||
349 | "The sum of lengths of es1 (%d) and es2 (%d) " | ||
350 | "is bigger than allowed file size (%d)\n", | ||
351 | es1->es_len, es2->es_len, EXT_MAX_BLOCKS); | ||
352 | WARN_ON(1); | ||
348 | return 0; | 353 | return 0; |
354 | } | ||
349 | 355 | ||
350 | if (((__u64) es1->es_lblk) + es1->es_len != es2->es_lblk) | 356 | if (((__u64) es1->es_lblk) + es1->es_len != es2->es_lblk) |
351 | return 0; | 357 | return 0; |