spi/spi_sh_msiof: fix wrong address calculation, which leads to an Oops
NULL + <small offset> != NULL, but reading from that <small offset> address is usually not a very good idea and often leads to problems, like kernel Oopses in this case, easily reproducible by writing to an SD-card, used in SPI mode. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
This commit is contained in:
parent
c56eb8fb6d
commit
8a6afb9a95
@ -509,9 +509,11 @@ static int sh_msiof_spi_txrx(struct spi_device *spi, struct spi_transfer *t)
|
||||
bytes_done = 0;
|
||||
|
||||
while (bytes_done < t->len) {
|
||||
void *rx_buf = t->rx_buf ? t->rx_buf + bytes_done : NULL;
|
||||
const void *tx_buf = t->tx_buf ? t->tx_buf + bytes_done : NULL;
|
||||
n = sh_msiof_spi_txrx_once(p, tx_fifo, rx_fifo,
|
||||
t->tx_buf + bytes_done,
|
||||
t->rx_buf + bytes_done,
|
||||
tx_buf,
|
||||
rx_buf,
|
||||
words, bits);
|
||||
if (n < 0)
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user