From patchwork Mon Aug 21 22:28:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hauke Mehrtens X-Patchwork-Id: 9913907 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 9F4F5603FA for ; Mon, 21 Aug 2017 22:28:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7FC79286AA for ; Mon, 21 Aug 2017 22:28:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 74C6D286C1; Mon, 21 Aug 2017 22:28:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1891D286AA for ; Mon, 21 Aug 2017 22:28:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754439AbdHUW2t (ORCPT ); Mon, 21 Aug 2017 18:28:49 -0400 Received: from mx1.mailbox.org ([80.241.60.212]:48969 "EHLO mx1.mailbox.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754408AbdHUW2s (ORCPT ); Mon, 21 Aug 2017 18:28:48 -0400 Received: from smtp1.mailbox.org (smtp1.mailbox.org [80.241.60.240]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.mailbox.org (Postfix) with ESMTPS id 1EF1741A07; Tue, 22 Aug 2017 00:28:47 +0200 (CEST) X-Virus-Scanned: amavisd-new at heinlein-support.de Received: from smtp1.mailbox.org ([80.241.60.240]) by spamfilter03.heinlein-hosting.de (spamfilter03.heinlein-hosting.de [80.241.56.117]) (amavisd-new, port 10030) with ESMTP id 0pt2PVLda2pt; Tue, 22 Aug 2017 00:28:46 +0200 (CEST) From: Hauke Mehrtens To: johannes@sipsolutions.net Cc: backports@vger.kernel.org, Hauke Mehrtens Subject: [PATCH 16/21] patches: brcmfmac: fix netdev destructor Date: Tue, 22 Aug 2017 00:28:12 +0200 Message-Id: <20170821222817.17376-17-hauke@hauke-m.de> In-Reply-To: <20170821222817.17376-1-hauke@hauke-m.de> References: <20170821222817.17376-1-hauke@hauke-m.de> Sender: backports-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: backports@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP brcmfmac uses a complicated netdev destructor handling. The brcmf_net_attach() function just adds a normal destructor and later the brcmf_add_if() function sets the needs_free_netdev callback. The normal spatch was not applied correctly to this file, add a patch before to try to fx this problem manually. Signed-off-by: Hauke Mehrtens --- patches/0079-netdev-destructor/brcmfmac.patch | 35 +++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 patches/0079-netdev-destructor/brcmfmac.patch diff --git a/patches/0079-netdev-destructor/brcmfmac.patch b/patches/0079-netdev-destructor/brcmfmac.patch new file mode 100644 index 00000000..3f328b26 --- /dev/null +++ b/patches/0079-netdev-destructor/brcmfmac.patch @@ -0,0 +1,35 @@ +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +index b5a561b..6f5466f 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +@@ -462,6 +462,18 @@ static const struct net_device_ops brcmf_netdev_ops_pri = { + .ndo_set_rx_mode = brcmf_netdev_set_multicast_list + }; + ++#undef netdev_set_priv_destructor ++#define netdev_set_priv_destructor(_dev, _destructor) \ ++ (_dev)->destructor = _destructor ++ ++#if LINUX_VERSION_IS_LESS(4,12,0) ++static void __brcmf_cfg80211_free_netdev(struct net_device *ndev) ++{ ++ brcmf_cfg80211_free_netdev(ndev); ++ free_netdev(ndev); ++} ++#endif ++ + int brcmf_net_attach(struct brcmf_if *ifp, bool rtnl_locked) + { + struct brcmf_pub *drvr = ifp->drvr; +@@ -634,7 +646,11 @@ struct brcmf_if *brcmf_add_if(struct brcmf_pub *drvr, s32 bsscfgidx, s32 ifidx, + if (!ndev) + return ERR_PTR(-ENOMEM); + ++#if LINUX_VERSION_IS_LESS(4,12,0) ++ ndev->priv_destructor = __brcmf_cfg80211_free_netdev; ++#else + ndev->needs_free_netdev = true; ++#endif + ifp = netdev_priv(ndev); + ifp->ndev = ndev; + /* store mapping ifidx to bsscfgidx */