Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp841152yba; Wed, 24 Apr 2019 10:27:17 -0700 (PDT) X-Google-Smtp-Source: APXvYqx81PU/WyiLymJE6lI9CalBNsl0DAlsKs+elq8TzJJnRyceBD34ahsMuF3nSo4Ep+dj011b X-Received: by 2002:a62:e215:: with SMTP id a21mr35070553pfi.30.1556126836927; Wed, 24 Apr 2019 10:27:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556126836; cv=none; d=google.com; s=arc-20160816; b=CZKWBzh0u1gfMmUWOQqVnU2Mcd74Z+T09nliU8KYTKU2OVeaztkxJ7KvGNQr3Ds5NB kdLkErMpz48aYCg7z7nrOMpEeK21GKlm1nAQBwnQjLAtY45iqBcJplKu5lSPL8lBxu9u YyNBvLNJ8QZJ98H0gLLfVMX2K2l8j2Vm7KA+MPtRNjRsBT8FVXgiBjo3ro4H4JonVZqd 5aCCcpvt4WSvzHBwj5BVErWsstmSKzVko3d4BIWSBY60f6TRCbfgD3cPs68SfvoBJabs 6Xs7+KNVA7ihoVsxspdyNl3iQU/Cexcdl9T3FU3dh5G4yLkfNYR9qJ6Bz0XTaeBs3fir 9VUQ== 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=TYwNekJVeulyt3o5G03ogCn2LpdOZjY3BU+QJJN0mTg=; b=BlqdKh02u3iHFETKFdUbfxmPFuECqm9X34tV2jN/WeUKYERycivK/qJ5V+jwtbLji3 rkyQ1nsNg7+RVIPhl3TSWAl7UCwWEBkVaVEo6CbHmoOePQo1W3fyCp1EQ1wOsvhc4jHx gL1roT9BAuN7F4HpyK5MImCfgY5Cyi23+deKg2bap3kqOX+dZNZp+xCIr0DJwysgLaS4 KpgHqAq1JfoqNM4DBVl5ufJxowB3Sz2zO7LrFx8fWZpczTtdDOcslTyEwWBmv0skxhDW sAthWx607jMrkxVfx6zMbujt/iRUt1L8Xoq7yGyDNk4OZ7aHcUTtUT7JQo9LLWHSBU/r roJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=MGC5BKWd; 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 w10si1363638pgr.296.2019.04.24.10.27.01; Wed, 24 Apr 2019 10:27:16 -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=MGC5BKWd; 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 S2390029AbfDXRZZ (ORCPT + 99 others); Wed, 24 Apr 2019 13:25:25 -0400 Received: from mail.kernel.org ([198.145.29.99]:51270 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390013AbfDXRZU (ORCPT ); Wed, 24 Apr 2019 13:25:20 -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 A315B21903; Wed, 24 Apr 2019 17:25:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1556126720; bh=8wu4yTgsNFIBxzInQIbjsakr0ZPYsnFjshjfAtxwaSU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MGC5BKWdQwZkDHYtlsMgdGavvgPjqg8VjntVs2W1ch0PbkBsVz9Aus3QO2jOD+R74 uNPt3hgrWPiwLSeoznvZkIb5a+TlBNvnJ2TiYTMwnWsYqorBGqP8xKVSHu0ja7DgNo ndUsTsNuYKaO64BXpcbjjG+kGmhtg1hVpSDGedig= 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.9 36/44] mac80211: do not call driver wake_tx_queue op during reconfig Date: Wed, 24 Apr 2019 19:10:14 +0200 Message-Id: <20190424170900.142595606@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190424170839.924291114@linuxfoundation.org> References: <20190424170839.924291114@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 @@ -1163,6 +1163,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;