• Dean Jenkins's avatar
    asix: Ensure asix_rx_fixup_info members are all reset · 960eb4ee
    Dean Jenkins authored
    There is a risk that the members of the structure asix_rx_fixup_info
    become unsynchronised leading to the possibility of a malfunction.
    
    For example, rx->split_head was not being set to false after an
    error was detected so potentially could cause a malformed 32-bit
    Data header word to be formed.
    
    Therefore add function reset_asix_rx_fixup_info() to reset all the
    members of asix_rx_fixup_info so that future processing will start
    with known initial conditions.
    
    Also, if (skb->len != offset) becomes true then call
    reset_asix_rx_fixup_info() so that the processing of the next URB
    starts with known initial conditions. Without the call, the check
    does nothing which potentially could lead to a malfunction
    when the next URB is processed.
    
    In addition, for robustness, call reset_asix_rx_fixup_info() before
    every error path's "return 0". This ensures that the next URB is
    processed from known initial conditions.
    Signed-off-by: default avatarDean Jenkins <Dean_Jenkins@mentor.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    960eb4ee
asix_common.c 19.3 KB