diff mbox series

scsi: nsp32: fix logic bug in error handling

Message ID 20170905075139.518406-1-arnd@arndb.de
State Accepted
Commit 287f79653aebfd92a3d30393ef3ca556ec92b84b
Headers show
Series scsi: nsp32: fix logic bug in error handling | expand

Commit Message

Arnd Bergmann Sept. 5, 2017, 7:51 a.m. UTC
gcc-8 points out a logic error that has existed since the start
of the git history:

drivers/scsi/nsp32.c: In function 'nsp32_selection_autoscsi':
drivers/scsi/nsp32.c:607:27: error: bitwise comparison always evaluates to false [-Werror=tautological-compare]
  if(((phase & BUSMON_BSY) == 1) || (phase & BUSMON_SEL) == 1) {
                           ^~

Presumably the author intended to check if one of two bits was
set, so that's what I'm changing the code to. This will obviously
change the behavior of the code, hopefully to do the right thing,
but I have not tested this or checked if the new "(phase & BUSMON_BSY)
|| (phase & BUSMON_SEL)" condition should indeed be treated as a
fatal error.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

---
 drivers/scsi/nsp32.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.9.0

Comments

Masanori Goto Oct. 15, 2017, 11:51 p.m. UTC | #1
2017-09-05 16:51 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
> gcc-8 points out a logic error that has existed since the start

> of the git history:

>

> drivers/scsi/nsp32.c: In function 'nsp32_selection_autoscsi':

> drivers/scsi/nsp32.c:607:27: error: bitwise comparison always evaluates to false [-Werror=tautological-compare]

>   if(((phase & BUSMON_BSY) == 1) || (phase & BUSMON_SEL) == 1) {

>                            ^~

>

> Presumably the author intended to check if one of two bits was

> set, so that's what I'm changing the code to. This will obviously

> change the behavior of the code, hopefully to do the right thing,

> but I have not tested this or checked if the new "(phase & BUSMON_BSY)

> || (phase & BUSMON_SEL)" condition should indeed be treated as a

> fatal error.

>


This is what I originally intended to, thank you!

Signed-off-by: GOTO Masanori <gotom@debian.or.jp>


> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

> ---

>  drivers/scsi/nsp32.c | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

>

> diff --git a/drivers/scsi/nsp32.c b/drivers/scsi/nsp32.c

> index 107e191bf023..8620ac5d6e41 100644

> --- a/drivers/scsi/nsp32.c

> +++ b/drivers/scsi/nsp32.c

> @@ -604,7 +604,7 @@ static int nsp32_selection_autoscsi(struct scsi_cmnd *SCpnt)

>          * check bus line

>          */

>         phase = nsp32_read1(base, SCSI_BUS_MONITOR);

> -       if(((phase & BUSMON_BSY) == 1) || (phase & BUSMON_SEL) == 1) {

> +       if ((phase & BUSMON_BSY) || (phase & BUSMON_SEL)) {

>                 nsp32_msg(KERN_WARNING, "bus busy");

>                 SCpnt->result = DID_BUS_BUSY << 16;

>                 status = 1;

> --

> 2.9.0

>
Martin K. Petersen Oct. 17, 2017, 2:39 a.m. UTC | #2
Masanori,

>> gcc-8 points out a logic error that has existed since the start

>> of the git history:

>>

>> drivers/scsi/nsp32.c: In function 'nsp32_selection_autoscsi':

>> drivers/scsi/nsp32.c:607:27: error: bitwise comparison always evaluates to false [-Werror=tautological-compare]

>>   if(((phase & BUSMON_BSY) == 1) || (phase & BUSMON_SEL) == 1) {


Applied to 4.15/scsi-queue. Thanks, Arnd!

-- 
Martin K. Petersen	Oracle Linux Engineering
diff mbox series

Patch

diff --git a/drivers/scsi/nsp32.c b/drivers/scsi/nsp32.c
index 107e191bf023..8620ac5d6e41 100644
--- a/drivers/scsi/nsp32.c
+++ b/drivers/scsi/nsp32.c
@@ -604,7 +604,7 @@  static int nsp32_selection_autoscsi(struct scsi_cmnd *SCpnt)
 	 * check bus line
 	 */
 	phase = nsp32_read1(base, SCSI_BUS_MONITOR);
-	if(((phase & BUSMON_BSY) == 1) || (phase & BUSMON_SEL) == 1) {
+	if ((phase & BUSMON_BSY) || (phase & BUSMON_SEL)) {
 		nsp32_msg(KERN_WARNING, "bus busy");
 		SCpnt->result = DID_BUS_BUSY << 16;
 		status = 1;