Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

r128: don't open-code memdup_user()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro 3d26759c f1ee6162

+6 -17
+6 -17
drivers/gpu/drm/r128/r128_state.c
··· 982 982 983 983 xbuf_size = count * sizeof(*x); 984 984 ybuf_size = count * sizeof(*y); 985 - x = kmalloc(xbuf_size, GFP_KERNEL); 986 - if (x == NULL) 987 - return -ENOMEM; 988 - y = kmalloc(ybuf_size, GFP_KERNEL); 989 - if (y == NULL) { 985 + x = memdup_user(depth->x, xbuf_size); 986 + if (IS_ERR(x)) 987 + return PTR_ERR(x); 988 + y = memdup_user(depth->y, ybuf_size); 989 + if (IS_ERR(y)) { 990 990 kfree(x); 991 - return -ENOMEM; 991 + return PTR_ERR(y); 992 992 } 993 - if (copy_from_user(x, depth->x, xbuf_size)) { 994 - kfree(x); 995 - kfree(y); 996 - return -EFAULT; 997 - } 998 - if (copy_from_user(y, depth->y, xbuf_size)) { 999 - kfree(x); 1000 - kfree(y); 1001 - return -EFAULT; 1002 - } 1003 - 1004 993 buffer_size = depth->n * sizeof(u32); 1005 994 buffer = memdup_user(depth->buffer, buffer_size); 1006 995 if (IS_ERR(buffer)) {