Browse Source

We may be required to page-align modules, so let's make sure we catch

it if we don't.
tags/v0.9.3
Michael Brown 18 years ago
parent
commit
e4c6418ac0
1 changed files with 7 additions and 1 deletions
  1. 7
    1
      src/arch/i386/image/multiboot.c

+ 7
- 1
src/arch/i386/image/multiboot.c View File

24
  */
24
  */
25
 
25
 
26
 #include <errno.h>
26
 #include <errno.h>
27
+#include <assert.h>
27
 #include <alloca.h>
28
 #include <alloca.h>
28
 #include <multiboot.h>
29
 #include <multiboot.h>
29
 #include <gpxe/uaccess.h>
30
 #include <gpxe/uaccess.h>
106
 	unsigned int count = 0;
107
 	unsigned int count = 0;
107
 
108
 
108
 	for_each_image ( module_image ) {
109
 	for_each_image ( module_image ) {
109
-		/* Do not include kernel image as a module */
110
+
111
+		/* Do not include kernel image itself as a module */
110
 		if ( module_image == image )
112
 		if ( module_image == image )
111
 			continue;
113
 			continue;
112
 		module = &modules[count++];
114
 		module = &modules[count++];
115
+
113
 		/* Populate module data structure, if applicable */
116
 		/* Populate module data structure, if applicable */
114
 		if ( ! modules )
117
 		if ( ! modules )
115
 			continue;
118
 			continue;
118
 						 module_image->len );
121
 						 module_image->len );
119
 		if ( image->cmdline )
122
 		if ( image->cmdline )
120
 			module->string = virt_to_phys ( image->cmdline );
123
 			module->string = virt_to_phys ( image->cmdline );
124
+
125
+		/* We promise to page-align modules, so at least check */
126
+		assert ( ( module->mod_start & 0xfff ) == 0 );
121
 	}
127
 	}
122
 
128
 
123
 	return count;
129
 	return count;

Loading…
Cancel
Save