This patchset follows up on the discussion in https://www.mail-archive.com/netdev@vger.kernel.org/msg105090.html
For RDS-TCP, we have to deal with the full gamut of nonlinear sk_buffs, including all the frag_list variants. Also, the parent skb has to remain unchanged, while the clone is queued for Rx on the PF_RDS socket. Patch 1 of this patchset adds a pskb_extract() function that does all this without the redundant memcpy's in pskb_expand_head() and __pskb_pull_tail(). Sowmini Varadhan (2): Add pskb_extract() helper function Call pskb_extract() helper function include/linux/skbuff.h | 2 + net/core/skbuff.c | 248 ++++++++++++++++++++++++++++++++++++++++++++++++ net/rds/tcp_recv.c | 14 +-- 3 files changed, 253 insertions(+), 11 deletions(-)