ChangeSet 1.1347.1.3, 2003/10/13 11:07:23-07:00, greg@kroah.com PCI: fix up probe functions for OSS drivers Can not be marked __init, must be marked __devinit or not at all. If it is marked __init, then oops can happen by a user writing to the "new_id" file from sysfs. sound/oss/ali5455.c | 8 ++++---- sound/oss/i810_audio.c | 6 +++--- sound/oss/maestro3.c | 4 ++-- sound/oss/trident.c | 4 ++-- sound/oss/via82cxxx_audio.c | 10 +++++----- 5 files changed, 16 insertions(+), 16 deletions(-) diff -Nru a/sound/oss/ali5455.c b/sound/oss/ali5455.c --- a/sound/oss/ali5455.c Wed Oct 15 11:18:41 2003 +++ b/sound/oss/ali5455.c Wed Oct 15 11:18:41 2003 @@ -3228,7 +3228,7 @@ /* AC97 codec initialisation. */ -static int __init ali_ac97_init(struct ali_card *card) +static int __devinit ali_ac97_init(struct ali_card *card) { int num_ac97 = 0; int total_channels = 0; @@ -3333,7 +3333,7 @@ return num_ac97; } -static void __init ali_configure_clocking(void) +static void __devinit ali_configure_clocking(void) { struct ali_card *card; struct ali_state *state; @@ -3403,8 +3403,8 @@ /* install the driver, we do not allocate hardware channel nor DMA buffer now, they are defered until "ACCESS" time (in prog_dmabuf called by open/read/write/ioctl/mmap) */ -static int __init ali_probe(struct pci_dev *pci_dev, const struct pci_device_id - *pci_id) +static int __devinit ali_probe(struct pci_dev *pci_dev, + const struct pci_device_id *pci_id) { struct ali_card *card; if (pci_enable_device(pci_dev)) diff -Nru a/sound/oss/i810_audio.c b/sound/oss/i810_audio.c --- a/sound/oss/i810_audio.c Wed Oct 15 11:18:41 2003 +++ b/sound/oss/i810_audio.c Wed Oct 15 11:18:41 2003 @@ -2807,7 +2807,7 @@ return 1; } -static int __init i810_ac97_init(struct i810_card *card) +static int __devinit i810_ac97_init(struct i810_card *card) { int num_ac97 = 0; int ac97_id; @@ -3011,7 +3011,7 @@ return num_ac97; } -static void __init i810_configure_clocking (void) +static void __devinit i810_configure_clocking (void) { struct i810_card *card; struct i810_state *state; @@ -3083,7 +3083,7 @@ /* install the driver, we do not allocate hardware channel nor DMA buffer now, they are defered until "ACCESS" time (in prog_dmabuf called by open/read/write/ioctl/mmap) */ -static int __init i810_probe(struct pci_dev *pci_dev, const struct pci_device_id *pci_id) +static int __devinit i810_probe(struct pci_dev *pci_dev, const struct pci_device_id *pci_id) { struct i810_card *card; diff -Nru a/sound/oss/maestro3.c b/sound/oss/maestro3.c --- a/sound/oss/maestro3.c Wed Oct 15 11:18:41 2003 +++ b/sound/oss/maestro3.c Wed Oct 15 11:18:41 2003 @@ -2297,7 +2297,7 @@ #endif } -static int __init m3_codec_install(struct m3_card *card) +static int __devinit m3_codec_install(struct m3_card *card) { struct ac97_codec *codec; @@ -2594,7 +2594,7 @@ /* * great day! this function is ugly as hell. */ -static int __init m3_probe(struct pci_dev *pci_dev, const struct pci_device_id *pci_id) +static int __devinit m3_probe(struct pci_dev *pci_dev, const struct pci_device_id *pci_id) { u32 n; int i; diff -Nru a/sound/oss/trident.c b/sound/oss/trident.c --- a/sound/oss/trident.c Wed Oct 15 11:18:41 2003 +++ b/sound/oss/trident.c Wed Oct 15 11:18:41 2003 @@ -3957,7 +3957,7 @@ } /* AC97 codec initialisation. */ -static int __init trident_ac97_init(struct trident_card *card) +static int __devinit trident_ac97_init(struct trident_card *card) { int num_ac97 = 0; unsigned long ready_2nd = 0; @@ -4120,7 +4120,7 @@ /* install the driver, we do not allocate hardware channel nor DMA buffer now, they are defered until "ACCESS" time (in prog_dmabuf called by open/read/write/ioctl/mmap) */ -static int __init trident_probe(struct pci_dev *pci_dev, const struct pci_device_id *pci_id) +static int __devinit trident_probe(struct pci_dev *pci_dev, const struct pci_device_id *pci_id) { unsigned long iobase; struct trident_card *card; diff -Nru a/sound/oss/via82cxxx_audio.c b/sound/oss/via82cxxx_audio.c --- a/sound/oss/via82cxxx_audio.c Wed Oct 15 11:18:41 2003 +++ b/sound/oss/via82cxxx_audio.c Wed Oct 15 11:18:41 2003 @@ -1642,7 +1642,7 @@ }; -static int __init via_ac97_reset (struct via_info *card) +static int __devinit via_ac97_reset (struct via_info *card) { struct pci_dev *pdev = card->pdev; u8 tmp8; @@ -1752,7 +1752,7 @@ } -static int __init via_ac97_init (struct via_info *card) +static int __devinit via_ac97_init (struct via_info *card) { int rc; u16 tmp16; @@ -2070,7 +2070,7 @@ }; -static int __init via_dsp_init (struct via_info *card) +static int __devinit via_dsp_init (struct via_info *card) { u8 tmp8; @@ -3394,7 +3394,7 @@ * */ -static int __init via_init_one (struct pci_dev *pdev, const struct pci_device_id *id) +static int __devinit via_init_one (struct pci_dev *pdev, const struct pci_device_id *id) { #ifdef CONFIG_MIDI_VIA82CXXX u8 r42; @@ -3772,7 +3772,7 @@ } -static int __init via_card_init_proc (struct via_info *card) +static int __devinit via_card_init_proc (struct via_info *card) { char s[32]; int rc;