* FAILED: patch "[PATCH] rxrpc: Also unshare DATA/RESPONSE packets when paged frags" failed to apply to 6.12-stable tree
@ 2026-05-11 6:02 gregkh
2026-05-11 7:18 ` [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
0 siblings, 1 reply; 17+ messages in thread
From: gregkh @ 2026-05-11 6:02 UTC (permalink / raw)
To: imv4bel, dhowells, jiayuan.chen, torvalds; +Cc: stable
The patch below does not apply to the 6.12-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@vger.kernel.org>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.12.y
git checkout FETCH_HEAD
git cherry-pick -x aa54b1d27fe0c2b78e664a34fd0fdf7cd1960d71
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable@vger.kernel.org>' --in-reply-to '2026051109-ocelot-dwindle-a7e9@gregkh' --subject-prefix 'PATCH 6.12.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From aa54b1d27fe0c2b78e664a34fd0fdf7cd1960d71 Mon Sep 17 00:00:00 2001
From: Hyunwoo Kim <imv4bel@gmail.com>
Date: Fri, 8 May 2026 17:53:09 +0900
Subject: [PATCH] rxrpc: Also unshare DATA/RESPONSE packets when paged frags
are present
The DATA-packet handler in rxrpc_input_call_event() and the RESPONSE
handler in rxrpc_verify_response() copy the skb to a linear one before
calling into the security ops only when skb_cloned() is true. An skb
that is not cloned but still carries externally-owned paged fragments
(e.g. SKBFL_SHARED_FRAG set by splice() into a UDP socket via
__ip_append_data, or a chained skb_has_frag_list()) falls through to
the in-place decryption path, which binds the frag pages directly into
the AEAD/skcipher SGL via skb_to_sgvec().
Extend the gate to also unshare when skb_has_frag_list() or
skb_has_shared_frag() is true. This catches the splice-loopback vector
and other externally-shared frag sources while preserving the
zero-copy fast path for skbs whose frags are kernel-private (e.g. NIC
page_pool RX, GRO). The OOM/trace handling already in place is reused.
Fixes: d0d5c0cd1e71 ("rxrpc: Use skb_unshare() rather than skb_cow_data()")
Cc: stable@vger.kernel.org
Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
Reviewed-by: Jiayuan Chen <jiayuan.chen@linux.dev>
Acked-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
diff --git a/net/rxrpc/call_event.c b/net/rxrpc/call_event.c
index fdd683261226..2b19b252225e 100644
--- a/net/rxrpc/call_event.c
+++ b/net/rxrpc/call_event.c
@@ -334,7 +334,9 @@ bool rxrpc_input_call_event(struct rxrpc_call *call)
if (sp->hdr.type == RXRPC_PACKET_TYPE_DATA &&
sp->hdr.securityIndex != 0 &&
- skb_cloned(skb)) {
+ (skb_cloned(skb) ||
+ skb_has_frag_list(skb) ||
+ skb_has_shared_frag(skb))) {
/* Unshare the packet so that it can be
* modified by in-place decryption.
*/
diff --git a/net/rxrpc/conn_event.c b/net/rxrpc/conn_event.c
index a2130d25aaa9..442414d90ba1 100644
--- a/net/rxrpc/conn_event.c
+++ b/net/rxrpc/conn_event.c
@@ -245,7 +245,8 @@ static int rxrpc_verify_response(struct rxrpc_connection *conn,
{
int ret;
- if (skb_cloned(skb)) {
+ if (skb_cloned(skb) || skb_has_frag_list(skb) ||
+ skb_has_shared_frag(skb)) {
/* Copy the packet if shared so that we can do in-place
* decryption.
*/
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets
2026-05-11 6:02 FAILED: patch "[PATCH] rxrpc: Also unshare DATA/RESPONSE packets when paged frags" failed to apply to 6.12-stable tree gregkh
@ 2026-05-11 7:18 ` Wentao Guan
2026-05-11 7:18 ` [PATCH 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present Wentao Guan
2026-05-11 7:28 ` Greg KH
0 siblings, 2 replies; 17+ messages in thread
From: Wentao Guan @ 2026-05-11 7:18 UTC (permalink / raw)
To: gregkh
Cc: dhowells, imv4bel, jiayuan.chen, stable, torvalds, Marc Dionne,
Jeffrey Altman, Simon Horman, linux-afs, stable, Jakub Kicinski,
Wentao Guan
From: David Howells <dhowells@redhat.com>
The security operations that verify the RESPONSE packets decrypt bits of it
in place - however, the sk_buff may be shared with a packet sniffer, which
would lead to the sniffer seeing an apparently corrupt packet (actually
decrypted).
Fix this by handing a copy of the packet off to the specific security
handler if the packet was cloned.
Fixes: 17926a79320a ("[AF_RXRPC]: Provide secure RxRPC sockets for use by userspace and kernel both")
Closes: https://sashiko.dev/#/patchset/20260408121252.2249051-1-dhowells%40redhat.com
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: Jeffrey Altman <jaltman@auristor.com>
cc: Simon Horman <horms@kernel.org>
cc: linux-afs@lists.infradead.org
cc: stable@kernel.org
Link: https://patch.msgid.link/20260422161438.2593376-5-dhowells@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 24481a7f573305706054c59e275371f8d0fe919f)
Stable-dep-of: aa54b1d27fe0 ("rxrpc: Also unshare DATA/RESPONSE packets when
paged frags are present")
Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
---
net/rxrpc/conn_event.c | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/net/rxrpc/conn_event.c b/net/rxrpc/conn_event.c
index 82cc72123c9c9..6dcfaed1f7485 100644
--- a/net/rxrpc/conn_event.c
+++ b/net/rxrpc/conn_event.c
@@ -226,6 +226,33 @@ static void rxrpc_call_is_secure(struct rxrpc_call *call)
rxrpc_notify_socket(call);
}
+static int rxrpc_verify_response(struct rxrpc_connection *conn,
+ struct sk_buff *skb)
+{
+ int ret;
+
+ if (skb_cloned(skb)) {
+ /* Copy the packet if shared so that we can do in-place
+ * decryption.
+ */
+ struct sk_buff *nskb = skb_copy(skb, GFP_NOFS);
+
+ if (nskb) {
+ rxrpc_new_skb(nskb, rxrpc_skb_new_unshared);
+ ret = conn->security->verify_response(conn, nskb);
+ rxrpc_free_skb(nskb, rxrpc_skb_put_response_copy);
+ } else {
+ /* OOM - Drop the packet. */
+ rxrpc_see_skb(skb, rxrpc_skb_see_unshare_nomem);
+ ret = -ENOMEM;
+ }
+ } else {
+ ret = conn->security->verify_response(conn, skb);
+ }
+
+ return ret;
+}
+
/*
* connection-level Rx packet processor
*/
@@ -253,7 +280,7 @@ static int rxrpc_process_event(struct rxrpc_connection *conn,
}
spin_unlock(&conn->state_lock);
- ret = conn->security->verify_response(conn, skb);
+ ret = rxrpc_verify_response(conn, skb);
if (ret < 0)
return ret;
--
2.30.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present
2026-05-11 7:18 ` [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
@ 2026-05-11 7:18 ` Wentao Guan
2026-05-11 7:27 ` [PATCH 6.12 v2 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
` (2 more replies)
2026-05-11 7:28 ` Greg KH
1 sibling, 3 replies; 17+ messages in thread
From: Wentao Guan @ 2026-05-11 7:18 UTC (permalink / raw)
To: gregkh; +Cc: dhowells, imv4bel, jiayuan.chen, stable, torvalds, Wentao Guan
From: Hyunwoo Kim <imv4bel@gmail.com>
The DATA-packet handler in rxrpc_input_call_event() and the RESPONSE
handler in rxrpc_verify_response() copy the skb to a linear one before
calling into the security ops only when skb_cloned() is true. An skb
that is not cloned but still carries externally-owned paged fragments
(e.g. SKBFL_SHARED_FRAG set by splice() into a UDP socket via
__ip_append_data, or a chained skb_has_frag_list()) falls through to
the in-place decryption path, which binds the frag pages directly into
the AEAD/skcipher SGL via skb_to_sgvec().
Extend the gate to also unshare when skb_has_frag_list() or
skb_has_shared_frag() is true. This catches the splice-loopback vector
and other externally-shared frag sources while preserving the
zero-copy fast path for skbs whose frags are kernel-private (e.g. NIC
page_pool RX, GRO). The OOM/trace handling already in place is reused.
Fixes: d0d5c0cd1e71 ("rxrpc: Use skb_unshare() rather than skb_cow_data()")
Cc: stable@vger.kernel.org
Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
Reviewed-by: Jiayuan Chen <jiayuan.chen@linux.dev>
Acked-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
(cherry picked from commit aa54b1d27fe0c2b78e664a34fd0fdf7cd1960d71)
Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
---
net/rxrpc/call_event.c | 4 +++-
net/rxrpc/conn_event.c | 3 ++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/net/rxrpc/call_event.c b/net/rxrpc/call_event.c
index 62ddaa129ce5a..fda16b39e8e73 100644
--- a/net/rxrpc/call_event.c
+++ b/net/rxrpc/call_event.c
@@ -347,7 +347,9 @@ bool rxrpc_input_call_event(struct rxrpc_call *call, struct sk_buff *skb)
if (sp->hdr.type == RXRPC_PACKET_TYPE_DATA &&
sp->hdr.securityIndex != 0 &&
- skb_cloned(skb)) {
+ (skb_cloned(skb) ||
+ skb_has_frag_list(skb) ||
+ skb_has_shared_frag(skb))) {
/* Unshare the packet so that it can be modified for
* in-place decryption.
*/
diff --git a/net/rxrpc/conn_event.c b/net/rxrpc/conn_event.c
index 6dcfaed1f7485..3a58fb9210383 100644
--- a/net/rxrpc/conn_event.c
+++ b/net/rxrpc/conn_event.c
@@ -231,7 +231,8 @@ static int rxrpc_verify_response(struct rxrpc_connection *conn,
{
int ret;
- if (skb_cloned(skb)) {
+ if (skb_cloned(skb) || skb_has_frag_list(skb) ||
+ skb_has_shared_frag(skb)) {
/* Copy the packet if shared so that we can do in-place
* decryption.
*/
--
2.30.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 6.12 v2 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets
2026-05-11 7:18 ` [PATCH 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present Wentao Guan
@ 2026-05-11 7:27 ` Wentao Guan
2026-05-11 7:28 ` [PATCH 6.12 v2 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present Wentao Guan
2026-05-11 7:28 ` [PATCH " Greg KH
2 siblings, 0 replies; 17+ messages in thread
From: Wentao Guan @ 2026-05-11 7:27 UTC (permalink / raw)
To: guanwentao
Cc: dhowells, gregkh, imv4bel, jiayuan.chen, stable, torvalds,
Marc Dionne, Jeffrey Altman, Simon Horman, linux-afs, stable,
Jakub Kicinski
From: David Howells <dhowells@redhat.com>
The security operations that verify the RESPONSE packets decrypt bits of it
in place - however, the sk_buff may be shared with a packet sniffer, which
would lead to the sniffer seeing an apparently corrupt packet (actually
decrypted).
Fix this by handing a copy of the packet off to the specific security
handler if the packet was cloned.
Fixes: 17926a79320a ("[AF_RXRPC]: Provide secure RxRPC sockets for use by userspace and kernel both")
Closes: https://sashiko.dev/#/patchset/20260408121252.2249051-1-dhowells%40redhat.com
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: Jeffrey Altman <jaltman@auristor.com>
cc: Simon Horman <horms@kernel.org>
cc: linux-afs@lists.infradead.org
cc: stable@kernel.org
Link: https://patch.msgid.link/20260422161438.2593376-5-dhowells@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 24481a7f573305706054c59e275371f8d0fe919f)
[Readd rxrpc_skb_put_response_copy which missed in 016725807ce3 in v6.12.86]
Stable-dep-of: aa54b1d27fe0 ("rxrpc: Also unshare DATA/RESPONSE packets when
paged frags are present")
Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
---
include/trace/events/rxrpc.h | 1 +
net/rxrpc/conn_event.c | 29 ++++++++++++++++++++++++++++-
2 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/include/trace/events/rxrpc.h b/include/trace/events/rxrpc.h
index 9377acad0c5f9..e42ead95362ae 100644
--- a/include/trace/events/rxrpc.h
+++ b/include/trace/events/rxrpc.h
@@ -146,6 +146,7 @@
EM(rxrpc_skb_put_jumbo_subpacket, "PUT jumbo-sub") \
EM(rxrpc_skb_put_last_nack, "PUT last-nack") \
EM(rxrpc_skb_put_purge, "PUT purge ") \
+ EM(rxrpc_skb_put_response, "PUT resp-cpy ") \
EM(rxrpc_skb_put_rotate, "PUT rotate ") \
EM(rxrpc_skb_put_unknown, "PUT unknown ") \
EM(rxrpc_skb_see_conn_work, "SEE conn-work") \
diff --git a/net/rxrpc/conn_event.c b/net/rxrpc/conn_event.c
index 82cc72123c9c9..6dcfaed1f7485 100644
--- a/net/rxrpc/conn_event.c
+++ b/net/rxrpc/conn_event.c
@@ -226,6 +226,33 @@ static void rxrpc_call_is_secure(struct rxrpc_call *call)
rxrpc_notify_socket(call);
}
+static int rxrpc_verify_response(struct rxrpc_connection *conn,
+ struct sk_buff *skb)
+{
+ int ret;
+
+ if (skb_cloned(skb)) {
+ /* Copy the packet if shared so that we can do in-place
+ * decryption.
+ */
+ struct sk_buff *nskb = skb_copy(skb, GFP_NOFS);
+
+ if (nskb) {
+ rxrpc_new_skb(nskb, rxrpc_skb_new_unshared);
+ ret = conn->security->verify_response(conn, nskb);
+ rxrpc_free_skb(nskb, rxrpc_skb_put_response_copy);
+ } else {
+ /* OOM - Drop the packet. */
+ rxrpc_see_skb(skb, rxrpc_skb_see_unshare_nomem);
+ ret = -ENOMEM;
+ }
+ } else {
+ ret = conn->security->verify_response(conn, skb);
+ }
+
+ return ret;
+}
+
/*
* connection-level Rx packet processor
*/
@@ -253,7 +280,7 @@ static int rxrpc_process_event(struct rxrpc_connection *conn,
}
spin_unlock(&conn->state_lock);
- ret = conn->security->verify_response(conn, skb);
+ ret = rxrpc_verify_response(conn, skb);
if (ret < 0)
return ret;
--
2.30.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 6.12 v2 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present
2026-05-11 7:18 ` [PATCH 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present Wentao Guan
2026-05-11 7:27 ` [PATCH 6.12 v2 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
@ 2026-05-11 7:28 ` Wentao Guan
2026-05-11 7:28 ` [PATCH " Greg KH
2 siblings, 0 replies; 17+ messages in thread
From: Wentao Guan @ 2026-05-11 7:28 UTC (permalink / raw)
To: guanwentao; +Cc: dhowells, gregkh, imv4bel, jiayuan.chen, stable, torvalds
From: Hyunwoo Kim <imv4bel@gmail.com>
The DATA-packet handler in rxrpc_input_call_event() and the RESPONSE
handler in rxrpc_verify_response() copy the skb to a linear one before
calling into the security ops only when skb_cloned() is true. An skb
that is not cloned but still carries externally-owned paged fragments
(e.g. SKBFL_SHARED_FRAG set by splice() into a UDP socket via
__ip_append_data, or a chained skb_has_frag_list()) falls through to
the in-place decryption path, which binds the frag pages directly into
the AEAD/skcipher SGL via skb_to_sgvec().
Extend the gate to also unshare when skb_has_frag_list() or
skb_has_shared_frag() is true. This catches the splice-loopback vector
and other externally-shared frag sources while preserving the
zero-copy fast path for skbs whose frags are kernel-private (e.g. NIC
page_pool RX, GRO). The OOM/trace handling already in place is reused.
Fixes: d0d5c0cd1e71 ("rxrpc: Use skb_unshare() rather than skb_cow_data()")
Cc: stable@vger.kernel.org
Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
Reviewed-by: Jiayuan Chen <jiayuan.chen@linux.dev>
Acked-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
(cherry picked from commit aa54b1d27fe0c2b78e664a34fd0fdf7cd1960d71)
Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
---
net/rxrpc/call_event.c | 4 +++-
net/rxrpc/conn_event.c | 3 ++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/net/rxrpc/call_event.c b/net/rxrpc/call_event.c
index 62ddaa129ce5a..fda16b39e8e73 100644
--- a/net/rxrpc/call_event.c
+++ b/net/rxrpc/call_event.c
@@ -347,7 +347,9 @@ bool rxrpc_input_call_event(struct rxrpc_call *call, struct sk_buff *skb)
if (sp->hdr.type == RXRPC_PACKET_TYPE_DATA &&
sp->hdr.securityIndex != 0 &&
- skb_cloned(skb)) {
+ (skb_cloned(skb) ||
+ skb_has_frag_list(skb) ||
+ skb_has_shared_frag(skb))) {
/* Unshare the packet so that it can be modified for
* in-place decryption.
*/
diff --git a/net/rxrpc/conn_event.c b/net/rxrpc/conn_event.c
index 6dcfaed1f7485..3a58fb9210383 100644
--- a/net/rxrpc/conn_event.c
+++ b/net/rxrpc/conn_event.c
@@ -231,7 +231,8 @@ static int rxrpc_verify_response(struct rxrpc_connection *conn,
{
int ret;
- if (skb_cloned(skb)) {
+ if (skb_cloned(skb) || skb_has_frag_list(skb) ||
+ skb_has_shared_frag(skb)) {
/* Copy the packet if shared so that we can do in-place
* decryption.
*/
--
2.30.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets
2026-05-11 7:18 ` [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
2026-05-11 7:18 ` [PATCH 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present Wentao Guan
@ 2026-05-11 7:28 ` Greg KH
1 sibling, 0 replies; 17+ messages in thread
From: Greg KH @ 2026-05-11 7:28 UTC (permalink / raw)
To: Wentao Guan
Cc: dhowells, imv4bel, jiayuan.chen, stable, torvalds, Marc Dionne,
Jeffrey Altman, Simon Horman, linux-afs, stable, Jakub Kicinski
On Mon, May 11, 2026 at 03:18:32PM +0800, Wentao Guan wrote:
> From: David Howells <dhowells@redhat.com>
>
> The security operations that verify the RESPONSE packets decrypt bits of it
> in place - however, the sk_buff may be shared with a packet sniffer, which
> would lead to the sniffer seeing an apparently corrupt packet (actually
> decrypted).
>
> Fix this by handing a copy of the packet off to the specific security
> handler if the packet was cloned.
>
> Fixes: 17926a79320a ("[AF_RXRPC]: Provide secure RxRPC sockets for use by userspace and kernel both")
> Closes: https://sashiko.dev/#/patchset/20260408121252.2249051-1-dhowells%40redhat.com
> Signed-off-by: David Howells <dhowells@redhat.com>
> cc: Marc Dionne <marc.dionne@auristor.com>
> cc: Jeffrey Altman <jaltman@auristor.com>
> cc: Simon Horman <horms@kernel.org>
> cc: linux-afs@lists.infradead.org
> cc: stable@kernel.org
> Link: https://patch.msgid.link/20260422161438.2593376-5-dhowells@redhat.com
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> (cherry picked from commit 24481a7f573305706054c59e275371f8d0fe919f)
> Stable-dep-of: aa54b1d27fe0 ("rxrpc: Also unshare DATA/RESPONSE packets when
> paged frags are present")
> Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
> ---
> net/rxrpc/conn_event.c | 29 ++++++++++++++++++++++++++++-
> 1 file changed, 28 insertions(+), 1 deletion(-)
What branch(es) are you wanting this applied to?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present
2026-05-11 7:18 ` [PATCH 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present Wentao Guan
2026-05-11 7:27 ` [PATCH 6.12 v2 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
2026-05-11 7:28 ` [PATCH 6.12 v2 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present Wentao Guan
@ 2026-05-11 7:28 ` Greg KH
2026-05-11 7:33 ` Re: [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
2 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2026-05-11 7:28 UTC (permalink / raw)
To: Wentao Guan; +Cc: dhowells, imv4bel, jiayuan.chen, stable, torvalds
On Mon, May 11, 2026 at 03:18:33PM +0800, Wentao Guan wrote:
> From: Hyunwoo Kim <imv4bel@gmail.com>
>
> The DATA-packet handler in rxrpc_input_call_event() and the RESPONSE
> handler in rxrpc_verify_response() copy the skb to a linear one before
> calling into the security ops only when skb_cloned() is true. An skb
> that is not cloned but still carries externally-owned paged fragments
> (e.g. SKBFL_SHARED_FRAG set by splice() into a UDP socket via
> __ip_append_data, or a chained skb_has_frag_list()) falls through to
> the in-place decryption path, which binds the frag pages directly into
> the AEAD/skcipher SGL via skb_to_sgvec().
>
> Extend the gate to also unshare when skb_has_frag_list() or
> skb_has_shared_frag() is true. This catches the splice-loopback vector
> and other externally-shared frag sources while preserving the
> zero-copy fast path for skbs whose frags are kernel-private (e.g. NIC
> page_pool RX, GRO). The OOM/trace handling already in place is reused.
>
> Fixes: d0d5c0cd1e71 ("rxrpc: Use skb_unshare() rather than skb_cow_data()")
> Cc: stable@vger.kernel.org
> Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
> Reviewed-by: Jiayuan Chen <jiayuan.chen@linux.dev>
> Acked-by: David Howells <dhowells@redhat.com>
> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> (cherry picked from commit aa54b1d27fe0c2b78e664a34fd0fdf7cd1960d71)
> Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
> ---
> net/rxrpc/call_event.c | 4 +++-
> net/rxrpc/conn_event.c | 3 ++-
> 2 files changed, 5 insertions(+), 2 deletions(-)
Same here, what branches is this for?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Re: [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets
2026-05-11 7:28 ` [PATCH " Greg KH
@ 2026-05-11 7:33 ` Wentao Guan
2026-05-11 7:39 ` Greg KH
0 siblings, 1 reply; 17+ messages in thread
From: Wentao Guan @ 2026-05-11 7:33 UTC (permalink / raw)
To: gregkh; +Cc: dhowells, guanwentao, imv4bel, jiayuan.chen, stable, torvalds
Sorry, it is for 6.12.
But miss fixes in https://lore.kernel.org/stable/20260508083142.1752208-1-guanwentao@uniontech.com/,
will cause build failed with no rxrpc_skb_put_response_copy,
which introduced in 1f2740150f904bfa60e4bad74d65add3ccb5e7f8.
BRs
Wentao Guan
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Re: [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets
2026-05-11 7:33 ` Re: [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
@ 2026-05-11 7:39 ` Greg KH
2026-05-11 7:41 ` [PATCH 6.12.y v3 " Wentao Guan
` (2 more replies)
0 siblings, 3 replies; 17+ messages in thread
From: Greg KH @ 2026-05-11 7:39 UTC (permalink / raw)
To: Wentao Guan; +Cc: dhowells, imv4bel, jiayuan.chen, stable, torvalds
On Mon, May 11, 2026 at 03:33:51PM +0800, Wentao Guan wrote:
> Sorry, it is for 6.12.
What is?
> But miss fixes in https://lore.kernel.org/stable/20260508083142.1752208-1-guanwentao@uniontech.com/,
> will cause build failed with no rxrpc_skb_put_response_copy,
> which introduced in 1f2740150f904bfa60e4bad74d65add3ccb5e7f8.
I am sorry, but I do not understand what you are asking for here.
confused,
greg k-h
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 6.12.y v3 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets
2026-05-11 7:39 ` Greg KH
@ 2026-05-11 7:41 ` Wentao Guan
2026-05-11 8:03 ` Harshit Mogalapalli
2026-05-12 0:17 ` Sasha Levin
2026-05-11 7:41 ` [PATCH 6.12.y v3 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present Wentao Guan
2026-05-11 7:43 ` [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
2 siblings, 2 replies; 17+ messages in thread
From: Wentao Guan @ 2026-05-11 7:41 UTC (permalink / raw)
To: gregkh
Cc: dhowells, guanwentao, imv4bel, jiayuan.chen, stable, torvalds,
Marc Dionne, Jeffrey Altman, Simon Horman, linux-afs, stable,
Jakub Kicinski
From: David Howells <dhowells@redhat.com>
The security operations that verify the RESPONSE packets decrypt bits of it
in place - however, the sk_buff may be shared with a packet sniffer, which
would lead to the sniffer seeing an apparently corrupt packet (actually
decrypted).
Fix this by handing a copy of the packet off to the specific security
handler if the packet was cloned.
Fixes: 17926a79320a ("[AF_RXRPC]: Provide secure RxRPC sockets for use by userspace and kernel both")
Closes: https://sashiko.dev/#/patchset/20260408121252.2249051-1-dhowells%40redhat.com
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: Jeffrey Altman <jaltman@auristor.com>
cc: Simon Horman <horms@kernel.org>
cc: linux-afs@lists.infradead.org
cc: stable@kernel.org
Link: https://patch.msgid.link/20260422161438.2593376-5-dhowells@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 24481a7f573305706054c59e275371f8d0fe919f)
[Readd rxrpc_skb_put_response_copy which missed in 016725807ce3 in v6.12.86]
Stable-dep-of: aa54b1d27fe0 ("rxrpc: Also unshare DATA/RESPONSE packets when
paged frags are present")
Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
---
include/trace/events/rxrpc.h | 1 +
net/rxrpc/conn_event.c | 29 ++++++++++++++++++++++++++++-
2 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/include/trace/events/rxrpc.h b/include/trace/events/rxrpc.h
index 9377acad0c5f9..63efc9e4e4102 100644
--- a/include/trace/events/rxrpc.h
+++ b/include/trace/events/rxrpc.h
@@ -146,6 +146,7 @@
EM(rxrpc_skb_put_jumbo_subpacket, "PUT jumbo-sub") \
EM(rxrpc_skb_put_last_nack, "PUT last-nack") \
EM(rxrpc_skb_put_purge, "PUT purge ") \
+ EM(rxrpc_skb_put_response_copy, "PUT resp-cpy ") \
EM(rxrpc_skb_put_rotate, "PUT rotate ") \
EM(rxrpc_skb_put_unknown, "PUT unknown ") \
EM(rxrpc_skb_see_conn_work, "SEE conn-work") \
diff --git a/net/rxrpc/conn_event.c b/net/rxrpc/conn_event.c
index 82cc72123c9c9..6dcfaed1f7485 100644
--- a/net/rxrpc/conn_event.c
+++ b/net/rxrpc/conn_event.c
@@ -226,6 +226,33 @@ static void rxrpc_call_is_secure(struct rxrpc_call *call)
rxrpc_notify_socket(call);
}
+static int rxrpc_verify_response(struct rxrpc_connection *conn,
+ struct sk_buff *skb)
+{
+ int ret;
+
+ if (skb_cloned(skb)) {
+ /* Copy the packet if shared so that we can do in-place
+ * decryption.
+ */
+ struct sk_buff *nskb = skb_copy(skb, GFP_NOFS);
+
+ if (nskb) {
+ rxrpc_new_skb(nskb, rxrpc_skb_new_unshared);
+ ret = conn->security->verify_response(conn, nskb);
+ rxrpc_free_skb(nskb, rxrpc_skb_put_response_copy);
+ } else {
+ /* OOM - Drop the packet. */
+ rxrpc_see_skb(skb, rxrpc_skb_see_unshare_nomem);
+ ret = -ENOMEM;
+ }
+ } else {
+ ret = conn->security->verify_response(conn, skb);
+ }
+
+ return ret;
+}
+
/*
* connection-level Rx packet processor
*/
@@ -253,7 +280,7 @@ static int rxrpc_process_event(struct rxrpc_connection *conn,
}
spin_unlock(&conn->state_lock);
- ret = conn->security->verify_response(conn, skb);
+ ret = rxrpc_verify_response(conn, skb);
if (ret < 0)
return ret;
--
2.30.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 6.12.y v3 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present
2026-05-11 7:39 ` Greg KH
2026-05-11 7:41 ` [PATCH 6.12.y v3 " Wentao Guan
@ 2026-05-11 7:41 ` Wentao Guan
2026-05-11 7:43 ` [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
2 siblings, 0 replies; 17+ messages in thread
From: Wentao Guan @ 2026-05-11 7:41 UTC (permalink / raw)
To: gregkh; +Cc: dhowells, guanwentao, imv4bel, jiayuan.chen, stable, torvalds
From: Hyunwoo Kim <imv4bel@gmail.com>
The DATA-packet handler in rxrpc_input_call_event() and the RESPONSE
handler in rxrpc_verify_response() copy the skb to a linear one before
calling into the security ops only when skb_cloned() is true. An skb
that is not cloned but still carries externally-owned paged fragments
(e.g. SKBFL_SHARED_FRAG set by splice() into a UDP socket via
__ip_append_data, or a chained skb_has_frag_list()) falls through to
the in-place decryption path, which binds the frag pages directly into
the AEAD/skcipher SGL via skb_to_sgvec().
Extend the gate to also unshare when skb_has_frag_list() or
skb_has_shared_frag() is true. This catches the splice-loopback vector
and other externally-shared frag sources while preserving the
zero-copy fast path for skbs whose frags are kernel-private (e.g. NIC
page_pool RX, GRO). The OOM/trace handling already in place is reused.
Fixes: d0d5c0cd1e71 ("rxrpc: Use skb_unshare() rather than skb_cow_data()")
Cc: stable@vger.kernel.org
Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
Reviewed-by: Jiayuan Chen <jiayuan.chen@linux.dev>
Acked-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
(cherry picked from commit aa54b1d27fe0c2b78e664a34fd0fdf7cd1960d71)
Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
---
net/rxrpc/call_event.c | 4 +++-
net/rxrpc/conn_event.c | 3 ++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/net/rxrpc/call_event.c b/net/rxrpc/call_event.c
index 62ddaa129ce5a..fda16b39e8e73 100644
--- a/net/rxrpc/call_event.c
+++ b/net/rxrpc/call_event.c
@@ -347,7 +347,9 @@ bool rxrpc_input_call_event(struct rxrpc_call *call, struct sk_buff *skb)
if (sp->hdr.type == RXRPC_PACKET_TYPE_DATA &&
sp->hdr.securityIndex != 0 &&
- skb_cloned(skb)) {
+ (skb_cloned(skb) ||
+ skb_has_frag_list(skb) ||
+ skb_has_shared_frag(skb))) {
/* Unshare the packet so that it can be modified for
* in-place decryption.
*/
diff --git a/net/rxrpc/conn_event.c b/net/rxrpc/conn_event.c
index 6dcfaed1f7485..3a58fb9210383 100644
--- a/net/rxrpc/conn_event.c
+++ b/net/rxrpc/conn_event.c
@@ -231,7 +231,8 @@ static int rxrpc_verify_response(struct rxrpc_connection *conn,
{
int ret;
- if (skb_cloned(skb)) {
+ if (skb_cloned(skb) || skb_has_frag_list(skb) ||
+ skb_has_shared_frag(skb)) {
/* Copy the packet if shared so that we can do in-place
* decryption.
*/
--
2.30.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets
2026-05-11 7:39 ` Greg KH
2026-05-11 7:41 ` [PATCH 6.12.y v3 " Wentao Guan
2026-05-11 7:41 ` [PATCH 6.12.y v3 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present Wentao Guan
@ 2026-05-11 7:43 ` Wentao Guan
2 siblings, 0 replies; 17+ messages in thread
From: Wentao Guan @ 2026-05-11 7:43 UTC (permalink / raw)
To: gregkh; +Cc: dhowells, guanwentao, imv4bel, jiayuan.chen, stable, torvalds
Sorry, FYI ,it is only for 6.12.y, PATCH v1 which i sent
will cause build failed with no rxrpc_skb_put_response_copy,
and v2 also broken,
which introduced in 1f2740150f904bfa60e4bad74d65add3ccb5e7f8.
BRs
Wentao Guan
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 6.12.y v3 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets
2026-05-11 7:41 ` [PATCH 6.12.y v3 " Wentao Guan
@ 2026-05-11 8:03 ` Harshit Mogalapalli
2026-05-11 8:16 ` Wentao Guan
2026-05-12 0:17 ` Sasha Levin
1 sibling, 1 reply; 17+ messages in thread
From: Harshit Mogalapalli @ 2026-05-11 8:03 UTC (permalink / raw)
To: Wentao Guan, gregkh
Cc: dhowells, imv4bel, jiayuan.chen, stable, torvalds, Marc Dionne,
Jeffrey Altman, Simon Horman, linux-afs, stable, Jakub Kicinski
Hi,
On 11/05/26 13:11, Wentao Guan wrote:
> [Readd rxrpc_skb_put_response_copy which missed in 016725807ce3 in v6.12.86]
> Stable-dep-of: aa54b1d27fe0 ("rxrpc: Also unshare DATA/RESPONSE packets when
> paged frags are present")
Yes, I noticed this too.
But you got the commit wrong I think: (you probably meant)
the rxrpc_skb_put_response_copy() addition was missed in commit:
bf20f46d94f1 ("rxrpc: Fix potential UAF after skb_unshare() failure")
Greg: Summary: (it might help)
The stable backport bf20f46d94f1 ("rxrpc: Fix potential UAF after
skb_unshare() failure") is a backport of commit: 1f2740150f90 ("rxrpc:
Fix potential UAF after skb_unshare() failure") to 6.12.y:
stable backport bf20f46d94f1 ("rxrpc: Fix potential UAF after
skb_unshare() failure") adds this which is not part of upstream commit:
+ EM(rxrpc_skb_get_call_rx, "GET call-rx ") \
But missed adding: which is added in upstream commit:
+ EM(rxrpc_skb_put_response_copy, "PUT resp-cpy ") \
Hence Wentao needs to add rxrpc_skb_put_response_copy() in this backport.
Thanks,
Harshit
> Signed-off-by: Wentao Guan<guanwentao@uniontech.com>
> ---
> include/trace/events/rxrpc.h | 1 +
> net/rxrpc/conn_event.c | 29 ++++++++++++++++++++++++++++-
> 2 files changed, 29 insertions(+), 1 deletion(-)
>
> diff --git a/include/trace/events/rxrpc.h b/include/trace/events/rxrpc.h
> index 9377acad0c5f9..63efc9e4e4102 100644
> --- a/include/trace/events/rxrpc.h
> +++ b/include/trace/events/rxrpc.h
> @@ -146,6 +146,7 @@
> EM(rxrpc_skb_put_jumbo_subpacket, "PUT jumbo-sub") \
> EM(rxrpc_skb_put_last_nack, "PUT last-nack") \
> EM(rxrpc_skb_put_purge, "PUT purge ") \
> + EM(rxrpc_skb_put_response_copy, "PUT resp-cpy ") \
> EM(rxrpc_skb_put_rotate, "PUT rotate ") \
> EM(rxrpc_skb_put_unknown, "PUT unknown ") \
> EM(rxrpc_skb_see_conn_work, "SEE conn-work") \
> diff --git a/net/rxrpc/conn_event.c b/net/rxrpc/conn_event.c
> index 82cc72123c9c9..6dcfaed1f7485 100644
> --- a/net/rxrpc/conn_event.c
> +++ b/net/rxrpc/conn_event.c
> @@ -226,6 +226,33 @@ static void rxrpc_call_is_secure(struct rxrpc_call *call)
> rxrpc_notify_socket(call);
> }
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Re: [PATCH 6.12.y v3 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets
2026-05-11 8:03 ` Harshit Mogalapalli
@ 2026-05-11 8:16 ` Wentao Guan
0 siblings, 0 replies; 17+ messages in thread
From: Wentao Guan @ 2026-05-11 8:16 UTC (permalink / raw)
To: harshit.m.mogalapalli
Cc: dhowells, gregkh, guanwentao, horms, imv4bel, jaltman,
jiayuan.chen, kuba, linux-afs, marc.dionne, stable, stable,
torvalds
> On 11/05/26 13:11, Wentao Guan wrote:
> > [Readd rxrpc_skb_put_response_copy which missed in 016725807ce3 in v6.12.86]
> > Stable-dep-of: aa54b1d27fe0 ("rxrpc: Also unshare DATA/RESPONSE packets when
> > paged frags are present")
> Yes, I noticed this too.
Well
> But you got the commit wrong I think: (you probably meant)
Thanks, i paste wrong commit here, which i reported in
https://lore.kernel.org/stable/20260508083142.1752208-1-guanwentao@uniontech.com/
SUMMARY:
commit ("rxrpc: Fix potential UAF after skb_unshare() failure"):
bf20f46d94f1db38e6ffc0ca204a5fe0de01b495 v6.12
1f2740150f904bfa60e4bad74d65add3ccb5e7f8 upstream
is different
> Hence Wentao needs to add rxrpc_skb_put_response_copy() in this backport.
Yeah.
BRs
Wentao Guan
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 6.12.y v3 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets
2026-05-11 7:41 ` [PATCH 6.12.y v3 " Wentao Guan
2026-05-11 8:03 ` Harshit Mogalapalli
@ 2026-05-12 0:17 ` Sasha Levin
2026-05-12 2:04 ` Wentao Guan
1 sibling, 1 reply; 17+ messages in thread
From: Sasha Levin @ 2026-05-12 0:17 UTC (permalink / raw)
To: gregkh
Cc: Sasha Levin, dhowells, guanwentao, imv4bel, jiayuan.chen, stable,
torvalds, Marc Dionne, Jeffrey Altman, Simon Horman, linux-afs,
stable, Jakub Kicinski, Harshit Mogalapalli
On Mon, May 11, 2026 at 03:41:04PM +0800, Wentao Guan wrote:
> (cherry picked from commit 24481a7f573305706054c59e275371f8d0fe919f)
> [Readd rxrpc_skb_put_response_copy which missed in 016725807ce3 in v6.12.86]
> Stable-dep-of: aa54b1d27fe0 ("rxrpc: Also unshare DATA/RESPONSE packets when
> paged frags are present")
Queued for 6.12 (both 1/2 and 2/2), thanks.
I fixed up the bracket annotation at apply time per Harshit's review:
the trace event was actually dropped in bf20f46d94f1 ("rxrpc: Fix
potential UAF after skb_unshare() failure"), not 016725807ce3, so the
queued changelog references bf20f46d94f1.
--
Thanks,
Sasha
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Re: [PATCH 6.12.y v3 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets
2026-05-12 0:17 ` Sasha Levin
@ 2026-05-12 2:04 ` Wentao Guan
0 siblings, 0 replies; 17+ messages in thread
From: Wentao Guan @ 2026-05-12 2:04 UTC (permalink / raw)
To: sashal
Cc: dhowells, gregkh, guanwentao, harshit.m.mogalapalli, horms,
imv4bel, jaltman, jiayuan.chen, kuba, linux-afs, marc.dionne,
stable, stable, torvalds
> Queued for 6.12 (both 1/2 and 2/2), thanks.
> I fixed up the bracket annotation at apply time per Harshit's review:
> the trace event was actually dropped in bf20f46d94f1 ("rxrpc: Fix
> potential UAF after skb_unshare() failure"), not 016725807ce3, so the
> queued changelog references bf20f46d94f1.
Thanks.
BRs
Wentao Guan
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets
2026-05-11 6:02 FAILED: patch "[PATCH] rxrpc: Also unshare DATA/RESPONSE packets when paged frags" failed to apply to 6.6-stable tree gregkh
@ 2026-05-12 15:21 ` Wentao Guan
0 siblings, 0 replies; 17+ messages in thread
From: Wentao Guan @ 2026-05-12 15:21 UTC (permalink / raw)
To: stable
Cc: David Howells, Marc Dionne, Jeffrey Altman, Simon Horman,
linux-afs, stable, Jakub Kicinski, Wentao Guan
From: David Howells <dhowells@redhat.com>
The security operations that verify the RESPONSE packets decrypt bits of it
in place - however, the sk_buff may be shared with a packet sniffer, which
would lead to the sniffer seeing an apparently corrupt packet (actually
decrypted).
Fix this by handing a copy of the packet off to the specific security
handler if the packet was cloned.
Fixes: 17926a79320a ("[AF_RXRPC]: Provide secure RxRPC sockets for use by userspace and kernel both")
Closes: https://sashiko.dev/#/patchset/20260408121252.2249051-1-dhowells%40redhat.com
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: Jeffrey Altman <jaltman@auristor.com>
cc: Simon Horman <horms@kernel.org>
cc: linux-afs@lists.infradead.org
cc: stable@kernel.org
Link: https://patch.msgid.link/20260422161438.2593376-5-dhowells@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 24481a7f573305706054c59e275371f8d0fe919f)
Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
---
NOTE:
Pls apply these pathes after commit in stable queue like:
(HEAD -> for-stable-queue) rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present
rxrpc: Fix conn-level packet handling to unshare RESPONSE packets
(refs/patches/for-stable-queue/rxrpc-fix-rxrpc_input_call_event-to-only-unshare-dat.patch)
Subject: rxrpc: Fix rxrpc_input_call_event() to only unshare DATA packets
---
---
net/rxrpc/conn_event.c | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/net/rxrpc/conn_event.c b/net/rxrpc/conn_event.c
index 82cc72123c9c9..6dcfaed1f7485 100644
--- a/net/rxrpc/conn_event.c
+++ b/net/rxrpc/conn_event.c
@@ -226,6 +226,33 @@ static void rxrpc_call_is_secure(struct rxrpc_call *call)
rxrpc_notify_socket(call);
}
+static int rxrpc_verify_response(struct rxrpc_connection *conn,
+ struct sk_buff *skb)
+{
+ int ret;
+
+ if (skb_cloned(skb)) {
+ /* Copy the packet if shared so that we can do in-place
+ * decryption.
+ */
+ struct sk_buff *nskb = skb_copy(skb, GFP_NOFS);
+
+ if (nskb) {
+ rxrpc_new_skb(nskb, rxrpc_skb_new_unshared);
+ ret = conn->security->verify_response(conn, nskb);
+ rxrpc_free_skb(nskb, rxrpc_skb_put_response_copy);
+ } else {
+ /* OOM - Drop the packet. */
+ rxrpc_see_skb(skb, rxrpc_skb_see_unshare_nomem);
+ ret = -ENOMEM;
+ }
+ } else {
+ ret = conn->security->verify_response(conn, skb);
+ }
+
+ return ret;
+}
+
/*
* connection-level Rx packet processor
*/
@@ -253,7 +280,7 @@ static int rxrpc_process_event(struct rxrpc_connection *conn,
}
spin_unlock(&conn->state_lock);
- ret = conn->security->verify_response(conn, skb);
+ ret = rxrpc_verify_response(conn, skb);
if (ret < 0)
return ret;
--
2.30.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
end of thread, other threads:[~2026-05-12 15:24 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-11 6:02 FAILED: patch "[PATCH] rxrpc: Also unshare DATA/RESPONSE packets when paged frags" failed to apply to 6.12-stable tree gregkh
2026-05-11 7:18 ` [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
2026-05-11 7:18 ` [PATCH 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present Wentao Guan
2026-05-11 7:27 ` [PATCH 6.12 v2 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
2026-05-11 7:28 ` [PATCH 6.12 v2 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present Wentao Guan
2026-05-11 7:28 ` [PATCH " Greg KH
2026-05-11 7:33 ` Re: [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
2026-05-11 7:39 ` Greg KH
2026-05-11 7:41 ` [PATCH 6.12.y v3 " Wentao Guan
2026-05-11 8:03 ` Harshit Mogalapalli
2026-05-11 8:16 ` Wentao Guan
2026-05-12 0:17 ` Sasha Levin
2026-05-12 2:04 ` Wentao Guan
2026-05-11 7:41 ` [PATCH 6.12.y v3 2/2] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present Wentao Guan
2026-05-11 7:43 ` [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
2026-05-11 7:28 ` Greg KH
-- strict thread matches above, loose matches on Subject: below --
2026-05-11 6:02 FAILED: patch "[PATCH] rxrpc: Also unshare DATA/RESPONSE packets when paged frags" failed to apply to 6.6-stable tree gregkh
2026-05-12 15:21 ` [PATCH 1/2] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Wentao Guan
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.