From mboxrd@z Thu Jan 1 00:00:00 1970 From: Scott Jiang Subject: [PATCH] spi: add bits_per_word_mask check in spi_setup Date: Wed, 26 Jun 2013 18:54:46 -0400 Message-ID: <1372287286-12682-1-git-send-email-scott.jiang.linux@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org, Scott Jiang , uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org To: Grant Likely , Mark Brown Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: uclinux-dist-devel-bounces-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org Errors-To: uclinux-dist-devel-bounces-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org List-Id: linux-spi.vger.kernel.org The spi_setup should fail if underlying controller or its driver does not support requested bits_per_word. So if the master driver set mask and let core do bits_per_word check then we should also test this mask in spi_setup. Signed-off-by: Scott Jiang --- drivers/spi/spi.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 45cb6a9..dc8fde0 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -1326,6 +1326,15 @@ int spi_setup(struct spi_device *spi) if (!spi->bits_per_word) spi->bits_per_word = 8; + if (spi->master->bits_per_word_mask) { + /* Only 32 bits fit in the mask */ + if (spi->bits_per_word > 32) + return -EINVAL; + if (!(spi->master->bits_per_word_mask & + BIT(spi->bits_per_word - 1))) + return -EINVAL; + } + if (spi->master->setup) status = spi->master->setup(spi); -- 1.7.0.4