linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] drivers/scsi/advansys.c check_region() fix
@ 2003-12-30 13:44 Omkhar Arasaratnam
  2004-01-07 23:26 ` Rusty Russell
  0 siblings, 1 reply; 3+ messages in thread
From: Omkhar Arasaratnam @ 2003-12-30 13:44 UTC (permalink / raw)
  To: trivial; +Cc: gene.heskett, linux-kernel

Another trivial check_region() fix verified by Gene


--- 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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] drivers/scsi/advansys.c check_region() fix
  2003-12-30 13:44 [PATCH] drivers/scsi/advansys.c check_region() fix Omkhar Arasaratnam
@ 2004-01-07 23:26 ` Rusty Russell
  2004-01-08  4:09   ` Gene Heskett
  0 siblings, 1 reply; 3+ messages in thread
From: Rusty Russell @ 2004-01-07 23:26 UTC (permalink / raw)
  To: Omkhar Arasaratnam; +Cc: gene.heskett, linux-kernel

In message <20031230134433.GA22187@omkhar.ibm.com> you write:
> Another trivial check_region() fix verified by Gene

And almost certainly wrong.

The *point* of request_region() is that you do it before any I/O to
the region.

So you can't release it before calling AscGetChipVersion().

Converting this driver is quite a bit of work, since you have to trace
down every path which uses the region and make sure it's covered.  The
fact that it's formatted like an angry haiku doesn't help.

Rusty.
--
  Anyone who quotes me in their sig is an idiot. -- Rusty Russell.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] drivers/scsi/advansys.c check_region() fix
  2004-01-07 23:26 ` Rusty Russell
@ 2004-01-08  4:09   ` Gene Heskett
  0 siblings, 0 replies; 3+ messages in thread
From: Gene Heskett @ 2004-01-08  4:09 UTC (permalink / raw)
  To: Rusty Russell, Omkhar Arasaratnam; +Cc: linux-kernel

On Wednesday 07 January 2004 18:26, Rusty Russell wrote:
>In message <20031230134433.GA22187@omkhar.ibm.com> you write:
>> Another trivial check_region() fix verified by Gene
>
>And almost certainly wrong.

I'm the "Gene", Rusty.  What symptoms would I see if its wrong?  
Memory leak?  Instability?  My dog falls over before his time?  My 
pickup throws a rod?

In my case, its only running a small 4 tape Seagate changer, so it 
doesn't get a lot of exersize other than by amanda's nightly run.

>The *point* of request_region() is that you do it before any I/O to
>the region.
>
>So you can't release it before calling AscGetChipVersion().
>
>Converting this driver is quite a bit of work, since you have to
> trace down every path which uses the region and make sure it's
> covered.  The fact that it's formatted like an angry haiku doesn't
> help.

I noticed, gawd, that looks like a bowl of spagetti and I'm nowhere 
near the coder you fellows are.  But it did get rid of the compiler 
warnings about check_region().

-- 
Cheers, Gene
AMD K6-III@500mhz 320M
Athlon1600XP@1400mhz  512M
99.22% setiathome rank, not too shabby for a WV hillbilly
Yahoo.com attornies please note, additions to this message
by Gene Heskett are:
Copyright 2003 by Maurice Eugene Heskett, all rights reserved.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-01-08  4:09 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-12-30 13:44 [PATCH] drivers/scsi/advansys.c check_region() fix Omkhar Arasaratnam
2004-01-07 23:26 ` Rusty Russell
2004-01-08  4:09   ` Gene Heskett

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).