Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a621e426 authored by Jeff Brown's avatar Jeff Brown Committed by Android (Google) Code Review
Browse files

Merge "Fix invalid madvise() during concurrent alloc/dealloc of MemoryDealer"

parents 2f9e1a5f c4cd5301
Loading
Loading
Loading
Loading
+5 −1
Original line number Original line Diff line number Diff line
@@ -180,7 +180,6 @@ Allocation::~Allocation()
        /* NOTE: it's VERY important to not free allocations of size 0 because
        /* NOTE: it's VERY important to not free allocations of size 0 because
         * they're special as they don't have any record in the allocator
         * they're special as they don't have any record in the allocator
         * and could alias some real allocation (their offset is zero). */
         * and could alias some real allocation (their offset is zero). */
        mDealer->deallocate(freedOffset);


        // keep the size to unmap in excess
        // keep the size to unmap in excess
        size_t pagesize = getpagesize();
        size_t pagesize = getpagesize();
@@ -216,6 +215,11 @@ Allocation::~Allocation()
            }
            }
#endif
#endif
        }
        }

        // This should be done after madvise(MADV_REMOVE), otherwise madvise()
        // might kick out the memory region that's allocated and/or written
        // right after the deallocation.
        mDealer->deallocate(freedOffset);
    }
    }
}
}