diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2014-01-16 08:24:37 +0100 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2014-01-16 08:25:00 +0100 |
commit | f05aeae293ac93e3ed91e3db3b548a35bc21c172 (patch) | |
tree | 465c29e44dd7df1ec3d171c0bb3906b1a33ad5e2 | |
parent | b11d7d4de316444f72e81762446d8b1d18078b0c (diff) | |
download | px4-nuttx-f05aeae293ac93e3ed91e3db3b548a35bc21c172.tar.gz px4-nuttx-f05aeae293ac93e3ed91e3db3b548a35bc21c172.tar.bz2 px4-nuttx-f05aeae293ac93e3ed91e3db3b548a35bc21c172.zip |
Range checking on clock argument for RAMTRON set speed IOCTL
-rw-r--r-- | nuttx/drivers/mtd/ramtron.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/nuttx/drivers/mtd/ramtron.c b/nuttx/drivers/mtd/ramtron.c index e7440cc46..7d4c66058 100644 --- a/nuttx/drivers/mtd/ramtron.c +++ b/nuttx/drivers/mtd/ramtron.c @@ -152,7 +152,8 @@ struct ramtron_dev_s * speed. */ -#define RAMTRON_INIT_CLK_MAX 11*1000*1000UL +#define RAMTRON_CLK_MAX 40*1000*1000UL +#define RAMTRON_INIT_CLK_DEFAULT 11*1000*1000UL static struct ramtron_parts_s ramtron_parts[] = { @@ -648,9 +649,15 @@ static int ramtron_ioctl(FAR struct mtd_dev_s *dev, int cmd, unsigned long arg) break; case MTDIOC_SETSPEED: - priv->speed = (unsigned long)arg; - fvdbg("set bus speed to %lu\n", (unsigned long)priv->speed); + if ((unsigned long)arg > 0 && (unsigned long arg) <= RAMTRON_CLK_MAX) { + priv->speed = (unsigned long)arg; + fvdbg("set bus speed to %lu\n", (unsigned long)priv->speed); + } else { + ret = -EINVAL; /* Bad argument */ + fvdbg("inval arg"); + } break; + } case MTDIOC_XIPBASE: default: @@ -702,7 +709,7 @@ FAR struct mtd_dev_s *ramtron_initialize(FAR struct spi_dev_s *dev) priv->mtd.read = ramtron_read; priv->mtd.ioctl = ramtron_ioctl; priv->dev = dev; - priv->speed = RAMTRON_INIT_CLK_MAX; + priv->speed = RAMTRON_INIT_CLK_DEFAULT; /* Deselect the FLASH */ |