From patchwork Sat Dec 24 04:35:59 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 708599 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2001:1868:205::9]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3tlswN4fjtz9srZ for ; Sat, 24 Dec 2016 15:39:00 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="qjgpdSSb"; dkim-atps=neutral Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1cKe4n-0003Cn-0e; Sat, 24 Dec 2016 04:36:57 +0000 Received: from mail-oi0-x241.google.com ([2607:f8b0:4003:c06::241]) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1cKe4H-0002sy-RD for lede-dev@lists.infradead.org; Sat, 24 Dec 2016 04:36:28 +0000 Received: by mail-oi0-x241.google.com with SMTP id v84so38792000oie.2 for ; Fri, 23 Dec 2016 20:36:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=waKSmhcwYDc2gBEyQMEQu72uxDdkSsDs4Xb+BcjdQvU=; b=qjgpdSSbov7J01yAhC1eAKv1v8JVTk4RWVH1KmcZjqysb6JPDMaCtiog/Tc04/+xxR ADPHlKCvSnZRkww7nJhp+FBj31ietM6Q2Hj/FHN140IKR/75CLRR8x42Miggh+ZQoxhl 27/Yltq4LCGa5HiHiViiyTQQMyZbyk50Db/1uX5Vh8CrIpY3NT/YU2n4JZ1Evk+Ary2b 3/vYFBqePVXgsne6hJgajw26tOSbxyIXSnM+JJvi7DiXklcYvmcq4kguBUcKzVg/hF51 BrJVf3ty9nhfDX+N124pJRc1h8Peglzmxo9pI2iKdG6jNTOKX+wPMOIEh8YMlQjaAJGu pbQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=waKSmhcwYDc2gBEyQMEQu72uxDdkSsDs4Xb+BcjdQvU=; b=C8vmeohYrQt8PhsQWl6qBnfQWknBuG+S6b8yIGYbyiMhB41BZavxXL9kMk21w46R3E aTi2UErxDERyXYgHHV5jyKVcNiFKphPqdu9Re2UcpK/zyVEbmtwmqkpUsOYGzUTIyoqC p/aeLVT04yWrNMgEJtTjBEGk8NyBSvask0kQXbPG3zdT3vn2DP6XpgnRclA6medcrmaY /EUqVMupv/rtu6jRStza136297c/0qLQBZ8XdQU/MDo273m7zRRrsLqjASrnTV4B7LCb 09U4dIN3mjQPdGqZQ0vKo6zAac9hEDFWueIwHxpUBTgJ4bzeQRwLa7D3RUQA5sERZ20N uN4g== X-Gm-Message-State: AIkVDXJdfmp47EHuV38/+ggWsFful9KMwkDd44DHnlARo07GmSxU5sQ4dQD0oKSw9p08Gw== X-Received: by 10.202.117.199 with SMTP id q190mr9482497oic.118.1482554166483; Fri, 23 Dec 2016 20:36:06 -0800 (PST) Received: from bender.lan ([2001:470:d:73f:4069:aa1c:c8dd:bb59]) by smtp.gmail.com with ESMTPSA id e63sm17015125oih.23.2016.12.23.20.36.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Dec 2016 20:36:06 -0800 (PST) From: Florian Fainelli To: lede-dev@lists.infradead.org Date: Fri, 23 Dec 2016 20:35:59 -0800 Message-Id: <20161224043600.24983-4-f.fainelli@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20161224043600.24983-1-f.fainelli@gmail.com> References: <20161224043600.24983-1-f.fainelli@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20161223_203626_051188_02F8AC51 X-CRM114-Status: GOOD ( 11.64 ) X-Spam-Score: -2.7 (--) X-Spam-Report: SpamAssassin version 3.4.0 on bombadil.infradead.org summary: Content analysis details: (-2.7 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [2607:f8b0:4003:c06:0:0:0:241 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (f.fainelli[at]gmail.com) -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid Subject: [LEDE-DEV] [PATCH 3/4] rb532: Backport fix to resolve oops during korina_restart X-BeenThere: lede-dev@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: roman@advem.lv, Florian Fainelli , nbd@nbd.name MIME-Version: 1.0 Sender: "Lede-dev" Errors-To: lede-dev-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Signed-off-by: Florian Fainelli --- .../patches-4.4/100-korina_fix_napi_disable.patch | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 target/linux/rb532/patches-4.4/100-korina_fix_napi_disable.patch diff --git a/target/linux/rb532/patches-4.4/100-korina_fix_napi_disable.patch b/target/linux/rb532/patches-4.4/100-korina_fix_napi_disable.patch new file mode 100644 index 000000000000..3f80e0937d02 --- /dev/null +++ b/target/linux/rb532/patches-4.4/100-korina_fix_napi_disable.patch @@ -0,0 +1,56 @@ +From 5833532b49820aa221248f296c207cc50d20ca2d Mon Sep 17 00:00:00 2001 +From: Florian Fainelli +Date: Fri, 23 Dec 2016 19:36:31 -0800 +Subject: [PATCH net] net: korina: Fix NAPI versus resources freeing + +Commit beb0babfb77e ("korina: disable napi on close and restart") +introduced calls to napi_disable() that were missing before, +unfortunately this leaves a small window during which NAPI has a chance +to run, yet we just freed resources since korina_free_ring() has been +called: + +Fix this by disabling NAPI first then freeing resource, and make sure +that we also cancel the restart taks before doing the resource freeing. + +Fixes: beb0babfb77e ("korina: disable napi on close and restart") +Reported-by: Alexandros C. Couloumbis +Signed-off-by: Florian Fainelli +--- + drivers/net/ethernet/korina.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/drivers/net/ethernet/korina.c b/drivers/net/ethernet/korina.c +index cbeea915f026..8037426ec50f 100644 +--- a/drivers/net/ethernet/korina.c ++++ b/drivers/net/ethernet/korina.c +@@ -900,10 +900,10 @@ static void korina_restart_task(struct work_struct *work) + DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR, + &lp->rx_dma_regs->dmasm); + +- korina_free_ring(dev); +- + napi_disable(&lp->napi); + ++ korina_free_ring(dev); ++ + if (korina_init(dev) < 0) { + printk(KERN_ERR "%s: cannot restart device\n", dev->name); + return; +@@ -1064,12 +1064,12 @@ static int korina_close(struct net_device *dev) + tmp = tmp | DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR; + writel(tmp, &lp->rx_dma_regs->dmasm); + +- korina_free_ring(dev); +- + napi_disable(&lp->napi); + + cancel_work_sync(&lp->restart_task); + ++ korina_free_ring(dev); ++ + free_irq(lp->rx_irq, dev); + free_irq(lp->tx_irq, dev); + free_irq(lp->ovr_irq, dev); +-- +2.9.3 +