summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2011-08-04 14:49:33 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2011-08-04 14:49:33 +0200
commitdb879ec1a96df9ee35d89500a081177b485c3a8b (patch)
tree3b42bd81ea6c3e469f95043f769d0b1a80b89992 /fs
parent8949efd0e186ea5ab4ff9c0864dc5e85758ea94f (diff)
parent454f331bfecd72e25100af0bbccdf9a6dd707189 (diff)
downloadbarebox-db879ec1a96df9ee35d89500a081177b485c3a8b.tar.gz
barebox-db879ec1a96df9ee35d89500a081177b485c3a8b.tar.xz
Merge branch 'next'
Diffstat (limited to 'fs')
-rw-r--r--fs/devfs.c4
-rw-r--r--fs/fs.c13
2 files changed, 9 insertions, 8 deletions
diff --git a/fs/devfs.c b/fs/devfs.c
index 07ca16c553..66f7ca4162 100644
--- a/fs/devfs.c
+++ b/fs/devfs.c
@@ -161,7 +161,9 @@ static int devfs_ioctl(struct device_d *_dev, FILE *f, int request, void *buf)
static int devfs_truncate(struct device_d *dev, FILE *f, ulong size)
{
- if (size > f->dev->size)
+ if (f->dev->num_resources < 1)
+ return -ENOSPC;
+ if (size > f->dev->resource[0].size)
return -ENOSPC;
return 0;
}
diff --git a/fs/fs.c b/fs/fs.c
index e71d5a29af..7d65ec819b 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -1043,13 +1043,12 @@ ssize_t mem_read(struct cdev *cdev, void *buf, size_t count, ulong offset, ulong
ulong size;
struct device_d *dev;
- if (!cdev->dev)
+ if (!cdev->dev || cdev->dev->num_resources < 1)
return -1;
dev = cdev->dev;
- size = min((ulong)count, dev->size - offset);
- debug("mem_read: dev->map_base: %p size: %d offset: %d\n",dev->map_base, size, offset);
- memcpy_sz(buf, (void *)(dev->map_base + offset), size, flags & O_RWSIZE_MASK);
+ size = min((ulong)count, dev->resource[0].size - offset);
+ memcpy_sz(buf, dev_get_mem_region(dev, 0) + offset, size, flags & O_RWSIZE_MASK);
return size;
}
EXPORT_SYMBOL(mem_read);
@@ -1059,12 +1058,12 @@ ssize_t mem_write(struct cdev *cdev, const void *buf, size_t count, ulong offset
ulong size;
struct device_d *dev;
- if (!cdev->dev)
+ if (!cdev->dev || cdev->dev->num_resources < 1)
return -1;
dev = cdev->dev;
- size = min((ulong)count, dev->size - offset);
- memcpy_sz((void *)(dev->map_base + offset), buf, size, flags & O_RWSIZE_MASK);
+ size = min((ulong)count, dev->resource[0].size - offset);
+ memcpy_sz(dev_get_mem_region(dev, 0) + offset, buf, size, flags & O_RWSIZE_MASK);
return size;
}
EXPORT_SYMBOL(mem_write);