diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2011-08-04 14:49:33 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2011-08-04 14:49:33 +0200 |
commit | db879ec1a96df9ee35d89500a081177b485c3a8b (patch) | |
tree | 3b42bd81ea6c3e469f95043f769d0b1a80b89992 /fs | |
parent | 8949efd0e186ea5ab4ff9c0864dc5e85758ea94f (diff) | |
parent | 454f331bfecd72e25100af0bbccdf9a6dd707189 (diff) | |
download | barebox-db879ec1a96df9ee35d89500a081177b485c3a8b.tar.gz barebox-db879ec1a96df9ee35d89500a081177b485c3a8b.tar.xz |
Merge branch 'next'
Diffstat (limited to 'fs')
-rw-r--r-- | fs/devfs.c | 4 | ||||
-rw-r--r-- | fs/fs.c | 13 |
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; } @@ -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); |