summaryrefslogtreecommitdiffstats
path: root/fs/devfs.c
diff options
context:
space:
mode:
authorJan Luebbe <jlu@pengutronix.de>2012-06-25 14:03:27 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2012-06-30 12:47:04 +0200
commita4fde70067b6113fd9dc7a4295ebd3f55b756db6 (patch)
tree9c69cdaa782250a1fc9fbe02e02f20907b660c5d /fs/devfs.c
parent4ef0846589203b35d70295e7e6e6a58d71e20fa0 (diff)
downloadbarebox-a4fde70067b6113fd9dc7a4295ebd3f55b756db6.tar.gz
barebox-a4fde70067b6113fd9dc7a4295ebd3f55b756db6.tar.xz
fs/devfs.c: disallow write and erase if a partition is read-only
Signed-off-by: Jan Luebbe <jlu@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'fs/devfs.c')
-rw-r--r--fs/devfs.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/devfs.c b/fs/devfs.c
index ae48451b6c..074bb34e3d 100644
--- a/fs/devfs.c
+++ b/fs/devfs.c
@@ -49,6 +49,9 @@ static int devfs_write(struct device_d *_dev, FILE *f, const void *buf, size_t s
{
struct cdev *cdev = f->inode;
+ if (cdev->flags & DEVFS_PARTITION_READONLY)
+ return -EPERM;
+
return cdev_write(cdev, buf, size, f->pos, f->flags);
}
@@ -70,6 +73,9 @@ static int devfs_erase(struct device_d *_dev, FILE *f, size_t count, unsigned lo
{
struct cdev *cdev = f->inode;
+ if (cdev->flags & DEVFS_PARTITION_READONLY)
+ return -EPERM;
+
if (!cdev->ops->erase)
return -ENOSYS;