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

Commit 8b98adc7 authored by Harshdeep Dhatt's avatar Harshdeep Dhatt
Browse files

msm: kgsl: Do not purge non-overlapping freemem list entries



A freemem list entry maybe truncated/deleted even if it doesn't
overlap with a new buffer, for example, if the new buffer is entirely
to the left or right of the entry. Fix the conditional logic so
that an entry may be truncated/deleted only if it overlaps with
the new buffer.

Change-Id: Ib1519f20d3b56c1e0ed36e9e0afb33c1b31d6166
Signed-off-by: default avatarHarshdeep Dhatt <hdhatt@codeaurora.org>
parent 3ff10850
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -186,11 +186,12 @@ static void kgsl_memfree_purge(pid_t ptname, uint64_t gpuaddr,
			gpuaddr < entry->gpuaddr + entry->size) {
			/* truncate the end of the entry */
			entry->size = gpuaddr - entry->gpuaddr;
		} else if (gpuaddr <= entry->gpuaddr &&
		} else if (gpuaddr <= entry->gpuaddr) {
			if (gpuaddr + size > entry->gpuaddr &&
				gpuaddr + size < entry->gpuaddr + entry->size)
				/* Truncate the beginning of the entry */
				entry->gpuaddr = gpuaddr + size;
		else if (gpuaddr + size >= entry->gpuaddr + entry->size) {
			else if (gpuaddr + size >= entry->gpuaddr + entry->size)
				/* Remove the entire entry */
				entry->size = 0;
		}