• Alexey Dobriyan's avatar
    net: fix bogus cast in skb_pagelen() and use unsigned variables · c72d8cda
    Alexey Dobriyan authored
    1) cast to "int" is unnecessary:
       u8 will be promoted to int before decrementing,
       small positive numbers fit into "int", so their values won't be changed
       during promotion.
    
       Once everything is int including loop counters, signedness doesn't
       matter: 32-bit operations will stay 32-bit operations.
    
       But! Someone tried to make this loop smart by making everything of
       the same type apparently in an attempt to optimise it.
       Do the optimization, just differently.
       Do the cast where it matters. :^)
    
    2) frag size is unsigned entity and sum of fragments sizes is also
       unsigned.
    
    Make everything unsigned, leave no MOVSX instruction behind.
    
    	add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-4 (-4)
    	function                                     old     new   delta
    	skb_cow_data                                 835     834      -1
    	ip_do_fragment                              2549    2548      -1
    	ip6_fragment                                3130    3128      -2
    	Total: Before=154865032, After=154865028, chg -0.00%
    Signed-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c72d8cda
ip_output.c 40.1 KB