Patch "rxrpc: Disable IRQ, not BH, to take the lock for ->attend_link" has been added to the 6.6-stable tree

gregkh at linuxfoundation.org gregkh at linuxfoundation.org
Thu Jul 30 06:54:31 PDT 2026


This is a note to let you know that I've just added the patch titled

    rxrpc: Disable IRQ, not BH, to take the lock for ->attend_link

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     rxrpc-disable-irq-not-bh-to-take-the-lock-for-attend_link.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable at vger.kernel.org> know about it.


>From d920270a6dbf756384b125ce39c17666a7c0c9f4 Mon Sep 17 00:00:00 2001
From: David Howells <dhowells at redhat.com>
Date: Thu, 12 Dec 2024 20:58:15 +0000
Subject: rxrpc: Disable IRQ, not BH, to take the lock for ->attend_link

From: David Howells <dhowells at redhat.com>

commit d920270a6dbf756384b125ce39c17666a7c0c9f4 upstream.

Use spin_lock_irq(), not spin_lock_bh() to take the lock when accessing the
->attend_link() to stop a delay in the I/O thread due to an interrupt being
taken in the app thread whilst that holds the lock and vice versa.

Fixes: a2ea9a907260 ("rxrpc: Use irq-disabling spinlocks between app and I/O thread")
Signed-off-by: David Howells <dhowells at redhat.com>
cc: Marc Dionne <marc.dionne at auristor.com>
cc: linux-afs at lists.infradead.org
Link: https://patch.msgid.link/2870146.1734037095@warthog.procyon.org.uk
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
---
 net/rxrpc/io_thread.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

--- a/net/rxrpc/io_thread.c
+++ b/net/rxrpc/io_thread.c
@@ -423,9 +423,9 @@ int rxrpc_io_thread(void *data)
 						struct rxrpc_connection,
 						attend_link);
 		if (conn) {
-			spin_lock_bh(&local->lock);
+			spin_lock_irq(&local->lock);
 			list_del_init(&conn->attend_link);
-			spin_unlock_bh(&local->lock);
+			spin_unlock_irq(&local->lock);
 
 			rxrpc_input_conn_event(conn, NULL);
 			rxrpc_put_connection(conn, rxrpc_conn_put_poke);
@@ -440,9 +440,9 @@ int rxrpc_io_thread(void *data)
 		if ((call = list_first_entry_or_null(&local->call_attend_q,
 						     struct rxrpc_call,
 						     attend_link))) {
-			spin_lock_bh(&local->lock);
+			spin_lock_irq(&local->lock);
 			list_del_init(&call->attend_link);
-			spin_unlock_bh(&local->lock);
+			spin_unlock_irq(&local->lock);
 
 			trace_rxrpc_call_poked(call);
 			rxrpc_input_call_event(call, NULL);


Patches currently in stable-queue which might be from dhowells at redhat.com are

queue-6.6/rxrpc-fix-notification-vs-call-release-vs-recvmsg.patch
queue-6.6/rxrpc-use-irq-disabling-spinlocks-between-app-and-i-o-thread.patch
queue-6.6/rxrpc-pull-out-certain-app-callback-funcs-into-an-ops-table.patch
queue-6.6/rxrpc-disable-irq-not-bh-to-take-the-lock-for-attend_link.patch
queue-6.6/rxrpc-fix-socket-notification-race.patch
queue-6.6/rxrpc-serialize-kernel-accept-preallocation-with-socket-teardown.patch
queue-6.6/afs-annotate-struct-afs_addr_list-with-__counted_by.patch
queue-6.6/rxrpc-don-t-need-barrier-for-tx_bottom-and-acks_hard_ack.patch
queue-6.6/afs-turn-the-afs_addr_list-address-array-into-an-array-of-structs.patch



More information about the linux-afs mailing list