]> git.proxmox.com Git - grub2.git/commitdiff
* grub-core/net/netbuff.c (grub_netbuff_alloc): Ensure proper alignment.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 13 Dec 2011 01:15:09 +0000 (02:15 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 13 Dec 2011 01:15:09 +0000 (02:15 +0100)
ChangeLog
grub-core/net/netbuff.c

index b7a5b02f31eab7e3cc532ea69493e64fddd9bbe9..be4b26ba2936948ab1fc1a3f9fe92ea36bf0daf7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/net/netbuff.c (grub_netbuff_alloc): Ensure proper alignment.
+
 2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Change pointer
index d20104ab0a2e06732ca13435fe2edeb715ecfd02..bee207f90eadac2b7f15555d2c622ac02fa6d590 100644 (file)
@@ -78,6 +78,8 @@ grub_netbuff_alloc (grub_size_t len)
   struct grub_net_buff *nb;
   void *data;
 
+  COMPILE_TIME_ASSERT (NETBUFF_ALIGN % sizeof (grub_properly_aligned_t) == 0);
+
   if (len < NETBUFFMINLEN)
     len = NETBUFFMINLEN;
 
@@ -85,7 +87,8 @@ grub_netbuff_alloc (grub_size_t len)
   data = grub_memalign (NETBUFF_ALIGN, len + sizeof (*nb));
   if (!data)
     return NULL;
-  nb = (struct grub_net_buff *) ((grub_uint8_t *) data + len);
+  nb = (struct grub_net_buff *) ((grub_properly_aligned_t *) data
+                                + len / sizeof (grub_properly_aligned_t));
   nb->head = nb->data = nb->tail = data;
   nb->end = (char *) nb;
   return nb;