It is enough to check for either illegal offset or illegal map address
because map address is a value derived from an offset:

  map_addr = offset * 8
  EFUSE_MAP_LEN_8723A = EFUSE_MAX_SECTION_8723A * 8

Leave just the check for an illegal map address because its upper
bound (EFUSE_MAP_LEN_8723A) is used also in a couple other places.

Signed-off-by: Jakub Sitnicki <jsitni...@gmail.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 63 +++++++++++-------------
 1 file changed, 28 insertions(+), 35 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c 
b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index a8d7e0a..79efdc2 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -1973,6 +1973,8 @@ static int rtl8xxxu_read_efuse(struct rtl8xxxu_priv *priv)
 
        efuse_addr = 0;
        while (efuse_addr < EFUSE_REAL_CONTENT_LEN_8723A) {
+               u16 map_addr;
+
                ret = rtl8xxxu_read_efuse8(priv, efuse_addr++, &header);
                if (ret || header == 0xff)
                        goto exit;
@@ -1995,45 +1997,36 @@ static int rtl8xxxu_read_efuse(struct rtl8xxxu_priv 
*priv)
                        word_mask = header & 0x0f;
                }
 
-               if (offset < EFUSE_MAX_SECTION_8723A) {
-                       u16 map_addr;
-                       /* Get word enable value from PG header */
+               /* Get word enable value from PG header */
 
-                       /* We have 8 bits to indicate validity */
-                       map_addr = offset * 8;
-                       if (map_addr >= EFUSE_MAP_LEN_8723A) {
-                               dev_warn(dev, "%s: Illegal map_addr (%04x), "
-                                        "efuse corrupt!\n",
-                                        __func__, map_addr);
-                               ret = -EINVAL;
-                               goto exit;
-                       }
-                       for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) {
-                               /* Check word enable condition in the section */
-                               if (!(word_mask & BIT(i))) {
-                                       ret = rtl8xxxu_read_efuse8(priv,
-                                                                  efuse_addr++,
-                                                                  &val8);
-                                       if (ret)
-                                               goto exit;
-                                       priv->efuse_wifi.raw[map_addr++] = val8;
-
-                                       ret = rtl8xxxu_read_efuse8(priv,
-                                                                  efuse_addr++,
-                                                                  &val8);
-                                       if (ret)
-                                               goto exit;
-                                       priv->efuse_wifi.raw[map_addr++] = val8;
-                               } else
-                                       map_addr += 2;
-                       }
-               } else {
-                       dev_warn(dev,
-                                "%s: Illegal offset (%04x), efuse corrupt!\n",
-                                __func__, offset);
+               /* We have 8 bits to indicate validity */
+               map_addr = offset * 8;
+               if (map_addr >= EFUSE_MAP_LEN_8723A) {
+                       dev_warn(dev, "%s: Illegal map_addr (%04x), "
+                                "efuse corrupt!\n",
+                                __func__, map_addr);
                        ret = -EINVAL;
                        goto exit;
                }
+               for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) {
+                       /* Check word enable condition in the section */
+                       if (!(word_mask & BIT(i))) {
+                               ret = rtl8xxxu_read_efuse8(priv,
+                                                          efuse_addr++,
+                                                          &val8);
+                               if (ret)
+                                       goto exit;
+                               priv->efuse_wifi.raw[map_addr++] = val8;
+
+                               ret = rtl8xxxu_read_efuse8(priv,
+                                                          efuse_addr++,
+                                                          &val8);
+                               if (ret)
+                                       goto exit;
+                               priv->efuse_wifi.raw[map_addr++] = val8;
+                       } else
+                               map_addr += 2;
+               }
        }
 
 exit:
-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to