• V
    net: dsa: Remove dangerous DSA_SKB_CLONE() macro · 506f0e09
    Vladimir Oltean 提交于
    This does not cause any bug now because it has no users, but its body
    contains two pointer definitions within a code block:
    
    		struct sk_buff *clone = _clone;	\
    		struct sk_buff *skb = _skb;	\
    
    When calling the macro as DSA_SKB_CLONE(clone, skb), these variables
    would obscure the arguments that the macro was called with, and the
    initializers would be a no-op instead of doing their job (undefined
    behavior, by the way, but GCC nicely puts NULL pointers instead).
    
    So simply remove this broken macro and leave users to simply call
    "DSA_SKB_CB(skb)->clone = clone" by hand when needed.
    
    There is one functional difference when doing what I just suggested
    above: the control block won't be transferred from the original skb into
    the clone. Since there's no foreseen need for the control block in the
    clone ATM, this is ok.
    
    Fixes: b68b0dd0 ("net: dsa: Keep private info in the skb->cb")
    Signed-off-by: NVladimir Oltean <olteanv@gmail.com>
    Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    506f0e09
dsa.h 19.5 KB