spi_mpc83xx: reject invalid transfer sizes
Error out on transfer length != multiple of bytes per word with -EINVAL. Fixes a buffer overrun crash if length < bytes per word. Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk> Acked-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
53604dbe13
commit
aa77d96ba9
|
@ -312,11 +312,20 @@ static int mpc83xx_spi_bufs(struct spi_device *spi, struct spi_transfer *t)
|
|||
if (t->bits_per_word)
|
||||
bits_per_word = t->bits_per_word;
|
||||
len = t->len;
|
||||
if (bits_per_word > 8)
|
||||
if (bits_per_word > 8) {
|
||||
/* invalid length? */
|
||||
if (len & 1)
|
||||
return -EINVAL;
|
||||
len /= 2;
|
||||
if (bits_per_word > 16)
|
||||
}
|
||||
if (bits_per_word > 16) {
|
||||
/* invalid length? */
|
||||
if (len & 1)
|
||||
return -EINVAL;
|
||||
len /= 2;
|
||||
}
|
||||
mpc83xx_spi->count = len;
|
||||
|
||||
INIT_COMPLETION(mpc83xx_spi->done);
|
||||
|
||||
/* enable rx ints */
|
||||
|
|
Loading…
Reference in New Issue