OSDN Git Service

efivar-dp.h: Actually add the packed attribute everywhere.
authorPeter Jones <pjones@redhat.com>
Tue, 27 Sep 2016 17:48:14 +0000 (13:48 -0400)
committerPeter Jones <pjones@redhat.com>
Tue, 27 Sep 2016 17:48:14 +0000 (13:48 -0400)
Apparently 9b3155b095 was not enough, so pack all the device path
structures.

Signed-off-by: Peter Jones <pjones@redhat.com>
src/include/efivar/efivar-dp.h

index b6b444f..230b809 100644 (file)
@@ -45,7 +45,7 @@ typedef struct {
        efidp_header    header;
        uint8_t         function;
        uint8_t         device;
-} efidp_pci;
+} __attribute__((__packed__)) efidp_pci;
 extern ssize_t efidp_make_pci(uint8_t *buf, ssize_t size, uint8_t device,
                              uint8_t function);
 
@@ -53,7 +53,7 @@ extern ssize_t efidp_make_pci(uint8_t *buf, ssize_t size, uint8_t device,
 typedef struct {
        efidp_header    header;
        uint8_t         function;
-} efidp_pccard;
+} __attribute__((__packed__)) efidp_pccard;
 
 #define EFIDP_HW_MMIO          0x03
 typedef struct {
@@ -61,14 +61,14 @@ typedef struct {
        uint32_t        memory_type;
        uint64_t        starting_address;
        uint64_t        ending_address;
-} efidp_mmio;
+} __attribute__((__packed__)) efidp_mmio;
 
 #define EFIDP_HW_VENDOR                0x04
 typedef struct {
        efidp_header    header;
        efi_guid_t      vendor_guid;
        uint8_t         vendor_data[0];
-} efidp_hw_vendor;
+} __attribute__((__packed__)) efidp_hw_vendor;
 typedef efidp_hw_vendor efidp_vendor_hw;
 #define efidp_make_hw_vendor(buf, size, guid, data, data_size)         \
        efidp_make_vendor(buf, size, EFIDP_HARDWARE_TYPE,               \
@@ -80,7 +80,7 @@ typedef struct {
        efidp_header    header;
        efi_guid_t      vendor_guid;
        uint32_t        hardware_device;
-} efidp_edd10;
+} __attribute__((__packed__)) efidp_edd10;
 extern ssize_t efidp_make_edd10(uint8_t *buf, ssize_t size,
                                uint32_t hardware_device);
 
@@ -88,14 +88,14 @@ extern ssize_t efidp_make_edd10(uint8_t *buf, ssize_t size,
 typedef struct {
        efidp_header    header;
        uint32_t        controller;
-} efidp_controller;
+} __attribute__((__packed__)) efidp_controller;
 
 #define EFIDP_HW_BMC           0x06
 typedef struct {
        efidp_header    header;
        uint8_t         interface_type;
        uint64_t        base_addr;
-} efidp_bmc;
+} __attribute__((__packed__)) efidp_bmc;
 
 #define EFIDP_BMC_UNKNOWN      0x00
 #define EFIDP_BMC_KEYBOARD     0x01
@@ -109,7 +109,7 @@ typedef struct {
        efidp_header    header;
        uint32_t        hid;
        uint32_t        uid;
-} efidp_acpi_hid;
+} __attribute__((__packed__)) efidp_acpi_hid;
 extern ssize_t efidp_make_acpi_hid(uint8_t *buf, ssize_t size, uint32_t hid,
                                   uint32_t uid);
 
@@ -121,7 +121,7 @@ typedef struct {
        uint32_t        cid;
        /* three ascii string fields follow */
        char            hidstr[];
-} efidp_acpi_hid_ex;
+} __attribute__((__packed__)) efidp_acpi_hid_ex;
 extern ssize_t efidp_make_acpi_hid_ex(uint8_t *buf, ssize_t size, uint32_t hid,
                                      uint32_t uid, uint32_t cid, char *hidstr,
                                      char *uidstr, char *cidstr)
@@ -148,7 +148,7 @@ extern ssize_t efidp_make_acpi_hid_ex(uint8_t *buf, ssize_t size, uint32_t hid,
 typedef struct {
        efidp_header    header;
        uint32_t        adr[];
-} efidp_acpi_adr;
+} __attribute__((__packed__)) efidp_acpi_adr;
 
 #define EFIDP_ACPI_ADR_DISPLAY_TYPE_OTHER              0
 #define EFIDP_ACPI_ADR_DISPLAY_TYPE_VGA                        1
@@ -175,7 +175,7 @@ typedef struct {
        uint8_t         primary;
        uint8_t         slave;
        uint16_t        lun;
-} efidp_atapi;
+} __attribute__((__packed__)) efidp_atapi;
 extern ssize_t efidp_make_atapi(uint8_t *buf, ssize_t size, uint16_t primary,
                uint16_t slave, uint16_t lun);
 
@@ -184,7 +184,7 @@ typedef struct {
        efidp_header    header;
        uint16_t        target;
        uint16_t        lun;
-} efidp_scsi;
+} __attribute__((__packed__)) efidp_scsi;
 extern ssize_t efidp_make_scsi(uint8_t *buf, ssize_t size, uint16_t target,
                               uint16_t lun);
 
@@ -194,7 +194,7 @@ typedef struct {
        uint32_t        reserved;
        uint64_t        wwn;
        uint64_t        lun;
-} efidp_fc;
+} __attribute__((__packed__)) efidp_fc;
 
 #define EFIDP_MSG_FIBRECHANNELEX 0x15
 typedef struct {
@@ -202,21 +202,21 @@ typedef struct {
        uint32_t        reserved;
        uint8_t         wwn[8];
        uint8_t         lun[8];
-} efidp_fcex;
+} __attribute__((__packed__)) efidp_fcex;
 
 #define EFIDP_MSG_1394         0x04
 typedef struct {
        efidp_header    header;
        uint32_t        reserved;
        uint64_t        guid;
-} efidp_1394;
+} __attribute__((__packed__)) efidp_1394;
 
 #define EFIDP_MSG_USB          0x05
 typedef struct {
        efidp_header    header;
        uint8_t         parent_port;
        uint8_t         interface;
-} efidp_usb;
+} __attribute__((__packed__)) efidp_usb;
 
 #define EFIDP_MSG_USB_CLASS    0x0f
 typedef struct {
@@ -226,7 +226,7 @@ typedef struct {
        uint8_t         device_class;
        uint8_t         device_subclass;
        uint8_t         device_protocol;
-} efidp_usb_class;
+} __attribute__((__packed__)) efidp_usb_class;
 
 #define EFIDP_USB_CLASS_AUDIO          0x01
 #define EFIDP_USB_CLASS_CDC_CONTROL    0x02
@@ -252,13 +252,13 @@ typedef struct {
        uint16_t        vendor_id;
        uint16_t        product_id;
        uint16_t        serial_number[];
-} efidp_usb_wwid;
+} __attribute__((__packed__)) efidp_usb_wwid;
 
 #define EFIDP_MSG_LUN          0x11
 typedef struct {
        efidp_header    header;
        uint8_t         lun;
-} efidp_lun;
+} __attribute__((__packed__)) efidp_lun;
 
 #define EFIDP_MSG_SATA         0x12
 typedef struct {
@@ -266,7 +266,7 @@ typedef struct {
        uint16_t        hba_port;
        uint16_t        port_multiplier_port;
        uint16_t        lun;
-} efidp_sata;
+} __attribute__((__packed__)) efidp_sata;
 #define SATA_HBA_DIRECT_CONNECT_FLAG   0x8000
 extern ssize_t efidp_make_sata(uint8_t *buf, ssize_t size, uint16_t hba_port,
                               int16_t port_multiplier_port, uint16_t lun);
@@ -275,14 +275,14 @@ extern ssize_t efidp_make_sata(uint8_t *buf, ssize_t size, uint16_t hba_port,
 typedef struct {
        efidp_header    header;
        uint32_t        target;
-} efidp_i2o;
+} __attribute__((__packed__)) efidp_i2o;
 
 #define EFIDP_MSG_MAC_ADDR     0x0b
 typedef struct {
        efidp_header    header;
        uint8_t         mac_addr[32];
        uint8_t         if_type;
-} efidp_mac_addr;
+} __attribute__((__packed__)) efidp_mac_addr;
 extern ssize_t efidp_make_mac_addr(uint8_t *buf, ssize_t size,
                                   uint8_t if_type,
                                   const uint8_t * const mac_addr,
@@ -300,7 +300,7 @@ typedef struct {
        efidp_boolean   static_ip_addr;
        uint8_t         gateway[4];
        uint8_t         netmask[4];
-} efidp_ipv4_addr;
+} __attribute__((__packed__)) efidp_ipv4_addr;
 /* everything here is in host byte order */
 extern ssize_t efidp_make_ipv4(uint8_t *buf, ssize_t size,
                               uint32_t local, uint32_t remote,
@@ -322,7 +322,7 @@ typedef struct {
        uint8_t         ip_addr_origin;
        uint8_t         prefix_length;
        uint8_t         gateway_ipv6_addr;
-} efidp_ipv6_addr;
+} __attribute__((__packed__)) efidp_ipv6_addr;
 
 #define EFIDP_IPv6_ORIGIN_MANUAL       0x00
 #define EFIDP_IPv6_ORIGIN_AUTOCONF     0x01
@@ -332,7 +332,7 @@ typedef struct {
 typedef struct {
        efidp_header    header;
        uint16_t        vlan_id;
-} efidp_vlan;
+} __attribute__((__packed__)) efidp_vlan;
 
 #define EFIDP_MSG_INFINIBAND   0x09
 typedef struct {
@@ -345,7 +345,7 @@ typedef struct {
        };
        uint64_t        target_port_id;
        uint64_t        device_id;
-} efidp_infiniband;
+} __attribute__((__packed__)) efidp_infiniband;
 
 #define EFIDP_INFINIBAND_RESOURCE_IOC_SERVICE  0x01
 #define EFIDP_INFINIBAND_RESOURCE_EXTENDED_BOOT        0x02
@@ -361,7 +361,7 @@ typedef struct {
        uint8_t         data_bits;
        uint8_t         parity;
        uint8_t         stop_bits;
-} efidp_uart;
+} __attribute__((__packed__)) efidp_uart;
 
 #define EFIDP_UART_PARITY_DEFAULT      0x00
 #define EFIDP_UART_PARITY_NONE         0x01
@@ -389,7 +389,7 @@ typedef struct {
        efidp_header    header;
        efi_guid_t      vendor_guid;
        uint8_t         vendor_data[0];
-} efidp_msg_vendor;
+} __attribute__((__packed__)) efidp_msg_vendor;
 typedef efidp_msg_vendor efidp_vendor_msg;
 #define efidp_make_msg_vendor(buf, size, guid, data, data_size)                \
        efidp_make_vendor(buf, size, EFIDP_MESSAGE_TYPE,                \
@@ -402,7 +402,7 @@ typedef struct {
        efidp_header    header;
        efi_guid_t      vendor_guid;
        uint32_t        flow_control_map;
-} efidp_uart_flow_control;
+} __attribute__((__packed__)) efidp_uart_flow_control;
 
 #define EFIDP_UART_FLOW_CONTROL_HARDWARE       0x1
 #define EFIDP_UART_FLOW_CONTROL_XONXOFF                0x2
@@ -418,7 +418,7 @@ typedef struct {
        uint8_t         device_topology_info;
        uint8_t         drive_bay_id; /* If EFIDP_SAS_TOPOLOGY_NEXTBYTE set */
        uint16_t        rtp;
-} efidp_sas;
+} __attribute__((__packed__)) efidp_sas;
 extern ssize_t efidp_make_sas(uint8_t *buf, ssize_t size, uint64_t sas_address);
 
 /* device_topology_info Bits 0:3 (enum) */
@@ -449,7 +449,7 @@ typedef struct {
        uint8_t         device_topology_info;
        uint8_t         drive_bay_id; /* If EFIDP_SAS_TOPOLOGY_NEXTBYTE set */
        uint16_t        rtp;
-} efidp_sas_ex;
+} __attribute__((__packed__)) efidp_sas_ex;
 
 #define EFIDP_MSG_DEBUGPORT_GUID \
        EFI_GUID(0xEBA4E8D2,0x3858,0x41EC,0xA281,0x26,0x47,0xBA,0x96,0x60,0xD0)
@@ -462,7 +462,7 @@ typedef struct {
        uint8_t         lun[8];
        uint16_t        tpgt;
        uint8_t         target_name[0];
-} efidp_iscsi;
+} __attribute__((__packed__)) efidp_iscsi;
 
 /* options bits 0:1 */
 #define EFIDP_ISCSI_HEADER_DIGEST_SHIFT        0
@@ -494,7 +494,7 @@ typedef struct {
        efidp_header    header;
        uint32_t        namespace_id;
        uint8_t         ieee_eui_64[8];
-} efidp_nvme;
+} __attribute__((__packed__)) efidp_nvme;
 extern ssize_t efidp_make_nvme(uint8_t *buf, ssize_t size,
                               uint32_t namespace_id, uint8_t *ieee_eui_64);
 
@@ -502,20 +502,20 @@ extern ssize_t efidp_make_nvme(uint8_t *buf, ssize_t size,
 typedef struct {
        efidp_header    header;
        uint8_t         uri[0];
-} efidp_uri;
+} __attribute__((__packed__)) efidp_uri;
 
 #define EFIDP_MSG_UFS          0x19
 typedef struct {
        efidp_header    header;
        uint8_t         target_id;
        uint8_t         lun;
-} efidp_ufs;
+} __attribute__((__packed__)) efidp_ufs;
 
 #define EFIDP_MSG_SD           0x1a
 typedef struct {
        efidp_header    header;
        uint8_t         slot_number;
-} efidp_sd;
+} __attribute__((__packed__)) efidp_sd;
 
 /* Each media subtype */
 #define EFIDP_MEDIA_HD         0x1
@@ -530,7 +530,7 @@ typedef struct {
 #ifdef __ia64
        uint8_t         padding[6]; /* Emperically needed */
 #endif
-} __attribute__((__packed__)) efidp_hd;
+} __attribute__((__packed__)) __attribute__((__packed__)) efidp_hd;
 extern ssize_t efidp_make_hd(uint8_t *buf, ssize_t size, uint32_t num,
                             uint64_t part_start, uint64_t part_size,
                             uint8_t *signature, uint8_t format,
@@ -549,14 +549,14 @@ typedef struct {
        uint32_t        boot_catalog_entry;
        uint64_t        partition_rba;
        uint64_t        sectors;
-} efidp_cdrom;
+} __attribute__((__packed__)) efidp_cdrom;
 
 #define EFIDP_MEDIA_VENDOR     0x3
 typedef struct {
        efidp_header    header;
        efi_guid_t      vendor_guid;
        uint8_t         vendor_data[0];
-} efidp_media_vendor;
+} __attribute__((__packed__)) efidp_media_vendor;
 typedef efidp_media_vendor efidp_vendor_media;
 #define efidp_make_media_vendor(buf, size, guid, data, data_size)      \
        efidp_make_vendor(buf, size, EFIDP_MEDIA_TYPE,                  \
@@ -566,26 +566,26 @@ typedef efidp_media_vendor efidp_vendor_media;
 typedef struct {
        efidp_header    header;
        uint16_t        name[];
-} efidp_file;
+} __attribute__((__packed__)) efidp_file;
 extern ssize_t efidp_make_file(uint8_t *buf, ssize_t size, char *filename);
 
 #define EFIDP_MEDIA_PROTOCOL   0x5
 typedef struct {
        efidp_header    header;
        efi_guid_t      protocol_guid;
-} efidp_protocol;
+} __attribute__((__packed__)) efidp_protocol;
 
 #define EFIDP_MEDIA_FIRMWARE_FILE      0x6
 typedef struct {
        efidp_header    header;
        uint8_t         pi_info[0];
-} efidp_firmware_file;
+} __attribute__((__packed__)) efidp_firmware_file;
 
 #define EFIDP_MEDIA_FIRMWARE_VOLUME    0x7
 typedef struct {
        efidp_header    header;
        uint8_t         pi_info[0];
-} efidp_firmware_volume;
+} __attribute__((__packed__)) efidp_firmware_volume;
 
 #define EFIDP_MEDIA_RELATIVE_OFFSET    0x8
 typedef struct {
@@ -593,7 +593,7 @@ typedef struct {
        uint32_t        reserved;
        uint64_t        first_byte;
        uint64_t        last_byte;
-} efidp_relative_offset;
+} __attribute__((__packed__)) efidp_relative_offset;
 
 #define EFIDP_MEDIA_RAMDISK    0x9
 typedef struct {
@@ -602,7 +602,7 @@ typedef struct {
        uint64_t        end_addr;
        efi_guid_t      disk_type_guid;
        uint16_t        instance_number;
-} efidp_ramdisk;
+} __attribute__((__packed__)) efidp_ramdisk;
 
 #define EFIDP_VIRTUAL_DISK_GUID \
        EFI_GUID(0x77AB535A,0x45FC,0x624B,0x5560,0xF7,0xB2,0x81,0xD1,0xF9,0x6E)
@@ -620,7 +620,7 @@ typedef struct {
        uint16_t        device_type;
        uint16_t        status;
        uint8_t         description[0];
-} efidp_bios_boot;
+} __attribute__((__packed__)) efidp_bios_boot;
 
 #define EFIDP_BIOS_BOOT_DEVICE_TYPE_FLOPPY     1
 #define EFIDP_BIOS_BOOT_DEVICE_TYPE_HD         2
@@ -686,7 +686,7 @@ typedef union {
        efidp_relative_offset relative_offset;
        efidp_ramdisk ramdisk;
        efidp_bios_boot bios_boot;
-} efidp_data;
+} __attribute__((__packed__)) efidp_data;
 typedef efidp_data *efidp;
 typedef const efidp_data *const_efidp;