]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* include/grub/kernel.h (FOR_MODULES): Preserve alignment invariants.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 13 Dec 2011 15:29:15 +0000 (16:29 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 13 Dec 2011 15:29:15 +0000 (16:29 +0100)
ChangeLog
include/grub/kernel.h

index fd260b57e86bdeae48ec3c5b391206a135829528..574f63cb46086f39b63a0a5d536acd927bbd251f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * include/grub/kernel.h (FOR_MODULES): Preserve alignment invariants.
+
 2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/loader/multiboot_mbi2.c (grub_multiboot_add_elfsyms):
index f587de5149ae7ce4e9d8cb0a06a94d3b83b874f7..c9a549675b85445572a5ab5e6fafa49d743f13c1 100644 (file)
@@ -71,13 +71,15 @@ struct grub_module_info64
 
 extern grub_addr_t EXPORT_VAR (grub_modbase);
 
-#define FOR_MODULES(var)  for (\
-  var = grub_modbase ? (struct grub_module_header *) \
+#define FOR_MODULES(var) for (var = grub_modbase ? (struct grub_module_header *) \
     (grub_modbase + (((struct grub_module_info *) grub_modbase)->offset)) : 0;\
   var && (grub_addr_t) var \
     < (grub_modbase + (((struct grub_module_info *) grub_modbase)->size));    \
   var = (struct grub_module_header *)                                  \
-    ((char *) var + ((struct grub_module_header *) var)->size))
+    ((grub_uint32_t *) var \
+    + ((((struct grub_module_header *) var)->size      \
+       + sizeof (grub_uint32_t) - 1) \
+       / sizeof (grub_uint32_t))))
 
 grub_addr_t grub_modules_get_end (void);