Commit 267239cc authored by Heiko Carstens's avatar Heiko Carstens Committed by Martin Schwidefsky

s390/vmcp: fix uaccess check and avoid undefined behavior

The vmcp device driver should return -EFAULT if get_user() fails, due
to an invalid user space address. In addition the buffer size value
from user space is passed unchecked to get_order(). The return value
of get_order(0) undefined.

Therefore explicitly test for zero before calling get_order() and also
return -EFAULT if get_user() fails.
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 34ad7cdc
...@@ -150,7 +150,9 @@ static long vmcp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) ...@@ -150,7 +150,9 @@ static long vmcp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
get_order(session->bufsize)); get_order(session->bufsize));
session->response=NULL; session->response=NULL;
temp = get_user(session->bufsize, argp); temp = get_user(session->bufsize, argp);
if (get_order(session->bufsize) > 8) { if (temp)
session->bufsize = PAGE_SIZE;
if (!session->bufsize || get_order(session->bufsize) > 8) {
session->bufsize = PAGE_SIZE; session->bufsize = PAGE_SIZE;
temp = -EINVAL; temp = -EINVAL;
} }
......
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