summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorBoqun Feng <boqun@kernel.org>2026-08-27 12:48:35 -0700
committerThomas Gleixner <tglx@kernel.org>2026-08-30 20:25:21 +0200
commit2af470916a208b576ac9975d221d9a378cf8ace9 (patch)
tree79860726a1c7cf61b237970953e3e9d6f7fdc544 /include
parenta155ac8f0c523bd53f412196dcbb104ad1f4595f (diff)
downloadlinux-stable-2af470916a208b576ac9975d221d9a378cf8ace9.tar.gz
linux-stable-2af470916a208b576ac9975d221d9a378cf8ace9.zip
preempt: Remove hardirq_disable_count()
It turns out the previous usage of hardirq_disable_count() in __irq_exit_rcu() would cause softirq pending issues. Without that usage, hardirq_disable_count() doesn't need to exist, so remove it. Also move hardirq_disable_enter/exit() into the Rust specific interrupt_rc header. [ tglx: Move the helpers over ] Signed-off-by: Boqun Feng <boqun@kernel.org> Signed-off-by: Thomas Gleixner <tglx@kernel.org> Link: https://patch.msgid.link/20260827194835.38968-1-boqun@kernel.org
Diffstat (limited to 'include')
-rw-r--r--include/linux/interrupt_rc.h3
-rw-r--r--include/linux/preempt.h4
2 files changed, 3 insertions, 4 deletions
diff --git a/include/linux/interrupt_rc.h b/include/linux/interrupt_rc.h
index e68e1bedb..a9ed937a8 100644
--- a/include/linux/interrupt_rc.h
+++ b/include/linux/interrupt_rc.h
@@ -52,6 +52,9 @@ extern void _local_interrupt_save_state(unsigned long flags);
extern void _local_interrupt_enable(void);
#endif /* !MODULE */
+#define hardirq_disable_enter() __preempt_count_add_return(HARDIRQ_DISABLE_OFFSET)
+#define hardirq_disable_exit() __preempt_count_sub_return(HARDIRQ_DISABLE_OFFSET)
+
static inline void local_interrupt_disable(void)
{
int new_count;
diff --git a/include/linux/preempt.h b/include/linux/preempt.h
index 8299657f0..2e689de7b 100644
--- a/include/linux/preempt.h
+++ b/include/linux/preempt.h
@@ -168,10 +168,6 @@ static __always_inline unsigned char interrupt_context_level(void)
#define in_softirq() (softirq_count())
#define in_interrupt() (irq_count())
-#define hardirq_disable_count() ((preempt_count() & HARDIRQ_DISABLE_MASK) >> HARDIRQ_DISABLE_SHIFT)
-#define hardirq_disable_enter() __preempt_count_add_return(HARDIRQ_DISABLE_OFFSET)
-#define hardirq_disable_exit() __preempt_count_sub_return(HARDIRQ_DISABLE_OFFSET)
-
/*
* The preempt_count offset after preempt_disable();
*/