android: ion: do not defer free for carveout heap
authorCho KyongHo <pullip.cho@samsung.com>
Wed, 7 Feb 2018 05:46:49 +0000 (14:46 +0900)
committerCosmin Tanislav <demonsingur@gmail.com>
Mon, 22 Apr 2024 17:21:53 +0000 (20:21 +0300)
commitd985013f9e1a0ceb945be5d028675a546bf2b9b1
tree6e2da215c098ff99afc3be0b7fe8ea52f5ae7c0b
parentaa953065ae78a0f6240e4b67559d68aa2c7d131a
android: ion: do not defer free for carveout heap

Carved out heaps allocate buffers from a memory pool of with a limited
size. If it frees buffers in deferred manner, the heap may not be
available in a rare condition by unexpected external fragmentations.
Let's think about the following scenario in a 10MB carveout pool:
  1. allocated 4MB @ +0MB
  2. allocated 2MB @ +4MB
  3. freed 1 but defferred
  4. freed 2 but defferred
  5. allocated 3MB @ +6MB
  6. returned buffer 1 and 2 to the heap.
  7. allocated 4MB @ +0MB
  8. allocation of 3MB failed due to the fragmentation.

Any defferred behavior to the very limited resources is harmful.

Change-Id: I0a64fdec56f0ec1992c20f8ccd50d5c7fbfa8d40
Signed-off-by: Cho KyongHo <pullip.cho@samsung.com>
drivers/staging/android/ion/ion_carveout_heap.c