summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-01-16 08:24:37 +0100
committerLorenz Meier <lm@inf.ethz.ch>2014-01-16 08:25:00 +0100
commitf05aeae293ac93e3ed91e3db3b548a35bc21c172 (patch)
tree465c29e44dd7df1ec3d171c0bb3906b1a33ad5e2
parentb11d7d4de316444f72e81762446d8b1d18078b0c (diff)
downloadpx4-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.c15
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 */