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

Reply via email to