aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/ring_buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/trace/ring_buffer.c')
-rw-r--r--kernel/trace/ring_buffer.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index c634868c2921..7c56c3d06943 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -543,7 +543,7 @@ static void rb_wake_up_waiters(struct irq_work *work)
543 * as data is added to any of the @buffer's cpu buffers. Otherwise 543 * as data is added to any of the @buffer's cpu buffers. Otherwise
544 * it will wait for data to be added to a specific cpu buffer. 544 * it will wait for data to be added to a specific cpu buffer.
545 */ 545 */
546void ring_buffer_wait(struct ring_buffer *buffer, int cpu) 546int ring_buffer_wait(struct ring_buffer *buffer, int cpu)
547{ 547{
548 struct ring_buffer_per_cpu *cpu_buffer; 548 struct ring_buffer_per_cpu *cpu_buffer;
549 DEFINE_WAIT(wait); 549 DEFINE_WAIT(wait);
@@ -557,6 +557,8 @@ void ring_buffer_wait(struct ring_buffer *buffer, int cpu)
557 if (cpu == RING_BUFFER_ALL_CPUS) 557 if (cpu == RING_BUFFER_ALL_CPUS)
558 work = &buffer->irq_work; 558 work = &buffer->irq_work;
559 else { 559 else {
560 if (!cpumask_test_cpu(cpu, buffer->cpumask))
561 return -ENODEV;
560 cpu_buffer = buffer->buffers[cpu]; 562 cpu_buffer = buffer->buffers[cpu];
561 work = &cpu_buffer->irq_work; 563 work = &cpu_buffer->irq_work;
562 } 564 }
@@ -591,6 +593,7 @@ void ring_buffer_wait(struct ring_buffer *buffer, int cpu)
591 schedule(); 593 schedule();
592 594
593 finish_wait(&work->waiters, &wait); 595 finish_wait(&work->waiters, &wait);
596 return 0;
594} 597}
595 598
596/** 599/**