i2c: ismt: use correct length when copy buffer
In block write mode, when encapsulating dma_buffer, first element is 'command', the rest is data buffer, so only copy actual data buffer starting from block[1] with the size indicating by block[0]. Signed-off-by: Fan Du <fan.du@intel.com> Acked-by: Neil Horman <nhorman@tuxdriver.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de> Cc: stable@kernel.org
This commit is contained in:
parent
938916fbb8
commit
979bbf7b7a
|
@ -497,7 +497,7 @@ static int ismt_access(struct i2c_adapter *adap, u16 addr,
|
|||
desc->wr_len_cmd = dma_size;
|
||||
desc->control |= ISMT_DESC_BLK;
|
||||
priv->dma_buffer[0] = command;
|
||||
memcpy(&priv->dma_buffer[1], &data->block[1], dma_size);
|
||||
memcpy(&priv->dma_buffer[1], &data->block[1], dma_size - 1);
|
||||
} else {
|
||||
/* Block Read */
|
||||
dev_dbg(dev, "I2C_SMBUS_BLOCK_DATA: READ\n");
|
||||
|
@ -525,7 +525,7 @@ static int ismt_access(struct i2c_adapter *adap, u16 addr,
|
|||
desc->wr_len_cmd = dma_size;
|
||||
desc->control |= ISMT_DESC_I2C;
|
||||
priv->dma_buffer[0] = command;
|
||||
memcpy(&priv->dma_buffer[1], &data->block[1], dma_size);
|
||||
memcpy(&priv->dma_buffer[1], &data->block[1], dma_size - 1);
|
||||
} else {
|
||||
/* i2c Block Read */
|
||||
dev_dbg(dev, "I2C_SMBUS_I2C_BLOCK_DATA: READ\n");
|
||||
|
|
Loading…
Reference in New Issue