Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp2472999lqp; Sun, 24 Mar 2024 22:16:43 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWfpRkyhxOQiIKT0sNyaAWptrq+RJxxfnUBCDAS8svJ8tDD9JM4ABacWDmLQg13e7qdZdRSLZrr9a9+3kWySKxQmc1YRyjDbauoerSlgg== X-Google-Smtp-Source: AGHT+IEXMEWPoC+TlZUajNEnAkHegvLNBB6+9gHueH7/Zdvd05G7ZK/QKb2cuu1HqbrUK+dlu+RN X-Received: by 2002:a05:6122:1da0:b0:4d4:1340:df12 with SMTP id gg32-20020a0561221da000b004d41340df12mr3947893vkb.0.1711343802735; Sun, 24 Mar 2024 22:16:42 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711343802; cv=pass; d=google.com; s=arc-20160816; b=dKrFS2nDIA9+R8RSiEdJAmwXrfvAQ884NgYcEMnz91soXZxLawqdohKcaHNFY3mBCp PRwk52+TrejTBOaUthvVwMF96uLhJu3UMN4f0dWR2mSVNSE2aCmu6tmULr+/TizWnGpp KlIvjjyE7gsassjS8y9WfT3yBhagphA1Jy7fFpyCYM+c1CNWaVhDGhKgzG5F2f91LxHL 87CGBa4DFSG0+ibgCmrUHHQqA1tBzewojWPPmKXkar4xr6uxnqexG5O56xjqwq+BiJm4 XP0R1706FrW1H3I/choPunsE8tSJ6f4NODLw7CqGdy1Zkxll7AnsX1X0euLirza70er6 MaAQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=n/IWCpQAm7YJaFa9k8LAE/GClPlNWc7mXWGeaTKhCbc=; fh=JfWUvpOeeP7Md9Dp9qqmGzgAiHNGATTlTeHQJbWXJoA=; b=tk/jA/3Ese/u8EM7k+i831eEtYlBVb7z2OSO5YskBefDcwGZ6GlBJu+U03t/Lmf0z1 RhkCYzBvGtVSMJLeL9P2rIazC+sczrcHTUllHcMoDeTiHzgESfg07H5H2OvidVnp3P3H gnrmF+3yCgyEhiWcFCrnEAXWwPXatK3SuCtLvFZwqp7E5qbegZuOURRFO31iJhCWi0Jx nWHrKSjSxPSiHwuAxUEWZrk7MN8CmuiUSJ8i8A7DperqCrflbj0TsXRtTWcu49si8E29 SiPmRhj7Ul6KvQuPnDseQ6kbuaTedPchNL7iq3JFUOFRxnH8bNwt7W22FO72fvkAzoF6 eKFA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=GSgsZgkb; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-113661-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-113661-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id 6-20020ad45b86000000b006968c87db04si1606346qvp.303.2024.03.24.22.16.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 Mar 2024 22:16:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-113661-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=GSgsZgkb; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-113661-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-113661-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 776B01C2186D for ; Mon, 25 Mar 2024 05:16:42 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 806361DD2A2; Sun, 24 Mar 2024 22:52:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="GSgsZgkb" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7D76A1D695F; Sun, 24 Mar 2024 22:49:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711320579; cv=none; b=Gvm+0IK04IqBxf6owV5vq+0e3Asd64RIPUaX4Fh/dUJWOpgDcGGUBzC6Eiaa6EmcTe6692y0PYAlqXEX3nazD/J78rA/cF6z74NCQlsq4WKb2DbKbhsey9nm4VVkO61p9XSkvkrrug03IyEf8Oot4OqmBhmczrBxHVThkGloMao= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711320579; c=relaxed/simple; bh=WqsZA9zL0MuvkFRHQCU6S33CFbNlq2m/TCnMWYOtG9s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=AdQRMtT3f/5L9T+10LG0ZO1MOr2li5z9YSL+AYOiJek+OmTIkcyGxcTqEuGZaGeZgtvA1PQINunDtYHJ4q1h5hNCc40wRiTTAQNDRnNvD2+/hleiVolFtrmewxWGMp6AfoT3ya71TZurDFmnBRKSIets8mkFa4y4dOu1qklbjvw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GSgsZgkb; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id A458EC433F1; Sun, 24 Mar 2024 22:49:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711320578; bh=WqsZA9zL0MuvkFRHQCU6S33CFbNlq2m/TCnMWYOtG9s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GSgsZgkb9IDCkl/R58Sd+5vVBZcZePTlIVYWpTaVAqbyISz8hNWo/kYF7yS4Op4tG cxHFb1cBhKmhzOAsQDwYgC/KQ2fMry0J6DjXEiOXI/n6MjmbZPf26FFDfGXhYI3Y8S nN18BbibGCRabKK8Rvv1e8xQBiDBJJSR4IR2s/VtBeW1Cx7qTUG5t+IKie0NP7R0Sa BMjURO6foPj24Xt426+XcmQKCY8G9YLjWbRMiNPH15j2VsaMLUnM10TTnst3SlQ1Gh YX61QEF7jsrclBqnpgX9sU3wgkfhqpDBhsHzagjuKcZKIA5Spx2xLJMAAa35ZOtsZ3 Sbawwn2mrJZBg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Ajay Singh , =?UTF-8?q?Alexis=20Lothor=C3=A9?= , Kalle Valo , Sasha Levin Subject: [PATCH 6.7 139/713] wifi: wilc1000: do not realloc workqueue everytime an interface is added Date: Sun, 24 Mar 2024 18:37:45 -0400 Message-ID: <20240324224720.1345309-140-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240324224720.1345309-1-sashal@kernel.org> References: <20240324224720.1345309-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit From: Ajay Singh [ Upstream commit 328efda22af81130c2ad981c110518cb29ff2f1d ] Commit 09ed8bfc5215 ("wilc1000: Rename workqueue from "WILC_wq" to "NETDEV-wq"") moved workqueue creation in wilc_netdev_ifc_init in order to set the interface name in the workqueue name. However, while the driver needs only one workqueue, the wilc_netdev_ifc_init is called each time we add an interface over a phy, which in turns overwrite the workqueue with a new one. This can be observed with the following commands: for i in $(seq 0 10) do iw phy phy0 interface add wlan1 type managed iw dev wlan1 del done ps -eo pid,comm|grep wlan 39 kworker/R-wlan0 98 kworker/R-wlan1 102 kworker/R-wlan1 105 kworker/R-wlan1 108 kworker/R-wlan1 111 kworker/R-wlan1 114 kworker/R-wlan1 117 kworker/R-wlan1 120 kworker/R-wlan1 123 kworker/R-wlan1 126 kworker/R-wlan1 129 kworker/R-wlan1 Fix this leakage by putting back hif_workqueue allocation in wilc_cfg80211_init. Regarding the workqueue name, it is indeed relevant to set it lowercase, however it is not attached to a specific netdev, so enforcing netdev name in the name is not so relevant. Still, enrich the name with the wiphy name to make it clear which phy is using the workqueue. Fixes: 09ed8bfc5215 ("wilc1000: Rename workqueue from "WILC_wq" to "NETDEV-wq"") Signed-off-by: Ajay Singh Co-developed-by: Alexis Lothoré Signed-off-by: Alexis Lothoré Signed-off-by: Kalle Valo Link: https://msgid.link/20240115-wilc_1000_fixes-v1-3-54d29463a738@bootlin.com Signed-off-by: Sasha Levin --- drivers/net/wireless/microchip/wilc1000/cfg80211.c | 11 ++++++++++- drivers/net/wireless/microchip/wilc1000/netdev.c | 10 +--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/drivers/net/wireless/microchip/wilc1000/cfg80211.c b/drivers/net/wireless/microchip/wilc1000/cfg80211.c index da52f91693b5b..fec18be90697c 100644 --- a/drivers/net/wireless/microchip/wilc1000/cfg80211.c +++ b/drivers/net/wireless/microchip/wilc1000/cfg80211.c @@ -1810,15 +1810,24 @@ int wilc_cfg80211_init(struct wilc **wilc, struct device *dev, int io_type, INIT_LIST_HEAD(&wl->rxq_head.list); INIT_LIST_HEAD(&wl->vif_list); + wl->hif_workqueue = alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, + wiphy_name(wl->wiphy)); + if (!wl->hif_workqueue) { + ret = -ENOMEM; + goto free_cfg; + } vif = wilc_netdev_ifc_init(wl, "wlan%d", WILC_STATION_MODE, NL80211_IFTYPE_STATION, false); if (IS_ERR(vif)) { ret = PTR_ERR(vif); - goto free_cfg; + goto free_hq; } return 0; +free_hq: + destroy_workqueue(wl->hif_workqueue); + free_cfg: wilc_wlan_cfg_deinit(wl); diff --git a/drivers/net/wireless/microchip/wilc1000/netdev.c b/drivers/net/wireless/microchip/wilc1000/netdev.c index 91d71e0f7ef23..d6602ced44f50 100644 --- a/drivers/net/wireless/microchip/wilc1000/netdev.c +++ b/drivers/net/wireless/microchip/wilc1000/netdev.c @@ -989,13 +989,6 @@ struct wilc_vif *wilc_netdev_ifc_init(struct wilc *wl, const char *name, goto error; } - wl->hif_workqueue = alloc_ordered_workqueue("%s-wq", WQ_MEM_RECLAIM, - ndev->name); - if (!wl->hif_workqueue) { - ret = -ENOMEM; - goto unregister_netdev; - } - ndev->needs_free_netdev = true; vif->iftype = vif_type; vif->idx = wilc_get_available_idx(wl); @@ -1008,12 +1001,11 @@ struct wilc_vif *wilc_netdev_ifc_init(struct wilc *wl, const char *name, return vif; -unregister_netdev: +error: if (rtnl_locked) cfg80211_unregister_netdevice(ndev); else unregister_netdev(ndev); - error: free_netdev(ndev); return ERR_PTR(ret); } -- 2.43.0