Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1567330 > unrolled thread
| Started by | Augusto Mecking Caringi <augustocaringi@gmail.com> |
|---|---|
| First post | 2017-01-26 12:20 +0100 |
| Last post | 2017-01-27 11:10 +0100 |
| Articles | 2 — 1 participant |
Back to article view | Back to linux.kernel
[PATCH] scsi: srp_transport: Fix 'always false comparison' in srp_tmo_valid() Augusto Mecking Caringi <augustocaringi@gmail.com> - 2017-01-26 12:20 +0100
Re: [PATCH] scsi: srp_transport: Fix 'always false comparison' in srp_tmo_valid() Augusto Mecking Caringi <augustocaringi@gmail.com> - 2017-01-27 11:10 +0100
| From | Augusto Mecking Caringi <augustocaringi@gmail.com> |
|---|---|
| Date | 2017-01-26 12:20 +0100 |
| Subject | [PATCH] scsi: srp_transport: Fix 'always false comparison' in srp_tmo_valid() |
| Message-ID | <t3QfT-6DK-7@gated-at.bofh.it> |
In a 64bit system (where long is 64bit wide), even dividing LONG_MAX by
HZ will always be bigger than the max value that an int variable can
hold.
This has been detected by building the driver with W=1:
drivers/scsi/scsi_transport_srp.c: In function ‘srp_tmo_valid’:
drivers/scsi/scsi_transport_srp.c:92:19: warning: comparison is always
false due to limited range of data type [-Wtype-limits]
if (dev_loss_tmo >= LONG_MAX / HZ)
^
Signed-off-by: Augusto Mecking Caringi <augustocaringi@gmail.com>
---
drivers/scsi/scsi_transport_srp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c
index b87a786..d8c83f4 100644
--- a/drivers/scsi/scsi_transport_srp.c
+++ b/drivers/scsi/scsi_transport_srp.c
@@ -89,7 +89,7 @@ int srp_tmo_valid(int reconnect_delay, int fast_io_fail_tmo, int dev_loss_tmo)
if (fast_io_fail_tmo < 0 &&
dev_loss_tmo > SCSI_DEVICE_BLOCK_MAX_TIMEOUT)
return -EINVAL;
- if (dev_loss_tmo >= LONG_MAX / HZ)
+ if (dev_loss_tmo >= INT_MAX / HZ)
return -EINVAL;
if (fast_io_fail_tmo >= 0 && dev_loss_tmo >= 0 &&
fast_io_fail_tmo >= dev_loss_tmo)
--
2.7.4
[toc] | [next] | [standalone]
| From | Augusto Mecking Caringi <augustocaringi@gmail.com> |
|---|---|
| Date | 2017-01-27 11:10 +0100 |
| Message-ID | <t4bDI-2M6-17@gated-at.bofh.it> |
| In reply to | #1567330 |
On Thu, Jan 26, 2017 at 3:11 PM, Bart Van Assche
<Bart.VanAssche@sandisk.com> wrote:
> This patch is wrong. The purpose of the dev_loss_tmo >= LONG_MAX / HZ check
> is to avoid that the expression 1UL * dev_loss_tmo * HZ further down
> overflows. Can you check whether changing the if-statement into if (1UL *
> dev_loss_tmo >= LONG_MAX / HZ) also suppresses the compiler warning?
Hi Bart,
Right, now a I see...
Doing your proposed change the warning go away...
Do you want me to send a new patch for that?
--
Augusto Mecking Caringi
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web