From a46a1ad097419aeea7350987dd95230f50d90392 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Fri, 15 Nov 2024 08:53:41 +0000
Subject: [PATCH] 固定GMAC1 网卡名为 eth3
---
kernel/kernel/trace/ring_buffer.c | 18 +++++++++++++++---
1 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/kernel/kernel/trace/ring_buffer.c b/kernel/kernel/trace/ring_buffer.c
index 49ebb8c..391151f 100644
--- a/kernel/kernel/trace/ring_buffer.c
+++ b/kernel/kernel/trace/ring_buffer.c
@@ -3165,8 +3165,8 @@
static __always_inline int
trace_recursive_lock(struct ring_buffer_per_cpu *cpu_buffer)
{
- unsigned int val = cpu_buffer->current_context;
- unsigned long pc = preempt_count();
+ unsigned int val;
+ unsigned long pc = preempt_count(), flags;
int bit;
if (!(pc & (NMI_MASK | HARDIRQ_MASK | SOFTIRQ_OFFSET)))
@@ -3175,6 +3175,10 @@
bit = pc & NMI_MASK ? RB_CTX_NMI :
pc & HARDIRQ_MASK ? RB_CTX_IRQ : RB_CTX_SOFTIRQ;
+ flags = hard_cond_local_irq_save();
+
+ val = cpu_buffer->current_context;
+
if (unlikely(val & (1 << (bit + cpu_buffer->nest)))) {
/*
* It is possible that this was called by transitioning
@@ -3182,12 +3186,16 @@
* been updated yet. In this case, use the TRANSITION bit.
*/
bit = RB_CTX_TRANSITION;
- if (val & (1 << (bit + cpu_buffer->nest)))
+ if (val & (1 << (bit + cpu_buffer->nest))) {
+ hard_cond_local_irq_restore(flags);
return 1;
+ }
}
val |= (1 << (bit + cpu_buffer->nest));
cpu_buffer->current_context = val;
+
+ hard_cond_local_irq_restore(flags);
return 0;
}
@@ -3195,8 +3203,12 @@
static __always_inline void
trace_recursive_unlock(struct ring_buffer_per_cpu *cpu_buffer)
{
+ unsigned long flags;
+
+ flags = hard_cond_local_irq_save();
cpu_buffer->current_context &=
cpu_buffer->current_context - (1 << cpu_buffer->nest);
+ hard_cond_local_irq_restore(flags);
}
/* The recursive locking above uses 5 bits */
--
Gitblit v1.6.2