diff options
Diffstat (limited to 'arch/arm/mm/extable.c')
| -rw-r--r-- | arch/arm/mm/extable.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/mm/extable.c b/arch/arm/mm/extable.c index 9d285626bc7..312e15e6d00 100644 --- a/arch/arm/mm/extable.c +++ b/arch/arm/mm/extable.c @@ -9,8 +9,13 @@ int fixup_exception(struct pt_regs *regs)  	const struct exception_table_entry *fixup;  	fixup = search_exception_tables(instruction_pointer(regs)); -	if (fixup) +	if (fixup) {  		regs->ARM_pc = fixup->fixup; +#ifdef CONFIG_THUMB2_KERNEL +		/* Clear the IT state to avoid nasty surprises in the fixup */ +		regs->ARM_cpsr &= ~PSR_IT_MASK; +#endif +	}  	return fixup != NULL;  }  | 
