From: Al Viro Date: Sun, 31 Mar 2013 19:18:19 +0000 (-0400) Subject: xtensa simdisk: switch to proc_create_data() X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=a69755b187749e7cc020e17127a54f395aea4eaa;p=openwrt%2Fstaging%2Fblogic.git xtensa simdisk: switch to proc_create_data() Signed-off-by: Al Viro --- diff --git a/arch/xtensa/platforms/iss/simdisk.c b/arch/xtensa/platforms/iss/simdisk.c index f58ffc3b68a8..47ccef7839c9 100644 --- a/arch/xtensa/platforms/iss/simdisk.c +++ b/arch/xtensa/platforms/iss/simdisk.c @@ -214,20 +214,27 @@ static int simdisk_detach(struct simdisk *dev) return err; } -static int proc_read_simdisk(char *page, char **start, off_t off, - int count, int *eof, void *data) +static ssize_t proc_read_simdisk(struct file *file, char __user *buf, + size_t size, loff_t *ppos) { - int len; - struct simdisk *dev = (struct simdisk *) data; - len = sprintf(page, "%s\n", dev->filename ? dev->filename : ""); - return len; + struct simdisk *dev = PDE(file_inode(file))->data; + char *s = dev->filename; + if (s) { + ssize_t n = simple_read_from_buffer(buf, size, ppos, + s, strlen(s)); + if (n < 0) + return n; + buf += n; + size -= n; + } + return simple_read_from_buffer(buf, size, ppos, "\n", 1); } -static int proc_write_simdisk(struct file *file, const char *buffer, - unsigned long count, void *data) +static ssize_t proc_write_simdisk(struct file *file, const char __user *buf, + size_t size, loff_t *ppos) { char *tmp = kmalloc(count + 1, GFP_KERNEL); - struct simdisk *dev = (struct simdisk *) data; + struct simdisk *dev = PDE(file_inode(file))->data; int err; if (tmp == NULL) @@ -256,6 +263,12 @@ out_free: return err; } +static const struct file_operations fops = { + .read = proc_read_simdisk, + .write = proc_write_simdisk, + .llseek = default_llseek, +}; + static int __init simdisk_setup(struct simdisk *dev, int which, struct proc_dir_entry *procdir) { @@ -289,10 +302,7 @@ static int __init simdisk_setup(struct simdisk *dev, int which, set_capacity(dev->gd, 0); add_disk(dev->gd); - dev->procfile = create_proc_entry(tmp, 0644, procdir); - dev->procfile->data = dev; - dev->procfile->read_proc = proc_read_simdisk; - dev->procfile->write_proc = proc_write_simdisk; + dev->procfile = proc_create_data(tmp, 0644, procdir, &fops, dev); return 0; out_alloc_disk: