patch-2.4.10 linux/drivers/block/floppy.c
Next file: linux/drivers/block/genhd.c
Previous file: linux/drivers/block/cpqarray.c
Back to the patch index
Back to the overall index
- Lines: 59
- Date:
Mon Sep 10 12:42:31 2001
- Orig file:
v2.4.9/linux/drivers/block/floppy.c
- Orig date:
Sun Aug 12 13:27:59 2001
diff -u --recursive --new-file v2.4.9/linux/drivers/block/floppy.c linux/drivers/block/floppy.c
@@ -124,6 +124,11 @@
* - s/suser/capable/
*/
+/*
+ * 2001/08/26 -- Paul Gortmaker - fix insmod oops on machines with no
+ * floppy controller (lingering task on list after module is gone... boom.)
+ */
+
#define FLOPPY_SANITY_CHECK
#undef FLOPPY_SILENT_DCL_CLEAR
@@ -3492,6 +3497,10 @@
case BLKGETSIZE:
ECALL(get_floppy_geometry(drive, type, &g));
return put_user(g->size, (long *) param);
+
+ case BLKGETSIZE64:
+ ECALL(get_floppy_geometry(drive, type, &g));
+ return put_user((u64)g->size << 9, (u64 *) param);
/* BLKRRPART is not defined as floppies don't have
* partition tables */
}
@@ -4144,7 +4153,7 @@
return 0;
}
-static int have_no_fdc= -EIO;
+static int have_no_fdc= -ENODEV;
int __init floppy_init(void)
@@ -4200,7 +4209,6 @@
del_timer(&fd_timeout);
blk_cleanup_queue(BLK_DEFAULT_QUEUE(MAJOR_NR));
devfs_unregister_blkdev(MAJOR_NR,"fd");
- del_timer(&fd_timeout);
return -EBUSY;
}
@@ -4259,9 +4267,7 @@
if (have_no_fdc)
{
DPRINT("no floppy controllers found\n");
- floppy_tq.routine = (void *)(void *) empty;
- mark_bh(IMMEDIATE_BH);
- schedule();
+ run_task_queue(&tq_immediate);
if (usage_count)
floppy_release_irq_and_dma();
blk_cleanup_queue(BLK_DEFAULT_QUEUE(MAJOR_NR));
@@ -4472,6 +4478,7 @@
MODULE_PARM(FLOPPY_DMA,"i");
MODULE_AUTHOR("Alain L. Knaff");
MODULE_SUPPORTED_DEVICE("fd");
+MODULE_LICENSE("GPL");
#else
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)