Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756783AbbEUP7b (ORCPT ); Thu, 21 May 2015 11:59:31 -0400 Received: from mail-wi0-f181.google.com ([209.85.212.181]:37235 "EHLO mail-wi0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1422668AbbEUPyd (ORCPT ); Thu, 21 May 2015 11:54:33 -0400 From: Mateusz Kulikowski To: gregkh@linuxfoundation.org Cc: Mateusz Kulikowski , dan.carpenter@oracle.com, joe@perches.com, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 23/35] staging: rtl8192e: Fix LONG_LING in rtllib_parse_info_param() Date: Thu, 21 May 2015 17:53:36 +0200 Message-Id: <1432223628-1664-24-git-send-email-mateusz.kulikowski@gmail.com> X-Mailer: git-send-email 1.8.4.1 In-Reply-To: <1432223628-1664-1-git-send-email-mateusz.kulikowski@gmail.com> References: <1432223628-1664-1-git-send-email-mateusz.kulikowski@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2919 Lines: 84 Take out MIFE_TYPE_HT_CAP processing into separate function - rtllib_parse_mfie_ht_cap() Signed-off-by: Mateusz Kulikowski --- drivers/staging/rtl8192e/rtllib_rx.c | 49 +++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/drivers/staging/rtl8192e/rtllib_rx.c b/drivers/staging/rtl8192e/rtllib_rx.c index c888f2d..e09aa81 100644 --- a/drivers/staging/rtl8192e/rtllib_rx.c +++ b/drivers/staging/rtl8192e/rtllib_rx.c @@ -2014,6 +2014,33 @@ static void rtllib_parse_mife_generic(struct rtllib_device *ieee, } } +static void rtllib_parse_mfie_ht_cap(struct rtllib_info_element *info_element, + struct rtllib_network *network, + u16 *tmp_htcap_len) +{ + struct bss_ht *ht = &network->bssht; + + *tmp_htcap_len = min_t(u8, info_element->len, MAX_IE_LEN); + if (*tmp_htcap_len != 0) { + ht->bdHTSpecVer = HT_SPEC_VER_EWC; + ht->bdHTCapLen = min_t(u16, *tmp_htcap_len, + sizeof(ht->bdHTCapBuf)); + memcpy(ht->bdHTCapBuf, info_element->data, ht->bdHTCapLen); + + ht->bdSupportHT = true; + ht->bdHT1R = ((((struct ht_capab_ele *) + ht->bdHTCapBuf))->MCS[1]) == 0; + + ht->bdBandWidth = (enum ht_channel_width) + (((struct ht_capab_ele *) + (ht->bdHTCapBuf))->ChlWidth); + } else { + ht->bdSupportHT = false; + ht->bdHT1R = false; + ht->bdBandWidth = HT_CHANNEL_WIDTH_20; + } +} + int rtllib_parse_info_param(struct rtllib_device *ieee, struct rtllib_info_element *info_element, u16 length, @@ -2195,27 +2222,9 @@ int rtllib_parse_info_param(struct rtllib_device *ieee, case MFIE_TYPE_HT_CAP: netdev_dbg(ieee->dev, "MFIE_TYPE_HT_CAP: %d bytes\n", info_element->len); - tmp_htcap_len = min_t(u8, info_element->len, MAX_IE_LEN); - if (tmp_htcap_len != 0) { - network->bssht.bdHTSpecVer = HT_SPEC_VER_EWC; - network->bssht.bdHTCapLen = tmp_htcap_len > sizeof(network->bssht.bdHTCapBuf) ? - sizeof(network->bssht.bdHTCapBuf) : tmp_htcap_len; - memcpy(network->bssht.bdHTCapBuf, - info_element->data, - network->bssht.bdHTCapLen); - network->bssht.bdSupportHT = true; - network->bssht.bdHT1R = ((((struct ht_capab_ele *) - network->bssht.bdHTCapBuf))->MCS[1]) == 0; - - network->bssht.bdBandWidth = (enum ht_channel_width) - (((struct ht_capab_ele *) - (network->bssht.bdHTCapBuf))->ChlWidth); - } else { - network->bssht.bdSupportHT = false; - network->bssht.bdHT1R = false; - network->bssht.bdBandWidth = HT_CHANNEL_WIDTH_20; - } + rtllib_parse_mfie_ht_cap(info_element, network, + &tmp_htcap_len); break; -- 1.8.4.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/