rtl8xxxu: Use size of source pointer when copying efuse data
authorJes Sorensen <Jes.Sorensen@redhat.com>
Mon, 29 Feb 2016 22:05:20 +0000 (17:05 -0500)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 10 Mar 2016 13:29:13 +0000 (15:29 +0200)
Some newer chips have more channel groups in their efuse parameter
tables, so use the size of the source, rather than the destination
when copying them out. This avoids copying garbage when increasing the
common array sizes.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c

index de1e654..4c37bd4 100644 (file)
@@ -2318,31 +2318,31 @@ static int rtl8723au_parse_efuse(struct rtl8xxxu_priv *priv)
 
        memcpy(priv->cck_tx_power_index_A,
               efuse->cck_tx_power_index_A,
-              sizeof(priv->cck_tx_power_index_A));
+              sizeof(efuse->cck_tx_power_index_A));
        memcpy(priv->cck_tx_power_index_B,
               efuse->cck_tx_power_index_B,
-              sizeof(priv->cck_tx_power_index_B));
+              sizeof(efuse->cck_tx_power_index_B));
 
        memcpy(priv->ht40_1s_tx_power_index_A,
               efuse->ht40_1s_tx_power_index_A,
-              sizeof(priv->ht40_1s_tx_power_index_A));
+              sizeof(efuse->ht40_1s_tx_power_index_A));
        memcpy(priv->ht40_1s_tx_power_index_B,
               efuse->ht40_1s_tx_power_index_B,
-              sizeof(priv->ht40_1s_tx_power_index_B));
+              sizeof(efuse->ht40_1s_tx_power_index_B));
 
        memcpy(priv->ht20_tx_power_index_diff,
               efuse->ht20_tx_power_index_diff,
-              sizeof(priv->ht20_tx_power_index_diff));
+              sizeof(efuse->ht20_tx_power_index_diff));
        memcpy(priv->ofdm_tx_power_index_diff,
               efuse->ofdm_tx_power_index_diff,
-              sizeof(priv->ofdm_tx_power_index_diff));
+              sizeof(efuse->ofdm_tx_power_index_diff));
 
        memcpy(priv->ht40_max_power_offset,
               efuse->ht40_max_power_offset,
-              sizeof(priv->ht40_max_power_offset));
+              sizeof(efuse->ht40_max_power_offset));
        memcpy(priv->ht20_max_power_offset,
               efuse->ht20_max_power_offset,
-              sizeof(priv->ht20_max_power_offset));
+              sizeof(efuse->ht20_max_power_offset));
 
        if (priv->efuse_wifi.efuse8723.version >= 0x01) {
                priv->has_xtalk = 1;
@@ -2403,34 +2403,34 @@ static int rtl8192cu_parse_efuse(struct rtl8xxxu_priv *priv)
 
        memcpy(priv->cck_tx_power_index_A,
               efuse->cck_tx_power_index_A,
-              sizeof(priv->cck_tx_power_index_A));
+              sizeof(efuse->cck_tx_power_index_A));
        memcpy(priv->cck_tx_power_index_B,
               efuse->cck_tx_power_index_B,
-              sizeof(priv->cck_tx_power_index_B));
+              sizeof(efuse->cck_tx_power_index_B));
 
        memcpy(priv->ht40_1s_tx_power_index_A,
               efuse->ht40_1s_tx_power_index_A,
-              sizeof(priv->ht40_1s_tx_power_index_A));
+              sizeof(efuse->ht40_1s_tx_power_index_A));
        memcpy(priv->ht40_1s_tx_power_index_B,
               efuse->ht40_1s_tx_power_index_B,
-              sizeof(priv->ht40_1s_tx_power_index_B));
+              sizeof(efuse->ht40_1s_tx_power_index_B));
        memcpy(priv->ht40_2s_tx_power_index_diff,
               efuse->ht40_2s_tx_power_index_diff,
-              sizeof(priv->ht40_2s_tx_power_index_diff));
+              sizeof(efuse->ht40_2s_tx_power_index_diff));
 
        memcpy(priv->ht20_tx_power_index_diff,
               efuse->ht20_tx_power_index_diff,
-              sizeof(priv->ht20_tx_power_index_diff));
+              sizeof(efuse->ht20_tx_power_index_diff));
        memcpy(priv->ofdm_tx_power_index_diff,
               efuse->ofdm_tx_power_index_diff,
-              sizeof(priv->ofdm_tx_power_index_diff));
+              sizeof(efuse->ofdm_tx_power_index_diff));
 
        memcpy(priv->ht40_max_power_offset,
               efuse->ht40_max_power_offset,
-              sizeof(priv->ht40_max_power_offset));
+              sizeof(efuse->ht40_max_power_offset));
        memcpy(priv->ht20_max_power_offset,
               efuse->ht20_max_power_offset,
-              sizeof(priv->ht20_max_power_offset));
+              sizeof(efuse->ht20_max_power_offset));
 
        dev_info(&priv->udev->dev, "Vendor: %.7s\n",
                 efuse->vendor_name);