From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [4.17,038/101] r8152: napi hangup fix after disconnect From: Greg Kroah-Hartman Message-Id: <20180720121424.597859715@linuxfoundation.org> Date: Fri, 20 Jul 2018 14:13:44 +0200 To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jiri Slaby , linux-usb@vger.kernel.org, netdev@vger.kernel.org, "David S. Miller" List-ID: NC4xNy1zdGFibGUgcmV2aWV3IHBhdGNoLiAgSWYgYW55b25lIGhhcyBhbnkgb2JqZWN0aW9ucywg cGxlYXNlIGxldCBtZSBrbm93LgoKLS0tLS0tLS0tLS0tLS0tLS0tCgpGcm9tOiBKaXJpIFNsYWJ5 IDxqc2xhYnlAc3VzZS5jej4KClsgVXBzdHJlYW0gY29tbWl0IDBlZTFmNDczNDk2N2FmODMyMWVj ZWJhZjljNzQyMjFhY2UzNGYyZDUgXQoKV2hlbiB1bnBsdWdnaW5nIGFuIHI4MTUyIGFkYXB0ZXIg d2hpbGUgdGhlIGludGVyZmFjZSBpcyBVUCwgdGhlIE5JQwpiZWNvbWVzIHVudXNhYmxlLiAgdXNi LT5kaXNjb25uZWN0IChha2EgcnRsODE1Ml9kaXNjb25uZWN0KSBkZWxldGVzCm5hcGkuIFRoZW4s IHJ0bDgxNTJfZGlzY29ubmVjdCBjYWxscyB1bnJlZ2lzdGVyX25ldGRldiBhbmQgdGhhdCBpbnZv a2VzCm5ldGRldi0+bmRvX3N0b3AgKGFrYSBydGw4MTUyX2Nsb3NlKS4gcnRsODE1Ml9jbG9zZSB0 cmllcyB0bwpuYXBpX2Rpc2FibGUsIGJ1dCB0aGUgbmFwaSBpcyBhbHJlYWR5IGRlbGV0ZWQgYnkg ZGlzY29ubmVjdCBhYm92ZS4gU28KdGhlIGZpcnN0IHdoaWxlIGxvb3AgaW4gbmFwaV9kaXNhYmxl IG5ldmVyIGZpbmlzaGVzLiBUaGlzIHJlc3VsdHMgaW4KY29tcGxldGUgZGVhZGxvY2sgb2YgdGhl IG5ldHdvcmsgbGF5ZXIgYXMgdGhlcmUgaXMgcnRubF9tdXRleCBoZWxkIGJ5CnVucmVnaXN0ZXJf bmV0ZGV2LgoKU28gYXZvaWQgdGhlIGNhbGwgdG8gbmFwaV9kaXNhYmxlIGluIHJ0bDgxNTJfY2xv c2Ugd2hlbiB0aGUgZGV2aWNlIGlzCmFscmVhZHkgZ29uZS4KClRoZSBvdGhlciBjYWxscyB0byB1 c2Jfa2lsbF91cmIsIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYywKbmV0aWZfc3RvcF9xdWV1ZSBl dGMuIHNlZW0gdG8gYmUgZmluZS4gVGhlIHVyYiBhbmQgbmV0ZGV2IGlzIG5vdApkZXN0cm95ZWQg eWV0LgoKU2lnbmVkLW9mZi1ieTogSmlyaSBTbGFieSA8anNsYWJ5QHN1c2UuY3o+CkNjOiBsaW51 eC11c2JAdmdlci5rZXJuZWwub3JnCkNjOiBuZXRkZXZAdmdlci5rZXJuZWwub3JnClNpZ25lZC1v ZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1i eTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBk cml2ZXJzL25ldC91c2IvcjgxNTIuYyB8ICAgIDMgKystCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgoKCi0tClRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBs aXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBsaW51eC11c2IiIGluCnRoZSBib2R5IG9m IGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCk1vcmUgbWFqb3Jkb21vIGlu Zm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbAoKLS0tIGEv ZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMKKysrIGIvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMKQEAg LTM5NjIsNyArMzk2Miw4IEBAIHN0YXRpYyBpbnQgcnRsODE1Ml9jbG9zZShzdHJ1Y3QgbmV0X2Rl dmkKICNpZmRlZiBDT05GSUdfUE1fU0xFRVAKIAl1bnJlZ2lzdGVyX3BtX25vdGlmaWVyKCZ0cC0+ cG1fbm90aWZpZXIpOwogI2VuZGlmCi0JbmFwaV9kaXNhYmxlKCZ0cC0+bmFwaSk7CisJaWYgKCF0 ZXN0X2JpdChSVEw4MTUyX1VOUExVRywgJnRwLT5mbGFncykpCisJCW5hcGlfZGlzYWJsZSgmdHAt Pm5hcGkpOwogCWNsZWFyX2JpdChXT1JLX0VOQUJMRSwgJnRwLT5mbGFncyk7CiAJdXNiX2tpbGxf dXJiKHRwLT5pbnRyX3VyYik7CiAJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZ0cC0+c2NoZWR1 bGUpOwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3679CECDFB8 for ; Fri, 20 Jul 2018 12:40:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id ED6CB20652 for ; Fri, 20 Jul 2018 12:40:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ED6CB20652 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linuxfoundation.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389804AbeGTN2q (ORCPT ); Fri, 20 Jul 2018 09:28:46 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:50276 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389779AbeGTN2p (ORCPT ); Fri, 20 Jul 2018 09:28:45 -0400 Received: from localhost (LFbn-1-12238-233.w90-92.abo.wanadoo.fr [90.92.53.233]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id A4049B14; Fri, 20 Jul 2018 12:37:12 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jiri Slaby , linux-usb@vger.kernel.org, netdev@vger.kernel.org, "David S. Miller" Subject: [PATCH 4.17 038/101] r8152: napi hangup fix after disconnect Date: Fri, 20 Jul 2018 14:13:44 +0200 Message-Id: <20180720121424.597859715@linuxfoundation.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180720121422.837870592@linuxfoundation.org> References: <20180720121422.837870592@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.17-stable review patch. If anyone has any objections, please let me know. ------------------ From: Jiri Slaby [ Upstream commit 0ee1f4734967af8321ecebaf9c74221ace34f2d5 ] When unplugging an r8152 adapter while the interface is UP, the NIC becomes unusable. usb->disconnect (aka rtl8152_disconnect) deletes napi. Then, rtl8152_disconnect calls unregister_netdev and that invokes netdev->ndo_stop (aka rtl8152_close). rtl8152_close tries to napi_disable, but the napi is already deleted by disconnect above. So the first while loop in napi_disable never finishes. This results in complete deadlock of the network layer as there is rtnl_mutex held by unregister_netdev. So avoid the call to napi_disable in rtl8152_close when the device is already gone. The other calls to usb_kill_urb, cancel_delayed_work_sync, netif_stop_queue etc. seem to be fine. The urb and netdev is not destroyed yet. Signed-off-by: Jiri Slaby Cc: linux-usb@vger.kernel.org Cc: netdev@vger.kernel.org Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/usb/r8152.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -3962,7 +3962,8 @@ static int rtl8152_close(struct net_devi #ifdef CONFIG_PM_SLEEP unregister_pm_notifier(&tp->pm_notifier); #endif - napi_disable(&tp->napi); + if (!test_bit(RTL8152_UNPLUG, &tp->flags)) + napi_disable(&tp->napi); clear_bit(WORK_ENABLE, &tp->flags); usb_kill_urb(tp->intr_urb); cancel_delayed_work_sync(&tp->schedule);