]> git.baikalelectronics.ru Git - kernel.git/commit
net/core: __hw_addr_unsync_one "from" address not marked synced
authorJay Vosburgh <fubar@us.ibm.com>
Fri, 31 May 2013 11:57:27 +0000 (11:57 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 31 May 2013 23:56:56 +0000 (16:56 -0700)
commit8f1d54551dd9737b504860dbf6b8cb933bbd4943
treebf20e91b8076a10a40f47e8b4e7a40cb47b5bb51
parent1c0329cfb3f3a9089ca52a7e9d66db1f956c060b
net/core: __hw_addr_unsync_one "from" address not marked synced

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: Jay Vosburgh <fubar@us.ibm.com>
Reviewed-by: Vlad Yasevich <vyasevic@redhat.com>
Tested-by: Shawn Bohrer <sbohrer@rgmadvisors.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev_addr_lists.c