Arnaud Patard wrote:
Hi,
I was testing the sis190 driver and got an oops. Tests show that the error
path is the following :
sis190_init_one()
-> register_netdev
* Userspace sees the new interface and run ethtool ethX.
* ethtool calls ethtools_get_settings
* ethtools_get_settings try to access to the mii datas
* oops occurs
-> sis190_mii_probe
The fix I made is to replace the sequence by the following one :
sis190_init_one()
-> sis190_mii_probe
-> register_netdev
Regards,
Arnaud Patard
Signed-off-by: Arnaud Patard <[EMAIL PROTECTED]>
------------------------------------------------------------------------
diff -rpuN a/drivers/net/sis190.c b/drivers/net/sis190.c
--- a/drivers/net/sis190.c 2005-08-25 15:36:24.000000000 +0200
+++ b/drivers/net/sis190.c 2005-08-25 15:36:34.000000000 +0200
@@ -1779,14 +1779,18 @@ static int __devinit sis190_init_one(str
dev->irq = pdev->irq;
dev->base_addr = (unsigned long) 0xdead;
+ pci_set_drvdata(pdev, dev);
+
spin_lock_init(&tp->lock);
+ rc = sis190_mii_probe(dev);
+ if (rc < 0)
+ goto err_release_board;
+
rc = register_netdev(dev);
if (rc < 0)
goto err_release_board;
- pci_set_drvdata(pdev, dev);
- rc = sis190_mii_probe(dev);
yes mii probe should be moved, but pci_set_drvdata() should be the very
last thing to occur.
Jeff
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html