• H
    [NET]: Avoid allocating skb in skb_pad · 5b057c6b
    Herbert Xu 提交于
    First of all it is unnecessary to allocate a new skb in skb_pad since
    the existing one is not shared.  More importantly, our hard_start_xmit
    interface does not allow a new skb to be allocated since that breaks
    requeueing.
    
    This patch uses pskb_expand_head to expand the existing skb and linearize
    it if needed.  Actually, someone should sift through every instance of
    skb_pad on a non-linear skb as they do not fit the reasons why this was
    originally created.
    
    Incidentally, this fixes a minor bug when the skb is cloned (tcpdump,
    TCP, etc.).  As it is skb_pad will simply write over a cloned skb.  Because
    of the position of the write it is unlikely to cause problems but still
    it's best if we don't do it.
    Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    5b057c6b
via-rhine.c 57.4 KB