From: Adam Borowski Date: Sat, 3 Jun 2017 07:35:08 +0000 (+0200) Subject: vt: use memdup_user in PIO_UNIMAP ioctl X-Git-Tag: v4.13-rc1~183^2~35^2~1 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=4f1be1b5d9aaef9c887140de5f2b9c2a989577d8;p=karo-tx-linux.git vt: use memdup_user in PIO_UNIMAP ioctl Again, a nice linear transfer that simplifies the code. Signed-off-by: Adam Borowski Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/tty/vt/consolemap.c b/drivers/tty/vt/consolemap.c index c6a692f63a9b..a5f88cf0f61d 100644 --- a/drivers/tty/vt/consolemap.c +++ b/drivers/tty/vt/consolemap.c @@ -540,14 +540,9 @@ int con_set_unimap(struct vc_data *vc, ushort ct, struct unipair __user *list) if (!ct) return 0; - unilist = kmalloc_array(ct, sizeof(struct unipair), GFP_KERNEL); - if (!unilist) - return -ENOMEM; - - for (i = ct, plist = unilist; i; i--, plist++, list++) { - __get_user(plist->unicode, &list->unicode); - __get_user(plist->fontpos, &list->fontpos); - } + unilist = memdup_user(list, ct * sizeof(struct unipair)); + if (IS_ERR(unilist)) + return PTR_ERR(unilist); console_lock();