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.4,18/31] r8152: napi hangup fix after disconnect From: Greg Kroah-Hartman Message-Id: <20180720121340.812996969@linuxfoundation.org> Date: Fri, 20 Jul 2018 14:13:48 +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: NC40LXN0YWJsZSByZXZpZXcgcGF0Y2guICBJZiBhbnlvbmUgaGFzIGFueSBvYmplY3Rpb25zLCBw bGVhc2UgbGV0IG1lIGtub3cuCgotLS0tLS0tLS0tLS0tLS0tLS0KCkZyb206IEppcmkgU2xhYnkg PGpzbGFieUBzdXNlLmN6PgoKWyBVcHN0cmVhbSBjb21taXQgMGVlMWY0NzM0OTY3YWY4MzIxZWNl YmFmOWM3NDIyMWFjZTM0ZjJkNSBdCgpXaGVuIHVucGx1Z2dpbmcgYW4gcjgxNTIgYWRhcHRlciB3 aGlsZSB0aGUgaW50ZXJmYWNlIGlzIFVQLCB0aGUgTklDCmJlY29tZXMgdW51c2FibGUuICB1c2It PmRpc2Nvbm5lY3QgKGFrYSBydGw4MTUyX2Rpc2Nvbm5lY3QpIGRlbGV0ZXMKbmFwaS4gVGhlbiwg cnRsODE1Ml9kaXNjb25uZWN0IGNhbGxzIHVucmVnaXN0ZXJfbmV0ZGV2IGFuZCB0aGF0IGludm9r ZXMKbmV0ZGV2LT5uZG9fc3RvcCAoYWthIHJ0bDgxNTJfY2xvc2UpLiBydGw4MTUyX2Nsb3NlIHRy aWVzIHRvCm5hcGlfZGlzYWJsZSwgYnV0IHRoZSBuYXBpIGlzIGFscmVhZHkgZGVsZXRlZCBieSBk aXNjb25uZWN0IGFib3ZlLiBTbwp0aGUgZmlyc3Qgd2hpbGUgbG9vcCBpbiBuYXBpX2Rpc2FibGUg bmV2ZXIgZmluaXNoZXMuIFRoaXMgcmVzdWx0cyBpbgpjb21wbGV0ZSBkZWFkbG9jayBvZiB0aGUg bmV0d29yayBsYXllciBhcyB0aGVyZSBpcyBydG5sX211dGV4IGhlbGQgYnkKdW5yZWdpc3Rlcl9u ZXRkZXYuCgpTbyBhdm9pZCB0aGUgY2FsbCB0byBuYXBpX2Rpc2FibGUgaW4gcnRsODE1Ml9jbG9z ZSB3aGVuIHRoZSBkZXZpY2UgaXMKYWxyZWFkeSBnb25lLgoKVGhlIG90aGVyIGNhbGxzIHRvIHVz Yl9raWxsX3VyYiwgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jLApuZXRpZl9zdG9wX3F1ZXVlIGV0 Yy4gc2VlbSB0byBiZSBmaW5lLiBUaGUgdXJiIGFuZCBuZXRkZXYgaXMgbm90CmRlc3Ryb3llZCB5 ZXQuCgpTaWduZWQtb2ZmLWJ5OiBKaXJpIFNsYWJ5IDxqc2xhYnlAc3VzZS5jej4KQ2M6IGxpbnV4 LXVzYkB2Z2VyLmtlcm5lbC5vcmcKQ2M6IG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKU2lnbmVkLW9m Zi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgpTaWduZWQtb2ZmLWJ5 OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIGRy aXZlcnMvbmV0L3VzYi9yODE1Mi5jIHwgICAgMyArKy0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCgoKLS0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxp c3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LXVzYiIgaW4KdGhlIGJvZHkgb2Yg YSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKTW9yZSBtYWpvcmRvbW8gaW5m byBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCgotLS0gYS9k cml2ZXJzL25ldC91c2IvcjgxNTIuYworKysgYi9kcml2ZXJzL25ldC91c2IvcjgxNTIuYwpAQCAt MzEzOSw3ICszMTM5LDggQEAgc3RhdGljIGludCBydGw4MTUyX2Nsb3NlKHN0cnVjdCBuZXRfZGV2 aQogI2lmZGVmIENPTkZJR19QTV9TTEVFUAogCXVucmVnaXN0ZXJfcG1fbm90aWZpZXIoJnRwLT5w bV9ub3RpZmllcik7CiAjZW5kaWYKLQluYXBpX2Rpc2FibGUoJnRwLT5uYXBpKTsKKwlpZiAoIXRl c3RfYml0KFJUTDgxNTJfVU5QTFVHLCAmdHAtPmZsYWdzKSkKKwkJbmFwaV9kaXNhYmxlKCZ0cC0+ bmFwaSk7CiAJY2xlYXJfYml0KFdPUktfRU5BQkxFLCAmdHAtPmZsYWdzKTsKIAl1c2Jfa2lsbF91 cmIodHAtPmludHJfdXJiKTsKIAljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJnRwLT5zY2hlZHVs ZSk7Cg== 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 09578ECDFBB for ; Fri, 20 Jul 2018 12:27:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id AAB882084A for ; Fri, 20 Jul 2018 12:27:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AAB882084A 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 S1732550AbeGTNPL (ORCPT ); Fri, 20 Jul 2018 09:15:11 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:34982 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730130AbeGTNPK (ORCPT ); Fri, 20 Jul 2018 09:15:10 -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 CE44341C; Fri, 20 Jul 2018 12:27:09 +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.4 18/31] r8152: napi hangup fix after disconnect Date: Fri, 20 Jul 2018 14:13:48 +0200 Message-Id: <20180720121340.812996969@linuxfoundation.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180720121340.158484922@linuxfoundation.org> References: <20180720121340.158484922@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.4-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 @@ -3139,7 +3139,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);