scsi: qla2xxx: Simplify conditional check
Subsystems (2)
PATCH 1/1 scsi: qla2xxx: Simplify conditional check
Clang generates a warning when it sees a logical not followed by a conditional operator like ==, >, or < because it thinks that the logical not should be applied to the whole statement:
drivers/scsi/qla2xxx/qla_nx.c:3702:7: warning: logical not is only applied to the left hand side of this comparison [-Wlogical-not-parentheses]
if (!qla2x00_eh_wait_for_pending_commands(vha, 0, 0,
^
drivers/scsi/qla2xxx/qla_nx.c:3702:7: note: add parentheses after the
'!' to evaluate the comparison first
if (!qla2x00_eh_wait_for_pending_commands(vha, 0, 0,
^
(
drivers/scsi/qla2xxx/qla_nx.c:3702:7: note: add parentheses around left
hand side expression to silence this warning
if (!qla2x00_eh_wait_for_pending_commands(vha, 0, 0,
^
(1 warning generated.
It assumes the author might have made a mistake in their logic:
if (!a == b) -> if (!(a == b))
Sometimes that is the case; other times, it's just a super convoluted way of saying 'if (a)' when b = 0:
if (!1 == 0) -> if (0 == 0) -> if (true)
Alternatively:
if (!1 == 0) -> if (!!1) -> if (1)
Simplify this comparison so that Clang doesn't complain.
---
This is commit 0bfe7d3cae58 ("scsi: qla2xxx: Simplify conditional check") upstream but commit 3695310e37b4 ("scsi: qla2xxx: Update flash read/write routine") in the 5.2/scsi-queue branch silently reverted it. I don't care if it is squashed or not, I just want the warning to stay fixed.
Thanks,
Nathan
drivers/scsi/qla2xxx/qla_nx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/scsi/qla2xxx/qla_nx.c +2 -2
@@ -3699,8 +3699,8 @@ qla82xx_chip_reset_cleanup(scsi_qla_host_t *vha)spin_unlock_irqrestore (&ha->hardware_lock, flags);/* Wait for pending cmds (physical and virtual) to complete */ -if (!qla2x00_eh_wait_for_pending_commands (vha,0 ,0 , -WAIT_HOST ) ==QLA_SUCCESS ) { +if (qla2x00_eh_wait_for_pending_commands (vha,0 ,0 , +WAIT_HOST )) {ql_dbg (ql_dbg_init, vha,0x00b3 ,"Done wait for " "pending commands.\n" );
Signature · 1 line
2.21.0
Quoted 39 lines · Nathan Chancellor
Clang generates a warning when it sees a logical not followed by a conditional operator like ==, >, or < because it thinks that the logical not should be applied to the whole statement:
drivers/scsi/qla2xxx/qla_nx.c:3702:7: warning: logical not is only applied to the left hand side of this comparison [-Wlogical-not-parentheses]if (!qla2x00_eh_wait_for_pending_commands(vha, 0, 0, ^ drivers/scsi/qla2xxx/qla_nx.c:3702:7: note: add parentheses after the '!' to evaluate the comparison first if (!qla2x00_eh_wait_for_pending_commands(vha, 0, 0, ^ ( drivers/scsi/qla2xxx/qla_nx.c:3702:7: note: add parentheses around left hand side expression to silence this warning if (!qla2x00_eh_wait_for_pending_commands(vha, 0, 0, ^ (1 warning generated.
It assumes the author might have made a mistake in their logic:
if (!a == b) -> if (!(a == b))
Sometimes that is the case; other times, it's just a super convoluted way of saying 'if (a)' when b = 0:
if (!1 == 0) -> if (0 == 0) -> if (true)
Alternatively:
if (!1 == 0) -> if (!!1) -> if (1)
Simplify this comparison so that Clang doesn't complain.
Quoted 7 lines
---
This is commit
0bfe7d3cae58("scsi: qla2xxx: Simplify conditional check") upstream but commit3695310e37b4("scsi: qla2xxx: Update flash read/write routine") in the 5.2/scsi-queue branch silently reverted it. I don't care if it is squashed or not, I just want the warning to stay fixed.
This is probably a simpler commit message. A "Fixes:" tag is a simple enough addition, too.
Thanks for catching this and resending the fix.
Quoted 31 lines
Thanks,
Nathandrivers/scsi/qla2xxx/qla_nx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)drivers/scsi/qla2xxx/qla_nx.c +2
-3@@ -3699,8 +3699,8 @@ qla82xx_chip_reset_cleanup(scsi_qla_host_t *vha)spin_unlock_irqrestore (&ha->hardware_lock, flags);/* Wait for pending cmds (physical and virtual) to complete */ -if (!qla2x00_eh_wait_for_pending_commands (vha,0 ,0 , -WAIT_HOST ) ==QLA_SUCCESS ) { +if (qla2x00_eh_wait_for_pending_commands (vha,0 ,0 , +WAIT_HOST )) {ql_dbg (ql_dbg_init, vha,0x00b3 ,"Done wait for " "pending commands.\n" ); --2.21.0
--
You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20190320163315.12740-1-natechancellor%40gmail.com.
For more options, visit https://groups.google.com/d/optout.
Signature · 2 lines
Thanks, ~Nick Desaulniers
PATCH v2 1/1 scsi: qla2xxx: Simplify conditional check again
In reply to Nathan ChancellorClang warns when it sees a logical not on the left side of a conditional statement because it thinks the logical not should be applied to the whole statement, not just the left side:
drivers/scsi/qla2xxx/qla_nx.c:3703:7: warning: logical not is only applied to the left hand side of this comparison [-Wlogical-not-parentheses]
This particular instance was already fixed by commit 0bfe7d3cae58 ("scsi:
qla2xxx: Simplify conditional check") upstream but it was reintroduced by commit 3695310e37b4 ("scsi: qla2xxx: Update flash read/write routine") in the 5.2/scsi-queue.
---
v1 -> v2:
* Reword commit message so make it clear this is just a reapplication of a commit that is already in mainline, as suggested by Nick.
* Include the authors who reintroduced this warning.
drivers/scsi/qla2xxx/qla_nx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/scsi/qla2xxx/qla_nx.c +2 -2
@@ -3700,8 +3700,8 @@ qla82xx_chip_reset_cleanup(scsi_qla_host_t *vha)spin_unlock_irqrestore (&ha->hardware_lock, flags);/* Wait for pending cmds (physical and virtual) to complete */ -if (!qla2x00_eh_wait_for_pending_commands (vha,0 ,0 , -WAIT_HOST ) ==QLA_SUCCESS ) { +if (qla2x00_eh_wait_for_pending_commands (vha,0 ,0 , +WAIT_HOST )) {ql_dbg (ql_dbg_init, vha,0x00b3 ,"Done wait for " "pending commands.\n" );
Signature · 1 line
2.21.0
Re: [PATCH v2] scsi: qla2xxx: Simplify conditional check again
Quoted 5 lines · Nathan Chancellor
Clang warns when it sees a logical not on the left side of a conditional statement because it thinks the logical not should be applied to the whole statement, not just the left side:
Quoted 8 lines
drivers/scsi/qla2xxx/qla_nx.c:3703:7: warning: logical not is only applied to the left hand side of this comparison [-Wlogical-not-parentheses]This particular instance was already fixed by commit
0bfe7d3cae58("scsi:
qla2xxx: Simplify conditional check") upstream but it was reintroduced by commit3695310e37b4("scsi: qla2xxx: Update flash read/write routine") in the 5.2/scsi-queue.
Nathan, thanks for following up and rewording the commit message to clearly state how we got here.
Quoted 34 lines
Fixes 3695310e37b4 ("scsi: qla2xxx: Update flash read/write routine")Signed-off-by Nathan Chancellor <[email protected]>---
v1 -> v2:
* Reword commit message so make it clear this is just a reapplication of a commit that is already in mainline, as suggested by Nick.
* Include the authors who reintroduced this warning.
drivers/scsi/qla2xxx/qla_nx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)drivers/scsi/qla2xxx/qla_nx.c +2
-3@@ -3700,8 +3700,8 @@ qla82xx_chip_reset_cleanup(scsi_qla_host_t *vha)spin_unlock_irqrestore (&ha->hardware_lock, flags);/* Wait for pending cmds (physical and virtual) to complete */ -if (!qla2x00_eh_wait_for_pending_commands (vha,0 ,0 , -WAIT_HOST ) ==QLA_SUCCESS ) { +if (qla2x00_eh_wait_for_pending_commands (vha,0 ,0 , +WAIT_HOST )) {ql_dbg (ql_dbg_init, vha,0x00b3 ,"Done wait for " "pending commands.\n" ); --2.21.0
Signature · 2 lines
Thanks, ~Nick Desaulniers
Martin K. Petersen
AppliedRe: [PATCH v2] scsi: qla2xxx: Simplify conditional check again
In reply to Nathan ChancellorNathan,
Quoted 3 lines
Clang warns when it sees a logical not on the left side of a conditional statement because it thinks the logical not should be applied to the whole statement, not just the left side:
Applied to 5.2/scsi-queue, thanks.
Signature · 1 line
Martin K. Petersen Oracle Linux Engineering