On Sunday, November 21, 2021, 12:32:19 PM EST, Xin Long 
<lucien....@gmail.com> wrote:  
 
 When a skb comes to tipc_aead_encrypt(), it's always linear. The
unlikely check 'skb_cloned(skb) && tailen <= skb_tailroom(skb)'
can completely be taken care of in skb_cow_data() by the code
in branch "if (!skb_has_frag_list())".

Also, remove the 'TODO:' annotation, as the pages in skbs are not
writable, see more on commit 3cf4375a0904 ("tipc: do not write
skb_shinfo frags when doing decrytion").

Signed-off-by: Xin Long <lucien....@gmail.com>
---
 net/tipc/crypto.c | 19 ++++---------------
 1 file changed, 4 insertions(+), 15 deletions(-)

diff --git a/net/tipc/crypto.c b/net/tipc/crypto.c
index e701651f6533..c5eefe4a8c4d 100644
--- a/net/tipc/crypto.c
+++ b/net/tipc/crypto.c
@@ -757,21 +757,10 @@ static int tipc_aead_encrypt(struct tipc_aead *aead, 
struct sk_buff *skb,
             skb_tailroom(skb), tailen);
     }
 
-    if (unlikely(!skb_cloned(skb) && tailen <= skb_tailroom(skb))) {
-        nsg = 1;
-        trailer = skb;
-    } else {
-        /* TODO: We could avoid skb_cow_data() if skb has no frag_list
-        * e.g. by skb_fill_page_desc() to add another page to the skb
-        * with the wanted tailen... However, page skbs look not often,
-        * so take it easy now!
-        * Cloned skbs e.g. from link_xmit() seems no choice though :(
-        */
-        nsg = skb_cow_data(skb, tailen, &trailer);
-        if (unlikely(nsg < 0)) {
-            pr_err("TX: skb_cow_data() returned %d\n", nsg);
-            return nsg;
-        }
+    nsg = skb_cow_data(skb, tailen, &trailer);
+    if (unlikely(nsg < 0)) {
+        pr_err("TX: skb_cow_data() returned %d\n", nsg);
+        return nsg;
     }
 
     pskb_put(skb, trailer, tailen);
-- 
2.27.0

Acked-by: Jon Maloy <jma...@redhat.com>

_______________________________________________
tipc-discussion mailing list
tipc-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tipc-discussion
  
_______________________________________________
tipc-discussion mailing list
tipc-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tipc-discussion

Reply via email to