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

Commit 906661c1 authored by Carter Cooper's avatar Carter Cooper Committed by Gerrit - the friendly Code Review server
Browse files

msm: kgsl: Do not mark microcode buffers as NOEXEC



Microcode buffers should not be marked as NOEXEC
as they contain executable instruction. All other
buffers should be marked NOEXEC for security reasons.

Change-Id: I11aa5fa416e753ef48115aa983f21f2d01e40254
Signed-off-by: default avatarSushmita Susheelendra <ssusheel@codeaurora.org>
Signed-off-by: default avatarOleg Perelet <operelet@codeaurora.org>
Signed-off-by: default avatarCarter Cooper <ccooper@codeaurora.org>
parent 4e8af293
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1278,7 +1278,8 @@ static int _load_firmware(struct kgsl_device *device, const char *fwfile,
	}

	ret = kgsl_allocate_global(device, &firmware->memdesc, fw->size - 4,
				KGSL_MEMFLAGS_GPUREADONLY, 0, "ucode");
				KGSL_MEMFLAGS_GPUREADONLY, KGSL_MEMDESC_UCODE,
				"ucode");

	if (!ret) {
		memcpy(firmware->memdesc.hostptr, &fw->data[4], fw->size - 4);
+2 −0
Original line number Diff line number Diff line
@@ -196,6 +196,8 @@ struct kgsl_memdesc_ops {
#define KGSL_MEMDESC_TZ_LOCKED BIT(7)
/* The memdesc is allocated through contiguous memory */
#define KGSL_MEMDESC_CONTIG BIT(8)
/* This is an instruction buffer */
#define KGSL_MEMDESC_UCODE BIT(9)

/**
 * struct kgsl_memdesc - GPU memory object descriptor
+3 −0
Original line number Diff line number Diff line
@@ -1778,6 +1778,9 @@ static unsigned int _get_protection_flags(struct kgsl_memdesc *memdesc)
	if (memdesc->flags & KGSL_MEMFLAGS_IOCOHERENT)
		flags |= IOMMU_CACHE;

	if (memdesc->priv & KGSL_MEMDESC_UCODE)
		flags &= ~IOMMU_NOEXEC;

	return flags;
}