diff options
Diffstat (limited to 'arch/i386/math-emu/reg_ld_str.c')
-rw-r--r-- | arch/i386/math-emu/reg_ld_str.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/arch/i386/math-emu/reg_ld_str.c b/arch/i386/math-emu/reg_ld_str.c index f06ed41d191d..e976caef6498 100644 --- a/arch/i386/math-emu/reg_ld_str.c +++ b/arch/i386/math-emu/reg_ld_str.c | |||
@@ -244,7 +244,8 @@ int FPU_load_int64(long long __user *_s) | |||
244 | 244 | ||
245 | RE_ENTRANT_CHECK_OFF; | 245 | RE_ENTRANT_CHECK_OFF; |
246 | FPU_access_ok(VERIFY_READ, _s, 8); | 246 | FPU_access_ok(VERIFY_READ, _s, 8); |
247 | copy_from_user(&s,_s,8); | 247 | if (copy_from_user(&s,_s,8)) |
248 | FPU_abort; | ||
248 | RE_ENTRANT_CHECK_ON; | 249 | RE_ENTRANT_CHECK_ON; |
249 | 250 | ||
250 | if (s == 0) | 251 | if (s == 0) |
@@ -907,7 +908,8 @@ int FPU_store_int64(FPU_REG *st0_ptr, u_char st0_tag, long long __user *d) | |||
907 | 908 | ||
908 | RE_ENTRANT_CHECK_OFF; | 909 | RE_ENTRANT_CHECK_OFF; |
909 | FPU_access_ok(VERIFY_WRITE,d,8); | 910 | FPU_access_ok(VERIFY_WRITE,d,8); |
910 | copy_to_user(d, &tll, 8); | 911 | if (copy_to_user(d, &tll, 8)) |
912 | FPU_abort; | ||
911 | RE_ENTRANT_CHECK_ON; | 913 | RE_ENTRANT_CHECK_ON; |
912 | 914 | ||
913 | return 1; | 915 | return 1; |
@@ -1336,7 +1338,8 @@ u_char __user *fstenv(fpu_addr_modes addr_modes, u_char __user *d) | |||
1336 | I387.soft.fcs &= ~0xf8000000; | 1338 | I387.soft.fcs &= ~0xf8000000; |
1337 | I387.soft.fos |= 0xffff0000; | 1339 | I387.soft.fos |= 0xffff0000; |
1338 | #endif /* PECULIAR_486 */ | 1340 | #endif /* PECULIAR_486 */ |
1339 | __copy_to_user(d, &control_word, 7*4); | 1341 | if (__copy_to_user(d, &control_word, 7*4)) |
1342 | FPU_abort; | ||
1340 | RE_ENTRANT_CHECK_ON; | 1343 | RE_ENTRANT_CHECK_ON; |
1341 | d += 0x1c; | 1344 | d += 0x1c; |
1342 | } | 1345 | } |
@@ -1359,9 +1362,11 @@ void fsave(fpu_addr_modes addr_modes, u_char __user *data_address) | |||
1359 | FPU_access_ok(VERIFY_WRITE,d,80); | 1362 | FPU_access_ok(VERIFY_WRITE,d,80); |
1360 | 1363 | ||
1361 | /* Copy all registers in stack order. */ | 1364 | /* Copy all registers in stack order. */ |
1362 | __copy_to_user(d, register_base+offset, other); | 1365 | if (__copy_to_user(d, register_base+offset, other)) |
1366 | FPU_abort; | ||
1363 | if ( offset ) | 1367 | if ( offset ) |
1364 | __copy_to_user(d+other, register_base, offset); | 1368 | if (__copy_to_user(d+other, register_base, offset)) |
1369 | FPU_abort; | ||
1365 | RE_ENTRANT_CHECK_ON; | 1370 | RE_ENTRANT_CHECK_ON; |
1366 | 1371 | ||
1367 | finit(); | 1372 | finit(); |