]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/fs/nilfs2.c (grub_nilfs2_btree_node): Add zero-size keys
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 13 Dec 2011 01:00:44 +0000 (02:00 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 13 Dec 2011 01:00:44 +0000 (02:00 +0100)
array.
(grub_nilfs2_btree_node_dkeys): Ensure return pointer alignment.
(grub_nilfs2_btree_lookup): Ensure buffer alignment.

ChangeLog
grub-core/fs/nilfs2.c

index 99fcb1f953e780a0ee57d136d7b6e2dca365bf39..1fe654de584fea29615a374a222c768e49fef3d7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/fs/nilfs2.c (grub_nilfs2_btree_node): Add zero-size keys
+       array.
+       (grub_nilfs2_btree_node_dkeys): Ensure return pointer alignment.
+       (grub_nilfs2_btree_lookup): Ensure buffer alignment.
+
 2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/fs/ext2.c (grub_ext4_find_leaf): MAke buf as pointer to
index 35a040b9730805cb5f6e32299e10fcf7d1a0c2ec..0b001eb0e3ed2a3cf51a7cfcc59182c28354b835 100644 (file)
@@ -208,6 +208,7 @@ struct grub_nilfs2_btree_node
   grub_uint8_t bn_level;
   grub_uint16_t bn_nchildren;
   grub_uint32_t bn_pad;
+  grub_uint64_t keys[0];
 };
 
 struct grub_nilfs2_palloc_group_desc
@@ -399,9 +400,9 @@ grub_nilfs2_btree_get_level (struct grub_nilfs2_btree_node *node)
 static inline grub_uint64_t *
 grub_nilfs2_btree_node_dkeys (struct grub_nilfs2_btree_node *node)
 {
-  return (grub_uint64_t *) ((char *) (node + 1) +
-                           ((node->bn_flags & NILFS_BTREE_NODE_ROOT) ?
-                            0 : NILFS_BTREE_NODE_EXTRA_PAD_SIZE));
+  return (node->keys +
+         ((node->bn_flags & NILFS_BTREE_NODE_ROOT) ?
+          0 : (NILFS_BTREE_NODE_EXTRA_PAD_SIZE / sizeof (grub_uint64_t))));
 }
 
 static inline grub_uint64_t
@@ -502,7 +503,7 @@ grub_nilfs2_btree_lookup (struct grub_nilfs2_data *data,
                          grub_uint64_t key, int need_translate)
 {
   struct grub_nilfs2_btree_node *node;
-  unsigned char block[NILFS2_BLOCK_SIZE (data)];
+  GRUB_PROPERLY_ALIGNED_ARRAY (block, NILFS2_BLOCK_SIZE (data));
   grub_uint64_t ptr;
   int level, found, index;