if ((stat & I365_CS_DETECT) && (stat & I365_CS_POWERON) &&
        (i365_get(sock, I365_INTCTL) & I365_PC_IOCARD) &&
        (i365_get(sock, I365_ADDRWIN) & I365_ENA_IO(0)) &&
-       (check_region(start, stop-start+1) != 0) &&
-       ((start & 0xfeef) != 0x02e8))
-       return 1;
-    else
-       return 0;
+       ((start & 0xfeef) != 0x02e8)) {
+       if (!request_region(start, stop-start+1, "i82365"))
+           return 1;
+       release_region(start, stop-start+1);
+    }
+
+    return 0;
 }
 
 /*====================================================================*/
     struct i82365_socket *t = &socket[sockets-ns];
 
     base = sockets-ns;
-    if (t->ioaddr > 0) request_region(t->ioaddr, 2, "i82365");
+    if (t->ioaddr > 0) {
+       if (!request_region(t->ioaddr, 2, "i82365")) {
+           printk(KERN_ERR "i82365: IO region conflict at %#lx, not available\n",
+                       t->ioaddr);
+           return;
+       }
+    }
     
     if (base == 0) printk("\n");
     printk(KERN_INFO "  %s", pcic[type].name);
     }
 #endif
 
-    if (check_region(i365_base, 2) != 0) {
+    if (!request_region(i365_base, 2, "i82365")) {
        if (sockets == 0)
            printk("port conflict at %#lx\n", i365_base);
        return;
        i365_set(i, I365_CSCINT, 0);
        release_region(socket[i].ioaddr, 2);
     }
+    release_region(i365_base, 2);
 #ifdef CONFIG_PNP
     if (i82365_pnpdev)
                pnp_disable_dev(i82365_pnpdev);