From patchwork Wed Nov 13 18:12:59 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Luis R. Rodriguez" X-Patchwork-Id: 3179211 Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id CADC79F3A0 for ; Wed, 13 Nov 2013 18:13:23 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id AC2962078E for ; Wed, 13 Nov 2013 18:13:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 67D7720796 for ; Wed, 13 Nov 2013 18:13:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759627Ab3KMSNT (ORCPT ); Wed, 13 Nov 2013 13:13:19 -0500 Received: from mail-wg0-f54.google.com ([74.125.82.54]:57850 "EHLO mail-wg0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759304Ab3KMSNQ (ORCPT ); Wed, 13 Nov 2013 13:13:16 -0500 Received: by mail-wg0-f54.google.com with SMTP id y10so820214wgg.9 for ; Wed, 13 Nov 2013 10:13:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=uRC5P06THrZFkGY7NcWhcNTRoqKSAccRwlMTy1V07Ik=; b=lmWttjBKwzML4juMBcMozk2VtdDn1VokF0EEAeKgj1ij80nm0lc2kWuEIRn2GrSJ1A 2rxeAL3iryRtiMGdXSqisVGMytflLECqcSXLtcLErPgndsaHvhAwZE505H2P1Rg5Oiam 9+sOpZb9h7AGGaHswpgF3cOEXleYC5UMIXT+GxpTEup+6A2lprKI5q1o918e0pz3cpu1 12VQDPMmNxjp2SvfHRyN/NSULNm3DSPzJscanUW/COf1OLgzM8O79zznQbFg6Upny/W8 OkUBpeEPnOwTCNlrNUXj+MgCcNH8qT4SL17gB7r3TP0jeyK245XMcvBUcDM3EiK/0TCg JhIQ== X-Received: by 10.180.206.78 with SMTP id lm14mr2641241wic.30.1384366395726; Wed, 13 Nov 2013 10:13:15 -0800 (PST) Received: from mcgrof@gmail.com (thinkpad-luis.rsr.lip6.fr. [132.227.76.46]) by mx.google.com with ESMTPSA id ll10sm57973399wic.9.2013.11.13.10.13.13 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Wed, 13 Nov 2013 10:13:15 -0800 (PST) Received: by mcgrof@gmail.com (sSMTP sendmail emulation); Wed, 13 Nov 2013 19:13:13 +0100 From: "Luis R. Rodriguez" To: johannes@sipsolutions.net Cc: janusz.dziedzic@tieto.com, j@w1.fi, sunitb@qca.qualcomm.com, rsunki@qca.qualcomm.com, linux-wireless@vger.kernel.org, "Luis R. Rodriguez" Subject: [RFC 5/5] cfg80211: DFS check dfs_region before usage Date: Wed, 13 Nov 2013 19:12:59 +0100 Message-Id: <1384366379-25301-6-git-send-email-mcgrof@do-not-panic.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1384366379-25301-1-git-send-email-mcgrof@do-not-panic.com> References: <1384366379-25301-1-git-send-email-mcgrof@do-not-panic.com> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Check the DFS region before channel availability check or declaring a channel as DFS usable. Signed-off-by: Luis R. Rodriguez --- net/wireless/chan.c | 8 ++++++++ net/wireless/nl80211.c | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/net/wireless/chan.c b/net/wireless/chan.c index 78559b5..4e6eaa0 100644 --- a/net/wireless/chan.c +++ b/net/wireless/chan.c @@ -517,10 +517,18 @@ bool cfg80211_chandef_usable(struct wiphy *wiphy, struct ieee80211_sta_ht_cap *ht_cap; struct ieee80211_sta_vht_cap *vht_cap; u32 width, control_freq; + enum nl80211_dfs_regions dfs_region; if (WARN_ON(!cfg80211_chandef_valid(chandef))) return false; + rtnl_lock(); + dfs_region = reg_get_dfs_region(wiphy); + rtnl_unlock(); + + if (dfs_region == NL80211_DFS_UNSET) + return false; + ht_cap = &wiphy->bands[chandef->chan->band]->ht_cap; vht_cap = &wiphy->bands[chandef->chan->band]->vht_cap; diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index dcbc083..1acf45c 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -5641,8 +5641,13 @@ static int nl80211_start_radar_detection(struct sk_buff *skb, struct net_device *dev = info->user_ptr[1]; struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_chan_def chandef; + enum nl80211_dfs_regions dfs_region; int err; + dfs_region = reg_get_dfs_region(wdev->wiphy); + if (dfs_region == NL80211_DFS_UNSET) + return -EINVAL; + err = nl80211_parse_chandef(rdev, info, &chandef); if (err) return err;