Messages in this thread Patch in this message |  | | | Date | Tue, 30 Dec 2003 01:45:21 -0500 | | From | Omkhar Arasaratnam <> | | Subject | Re: [PATCH] drivers/cdrom/sjcd.c check_region() fix |
On Tue, Dec 30, 2003 at 01:12:00AM -0500, Gene Heskett wrote: > On Monday 29 December 2003 14:57, Omkhar Arasaratnam wrote: > >Here is another check_region fix, this time for sjcd.c > > > >--- /usr/src/linux-2.6.0/drivers/cdrom/sjcd.c 2003-12-17 > > 21:59:05.000000000 -0500 +++ drivers/cdrom/sjcd.c 2003-12-29 > > 14:52:05.000000000 -0500 @@ -1700,12 +1700,13 @@ > > sprintf(sjcd_disk->disk_name, "sjcd"); > > sprintf(sjcd_disk->devfs_name, "sjcd"); > > > >- if (check_region(sjcd_base, 4)) { > >+ if (!request_region(sjcd_base, 4,"sjcd")) { > > printk > > ("SJCD: Init failed, I/O port (%X) is already in use\n", > > sjcd_base); > > goto out2; > > } > >+ release_region(sjcd_base,4); > > > > /* > > * Check for card. Since we are booting now, we can't use standard > > I've got two of those check_region() warnings in advansys.c. > > Would it be appropriate to do a similar fix to it? Believe it or not I was actually working on advant.c as well. That's a big file. I was going to leave it till the AM to post after doing a final sanity check (it's almost 2am local time :) I believe this _should_ work - perhaps you can advise if line 5390 (after applying my patch) will fail because of a duplicate request_region()... Either way here is my patch:
--- linux-clean/drivers/scsi/advansys.c.org 2003-12-29 19:35:26.000000000 -0500 +++ linux-clean/drivers/scsi/advansys.c 2003-12-30 01:37:01.000000000 -0500 @@ -4619,7 +4619,7 @@ ASC_DBG1(1, "advansys_detect: probing I/O port 0x%x...\n", iop); - if (check_region(iop, ASC_IOADR_GAP) != 0) { + if (!request_region(iop, ASC_IOADR_GAP, "advansys")) { printk( "AdvanSys SCSI: specified I/O Port 0x%X is busy\n", iop); /* Don't try this I/O port twice. */ @@ -4630,6 +4630,7 @@ "AdvanSys SCSI: specified I/O Port 0x%X has no adapter\n", iop); /* Don't try this I/O port twice. */ asc_ioport[ioport] = 0; + release_region(iop, ASC_IOADR_GAP); goto ioport_try_again; } else { /* @@ -4647,6 +4648,7 @@ * 'ioport' past this board. */ ioport++; + release_region(iop, ASC_IOADR_GAP); goto ioport_try_again; } } @@ -10003,10 +10005,11 @@ } for (; i < ASC_IOADR_TABLE_MAX_IX; i++) { iop_base = _asc_def_iop_base[i]; - if (check_region(iop_base, ASC_IOADR_GAP) != 0) { + if (!request_region(iop_base, ASC_IOADR_GAP, "advansys")) { ASC_DBG1(1, - "AscSearchIOPortAddr11: check_region() failed I/O port 0x%x\n", + "AscSearchIOPortAddr11: request_region() failed I/O port 0x%x\n", iop_base); + release_region(iop_base, ASC_IOADR_GAP); continue; } ASC_DBG1(1, "AscSearchIOPortAddr11: probing I/O port 0x%x\n", iop_base); O - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |