• Johannes Berg's avatar
    networking: add and use skb_put_u8() · 634fef61
    Johannes Berg authored
    Joe and Bjørn suggested that it'd be nicer to not have the
    cast in the fairly common case of doing
    	*(u8 *)skb_put(skb, 1) = c;
    
    Add skb_put_u8() for this case, and use it across the code,
    using the following spatch:
    
        @@
        expression SKB, C, S;
        typedef u8;
        identifier fn = {skb_put};
        fresh identifier fn2 = fn ## "_u8";
        @@
        - *(u8 *)fn(SKB, S) = C;
        + fn2(SKB, C);
    
    Note that due to the "S", the spatch isn't perfect, it should
    have checked that S is 1, but there's also places that use a
    sizeof expression like sizeof(var) or sizeof(u8) etc. Turns
    out that nobody ever did something like
    	*(u8 *)skb_put(skb, 2) = c;
    
    which would be wrong anyway since the second byte wouldn't be
    initialized.
    Suggested-by: default avatarJoe Perches <joe@perches.com>
    Suggested-by: default avatarBjørn Mork <bjorn@mork.no>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    634fef61
core.c 25 KB