* [Fwd: [patch] fix via-velocity oopses]
@ 2004-06-18 21:00 Jeff Garzik
0 siblings, 0 replies; only message in thread
From: Jeff Garzik @ 2004-06-18 21:00 UTC (permalink / raw)
To: Alan Cox, Linux Kernel
[-- Attachment #1: Type: text/plain, Size: 64 bytes --]
FYI (since there are other via-velocity changes floating about)
[-- Attachment #2: [patch] fix via-velocity oopses --]
[-- Type: message/rfc822, Size: 4091 bytes --]
From: Andrew Morton <akpm@osdl.org>
To: Jeff Garzik <jgarzik@pobox.com>
Subject: [patch] fix via-velocity oopses
Date: Thu, 17 Jun 2004 20:47:39 -0700
Message-ID: <20040617204739.7780ddc3.akpm@osdl.org>
- Don't register the inet_addr notifier if the hardware is absent. It
oopses when other interfaces are being upped.
- Mark velocity_remove1() as __devexit_p in the pci_driver table.
- c99ification.
Signed-off-by: Andrew Morton <akpm@osdl.org>
---
25-akpm/drivers/net/via-velocity.c | 29 ++++++++++++++++++-----------
1 files changed, 18 insertions(+), 11 deletions(-)
diff -puN drivers/net/via-velocity.c~via-velocity-oops-fix drivers/net/via-velocity.c
--- 25/drivers/net/via-velocity.c~via-velocity-oops-fix 2004-06-02 23:14:37.933999272 -0700
+++ 25-akpm/drivers/net/via-velocity.c 2004-06-02 23:14:37.939998360 -0700
@@ -269,8 +269,9 @@ static int velocity_resume(struct pci_de
static int velocity_netdev_event(struct notifier_block *nb, unsigned long notification, void *ptr);
static struct notifier_block velocity_inetaddr_notifier = {
- notifier_call:velocity_netdev_event,
+ .notifier_call = velocity_netdev_event,
};
+static int velocity_notifier_registered;
#endif /* CONFIG_PM */
@@ -776,6 +777,12 @@ static int __devinit velocity_found1(str
pci_set_power_state(pdev, 3);
out:
+#ifdef CONFIG_PM
+ if (ret == 0 && !velocity_notifier_registered) {
+ velocity_notifier_registered = 1;
+ register_inetaddr_notifier(&velocity_inetaddr_notifier);
+ }
+#endif
return ret;
err_iounmap:
@@ -2123,13 +2130,13 @@ static int velocity_ioctl(struct net_dev
*/
static struct pci_driver velocity_driver = {
- name:VELOCITY_NAME,
- id_table:velocity_id_table,
- probe:velocity_found1,
- remove:velocity_remove1,
+ .name = VELOCITY_NAME,
+ .id_table = velocity_id_table,
+ .probe = velocity_found1,
+ .remove = __devexit_p(velocity_remove1),
#ifdef CONFIG_PM
- suspend:velocity_suspend,
- resume:velocity_resume,
+ .suspend = velocity_suspend,
+ .resume = velocity_resume,
#endif
};
@@ -2147,9 +2154,6 @@ static int __init velocity_init_module(v
int ret;
ret = pci_module_init(&velocity_driver);
-#ifdef CONFIG_PM
- register_inetaddr_notifier(&velocity_inetaddr_notifier);
-#endif
return ret;
}
@@ -2165,7 +2169,10 @@ static int __init velocity_init_module(v
static void __exit velocity_cleanup_module(void)
{
#ifdef CONFIG_PM
- unregister_inetaddr_notifier(&velocity_inetaddr_notifier);
+ if (velocity_notifier_registered) {
+ unregister_inetaddr_notifier(&velocity_inetaddr_notifier);
+ velocity_notifier_registered = 0;
+ }
#endif
pci_unregister_driver(&velocity_driver);
}
_
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2004-06-18 21:07 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-06-18 21:00 [Fwd: [patch] fix via-velocity oopses] Jeff Garzik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox