Fix compatibility with PaX.
authorPaX team <pageexec@freemail.hu>
Sun, 21 Sep 2008 15:39:42 +0000 (21 17:39 +0200)
committerMichał Januszewski <spock@gentoo.org>
Sun, 21 Sep 2008 15:39:42 +0000 (21 17:39 +0200)
Makefile
libs/lrmi-0.10/lrmi.c
v86_mem.c

index 84da0c5..3b2ae00 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -11,6 +11,7 @@ endif
 
 CFLAGS ?= -Wall -g -O2
 CFLAGS += -I$(KDIR)/include
+LDFLAGS += -Wl,-z,execheap
 
 ifeq ($(call config_opt,CONFIG_X86EMU),true)
        CFLAGS += -Ilibs/x86emu
index de75e75..97b6ae2 100644 (file)
@@ -341,7 +341,7 @@ LRMI_init(void)
         * an explanation
         */
        if (!map_file((void *)0, 0x502,
-        PROT_READ | PROT_WRITE | PROT_EXEC,
+        PROT_READ | PROT_WRITE,
         MAP_FIXED | MAP_SHARED, "/dev/mem", 0)) {
                real_mem_deinit();
                return 0;
@@ -355,8 +355,8 @@ LRMI_init(void)
                return 0;
        }
 
-       if (!map_file((void *)0xc0000, 0x30000,
-               PROT_READ | PROT_WRITE | PROT_EXEC,
+       if (!map_file((void *)0xc0000, 0x40000,
+               PROT_READ | PROT_EXEC,
                MAP_FIXED | MAP_SHARED, "/dev/mem", 0xc0000)) {
                munmap((void *)0, 0x502);
                munmap((void *)0xa0000, 0x20000);
index 644c769..17c898b 100644 (file)
--- a/v86_mem.c
+++ b/v86_mem.c
@@ -240,7 +240,7 @@ int v86_mem_init(void)
         * modes will not work correctly on some cards (e.g. nVidia GeForce
         * 8600M, PCI ID 10de:0425).
         */
-       mem_low = map_file(NULL, IVTBDA_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC,
+       mem_low = map_file(NULL, IVTBDA_SIZE, PROT_READ | PROT_WRITE,
                                        MAP_SHARED, "/dev/mem", IVTBDA_BASE);
        if (!mem_low) {
                real_mem_deinit();
@@ -293,7 +293,7 @@ int v86_mem_init(void)
        }
        vbios_size = tmp[2] * 0x200;
        ulog(LOG_DEBUG, "VBIOS at %5x-%5x\n", VBIOS_BASE, VBIOS_BASE + vbios_size - 1);
-       mem_vbios = map_file(NULL, vbios_size, PROT_READ | PROT_WRITE | PROT_EXEC,
+       mem_vbios = map_file(NULL, vbios_size, PROT_READ | PROT_EXEC,
                                                        MAP_SHARED, "/dev/mem", VBIOS_BASE);
 
        if (!mem_vbios) {
@@ -303,7 +303,7 @@ int v86_mem_init(void)
        }
 
        /* Map the system BIOS */
-       mem_sbios = map_file(NULL, SBIOS_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC,
+       mem_sbios = map_file(NULL, SBIOS_SIZE, PROT_READ | PROT_EXEC,
                                        MAP_SHARED, "/dev/mem", SBIOS_BASE);
        if (!mem_sbios) {
                ulog(LOG_ERR, "Failed to mmap the System BIOS as %5x.", SBIOS_BASE);