diff options
Diffstat (limited to 'arch/powerpc/kernel/signal_64.c')
| -rw-r--r-- | arch/powerpc/kernel/signal_64.c | 4 | 
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c index 20756dfb9f34..c676ecec0869 100644 --- a/arch/powerpc/kernel/signal_64.c +++ b/arch/powerpc/kernel/signal_64.c @@ -438,6 +438,10 @@ static long restore_tm_sigcontexts(struct pt_regs *regs,  	/* get MSR separately, transfer the LE bit if doing signal return */  	err |= __get_user(msr, &sc->gp_regs[PT_MSR]); +	/* Don't allow reserved mode. */ +	if (MSR_TM_RESV(msr)) +		return -EINVAL; +  	/* pull in MSR TM from user context */  	regs->msr = (regs->msr & ~MSR_TS_MASK) | (msr & MSR_TS_MASK);  | 
