Au1x00: fix crash when trying register_netdev()
Andreas Lohre reported that the driver crashes when trying to register_netdev(), he sugessted to move dev->netdev_ops initialization before calling register_netdev(), it worked for him. Reported-by: Andreas Lohre <alohre@gmail.com> Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5d09e534bb
commit
63edaf6476
|
@ -1088,7 +1088,14 @@ static struct net_device * au1000_probe(int port_num)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
if ((err = register_netdev(dev)) != 0) {
|
||||
dev->base_addr = base;
|
||||
dev->irq = irq;
|
||||
dev->netdev_ops = &au1000_netdev_ops;
|
||||
SET_ETHTOOL_OPS(dev, &au1000_ethtool_ops);
|
||||
dev->watchdog_timeo = ETH_TX_TIMEOUT;
|
||||
|
||||
err = register_netdev(dev);
|
||||
if (err != 0) {
|
||||
printk(KERN_ERR "%s: Cannot register net device, error %d\n",
|
||||
DRV_NAME, err);
|
||||
free_netdev(dev);
|
||||
|
@ -1209,12 +1216,6 @@ static struct net_device * au1000_probe(int port_num)
|
|||
aup->tx_db_inuse[i] = pDB;
|
||||
}
|
||||
|
||||
dev->base_addr = base;
|
||||
dev->irq = irq;
|
||||
dev->netdev_ops = &au1000_netdev_ops;
|
||||
SET_ETHTOOL_OPS(dev, &au1000_ethtool_ops);
|
||||
dev->watchdog_timeo = ETH_TX_TIMEOUT;
|
||||
|
||||
/*
|
||||
* The boot code uses the ethernet controller, so reset it to start
|
||||
* fresh. au1000_init() expects that the device is in reset state.
|
||||
|
|
Loading…
Reference in New Issue