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 de1e6541b1a089021e77e66eaaa75e5a2e33cc6b..4c37bd4b73b1606d95cf09d91844f40070dd3c0b 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);