* [PATCH] isci: Fix infinite loop in while loop
@ 2018-04-20 9:03 ` Colin King
0 siblings, 0 replies; 6+ messages in thread
From: Colin King @ 2018-04-20 9:03 UTC (permalink / raw)
To: Intel SCU Linux support, Artur Paszkiewicz,
James E . J . Bottomley, Martin K . Petersen, linux-scsi
Cc: kernel-janitors, linux-kernel
From: Colin Ian King <colin.king@canonical.com>
In the case when the phy_mask is bitwise anded with the
phy_index bit is zero the continue statement currently jumps
to the next iteration of the while loop and phy_index is
never actually incremented, potentially causing an infinite
loop if phy_index is less than SCI_MAX_PHS. Fix this by
jumping to the increment of phy_index.
[ The goto is used to save one more level of nesting that
makes the code far wider than 80 columns. ]
Fixes: 80aebef7c112 ("[SCSI] isci: Fix a infinite loop.")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
drivers/scsi/isci/port_config.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/scsi/isci/port_config.c b/drivers/scsi/isci/port_config.c
index edb7be786c65..55dc7c1dbc2b 100644
--- a/drivers/scsi/isci/port_config.c
+++ b/drivers/scsi/isci/port_config.c
@@ -293,7 +293,7 @@ sci_mpc_agent_validate_phy_configuration(struct isci_host *ihost,
* This is expected and required to add the phy to the port. */
while (phy_index < SCI_MAX_PHYS) {
if ((phy_mask & (1 << phy_index)) == 0)
- continue;
+ goto next_index;
sci_phy_get_sas_address(&ihost->phys[phy_index],
&phy_assigned_address);
@@ -311,6 +311,7 @@ sci_mpc_agent_validate_phy_configuration(struct isci_host *ihost,
&ihost->phys[phy_index]);
assigned_phy_mask |= (1 << phy_index);
+next_index:
phy_index++;
}
--
2.17.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH] isci: Fix infinite loop in while loop
@ 2018-04-20 9:03 ` Colin King
0 siblings, 0 replies; 6+ messages in thread
From: Colin King @ 2018-04-20 9:03 UTC (permalink / raw)
To: Intel SCU Linux support, Artur Paszkiewicz,
James E . J . Bottomley, Martin K . Petersen, linux-scsi
Cc: kernel-janitors, linux-kernel
From: Colin Ian King <colin.king@canonical.com>
In the case when the phy_mask is bitwise anded with the
phy_index bit is zero the continue statement currently jumps
to the next iteration of the while loop and phy_index is
never actually incremented, potentially causing an infinite
loop if phy_index is less than SCI_MAX_PHS. Fix this by
jumping to the increment of phy_index.
[ The goto is used to save one more level of nesting that
makes the code far wider than 80 columns. ]
Fixes: 80aebef7c112 ("[SCSI] isci: Fix a infinite loop.")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
drivers/scsi/isci/port_config.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/scsi/isci/port_config.c b/drivers/scsi/isci/port_config.c
index edb7be786c65..55dc7c1dbc2b 100644
--- a/drivers/scsi/isci/port_config.c
+++ b/drivers/scsi/isci/port_config.c
@@ -293,7 +293,7 @@ sci_mpc_agent_validate_phy_configuration(struct isci_host *ihost,
* This is expected and required to add the phy to the port. */
while (phy_index < SCI_MAX_PHYS) {
if ((phy_mask & (1 << phy_index)) = 0)
- continue;
+ goto next_index;
sci_phy_get_sas_address(&ihost->phys[phy_index],
&phy_assigned_address);
@@ -311,6 +311,7 @@ sci_mpc_agent_validate_phy_configuration(struct isci_host *ihost,
&ihost->phys[phy_index]);
assigned_phy_mask |= (1 << phy_index);
+next_index:
phy_index++;
}
--
2.17.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] isci: Fix infinite loop in while loop
2018-04-20 9:03 ` Colin King
@ 2018-04-20 9:45 ` James Bottomley
-1 siblings, 0 replies; 6+ messages in thread
From: James Bottomley @ 2018-04-20 9:45 UTC (permalink / raw)
To: Colin King, Intel SCU Linux support, Artur Paszkiewicz,
Martin K . Petersen, linux-scsi
Cc: kernel-janitors, linux-kernel
On Fri, 2018-04-20 at 10:03 +0100, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> In the case when the phy_mask is bitwise anded with the
> phy_index bit is zero the continue statement currently jumps
> to the next iteration of the while loop and phy_index is
> never actually incremented, potentially causing an infinite
> loop if phy_index is less than SCI_MAX_PHS. Fix this by
> jumping to the increment of phy_index.
>
> [ The goto is used to save one more level of nesting that
> makes the code far wider than 80 columns. ]
what's wrong with replacing the while() with a for() that just works
(removing the increment at the end). This is effectively open coding a
for loop anyway, which is a pattern we wouldn't want replicated.
James
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] isci: Fix infinite loop in while loop
@ 2018-04-20 9:45 ` James Bottomley
0 siblings, 0 replies; 6+ messages in thread
From: James Bottomley @ 2018-04-20 9:45 UTC (permalink / raw)
To: Colin King, Intel SCU Linux support, Artur Paszkiewicz,
Martin K . Petersen, linux-scsi
Cc: kernel-janitors, linux-kernel
On Fri, 2018-04-20 at 10:03 +0100, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> In the case when the phy_mask is bitwise anded with the
> phy_index bit is zero the continue statement currently jumps
> to the next iteration of the while loop and phy_index is
> never actually incremented, potentially causing an infinite
> loop if phy_index is less than SCI_MAX_PHS. Fix this by
> jumping to the increment of phy_index.
>
> [ The goto is used to save one more level of nesting that
> makes the code far wider than 80 columns. ]
what's wrong with replacing the while() with a for() that just works
(removing the increment at the end). This is effectively open coding a
for loop anyway, which is a pattern we wouldn't want replicated.
James
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] isci: Fix infinite loop in while loop
2018-04-20 9:45 ` James Bottomley
@ 2018-04-20 9:57 ` Colin Ian King
-1 siblings, 0 replies; 6+ messages in thread
From: Colin Ian King @ 2018-04-20 9:57 UTC (permalink / raw)
To: James Bottomley, Intel SCU Linux support, Artur Paszkiewicz,
Martin K . Petersen, linux-scsi
Cc: kernel-janitors, linux-kernel
On 20/04/18 10:45, James Bottomley wrote:
> On Fri, 2018-04-20 at 10:03 +0100, Colin King wrote:
>> From: Colin Ian King <colin.king@canonical.com>
>>
>> In the case when the phy_mask is bitwise anded with the
>> phy_index bit is zero the continue statement currently jumps
>> to the next iteration of the while loop and phy_index is
>> never actually incremented, potentially causing an infinite
>> loop if phy_index is less than SCI_MAX_PHS. Fix this by
>> jumping to the increment of phy_index.
>>
>> [ The goto is used to save one more level of nesting that
>> makes the code far wider than 80 columns. ]
>
> what's wrong with replacing the while() with a for() that just works
> (removing the increment at the end). This is effectively open coding a
> for loop anyway, which is a pattern we wouldn't want replicated.
>
> James
>
Good point, V2 en-route.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] isci: Fix infinite loop in while loop
@ 2018-04-20 9:57 ` Colin Ian King
0 siblings, 0 replies; 6+ messages in thread
From: Colin Ian King @ 2018-04-20 9:57 UTC (permalink / raw)
To: James Bottomley, Intel SCU Linux support, Artur Paszkiewicz,
Martin K . Petersen, linux-scsi
Cc: kernel-janitors, linux-kernel
On 20/04/18 10:45, James Bottomley wrote:
> On Fri, 2018-04-20 at 10:03 +0100, Colin King wrote:
>> From: Colin Ian King <colin.king@canonical.com>
>>
>> In the case when the phy_mask is bitwise anded with the
>> phy_index bit is zero the continue statement currently jumps
>> to the next iteration of the while loop and phy_index is
>> never actually incremented, potentially causing an infinite
>> loop if phy_index is less than SCI_MAX_PHS. Fix this by
>> jumping to the increment of phy_index.
>>
>> [ The goto is used to save one more level of nesting that
>> makes the code far wider than 80 columns. ]
>
> what's wrong with replacing the while() with a for() that just works
> (removing the increment at the end). This is effectively open coding a
> for loop anyway, which is a pattern we wouldn't want replicated.
>
> James
>
Good point, V2 en-route.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-04-20 9:57 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-20 9:03 [PATCH] isci: Fix infinite loop in while loop Colin King
2018-04-20 9:03 ` Colin King
2018-04-20 9:45 ` James Bottomley
2018-04-20 9:45 ` James Bottomley
2018-04-20 9:57 ` Colin Ian King
2018-04-20 9:57 ` Colin Ian King
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.