integer overflow in i2o_block

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Linux Kernel list <linux-kernel@...>
Date: Thursday, July 26, 2007 - 4:30 pm

Got this warning on 32-bit ppc, seems real? And it seems I2O 
subsystem has no maintainer (only DPT_I2O has one)?

  CC [M]  drivers/message/i2o/i2o_block.o
drivers/message/i2o/i2o_block.c: In function 'i2o_block_transfer':
drivers/message/i2o/i2o_block.c:837: warning: integer overflow in expression

The line in question is
msg->u.head[1] = cpu_to_le32(I2O_CMD_PRIVATE << 24 | HOST_TID << 12 | tid);
and I2O_CMD_PRIVATE is defined as 0xFF. This gets "0xFF0100 | tid" and 
fits into 32-bit unsigned but not into 32-bit signed integer properly.
Target value head[*] is defined as u32 so the claculation does not fit 
during computation? Should we mark the shiftable inputas as unsigned?

-- 
Meelis Roos (mroos@linux.ee)
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
integer overflow in i2o_block, Meelis Roos, (Thu Jul 26, 4:30 pm)
RE: integer overflow in i2o_block, Salyzyn, Mark, (Thu Jul 26, 4:48 pm)
[PATCH] fix integer overflow warning in i2o_block, Meelis Roos, (Fri Jul 27, 11:45 am)