From a22c1627f62958ebe1347137d3a9d62ce1209d0a Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Tue, 3 Feb 2004 18:40:13 -0800 Subject: [PATCH] [PATCH] i387: handle copy_from_user() error From: "Randy.Dunlap" Eugene TEO --- arch/i386/kernel/i387.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/arch/i386/kernel/i387.c b/arch/i386/kernel/i387.c index 8bf5feed0a2a3..6556f63d2b90a 100644 --- a/arch/i386/kernel/i387.c +++ b/arch/i386/kernel/i387.c @@ -451,15 +451,18 @@ int get_fpxregs( struct user_fxsr_struct __user *buf, struct task_struct *tsk ) int set_fpxregs( struct task_struct *tsk, struct user_fxsr_struct __user *buf ) { + int ret = 0; + if ( cpu_has_fxsr ) { - __copy_from_user( &tsk->thread.i387.fxsave, buf, - sizeof(struct user_fxsr_struct) ); + if (__copy_from_user( &tsk->thread.i387.fxsave, buf, + sizeof(struct user_fxsr_struct) )) + ret = -EFAULT; /* mxcsr bit 6 and 31-16 must be zero for security reasons */ tsk->thread.i387.fxsave.mxcsr &= 0xffbf; - return 0; } else { - return -EIO; + ret = -EIO; } + return ret; } /* -- 2.53.0