summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMarcin Ciupak <marcin.s.ciupak@gmail.com>2017-12-08 16:31:54 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-12-08 16:36:35 +0100
commit84f1e4b08919a3981a5dc0234e6c059e958f73e7 (patch)
tree3d6a5530595fece4bb3b9214fce02c495e1cfff9 /drivers
parentstaging: pi433: Fix missing 'undefined' value in enum modulation (diff)
downloadlinux-84f1e4b08919a3981a5dc0234e6c059e958f73e7.tar.xz
linux-84f1e4b08919a3981a5dc0234e6c059e958f73e7.zip
staging: pi433: Fix validation of rf69_get_modulation value
Checking of modulation in rf69_set_modulation_shaping is done by if-else and since else part covers OOK and UNDEF values it possible to set modulation shaping for undefined modulation type. To fix this validation should be done by switch clause and in case of undefined modulation error returned. Signed-off-by: Marcin Ciupak <marcin.s.ciupak@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/pi433/rf69.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 1ae23764b911..8b6d68f10e8a 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -128,7 +128,8 @@ int rf69_set_modulation_shaping(struct spi_device *spi,
dev_dbg(&spi->dev, "set: mod shaping");
#endif
- if (rf69_get_modulation(spi) == FSK) {
+ switch (rf69_get_modulation(spi)) {
+ case FSK:
switch (mod_shaping) {
case SHAPING_OFF: return rf69_read_mod_write(spi, REG_DATAMODUL, MASK_DATAMODUL_MODULATION_SHAPE, DATAMODUL_MODULATION_SHAPE_NONE);
case SHAPING_1_0: return rf69_read_mod_write(spi, REG_DATAMODUL, MASK_DATAMODUL_MODULATION_SHAPE, DATAMODUL_MODULATION_SHAPE_1_0);
@@ -138,7 +139,7 @@ int rf69_set_modulation_shaping(struct spi_device *spi,
dev_dbg(&spi->dev, "set: illegal input param");
return -EINVAL;
}
- } else {
+ case OOK:
switch (mod_shaping) {
case SHAPING_OFF: return rf69_read_mod_write(spi, REG_DATAMODUL, MASK_DATAMODUL_MODULATION_SHAPE, DATAMODUL_MODULATION_SHAPE_NONE);
case SHAPING_BR: return rf69_read_mod_write(spi, REG_DATAMODUL, MASK_DATAMODUL_MODULATION_SHAPE, DATAMODUL_MODULATION_SHAPE_BR);
@@ -147,6 +148,9 @@ int rf69_set_modulation_shaping(struct spi_device *spi,
dev_dbg(&spi->dev, "set: illegal input param");
return -EINVAL;
}
+ default:
+ dev_dbg(&spi->dev, "set: modulation undefined");
+ return -EINVAL;
}
}