diff options
author | Stephen Hemminger <shemminger@osdl.org> | 2006-01-06 19:57:39 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2006-01-09 10:32:40 -0500 |
commit | 17fa6e2f115ad734ef802b663071159a1a64d06f (patch) | |
tree | 9cd0ca9b3bb4c14e2441637b84c1dc8e70f5bdbb | |
parent | 5367f2d67c7d0bf1faae90e6e7b4e2ac3c9b5e0f (diff) |
[PATCH] sk98lin: routine called from probe marked __init
Sk98lin driver has a routine marked __init that is called from
the probe code. If using pci hotplug, this could be called after
the initialization so it needs to be marked __devinit.
So if you hot added a sk98lin board, the kernel would crash.
I don't have hot plug hardware to actually try this feat.
Also, there are two routines, only called from SkGeBoardInit that can
be marked __devinit.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
-rw-r--r-- | drivers/net/sk98lin/skge.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/net/sk98lin/skge.c b/drivers/net/sk98lin/skge.c index 9a76ac180b11..3302d644011f 100644 --- a/drivers/net/sk98lin/skge.c +++ b/drivers/net/sk98lin/skge.c | |||
@@ -282,10 +282,11 @@ SK_U32 Val) /* pointer to store the read value */ | |||
282 | * Description: | 282 | * Description: |
283 | * This function initialize the PCI resources and IO | 283 | * This function initialize the PCI resources and IO |
284 | * | 284 | * |
285 | * Returns: N/A | 285 | * Returns: |
286 | * | 286 | * 0 - indicate everything worked ok. |
287 | * != 0 - error indication | ||
287 | */ | 288 | */ |
288 | int SkGeInitPCI(SK_AC *pAC) | 289 | static __devinit int SkGeInitPCI(SK_AC *pAC) |
289 | { | 290 | { |
290 | struct SK_NET_DEVICE *dev = pAC->dev[0]; | 291 | struct SK_NET_DEVICE *dev = pAC->dev[0]; |
291 | struct pci_dev *pdev = pAC->PciDev; | 292 | struct pci_dev *pdev = pAC->PciDev; |
@@ -492,7 +493,7 @@ module_param_array(AutoSizing, charp, NULL, 0); | |||
492 | * 0, if everything is ok | 493 | * 0, if everything is ok |
493 | * !=0, on error | 494 | * !=0, on error |
494 | */ | 495 | */ |
495 | static int __init SkGeBoardInit(struct SK_NET_DEVICE *dev, SK_AC *pAC) | 496 | static int __devinit SkGeBoardInit(struct SK_NET_DEVICE *dev, SK_AC *pAC) |
496 | { | 497 | { |
497 | short i; | 498 | short i; |
498 | unsigned long Flags; | 499 | unsigned long Flags; |
@@ -633,8 +634,7 @@ SK_BOOL DualNet; | |||
633 | * SK_TRUE, if all memory could be allocated | 634 | * SK_TRUE, if all memory could be allocated |
634 | * SK_FALSE, if not | 635 | * SK_FALSE, if not |
635 | */ | 636 | */ |
636 | static SK_BOOL BoardAllocMem( | 637 | static __devinit SK_BOOL BoardAllocMem(SK_AC *pAC) |
637 | SK_AC *pAC) | ||
638 | { | 638 | { |
639 | caddr_t pDescrMem; /* pointer to descriptor memory area */ | 639 | caddr_t pDescrMem; /* pointer to descriptor memory area */ |
640 | size_t AllocLength; /* length of complete descriptor area */ | 640 | size_t AllocLength; /* length of complete descriptor area */ |
@@ -727,8 +727,7 @@ size_t AllocLength; /* length of complete descriptor area */ | |||
727 | * | 727 | * |
728 | * Returns: N/A | 728 | * Returns: N/A |
729 | */ | 729 | */ |
730 | static void BoardInitMem( | 730 | static __devinit void BoardInitMem(SK_AC *pAC) |
731 | SK_AC *pAC) /* pointer to adapter context */ | ||
732 | { | 731 | { |
733 | int i; /* loop counter */ | 732 | int i; /* loop counter */ |
734 | int RxDescrSize; /* the size of a rx descriptor rounded up to alignment*/ | 733 | int RxDescrSize; /* the size of a rx descriptor rounded up to alignment*/ |