Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp838930yba; Wed, 24 Apr 2019 10:25:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqzK0aby+GzsPs3yGwmxf62DAd+rSlR0yJsL6hv6d8/YK20PsFpxmvmlZW9jx/H0Lwby9SFz X-Received: by 2002:a17:902:bf44:: with SMTP id u4mr33481437pls.171.1556126709156; Wed, 24 Apr 2019 10:25:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556126709; cv=none; d=google.com; s=arc-20160816; b=BcXf7V5of+ReyOkcULkDiIQSKeMaY9FiS0FxuNRk0zvKz0r/pswCweIyzW1DoySFLk F4mYj0OTdRV2EyGb5SoJgLL2v7yD8YVLHIHXwVVNMSA8l9wuXEqKFjDKxX4ZVp/WniWC iE8VzNT0ngKO6gcXrFBioixKQ0otbdgUY715vjXbmriWQW4dxDCjECHf53ypugerdhuW VGcbhpMeYoqnFP+bCgFh6gTEWOt36h4B4VNsXKaczsJJ9AmdOzEYBV+7snPsR3IOpF2l jLKwEVgSuGyZL7ooSoRY5T0QvfNc9usRM+ovMTy6az2EfvnXvvZLhlMexWGNE6Gi3wG2 Hdbg== 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=F2DaQgXocOwaZfE01halD+IxjrmV/lDiTG5qN555gqM=; b=yJ33ciNaJmEzAUYR6Tw1G5MdFofLKLQV70gK/OgrMY4j2zNsm3hKkbk0cOUuFhMNXM 3tbt2wry6eQ0c/6y0AVNq20nqpCwJSm2kb2kjBcamDSDSxDg6ifvtieML4sApjrvo5iz 46Wzg9hmwkvL3g7kov1f8ONbvQ+rAtkZR0RijCCYK54+Q1vyq3skhvGQIzAHOA3G6Ivp ZYT/eHNxYVvbO6NWizAIQytGDIOf20RDB4SWHJ/rWYazLBJkm33fp6WNhSbAInjRkVVT uYFI/bUESCnecUGkWpjuJ4W2gVVhqpEngufWt9Ix+lqSM/BNrZXhv3kC73tV20MzkD1T 0cxw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=k0ip8s47; 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 e24si18121234pgh.403.2019.04.24.10.24.53; Wed, 24 Apr 2019 10:25: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=k0ip8s47; 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 S2389685AbfDXRXV (ORCPT + 99 others); Wed, 24 Apr 2019 13:23:21 -0400 Received: from mail.kernel.org ([198.145.29.99]:49008 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389676AbfDXRXS (ORCPT ); Wed, 24 Apr 2019 13:23:18 -0400 Received: from localhost (62-193-50-229.as16211.net [62.193.50.229]) (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 EBF8921904; Wed, 24 Apr 2019 17:23:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1556126597; bh=61rSffk413KulKXs8mOpxUB2yvdPmtiHD+K7eidMAd0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=k0ip8s47HHQlEg6b0pGw0WHQ4QNTdDNReGTgYAbUYUI01EOFfnD8vy9I9zz+1gded 9suwOJ1mjWnotpvuoqof6Cq7Xrz8CWI/FH8z4+lve7Gv1tW28cTcuUPfviGc05B+Gi GyUIP0dlMh6Sgl5/ocBG8YyDxHtZ8jvekLrUXZeQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Felix Fietkau , Johannes Berg Subject: [PATCH 4.4 163/168] mac80211: do not call driver wake_tx_queue op during reconfig Date: Wed, 24 Apr 2019 19:10:07 +0200 Message-Id: <20190424170932.945927499@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190424170923.452349382@linuxfoundation.org> References: <20190424170923.452349382@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: Felix Fietkau commit 4856bfd230985e43e84c26473c91028ff0a533bd upstream. There are several scenarios in which mac80211 can call drv_wake_tx_queue after ieee80211_restart_hw has been called and has not yet completed. Driver private structs are considered uninitialized until mac80211 has uploaded the vifs, stations and keys again, so using private tx queue data during that time is not safe. The driver can also not rely on drv_reconfig_complete to figure out when it is safe to accept drv_wake_tx_queue calls again, because it is only called after all tx queues are woken again. To fix this, bail out early in drv_wake_tx_queue if local->in_reconfig is set. Cc: stable@vger.kernel.org Signed-off-by: Felix Fietkau Signed-off-by: Johannes Berg Signed-off-by: Greg Kroah-Hartman --- net/mac80211/driver-ops.h | 3 +++ 1 file changed, 3 insertions(+) --- a/net/mac80211/driver-ops.h +++ b/net/mac80211/driver-ops.h @@ -1157,6 +1157,9 @@ static inline void drv_wake_tx_queue(str { struct ieee80211_sub_if_data *sdata = vif_to_sdata(txq->txq.vif); + if (local->in_reconfig) + return; + if (!check_sdata_in_driver(sdata)) return;