diff options
author | Stephen Hemminger <shemminger@osdl.org> | 2006-01-06 16:57:39 -0800 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2006-01-09 10:32:40 -0500 |
commit | 17fa6e2f115ad734ef802b663071159a1a64d06f (patch) | |
tree | 9cd0ca9b3bb4c14e2441637b84c1dc8e70f5bdbb /drivers/net | |
parent | 5367f2d67c7d0bf1faae90e6e7b4e2ac3c9b5e0f (diff) | |
download | op-kernel-dev-17fa6e2f115ad734ef802b663071159a1a64d06f.zip op-kernel-dev-17fa6e2f115ad734ef802b663071159a1a64d06f.tar.gz |
[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>
Diffstat (limited to 'drivers/net')
-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 9a76ac1..3302d64 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 */ * Description: * This function initialize the PCI resources and IO * - * Returns: N/A - * + * Returns: + * 0 - indicate everything worked ok. + * != 0 - error indication */ -int SkGeInitPCI(SK_AC *pAC) +static __devinit int SkGeInitPCI(SK_AC *pAC) { struct SK_NET_DEVICE *dev = pAC->dev[0]; struct pci_dev *pdev = pAC->PciDev; @@ -492,7 +493,7 @@ module_param_array(AutoSizing, charp, NULL, 0); * 0, if everything is ok * !=0, on error */ -static int __init SkGeBoardInit(struct SK_NET_DEVICE *dev, SK_AC *pAC) +static int __devinit SkGeBoardInit(struct SK_NET_DEVICE *dev, SK_AC *pAC) { short i; unsigned long Flags; @@ -633,8 +634,7 @@ SK_BOOL DualNet; * SK_TRUE, if all memory could be allocated * SK_FALSE, if not */ -static SK_BOOL BoardAllocMem( -SK_AC *pAC) +static __devinit SK_BOOL BoardAllocMem(SK_AC *pAC) { caddr_t pDescrMem; /* pointer to descriptor memory area */ size_t AllocLength; /* length of complete descriptor area */ @@ -727,8 +727,7 @@ size_t AllocLength; /* length of complete descriptor area */ * * Returns: N/A */ -static void BoardInitMem( -SK_AC *pAC) /* pointer to adapter context */ +static __devinit void BoardInitMem(SK_AC *pAC) { int i; /* loop counter */ int RxDescrSize; /* the size of a rx descriptor rounded up to alignment*/ |