Skip to content

Commit 2880017

Browse files
ldoraulukaszstolarczuk
authored andcommitted
Fix file_alloc_aligned()
`new_offset_mmap` can be greater than `file_provider->size_mmap`, so `file_provider->size_mmap - new_offset_mmap` would be an underflow in this case. Signed-off-by: Lukasz Dorau <lukasz.dorau@intel.com>
1 parent 1f23a44 commit 2880017

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/provider/provider_file_memory.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,8 @@ static umf_result_t file_alloc_aligned(file_memory_provider_t *file_provider,
429429
return UMF_RESULT_ERROR_UNKNOWN;
430430
}
431431

432+
assert(file_provider->offset_mmap <= file_provider->size_mmap);
433+
432434
if (file_provider->size_mmap - file_provider->offset_mmap < size) {
433435
umf_result = file_mmap_aligned(file_provider, size, alignment);
434436
if (umf_result != UMF_RESULT_SUCCESS) {
@@ -454,7 +456,8 @@ static umf_result_t file_alloc_aligned(file_memory_provider_t *file_provider,
454456
size_t new_offset_fd =
455457
file_provider->offset_fd + new_offset_mmap - file_provider->offset_mmap;
456458

457-
if (file_provider->size_mmap - new_offset_mmap < size) {
459+
// new_offset_mmap can be greater than file_provider->size_mmap
460+
if (file_provider->size_mmap < size + new_offset_mmap) {
458461
umf_result = file_mmap_aligned(file_provider, size, alignment);
459462
if (umf_result != UMF_RESULT_SUCCESS) {
460463
utils_mutex_unlock(&file_provider->lock);

0 commit comments

Comments
 (0)