mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 19:07:52 +00:00
[IA64] make exception handler in copy_user more robust
The exception handler in copy user always expects fault occurs only on user space address and the fall back recovery code is written with that very assumption in mind. Recent source code inspection revealed that while it worked splendid and to the expectation under normal circumstances, It broke down under unexpected condition where some address calculation might go outside the legal address range the original copy_user was called for. This patch is to make copy_user exception handler more robust and to prevent potential memory corruption. Signed-off-by: Ken Chen <kenneth.w.chen@intel.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
parent
63028aa7f5
commit
295bd89279
1 changed files with 3 additions and 0 deletions
|
@ -625,8 +625,11 @@ EK(.ex_handler, (p17) st8 [dst1]=r39,8); \
|
||||||
clrrrb
|
clrrrb
|
||||||
;;
|
;;
|
||||||
alloc saved_pfs_stack=ar.pfs,3,3,3,0
|
alloc saved_pfs_stack=ar.pfs,3,3,3,0
|
||||||
|
cmp.lt p8,p0=A,r0
|
||||||
sub B = dst0, saved_in0 // how many byte copied so far
|
sub B = dst0, saved_in0 // how many byte copied so far
|
||||||
;;
|
;;
|
||||||
|
(p8) mov A = 0; // A shouldn't be negative, cap it
|
||||||
|
;;
|
||||||
sub C = A, B
|
sub C = A, B
|
||||||
sub D = saved_in2, A
|
sub D = saved_in2, A
|
||||||
;;
|
;;
|
||||||
|
|
Loading…
Reference in a new issue