]> git.hungrycats.org Git - linux/commitdiff
[PATCH] fix OOPS for multiple IDE PCI modules and CONFIG_PROC_FS=y
authorBartlomiej Zolnierkiewicz <b.zolnierkiewicz@elka.pw.edu.pl>
Sun, 8 Feb 2004 23:36:39 +0000 (15:36 -0800)
committerNathan Scott <nathans@sgi.com>
Sun, 8 Feb 2004 23:36:39 +0000 (15:36 -0800)
The problem is that when loading next IDE PCI module memory used by
previously registered ide_pci_host_proc_list entry is already unmapped
(because of __{dev}initdata).  This doesn't happen in built-in case
because this memory is freed after all drivers are initialized.
Fix it by removing __{dev}initdata from all ide_pci_host_proc_t.

Thanks to Andre Tomt <andre@tomt.net> for help in debugging this.

18 files changed:
drivers/ide/pci/aec62xx.h
drivers/ide/pci/alim15x3.h
drivers/ide/pci/amd74xx.h
drivers/ide/pci/cmd64x.h
drivers/ide/pci/cs5520.h
drivers/ide/pci/cs5530.h
drivers/ide/pci/hpt34x.h
drivers/ide/pci/hpt366.h
drivers/ide/pci/pdc202xx_new.h
drivers/ide/pci/pdc202xx_old.h
drivers/ide/pci/piix.h
drivers/ide/pci/sc1200.h
drivers/ide/pci/serverworks.h
drivers/ide/pci/siimage.h
drivers/ide/pci/sis5513.h
drivers/ide/pci/slc90e66.h
drivers/ide/pci/triflex.h
drivers/ide/pci/via82cxxx.h

index f0dd168f04d0a269bd2cfda81d3c7f7a69cae4e2..c5584c41093cbf65aab8076177dd6aee93b759e5 100644 (file)
@@ -78,7 +78,7 @@ static u8 aec62xx_proc;
 
 static int aec62xx_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t aec62xx_procs[] __initdata = {
+static ide_pci_host_proc_t aec62xx_procs[] = {
        {
                .name           = "aec62xx",
                .set            = 1,
index 30c752f773cb92274154ce8889dc869636f7ca68..2111305e7e10041c19fc26d5b0240b59991b0411 100644 (file)
@@ -15,7 +15,7 @@ static u8 ali_proc;
 
 static int ali_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t ali_procs[] __initdata = {
+static ide_pci_host_proc_t ali_procs[] = {
        {
                .name           = "ali",
                .set            = 1,
index 56a3892b67efcec03a912d2f3bbf34e24cc9b777..2a570231e239d1ec8a3f68ad7ed024bb80bbba4f 100644 (file)
@@ -15,7 +15,7 @@ static u8 amd74xx_proc;
 
 static int amd74xx_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t amd74xx_procs[] __initdata = {
+static ide_pci_host_proc_t amd74xx_procs[] = {
        {
                .name           = "amd74xx",
                .set            = 1,
index 253c517e540f35b6dc20b94ac107918f2c64f8c9..50f7e17236c1f91a4017735e3c62e1cf9d243d19 100644 (file)
@@ -69,7 +69,7 @@ static u8 cmd64x_proc;
 static char * print_cmd64x_get_info(char *, struct pci_dev *, int);
 static int cmd64x_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t cmd64x_procs[] __initdata = {
+static ide_pci_host_proc_t cmd64x_procs[] = {
        {
                .name           = "cmd64x",
                .set            = 1,
index e5e65183db934b94572f07f1210d7239a4188757..33ebf1da34d04d28b4111f0185fe7433c9177816 100644 (file)
@@ -15,7 +15,7 @@ static u8 cs5520_proc;
 
 static int cs5520_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t cs5520_procs[] __initdata = {
+static ide_pci_host_proc_t cs5520_procs[] = {
        {
                .name           = "cs5520",
                .set            = 1,
index 942e26ae2e445b1f61839bd21d8d606899f29e46..aa1fba5c682a9affe293289dd05e2c6425a80edc 100644 (file)
@@ -15,7 +15,7 @@ static u8 cs5530_proc;
 
 static int cs5530_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t cs5530_procs[] __initdata = {
+static ide_pci_host_proc_t cs5530_procs[] = {
        {
                .name           = "cs5530",
                .set            = 1,
index 0bf33aa1fd51d2959a123227610b8d9f8e1622a9..6c8a2013086d6d2cbe312469820161cb3376d8e7 100644 (file)
@@ -21,7 +21,7 @@ static u8 hpt34x_proc;
 
 static int hpt34x_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t hpt34x_procs[] __initdata = {
+static ide_pci_host_proc_t hpt34x_procs[] = {
        {
                .name           = "hpt34x",
                .set            = 1,
index 5600f3ce04109d3f3722128181932453c63d12ef..bcc8b8e867292de4daacfd55f00ba990b49ffe0e 100644 (file)
@@ -424,7 +424,7 @@ static u8 hpt366_proc;
 
 static int hpt366_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t hpt366_procs[] __initdata = {
+static ide_pci_host_proc_t hpt366_procs[] = {
        {
                .name           = "hpt366",
                .set            = 1,
index 41008c14240484ee34e7c7cf13940da2534ab038..c05155332ab181017844306de3d5fb65b8595be6 100644 (file)
@@ -172,7 +172,7 @@ static u8 pdcnew_proc;
 
 static int pdcnew_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t pdcnew_procs[] __initdata = {
+static ide_pci_host_proc_t pdcnew_procs[] = {
        {
                .name           = "pdcnew",
                .set            = 1,
index b3b5388a5b8088381cb78f9c0b31cf4a0b8763e4..e3f0aaa047b3bc9e4398a15f59f64447f56d80f5 100644 (file)
@@ -207,7 +207,7 @@ static u8 pdc202xx_proc;
 
 static int pdc202xx_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t pdc202xx_procs[] __initdata = {
+static ide_pci_host_proc_t pdc202xx_procs[] = {
        {
                .name           = "pdc202xx",
                .set            = 1,
index 17268901b8f0312a550e030efbe083fe10365394..4f160e9ace9f706db388ddce544680487c4c297a 100644 (file)
@@ -17,7 +17,7 @@ static u8 piix_proc;
 
 static int piix_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t piix_procs[] __devinitdata = {
+static ide_pci_host_proc_t piix_procs[] = {
        {
                .name           = "piix",
                .set            = 1,
index 8714e5391446d3cf1cc768d6964630108d963cd8..09a3ff9442edf82f97ebfa2c6c0b4af30536a632 100644 (file)
@@ -15,7 +15,7 @@ static u8 sc1200_proc;
 
 static int sc1200_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t sc1200_procs[] __initdata = {
+static ide_pci_host_proc_t sc1200_procs[] = {
        {
                .name           = "sc1200",
                .set            = 1,
index aec835380e293d16113d88aeda1e69ccf3aadd2e..34c4c00de02a3356b923b81246f519299a6d06c7 100644 (file)
@@ -31,7 +31,7 @@ static u8 svwks_proc;
 
 static int svwks_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t svwks_procs[] __initdata = {
+static ide_pci_host_proc_t svwks_procs[] = {
 {
                .name           = "svwks",
                .set            = 1,
index e16b507efc4f88464956d38764935b9669d77a7d..166339f30fa3babdb099c777cee3b14f2c4bd573 100644 (file)
@@ -31,7 +31,7 @@ static int siimage_get_info(char *, char **, off_t, int);
 
 static u8 siimage_proc;
 
-static ide_pci_host_proc_t siimage_procs[] __initdata = {
+static ide_pci_host_proc_t siimage_procs[] = {
        {
                .name           = "siimage",
                .set            = 1,
index 29254a674dd19e7640eddc358b088c354cc75711..890b67a07e8b8ae59a9f4c869aefafeced777334 100644 (file)
@@ -15,7 +15,7 @@ static u8 sis_proc;
 
 static int sis_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t sis_procs[] __initdata = {
+static ide_pci_host_proc_t sis_procs[] = {
 {
                .name           = "sis",
                .set            = 1,
index 2ac8673373babb4e6b1491b3d22b25a6e72b2522..626f775ef2990127b201c10536dfc79ecd0ed533 100644 (file)
@@ -17,7 +17,7 @@ static u8 slc90e66_proc;
 
 static int slc90e66_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t slc90e66_procs[] __initdata = {
+static ide_pci_host_proc_t slc90e66_procs[] = {
        {
                .name           = "slc90e66",
                .set            = 1,
index b208926283ed0998a70e590a53a2c92a72ccc2f3..5bb7f12dd0cd42324f2dbfd13b05176a31643b71 100644 (file)
@@ -17,7 +17,7 @@ static void init_hwif_triflex(ide_hwif_t *);
 #ifdef CONFIG_PROC_FS
 static int triflex_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t triflex_proc __initdata = {
+static ide_pci_host_proc_t triflex_proc = {
        .name           = "triflex",
        .set            = 1,
        .get_info       = triflex_get_info,
index d60d5023420c9e5aa990fd0623dda5cc86d16ea0..0c1d390c5ba448d9e0830e978a7319acbaafd256 100644 (file)
@@ -15,7 +15,7 @@ static u8 via_proc;
 
 static int via_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t via_procs[] __initdata = {
+static ide_pci_host_proc_t via_procs[] = {
        {
                .name           = "via",
                .set            = 1,