• Jason Wang's avatar
    macvtap: correctly linearize skb when zerocopy is used · 61d46bf9
    Jason Wang authored
    Userspace may produce vectors greater than MAX_SKB_FRAGS. When we try to
    linearize parts of the skb to let the rest of iov to be fit in
    the frags, we need count copylen into linear when calling macvtap_alloc_skb()
    instead of partly counting it into data_len. Since this breaks
    zerocopy_sg_from_iovec() since its inner counter assumes nr_frags should
    be zero at beginning. This cause nr_frags to be increased wrongly without
    setting the correct frags.
    
    This bug were introduced from b92946e2
    (macvtap: zerocopy: validate vectors before building skb).
    
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
    Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    61d46bf9
macvtap.c 31.1 KB