[SCSI] dpt_i2o: fix transferred data length for scsi_set_resid()
authorMiquel van Smoorenburg <mikevs@xs4all.net>
Tue, 4 Nov 2008 23:09:12 +0000 (00:09 +0100)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Sat, 15 Nov 2008 17:10:14 +0000 (11:10 -0600)
commitdf81d2371aeca0f7474f197a3090830899016e39
tree5a78d77e9086b52069789d1f0707cf9d9cb4b71e
parent939c2288c35132fe340b2694c7d02cacf7593723
[SCSI] dpt_i2o: fix transferred data length for scsi_set_resid()

dpt_i2o.c::adpt_i2o_to_scsi() reads the value at (reply+5) which
should contain the length in bytes of the transferred data. This
would be correct if reply was a u32 *. However it is a void * here,
so we need to read the value at (reply+20) instead.

The value at (reply+5) is usually 0xff0000, which is apparently
'large enough' and didn't cause any trouble until 2.6.27 where

commit 427e59f09fdba387547106de7bab980b7fff77be
Author: James Bottomley <James.Bottomley@HansenPartnership.com>
Date:   Sat Mar 8 18:24:17 2008 -0600

    [SCSI] make use of the residue value

caused this to become visible through e.g. iostat -x .

Signed-off-by: Miquel van Smoorenburg <mikevs@xs4all.net>
Cc: Stable Tree <stable@kernel.org>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/dpt_i2o.c