aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/ps3flash.c28
-rw-r--r--drivers/char/tile-srom.c28
2 files changed, 5 insertions, 51 deletions
diff --git a/drivers/char/ps3flash.c b/drivers/char/ps3flash.c
index 8cafa9ccd43f..0b311fa277ef 100644
--- a/drivers/char/ps3flash.c
+++ b/drivers/char/ps3flash.c
@@ -98,32 +98,8 @@ static int ps3flash_fetch(struct ps3_storage_device *dev, u64 start_sector)
98static loff_t ps3flash_llseek(struct file *file, loff_t offset, int origin) 98static loff_t ps3flash_llseek(struct file *file, loff_t offset, int origin)
99{ 99{
100 struct ps3_storage_device *dev = ps3flash_dev; 100 struct ps3_storage_device *dev = ps3flash_dev;
101 loff_t res; 101 return generic_file_llseek_size(file, offset, origin, MAX_LFS_FILESIZE,
102 102 dev->regions[dev->region_idx].size*dev->blk_size);
103 mutex_lock(&file->f_mapping->host->i_mutex);
104 switch (origin) {
105 case 0:
106 break;
107 case 1:
108 offset += file->f_pos;
109 break;
110 case 2:
111 offset += dev->regions[dev->region_idx].size*dev->blk_size;
112 break;
113 default:
114 offset = -1;
115 }
116 if (offset < 0) {
117 res = -EINVAL;
118 goto out;
119 }
120
121 file->f_pos = offset;
122 res = file->f_pos;
123
124out:
125 mutex_unlock(&file->f_mapping->host->i_mutex);
126 return res;
127} 103}
128 104
129static ssize_t ps3flash_read(char __user *userbuf, void *kernelbuf, 105static ssize_t ps3flash_read(char __user *userbuf, void *kernelbuf,
diff --git a/drivers/char/tile-srom.c b/drivers/char/tile-srom.c
index 2e2036e940fc..7faeb1cde97d 100644
--- a/drivers/char/tile-srom.c
+++ b/drivers/char/tile-srom.c
@@ -273,32 +273,10 @@ static ssize_t srom_write(struct file *filp, const char __user *buf,
273} 273}
274 274
275/* Provide our own implementation so we can use srom->total_size. */ 275/* Provide our own implementation so we can use srom->total_size. */
276loff_t srom_llseek(struct file *filp, loff_t offset, int origin) 276loff_t srom_llseek(struct file *file, loff_t offset, int origin)
277{ 277{
278 struct srom_dev *srom = filp->private_data; 278 struct srom_dev *srom = file->private_data;
279 279 return fixed_size_llseek(file, offset, origin, srom->total_size);
280 if (mutex_lock_interruptible(&srom->lock))
281 return -ERESTARTSYS;
282
283 switch (origin) {
284 case SEEK_END:
285 offset += srom->total_size;
286 break;
287 case SEEK_CUR:
288 offset += filp->f_pos;
289 break;
290 }
291
292 if (offset < 0 || offset > srom->total_size) {
293 offset = -EINVAL;
294 } else {
295 filp->f_pos = offset;
296 filp->f_version = 0;
297 }
298
299 mutex_unlock(&srom->lock);
300
301 return offset;
302} 280}
303 281
304static ssize_t total_show(struct device *dev, 282static ssize_t total_show(struct device *dev,