From patchwork Sat Dec 7 11:31:42 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 298666 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id E30012C00CB for ; Sat, 7 Dec 2013 22:41:24 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754580Ab3LGLlT (ORCPT ); Sat, 7 Dec 2013 06:41:19 -0500 Received: from top.free-electrons.com ([176.31.233.9]:57403 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754263Ab3LGLlR (ORCPT ); Sat, 7 Dec 2013 06:41:17 -0500 Received: by mail.free-electrons.com (Postfix, from userid 106) id B2D6C7F5; Sat, 7 Dec 2013 12:41:17 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on mail.free-electrons.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.3.2 Received: from localhost (unknown [90.84.144.145]) by mail.free-electrons.com (Postfix) with ESMTPSA id 4D1727C1; Sat, 7 Dec 2013 12:41:17 +0100 (CET) From: Maxime Ripard To: "David S. Miller" Cc: linux-arm-kernel@lists.infradead.org, linux-sunxi@googlegroups.com, netdev@vger.kernel.org, Maxime Ripard Subject: [PATCH] net: allwinner: emac: Add missing free_irq Date: Sat, 7 Dec 2013 12:31:42 +0100 Message-Id: <1386415902-32697-1-git-send-email-maxime.ripard@free-electrons.com> X-Mailer: git-send-email 1.8.4.2 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The sun4i-emac driver uses devm_request_irq at .ndo_open time, but relies on the managed device mechanism to actually free it. This causes an issue whenever someone wants to restart the interface, the interrupt still being held, and not yet released. Fall back to using the regular request_irq at .ndo_open time, and introduce a free_irq during .ndo_stop. Signed-off-by: Maxime Ripard --- Hi David, It would be great if this patch would be applied to 3.13. Thanks, Maxime drivers/net/ethernet/allwinner/sun4i-emac.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/allwinner/sun4i-emac.c b/drivers/net/ethernet/allwinner/sun4i-emac.c index 50b853a..38aba50 100644 --- a/drivers/net/ethernet/allwinner/sun4i-emac.c +++ b/drivers/net/ethernet/allwinner/sun4i-emac.c @@ -717,8 +717,8 @@ static int emac_open(struct net_device *dev) if (netif_msg_ifup(db)) dev_dbg(db->dev, "enabling %s\n", dev->name); - if (devm_request_irq(db->dev, dev->irq, &emac_interrupt, - 0, dev->name, dev)) + if (request_irq(dev->irq, &emac_interrupt, + 0, dev->name, dev)) return -EAGAIN; /* Initialize EMAC board */ @@ -774,6 +774,8 @@ static int emac_stop(struct net_device *ndev) emac_shutdown(ndev); + free_irq(ndev->irq, ndev); + return 0; }