diff options
Diffstat (limited to 'kernel/trace/ring_buffer.c')
| -rw-r--r-- | kernel/trace/ring_buffer.c | 16 | 
1 files changed, 6 insertions, 10 deletions
| diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 5176e0270f07..bb71a0dc9d69 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -4812,26 +4812,26 @@ int ring_buffer_write(struct trace_buffer *buffer,  	int ret = -EBUSY;  	int cpu; -	preempt_disable_notrace(); +	guard(preempt_notrace)();  	if (atomic_read(&buffer->record_disabled)) -		goto out; +		return -EBUSY;  	cpu = raw_smp_processor_id();  	if (!cpumask_test_cpu(cpu, buffer->cpumask)) -		goto out; +		return -EBUSY;  	cpu_buffer = buffer->buffers[cpu];  	if (atomic_read(&cpu_buffer->record_disabled)) -		goto out; +		return -EBUSY;  	if (length > buffer->max_data_size) -		goto out; +		return -EBUSY;  	if (unlikely(trace_recursive_lock(cpu_buffer))) -		goto out; +		return -EBUSY;  	event = rb_reserve_next_event(buffer, cpu_buffer, length);  	if (!event) @@ -4849,10 +4849,6 @@ int ring_buffer_write(struct trace_buffer *buffer,   out_unlock:  	trace_recursive_unlock(cpu_buffer); - - out: -	preempt_enable_notrace(); -  	return ret;  }  EXPORT_SYMBOL_GPL(ring_buffer_write); | 
