projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote-tracking branch 'lsk/v3.10/topic/arm64-cpuidle' into linux-linaro-lsk
[firefly-linux-kernel-4.4.55.git]
/
drivers
/
net
/
can
/
sja1000
/
peak_pci.c
diff --git
a/drivers/net/can/sja1000/peak_pci.c
b/drivers/net/can/sja1000/peak_pci.c
index 6b6f0ad75090c4ea463ae49b8e2041dbdaca55df..7042f5faddd7b9da464b8051811653b07f5f6d6c 100644
(file)
--- a/
drivers/net/can/sja1000/peak_pci.c
+++ b/
drivers/net/can/sja1000/peak_pci.c
@@
-551,7
+551,7
@@
static int peak_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{
struct sja1000_priv *priv;
struct peak_pci_chan *chan;
{
struct sja1000_priv *priv;
struct peak_pci_chan *chan;
- struct net_device *dev;
+ struct net_device *dev
, *prev_dev
;
void __iomem *cfg_base, *reg_base;
u16 sub_sys_id, icr;
int i, err, channels;
void __iomem *cfg_base, *reg_base;
u16 sub_sys_id, icr;
int i, err, channels;
@@
-687,11
+687,13
@@
failure_remove_channels:
writew(0x0, cfg_base + PITA_ICR + 2);
chan = NULL;
writew(0x0, cfg_base + PITA_ICR + 2);
chan = NULL;
- for (dev = pci_get_drvdata(pdev); dev; dev = chan->prev_dev) {
- unregister_sja1000dev(dev);
- free_sja1000dev(dev);
+ for (dev = pci_get_drvdata(pdev); dev; dev = prev_dev) {
priv = netdev_priv(dev);
chan = priv->priv;
priv = netdev_priv(dev);
chan = priv->priv;
+ prev_dev = chan->prev_dev;
+
+ unregister_sja1000dev(dev);
+ free_sja1000dev(dev);
}
/* free any PCIeC resources too */
}
/* free any PCIeC resources too */
@@
-725,10
+727,12
@@
static void peak_pci_remove(struct pci_dev *pdev)
/* Loop over all registered devices */
while (1) {
/* Loop over all registered devices */
while (1) {
+ struct net_device *prev_dev = chan->prev_dev;
+
dev_info(&pdev->dev, "removing device %s\n", dev->name);
unregister_sja1000dev(dev);
free_sja1000dev(dev);
dev_info(&pdev->dev, "removing device %s\n", dev->name);
unregister_sja1000dev(dev);
free_sja1000dev(dev);
- dev =
chan->
prev_dev;
+ dev = prev_dev;
if (!dev) {
/* do that only for first channel */
if (!dev) {
/* do that only for first channel */