From: Doron Roberts-Kedes <doro...@fb.com>
Date: Tue, 7 Aug 2018 11:09:39 -0700

> +static int __skb_nsg(struct sk_buff *skb, int offset, int len,
> +                  unsigned int recursion_level)
> +{
> +     int start = skb_headlen(skb);
> +     int i, copy = start - offset;
> +     struct sk_buff *frag_iter;
> +     int elt = 0;
> +
> +     if (unlikely(recursion_level >= 24))
> +             return -EMSGSIZE;

This recursion is kinda crazy.

Even skb_cow_data() doesn't recurse like this (of course because it copies
into linear buffers).

There has to be a way to simplify this.  Fragment lists are such a rarely
used SKB geometry, and few if any devices support it for transmission
(so the fraglist will get undone at transmit time anyways).

> +     // We need one extra for ctx->rx_aad_ciphertext

Please do not use C++ style comments in code.

Thanks.

Reply via email to