From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 18844C3A5A3 for ; Thu, 22 Aug 2019 17:48:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DD1EB20856 for ; Thu, 22 Aug 2019 17:48:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1566496083; bh=WCBfCcOY27S0Dei1/abOV+39w8qMV/Cy6RwB/95LExA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=1Brcc+P177HiDKoh5qwG+9o0a17BVrZ1J0oNK0kc3DGnmC6XQJ2DHCQCXHLRT5pCE q/1l/Sp5nW40lmwWOMxWeKU5rQdquV74vU0+HvN2u+DbH9wYjHNwUIgwSQriVfa5CF C89iT9x29xtBv9G0PMHSETrQ+WMdjhCMEqeAKJhM= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391360AbfHVRWd (ORCPT ); Thu, 22 Aug 2019 13:22:33 -0400 Received: from mail.kernel.org ([198.145.29.99]:40646 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391309AbfHVRW1 (ORCPT ); Thu, 22 Aug 2019 13:22:27 -0400 Received: from localhost (wsip-184-188-36-2.sd.sd.cox.net [184.188.36.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 7A49523406; Thu, 22 Aug 2019 17:22:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1566494546; bh=WCBfCcOY27S0Dei1/abOV+39w8qMV/Cy6RwB/95LExA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=d6m8yNX2NFECXlW3dmrHxiXh0hVNu9YteDpPzQRBU6a7dR9zZO0yQFB6O3xWPxp8n 7XxymDgN3Vm414etYWsIPKFFwiqr4MrKy2o3Bo4GBPF2tqGIHb8UWDtIqhRCju+SjB nHwXMJRKZhEzpA1ew+X/XZImca/3G5NheLXRaVOU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Brian Norris , Johannes Berg Subject: [PATCH 4.4 28/78] mac80211: dont WARN on short WMM parameters from AP Date: Thu, 22 Aug 2019 10:18:32 -0700 Message-Id: <20190822171832.857981456@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190822171832.012773482@linuxfoundation.org> References: <20190822171832.012773482@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Brian Norris commit 05aaa5c97dce4c10a9e7eae2f1569a684e0c5ced upstream. In a very similar spirit to commit c470bdc1aaf3 ("mac80211: don't WARN on bad WMM parameters from buggy APs"), an AP may not transmit a fully-formed WMM IE. For example, it may miss or repeat an Access Category. The above loop won't catch that and will instead leave one of the four ACs zeroed out. This triggers the following warning in drv_conf_tx() wlan0: invalid CW_min/CW_max: 0/0 and it may leave one of the hardware queues unconfigured. If we detect such a case, let's just print a warning and fall back to the defaults. Tested with a hacked version of hostapd, intentionally corrupting the IEs in hostapd_eid_wmm(). Cc: stable@vger.kernel.org Signed-off-by: Brian Norris Link: https://lore.kernel.org/r/20190726224758.210953-1-briannorris@chromium.org Signed-off-by: Johannes Berg Signed-off-by: Greg Kroah-Hartman --- net/mac80211/mlme.c | 10 ++++++++++ 1 file changed, 10 insertions(+) --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -1892,6 +1892,16 @@ static bool ieee80211_sta_wmm_params(str } } + /* WMM specification requires all 4 ACIs. */ + for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) { + if (params[ac].cw_min == 0) { + sdata_info(sdata, + "AP has invalid WMM params (missing AC %d), using defaults\n", + ac); + return false; + } + } + for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) { mlme_dbg(sdata, "WMM AC=%d acm=%d aifs=%d cWmin=%d cWmax=%d txop=%d uapsd=%d, downgraded=%d\n",