]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
spi: Fix zero length xfer bug
authorChris Lesiak <chris.lesiak@licor.com>
Thu, 7 Mar 2019 20:39:00 +0000 (20:39 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Jun 2019 10:24:06 +0000 (12:24 +0200)
commit0984cb76d2942dd0bf6da77799b931802d8af678
tree270dea3004471efc359e44c4cac15ca2ab47fab6
parent854415f37aae8631e7fdf1a2aab70281b4177248
spi: Fix zero length xfer bug

[ Upstream commit 5442dcaa0d90fc376bdfc179a018931a8f43dea4 ]

This fixes a bug for messages containing both zero length and
unidirectional xfers.

The function spi_map_msg will allocate dummy tx and/or rx buffers
for use with unidirectional transfers when the hardware can only do
a bidirectional transfer.  That dummy buffer will be used in place
of a NULL buffer even when the xfer length is 0.

Then in the function __spi_map_msg, if he hardware can dma,
the zero length xfer will have spi_map_buf called on the dummy
buffer.

Eventually, __sg_alloc_table is called and returns -EINVAL
because nents == 0.

This fix prevents the error by not using the dummy buffer when
the xfer length is zero.

Signed-off-by: Chris Lesiak <chris.lesiak@licor.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/spi/spi.c