last_radio_log: switch to proc_create()
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 31 Mar 2013 19:41:41 +0000 (15:41 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 9 Apr 2013 18:13:32 +0000 (14:13 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/arm/mach-msm/last_radio_log.c

index 1e243f46a9699341b9e35310632fcd6ed25fa3b4..7777767ee89ae0aecf390cf4396574e76b02517b 100644 (file)
@@ -31,20 +31,8 @@ extern void *smem_item(unsigned id, unsigned *size);
 static ssize_t last_radio_log_read(struct file *file, char __user *buf,
                        size_t len, loff_t *offset)
 {
-       loff_t pos = *offset;
-       ssize_t count;
-
-       if (pos >= radio_log_size)
-               return 0;
-
-       count = min(len, (size_t)(radio_log_size - pos));
-       if (copy_to_user(buf, radio_log_base + pos, count)) {
-               pr_err("%s: copy to user failed\n", __func__);
-               return -EFAULT;
-       }
-
-       *offset += count;
-       return count;
+       return simple_read_from_buffer(buf, len, offset,
+                               radio_log_base, radio_log_size);
 }
 
 static struct file_operations last_radio_log_fops = {
@@ -67,7 +55,8 @@ void msm_init_last_radio_log(struct module *owner)
                return;
        }
 
-       entry = create_proc_entry("last_radio_log", S_IFREG | S_IRUGO, NULL);
+       entry = proc_create("last_radio_log", S_IRUGO, NULL,
+                               &last_radio_log_fops);
        if (!entry) {
                pr_err("%s: could not create proc entry for radio log\n",
                                __func__);
@@ -77,7 +66,6 @@ void msm_init_last_radio_log(struct module *owner)
        pr_err("%s: last radio log is %d bytes long\n", __func__,
                radio_log_size);
        last_radio_log_fops.owner = owner;
-       entry->proc_fops = &last_radio_log_fops;
        entry->size = radio_log_size;
 }
 EXPORT_SYMBOL(msm_init_last_radio_log);