* [PATCH 3.8-stable] net: count hw_addr syncs so that unsync works properly.
@ 2013-04-11 0:31 Jonghwan Choi
2013-04-11 0:54 ` David Miller
0 siblings, 1 reply; 5+ messages in thread
From: Jonghwan Choi @ 2013-04-11 0:31 UTC (permalink / raw)
To: 'Jonghwan Choi', linux-kernel
Cc: stable, 'Vlad Yasevich', 'David S. Miller'
This patch looks like it should be in the 3.8-stable tree, should we apply
it?
------------------
From: "Vlad Yasevich <vyasevic@redhat.com>"
commit 4543fbefe6e06a9e40d9f2b28d688393a299f079 upstream
A few drivers use dev_uc_sync/unsync to synchronize the
address lists from master down to slave/lower devices. In
some cases (bond/team) a single address list is synched down
to multiple devices. At the time of unsync, we have a leak
in these lower devices, because "synced" is treated as a
boolean and the address will not be unsynced for anything after
the first device/call.
Treat "synced" as a count (same as refcount) and allow all
unsync calls to work.
Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
---
include/linux/netdevice.h | 2 +-
net/core/dev_addr_lists.c | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 9ef07d0..0e182f9 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -208,9 +208,9 @@ struct netdev_hw_addr {
#define NETDEV_HW_ADDR_T_SLAVE 3
#define NETDEV_HW_ADDR_T_UNICAST 4
#define NETDEV_HW_ADDR_T_MULTICAST 5
- bool synced;
bool global_use;
int refcount;
+ int synced;
struct rcu_head rcu_head;
};
diff --git a/net/core/dev_addr_lists.c b/net/core/dev_addr_lists.c
index b079c7b..7841d87 100644
--- a/net/core/dev_addr_lists.c
+++ b/net/core/dev_addr_lists.c
@@ -38,7 +38,7 @@ static int __hw_addr_create_ex(struct netdev_hw_addr_list
*list,
ha->type = addr_type;
ha->refcount = 1;
ha->global_use = global;
- ha->synced = false;
+ ha->synced = 0;
list_add_tail_rcu(&ha->list, &list->list);
list->count++;
@@ -166,7 +166,7 @@ int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
addr_len, ha->type);
if (err)
break;
- ha->synced = true;
+ ha->synced++;
ha->refcount++;
} else if (ha->refcount == 1) {
__hw_addr_del(to_list, ha->addr, addr_len,
ha->type);
@@ -187,7 +187,7 @@ void __hw_addr_unsync(struct netdev_hw_addr_list
*to_list,
if (ha->synced) {
__hw_addr_del(to_list, ha->addr,
addr_len, ha->type);
- ha->synced = false;
+ ha->synced--;
__hw_addr_del(from_list, ha->addr,
addr_len, ha->type);
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH 3.8-stable] net: count hw_addr syncs so that unsync works properly.
2013-04-11 0:31 [PATCH 3.8-stable] net: count hw_addr syncs so that unsync works properly Jonghwan Choi
@ 2013-04-11 0:54 ` David Miller
2013-04-11 2:59 ` Stephen Rothwell
0 siblings, 1 reply; 5+ messages in thread
From: David Miller @ 2013-04-11 0:54 UTC (permalink / raw)
To: jhbird.choi; +Cc: linux-kernel, stable, vyasevic
From: Jonghwan Choi <jhbird.choi@samsung.com>
Date: Thu, 11 Apr 2013 09:31:44 +0900
> This patch looks like it should be in the 3.8-stable tree, should we apply
> it?
I queue up networking patches as needed and that queue is
visible at:
http://patchwork.ozlabs.org/user/bundle/2566/?state=*
and yes this patch, along with many others, are there.
I submit networking patches to -stable at a time of my
own choosing, in an effort to allow bug fixes to cook
in Linus's tree for some time just in case the fixes
themselves have bugs.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 3.8-stable] net: count hw_addr syncs so that unsync works properly.
2013-04-11 0:54 ` David Miller
@ 2013-04-11 2:59 ` Stephen Rothwell
2013-04-11 3:02 ` Jeremy Kerr
0 siblings, 1 reply; 5+ messages in thread
From: Stephen Rothwell @ 2013-04-11 2:59 UTC (permalink / raw)
To: David Miller; +Cc: jhbird.choi, linux-kernel, stable, vyasevic, patchwork
[-- Attachment #1: Type: text/plain, Size: 694 bytes --]
Hi Dave,
On Wed, 10 Apr 2013 20:54:01 -0400 (EDT) David Miller <davem@davemloft.net> wrote:
>
> From: Jonghwan Choi <jhbird.choi@samsung.com>
> Date: Thu, 11 Apr 2013 09:31:44 +0900
>
> > This patch looks like it should be in the 3.8-stable tree, should we apply
> > it?
>
> I queue up networking patches as needed and that queue is
> visible at:
>
> http://patchwork.ozlabs.org/user/bundle/2566/?state=*
Actually, this bundle is not visible via that link. It appears to be a
public bundle and visible via
http://patchwork.ozlabs.org/bundle/davem/stable/?state=* . I have
insider knowledge :-)
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 3.8-stable] net: count hw_addr syncs so that unsync works properly.
2013-04-11 2:59 ` Stephen Rothwell
@ 2013-04-11 3:02 ` Jeremy Kerr
2013-04-11 3:23 ` David Miller
0 siblings, 1 reply; 5+ messages in thread
From: Jeremy Kerr @ 2013-04-11 3:02 UTC (permalink / raw)
To: Stephen Rothwell
Cc: David Miller, vyasevic, patchwork, jhbird.choi, linux-kernel,
stable
Hi all,
>>> This patch looks like it should be in the 3.8-stable tree, should we apply
>>> it?
>>
>> I queue up networking patches as needed and that queue is
>> visible at:
>>
>> http://patchwork.ozlabs.org/user/bundle/2566/?state=*
>
> Actually, this bundle is not visible via that link. It appears to be a
> public bundle and visible via
> http://patchwork.ozlabs.org/bundle/davem/stable/?state=* . I have
> insider knowledge :-)
Perhaps for public bundles, I should make the private link automatically
redirect to the public one?
Cheers,
Jeremy
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 3.8-stable] net: count hw_addr syncs so that unsync works properly.
2013-04-11 3:02 ` Jeremy Kerr
@ 2013-04-11 3:23 ` David Miller
0 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2013-04-11 3:23 UTC (permalink / raw)
To: jk; +Cc: sfr, vyasevic, patchwork, jhbird.choi, linux-kernel, stable
From: Jeremy Kerr <jk@ozlabs.org>
Date: Thu, 11 Apr 2013 13:02:15 +1000
> Hi all,
>
>>>> This patch looks like it should be in the 3.8-stable tree, should we apply
>>>> it?
>>>
>>> I queue up networking patches as needed and that queue is
>>> visible at:
>>>
>>> http://patchwork.ozlabs.org/user/bundle/2566/?state=*
>>
>> Actually, this bundle is not visible via that link. It appears to be a
>> public bundle and visible via
>> http://patchwork.ozlabs.org/bundle/davem/stable/?state=* . I have
>> insider knowledge :-)
>
> Perhaps for public bundles, I should make the private link automatically
> redirect to the public one?
Yes.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-04-11 3:23 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-11 0:31 [PATCH 3.8-stable] net: count hw_addr syncs so that unsync works properly Jonghwan Choi
2013-04-11 0:54 ` David Miller
2013-04-11 2:59 ` Stephen Rothwell
2013-04-11 3:02 ` Jeremy Kerr
2013-04-11 3:23 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox