mwifiex: fix left_len calculation issue
authorAmitkumar Karwar <akarwar@marvell.com>
Tue, 19 Aug 2014 12:24:24 +0000 (08:24 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 28 Aug 2014 18:41:56 +0000 (14:41 -0400)
While updating 'left_len' in each iteration, we should subtract
last TLV length not the accumulated length of TLVs parsed till
now.
This bug in parsing logic is exposed by newer firmware which adds
two TLVs in GET_HW_SPEC command response. Earlier firmwares used to
add only one TLV.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Cathy Luo <cluo@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/mwifiex/cmdevt.c

index baf0aab63c04d17bb1d01501e0c29f524b4a5f57..0c212394dc1fdf8dcf1b261d473c0d2e27318682 100644 (file)
@@ -1567,7 +1567,8 @@ int mwifiex_ret_get_hw_spec(struct mwifiex_private *priv,
                        }
                        parsed_len += le16_to_cpu(tlv->len) +
                                      sizeof(struct mwifiex_ie_types_header);
-                       left_len -= parsed_len;
+                       left_len -= le16_to_cpu(tlv->len) +
+                                     sizeof(struct mwifiex_ie_types_header);
                }
        }