summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2016-07-25 20:12:07 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2016-07-25 20:12:07 +0000
commita17e28e18db4858a49d5582d6d986a1e651fdb5a (patch)
treeae41eb6ed9a693771575c769be3f4e819d4b0ddb
parentdbd3c6ee060c5d5f084786d966088e75ebdf089b (diff)
Disable the code that allocates W|X memory. There is fallback code that
gets used if allocating W|X memory fails, which is probably a bit slower. However, that is much better than commit a W^X violation which currently gets you killed. ok jca@
-rw-r--r--lib/mesa/src/gallium/auxiliary/rtasm/rtasm_execmem.c12
-rw-r--r--lib/mesa/src/mapi/u_execmem.c9
-rw-r--r--lib/mesa/src/mesa/main/execmem.c15
3 files changed, 34 insertions, 2 deletions
diff --git a/lib/mesa/src/gallium/auxiliary/rtasm/rtasm_execmem.c b/lib/mesa/src/gallium/auxiliary/rtasm/rtasm_execmem.c
index f7e605e95..edbb45970 100644
--- a/lib/mesa/src/gallium/auxiliary/rtasm/rtasm_execmem.c
+++ b/lib/mesa/src/gallium/auxiliary/rtasm/rtasm_execmem.c
@@ -69,6 +69,16 @@ static struct mem_block *exec_heap = NULL;
static unsigned char *exec_mem = NULL;
+#ifdef __OpenBSD__
+
+static int
+init_heap(void)
+{
+ return 0;
+}
+
+#else
+
static int
init_heap(void)
{
@@ -83,6 +93,8 @@ init_heap(void)
return (exec_mem != MAP_FAILED);
}
+#endif
+
void *
rtasm_exec_malloc(size_t size)
diff --git a/lib/mesa/src/mapi/u_execmem.c b/lib/mesa/src/mapi/u_execmem.c
index 89d5c1d08..3af9d0ac9 100644
--- a/lib/mesa/src/mapi/u_execmem.c
+++ b/lib/mesa/src/mapi/u_execmem.c
@@ -45,8 +45,15 @@ static unsigned int head = 0;
static unsigned char *exec_mem = (unsigned char *)0;
+#if defined(__OpenBSD__)
-#if defined(__linux__) || defined(__OpenBSD__) || defined(_NetBSD__) || defined(__sun) || defined(__HAIKU__)
+static int
+init_map(void)
+{
+ return 0;
+}
+
+#elif defined(__linux__) || defined(_NetBSD__) || defined(__sun) || defined(__HAIKU__)
#include <unistd.h>
#include <sys/mman.h>
diff --git a/lib/mesa/src/mesa/main/execmem.c b/lib/mesa/src/mesa/main/execmem.c
index 3a1338515..87e4a38ef 100644
--- a/lib/mesa/src/mesa/main/execmem.c
+++ b/lib/mesa/src/mesa/main/execmem.c
@@ -36,7 +36,20 @@
-#if defined(__linux__) || defined(__OpenBSD__) || defined(_NetBSD__) || defined(__sun) || defined(__HAIKU__)
+#if defined(__OpenBSD__)
+
+void *
+_mesa_exec_malloc(GLuint size)
+{
+ return NULL;
+}
+
+void
+_mesa_exec_free(void *addr)
+{
+}
+
+#elif defined(__linux__) || defined(_NetBSD__) || defined(__sun) || defined(__HAIKU__)
/*
* Allocate a large block of memory which can hold code then dole it out