Commit b808b1d6 authored by Al Viro's avatar Al Viro

don't open-code generic_file_llseek_size()

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent e1a63bbc
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/kmsg_dump.h> #include <linux/kmsg_dump.h>
#include <linux/pagemap.h>
#include <linux/pstore.h> #include <linux/pstore.h>
#include <linux/zlib.h> #include <linux/zlib.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
...@@ -733,24 +734,10 @@ static void oops_to_nvram(struct kmsg_dumper *dumper, ...@@ -733,24 +734,10 @@ static void oops_to_nvram(struct kmsg_dumper *dumper,
static loff_t dev_nvram_llseek(struct file *file, loff_t offset, int origin) static loff_t dev_nvram_llseek(struct file *file, loff_t offset, int origin)
{ {
int size;
if (ppc_md.nvram_size == NULL) if (ppc_md.nvram_size == NULL)
return -ENODEV; return -ENODEV;
size = ppc_md.nvram_size(); return generic_file_llseek_size(file, offset, origin, MAX_LFS_FILESIZE,
ppc_md.nvram_size());
switch (origin) {
case 1:
offset += file->f_pos;
break;
case 2:
offset += size;
break;
}
if (offset < 0)
return -EINVAL;
file->f_pos = offset;
return file->f_pos;
} }
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <linux/fcntl.h> #include <linux/fcntl.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/pagemap.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/nvram.h> #include <asm/nvram.h>
#ifdef CONFIG_PPC_PMAC #ifdef CONFIG_PPC_PMAC
...@@ -33,24 +34,8 @@ static ssize_t nvram_len; ...@@ -33,24 +34,8 @@ static ssize_t nvram_len;
static loff_t nvram_llseek(struct file *file, loff_t offset, int origin) static loff_t nvram_llseek(struct file *file, loff_t offset, int origin)
{ {
switch (origin) { return generic_file_llseek_size(file, offset, origin,
case 0: MAX_LFS_FILESIZE, nvram_len);
break;
case 1:
offset += file->f_pos;
break;
case 2:
offset += nvram_len;
break;
default:
offset = -1;
}
if (offset < 0)
return -EINVAL;
file->f_pos = offset;
return file->f_pos;
} }
static ssize_t read_nvram(struct file *file, char __user *buf, static ssize_t read_nvram(struct file *file, char __user *buf,
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <linux/uio.h> #include <linux/uio.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/pagemap.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/pgtable.h> #include <asm/pgtable.h>
...@@ -451,31 +452,8 @@ mbcs_sram_write(struct file * fp, const char __user *buf, size_t len, loff_t * o ...@@ -451,31 +452,8 @@ mbcs_sram_write(struct file * fp, const char __user *buf, size_t len, loff_t * o
static loff_t mbcs_sram_llseek(struct file * filp, loff_t off, int whence) static loff_t mbcs_sram_llseek(struct file * filp, loff_t off, int whence)
{ {
loff_t newpos; return generic_file_llseek_size(filp, off, whence, MAX_LFS_FILESIZE,
MBCS_SRAM_SIZE);
switch (whence) {
case SEEK_SET:
newpos = off;
break;
case SEEK_CUR:
newpos = filp->f_pos + off;
break;
case SEEK_END:
newpos = MBCS_SRAM_SIZE + off;
break;
default: /* can't happen */
return -EINVAL;
}
if (newpos < 0)
return -EINVAL;
filp->f_pos = newpos;
return newpos;
} }
static uint64_t mbcs_pioaddr(struct mbcs_soft *soft, uint64_t offset) static uint64_t mbcs_pioaddr(struct mbcs_soft *soft, uint64_t offset)
......
...@@ -110,6 +110,7 @@ ...@@ -110,6 +110,7 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/pagemap.h>
static DEFINE_MUTEX(nvram_mutex); static DEFINE_MUTEX(nvram_mutex);
...@@ -213,21 +214,8 @@ void nvram_set_checksum(void) ...@@ -213,21 +214,8 @@ void nvram_set_checksum(void)
static loff_t nvram_llseek(struct file *file, loff_t offset, int origin) static loff_t nvram_llseek(struct file *file, loff_t offset, int origin)
{ {
switch (origin) { return generic_file_llseek_size(file, offset, origin, MAX_LFS_FILESIZE,
case 0: NVRAM_BYTES);
/* nothing to do */
break;
case 1:
offset += file->f_pos;
break;
case 2:
offset += NVRAM_BYTES;
break;
default:
return -EINVAL;
}
return (offset >= 0) ? (file->f_pos = offset) : -EINVAL;
} }
static ssize_t nvram_read(struct file *file, char __user *buf, static ssize_t nvram_read(struct file *file, char __user *buf,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment