diff options
Diffstat (limited to 'arch/x86/mm/fault.c')
| -rw-r--r-- | arch/x86/mm/fault.c | 6 | 
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index 7d1fa7cd2374..dc8023060456 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -439,7 +439,7 @@ static noinline int vmalloc_fault(unsigned long address)  	 * happen within a race in page table update. In the later  	 * case just flush:  	 */ -	pgd = pgd_offset(current->active_mm, address); +	pgd = (pgd_t *)__va(read_cr3()) + pgd_index(address);  	pgd_ref = pgd_offset_k(address);  	if (pgd_none(*pgd_ref))  		return -1; @@ -737,7 +737,7 @@ no_context(struct pt_regs *regs, unsigned long error_code,  		 * In this case we need to make sure we're not recursively  		 * faulting through the emulate_vsyscall() logic.  		 */ -		if (current_thread_info()->sig_on_uaccess_error && signal) { +		if (current->thread.sig_on_uaccess_err && signal) {  			tsk->thread.trap_nr = X86_TRAP_PF;  			tsk->thread.error_code = error_code | PF_USER;  			tsk->thread.cr2 = address; @@ -1353,7 +1353,7 @@ good_area:  	 * the fault.  Since we never set FAULT_FLAG_RETRY_NOWAIT, if  	 * we get VM_FAULT_RETRY back, the mmap_sem has been unlocked.  	 */ -	fault = handle_mm_fault(mm, vma, address, flags); +	fault = handle_mm_fault(vma, address, flags);  	major |= fault & VM_FAULT_MAJOR;  	/*  |