spi: restore rx/tx_buf in case of unset CONFIG_HAS_DMA
authorMartin Sperl <kernel@martin.sperl.org>
Mon, 25 May 2015 10:13:10 +0000 (10:13 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 2 Jun 2015 20:54:56 +0000 (21:54 +0100)
commit4b786458ed99eae9e9d9984a1624a79e9bf6cebb
tree99ce1090513a7c1901d2e0dfe0c34b213015ef9e
parent8e76ef88f607174082023f50b87fe12dcdbe5db5
spi: restore rx/tx_buf in case of unset CONFIG_HAS_DMA

The case where spi_master sets the flags SPI_MASTER_MUST_RX/TX while
CONFIG_HAS_DMA is unset (which is unlikley) together with a driver
that reuses spi_messages with rx/tx_buff set to NULL, can result in:
* data disclosure over the SPI (for tx_buf == NULL)
* memory corruption (for rx_buf == NULL)

This happenes when dummy_rx/dummy_tx are changing address due to krealloc
or free and an allocation of the memory by a different part of the kernel.

Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi.c