From: Trivial Patch Monkey From: Omkhar Arasaratnam check_region() fix --- /dev/null | 0 25-akpm/drivers/cdrom/cm206.c | 9 +++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff -puN drivers/cdrom/cm206.c~cm206-check_region-fix drivers/cdrom/cm206.c --- 25/drivers/cdrom/cm206.c~cm206-check_region-fix Fri Mar 12 13:52:20 2004 +++ 25-akpm/drivers/cdrom/cm206.c Fri Mar 12 13:52:20 2004 @@ -1389,7 +1389,7 @@ static struct gendisk *cm206_gendisk; Linus says it is too dangerous to use writes for probing, so we stick with pure reads for a while. Hope that 8 possible ranges, - check_region, 15 bits of one port and 6 of another make things + request_region, 15 bits of one port and 6 of another make things likely enough to accept the region on the first hit... */ int __init probe_base_port(int base) @@ -1400,13 +1400,15 @@ int __init probe_base_port(int base) if (base) b = e = base; for (base = b; base <= e; base += 0x10) { - if (check_region(base, 0x10)) + if (!request_region(base, 0x10,"cm206")) continue; for (i = 0; i < 3; i++) fool = inw(base + 2); /* empty possibly uart_receive_buffer */ if ((inw(base + 6) & 0xffef) != 0x0001 || /* line_status */ - (inw(base) & 0xad00) != 0) /* data status */ + (inw(base) & 0xad00) != 0) { /* data status */ + release_region(base,0x10); continue; + } return (base); } return 0; @@ -1444,7 +1446,6 @@ int __init cm206_init(void) return -EIO; } printk(" adapter at 0x%x", cm206_base); - request_region(cm206_base, 16, "cm206"); cd = (struct cm206_struct *) kmalloc(size, GFP_KERNEL); if (!cd) goto out_base; diff -puN -L drivers/cdrom/cm206.c.orig /dev/null /dev/null _