Re: [QUESTION] problems report: rcu_read_unlock_special() called in irq_exit() causes dead loop

From: Qi Xi
Date: Wed Jul 02 2025 - 05:18:10 EST


Hi Joel,

After applying the 2 patches, the problem still exists. Compared to the previous fixes which did solve the problem, the difference is ct_in_irq() in the first patch.

I am wondering why "nesting != CT_NESTING_IRQ_NONIDLE" is added?


(previous fix: problem is solved)

+bool ct_in_irq(void)
+{
+    return ct_nmi_nesting() != 0;
+}

(current fix: problem still exists)

+bool ct_in_irq(void)
+{
+    long nesting = ct_nmi_nesting();
+
+    return (nesting && nesting != CT_NESTING_IRQ_NONIDLE);
+}


On 2025/7/1 21:29, Joel Fernandes wrote:

On 7/1/2025 5:20 AM, Qi Xi wrote:
Hello everyone,

Friendly ping about this problem :)

Ah, thanks for checking. The fix is slated for kernel 6.17.

If you want to test it, could you apply it in advance from the RCU tree?

You need these 2:

https://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux.git/commit/?h=next&id=6758c93749f8bf09b9282f100c5dd0a5c501f91c

https://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux.git/commit/?h=next&id=3cd298bf3bb69e3bca6abfe97e1b44ffa37f3dee

Thanks.