spi: spi-ti-qspi: Handle truncated frames properly
authorBen Hutchings <ben.hutchings@codethink.co.uk>
Tue, 12 Apr 2016 11:58:14 +0000 (12:58 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 May 2016 00:06:47 +0000 (17:06 -0700)
commit1441dcbdcbe529fd7f0db6fd95b4bc9d867e04bb
tree8220dfa2353e03a8dbb5bd6480a83e62816512e1
parent444189274bd802692e3e9334e23c1d9348ea87f6
spi: spi-ti-qspi: Handle truncated frames properly

commit 1ff7760ff66b98ef244bf0e5e2bd5310651205ad upstream.

We clamp frame_len_words to a maximum of 4096, but do not actually
limit the number of words written or read through the DATA registers
or the length added to spi_message::actual_length.  This results in
silent data corruption for commands longer than this maximum.

Recalculate the length of each transfer, taking frame_len_words into
account.  Use this length in qspi_{read,write}_msg(), and to increment
spi_message::actual_length.

Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/spi/spi-ti-qspi.c