diff options
Diffstat (limited to 'kernel/trace/ring_buffer.c')
| -rw-r--r-- | kernel/trace/ring_buffer.c | 5 |
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 | */ |
| 546 | void ring_buffer_wait(struct ring_buffer *buffer, int cpu) | 546 | int 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 | /** |
