From: Willem de Bruijn <willemdebruijn.ker...@gmail.com>
Date: Wed, 21 Jun 2017 17:18:05 -0400

> @@ -958,15 +958,20 @@ EXPORT_SYMBOL_GPL(skb_morph);
>   */
>  int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask)
>  {
> -     int i;
>       int num_frags = skb_shinfo(skb)->nr_frags;
>       struct page *page, *head = NULL;
>       struct ubuf_info *uarg = skb_shinfo(skb)->destructor_arg;
> +     int i, new_frags;
> +     u32 d_off;

Reverse christmas tree with the local variable declarations.

> +     page = head;
> +     d_off = 0;
> +     for (i = 0; i < num_frags; i++) {
> +             u8 *vaddr;
> +             skb_frag_t *f = &skb_shinfo(skb)->frags[i];
> +             u32 f_off, f_size, copy;

Likewise.

> +             f_off = f->page_offset;
> +             f_size = f->size;
> +
> +             vaddr = kmap_atomic(skb_frag_page(f));

I looked at some kmap_atomic() implementations and I do not think
it supports compound pages.

Reply via email to