From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Lukas Wunner <lukas@wunner.de>, Frank Pavlic <f.pavlic@kunbus.de>,
Ben Dooks <ben.dooks@codethink.co.uk>,
Tristram Ha <Tristram.Ha@microchip.com>,
"David S . Miller" <davem@davemloft.net>,
Sasha Levin <sashal@kernel.org>,
netdev@vger.kernel.org
Subject: [PATCH AUTOSEL 4.14 16/43] net: ks8851: Delay requesting IRQ until opened
Date: Mon, 22 Apr 2019 15:47:00 -0400 [thread overview]
Message-ID: <20190422194727.12495-16-sashal@kernel.org> (raw)
In-Reply-To: <20190422194727.12495-1-sashal@kernel.org>
From: Lukas Wunner <lukas@wunner.de>
[ Upstream commit d268f31552794abf5b6aa5af31021643411f25f5 ]
The ks8851 driver currently requests the IRQ before registering the
net_device. Because the net_device name is used as IRQ name and is
still "eth%d" when the IRQ is requested, it's impossibe to tell IRQs
apart if multiple ks8851 chips are present. Most other drivers delay
requesting the IRQ until the net_device is opened. Do the same.
The driver doesn't enable interrupts on the chip before opening the
net_device and disables them when closing it, so there doesn't seem to
be a need to request the IRQ already on probe.
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Cc: Frank Pavlic <f.pavlic@kunbus.de>
Cc: Ben Dooks <ben.dooks@codethink.co.uk>
Cc: Tristram Ha <Tristram.Ha@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>
---
drivers/net/ethernet/micrel/ks8851.c | 24 +++++++++++-------------
1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
index 546a79b9cb15..b8f20aa2b7ad 100644
--- a/drivers/net/ethernet/micrel/ks8851.c
+++ b/drivers/net/ethernet/micrel/ks8851.c
@@ -776,6 +776,15 @@ static void ks8851_tx_work(struct work_struct *work)
static int ks8851_net_open(struct net_device *dev)
{
struct ks8851_net *ks = netdev_priv(dev);
+ int ret;
+
+ ret = request_threaded_irq(dev->irq, NULL, ks8851_irq,
+ IRQF_TRIGGER_LOW | IRQF_ONESHOT,
+ dev->name, ks);
+ if (ret < 0) {
+ netdev_err(dev, "failed to get irq\n");
+ return ret;
+ }
/* lock the card, even if we may not actually be doing anything
* else at the moment */
@@ -890,6 +899,8 @@ static int ks8851_net_stop(struct net_device *dev)
dev_kfree_skb(txb);
}
+ free_irq(dev->irq, ks);
+
return 0;
}
@@ -1520,14 +1531,6 @@ static int ks8851_probe(struct spi_device *spi)
ks8851_read_selftest(ks);
ks8851_init_mac(ks);
- ret = request_threaded_irq(spi->irq, NULL, ks8851_irq,
- IRQF_TRIGGER_LOW | IRQF_ONESHOT,
- ndev->name, ks);
- if (ret < 0) {
- dev_err(&spi->dev, "failed to get irq\n");
- goto err_irq;
- }
-
ret = register_netdev(ndev);
if (ret) {
dev_err(&spi->dev, "failed to register network device\n");
@@ -1540,11 +1543,7 @@ static int ks8851_probe(struct spi_device *spi)
return 0;
-
err_netdev:
- free_irq(ndev->irq, ks);
-
-err_irq:
err_id:
if (gpio_is_valid(gpio))
gpio_set_value(gpio, 0);
@@ -1565,7 +1564,6 @@ static int ks8851_remove(struct spi_device *spi)
dev_info(&spi->dev, "remove\n");
unregister_netdev(priv->netdev);
- free_irq(spi->irq, priv);
if (gpio_is_valid(priv->gpio))
gpio_set_value(priv->gpio, 0);
regulator_disable(priv->vdd_reg);
--
2.19.1
next prev parent reply other threads:[~2019-04-22 19:48 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-22 19:46 [PATCH AUTOSEL 4.14 01/43] ARM: dts: bcm283x: Fix hdmi hpd gpio pull Sasha Levin
2019-04-22 19:46 ` [PATCH AUTOSEL 4.14 02/43] s390: limit brk randomization to 32MB Sasha Levin
2019-04-22 19:46 ` [PATCH AUTOSEL 4.14 03/43] qlcnic: Avoid potential NULL pointer dereference Sasha Levin
2019-04-22 19:46 ` [PATCH AUTOSEL 4.14 04/43] netfilter: nft_set_rbtree: check for inactive element after flag mismatch Sasha Levin
2019-04-22 19:46 ` [PATCH AUTOSEL 4.14 05/43] netfilter: bridge: set skb transport_header before entering NF_INET_PRE_ROUTING Sasha Levin
2019-04-22 19:46 ` [PATCH AUTOSEL 4.14 06/43] s390/qeth: fix race when initializing the IP address table Sasha Levin
2019-04-22 19:46 ` [PATCH AUTOSEL 4.14 07/43] sc16is7xx: missing unregister/delete driver on error in sc16is7xx_init() Sasha Levin
2019-04-22 19:46 ` [PATCH AUTOSEL 4.14 08/43] serial: ar933x_uart: Fix build failure with disabled console Sasha Levin
2019-04-22 19:46 ` [PATCH AUTOSEL 4.14 09/43] KVM: arm/arm64: vgic-its: Take the srcu lock when parsing the memslots Sasha Levin
2019-04-22 19:46 ` Sasha Levin
2019-04-22 19:46 ` [PATCH AUTOSEL 4.14 10/43] usb: gadget: net2280: Fix overrun of OUT messages Sasha Levin
2019-04-22 19:46 ` [PATCH AUTOSEL 4.14 11/43] usb: gadget: net2280: Fix net2280_dequeue() Sasha Levin
2019-04-22 19:46 ` [PATCH AUTOSEL 4.14 12/43] usb: gadget: net2272: Fix net2272_dequeue() Sasha Levin
2019-04-22 19:46 ` [PATCH AUTOSEL 4.14 13/43] ARM: dts: pfla02: increase phy reset duration Sasha Levin
2019-04-22 19:46 ` [PATCH AUTOSEL 4.14 14/43] net: ks8851: Dequeue RX packets explicitly Sasha Levin
2019-04-22 19:46 ` [PATCH AUTOSEL 4.14 15/43] net: ks8851: Reassert reset pin if chip ID check fails Sasha Levin
2019-04-22 19:47 ` Sasha Levin [this message]
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 17/43] net: ks8851: Set initial carrier state to down Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 18/43] staging: rtl8188eu: Fix potential NULL pointer dereference of kcalloc Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 19/43] staging: rtlwifi: rtl8822b: fix to avoid potential NULL pointer dereference Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 20/43] staging: rtl8712: uninitialized memory in read_bbreg_hdl() Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 21/43] staging: rtlwifi: Fix potential NULL pointer dereference of kzalloc Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 22/43] net: macb: Add null check for PCLK and HCLK Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 23/43] net/sched: don't dereference a->goto_chain to read the chain index Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 24/43] ARM: dts: imx6qdl: Fix typo in imx6qdl-icore-rqs.dtsi Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 25/43] NFS: Fix a typo in nfs_init_timeout_values() Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 26/43] net: xilinx: fix possible object reference leak Sasha Levin
2019-04-22 19:47 ` Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 27/43] net: ibm: " Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 28/43] net: ethernet: ti: " Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 29/43] gpio: aspeed: fix a potential NULL pointer dereference Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 30/43] drm/meson: Fix invalid pointer in meson_drv_unbind() Sasha Levin
2019-04-22 19:47 ` Sasha Levin
2019-04-22 19:47 ` Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 31/43] drm/meson: Uninstall IRQ handler Sasha Levin
2019-04-22 19:47 ` Sasha Levin
2019-04-22 19:47 ` Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 32/43] scsi: qla4xxx: fix a potential NULL pointer dereference Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 33/43] usb: usb251xb: fix to avoid " Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 34/43] usb: u132-hcd: fix resource leak Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 35/43] tty: fix NULL pointer issue when tty_port ops is not set Sasha Levin
2019-04-23 5:35 ` Johan Hovold
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 36/43] ceph: fix use-after-free on symlink traversal Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 37/43] scsi: zfcp: reduce flood of fcrscn1 trace records on multi-element RSCN Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 38/43] libata: fix using DMA buffers on stack Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 39/43] gpio: of: Fix of_gpiochip_add() error path Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 40/43] kconfig/[mn]conf: handle backspace (^H) key Sasha Levin
[not found] ` <20190422194727.12495-1-sashal-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 41/43] iommu/amd: Reserve exclusion range in iova-domain Sasha Levin
2019-04-22 19:47 ` Sasha Levin
2019-04-22 19:47 ` Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 42/43] ptrace: take into account saved_sigmask in PTRACE{GET,SET}SIGMASK Sasha Levin
2019-04-22 19:47 ` [PATCH AUTOSEL 4.14 43/43] leds: pca9532: fix a potential NULL pointer dereference Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190422194727.12495-16-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=Tristram.Ha@microchip.com \
--cc=ben.dooks@codethink.co.uk \
--cc=davem@davemloft.net \
--cc=f.pavlic@kunbus.de \
--cc=linux-kernel@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=netdev@vger.kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.