Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp1023762ybe; Wed, 4 Sep 2019 11:18:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqy+uY6TlVSsXTohdE6UY/RmUd10V4erQ0ZB4mR2mVZV63PDvZUg4XlWqFiSxVfvJC/zkaaK X-Received: by 2002:a62:1516:: with SMTP id 22mr10951546pfv.87.1567621089746; Wed, 04 Sep 2019 11:18:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1567621089; cv=none; d=google.com; s=arc-20160816; b=vJJplu2ChfHxWDh3nLFqcweYuI6xCtd+dVw1zHXfEo1DMhcXXm4a0W+e/jvjWzg9Oh uHAYXNBPZV1FjFKm5hbjqQ1zoScOMZBdFY3mngvh/qM/0DwzcvJhWUJZzUNBAZAmcX6G sHIUl5i5bN7BDK6p1d74r6VSt0mldogug4PtHBKhQ6uShlJG1cMJB8guyTDsMkzI1nBd A4LwEpRapZYjk4mqGCLneECEgF2r/pNJM4rwlWQ3VuSz2S4XIEyKTln1bdBjzlWyJ5M2 wJmSnUd+zpOrN9h3N1dU4F7blXZ0ntaXX11qu4JRSc8YaNgB0IYrY/qGqaUx4tJF7T4o DVTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=9piPG5bATXngG8ryLFMZkxeUAFl/SwRCkZuFS2VkGj4=; b=CfnsdjXh6v9MnW4/thyKB7rzJSwH6m75VAHDyzcyMh30PVlhgDVeIX/27aau7Ls9n1 RgeMM8LaBWaYoNPn68LBh2OpnMZc+8tBe3pmMlaMdPud4ppDJRP1OxHJ0rxuDGDV2j1M cCH2mHBGXufpKW1ggBPj+9lLdNUcBNKJknqNzRAgBJy4vPzZhsyRFGWAt99XeGHPlSym +Esou0n+IB3YeStqaJwoFKCrNy2UKJka+9yPj1MFhNsfhejssmcBZKDzsUU4Rr4HQE6w Kxy84pJsIfGXO2nN0oyE38ogX8cIPRvUWRhNkYTYeLfZP5oK+9WQzbW1iQjAghd862fN 6DJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=N9+njK2H; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e11si17515790pgi.121.2019.09.04.11.17.54; Wed, 04 Sep 2019 11:18:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=N9+njK2H; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390810AbfIDSOc (ORCPT + 99 others); Wed, 4 Sep 2019 14:14:32 -0400 Received: from mail.kernel.org ([198.145.29.99]:59692 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390784AbfIDSO0 (ORCPT ); Wed, 4 Sep 2019 14:14:26 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 F1C2022CF7; Wed, 4 Sep 2019 18:14:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1567620865; bh=XWQBgoLY4BuOh4fxWyMIoplPF5D+67TJ2badyDWx9f4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=N9+njK2HsHgWznjKqHbbvc4UZRp/vjqJIQItNcTILZeYH8iAqxwVIHuW3uVIqHbc8 xjRyKB/bWUm5mPT7v+9PHCsS3Q4hGEkjWcU0LogiS8hEyVJkfDo88gH8+yrRWw0ycN x948ljxfO8rrUBunwmziExtwDz89cy1MRdu7h3iE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Robert Hodaszi , Johannes Berg Subject: [PATCH 5.2 124/143] Revert "cfg80211: fix processing world regdomain when non modular" Date: Wed, 4 Sep 2019 19:54:27 +0200 Message-Id: <20190904175319.259723212@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190904175314.206239922@linuxfoundation.org> References: <20190904175314.206239922@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: Hodaszi, Robert commit 0d31d4dbf38412f5b8b11b4511d07b840eebe8cb upstream. This reverts commit 96cce12ff6e0 ("cfg80211: fix processing world regdomain when non modular"). Re-triggering a reg_process_hint with the last request on all events, can make the regulatory domain fail in case of multiple WiFi modules. On slower boards (espacially with mdev), enumeration of the WiFi modules can end up in an intersected regulatory domain, and user cannot set it with 'iw reg set' anymore. This is happening, because: - 1st module enumerates, queues up a regulatory request - request gets processed by __reg_process_hint_driver(): - checks if previous was set by CORE -> yes - checks if regulator domain changed -> yes, from '00' to e.g. 'US' -> sends request to the 'crda' - 2nd module enumerates, queues up a regulator request (which triggers the reg_todo() work) - reg_todo() -> reg_process_pending_hints() sees, that the last request is not processed yet, so it tries to process it again. __reg_process_hint driver() will run again, and: - checks if the last request's initiator was the core -> no, it was the driver (1st WiFi module) - checks, if the previous initiator was the driver -> yes - checks if the regulator domain changed -> yes, it was '00' (set by core, and crda call did not return yet), and should be changed to 'US' ------> __reg_process_hint_driver calls an intersect Besides, the reg_process_hint call with the last request is meaningless since the crda call has a timeout work. If that timeout expires, the first module's request will lost. Cc: stable@vger.kernel.org Fixes: 96cce12ff6e0 ("cfg80211: fix processing world regdomain when non modular") Signed-off-by: Robert Hodaszi Link: https://lore.kernel.org/r/20190614131600.GA13897@a1-hr Signed-off-by: Johannes Berg Signed-off-by: Greg Kroah-Hartman --- net/wireless/reg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/net/wireless/reg.c +++ b/net/wireless/reg.c @@ -2788,7 +2788,7 @@ static void reg_process_pending_hints(vo /* When last_request->processed becomes true this will be rescheduled */ if (lr && !lr->processed) { - reg_process_hint(lr); + pr_debug("Pending regulatory request, waiting for it to be processed...\n"); return; }