diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c
index 77a4627f2507..5ebaee7683ef 100644
--- a/arch/powerpc/kernel/rtas_flash.c
+++ b/arch/powerpc/kernel/rtas_flash.c
@@ -269,7 +269,7 @@ static size_t get_flash_status_msg(int status, char *buf)
}
/* Reading the proc file will show status (not the firmware contents) */
-static ssize_t rtas_flash_read_msg(struct file *file, char __user *buf,
+static ssize_t rtas_flash_read_msg(struct file *file, char *buf,
size_t count, loff_t *ppos)
{
struct rtas_update_flash_t *const uf = &rtas_update_flash_data;@@ -283,10 +283,10 @@ static ssize_t rtas_flash_read_msg(struct file *file, char __user *buf,
/* Read as text message */
len = get_flash_status_msg(status, msg);
- return simple_read_from_buffer(buf, count, ppos, msg, len);
+ return memory_read_from_buffer(buf, count, ppos, msg, len);
}
-static ssize_t rtas_flash_read_num(struct file *file, char __user *buf,
+static ssize_t rtas_flash_read_num(struct file *file, char *buf,
size_t count, loff_t *ppos)
{
struct rtas_update_flash_t *const uf = &rtas_update_flash_data;@@ -299,7 +299,7 @@ static ssize_t rtas_flash_read_num(struct file *file, char __user *buf,
/* Read as number */
sprintf(msg, "%d\n", status);
- return simple_read_from_buffer(buf, count, ppos, msg, strlen(msg));
+ return memory_read_from_buffer(buf, count, ppos, msg, strlen(msg));
}
/* We could be much more efficient here. But to keep this function
@@ -370,7 +370,7 @@ static void manage_flash(struct rtas_manage_flash_t *args_buf, unsigned int op)
args_buf->status = rc;
}
-static ssize_t manage_flash_read(struct file *file, char __user *buf,
+static ssize_t manage_flash_read(struct file *file, char *buf,
size_t count, loff_t *ppos)
{
struct rtas_manage_flash_t *const args_buf = &rtas_manage_flash_data;@@ -382,7 +382,7 @@ static ssize_t manage_flash_read(struct file *file, char __user *buf,
mutex_unlock(&rtas_manage_flash_mutex);
msglen = sprintf(msg, "%d\n", status);
- return simple_read_from_buffer(buf, count, ppos, msg, msglen);
+ return memory_read_from_buffer(buf, count, ppos, msg, msglen);
}
static ssize_t manage_flash_write(struct file *file, char *buf,
@@ -450,7 +450,7 @@ static int get_validate_flash_msg(struct rtas_validate_flash_t *args_buf,
return n;
}
-static ssize_t validate_flash_read(struct file *file, char __user *buf,
+static ssize_t validate_flash_read(struct file *file, char *buf,
size_t count, loff_t *ppos)
{
struct rtas_validate_flash_t *const args_buf =@@ -462,7 +462,7 @@ static ssize_t validate_flash_read(struct file *file, char __user *buf,
msglen = get_validate_flash_msg(args_buf, msg, VALIDATE_MSG_LEN);
mutex_unlock(&rtas_validate_flash_mutex);
- return simple_read_from_buffer(buf, count, ppos, msg, msglen);
+ return memory_read_from_buffer(buf, count, ppos, msg, msglen);
}
static ssize_t validate_flash_write(struct file *file, char *buf,
@@ -623,7 +623,7 @@ static const struct rtas_flash_file rtas_flash_files[] = {
.handle = RTAS_FN_IBM_UPDATE_FLASH_64_AND_REBOOT,
.status = &rtas_update_flash_data.status,
.ops.proc_flags = PROC_ENTRY_SHORT_WRITES,
- .ops.proc_read = rtas_flash_read_msg,
+ .ops.proc_read_buf = rtas_flash_read_msg,
.ops.proc_write_buf = rtas_flash_write,
.ops.proc_write_size = RTAS_BLK_SIZE,
.ops.proc_release = rtas_flash_release,@@ -634,7 +634,7 @@ static const struct rtas_flash_file rtas_flash_files[] = {
.handle = RTAS_FN_IBM_UPDATE_FLASH_64_AND_REBOOT,
.status = &rtas_update_flash_data.status,
.ops.proc_flags = PROC_ENTRY_SHORT_WRITES,
- .ops.proc_read = rtas_flash_read_num,
+ .ops.proc_read_buf = rtas_flash_read_num,
.ops.proc_write_buf = rtas_flash_write,
.ops.proc_write_size = RTAS_BLK_SIZE,
.ops.proc_release = rtas_flash_release,@@ -645,7 +645,7 @@ static const struct rtas_flash_file rtas_flash_files[] = {
.handle = RTAS_FN_IBM_VALIDATE_FLASH_IMAGE,
.status = &rtas_validate_flash_data.status,
.ops.proc_flags = PROC_ENTRY_SHORT_WRITES,
- .ops.proc_read = validate_flash_read,
+ .ops.proc_read_buf = validate_flash_read,
.ops.proc_write_buf = validate_flash_write,
.ops.proc_write_size = VALIDATE_BUF_SIZE,
.ops.proc_release = validate_flash_release,@@ -655,7 +655,7 @@ static const struct rtas_flash_file rtas_flash_files[] = {
.filename = "powerpc/rtas/" MANAGE_FLASH_NAME,
.handle = RTAS_FN_IBM_MANAGE_FLASH_IMAGE,
.status = &rtas_manage_flash_data.status,
- .ops.proc_read = manage_flash_read,
+ .ops.proc_read_buf = manage_flash_read,
.ops.proc_write_buf = manage_flash_write,
.ops.proc_lseek = default_llseek,
}diff --git a/arch/powerpc/kernel/rtasd.c b/arch/powerpc/kernel/rtasd.c
index dd0df5e164a3..360ed2e30fd5 100644
--- a/arch/powerpc/kernel/rtasd.c
+++ b/arch/powerpc/kernel/rtasd.c
@@ -291,26 +291,18 @@ static int rtas_log_release(struct inode * inode, struct file * file)
* know that we can safely clear the events in NVRAM.
* Next we'll sit and wait for something else to log.
*/
-static ssize_t rtas_log_read(struct file * file, char __user * buf,
+static ssize_t rtas_log_read(struct file * file, char * buf,
size_t count, loff_t *ppos)
{
int error;
- char *tmp;
unsigned long s;
unsigned long offset;
- if (!buf || count < rtas_error_log_buffer_max)
+ if (count < rtas_error_log_buffer_max)
return -EINVAL;
count = rtas_error_log_buffer_max;
- if (!access_ok(buf, count))
- return -EFAULT;
-
- tmp = kmalloc(count, GFP_KERNEL);
- if (!tmp)
- return -ENOMEM;
-
spin_lock_irqsave(&rtasd_log_lock, s);
/* if it's 0, then we know we got the last one (the one in NVRAM) */@@ -338,15 +330,14 @@ static ssize_t rtas_log_read(struct file * file, char __user * buf,
}
offset = rtas_error_log_buffer_max * (rtas_log_start & LOG_NUMBER_MASK);
- memcpy(tmp, &rtas_log_buf[offset], count);
+ memcpy(buf, &rtas_log_buf[offset], count);
rtas_log_start += 1;
rtas_log_size -= 1;
spin_unlock_irqrestore(&rtasd_log_lock, s);
- error = copy_to_user(buf, tmp, count) ? -EFAULT : count;
+ error = count;
out:
- kfree(tmp);
return error;
}
@@ -359,7 +350,7 @@ static __poll_t rtas_log_poll(struct file *file, poll_table * wait)
}
static const struct proc_ops rtas_log_proc_ops = {
- .proc_read = rtas_log_read,
+ .proc_read_buf = rtas_log_read,
.proc_poll = rtas_log_poll,
.proc_open = rtas_log_open,
.proc_release = rtas_log_release,
--
2.53.0