spi: spidev: Use SPI_MODE_USER_MASK instead of casting
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 22 Nov 2021 17:52:45 +0000 (19:52 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 23 Nov 2021 12:09:09 +0000 (12:09 +0000)
Currently the 16-bit mode is what being used in user space.
However assuming that is not fully correct. Instead we should
use the respective mask, i.e. SPI_MODE_USER_MASK, which
precisely defines what bits are available for user space apps.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20211122175245.84691-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spidev.c

index 1bd73e322b7bbdcd2874d97668592791e639c4b4..968dab2f5e3de96922240a3e197a40838d7b4b98 100644 (file)
@@ -415,7 +415,7 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
                                tmp |= SPI_CS_HIGH;
 
                        tmp |= spi->mode & ~SPI_MODE_MASK;
-                       spi->mode = (u16)tmp;
+                       spi->mode = tmp & SPI_MODE_USER_MASK;
                        retval = spi_setup(spi);
                        if (retval < 0)
                                spi->mode = save;