• Alexander Duyck's avatar
    ixgbevf: Fix multiple issues in ixgbevf_get/set_ringparam · eb022d05
    Alexander Duyck authored
    In ixgbevf_get_ringparam we could run into a NULL pointer dereference
    if the rings were not allocated when we attempted the call.  To prevent
    that we can just access the tx/rx_ring_count values instead of attempting
    to access the rings to get the count.
    
    This change corrects a memory leak and memory corruption in
    ixgbevf_set_ringparam.
    
    The memory leak was due to us not freeing the resources from the ring
    before overwriting them.  This change corrects the memory leak by making
    certain to call ixgbe_free_tx/rx_resources on the rings prior to freeing
    them.
    
    The memory corruption was because we were replacing the rings but not
    updating the q_vectors.  It addresses the memory corruption by leaving the
    rings in place and instead just copying the contents of the new rings into
    the existing rings.
    Signed-off-by: default avatarAlexander Duyck <alexander.h.duyck@intel.com>
    Acked-by: default avatarGreg Rose <gregory.v.rose@intel.com>
    Tested-by: default avatarSibai Li <sibai.li@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    eb022d05
ethtool.c 20.7 KB