unaligned u16 rather than u8[2].
+2013-12-11 Vladimir Serbinenko <phcoder@gmail.com>
+
+ * include/grub/efi/api.h (grub_efi_device_path): Define length as
+ unaligned u16 rather than u8[2].
+
2013-12-11 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/kern/ia64/dl.c (grub_arch_dl_relocate_symbols): Add checks
ldp = find_last_device_path (dp);
ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
- ldp->length[0] = sizeof (*ldp);
- ldp->length[1] = 0;
+ ldp->length = sizeof (*ldp);
for (parent = devices; parent; parent = parent->next)
{
ldp = find_last_device_path (dp);
ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
- ldp->length[0] = sizeof (*ldp);
- ldp->length[1] = 0;
+ ldp->length = sizeof (*ldp);
ret = (grub_efi_compare_device_paths (dp, parent->device_path) == 0);
grub_free (dp);
dup_ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
dup_ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
- dup_ldp->length[0] = sizeof (*dup_ldp);
- dup_ldp->length[1] = 0;
+ dup_ldp->length = sizeof (*dup_ldp);
}
if (!get_diskname_from_path (dup_dp, device_name))
if (*p == '/')
*p = '\\';
- size = size * sizeof (grub_efi_char16_t) + sizeof (*fp);
- fp->header.length[0] = (grub_efi_uint8_t) (size & 0xff);
- fp->header.length[1] = (grub_efi_uint8_t) (size >> 8);
+ fp->header.length = size * sizeof (grub_efi_char16_t) + sizeof (*fp);
}
static grub_efi_device_path_t *
d = GRUB_EFI_NEXT_DEVICE_PATH (d);
d->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
d->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
- d->length[0] = sizeof (*d);
- d->length[1] = 0;
+ d->length = sizeof (*d);
return file_path;
}
{
grub_efi_uint8_t type;
grub_efi_uint8_t subtype;
- grub_efi_uint8_t length[2];
-};
+ grub_efi_uint16_t length;
+} __attribute__ ((packed));
typedef struct grub_efi_device_path grub_efi_device_path_t;
/* XXX EFI does not define EFI_DEVICE_PATH_PROTOCOL but uses it.
It seems to be identical to EFI_DEVICE_PATH. */
#define GRUB_EFI_DEVICE_PATH_TYPE(dp) ((dp)->type & 0x7f)
#define GRUB_EFI_DEVICE_PATH_SUBTYPE(dp) ((dp)->subtype)
-#define GRUB_EFI_DEVICE_PATH_LENGTH(dp) (grub_get_unaligned16 ((dp)->length))
+#define GRUB_EFI_DEVICE_PATH_LENGTH(dp) ((dp)->length)
/* The End of Device Path nodes. */
#define GRUB_EFI_END_DEVICE_PATH_TYPE (0xff & 0x7f)