]> git.hungrycats.org Git - linux/commitdiff
[PATCH] floppy oops fix
authorAndrew Morton <akpm@osdl.org>
Sat, 6 Mar 2004 16:52:03 +0000 (08:52 -0800)
committerJaroslav Kysela <perex@suse.cz>
Sat, 6 Mar 2004 16:52:03 +0000 (08:52 -0800)
From: Zwane Mwaikambo <zwane@linuxpower.ca>

It looks like a block request snuck through before we had initialised the
motor_off_timer timers.  So I pushed the timer init earlier.

drivers/block/floppy.c

index a2c30ede8cc039d7a930154b2fe48d9c707bf722..8e05b64feeb250c94dddc8c1a13e4ca75995f1e4 100644 (file)
@@ -4242,6 +4242,15 @@ int __init floppy_init(void)
                disks[i] = alloc_disk(1);
                if (!disks[i])
                        goto Enomem;
+
+               disks[i]->major = FLOPPY_MAJOR;
+               disks[i]->first_minor = TOMINOR(i);
+               disks[i]->fops = &floppy_fops;
+               sprintf(disks[i]->disk_name, "fd%d", i);
+
+               init_timer(&motor_off_timer[i]);
+               motor_off_timer[i].data = i;
+               motor_off_timer[i].function = motor_off_callback;
        }
 
        devfs_mk_dir ("floppy");
@@ -4255,13 +4264,6 @@ int __init floppy_init(void)
                goto fail_queue;
        }
 
-       for (i=0; i<N_DRIVE; i++) {
-               disks[i]->major = FLOPPY_MAJOR;
-               disks[i]->first_minor = TOMINOR(i);
-               disks[i]->fops = &floppy_fops;
-               sprintf(disks[i]->disk_name, "fd%d", i);
-       }
-
        blk_register_region(MKDEV(FLOPPY_MAJOR, 0), 256, THIS_MODULE,
                                floppy_find, NULL, NULL);
 
@@ -4366,9 +4368,6 @@ int __init floppy_init(void)
        }
        
        for (drive = 0; drive < N_DRIVE; drive++) {
-               init_timer(&motor_off_timer[drive]);
-               motor_off_timer[drive].data = drive;
-               motor_off_timer[drive].function = motor_off_callback;
                if (!(allowed_drive_mask & (1 << drive)))
                        continue;
                if (fdc_state[FDC(drive)].version == FDC_NONE)