• Jay Vosburgh's avatar
    net/core: __hw_addr_unsync_one "from" address not marked synced · 60ba834c
    Jay Vosburgh authored
    When an address is added to a subordinate interface (the "to"
    list), the address entry in the "from" list is not marked "synced" as
    the entry added to the "to" list is.
    
    	When performing the unsync operation (e.g., dev_mc_unsync),
    __hw_addr_unsync_one calls __hw_addr_del_entry with the "synced"
    parameter set to true for the case when the address reference is being
    released from the "from" list.  This causes a test inside to fail,
    with the result being that the reference count on the "from" address
    is not properly decremeted and the address on the "from" list will
    never be freed.
    
    	Correct this by having __hw_addr_unsync_one call the
    __hw_addr_del_entry function with the "sync" flag set to false for the
    "remove from the from list" case.
    Signed-off-by: default avatarJay Vosburgh <fubar@us.ibm.com>
    Reviewed-by: default avatarVlad Yasevich <vyasevic@redhat.com>
    Tested-by: default avatarShawn Bohrer <sbohrer@rgmadvisors.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    60ba834c
dev_addr_lists.c 20.7 KB