=== modified file 'grub-core/fs/zfs/zfs.c'
--- grub-core/fs/zfs/zfs.c	2011-06-23 22:31:29 +0000
+++ grub-core/fs/zfs/zfs.c	2011-07-29 20:15:34 +0000
@@ -864,7 +864,7 @@
 	  /* get the uint64_t property value */
 	  la = &ZAP_LEAF_CHUNK (l, blksft, le->le_value_chunk).l_array;
 
-	  *value = grub_be_to_cpu64 (la->la_array64);
+	  *value = grub_be_to_cpu64 (*((grub_uint64_t*)la->la_array));
 
 	  return GRUB_ERR_NONE;
 	}
@@ -1015,7 +1015,7 @@
 
 	    /* get the uint64_t property value */
 	    la = &ZAP_LEAF_CHUNK (l, blksft, le->le_value_chunk).l_array;
-	    val = grub_be_to_cpu64 (la->la_array64);
+	    val = grub_be_to_cpu64 (*((grub_uint64_t*)la->la_array));
 	    if (hook (buf, val))
 	      return 1;
 	    grub_free (buf);

=== modified file 'include/grub/zfs/zap_leaf.h'
--- include/grub/zfs/zap_leaf.h	2010-12-01 21:55:26 +0000
+++ include/grub/zfs/zap_leaf.h	2011-07-29 19:33:18 +0000
@@ -86,11 +86,7 @@
 	} l_entry;
 	struct zap_leaf_array {
 		grub_uint8_t la_type;		/* always ZAP_CHUNK_ARRAY */
-		union
-		{
-			grub_uint8_t la_array[ZAP_LEAF_ARRAY_BYTES];
-			grub_uint64_t la_array64;
-		};
+		grub_uint8_t la_array[ZAP_LEAF_ARRAY_BYTES];
 		grub_uint16_t la_next;		/* next blk or CHAIN_END */
 	} l_array;
 	struct zap_leaf_free {

