* [PATCH net 0/5] rxrpc: Miscellaneous fixes
@ 2026-06-09 14:09 David Howells
2026-06-09 14:09 ` [PATCH net 1/5] rxrpc: rxrpc_verify_data ensure rx_dec_buffer alloc David Howells
` (5 more replies)
0 siblings, 6 replies; 20+ messages in thread
From: David Howells @ 2026-06-09 14:09 UTC (permalink / raw)
To: netdev
Cc: David Howells, Marc Dionne, Jakub Kicinski, David S. Miller,
Eric Dumazet, Paolo Abeni, Simon Horman, linux-afs, linux-kernel
Here are some miscellaneous AF_RXRPC fixes:
(1) Make sure rxrpc_verify_data() allocates a buffer, even if the DATA packet
being looked at is zero length to avoid potential NULL-pointer
exceptions.
(2) Don't move an OOB message (e.g. an RxGK CHALLENGE) off the receive queue
onto the pending queue in recvmsg() if MSG_PEEK is specified.
(3) Fix a potential UAF in rxgk_issue_challenge() in which a tracepoint
refers to memory just freed by a different pointer.
(4) Fix afs net namespace teardown to cancel the incoming call preallocation
charger before we disable listening (which will delete the preallocation
queue).
(5) Fix rxrpc_kernel_charge_accept() to use the socket mutex to defend
against listen(0)/shutdown simultaneously deleting the preallocation queue.
David
The patches can be found here also:
http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=rxrpc-fixes
David Howells (2):
rxrpc: Fix UAF in rxgk_issue_challenge()
afs: Fix netns teardown to cancel the preallocation charger
Hyunwoo Kim (1):
rxrpc: Don't move a peeked OOB message onto the pending queue
Jeffrey Altman (1):
rxrpc: rxrpc_verify_data ensure rx_dec_buffer alloc
Li Daming (1):
rxrpc: serialize kernel accept preallocation with socket teardown
fs/afs/rxrpc.c | 6 ++++--
net/rxrpc/call_accept.c | 25 +++++++++++++++++++------
net/rxrpc/recvmsg.c | 13 +++++++------
net/rxrpc/rxgk.c | 3 ++-
4 files changed, 32 insertions(+), 15 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread* [PATCH net 1/5] rxrpc: rxrpc_verify_data ensure rx_dec_buffer alloc 2026-06-09 14:09 [PATCH net 0/5] rxrpc: Miscellaneous fixes David Howells @ 2026-06-09 14:09 ` David Howells 2026-06-09 14:09 ` [PATCH net 2/5] rxrpc: Don't move a peeked OOB message onto the pending queue David Howells ` (4 subsequent siblings) 5 siblings, 0 replies; 20+ messages in thread From: David Howells @ 2026-06-09 14:09 UTC (permalink / raw) To: netdev Cc: David Howells, Marc Dionne, Jakub Kicinski, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman, linux-afs, linux-kernel, Jeffrey Altman, Simon Horman, Jiayuan Chen, stable From: Jeffrey Altman <jaltman@auristor.com> rxrpc_recvmsg_data() calls rxrpc_verify_data() whenever the rxrpc_call.rx_dec_buffer is unallocated and assumes that upon successful return that rx_dec_buffer must be allocated. However, rxrpc_verify_data() does not request an allocation if the rxrpc_skb_priv.len is zero. In addition, failure to allocate rx_dec_buffer will result in a call to skb_copy_bits() with a NULL destination which can trigger a NULL pointer dereference. To prevent these issues rxrpc_verify_data() is modified to always attempt to allocate the rxrpc_call.rx_dec_buffer if it is NULL. This issue was identified with assistance of a private sashiko instance. Fixes: d2bc90cf6c75cb ("rxrpc: Fix DATA decrypt vs splice() by copying data to buffer in recvmsg") Reported-by: Simon Horman <simon.horman@redhat.com> Signed-off-by: Jeffrey Altman <jaltman@auristor.com> Signed-off-by: David Howells <dhowells@redhat.com> cc: Jiayuan Chen <jiayuan.chen@linux.dev> cc: Marc Dionne <marc.dionne@auristor.com> cc: Eric Dumazet <edumazet@google.com> cc: "David S. Miller" <davem@davemloft.net> cc: Jakub Kicinski <kuba@kernel.org> cc: Paolo Abeni <pabeni@redhat.com> cc: Simon Horman <horms@kernel.org> cc: linux-afs@lists.infradead.org cc: netdev@vger.kernel.org cc: stable@kernel.org --- net/rxrpc/recvmsg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/rxrpc/recvmsg.c b/net/rxrpc/recvmsg.c index c940600117a4..a3cf5358f16e 100644 --- a/net/rxrpc/recvmsg.c +++ b/net/rxrpc/recvmsg.c @@ -161,7 +161,7 @@ static int rxrpc_verify_data(struct rxrpc_call *call, struct sk_buff *skb) struct rxrpc_skb_priv *sp = rxrpc_skb(skb); int ret; - if (sp->len > call->rx_dec_bsize) { + if (sp->len > call->rx_dec_bsize || !call->rx_dec_buffer) { /* Make sure we can hold a 1412-byte jumbo subpacket and make * sure that the buffer size is aligned to a crypto blocksize. */ ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net 2/5] rxrpc: Don't move a peeked OOB message onto the pending queue 2026-06-09 14:09 [PATCH net 0/5] rxrpc: Miscellaneous fixes David Howells 2026-06-09 14:09 ` [PATCH net 1/5] rxrpc: rxrpc_verify_data ensure rx_dec_buffer alloc David Howells @ 2026-06-09 14:09 ` David Howells 2026-06-09 14:09 ` [PATCH net 3/5] rxrpc: Fix UAF in rxgk_issue_challenge() David Howells ` (3 subsequent siblings) 5 siblings, 0 replies; 20+ messages in thread From: David Howells @ 2026-06-09 14:09 UTC (permalink / raw) To: netdev Cc: David Howells, Marc Dionne, Jakub Kicinski, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman, linux-afs, linux-kernel, Hyunwoo Kim, stable From: Hyunwoo Kim <imv4bel@gmail.com> rxrpc_recvmsg_oob() takes a received oob message off recvmsg_oobq and, if a response is needed, moves it onto the pending_oobq tree. However, only the unlink from recvmsg_oobq is guarded by MSG_PEEK; the move onto pending_oobq always runs. As a result, reading a challenge with MSG_PEEK leaves the skb on recvmsg_oobq while also adding it to pending_oobq. Since struct sk_buff's rbnode shares storage with its next and prev pointers, rb_insert_color() overwrites the list linkage, and the skb, which holds a single reference, becomes reachable from both queues at once. When the socket is closed both queues are drained in turn. While draining recvmsg_oobq, __skb_unlink() follows the next and prev pointers that rbnode has overwritten and writes to a bad address. Also, as the skb holds a single reference but is freed from each queue, both the skb and the connection reference it holds are released twice. This leads to memory corruption and to a use-after-free caused by the connection refcount underflow. MSG_PEEK does not consume the message from the queue, so only unlink it from recvmsg_oobq and then move it onto pending_oobq or free it when the message is actually consumed. Fixes: 5800b1cf3fd8 ("rxrpc: Allow CHALLENGEs to the passed to the app for a RESPONSE") Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com> Signed-off-by: David Howells <dhowells@redhat.com> cc: Marc Dionne <marc.dionne@auristor.com> cc: Eric Dumazet <edumazet@google.com> cc: "David S. Miller" <davem@davemloft.net> cc: Jakub Kicinski <kuba@kernel.org> cc: Paolo Abeni <pabeni@redhat.com> cc: Simon Horman <horms@kernel.org> cc: linux-afs@lists.infradead.org cc: netdev@vger.kernel.org cc: stable@kernel.org --- net/rxrpc/recvmsg.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/net/rxrpc/recvmsg.c b/net/rxrpc/recvmsg.c index a3cf5358f16e..82614cbdb60f 100644 --- a/net/rxrpc/recvmsg.c +++ b/net/rxrpc/recvmsg.c @@ -262,12 +262,13 @@ static int rxrpc_recvmsg_oob(struct socket *sock, struct msghdr *msg, break; } - if (!(flags & MSG_PEEK)) + if (!(flags & MSG_PEEK)) { skb_unlink(skb, &rx->recvmsg_oobq); - if (need_response) - rxrpc_add_pending_oob(rx, skb); - else - rxrpc_free_skb(skb, rxrpc_skb_put_oob); + if (need_response) + rxrpc_add_pending_oob(rx, skb); + else + rxrpc_free_skb(skb, rxrpc_skb_put_oob); + } return ret; } ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net 3/5] rxrpc: Fix UAF in rxgk_issue_challenge() 2026-06-09 14:09 [PATCH net 0/5] rxrpc: Miscellaneous fixes David Howells 2026-06-09 14:09 ` [PATCH net 1/5] rxrpc: rxrpc_verify_data ensure rx_dec_buffer alloc David Howells 2026-06-09 14:09 ` [PATCH net 2/5] rxrpc: Don't move a peeked OOB message onto the pending queue David Howells @ 2026-06-09 14:09 ` David Howells 2026-06-09 14:09 ` [PATCH net 4/5] afs: Fix netns teardown to cancel the preallocation charger David Howells ` (2 subsequent siblings) 5 siblings, 0 replies; 20+ messages in thread From: David Howells @ 2026-06-09 14:09 UTC (permalink / raw) To: netdev Cc: David Howells, Marc Dionne, Jakub Kicinski, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman, linux-afs, linux-kernel, stable Fix rxgk_issue_challenge() to free the page containing the challenge content after invoking the tracepoint as the whdr passed to the tracepoint points into the page just freed. Fixes: 9d1d2b59341f ("rxrpc: rxgk: Implement the yfs-rxgk security class (GSSAPI)") Reported-by: Marc Dionne <marc.dionne@auristor.com> Signed-off-by: David Howells <dhowells@redhat.com> cc: Eric Dumazet <edumazet@google.com> cc: "David S. Miller" <davem@davemloft.net> cc: Jakub Kicinski <kuba@kernel.org> cc: Paolo Abeni <pabeni@redhat.com> cc: Simon Horman <horms@kernel.org> cc: linux-afs@lists.infradead.org cc: netdev@vger.kernel.org cc: stable@kernel.org --- net/rxrpc/rxgk.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/rxrpc/rxgk.c b/net/rxrpc/rxgk.c index a1ee102abae1..77a67ace1d24 100644 --- a/net/rxrpc/rxgk.c +++ b/net/rxrpc/rxgk.c @@ -687,16 +687,17 @@ static int rxgk_issue_challenge(struct rxrpc_connection *conn) ret = do_udp_sendmsg(conn->local->socket, &msg, len); if (ret > 0) rxrpc_peer_mark_tx(conn->peer); - __free_page(page); if (ret < 0) { trace_rxrpc_tx_fail(conn->debug_id, serial, ret, rxrpc_tx_point_rxgk_challenge); + __free_page(page); return -EAGAIN; } trace_rxrpc_tx_packet(conn->debug_id, whdr, rxrpc_tx_point_rxgk_challenge); + __free_page(page); _leave(" = 0"); return 0; } ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net 4/5] afs: Fix netns teardown to cancel the preallocation charger 2026-06-09 14:09 [PATCH net 0/5] rxrpc: Miscellaneous fixes David Howells ` (2 preceding siblings ...) 2026-06-09 14:09 ` [PATCH net 3/5] rxrpc: Fix UAF in rxgk_issue_challenge() David Howells @ 2026-06-09 14:09 ` David Howells 2026-06-12 23:48 ` Jakub Kicinski 2026-06-09 14:09 ` [PATCH net 5/5] rxrpc: serialize kernel accept preallocation with socket teardown David Howells 2026-06-13 0:00 ` [PATCH net 0/5] rxrpc: Miscellaneous fixes patchwork-bot+netdevbpf 5 siblings, 1 reply; 20+ messages in thread From: David Howells @ 2026-06-09 14:09 UTC (permalink / raw) To: netdev Cc: David Howells, Marc Dionne, Jakub Kicinski, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman, linux-afs, linux-kernel, Li Daming, Ren Wei, Jeffrey Altman, stable Fix the teardown of an afs network namespace to make sure it cancels the work item that keeps the preallocated rxrpc call/conn/peer queue charged before incoming calls are disabled (i.e. listen 0). Also, if net->live is false because the afs netns is being deleted, make afs_charge_preallocation() skip charging and make afs_rx_new_call() avoid requeuing the charger. (This was found by AI review). Fixes: 00e907127e6f ("rxrpc: Preallocate peers, conns and calls for incoming service requests") Reported-by: Simon Horman <horms@kernel.org> Signed-off-by: David Howells <dhowells@redhat.com> cc: Li Daming <d4n.for.sec@gmail.com> cc: Ren Wei <n05ec@lzu.edu.cn> cc: Marc Dionne <marc.dionne@auristor.com> cc: Jeffrey Altman <jaltman@auristor.com> cc: Eric Dumazet <edumazet@google.com> cc: "David S. Miller" <davem@davemloft.net> cc: Jakub Kicinski <kuba@kernel.org> cc: Paolo Abeni <pabeni@redhat.com> cc: Simon Horman <horms@kernel.org> cc: linux-afs@lists.infradead.org cc: netdev@vger.kernel.org cc: stable@kernel.org --- fs/afs/rxrpc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/fs/afs/rxrpc.c b/fs/afs/rxrpc.c index 588f8de51167..d5cfd24e815b 100644 --- a/fs/afs/rxrpc.c +++ b/fs/afs/rxrpc.c @@ -127,6 +127,7 @@ void afs_close_socket(struct afs_net *net) { _enter(""); + cancel_work_sync(&net->charge_preallocation_work); kernel_listen(net->socket, 0); flush_workqueue(afs_async_calls); @@ -742,7 +743,7 @@ void afs_charge_preallocation(struct work_struct *work) container_of(work, struct afs_net, charge_preallocation_work); struct afs_call *call = net->spare_incoming_call; - for (;;) { + while (READ_ONCE(net->live)) { if (!call) { call = afs_alloc_call(net, &afs_RXCMxxxx, GFP_KERNEL); if (!call) @@ -792,7 +793,8 @@ static void afs_rx_new_call(struct sock *sk, struct rxrpc_call *rxcall, if (!call->server) trace_afs_cm_no_server(call, rxrpc_kernel_remote_srx(call->peer)); - queue_work(afs_wq, &net->charge_preallocation_work); + if (net->live) + queue_work(afs_wq, &net->charge_preallocation_work); } /* ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH net 4/5] afs: Fix netns teardown to cancel the preallocation charger 2026-06-09 14:09 ` [PATCH net 4/5] afs: Fix netns teardown to cancel the preallocation charger David Howells @ 2026-06-12 23:48 ` Jakub Kicinski 0 siblings, 0 replies; 20+ messages in thread From: Jakub Kicinski @ 2026-06-12 23:48 UTC (permalink / raw) To: David Howells Cc: netdev, Marc Dionne, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman, linux-afs, linux-kernel, Li Daming, Ren Wei, Jeffrey Altman, stable On Tue, 9 Jun 2026 15:09:08 +0100 David Howells wrote: > Fix the teardown of an afs network namespace to make sure it cancels the > work item that keeps the preallocated rxrpc call/conn/peer queue charged > before incoming calls are disabled (i.e. listen 0). > > Also, if net->live is false because the afs netns is being deleted, make > afs_charge_preallocation() skip charging and make afs_rx_new_call() avoid > requeuing the charger. > > (This was found by AI review). Both Sashikos think this patch is still racy FWIW but not a blocker IMO ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 5/5] rxrpc: serialize kernel accept preallocation with socket teardown 2026-06-09 14:09 [PATCH net 0/5] rxrpc: Miscellaneous fixes David Howells ` (3 preceding siblings ...) 2026-06-09 14:09 ` [PATCH net 4/5] afs: Fix netns teardown to cancel the preallocation charger David Howells @ 2026-06-09 14:09 ` David Howells 2026-06-13 0:00 ` [PATCH net 0/5] rxrpc: Miscellaneous fixes patchwork-bot+netdevbpf 5 siblings, 0 replies; 20+ messages in thread From: David Howells @ 2026-06-09 14:09 UTC (permalink / raw) To: netdev Cc: David Howells, Marc Dionne, Jakub Kicinski, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman, linux-afs, linux-kernel, Li Daming, Yuan Tan, Yifan Wu, Juefei Pu, Xin Liu, Ren Wei, Jeffrey Altman, stable From: Li Daming <d4n.for.sec@gmail.com> rxrpc_kernel_charge_accept() reads rx->backlog without any socket/backlog synchronization and passes that raw pointer into rxrpc_service_prealloc_one(). A concurrent rxrpc_discard_prealloc() sets rx->backlog = NULL and frees the backlog rings, so a kernel preallocation worker can keep using a freed struct rxrpc_backlog while updating *_backlog_head/tail and array slots. Serialize the state check and backlog lookup with the socket lock, and reject kernel preallocation once teardown has disabled listening or discarded the service backlog. Fixes: 00e907127e6f ("rxrpc: Preallocate peers, conns and calls for incoming service requests") Reported-by: Yuan Tan <yuantan098@gmail.com> Reported-by: Yifan Wu <yifanwucs@gmail.com> Reported-by: Juefei Pu <tomapufckgml@gmail.com> Reported-by: Xin Liu <bird@lzu.edu.cn> Signed-off-by: Li Daming <d4n.for.sec@gmail.com> Signed-off-by: Ren Wei <n05ec@lzu.edu.cn> Signed-off-by: David Howells <dhowells@redhat.com> cc: Marc Dionne <marc.dionne@auristor.com> cc: Jeffrey Altman <jaltman@auristor.com> cc: Eric Dumazet <edumazet@google.com> cc: "David S. Miller" <davem@davemloft.net> cc: Jakub Kicinski <kuba@kernel.org> cc: Paolo Abeni <pabeni@redhat.com> cc: Simon Horman <horms@kernel.org> cc: linux-afs@lists.infradead.org cc: netdev@vger.kernel.org cc: stable@kernel.org --- net/rxrpc/call_accept.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/net/rxrpc/call_accept.c b/net/rxrpc/call_accept.c index ee2d1319e69a..47824120f1da 100644 --- a/net/rxrpc/call_accept.c +++ b/net/rxrpc/call_accept.c @@ -471,13 +471,26 @@ int rxrpc_kernel_charge_accept(struct socket *sock, rxrpc_notify_rx_t notify_rx, unsigned long user_call_ID, gfp_t gfp, unsigned int debug_id) { - struct rxrpc_sock *rx = rxrpc_sk(sock->sk); - struct rxrpc_backlog *b = rx->backlog; + struct rxrpc_backlog *b; + struct rxrpc_sock *rx; + struct sock *sk; + int ret; - if (sock->sk->sk_state == RXRPC_CLOSE) - return -ESHUTDOWN; + sk = sock->sk; + rx = rxrpc_sk(sk); + + lock_sock(sk); + if (sk->sk_state != RXRPC_SERVER_LISTENING || !rx->backlog) { + ret = -ESHUTDOWN; + goto out; + } + + b = rx->backlog; + ret = rxrpc_service_prealloc_one(rx, b, notify_rx, user_call_ID, + gfp, debug_id); - return rxrpc_service_prealloc_one(rx, b, notify_rx, user_call_ID, - gfp, debug_id); +out: + release_sock(sk); + return ret; } EXPORT_SYMBOL(rxrpc_kernel_charge_accept); ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH net 0/5] rxrpc: Miscellaneous fixes 2026-06-09 14:09 [PATCH net 0/5] rxrpc: Miscellaneous fixes David Howells ` (4 preceding siblings ...) 2026-06-09 14:09 ` [PATCH net 5/5] rxrpc: serialize kernel accept preallocation with socket teardown David Howells @ 2026-06-13 0:00 ` patchwork-bot+netdevbpf 5 siblings, 0 replies; 20+ messages in thread From: patchwork-bot+netdevbpf @ 2026-06-13 0:00 UTC (permalink / raw) To: David Howells Cc: netdev, marc.dionne, kuba, davem, edumazet, pabeni, horms, linux-afs, linux-kernel Hello: This series was applied to netdev/net.git (main) by Jakub Kicinski <kuba@kernel.org>: On Tue, 9 Jun 2026 15:09:04 +0100 you wrote: > Here are some miscellaneous AF_RXRPC fixes: > > (1) Make sure rxrpc_verify_data() allocates a buffer, even if the DATA packet > being looked at is zero length to avoid potential NULL-pointer > exceptions. > > (2) Don't move an OOB message (e.g. an RxGK CHALLENGE) off the receive queue > onto the pending queue in recvmsg() if MSG_PEEK is specified. > > [...] Here is the summary with links: - [net,1/5] rxrpc: rxrpc_verify_data ensure rx_dec_buffer alloc https://git.kernel.org/netdev/net/c/16c8ae9735c5 - [net,2/5] rxrpc: Don't move a peeked OOB message onto the pending queue https://git.kernel.org/netdev/net/c/5801cff7d5d7 - [net,3/5] rxrpc: Fix UAF in rxgk_issue_challenge() https://git.kernel.org/netdev/net/c/107a4cb0d47e - [net,4/5] afs: Fix netns teardown to cancel the preallocation charger https://git.kernel.org/netdev/net/c/47694fbc9d24 - [net,5/5] rxrpc: serialize kernel accept preallocation with socket teardown https://git.kernel.org/netdev/net/c/dc175389b18c You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 0/5] rxrpc: Miscellaneous fixes
@ 2026-03-19 15:01 David Howells
0 siblings, 0 replies; 20+ messages in thread
From: David Howells @ 2026-03-19 15:01 UTC (permalink / raw)
To: netdev
Cc: David Howells, Marc Dionne, Jakub Kicinski, David S. Miller,
Eric Dumazet, Paolo Abeni, linux-afs, linux-kernel
Here are some fixes for rxrpc:
(1) Fix missing bounds checks when parsing RxGK tickets.
(2) Fix use of wrong skbuff to get challenge serial number.
(3) Fix unexpected RACK timer warning to report old mode.
(4) Fix server keyring refcount leak.
(5) Fix call key refcount leak.
David
The patches can be found here also:
http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=rxrpc-fixes
Alok Tiwari (2):
rxrpc: Fix use of wrong skb when comparing queued RESP challenge
serial
rxrpc: Fix rack timer warning to report unexpected mode
Anderson Nascimento (2):
rxrpc: Fix keyring reference count leak in rxrpc_setsockopt()
rxrpc: Fix key reference count leak from call->key
Oleh Konko (1):
rxrpc: Fix RxGK token loading to check bounds
net/rxrpc/af_rxrpc.c | 2 +-
net/rxrpc/call_object.c | 1 +
net/rxrpc/conn_event.c | 2 +-
net/rxrpc/input_rack.c | 2 +-
net/rxrpc/key.c | 30 +++++++++++++++++-------------
5 files changed, 21 insertions(+), 16 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread* [PATCH net 0/5] rxrpc: Miscellaneous fixes @ 2025-07-16 11:52 David Howells 0 siblings, 0 replies; 20+ messages in thread From: David Howells @ 2025-07-16 11:52 UTC (permalink / raw) To: netdev Cc: David Howells, Marc Dionne, Jakub Kicinski, David S. Miller, Eric Dumazet, Paolo Abeni, linux-afs, linux-kernel Here are some fixes for rxrpc: (1) Fix the calling of IP routing code with IRQs disabled. (2) Fix a recvmsg/recvmsg race when the first completes a call. (3) Fix a race between notification, recvmsg and sendmsg releasing a call. (4) Fix abort of abort. (5) Fix call-level aborts that should be connection-level aborts. David The patches can be found here also: http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=rxrpc-fixes David Howells (5): rxrpc: Fix irq-disabled in local_bh_enable() rxrpc: Fix recv-recv race of completed call rxrpc: Fix notification vs call-release vs recvmsg rxrpc: Fix transmission of an abort in response to an abort rxrpc: Fix to use conn aborts for conn-wide failures include/trace/events/rxrpc.h | 6 +++++- net/rxrpc/ar-internal.h | 4 ++++ net/rxrpc/call_accept.c | 14 ++++++++------ net/rxrpc/call_object.c | 28 ++++++++++++---------------- net/rxrpc/io_thread.c | 14 ++++++++++++++ net/rxrpc/output.c | 22 +++++++++++++--------- net/rxrpc/peer_object.c | 6 ++---- net/rxrpc/recvmsg.c | 23 +++++++++++++++++++++-- net/rxrpc/security.c | 8 ++++---- 9 files changed, 83 insertions(+), 42 deletions(-) ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 0/5] rxrpc: Miscellaneous fixes
@ 2024-05-03 15:07 David Howells
2024-05-08 2:44 ` Jakub Kicinski
2024-05-08 15:10 ` patchwork-bot+netdevbpf
0 siblings, 2 replies; 20+ messages in thread
From: David Howells @ 2024-05-03 15:07 UTC (permalink / raw)
To: netdev
Cc: David Howells, Marc Dionne, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, linux-afs, linux-kernel
Here some miscellaneous fixes for AF_RXRPC:
(1) Fix the congestion control algorithm to start cwnd at 4 and to not cut
ssthresh when the peer cuts its rwind size.
(2) Only transmit a single ACK for all the DATA packets glued together
into a jumbo packet to reduce the number of ACKs being generated.
(3) Clean up the generation of flags in the protocol header when creating
a packet for transmission. This means we don't carry the old
REQUEST-ACK bit around from previous transmissions, will make it
easier to fix the MORE-PACKETS flag and make it easier to do jumbo
packet assembly in future.
(4) Fix how the MORE-PACKETS flag is driven. We shouldn't be setting it
in sendmsg() as the packet is then queued and the bit is left in that
state, no matter how long it takes us to transmit the packet - and
will still be in that state if the packet is retransmitted.
(5) Request an ACK on an impending transmission stall due to the app layer
not feeding us new data fast enough. If we don't request an ACK, we
may have to hold on to the packet buffers for a significant amount of
time until the receiver gets bored and sends us an ACK anyway.
David
---
The patches can be found here also:
http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=rxrpc-fixes
David Howells (5):
rxrpc: Fix congestion control algorithm
rxrpc: Only transmit one ACK per jumbo packet received
rxrpc: Clean up Tx header flags generation handling
rxrpc: Change how the MORE-PACKETS rxrpc wire header flag is driven
rxrpc: Request an ACK on impending Tx stall
include/trace/events/rxrpc.h | 2 +-
net/rxrpc/ar-internal.h | 2 +-
net/rxrpc/call_object.c | 7 +-----
net/rxrpc/input.c | 49 +++++++++++++++++++++++++-----------
net/rxrpc/output.c | 26 ++++++++++++++-----
net/rxrpc/proc.c | 6 ++---
net/rxrpc/sendmsg.c | 3 ---
7 files changed, 61 insertions(+), 34 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH net 0/5] rxrpc: Miscellaneous fixes 2024-05-03 15:07 David Howells @ 2024-05-08 2:44 ` Jakub Kicinski 2024-05-08 7:57 ` Jeffrey Altman 2024-05-08 14:00 ` David Howells 2024-05-08 15:10 ` patchwork-bot+netdevbpf 1 sibling, 2 replies; 20+ messages in thread From: Jakub Kicinski @ 2024-05-08 2:44 UTC (permalink / raw) To: David Howells Cc: netdev, Marc Dionne, David S. Miller, Eric Dumazet, Paolo Abeni, linux-afs, linux-kernel On Fri, 3 May 2024 16:07:38 +0100 David Howells wrote: > Here some miscellaneous fixes for AF_RXRPC: > > (1) Fix the congestion control algorithm to start cwnd at 4 and to not cut > ssthresh when the peer cuts its rwind size. > > (2) Only transmit a single ACK for all the DATA packets glued together > into a jumbo packet to reduce the number of ACKs being generated. > > (3) Clean up the generation of flags in the protocol header when creating > a packet for transmission. This means we don't carry the old > REQUEST-ACK bit around from previous transmissions, will make it > easier to fix the MORE-PACKETS flag and make it easier to do jumbo > packet assembly in future. > > (4) Fix how the MORE-PACKETS flag is driven. We shouldn't be setting it > in sendmsg() as the packet is then queued and the bit is left in that > state, no matter how long it takes us to transmit the packet - and > will still be in that state if the packet is retransmitted. > > (5) Request an ACK on an impending transmission stall due to the app layer > not feeding us new data fast enough. If we don't request an ACK, we > may have to hold on to the packet buffers for a significant amount of > time until the receiver gets bored and sends us an ACK anyway. Looks like these got marked as Rejected in patchwork. I think either because lore is confused and attaches an exchange with DaveM from 2022 to them (?) or because I mentioned to DaveM that I'm not sure these are fixes. So let me ask - on a scale of 1 to 10, how convinced are you that these should go to Linus this week rather than being categorized as general improvements and go during the merge window (without the Fixes tags)? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net 0/5] rxrpc: Miscellaneous fixes 2024-05-08 2:44 ` Jakub Kicinski @ 2024-05-08 7:57 ` Jeffrey Altman 2024-05-08 13:54 ` Jakub Kicinski 2024-05-08 14:00 ` David Howells 1 sibling, 1 reply; 20+ messages in thread From: Jeffrey Altman @ 2024-05-08 7:57 UTC (permalink / raw) To: Jakub Kicinski Cc: David Howells, netdev, Marc Dionne, David S. Miller, Eric Dumazet, Paolo Abeni, linux-afs, linux-kernel [-- Attachment #1: Type: text/plain, Size: 2071 bytes --] > On May 7, 2024, at 8:44 PM, Jakub Kicinski <kuba@kernel.org> wrote: > > On Fri, 3 May 2024 16:07:38 +0100 David Howells wrote: >> Here some miscellaneous fixes for AF_RXRPC: >> >> (1) Fix the congestion control algorithm to start cwnd at 4 and to not cut >> ssthresh when the peer cuts its rwind size. >> >> (2) Only transmit a single ACK for all the DATA packets glued together >> into a jumbo packet to reduce the number of ACKs being generated. >> >> (3) Clean up the generation of flags in the protocol header when creating >> a packet for transmission. This means we don't carry the old >> REQUEST-ACK bit around from previous transmissions, will make it >> easier to fix the MORE-PACKETS flag and make it easier to do jumbo >> packet assembly in future. >> >> (4) Fix how the MORE-PACKETS flag is driven. We shouldn't be setting it >> in sendmsg() as the packet is then queued and the bit is left in that >> state, no matter how long it takes us to transmit the packet - and >> will still be in that state if the packet is retransmitted. >> >> (5) Request an ACK on an impending transmission stall due to the app layer >> not feeding us new data fast enough. If we don't request an ACK, we >> may have to hold on to the packet buffers for a significant amount of >> time until the receiver gets bored and sends us an ACK anyway. > > Looks like these got marked as Rejected in patchwork. > I think either because lore is confused and attaches an exchange with > DaveM from 2022 to them (?) or because I mentioned to DaveM that I'm > not sure these are fixes. So let me ask - on a scale of 1 to 10, how > convinced are you that these should go to Linus this week rather than > being categorized as general improvements and go during the merge > window (without the Fixes tags)? Jakub, In my opinion, the first two patches in the series I believe are important to back port to the stable branches. Reviewed-by: Jeffrey Altman <jaltman@auristor.com <mailto:jaltman@auristor.com>> Jeffrey [-- Attachment #2: smime.p7s --] [-- Type: application/pkcs7-signature, Size: 3929 bytes --] ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net 0/5] rxrpc: Miscellaneous fixes 2024-05-08 7:57 ` Jeffrey Altman @ 2024-05-08 13:54 ` Jakub Kicinski 0 siblings, 0 replies; 20+ messages in thread From: Jakub Kicinski @ 2024-05-08 13:54 UTC (permalink / raw) To: Jeffrey Altman, David Howells Cc: netdev, Marc Dionne, David S. Miller, Eric Dumazet, Paolo Abeni, linux-afs, linux-kernel On Wed, 8 May 2024 01:57:43 -0600 Jeffrey Altman wrote: > > Looks like these got marked as Rejected in patchwork. > > I think either because lore is confused and attaches an exchange with > > DaveM from 2022 to them (?) or because I mentioned to DaveM that I'm > > not sure these are fixes. So let me ask - on a scale of 1 to 10, how > > convinced are you that these should go to Linus this week rather than > > being categorized as general improvements and go during the merge > > window (without the Fixes tags)? > > Jakub, > > In my opinion, the first two patches in the series I believe are important to back port to the stable branches. > > Reviewed-by: Jeffrey Altman <jaltman@auristor.com <mailto:jaltman@auristor.com>> Are they regressions? Seems possible from the Fixes tag but unclear from the text of the commit messages. In any case, taking the first two may be a reasonable compromise. Does it sounds good to you, David? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net 0/5] rxrpc: Miscellaneous fixes 2024-05-08 2:44 ` Jakub Kicinski 2024-05-08 7:57 ` Jeffrey Altman @ 2024-05-08 14:00 ` David Howells 2024-05-08 15:07 ` Jakub Kicinski 1 sibling, 1 reply; 20+ messages in thread From: David Howells @ 2024-05-08 14:00 UTC (permalink / raw) To: Jakub Kicinski Cc: dhowells, netdev, Marc Dionne, David S. Miller, Eric Dumazet, Paolo Abeni, linux-afs, linux-kernel Jakub Kicinski <kuba@kernel.org> wrote: > Looks like these got marked as Rejected in patchwork. > I think either because lore is confused and attaches an exchange with > DaveM from 2022 to them (?) or because I mentioned to DaveM that I'm > not sure these are fixes. So let me ask - on a scale of 1 to 10, how > convinced are you that these should go to Linus this week rather than > being categorized as general improvements and go during the merge > window (without the Fixes tags)? Ah, sorry. I marked them rejected as I put myself as cc: not S-o-b on one of them, but then got distracted and didn't get around to reposting them. And Jeff mentioned that the use of the MORE-PACKETS flag is not exactly consistent between various implementations. So if you could take just the first two for the moment? Thanks, David ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net 0/5] rxrpc: Miscellaneous fixes 2024-05-08 14:00 ` David Howells @ 2024-05-08 15:07 ` Jakub Kicinski 0 siblings, 0 replies; 20+ messages in thread From: Jakub Kicinski @ 2024-05-08 15:07 UTC (permalink / raw) To: David Howells Cc: netdev, Marc Dionne, David S. Miller, Eric Dumazet, Paolo Abeni, linux-afs, linux-kernel On Wed, 08 May 2024 15:00:28 +0100 David Howells wrote: > Jakub Kicinski <kuba@kernel.org> wrote: > > > Looks like these got marked as Rejected in patchwork. > > I think either because lore is confused and attaches an exchange with > > DaveM from 2022 to them (?) or because I mentioned to DaveM that I'm > > not sure these are fixes. So let me ask - on a scale of 1 to 10, how > > convinced are you that these should go to Linus this week rather than > > being categorized as general improvements and go during the merge > > window (without the Fixes tags)? > > Ah, sorry. I marked them rejected as I put myself as cc: not S-o-b on one of > them, but then got distracted and didn't get around to reposting them. And > Jeff mentioned that the use of the MORE-PACKETS flag is not exactly > consistent between various implementations. Ah, mystery solved :) > So if you could take just the first two for the moment? Done! ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net 0/5] rxrpc: Miscellaneous fixes 2024-05-03 15:07 David Howells 2024-05-08 2:44 ` Jakub Kicinski @ 2024-05-08 15:10 ` patchwork-bot+netdevbpf 1 sibling, 0 replies; 20+ messages in thread From: patchwork-bot+netdevbpf @ 2024-05-08 15:10 UTC (permalink / raw) To: David Howells Cc: netdev, marc.dionne, davem, edumazet, kuba, pabeni, linux-afs, linux-kernel Hello: This series was applied to netdev/net.git (main) by Jakub Kicinski <kuba@kernel.org>: On Fri, 3 May 2024 16:07:38 +0100 you wrote: > Here some miscellaneous fixes for AF_RXRPC: > > (1) Fix the congestion control algorithm to start cwnd at 4 and to not cut > ssthresh when the peer cuts its rwind size. > > (2) Only transmit a single ACK for all the DATA packets glued together > into a jumbo packet to reduce the number of ACKs being generated. > > [...] Here is the summary with links: - [net,1/5] rxrpc: Fix congestion control algorithm https://git.kernel.org/netdev/net/c/ba4e103848d3 - [net,2/5] rxrpc: Only transmit one ACK per jumbo packet received https://git.kernel.org/netdev/net/c/012b7206918d - [net,3/5] rxrpc: Clean up Tx header flags generation handling (no matching commit) - [net,4/5] rxrpc: Change how the MORE-PACKETS rxrpc wire header flag is driven (no matching commit) - [net,5/5] rxrpc: Request an ACK on impending Tx stall (no matching commit) You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 0/5] rxrpc: Miscellaneous fixes
@ 2022-05-21 8:02 David Howells
2022-05-22 20:32 ` David Miller
2022-05-22 20:40 ` patchwork-bot+netdevbpf
0 siblings, 2 replies; 20+ messages in thread
From: David Howells @ 2022-05-21 8:02 UTC (permalink / raw)
To: netdev
Cc: linux-afs, Jeffrey Altman, Marc Dionne, dhowells, linux-afs,
linux-kernel
Here are some fixes for AF_RXRPC:
(1) Fix listen() allowing preallocation to overrun the prealloc buffer.
(2) Prevent resending the request if we've seen the reply starting to
arrive.
(3) Fix accidental sharing of ACK state between transmission and
reception.
(4) Ignore ACKs in which ack.previousPacket regresses. This indicates the
highest DATA number so far seen, so should not be seen to go
backwards.
(5) Fix the determination of when to generate an IDLE-type ACK,
simplifying it so that we generate one if we have more than two DATA
packets that aren't hard-acked (consumed) or soft-acked (in the rx
buffer, but could be discarded and re-requested).
The patches are tagged here:
git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git
rxrpc-fixes-20220521
and can also be found on the following branch:
http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=rxrpc-fixes
Tested-by: kafs-testing+fedora34_64checkkafs-build-495@auristor.com
Changes
=======
ver #2)
- Rebased onto net/master
- Dropped the IPv6 checksum patch as it's already upstream.
David
Link: https://lore.kernel.org/r/165306442115.34086.1818959430525328753.stgit@warthog.procyon.org.uk/ # v1
---
David Howells (5):
rxrpc: Fix listen() setting the bar too high for the prealloc rings
rxrpc: Don't try to resend the request if we're receiving the reply
rxrpc: Fix overlapping ACK accounting
rxrpc: Don't let ack.previousPacket regress
rxrpc: Fix decision on when to generate an IDLE ACK
include/trace/events/rxrpc.h | 2 +-
net/rxrpc/ar-internal.h | 13 +++++++------
net/rxrpc/call_event.c | 3 ++-
net/rxrpc/input.c | 31 ++++++++++++++++++++-----------
net/rxrpc/output.c | 20 ++++++++++++--------
net/rxrpc/recvmsg.c | 8 +++-----
net/rxrpc/sysctl.c | 4 ++--
7 files changed, 47 insertions(+), 34 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH net 0/5] rxrpc: Miscellaneous fixes 2022-05-21 8:02 David Howells @ 2022-05-22 20:32 ` David Miller 2022-05-22 20:40 ` patchwork-bot+netdevbpf 1 sibling, 0 replies; 20+ messages in thread From: David Miller @ 2022-05-22 20:32 UTC (permalink / raw) To: dhowells; +Cc: netdev, linux-afs, jaltman, marc.dionne, linux-kernel From: David Howells <dhowells@redhat.com> Date: Sat, 21 May 2022 09:02:58 +0100 > > Here are some fixes for AF_RXRPC: > > (1) Fix listen() allowing preallocation to overrun the prealloc buffer. > > (2) Prevent resending the request if we've seen the reply starting to > arrive. > > (3) Fix accidental sharing of ACK state between transmission and > reception. > > (4) Ignore ACKs in which ack.previousPacket regresses. This indicates the > highest DATA number so far seen, so should not be seen to go > backwards. > > (5) Fix the determination of when to generate an IDLE-type ACK, > simplifying it so that we generate one if we have more than two DATA > packets that aren't hard-acked (consumed) or soft-acked (in the rx > buffer, but could be discarded and re-requested). > > The patches are tagged here: > > git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git > rxrpc-fixes-20220521 > > and can also be found on the following branch: > > http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=rxrpc-fixes I tried to pull from this url and it does not work, just fyi... So I applied the series instead. > Tested-by: kafs-testing+fedora34_64checkkafs-build-495@auristor.com Thank you. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net 0/5] rxrpc: Miscellaneous fixes 2022-05-21 8:02 David Howells 2022-05-22 20:32 ` David Miller @ 2022-05-22 20:40 ` patchwork-bot+netdevbpf 1 sibling, 0 replies; 20+ messages in thread From: patchwork-bot+netdevbpf @ 2022-05-22 20:40 UTC (permalink / raw) To: David Howells; +Cc: netdev, linux-afs, jaltman, marc.dionne, linux-kernel Hello: This series was applied to netdev/net.git (master) by David S. Miller <davem@davemloft.net>: On Sat, 21 May 2022 09:02:58 +0100 you wrote: > Here are some fixes for AF_RXRPC: > > (1) Fix listen() allowing preallocation to overrun the prealloc buffer. > > (2) Prevent resending the request if we've seen the reply starting to > arrive. > > [...] Here is the summary with links: - [net,1/5] rxrpc: Fix listen() setting the bar too high for the prealloc rings https://git.kernel.org/netdev/net/c/88e22159750b - [net,2/5] rxrpc: Don't try to resend the request if we're receiving the reply https://git.kernel.org/netdev/net/c/114af61f88fb - [net,3/5] rxrpc: Fix overlapping ACK accounting https://git.kernel.org/netdev/net/c/8940ba3cfe48 - [net,4/5] rxrpc: Don't let ack.previousPacket regress https://git.kernel.org/netdev/net/c/81524b631253 - [net,5/5] rxrpc: Fix decision on when to generate an IDLE ACK https://git.kernel.org/netdev/net/c/9a3dedcf1809 You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2026-06-13 0:00 UTC | newest] Thread overview: 20+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-06-09 14:09 [PATCH net 0/5] rxrpc: Miscellaneous fixes David Howells 2026-06-09 14:09 ` [PATCH net 1/5] rxrpc: rxrpc_verify_data ensure rx_dec_buffer alloc David Howells 2026-06-09 14:09 ` [PATCH net 2/5] rxrpc: Don't move a peeked OOB message onto the pending queue David Howells 2026-06-09 14:09 ` [PATCH net 3/5] rxrpc: Fix UAF in rxgk_issue_challenge() David Howells 2026-06-09 14:09 ` [PATCH net 4/5] afs: Fix netns teardown to cancel the preallocation charger David Howells 2026-06-12 23:48 ` Jakub Kicinski 2026-06-09 14:09 ` [PATCH net 5/5] rxrpc: serialize kernel accept preallocation with socket teardown David Howells 2026-06-13 0:00 ` [PATCH net 0/5] rxrpc: Miscellaneous fixes patchwork-bot+netdevbpf -- strict thread matches above, loose matches on Subject: below -- 2026-03-19 15:01 David Howells 2025-07-16 11:52 David Howells 2024-05-03 15:07 David Howells 2024-05-08 2:44 ` Jakub Kicinski 2024-05-08 7:57 ` Jeffrey Altman 2024-05-08 13:54 ` Jakub Kicinski 2024-05-08 14:00 ` David Howells 2024-05-08 15:07 ` Jakub Kicinski 2024-05-08 15:10 ` patchwork-bot+netdevbpf 2022-05-21 8:02 David Howells 2022-05-22 20:32 ` David Miller 2022-05-22 20:40 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox