diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/char/ftape/lowlevel/fdc-io.c linux-2.5/drivers/char/ftape/lowlevel/fdc-io.c
--- bk-linus/drivers/char/ftape/lowlevel/fdc-io.c	2002-11-21 02:14:10.000000000 +0000
+++ linux-2.5/drivers/char/ftape/lowlevel/fdc-io.c	2002-11-21 17:57:55.000000000 +0000
@@ -1209,27 +1209,35 @@ static int fdc_request_regions(void)
 	TRACE_FUN(ft_t_flow);
 
 	if (ft_mach2 || ft_probe_fc10) {
-		if (check_region(fdc.sra, 8) < 0) {
+		if (!request_region(fdc.sra, 8, "fdc (ft)")) 
+			{
 #ifndef BROKEN_FLOPPY_DRIVER
 			TRACE_EXIT -EBUSY;
 #else
-			TRACE(ft_t_warn,
-"address 0x%03x occupied (by floppy driver?), using it anyway", fdc.sra);
+			TRACE(ft_t_warn, "address 0x%03x occupied (by floppy driver?), using it anyway", fdc.sra);
 #endif
-		}
-		request_region(fdc.sra, 8, "fdc (ft)");
-	} else {
-		if (check_region(fdc.sra, 6) < 0 || 
-		    check_region(fdc.dir, 1) < 0) {
+			}
+		
+		if (!request_region(fdc.sra, 6, "fdc (ft)"))
+			{
+			release_region(fdc.sra, 8);
 #ifndef BROKEN_FLOPPY_DRIVER
 			TRACE_EXIT -EBUSY;
 #else
-			TRACE(ft_t_warn,
-"address 0x%03x occupied (by floppy driver?), using it anyway", fdc.sra);
+			TRACE(ft_t_warn, "address 0x%03x occupied (by floppy driver?), using it anyway", fdc.sra);
 #endif
-		}
-		request_region(fdc.sra, 6, "fdc (ft)");
-		request_region(fdc.sra + 7, 1, "fdc (ft)");
+			}
+	
+		if (!request_region(fdc.sra+7, 1, "fdc (ft)"))
+			{
+			release_region(fdc.sra, 8);
+			release_region(fdc.sra, 6);
+#ifndef BROKEN_FLOPPY_DRIVER
+			TRACE_EXIT -EBUSY;
+#else
+			TRACE(ft_t_warn, "address 0x%03x occupied (by floppy driver?), using it anyway", fdc.sra);
+#endif
+			}
 	}
 	TRACE_EXIT 0;
 }
