]> git.ipfire.org Git - ipfire-2.x.git/blob - src/patches/SuSE10.2/grub-0.97-protexec.patch
Anpassung der Pfadangaben für GRUB.
[ipfire-2.x.git] / src / patches / SuSE10.2 / grub-0.97-protexec.patch
1 --- grub-0.96/grub/asmstub.c
2 +++ grub-0.96/grub/asmstub.c
3 @@ -43,6 +43,8 @@
4 #include <termios.h>
5 #include <signal.h>
6
7 +#include <sys/mman.h>
8 +
9 #ifdef __linux__
10 # include <sys/ioctl.h> /* ioctl */
11 # if !defined(__GLIBC__) || \
12 @@ -140,14 +142,30 @@
13 }
14
15 assert (grub_scratch_mem == 0);
16 - scratch = malloc (0x100000 + EXTENDED_MEMSIZE + 15);
17 +#ifdef MAP_32BIT
18 +#define MY_MAP_SET MAP_PRIVATE | MAP_GROWSDOWN | MAP_ANONYMOUS | MAP_32BIT
19 +#else
20 +#define MY_MAP_SET MAP_PRIVATE | MAP_GROWSDOWN | MAP_ANONYMOUS
21 +#endif
22 + scratch = mmap(NULL,
23 + 0x100000 + EXTENDED_MEMSIZE + 15,
24 + PROT_EXEC | PROT_READ | PROT_WRITE,
25 + MY_MAP_SET,
26 + -1,
27 + 0);
28 +
29 assert (scratch);
30 grub_scratch_mem = (char *) ((((int) scratch) >> 4) << 4);
31
32 /* FIXME: simulate the memory holes using mprot, if available. */
33
34 assert (disks == 0);
35 - disks = malloc (NUM_DISKS * sizeof (*disks));
36 + disks = mmap(NULL,
37 + NUM_DISKS * sizeof (*disks),
38 + PROT_EXEC | PROT_READ | PROT_WRITE,
39 + MY_MAP_SET,
40 + -1,
41 + 0);
42 assert (disks);
43 /* Initialize DISKS. */
44 for (i = 0; i < NUM_DISKS; i++)
45 @@ -213,9 +231,9 @@
46 /* Release memory. */
47 restore_device_map (device_map);
48 device_map = 0;
49 - free (disks);
50 + munmap(disks, NUM_DISKS * sizeof (*disks));
51 disks = 0;
52 - free (scratch);
53 + munmap(scratch, 0x100000 + EXTENDED_MEMSIZE + 15);
54 grub_scratch_mem = 0;
55
56 if (serial_device)