diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/net/appletalk/ltpc.c linux-2.5/drivers/net/appletalk/ltpc.c
--- bk-linus/drivers/net/appletalk/ltpc.c	2002-11-21 02:16:34.000000000 +0000
+++ linux-2.5/drivers/net/appletalk/ltpc.c	2002-11-21 17:59:34.000000000 +0000
@@ -1063,26 +1063,39 @@ int __init ltpc_probe(struct net_device 
 	int autoirq;
 	unsigned long flags;
 	unsigned long f;
+	int portfound=0;
 
 	SET_MODULE_OWNER(dev);
 
 	save_flags(flags);
 
 	/* probe for the I/O port address */
-	if (io != 0x240 && !check_region(0x220,8)) {
+	if (io != 0x240 && request_region(0x220,8,"ltpc")) {
 		x = inb_p(0x220+6);
-		if ( (x!=0xff) && (x>=0xf0) ) io = 0x220;
+		if ( (x!=0xff) && (x>=0xf0) ) {
+			io = 0x220;
+			portfound=1;
+		}
+		else {
+			release_region(0x220,8);
+		}
 	}
 	
-	if (io != 0x220 && !check_region(0x240,8)) {
+	if (io != 0x220 && request_region(0x240,8,"ltpc")) {
 		y = inb_p(0x240+6);
-		if ( (y!=0xff) && (y>=0xf0) ) io = 0x240;
+		if ( (y!=0xff) && (y>=0xf0) ){ 
+			io = 0x240;
+			portfound=1;
+		}
+		else {
+			release_region(0x240,8);
+		}
 	} 
 
-	if(io) {
-		/* found it, now grab it */
-		request_region(io,8,"ltpc");
-	} else {
+	if(io && !portfound && request_region(io,8,"ltpc")){
+		portfound = 1;
+	}
+	if(!portfound) {
 		/* give up in despair */
 		printk ("LocalTalk card not found; 220 = %02x, 240 = %02x.\n",
 			x,y);
