don't open-code generic_file_llseek_size()
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 6 Dec 2015 02:39:06 +0000 (21:39 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 9 Dec 2015 18:00:45 +0000 (13:00 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/powerpc/kernel/nvram_64.c
drivers/char/generic_nvram.c
drivers/char/mbcs.c
drivers/char/nvram.c

index 32e26526f7e4e0fc5d22adda109bb075a044ae70..0cab9e8c37948685b8128bd156a15b1ef40e6936 100644 (file)
@@ -27,6 +27,7 @@
 #include <linux/slab.h>
 #include <linux/spinlock.h>
 #include <linux/kmsg_dump.h>
+#include <linux/pagemap.h>
 #include <linux/pstore.h>
 #include <linux/zlib.h>
 #include <asm/uaccess.h>
@@ -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)
 {
-       int size;
-
        if (ppc_md.nvram_size == NULL)
                return -ENODEV;
-       size = 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;
+       return generic_file_llseek_size(file, offset, origin, MAX_LFS_FILESIZE,
+                                       ppc_md.nvram_size());
 }
 
 
index 6c4f4b5a9dd3aebb80920b2cae781c4a858fccac..073db9558379366dcde41921c059bbf5287b4341 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/fcntl.h>
 #include <linux/init.h>
 #include <linux/mutex.h>
+#include <linux/pagemap.h>
 #include <asm/uaccess.h>
 #include <asm/nvram.h>
 #ifdef CONFIG_PPC_PMAC
@@ -33,24 +34,8 @@ static ssize_t nvram_len;
 
 static loff_t nvram_llseek(struct file *file, loff_t offset, int origin)
 {
-       switch (origin) {
-       case 0:
-               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;
+       return generic_file_llseek_size(file, offset, origin,
+                                       MAX_LFS_FILESIZE, nvram_len);
 }
 
 static ssize_t read_nvram(struct file *file, char __user *buf,
index e5d3e3f7a49bcdbbb31d8e05045b8125d561b210..67d426470e5341df2c88afe1b509742b9923603a 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/uio.h>
 #include <linux/mutex.h>
 #include <linux/slab.h>
+#include <linux/pagemap.h>
 #include <asm/io.h>
 #include <asm/uaccess.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
 
 static loff_t mbcs_sram_llseek(struct file * filp, loff_t off, int whence)
 {
-       loff_t newpos;
-
-       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;
+       return generic_file_llseek_size(filp, off, whence, MAX_LFS_FILESIZE,
+                                       MBCS_SRAM_SIZE);
 }
 
 static uint64_t mbcs_pioaddr(struct mbcs_soft *soft, uint64_t offset)
index 97c2d8d433d6227f82f8524da27ecbd8929d9cd8..01292328a45677d7da51e662c3c94dec2c5e970c 100644 (file)
 #include <linux/io.h>
 #include <linux/uaccess.h>
 #include <linux/mutex.h>
+#include <linux/pagemap.h>
 
 
 static DEFINE_MUTEX(nvram_mutex);
@@ -213,21 +214,8 @@ void nvram_set_checksum(void)
 
 static loff_t nvram_llseek(struct file *file, loff_t offset, int origin)
 {
-       switch (origin) {
-       case 0:
-               /* 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;
+       return generic_file_llseek_size(file, offset, origin, MAX_LFS_FILESIZE,
+                                       NVRAM_BYTES);
 }
 
 static ssize_t nvram_read(struct file *file, char __user *buf,
This page took 0.045513 seconds and 5 git commands to generate.