diff options
Diffstat (limited to 'kernel/events/core.c')
| -rw-r--r-- | kernel/events/core.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/kernel/events/core.c b/kernel/events/core.c index 2d5fe26551f8..67612ce359ad 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -7587,6 +7587,10 @@ static void perf_event_switch(struct task_struct *task,  		},  	}; +	if (!sched_in && task->state == TASK_RUNNING) +		switch_event.event_id.header.misc |= +				PERF_RECORD_MISC_SWITCH_OUT_PREEMPT; +  	perf_iterate_sb(perf_event_switch_output,  		       &switch_event,  		       NULL); @@ -10205,9 +10209,9 @@ static int perf_copy_attr(struct perf_event_attr __user *uattr,  		 * __u16 sample size limit.  		 */  		if (attr->sample_stack_user >= USHRT_MAX) -			ret = -EINVAL; +			return -EINVAL;  		else if (!IS_ALIGNED(attr->sample_stack_user, sizeof(u64))) -			ret = -EINVAL; +			return -EINVAL;  	}  	if (!attr->sample_max_stack) |