]> www.infradead.org Git - linux-platform-drivers-x86.git/commitdiff
spi: Fix the clamping of spi->max_speed_hz
authorTudor Ambarus <tudor.ambarus@microchip.com>
Wed, 16 Dec 2020 09:23:21 +0000 (11:23 +0200)
committerMark Brown <broonie@kernel.org>
Wed, 30 Dec 2020 13:45:23 +0000 (13:45 +0000)
If spi->controller->max_speed_hz is zero, a non-zero spi->max_speed_hz
will be overwritten by zero. Make sure spi->controller->max_speed_hz
is not zero when clamping spi->max_speed_hz.

Put the spi->controller->max_speed_hz non-zero check higher in the if,
so that we avoid a superfluous init to zero when both spi->max_speed_hz
and spi->controller->max_speed_hz are zero.

Fixes: 9326e4f1e5dd ("spi: Limit the spi device max speed to controller's max speed")
Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Suggested-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20201216092321.413262-1-tudor.ambarus@microchip.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi.c

index 51d7c004fbab5eee868e9abb1defad59a5df6e0d..f59bf5094adb929e69ee1cd2307f05445a9c975a 100644 (file)
@@ -3378,8 +3378,9 @@ int spi_setup(struct spi_device *spi)
        if (status)
                return status;
 
-       if (!spi->max_speed_hz ||
-           spi->max_speed_hz > spi->controller->max_speed_hz)
+       if (spi->controller->max_speed_hz &&
+           (!spi->max_speed_hz ||
+            spi->max_speed_hz > spi->controller->max_speed_hz))
                spi->max_speed_hz = spi->controller->max_speed_hz;
 
        mutex_lock(&spi->controller->io_mutex);