2007-05-30 08:18:46

by Bill Nottingham

[permalink] [raw]
Subject: [PATCH RFC] qla2xxx: fix timeout in qla2x00_down_timeout

iterations is unsigned, so it is impossible to get out of the loop
and return -ETIMEDOUT.

Signed-off-by: Bill Nottingham <[email protected]>

---

If the intention *is* to never fall out of the end of the loop, ignore
this, and just replace it with do {} while (1);.

--- drivers/scsi/qla2xxx/qla_os.c.foo 2007-05-30 04:07:52.000000000 -0400
+++ drivers/scsi/qla2xxx/qla_os.c 2007-05-30 04:08:31.000000000 -0400
@@ -2587,15 +2587,15 @@ qla2x00_down_timeout(struct semaphore *s
unsigned int iterations = jiffies_to_msecs(timeout)/100;

do {
if (!down_trylock(sema))
return 0;
if (msleep_interruptible(step))
break;
- } while (--iterations >= 0);
+ } while (--iterations > 0);

return -ETIMEDOUT;
}

/* Firmware interface routines. */

#define FW_BLOBS 5


2007-05-30 11:40:51

by Seokmann Ju

[permalink] [raw]
Subject: RE: [PATCH RFC] qla2xxx: fix timeout in qla2x00_down_timeout

Thanks for finding.
Acked-by: Seokmann Ju <[email protected]>

> -----Original Message-----
> From: Bill Nottingham [mailto:[email protected]]
> Sent: Wednesday, May 30, 2007 1:17 AM
> To: [email protected]
> Cc: Linux Driver; [email protected]
> Subject: [PATCH RFC] qla2xxx: fix timeout in qla2x00_down_timeout
>
> iterations is unsigned, so it is impossible to get out of the
> loop and return -ETIMEDOUT.
>
> Signed-off-by: Bill Nottingham <[email protected]>
>
> ---
>
> If the intention *is* to never fall out of the end of the
> loop, ignore this, and just replace it with do {} while (1);.
>
> --- drivers/scsi/qla2xxx/qla_os.c.foo 2007-05-30
> 04:07:52.000000000 -0400
> +++ drivers/scsi/qla2xxx/qla_os.c 2007-05-30
> 04:08:31.000000000 -0400
> @@ -2587,15 +2587,15 @@ qla2x00_down_timeout(struct semaphore *s
> unsigned int iterations = jiffies_to_msecs(timeout)/100;
>
> do {
> if (!down_trylock(sema))
> return 0;
> if (msleep_interruptible(step))
> break;
> - } while (--iterations >= 0);
> + } while (--iterations > 0);
>
> return -ETIMEDOUT;
> }
>
> /* Firmware interface routines. */
>
> #define FW_BLOBS 5
>