if (!cpumask_test_cpu(cpu, buffer->cpumask))
                return;
 
+       /* prevent another thread from changing buffer sizes */
+       mutex_lock(&buffer->mutex);
+
        atomic_inc(&cpu_buffer->resize_disabled);
        atomic_inc(&cpu_buffer->record_disabled);
 
 
        atomic_dec(&cpu_buffer->record_disabled);
        atomic_dec(&cpu_buffer->resize_disabled);
+
+       mutex_unlock(&buffer->mutex);
 }
 EXPORT_SYMBOL_GPL(ring_buffer_reset_cpu);
 
        struct ring_buffer_per_cpu *cpu_buffer;
        int cpu;
 
+       /* prevent another thread from changing buffer sizes */
+       mutex_lock(&buffer->mutex);
+
        for_each_online_buffer_cpu(buffer, cpu) {
                cpu_buffer = buffer->buffers[cpu];
 
                atomic_dec(&cpu_buffer->record_disabled);
                atomic_dec(&cpu_buffer->resize_disabled);
        }
+
+       mutex_unlock(&buffer->mutex);
 }
 
 /**