Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp268659imu; Mon, 19 Nov 2018 22:12:17 -0800 (PST) X-Google-Smtp-Source: AFSGD/UenAwfrQGPd1b8UmDjzQP0IdrmGum4YewCgI1uDM2I1q7QhY5NE18+QsAL7BI6nCgveDnZ X-Received: by 2002:a63:c0f:: with SMTP id b15mr768189pgl.314.1542694337735; Mon, 19 Nov 2018 22:12:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542694337; cv=none; d=google.com; s=arc-20160816; b=YzooJ1XPFy0OTmMCR0+crlpwwQNK+KZnWspzcCKZos7gMKYXXz7VADqD5MIosVS01k Ofg5rkBtNj9AbHbwpmkQXnEAFoIE0kjEZwQDdPN62389zhl55astPgUlRTPpOpJg2foc ou8gzeqEwS25z6cbTFxdmT3uLZjc7S5NjNXHGn4xrA+z7WgxWbyEUo+wYsv0EFnveGVS XU6fOopieeqzmb5CF+bmpDRmHV9ku25OvXfbQkVJ9XGMu4OIDKfjs6uHo7VCdZfgWAnI VpFsyRQnlDF6EJE1Tr+33jMiHHzw3LGTagJzuxVbTzz0Q+L//b1ZwEwAqaZ97eOL0CS5 7avA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:cc :to:from; bh=kH1ESuWl2LmQA4BLJH9+pxxHjUf7UfPrcMva7lI4DZA=; b=OFxaUT6NXHuz8+OtLLvZ+vUS/jTlHbAv5dWfeJexQCKMtK5xkKBb/wfMkH3JMi8mNH jebN4x4vUtZTHU/6B7FXmCp80MM0Sq8H5SZQgkGMg+zehfbMeMKy+JtVRKr6Co0LnPOA QiDlepgQG+qi8webNnGm9Vk2VW6aaePYpj32g1yKQpUVoTwGm41Hkf0TUXMF9G1lfIf3 zI3y/QWGyueHppCpaBMIye3dQelWAwSpStJUah9dXgso3BccojneQSiRbgVXPUkTeLo8 fd+jfUND5d6J/XpR4AgfVNGe2TyDBpEReVYo40KskRqf4kAEYBzB4FdAXMBeAf/KtbVW 89fA== ARC-Authentication-Results: i=1; mx.google.com; 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 u5si13782018plj.129.2018.11.19.22.12.02; Mon, 19 Nov 2018 22:12:17 -0800 (PST) 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; 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 S1731339AbeKTQFw (ORCPT + 99 others); Tue, 20 Nov 2018 11:05:52 -0500 Received: from 59-120-53-16.HINET-IP.hinet.net ([59.120.53.16]:57393 "EHLO ATCSQR.andestech.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726883AbeKTQFw (ORCPT ); Tue, 20 Nov 2018 11:05:52 -0500 Received: from mail.andestech.com (atcpcs16.andestech.com [10.0.1.222]) by ATCSQR.andestech.com with ESMTP id wAK5bHYm055933; Tue, 20 Nov 2018 13:37:17 +0800 (GMT-8) (envelope-from vincentc@andestech.com) Received: from atcsqa06.andestech.com (10.0.15.65) by ATCPCS16.andestech.com (10.0.1.222) with Microsoft SMTP Server id 14.3.123.3; Tue, 20 Nov 2018 13:37:54 +0800 From: Vincent Chen To: , , , CC: , , Subject: [PATCH] net: faraday: ftmac100: remove netif_running(netdev) check before disabling interrupts Date: Tue, 20 Nov 2018 13:37:46 +0800 Message-ID: <1542692266-17720-1-git-send-email-vincentc@andestech.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.0.15.65] X-DNSRBL: X-MAIL: ATCSQR.andestech.com wAK5bHYm055933 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In the original ftmac100_interrupt(), the interrupts are only disabled when the condition "netif_running(netdev)" is true. However, this condition causes kerenl hang in the following case. When the user requests to disable the network device, kernel will clear the bit __LINK_STATE_START from the dev->state and then call the driver's ndo_stop function. Network device interrupts are not blocked during this process. If an interrupt occurs between clearing __LINK_STATE_START and stopping network device, kernel cannot disable the interrupts due to the condition "netif_running(netdev)" in the ISR. Hence, kernel will hang due to the continuous interruption of the network device. In order to solve the above problem, the interrupts of the network device should always be disabled in the ISR without being restricted by the condition "netif_running(netdev)". Signed-off-by: Vincent Chen --- drivers/net/ethernet/faraday/ftmac100.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/faraday/ftmac100.c b/drivers/net/ethernet/faraday/ftmac100.c index 21d7660..22dcf4c 100644 --- a/drivers/net/ethernet/faraday/ftmac100.c +++ b/drivers/net/ethernet/faraday/ftmac100.c @@ -875,9 +875,9 @@ static irqreturn_t ftmac100_interrupt(int irq, void *dev_id) struct net_device *netdev = dev_id; struct ftmac100 *priv = netdev_priv(netdev); + /* Disable interrupts for polling */ + ftmac100_disable_all_int(priv); if (likely(netif_running(netdev))) { - /* Disable interrupts for polling */ - ftmac100_disable_all_int(priv); napi_schedule(&priv->napi); } -- 1.7.1