diff options
Diffstat (limited to 'arch/s390/kernel')
| -rw-r--r-- | arch/s390/kernel/idle.c | 3 | ||||
| -rw-r--r-- | arch/s390/kernel/ptrace.c | 7 | ||||
| -rw-r--r-- | arch/s390/kernel/runtime_instr.c | 2 | 
3 files changed, 7 insertions, 5 deletions
diff --git a/arch/s390/kernel/idle.c b/arch/s390/kernel/idle.c index 88bb42ca5008..c73f50649e7e 100644 --- a/arch/s390/kernel/idle.c +++ b/arch/s390/kernel/idle.c @@ -33,14 +33,13 @@ void enabled_wait(void)  		PSW_MASK_IO | PSW_MASK_EXT | PSW_MASK_MCHECK;  	clear_cpu_flag(CIF_NOHZ_DELAY); -	trace_cpu_idle_rcuidle(1, smp_processor_id());  	local_irq_save(flags);  	/* Call the assembler magic in entry.S */  	psw_idle(idle, psw_mask);  	local_irq_restore(flags); -	trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());  	/* Account time spent with enabled wait psw loaded as idle time. */ +	/* XXX seqcount has tracepoints that require RCU */  	write_seqcount_begin(&idle->seqcount);  	idle_time = idle->clock_idle_exit - idle->clock_idle_enter;  	idle->clock_idle_enter = idle->clock_idle_exit = 0ULL; diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c index 11d2f7d05f91..a76dd27fb2e8 100644 --- a/arch/s390/kernel/ptrace.c +++ b/arch/s390/kernel/ptrace.c @@ -1268,7 +1268,6 @@ static bool is_ri_cb_valid(struct runtime_instr_cb *cb)  		cb->pc == 1 &&  		cb->qc == 0 &&  		cb->reserved2 == 0 && -		cb->key == PAGE_DEFAULT_KEY &&  		cb->reserved3 == 0 &&  		cb->reserved4 == 0 &&  		cb->reserved5 == 0 && @@ -1330,7 +1329,11 @@ static int s390_runtime_instr_set(struct task_struct *target,  		kfree(data);  		return -EINVAL;  	} - +	/* +	 * Override access key in any case, since user space should +	 * not be able to set it, nor should it care about it. +	 */ +	ri_cb.key = PAGE_DEFAULT_KEY >> 4;  	preempt_disable();  	if (!target->thread.ri_cb)  		target->thread.ri_cb = data; diff --git a/arch/s390/kernel/runtime_instr.c b/arch/s390/kernel/runtime_instr.c index 125c7f6e8715..1788a5454b6f 100644 --- a/arch/s390/kernel/runtime_instr.c +++ b/arch/s390/kernel/runtime_instr.c @@ -57,7 +57,7 @@ static void init_runtime_instr_cb(struct runtime_instr_cb *cb)  	cb->k = 1;  	cb->ps = 1;  	cb->pc = 1; -	cb->key = PAGE_DEFAULT_KEY; +	cb->key = PAGE_DEFAULT_KEY >> 4;  	cb->v = 1;  }  |