diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/fs/zfs/zfs.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/fs/zfs/zfs.c index 2f72e42b..b5e10fd0 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/fs/zfs/zfs.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/fs/zfs/zfs.c @@ -141,7 +141,10 @@ ZAP_LEAF_NUMCHUNKS (int bs) static inline zap_leaf_chunk_t * ZAP_LEAF_CHUNK (zap_leaf_phys_t *l, int bs, int idx) { - return &((zap_leaf_chunk_t *) (l->l_entries + grub_properly_aligned_t *l_entries; + + l_entries = (grub_properly_aligned_t *) ALIGN_UP((grub_addr_t)l->l_hash, sizeof (grub_properly_aligned_t)); + return &((zap_leaf_chunk_t *) (l_entries + (ZAP_LEAF_HASH_NUMENTRIES(bs) * 2) / sizeof (grub_properly_aligned_t)))[idx]; } diff --git a/GRUB2/MOD_SRC/grub-2.04/include/grub/zfs/zap_leaf.h b/GRUB2/MOD_SRC/grub-2.04/include/grub/zfs/zap_leaf.h index 95c67dcb..11447c16 100644 --- a/GRUB2/MOD_SRC/grub-2.04/include/grub/zfs/zap_leaf.h +++ b/GRUB2/MOD_SRC/grub-2.04/include/grub/zfs/zap_leaf.h @@ -70,7 +70,6 @@ typedef struct zap_leaf_phys { */ grub_uint16_t l_hash[0]; - grub_properly_aligned_t l_entries[0]; } zap_leaf_phys_t; typedef union zap_leaf_chunk {