OSDN Git Service

libertas_tf: Add missing __packed annotations
authorKees Cook <keescook@chromium.org>
Wed, 1 Dec 2021 17:32:34 +0000 (09:32 -0800)
committerKalle Valo <kvalo@kernel.org>
Wed, 8 Dec 2021 18:39:54 +0000 (20:39 +0200)
The earlier __packed annotations added in commit d71038c05970 ("libertas:
Fix alignment issues in libertas core") were not duplicated when
libertas_af was added in commit 7670e62c7ed6 ("libertas_tf: header file"),
even though they share several structure definitions. Add the missing
annotations which commit 642a57475b30 ("libertas_tf: Use struct_group()
for memcpy() region") exposed. Quoting the prior libertas fix: "Data
structures that come over the wire from the WLAN firmware must be
packed."

Reported-by: kernel test robot <lkp@intel.com>
Link: https://lore.kernel.org/linux-mm/202111302102.apaePz2J-lkp@intel.com
Fixes: 642a57475b30 ("libertas_tf: Use struct_group() for memcpy() region")
Fixes: 7670e62c7ed6 ("libertas_tf: header file")
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20211201173234.578124-3-keescook@chromium.org
drivers/net/wireless/marvell/libertas_tf/libertas_tf.h

index b2af2dd..631b5da 100644 (file)
@@ -268,7 +268,7 @@ struct txpd {
        __le32 tx_packet_location;
        /* Tx packet length */
        __le16 tx_packet_length;
-       struct_group(tx_dest_addr,
+       struct_group_attr(tx_dest_addr, __packed,
                /* First 2 byte of destination MAC address */
                u8 tx_dest_addr_high[2];
                /* Last 4 byte of destination MAC address */
@@ -282,7 +282,7 @@ struct txpd {
        u8 pktdelay_2ms;
        /* reserved */
        u8 reserved1;
-};
+} __packed;
 
 /* RxPD Descriptor */
 struct rxpd {
@@ -313,7 +313,7 @@ struct rxpd {
        /* Pkt Priority */
        u8 priority;
        u8 reserved[3];
-};
+} __packed;
 
 struct cmd_header {
        __le16 command;
@@ -379,14 +379,14 @@ struct cmd_ds_mac_control {
        struct cmd_header hdr;
        __le16 action;
        u16 reserved;
-};
+} __packed;
 
 struct cmd_ds_802_11_mac_address {
        struct cmd_header hdr;
 
        __le16 action;
        uint8_t macadd[ETH_ALEN];
-};
+} __packed;
 
 struct cmd_ds_mac_multicast_addr {
        struct cmd_header hdr;
@@ -394,27 +394,27 @@ struct cmd_ds_mac_multicast_addr {
        __le16 action;
        __le16 nr_of_adrs;
        u8 maclist[ETH_ALEN * MRVDRV_MAX_MULTICAST_LIST_SIZE];
-};
+} __packed;
 
 struct cmd_ds_set_mode {
        struct cmd_header hdr;
 
        __le16 mode;
-};
+} __packed;
 
 struct cmd_ds_set_bssid {
        struct cmd_header hdr;
 
        u8 bssid[6];
        u8 activate;
-};
+} __packed;
 
 struct cmd_ds_802_11_radio_control {
        struct cmd_header hdr;
 
        __le16 action;
        __le16 control;
-};
+} __packed;
 
 
 struct cmd_ds_802_11_rf_channel {
@@ -425,20 +425,20 @@ struct cmd_ds_802_11_rf_channel {
        __le16 rftype;      /* unused */
        __le16 reserved;    /* unused */
        u8 channellist[32]; /* unused */
-};
+} __packed;
 
 struct cmd_ds_set_boot2_ver {
        struct cmd_header hdr;
 
        __le16 action;
        __le16 version;
-};
+} __packed;
 
 struct cmd_ds_802_11_reset {
        struct cmd_header hdr;
 
        __le16 action;
-};
+} __packed;
 
 struct cmd_ds_802_11_beacon_control {
        struct cmd_header hdr;
@@ -446,14 +446,14 @@ struct cmd_ds_802_11_beacon_control {
        __le16 action;
        __le16 beacon_enable;
        __le16 beacon_period;
-};
+} __packed;
 
 struct cmd_ds_802_11_beacon_set {
        struct cmd_header hdr;
 
        __le16 len;
        u8 beacon[MRVL_MAX_BCN_SIZE];
-};
+} __packed;
 
 struct cmd_ctrl_node;