diff options
author | Andrew Gabbasov <andrew_gabbasov@mentor.com> | 2015-06-30 17:48:37 +0200 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-07-07 14:09:46 +0200 |
commit | 65598c13fd66c3b5eac16d5b8eacc704aa17ce40 (patch) | |
tree | efe1bffa55ae29af9ec71def84e35727e93b2bd9 /drivers/infiniband/ulp | |
parent | Linux 4.2-rc1 (diff) | |
download | linux-65598c13fd66c3b5eac16d5b8eacc704aa17ce40.tar.xz linux-65598c13fd66c3b5eac16d5b8eacc704aa17ce40.zip |
spi: Fix per-page mapping of unaligned vmalloc-ed buffer
spi_map_buf() processes mapping of vmalloc-ed buffers in a special way,
making mapping of every page separately. However, if the buffer is not
aligned to page boundary (e.g. sub-array in a vmalloc-ed array), it
fills the scatter table with page-size unaligned pieces, that cross
page boundaries. This is incorrect and can, for example, cause memory
corruption and various crashes when working with ubifs on spi-nor chips
(though those drivers are themselves buggy in that they should be
providing DMAable memory to the SPI framework).
Fix this by using proper scatter table size and intra-page buffer lengths,
so that the whole buffer splits into separate scatter table entries on
page boundaries.
Signed-off-by: Andrew Gabbasov <andrew_gabbasov@mentor.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/infiniband/ulp')
0 files changed, 0 insertions, 0 deletions